码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2019-02-11 18:38:49      阅读:616      评论:0      收藏:0      [点我收藏+]

标签:邻接表   方法   京东   通过   就是   优点   递归   筛选   客户   

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

 

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

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

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

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

这有两种方式。

方式1:

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

方式2:

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

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

也可以把表中的所有数据查询下来,放到list中,通过递归遍历list数据方式进行数据查询。在数据表比较小的时候也可以适用。优点是只需要进行一次IO,缺点是当数据表数据很大时,数据库内存消耗会很大。

 

 方法2:左右值编码存储关系。

 

 如果层级数据不多,建议平级返回数据,客户端自己组合层级。
数据存储 一般是看你的需求,比如:
国家-城市-道路-母婴。这种差异较大的就是多个表关联存储
 

如果是很紧密的那就存储一个表就好,也可以使用NOSQL方式存储,这样筛查也是可以的。

 

 如果数据量大那就分接口返回
 比如查询1级接口。查询2级接口 3级接口....
依次的来,不要1~3级的全部返回了
就是购物的就可以啊
淘宝的筛选就类似,京东也是

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

标签:邻接表   方法   京东   通过   就是   优点   递归   筛选   客户   

原文地址:https://www.cnblogs.com/gne-hwz/p/10362047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!