Mysql
 sql >> Database >  >> RDS >> Mysql

Come salvare, gestire l'importo totale dell'ordine in uno schema orderDetails?

Sì, è normale memorizzare valori precalcolati, basati su altri dati nel database, in un database. Ma non necessariamente per il motivo che citi. Non ho mai avuto problemi con MAX_JOIN_SIZE .

Il motivo principale, e probabilmente unico, per la memorizzazione dei valori calcolati è la velocità. Quindi lo fai per valori che non cambiano così spesso e che potrebbero essere utilizzati in query che utilizzano molti dati e potrebbero quindi essere troppo lenti se non li hai usati.

Ad esempio:se vuoi conoscere il valore medio di tutti gli ordini nel tuo database, la query sarebbe molto più veloce se hai già i totali degli ordini.

Perché e come aggiornare i valori dipende completamente da te. Tuttavia devi essere coerente al riguardo . Se si utilizza il pattern MVC, avrebbe senso integrarlo nel controller. O in parole povere:ogni volta che viene inviato un modulo che potrebbe modificare uno dei valori, da cui viene calcolato il valore precalcolato, è necessario ricalcolarlo.

Questa è una chiara dimostrazione in cui la "normalizzazione" non è del tutto mantenuta. Non è proprio carino, ma a volte ne vale la pena. Si potrebbe, ovviamente, sostenere che il valore calcolato rappresenta "nuove" informazioni e quindi non offende la "normalizzazione".