关于树型结构,在关系型数据库中的设计

第一种方案,当id类型为整型时:

我们除了有一个记录父id字段外,还应有一个路径的字段如部门:detp(id , pid , path , name)。则有记录如下:

1 , 0 , '/0/1' , '部门A'
2 , 0 , '/0/2' , '部门B'
3,  1 , '/0/1/3', '部门A.01'
4,  2 , '/0/2/4', '部门B.01'
5,  3 , '/0/1/3/5', '部门A.01.a'
...
当多了path字段后,可以更加便捷的查询了如:

已知当前部门 xxx_dept(5,  3 , '/0/1/3/5', '部门A.01.a')

  1.查询其同部门
      select * from xxx_dept where pid = 3;
  2.查询其子部门
      select * from   xxx_dept  where path like  '/0/1/3/5%' 
  3.查询其父部门
      select * from xxx_dept  where  '/0/1/3/5' like path+'%'
  4.同样删除也就变得简单了

当id 为char时
这时我们就在id这里做改造了,表结果 xxx_dept(id,pId,name),有如下数据:

'001'  ,  '0' , '部门'
'00101' , '001' , '部门A'
'00102', '001' , '部门B'
'0010201','00102' , '部门B1'
...
这时的结构就与上面差不多了,查询方式也差不多了
 


 

 


 

 

转载于:https://my.oschina.net/u/2552286/blog/727336

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值