如何使用多个父项建模数据实体?

时间:2010-08-25 21:53:49

标签: data-structures parent-child datarelation

我如何建模多个实体之间的关系,其中一个实体可以是两个独立的,无关的层次结构的一部分,并且每个实体可以以非分层方式与一个或多个其他实体相关联?我想在数据库中只有2或3个表中执行此操作。

我目前将它建模为两个表:

Entities
----------------------------------------------------------------
ID                          bigint        identity(1, 1)    PK
ParentID                    bigint        null              FK
Name                        varchar(100)  not null
Description                 varchar(256)  null

EntityRelationships
----------------------------------------------------------------
LEntityID                   bigint    not null    PK, FK
REntityID                   bigint    not null    PK, FK
EntityRelationshipTypeID    int       not null    PK, FK

两列,LEntityID和REntityID是Entities.ID列的FK,ParentID是ID列的FK。只要一个实体永远不会有多个父模型,这个模型可能会正常工作。我需要能够允许实体拥有多个父级。

表格上的自然键是:

Entities: ParentID, Name
EntityRelationships: LEntityID, REntityID, EntityRelationshipTypeID

是的,两个实体可以在两种或更多种不同类型的关系中相互关联。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。您需要引入另一个表调用EntityParentRelation作为结构化的文件

EntityParentRelation
--------------------------------------------------------------------------------
ID                           bigint                  identity(1,1)   pk   
EntityID                     bigint                  not null        fk
ParentID                     bigint                  not null        fk

其中EntityID和ParentID都是到Entities.ID的fks。并从实体中删除ParentID。 并对EntityRelationships中的关系进行了一些修改

将fk指向实体的Instaead,您需要将fk指向EntityParentRelation.ID以获取LEntityID和REntittyID。

希望它会有所帮助:)。