Tengo una duda que por más vueltas que le doy, y tras leer varias recomendaciones, no termino de convencerme de cuál sería la mejor opción.
Estoy realizando un programa de gestión para una empresa, que trabaja con multitud de productos, los cuales pertenecen a diferentes familias, por lo que aparte de tener algunas características comunes (nombre, referencia, referencia del proveedor, nivel de stock, etc.) tienen otras muy específicas que van a depender exclusivamente del tipo de producto (familia) que sean.
Me explico más detalladamente.
Tenemos un producto, caja, que aparte de los campos comunes que he comentado anteriormente, tendría que definir también su largo, ancho, alto, calidad y presentación (campos específicos).
Por otra parte, tenemos otro producto, cesta, que aparte de los comunes, tendría que definir otros campos específicos, como capacidad, material y grosor.
Y así, con muchísimos más artículos de otras familias.
La gran duda que tengo a la hora de diseñar la base de datos es:
- OPCIÓN A: Hacer una megatabla donde dar cabida a todos los productos con todos los campos necesarios (comunes + específicos), estableciendo que los específicos admitan nulos, ya que sólo tendrán información para aquellos productos que los utilicen. Aquí me pregunto también cómo implementaría la admisión de nulos, teniendo en cuenta que para algunos de esos campos sus valores estarían relacionados con otras tablas a través de clave externa. Por ejemplo, para el tipo de producto caja, que tiene el campo específico calidad, habría una tabla denominada calidades que estaría relacionada mediante clave externa, pero como he dicho, no todos los productos tendrán definida la calidad, sólo las cajas.
- OPCIÓN B: Hacer una tabla común, con todos los productos y sus campos comunes, y después una tabla para cada familia de productos, relacionadas cada una con la común a través de clave externa, y que contendrían los campos específicos para el tipo de producto en cuestión.
Esto me implica quebraderos de cabeza a la hora de implementar la creación de nuevos productos o su actualización, ya que en función del tipo debo guardar los datos en una u otra tabla, presentar los formularios al usuario en función de los campos necesarios, validar los datos enviados según el tipo de producto, etc.
¿Podéis orientarme sobre cuál opción veis mejor?
Muchas gracias.
Saludos.