我如何建模多个实体之间的关系,其中一个实体可以是两个独立的,无关的层次结构的一部分,并且每个实体可以以非分层方式与一个或多个其他实体相关联?我想在数据库中只有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
是的,两个实体可以在两种或更多种不同类型的关系中相互关联。
感谢您的帮助。
答案 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。
希望它会有所帮助:)。