JeeSite 4.x 树形结构的表设计和用法

有些同仁对于 JeeSite 4 中的树表设计不太了解,本应简单的方法就可实现,却写了很多复杂的语句和代码,所以有了这篇文章。

在 JeeSite 4 中的树表设计我还是相对满意的,这种设计比较容易理解,不会太依赖数据库的语法,对兼容多数据库比较好。相比网上大牛的左右值树设计简单了很多,并且可随时调换父节点,并级联更新所有子节点数据。

看下表字段说明我们发现除了父级节点外又多了很多辅助字段,这写字段的维护可能会稍微影响我们的插入和更新性能,
但是这将极大的简化了我们的查询,并不限深度。废话不多说,下面我们一同来就来看看都有哪些好处。

树表字段说明

字段名 说明
xxx_code 节点编码(xxx表示用户自定义名称)
xxx_name 节点名称(xxx表示用户自定义名称)
以下是树表关键字段:
parent_code 节点上级编码
parent_codes 节点所有上级编码(快速检索下级节点)
tree_sort 当前层级排序号(decimal类型)
tree_sorts 树节点的完整排序号,10位数字组成(快速整树排序)
tree_leaf 是否是末级,是否叶子节点(0:否,1:是,char类型)
tree_level 节点层次级别(从0开始,decimal类型,快速分级查询,根据层级缩进)
tree_names 节点的全名称(用“/”分隔,快速获取当前节点完整路径)
以下是树表可选字段:
status 节点状态(0:正常,1:删除,2:停用)
create_by 创建者用户编码
create_date 数据创建时间
update_by 更新者用户编码
update_date 数据更新时间

下面以区域树表举例

定义实体Entity

用户自定义的节点编码是area_code

原文地址:https://www.cnblogs.com/jpfss/p/10419148.html

时间: 2024-08-30 04:41:31

JeeSite 4.x 树形结构的表设计和用法的相关文章

Mysql导出表结构及表数据 mysqldump用法

命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名; 1.导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)    mysqldump -uroot -pdbpasswd -d dbname >db.sql; 2.导出數據库為dbname某张表(test)结构    mysqldump -uroot -pdbpasswd -d dbname test>db.sql; 3.导出數據库為dbna

mysql 导出表结构和表数据 mysqldump用法

mysql 导出表结构和表数据 mysqldump用法 命令行下具体用法如下:   mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysqldump -h localhost -uroot -p123456 database > dump.sql 导出单个数据表结构和数据mysqldump -h localhost -uroot -p123456  database table > dump.sql 导出整个数据库结构(不包含数据)

Mysql导出(多张表)表结构及表数据 mysqldump用法

命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名; 1.导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為db.sql)    mysqldump -uroot -pdbpasswd -d dbname >db.sql; 2.导出數據库為dbname某张表(test)结构    mysqldump -uroot -pdbpasswd -d dbname test>db.sql; 3.导出數據库為dbna

Navicat导出表结构(表设计)为Excle格式

由于公司需要在wiki上上传表格设计的文档,于是在网上找了一个方法用于将mysql表的表格设计转成EXCEL的方法. 1. 首先点击新建查询,然后输入下面的语句 SELECT COLUMN_NAME 字段名称, COLUMN_TYPE 数据类型, IF(IS_NULLABLE='NO','是','否') AS '必填', COLUMN_COMMENT 注释 FROM INFORMATION_SCHEMA.COLUMNS where -- Finance为数据库名称,到时候只需要修改成你要导出表结

递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称

递归返回格式如:一级>二级>三级 private string GetPerUserGroup( string groupid, string usergroupname) { string str = usergroupname; if (Convert.ToInt32(groupid) > 0) { Community.Model.USER_GROUP gt = BUSER_GROUPExtBLL.SelectByID(int.Parse(groupid)); if (gt != n

无限树形结构的数据库表设计

前言: 无限树形结构的数据库表设计的是否合理,直接影响到UI层是否方便根据树来查询关联的数据. 1.表字段: F_BtEd2kTypeId int Unchecked F_Name nvarchar(50) Checked F_ParentTypeId nvarchar(50) Checked F_Code nvarchar(50) Checked F_RecordStatus int Checked 2.表数据: 3.说明: 如2所示, 1)如果上表的数据关联上了一张表A,通过BtEd2kTy

树形结构的数据库表Schema设计-基于左右值编码

树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完 成持久化.然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,因此是不能直接将Tree存入DBMS,设计合适的Schema及其对 应的CRUD算法是实现关系型数据库中存储树形结构的关键. 理想中树形结构应该具备如下特征:数据存储冗余度小.直观性强:检索遍历过程简单高效:节点增删改查CRUD操作高效.无意

数据库树形结构、多级联动的表设计

问题:二级联动.多级联动等树形结构的数据,如何设计表格. 场景:省市县三级联动.商品的分类等. 参考:https://www.zhihu.com/question/20417447 最常用的一种方法是:将多级数据都放在同一张表中,每条记录用一个parent_id字段存放它对应的父节点的Id,如下图. 工具:MySQL 如果当前节点已经是根节点(没有父节点),则parent_id为0即可. 原文地址:https://www.cnblogs.com/guxin/p/8376411.html

YbSoftwareFactory 代码生成插件【十八】:树形结构下的查询排序的数据库设计

树形结构的排序在中国特色下十分普遍也非常重要,例如常说的五大班子,党委>人大>政府>政协>纪委,每个班子下还有部门,岗位,人员,最终排列的顺序通常需要按权力大小.重要性等进行排列,顺序排列不好可是重大的罪过,领导很生气,后果很严重.这种排序方式本质上就是典型的树形结构深度排序,但在数据库中很难直接通过SQL语句简单高效地进行处理,更不用说还要支持不同类型数据库了. 当前解决此类问题,主要有两种方法. 1. 排序码方式 原理:在每个树形节点上均设置一个排序码,排序码通常是一个字符串并