treestore - downgoon/hello-world GitHub Wiki

基于关系型实现的树形结构

这个课题有很多人研究,并且形成了 4大设计模式。

一般比较普遍的就是四种方法:(具体见 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.