Можете да използвате Вариант 1, но без допълнителен сурогатен алтернативен ключ.
Вместо това разширете съществуващия първичен ключ (на всеки обект) с EntityType
колона (кажете CHAR(1)
, това би било E
за събития, P
за лица, D
за продукти).
Съставът (EntityId, EntityType)
тогава ще стане първичен ключ на таблица Entity
и съответните съединения в другите 3 таблици с подтипове.
(EntityType
е само спомагателна, справочна таблица, с 3 реда):