Data structures 如何为具有多个父对象的数据实体建模?
如果一个实体可以是两个独立的、不相关的层次结构的一部分,并且每个实体可以以非层次结构的方式与一个或多个其他实体相关,我将如何建模多个实体之间的关系?我只希望在数据库中的2或3个表中执行此操作 我目前将其建模为两个表:Data structures 如何为具有多个父对象的数据实体建模?,data-structures,parent-child,datarelation,Data Structures,Parent Child,Datarelation,如果一个实体可以是两个独立的、不相关的层次结构的一部分,并且每个实体可以以非层次结构的方式与一个或多个其他实体相关,我将如何建模多个实体之间的关系?我只希望在数据库中的2或3个表中执行此操作 我目前将其建模为两个表: Entities ---------------------------------------------------------------- ID bigint identity(1, 1) PK Pare
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
是的,两个实体可以在两种或多种不同类型的关系中相互关联
谢谢您的帮助。是的,您可以这样做。您需要引入另一个表调用EntityParentRelation,如下所示
EntityParentRelation
--------------------------------------------------------------------------------
ID bigint identity(1,1) pk
EntityID bigint not null fk
ParentID bigint not null fk
其中EntityID和ParentID都是对Entities.ID的fks。并从实体中删除ParentID。
对实体关系中的关系做了一些修改
在将fk指向实体之前,您需要将fk指向EntityId和RentityId的EntityParentRelation.ID
希望有帮助:)。您提供的解决方案很有趣,但似乎只是一种多对多关系。也就是说,它似乎不基于暗示父子关系的sql语义。或者,您是否建议此联接表仅由包含本机键的表中的id组成,本机键由一对多排列中的自引用列组成?