Oui, il est normal de stocker des valeurs pré-calculées, basées sur d'autres données de la base de données, dans une base de données. Mais pas nécessairement pour la raison que vous mentionnez. Je n'ai jamais eu de problème avec MAX_JOIN_SIZE
.
La principale, et probablement la seule, raison du stockage des valeurs calculées est la vitesse. Vous le faites donc pour des valeurs qui ne changent pas souvent et qui peuvent être utilisées dans des requêtes qui utilisent beaucoup de données et peuvent donc être trop lentes si vous ne les utilisez pas.
Par exemple :si vous souhaitez connaître la valeur moyenne de toutes les commandes de votre base de données, la requête serait beaucoup plus rapide si vous disposiez déjà du total des commandes.
Pourquoi et comment vous mettez à jour les valeurs dépend entièrement de vous. Cependant vous devez être cohérent à ce sujet . Si vous utilisez le modèle MVC, il serait judicieux de l'intégrer dans le contrôleur. Ou en termes simples :chaque fois qu'un formulaire est soumis qui pourrait modifier l'une des valeurs, à partir desquelles la valeur précalculée est calculée, vous devez la recalculer.
C'est une démonstration claire où la « normalisation » n'est pas entièrement maintenue. Ce n'est pas vraiment joli, mais ça vaut parfois le coup. Vous pourriez, bien sûr, affirmer que la valeur calculée représente de "nouvelles" informations et n'enfreint donc pas la "normalisation".