treestore - downgoon/hello-world GitHub Wiki
基于关系型实现的树形结构
这个课题有很多人研究,并且形成了 4大设计模式。
- What are the known ways to store a tree structure in a relational DB?
- Storing Hierarchical Data in a Database, Part 2
- 5 Graph Databases to Consider
- 关系型数据库树形结构的设计
- java、js中实现无限层级的树形结构(类似递归)
- 关系型数据库树形结构的设计
- 一种简单的无限深度树结构数据库设计方案
- 利用多叉树实现Ext JS中的无限级树形菜单
一般比较普遍的就是四种方法:(具体见 SQL Anti-patterns这本书)
- Adjacency List:每一条记录存parent_id
- Path Enumerations:每一条记录存整个tree path经过的node枚举
- Nested Sets:每一条记录存 nleft 和 nright
- Closure Table:维护一个表,所有的tree path作为记录进行保存。
最常用的是这三种:Parent-Child, Materialized Path, Nested Sets.其中,讨论最多的,又是Nested Sets.