Да, нормално е да се съхраняват предварително изчислени стойности, базирани на други данни в базата данни, в база данни. Но не непременно поради причината, която споменавате. Никога не съм имал проблем с MAX_JOIN_SIZE
.
Основната и вероятно единствена причина за съхраняване на изчислените стойности е скоростта. Така че го правите за стойности, които не се променят толкова често и които може да се използват в заявки, които използват много данни и следователно може да са твърде бавни, ако не ги използвате.
Например:Ако искате да знаете средната стойност на всички поръчки във вашата база данни, заявката ще бъде много по-бърза, ако вече имате общите суми на поръчките.
Защо и как да актуализирате стойностите зависи изцяло от вас. Въпреки това трябва да сте последователни в това . Ако използвате модела MVC, би имало смисъл да го интегрирате в контролера. Или казано по-просто:Всеки път, когато бъде изпратен формуляр, който може да промени една от стойностите, от които се изчислява предварително изчислената стойност, трябва да го изчислите отново.
Това е ясна демонстрация, когато „нормализирането“ не се поддържа напълно. Не е наистина красиво, но понякога си заслужава. Можете, разбира се, да спорите, че изчислената стойност представлява „нова“ информация и следователно не нарушава „нормализирането“.