Eu tenho uma tabela de transações, cada transação tem 5-6 contatos envolvidos. cada contato tem os mesmos campos como nome, endereço, celular, e-mail etc.
Então, a melhor coisa que eu acho é usar a mesma tabela de contato e relacioná-la 5 vezes com a tabela de transações. Portanto, não preciso fazer o mesmo tipo de tabela 5 vezes.
O problema começa quando eu me conecto com a entidade-framework, isso leva apenas uma relação.
Minha pergunta é se devo fazer 6 cópias de contato para cada tipo de contato ou seria melhor com 6 tabelas de junção (uma tabela com apenas os 2 id's para que eu pudesse fazer uma junção)?
Acho que é um problema muito comum, mas não consegui encontrar informações claras sobre qual é a melhor maneira.
EDITAR:
O melhor é normalizar as tabelas. Crie uma tabela contact_type com um registro para cada tipo de contato. Em seguida, crie uma tabela de junção contact_type_xref que contém o identificador da tabela contact e o identificador da tabela contact_type. Em seguida, carregue os tipos de contato associados a cada contato em contact_type_xref e remova os registros de contato duplicados de contato. Veja um exemplo: . Depois de corrigir o design do banco de dados, você pode resolver o problema da estrutura da entidade (que provavelmente desaparecerá).
Em primeiro lugar, é um pouco de estrutura de lixo que não reconhece vários relacionamentos entre tipos de entidade!
Se você tiver tantas chaves estrangeiras, é provável que tenha mais (ou menos) no futuro. Os detalhes da solução @Wil permitirão que você consiga isso sem alterações de esquema.
Uma solução alternativa que pode enganar sua estrutura seria definir exibições no banco de dados para cada um dos seus tipos de contato e definir o relacionamento da estrutura da transação para a exibição. Por exemplo
Pode ou não funcionar, dependendo de como sua estrutura interage com o banco de dados.