Un database di grandi dimensioni definito come un'unica relazione può comportare la duplicazione dei dati. Questa ripetizione dei dati può comportare:
- Rendere le relazioni molto grandi.
- Non è facile mantenere e aggiornare i dati poiché comporterebbe la ricerca di molti record in relazione.
- Spreco e scarso utilizzo dello spazio su disco e delle risorse.
- Aumenta la probabilità di errori e incoerenze.
Quindi, per gestire questi problemi, dovremmo analizzare e scomporre le relazioni con dati ridondanti in relazioni più piccole, più semplici e ben strutturate che soddisfino le proprietà desiderabili. La normalizzazione è un processo di scomposizione delle relazioni in relazioni con meno attributi.
Cos'è la normalizzazione?
- La normalizzazione è il processo di organizzazione dei dati nel database.
- La normalizzazione viene utilizzata per ridurre al minimo la ridondanza da una relazione o un insieme di relazioni. Viene anche utilizzato per eliminare caratteristiche indesiderate come anomalie di inserimento, aggiornamento e cancellazione.
- La normalizzazione divide la tabella più grande in tabelle più piccole e le collega utilizzando le relazioni.
- La forma normale viene utilizzata per ridurre la ridondanza dalla tabella del database.
Perché abbiamo bisogno della normalizzazione?
La ragione principale per normalizzare le relazioni è eliminare queste anomalie. La mancata eliminazione delle anomalie porta alla ridondanza dei dati e può causare l'integrità dei dati e altri problemi man mano che il database cresce. La normalizzazione consiste in una serie di linee guida che aiutano a guidarti nella creazione di una buona struttura del database.
Le anomalie nella modifica dei dati possono essere classificate in tre tipi:
Tipi di forme normali:
La normalizzazione funziona attraverso una serie di fasi chiamate Forme normali. Le forme normali si applicano alle relazioni individuali. La relazione si dice in forma normale particolare se soddisfa i vincoli.
Di seguito sono riportati i vari tipi di forme normali:
Forma normale | Descrizione |
---|---|
1NF | Una relazione è in 1NF se contiene un valore atomico. |
2NF | Una relazione sarà in 2NF se è in 1NF e tutti gli attributi non chiave sono pienamente funzionali e dipendono dalla chiave primaria. |
3NF | Una relazione sarà in 3NF se è in 2NF e non esiste alcuna dipendenza di transizione. |
BCNF | Una definizione più forte di 3NF è nota come forma normale di Boyce Codd. |
4NF | Una relazione sarà in 4NF se è nella forma normale di Boyce Codd e non ha dipendenze multivalore. |
5NF | Una relazione è in 5NF. Se è in 4NF e non contiene alcuna dipendenza dall'unione, l'unione dovrebbe avvenire senza perdite. |
Vantaggi della normalizzazione
- La normalizzazione aiuta a ridurre al minimo la ridondanza dei dati.
- Maggiore organizzazione complessiva del database.
- Coerenza dei dati all'interno del database.
- Progettazione di database molto più flessibile.
- Rafforza il concetto di integrità relazionale.
Svantaggi della normalizzazione
- Non è possibile iniziare a costruire il database prima di sapere di cosa ha bisogno l'utente.
- Le prestazioni peggiorano quando si normalizzano le relazioni con forme normali più elevate, ovvero 4NF, 5NF.
- È molto dispendioso in termini di tempo ed è difficile normalizzare relazioni di livello superiore.
- Una scomposizione imprudente può portare a una cattiva progettazione del database, con conseguenti seri problemi.