Você pode usar a Opção 1, mas sem uma Chave Alternativa substituta adicional.
Em vez disso, estenda a Chave Primária existente (de cada entidade), com um
EntityType
coluna (digamos CHAR(1)
, isso seria E
para eventos, P
para Pessoas, D
para Produtos). O composto
(EntityId, EntityType)
se tornará então a Chave Primária da tabela Entity
e os compostos correspondentes nas outras 3 tabelas de subtipos. (O
EntityType
é apenas uma tabela de referência auxiliar, com 3 linhas):