多层级树形结构数据库存储方式

本文探讨了两种在数据库中存储多层级树形结构的方法:Adjacency List和左右值编码。Adjacency List简单但查询复杂,适用于层级不深的情况。左右值编码则通过额外的left和right字段实现高效查询,适用于更复杂的树形结构。
摘要由CSDN通过智能技术生成

要做一个多层级树形结构数据,后端数据如何存储,以怎样的形式给前端呢

 

方法1:Adjacency List存储相邻关系

 id, parent_id以邻接表(Adjacency List)的形式进行存储在一张表中

这种方式在关系存储比较简单,查询的时候比较复杂。

比如查询部门下的所有子部门信息,因为表中只记录的上下级的部门及其子部门信息。需要遍历表中的信息

这有两种方式。

方式1:

在数据库中递归遍历数据表,这样只需要一次io就可以完成这个操作。降低的数据库连接数,缺点是占用数据库的cpu,在数据量大的时候会赞成数据库服务器宕机,甚至直接损坏

方式2:

在编程语言中进行遍历。for循环中通过parent_id遍历出部门下的下级子部门,放入到map中,如果没有查询到信息就返回null

具体代码参考分销系统的用户关系,用户与推广链接的数据库设计。设计思路 。这个需要频繁的进行数据库查询,在部门层级数不大于50的时候是可以适用的。

也可以把表中的所有数据查询下来,放到list中,通过递归遍历list数据方式进行数据查询。在数
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值