3

1つのエンティティが2つの別個の無関係な階層の一部であり、各エンティティが1つ以上の他のエンティティに非階層的に関連付けられている場合、複数のエンティティ間の関係をどのようにモデル化できますか?データベース内の2つまたは3つのテーブルでこれを実行したいと思います。

現在、2つのテーブルにモデル化しています。

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の2つの列は、Entities.ID列へのFKであり、ParentIDはID列へのFKです。エンティティが複数の親を持つことができない限り、このモデルはおそらく正常に機能します。エンティティが複数の親を持つことを許可できる必要があります。

テーブルの自然キーは次のとおりです。

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

はい、2つのエンティティは、2つ以上の異なるタイプの関係で相互に関連している可能性があります。

助けてくれてありがとう。

4

1 に答える 1

2

はい、できます。次の構造化された別のテーブル呼び出し EntityParentRelation を導入する必要があります

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

ここで、EntityID と ParentID は両方とも Entities.ID の fk です。エンティティから ParentID を削除します。EntityRelationships のリレーションシップを少し変更

fk をエンティティにポイントする代わりに、fk を LEntityID および REntittyID の EntityParentRelation.ID にポイントする必要があります。

それが役立つことを願っています:)。

于 2012-10-19T05:25:00.283 に答える