我有许多不同的项目存储在不同的 MySQL 表中,我想将它们放入树形层次结构中。使用邻接列表模型,我可以向每个表添加一个parent_id 字段,并使用外键关系链接这些表。
但是,我想使用嵌套集/修改的预序树遍历模型。数据将在严重偏向于读取的环境中使用,并且我希望运行的查询类型有利于这种方法。
问题是我拥有的关于嵌套集的所有信息都假设您只有一种类型的项目,存储在单个表中。我能想到的解决这个问题的方法是:
- 树中具有多个外键字段,每个表/项目类型对应一个外键字段。
- 在树形结构中存储项目表的名称以及项目 ID。
至少可以说,这两种方法都不优雅,那么有更好的方法吗?
最佳答案
RDBMS一开始就与存储层次结构不太匹配,并且您的用例使情况变得更糟。我认为使用 RDBMS 会得到对您自己的建议进行更精细调整但仍然丑陋的变体。恕我直言,其他数据模型将为您的问题提供更好的解决方案,例如图形数据库或文档数据库。文章Should you go Beyond Relational Databases?对此类内容进行了很好的介绍。
关于mysql - 嵌套集层次结构中的多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1088187/