Sim, é normal armazenar valores pré-calculados, baseados em outros dados do banco de dados, em um banco de dados. Mas não necessariamente pelo motivo que você mencionou. Nunca tive problemas com
MAX_JOIN_SIZE
. A principal e provavelmente única razão para armazenar valores calculados é a velocidade. Então você faz isso para valores que não mudam com tanta frequência e que podem ser usados em consultas que usam muitos dados e, portanto, podem ser muito lentos se você não os usar.
Por exemplo:Se você quiser saber o valor médio de todos os pedidos em seu banco de dados, a consulta será muito mais rápida se você já tiver os totais dos pedidos.
Por que e como você atualiza os valores depende completamente de você. No entanto, você precisa ser consistente com isso . Se você usar o padrão MVC, faria sentido integrá-lo no controlador. Ou em termos simples:Sempre que for submetido um formulário que possa alterar um dos valores, a partir do qual é calculado o valor pré-calculado, é necessário recalculá-lo.
Esta é uma demonstração clara onde a 'normalização' não é totalmente mantida. Não é muito bonito, mas às vezes vale a pena. Você poderia, é claro, argumentar que o valor calculado representa informações 'novas' e, portanto, não ofende a 'normalização'.