这是一个后续到:
MySQL - Is it possible to get all sub-items in a hierarchy?MySQL - 处理这种分层数据的最佳方法?
我有一个任意深度的邻接表模型表(我在我可以将其转换为嵌套集模型点
我读了关于如何使用嵌套集模型的MySQL数据,虽然它似乎变得越来越复杂并且非常复杂,以至于无法完成插入,更新和删除等基本功能。
另一个博客展示了如何在邻接列表模型中使用触发器系统,以保存一个将每个对象与其祖先关联起来的祖先表。
现在我需要能够返回给定节点的所有子节点的列表,以更改或删除它们。这种层次结构一旦创建就不会一直改变,但是会有大量的层次结构。
的三种方法我看到的是:
创建存储过程时这将做到这一点返回所有孩子递归查询。
转换为嵌套集模型这将需要进入复杂性,并可能创建一个存储过程来添加,编辑和删除。
在插入/删除触发器上创建祖先表以处理所有数据。
如果还有其他方法我不探索,请让我知道,我会更新此列表。
*我将这个添加为评论而不是答案,因为这是我最近才看到的:我没有使用这种方法,但我还没有完全理解,但我认为你可能至少会发现它很有趣。[[用连续分数嵌套间隔树编码](http://arxiv.org/ftp/cs/papers/0402/0402051.pdf)(Vadim Tropashko)看起来很有趣,而且是对[与Farey分数的嵌套间隔](http://arxiv.org/html/cs/0401014)。和所有的方法一样,有利弊 - 这只是你可能想添加到你的列表中的东西。 – Mike 2010-07-04 10:55:47
你有没有考虑过不使用关系数据库?我忍不住想像图形数据库这样的东西会更好。 – 2010-07-06 15:15:10
从未听说过图形数据库?我也需要知道它在速度和优化方面的比较。这只是整个系统的一小部分,所以它必须与其余的部分并驾齐驱。 – 2010-07-06 19:33:53