Comunidad de diseño web y desarrollo en internet online

Diseño tabla productos

Citar            
MensajeEscrito el 22 Abr 2017 06:30 pm
Buenas tardes.

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.

Por annx10

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Abr 2017 02:32 pm
Todos los ecommerce hacen lo siguiente: tabla de productos con lo que sea común a todos y tabla de propiedades, con pares de nombre/valor en relación uno a muchos desde la tabla de productos. Así las propiedades secundarias de un zapato pueden ser talle y material, mientras que las propiedades secundarias de un cuaderno son cantidad de hojas y tipo de hoja
De las opciones que decís, iría por el lado de la B

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 May 2017 09:18 pm
Hola, Jorge.

El problema que yo le veo a ese sistema es ¿cómo defines en la base de datos el campo valor?
Como bien comentas, para zapatos por ejemplo y teniendo en cuenta la propiedad secundaria "material", estaríamos hablando de valores como cuero, plástico, tela, etc., que podríamos definirlos mediante un varchar, pero cuando hablemos por ejemplo de cuadernos, al definir la propiedad secundaria "nº de hojas" estaríamos hablando de un integer, con lo cual, ¿qué tipo le ponemos bajo este sistema?
El campo valor se utilizará para todas las propiedades secundarias de todos los productos y por tanto las combinaciones son múltiples. Necesito guardar propiedades con decimales, números enteros, varchar, char, etc.
Eso sin contar para aquellos casos que me interesara que ese campo valor estuviera relacionado con otra tabla mediante clave foránea, de la cual obtener sus posibles valores.

Por annx10

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 May 2017 12:14 pm
Se usa siempre string y después se convierte en el cliente según necesites

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 12 May 2017 08:26 am
No termina de convencerme esa manera de gestionar las características de los artículos, pero igualmente te agradezco la aportación, Jorge.

Saludos.

Por annx10

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.