嵌套集层次结构中的多个表

时间:2009-07-06 17:23:28

标签: mysql tree hierarchical-data nested-sets adjacency-list

我有许多不同的项存储在不同的MySQL表中,我想将它放在树形层次结构中。使用邻接列表模型,我可以为每个表添加一个parent_id字段,并使用外键关系链接表。

但是,我想使用嵌套集/修改的预订树遍历模型。这些数据将在一个严重偏向于读取的环境中使用,而我期望运行的查询类型也支持这种方法。

问题是我在嵌套集上的所有信息都假设您只有一种类型的项目,存储在一个表中。我能想到的方法是:

  • 树中有多个外键字段,每个表/项类型一个。
  • 在树状结构中存储项目表的名称以及项目ID。

这两种方法至少可以说是不优雅的,所以有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

RDBMS与存储层次结构不匹配,并且您的用例会使情况变得更糟。我认为你可以使用RDBMS获得一些更好的调整,但仍然是你自己建议的丑陋变化。恕我直言,其他数据模型将为您的问题提供更好的解决方案,如图形数据库或文档数据库。文章Should you go Beyond Relational Databases?对这类内容进行了很好的介绍。

答案 1 :(得分:0)

您有几种类型的树,以及一个包含所有树类型的树信息(即左/右值)的表?

如果您有多种类型的树,为什么不为每种类型使用不同的表?