Como aplico subtipos em um banco de dados do SQL Server?
Estou trabalhando em um programa no qual você pode registrar reclamações. Existem três tipos de reclamações:internal
(erros dos funcionários),external
(erros de outra empresa) esupplier
(erros cometidos por um fornecedor). Eles mantêm dados diferentes que não podem ser compartilhados. Atualmente, tenho 4 tabelas (reclamação, funcionário, empresa e fornecedor). Aqui está uma visualização das tabelas:
Eu tenho um entendimento básico de subtipos, mas não consigo convertê-los de um ERD em um banco de dados real do SQL Server, ou pelo menos nesse cenário. É assim que as 4 tabelas ficam (atributos irrelevantes omitidos):
Queixa
PK ComplaintId
Empregado
EmployeeId PK
Nome do empregado
Companhia
CompanyId PK
Nome da empresa
Fornecedor
SupplierId PK
Nome do Fornecedor
Ao registrar uma reclamação, o erro é cometido por um dos três tipos e todos eles armazenam informações diferentes. Qual é a melhor maneira de armazenar informações neste caso? Pensei em colocar 2 discriminadores na tabela de reclamações:ComplaintType
eId
para que eu possa apontar para qual tabela verificar e qual identificação preciso, mas isso não é muito limpo nem eficiente.
Por favor, ajude.