Estamos comenzando un nuevo proyecto en el que tenemos que almacenar productos y muchos atributos de productos en una base de datos. La pila de tecnología es MS SQL 2008 y Entity Framework 4.0/LINQ para acceso a datos.Mejor patrón para almacenar atributos (producto) en SQL Server
Los productos (y la Tabla de productos) son bastante sencillos (un SKU, fabricante, precio, etc.). Sin embargo, también hay muchos atributos para almacenar con cada producto (piense en widgets industriales). Estos pueden variar desde el color hasta la (s) certificación (es) hasta el tamaño de la tubería. Cada producto puede tener diferentes atributos, y algunos pueden tener múltiplos del mismo atributo (Ej: Certificaciones).
La propuesta actual es que básicamente tendremos una tabla de pares de nombre/valor con un FK de vuelta a la identificación del producto en cada fila.
Un ejemplo de la tabla de atributos puede tener este aspecto:
ProdID AttributeName AttributeValue
123 Color Blue
123 FittingSize 1.25
123 Certification AS1111
123 Certification EE2212
123 Certification FM.3
456 Pipe 11
678 Color Red
999 Certification AE1111
...
Nota: Nombre de atributo es probable venir de una tabla de consulta o enumeración.
Así que la pregunta principal aquí es: ¿Es este el mejor patrón para hacer algo como esto? ¿Cómo será el rendimiento? Las consultas se basarán en un JOIN de la tabla de productos y atributos, y generalmente necesitan muchos WHERE para filtrar atributos específicos: la búsqueda más común será encontrar un producto basado en un conjunto de atributos conocidos/deseados.
Si alguien tiene alguna sugerencia o un patrón mejor para este tipo de datos, hágamelo saber.
Gracias! -Ed
+1, solo porque el papel vinculado es más útil que cualquier cosa escrita en esta página hasta el momento. –
Este documento ayudó, y nos dio bastante para pensar. ¡Gracias! – EdH