要做一个多层级树形结构数据,后端数据如何存储,以怎样的形式给前端呢
方法1:Adjacency List存储相邻关系
id, parent_id以邻接表(Adjacency List)的形式进行存储在一张表中
这种方式在关系存储比较简单,查询的时候比较复杂。
比如查询部门下的所有子部门信息,因为表中只记录的上下级的部门及其子部门信息。需要遍历表中的信息
这有两种方式。
方式1:
在数据库中递归遍历数据表,这样只需要一次io就可以完成这个操作。降低的数据库连接数,缺点是占用数据库的cpu,在数据量大的时候会赞成数据库服务器宕机,甚至直接损坏
方式2:
在编程语言中进行遍历。for循环中通过parent_id遍历出部门下的下级子部门,放入到map中,如果没有查询到信息就返回null
具体代码参考分销系统的用户关系,用户与推广链接的数据库设计。设计思路 。这个需要频繁的进行数据库查询,在部门层级数不大于50的时候是可以适用的。
也可以把表中的所有数据查询下来,放到list中,通过递归遍历list数据方式进行数据查询。在数