Tenho uma dúvida sobre um cenário semelhante ao descrito aqui: SQL: Entidade pertence (muitos para um) a uma de duas entidades diferentes
Digamos que eu entenda a necessidade da Party
tabela e todas as outras referências a ela. Mas estou curioso para saber na PartyType
tabela qual a necessidade da Name
coluna? Quer dizer, é só para manter o varchar “Pessoa” ou “Organização”?
Da mesma forma, na Party
tabela, para que Name
serve a coluna?
E também, qual é a necessidade da PartyType
mesa? Quer dizer, é só ter um lugar para inserir todos os tipos e o mais importante garantir que na hora de inserir, se houver algo errado PartyTypeCd
(não presente na PartyType
tabela) teremos um erro, certo?
Outra questão é: como você inseriria um Organization
ou um Person
? Vendo o esquema proposto, Organization
as Person
tabelas possuem seus próprios ids ( PersonId
e OrganizationId
respectivamente) que fazem referência a ambos PartyId
na Party
tabela. Então, isso significa que devemos inserir primeiro um novo Person
(por exemplo), na Party
tabela? Se for esse o caso, não deveria haver um AUTO INCREMENT
na PartyId
coluna da Party
tabela, para termos certeza de que não obteremos Organização e Pessoa com o mesmo id?
Do jeito que está , PartyId
não pode ser a única chave primária . A chave primária na Party
tabela deve ser combinada entre PartyTypeCd
e PartyId
.
Minha situação é semelhante, de certa forma, à da pergunta vinculada no topo. Apenas para referência, aqui está um pequeno exemplo de esquema.
Basicamente, tenho uma situação em que a Component
(que tem suas próprias colunas, como component
, and price
) pode ser associada a a User_Brand
ou a a System_Brand
( ambos têm suas próprias colunas e campos exclusivos , que excluí da captura de tela... então, mesclando- os em um tabela com uma type
coluna NÃO é uma solução ).