Как бы я смоделировал отношения между несколькими объектами, когда один объект мог бы быть частью двух отдельных, не связанных между собой иерархий, и каждый объект мог бы быть связан с 1 или несколькими другими объектами неиерархическим образом? Я хотел бы сделать это только в 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, являются FK для столбца Entities.ID, а ParentID является FK для столбца ID. Эта модель, вероятно, будет работать нормально, если у объекта никогда не может быть более одного родителя. Мне нужно иметь возможность разрешить сущности иметь более одного родителя.
Натуральные ключи на столах:
Entities: ParentID, Name
EntityRelationships: LEntityID, REntityID, EntityRelationshipTypeID
Да, две сущности могут быть связаны друг с другом в двух или более разных типах отношений.
Спасибо за любую помощь.