0

我有一个具有以下(相对)结构的单表:

foo_id, parent_foo_id, foo_name

我想用这些实体构建一个(有效的)无限深度递归数组,然后将它们输出到树形菜单中。没有“parent_foo_id”的节点将被视为层次结构的顶部,而所有连续节点将显示为其父节点的子节点。

处理此类数据设计的最佳方法是什么?

4

2 回答 2

1

不久前我问了一个类似的问题。我的问题特别与 SQLite 有关,但由于 SQLite 语法往往是大多数其他 SQL 风格的最小公分母子集,它也应该适合你。你可以随意忽略所有 iPhone 的东西,因为它无关紧要。

我希望这至少可以帮助您入门。

另外,请参阅这个问题(及其解决方案),我在不同实现风格的实验中遇到了问题。

于 2009-10-15T03:28:22.527 回答
1

就我而言,在关系数据库中存储分层数据一直很麻烦。递归方法(或邻接方法)总是迟早会遇到性能问题,其他方法更难实现。

我在嵌套集方法上取得了最大的成功,它从一个完全不同的角度来管理分层数据。但是,很难自己实施和维护。幸运的是,Doctrine ORM具有使用此算法管理树数据的行为,因此我建议查看此树遍历方法背后的理论,然后查看 Doctrine 代码以了解实现此技术的窍门。

于 2009-10-15T07:43:59.147 回答