0

我有字段 Id、Name、ParentId(Id) 和 Leaf 的表。我想对树状结构进行建模,其中 Leaf=1 的子/元素可以有更多的父级。我如何在这个表中模拟这种情况,或者我需要一个额外的表来处理这个事情。我想要这个建模来实现像堆栈溢出一样的标签。

4

1 回答 1

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条目,要么只在那里定义行,但我也不建议这样做——它很混乱而且不是您设计数据库的约束类型)。

于 2013-07-01T18:54:39.307 回答