Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Modelagem de dados para as mesmas tabelas com as mesmas colunas


Só porque os dados têm uma estrutura semelhante não significa que tenham o mesmo significado ou as mesmas restrições. Mantenha suas tabelas de pesquisa separadas. Isso mantém as chaves estrangeiras separados, para que o banco de dados possa se proteger de fazer referência ao tipo errado de dados de pesquisa.

Desejo herança suportada por DBMSs relacionais, onde você possa definir a estrutura básica na tabela pai e apenas adicionar FKs específicos nas tabelas filhas. Como está agora, você precisará suportar alguma repetição em seu DDL ...

NOTA:Uma exceção da regra "manter as tabelas de pesquisa separadas" pode ser quando seu sistema precisa ser dinâmico (ou seja, ser capaz de adicionar novos tipos de dados de pesquisa sem realmente criar novas tabelas físicas no banco de dados), mas não parece que caminho da sua pergunta.

Com uma grande tabela de pesquisa, os FKs sozinhos não pararão (por exemplo) o ShippingLog tabela de referenciar uma linha destinada à EmployeeTask tabela. Ao usar a identificação de relacionamentos e a migração de PKs, você pode se proteger disso, mas não sem introduzir algumas redundâncias e precisar de algumas restrições cuidadosas. É mais limpo e provavelmente mais eficiente simplesmente fazer a coisa certa e manter as tabelas de pesquisa separadas.