Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich den Gesamtbetrag der Bestellung in einem Schema "orders, ordersDetails" speichern und handhaben?

Ja, es ist normal, vorberechnete Werte, basierend auf anderen Daten in der Datenbank, in einer Datenbank zu speichern. Aber nicht unbedingt aus dem von dir genannten Grund. Ich hatte nie ein Problem mit MAX_JOIN_SIZE .

Der wichtigste und wahrscheinlich einzige Grund für das Speichern berechneter Werte ist die Geschwindigkeit. Sie tun dies also für Werte, die sich nicht so oft ändern und die möglicherweise in Abfragen verwendet werden, die viele Daten verwenden und daher möglicherweise zu langsam sind, wenn Sie sie nicht verwenden.

Zum Beispiel:Wenn Sie den Durchschnittswert aller Bestellungen in Ihrer Datenbank wissen möchten, wäre die Abfrage viel schneller, wenn Sie bereits die Bestellsummen haben.

Warum und wie Sie die Werte aktualisieren, liegt ganz bei Ihnen. Allerdings muss man dabei konsequent sein . Wenn Sie das MVC-Muster verwenden, wäre es sinnvoll, es in die Steuerung zu integrieren. Oder vereinfacht gesagt:Immer wenn ein Formular gesendet wird, das einen der Werte ändern könnte, aus denen der vorberechnete Wert berechnet wird, müssen Sie ihn neu berechnen.

Dies ist ein klarer Beweis dafür, dass die „Normalisierung“ nicht vollständig aufrechterhalten wird. Es ist nicht wirklich schön, aber manchmal lohnt es sich. Man könnte natürlich argumentieren, dass der errechnete Wert „neue“ Informationen darstellt und somit nicht gegen die „Normalisierung“ verstößt.