@ palmsey
В значительной степени, но вариация на той схеме, которую я видел, чаще всего избавляется от ObjectAID
и др. ParentID
становится одновременно PK и FK до Parents
. Это дает вам что-то вроде:
Parents
ObjectA
ParentID
(ФК и ПК)
ColumnFromA NOT NULL
ObjectB
ParentID
(ФК и ПК)
ColumnFromB NOT NULL
Comments
останется прежним. Тогда вам просто нужно ограничить генерацию идентификатора, чтобы случайно не оказаться строкой ObjectA
и строкой ObjectB
, которые обе указывают на одну и ту же строку Parents
; самый простой способ сделать это - использовать ту же последовательность (или любую другую), которую вы используете для Parents
для ObjectA
и ObjectB
.
Вы также видите много схем с чем-то вроде:
Parents
ID
SubclassDiscriminator
ColumnFromA (nullable)
ColumnFromB (nullable)
и Comments
останутся без изменений. Но теперь вы не можете применить все свои бизнес-ограничения (все свойства подклассов обнуляются) без написания триггеров или выполнения этого на другом уровне.