在具有多个父级的子级的数据库中实现树

时间:2013-07-01 16:20:10

标签: database data-structures tree

我的表格包含字段ID,Name,ParentId(Id)&叶。我想建模树状结构,其中Leaf = 1的子/元素可以有更多父母。我如何在这个表中模拟这种情况,或者我需要一个额外的表来处理这个问题。我希望这个建模用于实现Stack溢出中的标签。

1 个答案:

答案 0 :(得分:0)

您需要另一个表,除非“多个父级”具有较小的上限,在这种情况下,您可以为可能的父级数添加ParentID个字段,但不建议这样做。

您似乎拥有多对多的关系。这可以建模如下:

Entity table
ID (Primary Key)
... - other entity fields

Parents table
ChildID  (Foreign Key - Entity.ID)
ParentID (Foreign Key - Entity.ID)

Leaf=1实体是唯一允许拥有多个父项的实体是一种约束,最好在代码级别处理,或者可能使用数据库触发器。

如果不创建另一个表(第三个)(包含Leaf=1的所有实体,或者链接到Entity,似乎无法直接强制执行此操作输入或仅在那里定义行,但我不建议 - 它很乱,而不是你设计数据库的约束类型。)