Estoy desarrollando una herramienta que maneja piezas (eléctricas). Las partes se pueden crear, ver, modificar, eliminar, agrupar, etc.
Para que esta pregunta sea útil para futuros visitantes, me gusta mantener esta pregunta universal ya que administrar partes en un DB es muy común, sin importar qué partes estén en el DB (CD, autos, comida, estudiantes, ...).
Estoy pensando en 3 diseños diferentes de DB:
Usar una tabla de partes y tablas derivadas para atributos de parte especializados.
Parts (id, part_type_id, name) PartTypes (id, name) Wires (id, part_id, lenght, diameter, material) Contacts (id, part_id, description, picture)Utilizando solo tablas de piezas especializadas.
Wires (id, name, lenght, diameter, material) Contacts (id, name, description, picture)Usando una tabla Parts-, PartTypes-, ValueTypes- y PartValues que contiene todos los valores.
PartTypes (id, name) ValueTypes (id, part_type_id, name) Parts (id, part_type_id, name) PartValues (part_id, value_type_id, value)
¿Cuál preferir y por qué? ¿O hay uno mejor?
Estoy preocupado por las consultas DB. No quiero que las consultas se vuelvan demasiado lentas o complicadas.
Actualizar
El número de tipos en la base de datos es bastante dado y estático, ya que se basa en un estándar internacional y rara vez se mejorará.