Estou desenvolvendo uma ferramenta que lida com peças (elétricas). As peças podem ser criadas, visualizadas, modificadas, excluídas, agrupadas e assim por diante ...
Para tornar essa pergunta útil para futuros visitantes, eu gostaria de manter essa pergunta universal, pois o gerenciamento de partes em um banco de dados é muito comum, independentemente de quais partes estejam no banco de dados (CDs, carros, comida, estudantes, ...).
Estou pensando em três projetos diferentes de banco de dados:
Usando uma tabela de peças e tabelas derivadas para atributos de peças especializados.
Parts (id, part_type_id, name) PartTypes (id, name) Wires (id, part_id, lenght, diameter, material) Contacts (id, part_id, description, picture)
Usando apenas tabelas de peças especializadas.
Wires (id, name, lenght, diameter, material) Contacts (id, name, description, picture)
Usando uma tabela Parts-, PartTypes-, ValueTypes- e PartValues que contêm todos os valores.
PartTypes (id, name) ValueTypes (id, part_type_id, name) Parts (id, part_type_id, name) PartValues (part_id, value_type_id, value)
Qual prefere e por quê? Ou existe um melhor?
Estou preocupado com as consultas ao banco de dados. Não quero que as consultas se tornem muito lentas ou complicadas.
Atualizar
O número de tipos no banco de dados é praticamente dado e estático, pois se baseia em um padrão internacional e será aprimorado raramente.