Tak, przechowywanie w bazie danych wstępnie obliczonych wartości na podstawie innych danych w bazie danych jest normalne. Ale niekoniecznie z powodu, o którym wspomniałeś. Nigdy nie miałem problemu z MAX_JOIN_SIZE
.
Głównym i prawdopodobnie jedynym powodem przechowywania obliczonych wartości jest prędkość. Robisz to więc dla wartości, które nie zmieniają się tak często i które mogą być używane w zapytaniach, które wykorzystują dużo danych i dlatego mogą być zbyt wolne, jeśli ich nie używasz.
Na przykład:Jeśli chcesz poznać średnią wartość wszystkich zamówień w Twojej bazie danych, zapytanie będzie znacznie szybsze, jeśli masz już sumy zamówień.
Dlaczego i jak aktualizujesz wartości, zależy wyłącznie od Ciebie. Jednak musisz być konsekwentny . Jeśli użyjesz wzorca MVC, sensowne byłoby zintegrowanie go z kontrolerem. Lub w uproszczeniu:za każdym razem, gdy przesyłany jest formularz, który może zmienić jedną z wartości, z których obliczana jest wstępnie obliczona wartość, należy ją ponownie obliczyć.
Jest to wyraźna demonstracja, w której „normalizacja” nie jest całkowicie zachowana. To nie jest naprawdę ładne, ale czasami warto. Można oczywiście argumentować, że obliczona wartość reprezentuje „nowe” informacje, a zatem nie jest sprzeczna z „normalizacją”.