部门机构树

组织机构是典型的层次树结构表,以下就以组织为例开始分析





1. 部门机构树如下



┌───────────────

│ 部门
│ │
│ ├─技术部
│ │ │
│ │ ├─技术1部
│ │ │
│ │ └─技术2部
│ │
│ ├─市场部
│ │ │
│ │ ├─市场1部
│ │ │
│ │ └─市场2部
│ │
│ └─客服部

└───────────────







2. 数据库表 org

标识 父标识 所有父标识 名称 编码 父编码 所有父编码 叶子 级别
id parent_id parent_ids text code parent_code parent_codes leaf grade
1 '1' 部门 00 '00' 0 1
2 1 '1','2' 技术部 0001 00 '00','0001' 0 2
3 2 '1','2','3' 技术 1 部 000101 0001 '00','0001','000101' 1 3
4 2 '1','2','4' 技术 2 部 000102 0001 '00','0001','000102' 1 3
5 1 '1','5' 市场部 0002 00 '00','0002' 0 2
6 5 '1','5','6' 市场 1 部 000201 0002 '00','0002','000201' 1 3
7 5 '1','5','7' 市场 2 部 000201 0002 '00','0002','000202' 1 3
8 1 '1','8' 客服部 0003 00 '00','0003' 1 2






3. 这样设计的好处



(1) 上下级关系变化时修改code即可,不需要修改主键id

(2)


有了code可以方便查看所有子节点信息 ,比如查看id为1的所有子节点信息

根据id(1)先获取code(0001)再执行select * from org where code like '0001%'

(3)


有了parent_codes可以方便查看所有父节点信息 ,比如查看id为6的所有父节点信息

根据id(6)先获取parent_codes再执行select * from org where code in ('00','0002','000201')

(4)


有了leaf可以方便查看所有叶子和非叶子节点信息 ,比如查看所有叶子节点信息

select * from org where leaf = '1'

(5)


有了grade可以方便查看某级别的节点信息 ,比如查看层次树级别为2的节点信息

select * from org where grade = '2'








4. 注意事项



(1)


根节点code的值必须是00

不合法:01、02、10、20

(2)




子节点code的值必须是“父节点code + 序号(不能是00)”

合法:0001、0002、000101

不合法:01、0000、0101、000100



http://topic.csdn.net/u/20100713/17/3e31cfba-aeea-4b8e-9f40-0acfa411ac60.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值