¿Cuál es el mejor enfoque para almacenar calificaciones de productos en una base de datos? Tengo en mente los siguientes dos escenarios (simplificados, y asumiendo un MySQL db):¿Cómo modelo las calificaciones de productos en la base de datos?
Cree dos columnas en la tabla de productos para almacenar el número y la suma de todos los votos, respectivamente. Use las columnas para obtener un promedio en tiempo de ejecución o usando una consulta.
Este enfoque significa que solo necesito acceder a una mesa, simplificando las cosas.
Normalice los datos creando una tabla adicional para almacenar las clasificaciones.
Esto aísla los datos de clasificación en una tabla separada, dejando la tabla de productos para proporcionar datos sobre los productos disponibles. Aunque requeriría una combinación o una consulta separada para clasificaciones.
¿Qué enfoque es el mejor, normalizado o desnormalizado?
Gracias Alec, tu enfoque tiene más sentido. Pero también tengo que pensar en cómo integrarlo mejor con una revisión de usuario.Entonces, no solo un usuario puede calificar un producto, sino que también puede dejar un comentario. Creo que puedo convertir la tabla de calificaciones en una tabla de reseñas ... esencialmente solo extenderé su funcionalidad. Gracias – Mohamad
Se me acaba de ocurrir un problema con este enfoque: si lo convierto en una tabla de "reseñas", entonces la mayoría de los usuarios solo votarán y no necesariamente agregarán una revisión. Esto dejará muchas celdas vacías en una tabla donde deberían ir el título de revisión y el texto de revisión. ¿Es esto un problema? – Mohamad
@Mel: con el enfoque anterior, también debe crear una tabla de revisiones separada y usar una combinación, de la misma manera que con las calificaciones. Entonces, su consulta típica buscaría el producto, sus calificaciones y sus revisiones. – Tom