Es seguro decir que el modelo de base de datos EAV / CR es malo. Dicho eso
Pregunta: ¿Qué modelo de base de datos, técnica o patrón debería usarse para tratar con "clases" de atributos que describen productos de comercio electrónico que se pueden cambiar en tiempo de ejecución?
En una buena base de datos de comercio electrónico, almacenará clases de opciones (como la resolución de TV y luego tendrá una resolución para cada TV, pero el siguiente producto puede no ser un TV y no tener "resolución de TV"). ¿Cómo los almacena, busca eficientemente y permite a sus usuarios configurar tipos de productos con campos variables que describen sus productos? Si el motor de búsqueda descubre que los clientes suelen buscar televisores en función de la profundidad de la consola, puede agregar la profundidad de la consola a sus campos, y luego agregar una sola profundidad para cada tipo de producto de televisión en tiempo de ejecución.
Hay una buena característica común entre las buenas aplicaciones de comercio electrónico donde muestran un conjunto de productos, luego tienen menús laterales "detallados" donde puede ver "Resolución de TV" como encabezado, y las cinco Resoluciones de TV más comunes para conjunto encontrado Hace clic en uno y solo muestra televisores de esa resolución, lo que le permite profundizar aún más seleccionando otras categorías en el menú lateral. Estas opciones serían los atributos dinámicos del producto agregados en tiempo de ejecución.
Más discusión:
En resumen, ¿hay algún enlace en Internet o descripciones de modelos que puedan arreglar "académicamente" la siguiente configuración? Agradezco a Noel Kennedy por sugerir una tabla de categorías, pero la necesidad puede ser mayor que eso. Lo describo de una manera diferente a continuación, tratando de resaltar el significado. Es posible que necesite una corrección del punto de vista para resolver el problema, o puede que necesite profundizar en el EAV / CR.
Me encanta la respuesta positiva al modelo EAV / CR. Mis colegas desarrolladores dicen lo que Jeffrey Kemp mencionó a continuación: "las nuevas entidades deben ser modeladas y diseñadas por un profesional" (fuera de contexto, lea su respuesta a continuación). El problema es:
- las entidades agregan y eliminan atributos semanalmente
(las palabras clave de búsqueda determinan los atributos futuros) - nuevas entidades llegan semanalmente
(los productos se ensamblan a partir de piezas) - las entidades antiguas desaparecen semanalmente
(archivadas, menos populares, estacionales)
El cliente desea agregar atributos a los productos por dos razones:
- departamento / búsqueda de palabras clave / tabla de comparación entre productos similares
- configuración del producto de consumo antes del pago
Los atributos deben tener importancia, no solo una búsqueda de palabras clave. Si quieren comparar todos los pasteles que tienen un "glaseado de crema batida", pueden hacer clic en pasteles, hacer clic en el tema del cumpleaños, hacer clic en el glaseado de crema batida, luego verificar todos los pasteles que sean interesantes sabiendo que todos tienen glaseado de crema batida. Esto no es específico para pasteles, solo un ejemplo.