Estou no processo de projetar um banco de dados e estou tendo dúvidas sobre minhas decisões iniciais de design ...
Os tipos de produtos são os seguintes ... Modelos, peças, kits de peças de reposição e opções.
Opção A (primeiro design): planejei ter tabelas separadas para os tipos de produtos acima. Eu diria que cerca de 75% dos campos seriam os mesmos em cada tabela.
Criei cada tipo de produto como tabelas separadas por causa das associações que preciso criar entre elas. Por exemplo, um modelo pode ter muitas opções e uma opção pode ter muitos modelos. Uma opção também pode ter muitas partes e uma parte pode ter muitas opções ... e assim por diante ...
Opção B: Em vez de ter tabelas separadas, eu poderia criar uma tabela chamada Produto que engloba modelo, peça, kits de peças de reposição e opções. Eu poderia ter um campo chamado type para diferenciar entre modelo, opções, etc. Suponho que um lado negativo é que vários campos nunca seriam usados (deixados nulos) para determinados tipos de produtos. Acho que é aqui que "as melhores práticas" não entram em jogo.
A opção B reduziria bastante a complexidade do design do banco de dados. Também não precisaria me preocupar em fazer referência a várias tabelas ao extrair dados para consultas ...