Normalizzazione

La normalizzazione di una base di dati assicura il rispetto di regole all’interno della base di dati stessa.

In pratica, consideriamo gli schemi di relazione prodotti nella fase di progettazione logica e controlliamo che essi rispettino certi requisiti.

Esistono diversi livelli di normalizzazione:

  1. prima forma normale (1NF)
  2. seconda forma normale (2NF)
  3. terza forma normale (3NF)

Prima forma normale (1NF)

Una relazione si dice in prima forma normale (1NF) se e solo se rispetta entrambi questi requisiti:

Se una base di dati è stata costruita seguendo le regole di progettazione concettuale e logica già studiate, è certo che essa sia già in prima forma normale.

Seconda forma normale (2NF)

Una relazione si dice in seconda forma normale (2NF) se e solo se rispetta entrambi questi requisiti:

Per normalizzare, si procede in questo modo:

  1. nello schema di relazione originario rimangono la chiave primaria e gli eventuali attributi non chiave completamente dipendenti da essa
  2. si crea un nuovo schema di relazione per ogni parte di chiave primaria da cui dipendono completamente altri attributi non chiave

Si consideri, ad esempio, la seguente base di dati, in cui la chiave primaria è (nomeProgetto, cognome):

cognome stipendio nomeProgetto budget ruolo
Rossi 2 biella 300 tecnico
Verdi 3 valvola 500 progettista
Verdi 3 albero 1500 progettista
Neri 7 albero 1500 direttore
Neri 7 valvola 500 consulente
Neri 7 biella 300 consulente
Mori 6 biella 300 direttore
Bianchi 6 biella 300 progettista
Mori 6 albero 1500 progettista
Bianchi 6 albero 1500 progettista

Notiamo che:

Se lasciassimo la base di dati così com’è, ci sarebbero dei problemi nelle fasi di:

Per risolvere il problema, possiamo decomporre lo schema di relazione precedente nei seguenti tre schemi:

Nota che il risultato ottenuto sarebbe stato frutto di una corretta traduzione del seguente diagramma ER: Diagramma ER Infatti, nella stragrande maggioranza dei casi, una buona fase di progettazione concettuale porta a schemi di relazione che già rispettano la seconda forma normale.

Terza forma normale (3NF)

Una relazione si dice in terza forma normale (3NF) se e solo se rispetta entrambi questi requisiti:

Per normalizzare, si procede in questo modo:

  1. nello schema di relazione originario rimangono la chiave primaria e gli eventuali attributi non chiave direttamente dipendenti da essa
  2. si crea un nuovo schema di relazione per ogni attributo da cui dipendono direttamente altri attributi non chiave

Ad esempio, consideriamo il seguente schema di relazione:

Tragitto(bici, cittadino, km, utilizzo, tipo_bici, fornitore_bici)

In cui:

Si può constatare che lo schema di relazione è in 1NF. Trasformandolo in 2NF, otteniamo:

Tragitto(bici, cittadino, km)
Bici(bici, tipo_bici, fornitore_bici)
Uso(cittadino, utilizzo)

Lo schema ottenuto è in 2NF, ma non in 3NF, poiché l’attributo fornitore_bici non dipende direttamente dalla chiave bici. Bisogna quindi creare un nuovo schema di relazione, in cui fornitore_bici dipenda direttamente dalla chiave tipo_bici:

Tragitto(bici, cittadino, km)
Bici(bici, tipo_bici)
Tipo(tipo_bici, fornitore_bici)
Uso(cittadino, utilizzo)

Tutti gli schemi di relazione ottenuti sono ora in 3NF.