Utilizaré el complemento jQuery para presentar al usuario una interfaz agradable¿Qué es una forma mantenible de guardar "calificación por estrellas" en una base de datos?
La solicitud es mostrar 5 estrellas, hasta un puntaje total de 10 (2 puntos por estrella).
Por ahora pensado en utilizar 7/10
como un formato para ese valor, pero lo que si en algún momento en el futuro voy a recibir una petición como
Nos gustaría dar a los usuarios más opciones, vamos a aumentar la puntuación total a 20 (de modo que cada estrella contribuye con un máximo de 4 puntos)
voy a terminar con una mesa con una mezcla de valores de la columna "categoría": algunos serán como 7/10
mientras que otros ser como 14/20
.
¿Está bien que tenga esta diferencia en la base de datos y la trate en la capa lógica para que sea coherente? ¿O se prefiere de otra manera para que consultar la tabla no dé lugar a resultados inconsistentes fuera de la aplicación?
Tal vez los valores de punto flotante podrían ayudarme, ¿es mejor almacenar ese valor como un número menor o igual a uno? Por lo tanto, en cada uno de los dos ejemplos, el valor resultante almacenado en la base de datos sería 0,7
, como un número, no como un varchar, que también se puede consultar fuera de la aplicación.
¿Qué opinas?
Kiss siempre tiende a escabullirse cuando busco una solución, gracias. –
Creo que esta es la mejor opción, solo guárdela como 'tinyint' 1..5. Si los requisitos cambian en el futuro, es una secuencia de comandos de cinco minutos para actualizar todos los datos existentes a la nueva escala. Y si los requisitos * no * cambian (lo que probablemente sea más probable), entonces no ha perdido el tiempo implementando algo sin ningún beneficio. Además, si los requisitos cambian, es poco probable que cambien en la forma esperada;) –
@codeka: nice point –