Oracle
 sql >> Database >  >> RDS >> Oracle

È davvero meglio usare tabelle normalizzate?

Dipende... l'unione di tabelle è intrinsecamente più lenta dell'avere una tabella grande che è "pre-unita", cioè denormalizzata. Tuttavia, denormalizzando creerai una duplicazione dei dati e le tue tabelle saranno più grandi. La normalizzazione è vista come una buona cosa, perché crea database in grado di rispondere a "qualsiasi" domanda, se eseguita correttamente puoi creare una selezione per ottenere i tuoi dati. Questo non è il caso in alcune altre forme di DB, e quelle ora sono (per lo più) irrilevanti storici, il DB normalizzato/relazione ha vinto quella battaglia.

Tornando alla tua domanda, usare la denormalizzazione per far andare le cose più velocemente è una tecnica ben accettata. Normalmente è meglio eseguire il database per un po' in modo da sapere cosa denormalizzare e cosa lasciare da solo, ed è anche comune lasciare i dati nella loro forma normalizzata "corretta" e inserire i dati in una serie di rapporti denormalizzati tabelle a intervalli regolari. Se tale processo viene eseguito come parte dell'esecuzione del rapporto stesso, anche i dati sono sempre aggiornati.

Come esempio di sovranormalizzazione, in passato ho visto DB in cui i giorni della settimana e i mesi dell'anno sono stati estratti in tabelle separate - le date stesse sono state normalizzate - puoi andare troppo oltre.