Sí, es normal almacenar valores precalculados, basados en otros datos de la base de datos, en una base de datos. Pero no necesariamente por la razón que mencionas. Nunca tuve un problema con MAX_JOIN_SIZE
.
La razón principal, y probablemente la única, para almacenar valores calculados es la velocidad. Entonces, lo hace para valores que no cambian tan a menudo y que pueden usarse en consultas que usan una gran cantidad de datos y, por lo tanto, pueden ser demasiado lentos si no los usa.
Por ejemplo:si desea conocer el valor promedio de todos los pedidos en su base de datos, la consulta sería mucho más rápida si ya tiene los totales de los pedidos.
Por qué y cómo actualizar los valores depende completamente de usted. Sin embargo tienes que ser consistente al respecto . Si usa el patrón MVC, tendría sentido integrarlo en el controlador. O en términos simples:cada vez que se envía un formulario que podría cambiar uno de los valores, a partir del cual se calcula el valor precalculado, debe volver a calcularlo.
Esta es una clara demostración de que la 'normalización' no se mantiene del todo. No es realmente bonito, pero a veces vale la pena. Por supuesto, podría argumentar que el valor calculado representa información 'nueva' y, por lo tanto, no infringe la 'normalización'.