Sobes.tech
Middle

Cosa sono la normalizzazione e la denormalizzazione nel contesto del lavoro con i database?

sobes.tech AI

Risposta dell'AI

La normalizzazione è il processo di organizzazione dei dati in un database per ridurre la ridondanza e migliorare l'integrità dei dati. La denormalizzazione è il processo di aggiunta di dati ridondanti nel database per migliorare le prestazioni delle query.

Normalizzazione:

  • Principi: Eliminazione di gruppi ripetitivi, dipendenze tra attributi non correlati.
  • Forme di normalizzazione (principali):
    • 1NF (Prima forma normale): Valori atomici nelle colonne, assenza di gruppi ripetitivi.
    • 2NF (Seconda forma normale): In 1NF + assenza di dipendenze parziali.
    • 3NF (Terza forma normale): In 2NF + assenza di dipendenze transitive.
    • Forma normale di Boyce-Codd (BCNF): versione più rigorosa di 3NF.
  • Vantaggi:
    • Riduzione della ridondanza dei dati (risparmio di spazio).
    • Miglioramento della coerenza dei dati.
    • Semplificazione della modifica dei dati (inserimenti, aggiornamenti, eliminazioni).
  • Svantaggi:
    • Aumento del numero di tabelle.
    • Necessità di unire le tabelle per ottenere informazioni complete (JOIN), il che può ridurre le prestazioni delle query.

Denormalizzazione:

  • Principi: Violazione consapevole delle regole di normalizzazione per accelerare la lettura dei dati.
  • Tecniche tipiche:
    • Duplicazione dei dati (ad esempio, memorizzare il nome del prodotto nella tabella degli ordini).
    • Unione di tabelle.
    • Calcolo preventivo di valori aggregati.
  • Vantaggi:
    • Aumenta le prestazioni delle query (specialmente SELECT).
    • Riduce il numero di JOIN.
    • Può essere utile per report e sistemi OLAP.
  • Svantaggi:
    • Aumento della ridondanza dei dati (perdita di spazio).
    • Rischio di incoerenza dei dati.
    • Complicazione delle modifiche dei dati (necessità di aggiornare i dati in più punti).

La scelta tra normalizzazione e denormalizzazione dipende dalla specificità dell'applicazione, dalle priorità (integrità dei dati o prestazioni) e dalla natura delle query. Normalmente si applica la normalizzazione ai sistemi OLTP (transazioni online) e la denormalizzazione ai sistemi OLAP (elaborazione analitica) o in aree critiche di prestazioni OLTP.