Yar*_*rin 12 sql data-modeling mptt adjacency-list hierarchical-data
有一段时间我一直在努力解决如何最好地处理SQL中的层次结构.由于邻接列表的限制和MPTT /嵌套集的复杂性而感到沮丧,我开始考虑简单地存储密钥路径,作为一个简单的node_key/node_key/...字符串.我决定编译这三种技术的优点和缺点:
除了一个用例之外,存储的路径技术使用与每个用例中的其他技术相同或更少的调用.通过这种分析,存储路径是明显的赢家.更不用说,它实现起来要简单得多,人类可读等等.
所以问题是,不应该将存储路径视为比MPTT更强大的技术吗?为什么存储路径不是更常用的技术,为什么不在给定实例中使用它们而不是MPTT?
另外,如果您认为此分析不完整,请告诉我们.
这里至少有两件事MPTT可以开箱即用,存储的路径解决方案不会:
您可能还会考虑我在回答中所描述的Closure Table设计什么是将平台解析成树的最有效/优雅的方法?
还有其他一些注意事项:
我还在我的演示文稿中介绍了Closure Table,其中包括SQL和PHP的分层数据模型,以及我的书,SQL Antipatterns:避免数据库编程的陷阱.