3

我将如何建模多个实体之间的关系,其中一个实体可以是两个独立的、不相关的层次结构的一部分,并且每个实体可以以非层次结构的方式与一个或多个其他实体相关?我只想在数据库中的 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

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

感谢您的任何帮助。

4

1 回答 1

2

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

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

其中 EntityID 和 ParentID 都是 Entity.ID 的 fks。并从实体中删除 ParentID。并对 EntityRelationships 中的关系稍作修改

除了将 fk 指向实体之外,您还需要将 fk 指向 LEntityID 和 REntittyID 的 EntityParentRelation.ID。

希望它会有所帮助:)。

于 2012-10-19T05:25:00.283 回答