2010-08-25 44 views
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是FKS到Entities.ID柱和PARENTID是FK到ID列。只要一個實體永遠不會有多個父代,這個模型可能會正常工作。我需要能夠讓一個實體擁有多個家長。

表上的自然鍵是:

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

是,兩個實體可以在兩個或多個不同類型的關係彼此相關。

謝謝你的幫助。

回答

1

是的,你可以做到這一點。您需要引入另一個表調用EntityParentRelation結構性波紋管

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

其中兩個ENTITYID和PARENTID是FKS到Entities.ID。並從實體中刪除ParentID。 對EntityRelationships中的關係進行一些修改

將fk指向Entities的Instaead,您需要將fk指向EntityParentRelation.ID以獲得LEntityID和REntittyID。

希望它會幫助:)。

相關問題