【发布时间】:2009-07-06 17:23:27
【问题描述】:
我有许多不同的项目存储在不同的 MySQL 表中,我想将它们放入树层次结构中。使用邻接表模型,我可以为每个表添加一个 parent_id 字段,并使用外键关系链接这些表。
但是,我想使用嵌套集/修改的预序树遍历模型。数据将在严重偏向于读取的环境中使用,而我希望运行的查询类型支持这种方法。
问题是我在嵌套集合上的所有信息都假设您只有一种类型的项目,存储在一个表中。我能想到的解决方法是:
- 在树中有多个外键字段,每个表/项目类型一个。
- 在树结构中存储项目表的名称以及项目 ID。
至少可以说这两种方法都不优雅,那么有更好的方法吗?
【问题讨论】:
-
除了你提到的那些之外,我想不出任何办法来做到这一点。我倾向于第二个,在树节点中存储一个类型鉴别器,然后让项目表引用树节点。我什至对树节点和相应的项目使用相同的主键,使项目表的 PK 也是引用树表的 FK。这是大多数对象关系映射器处理继承 FWIW 所采用的广泛方法。
标签: mysql tree hierarchical-data nested-sets adjacency-list