我的表格包含字段ID,Name,ParentId(Id)&叶。我想建模树状结构,其中Leaf = 1的子/元素可以有更多父母。我如何在这个表中模拟这种情况,或者我需要一个额外的表来处理这个问题。我希望这个建模用于实现Stack溢出中的标签。
答案 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
,似乎无法直接强制执行此操作输入或仅在那里定义行,但我不建议 - 它很乱,而不是你设计数据库的约束类型。)