我有一个具有以下(相对)结构的单表:
foo_id, parent_foo_id, foo_name
我想用这些实体构建一个(有效)无限深度递归数组,然后将它们输出到树状菜单中。没有“parent_foo_id”的节点将被视为heirerchy的顶部,而所有连续的节点将显示为其父节点的子节点。
接近此类数据设计的最佳方法是什么?
答案 0 :(得分:1)
我希望这至少可以帮助你开始。
另外,请参阅this,了解我在使用不同实现样式进行实验时遇到的问题(及其解决方案)。
答案 1 :(得分:1)
在关系数据库中存储分层数据就我而言一直很麻烦。 递归方法(或邻接方法)迟早会遇到性能问题,其他方法难以实现。
我在nested set method取得了最大的成功,它考虑从完全不同的角度管理层次数据。尽管如此,很难实现和维护。 幸运的是Doctrine ORM有一个behavior to manage tree data使用这个算法,因此我建议查看这个树遍历方法背后的理论,然后可能看一下Doctrine代码来实现这个技术。