数据库存储 层次、树形结构 的标准做法
2014-04-22 23:16
302 查看
标准做法有3种:
1、最早的做法:节点id里包括完整路径(曾祖父id-爷id-父id-本id)
财务的会计科目编号就是这么做的
现在基本很少使用了
2、递归做法:父id,本id(更早、完整的关系提供递归才能得到)
目前比较普遍
好处是直观简单,增删方便
坏处是生成树需要递归
3、直接保存法:本id,根id,层次数,在根(子树)里的序号
好像没看到别人这么用的,我在自己的树形论坛离线阅读器里采用过
好处是避免了递归,生成树记录高效方便
坏处是增删节点,需要更新半个子树的节点记录
(曾发布在: http://bbs.csdn.net/topics/390248889#post-392670699 )
1、最早的做法:节点id里包括完整路径(曾祖父id-爷id-父id-本id)
财务的会计科目编号就是这么做的
现在基本很少使用了
2、递归做法:父id,本id(更早、完整的关系提供递归才能得到)
目前比较普遍
好处是直观简单,增删方便
坏处是生成树需要递归
3、直接保存法:本id,根id,层次数,在根(子树)里的序号
好像没看到别人这么用的,我在自己的树形论坛离线阅读器里采用过
好处是避免了递归,生成树记录高效方便
坏处是增删节点,需要更新半个子树的节点记录
(曾发布在: http://bbs.csdn.net/topics/390248889#post-392670699 )
相关文章推荐
- 数据库存储 层次、树形结构 的标准做法
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 树形结构在数据库中的存储与CRUD操作
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 树形结构的数据存储和数据库表设计
- 树形结构的数据存储与数据库表设计
- 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一 Adjacency List)
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 树形结构-树形结构的数据存储与数据库表设计
- 利用多叉树将数据库中的层次数据转换成树形结构的JSON字符串
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .
- 采用左右值编码来存储无限分级树形结构的数据库表设计
- 数据库设计 采用左右值编码来存储无限分级树形结构_1 预排序遍历树算法(modified preorder tree traversal algorithm )
- 层次结构数据的数据库存储和使用
- 数据库设计 采用左右值编码来存储无限分级树形结构_2 预排序遍历树算法(modified preorder tree traversal algorithm )
- 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案三 Closure Table)
- Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结
- 采用左右值编码来存储无限分级树形结构的数据库表设计