Dal caos della tabella non normalizzata a 5 tabelle in 3NF.
Scopo: eliminare ridondanza e anomalie (inserimento, aggiornamento, cancellazione).
La Normalizzazione è un procedimento formato da tre passaggi ognuno dei quali testa e migliora il database ed è prerequisito del passaggio susccessivo.
🔴 Tabella NON normalizzata: esempio
Tabella Ordini (non normalizzata)
CodiceOrdine
DataOrdine
Cliente
IndirizzoCliente
Prodotti
Quantità
PrezzoUnitario
Venditore
ORD001
2024-01-15
Mario Rossi
Via Roma 10, Milano
Laptop Mouse Tastiera
1 2 1
1200 18 35
Giulia Bianchi
ORD002
2024-01-16
Mario Rossi
Via Roma 10, Milano
Monitor
1
150
Giulia Bianchi
ORD003
2024-01-17
Anna Verdi
Via Dante 5, Roma
Laptop Cuffie
2 2
1200 50
Marco Neri
Questa tabella viola già la 1NF: contiene attributi composti (Cliente, IndirizzoCliente, Venditore) e attributi multivalore (Prodotti, Quantità, PrezzoUnitario).
🔴 Problemi di una tabella NON normalizzata
Inserimento
Non posso inserire un cliente se non ha effettuato almeno un ordine.
Aggiornamento
Devo modificare tutte le righe ripetute; se un utente ha effettuato 3 ordini, i dati dell'utente sono ripetuti 3 volte e quindi un'eventuale modifica di un dato dell'utente andrebbe ripetuto per tre righe con possibili errori ed inconsistenze.
Cancellazione
Se cancello l'unico ordine di un cliente, perdo i dati del cliente.
Ridondanza
Stessi dati ripetuti in più righe: spreco di spazio e aumento del rischio di errori.
Attributi multivalore
Più valori in una singola cella: ricerche e conteggi risultano estremamente complessi da implementare.
Attributi composti
Attributi che racchiudono più informazioni (es. nome e cognome insieme): cercare o ordinare per una singola parte dell'informazione è molto più complesso (cercare ad esempio gli ordini di tutti i clienti con cognome Rossi).
📈 Procedimento: 1NF → 2NF → 3NF
1
Verifica forma normale corrente
Se fallisce → Verifica la forma normale corrente → se fallisce, scomponi le colonne che sono attributi composti, crea nuove tabelle → verifica le tabelle ottenute → passa alla forma successiva. → passa alla forma successiva
Le Tre Forme Normali
1FN
Prima Forma Normale
Definizione formale
Una tabella è in 1NF se:
✅ Non ci sono attributi composti (valori atomici)
✅ Non ci sono attributi multivalore
✅ Esiste una chiave primaria che identifica univocamente ogni riga
Se NON in 1NF:
Scomponi attributi composti in colonne separate
Crei tabella separata per attributi multivalore (una riga per ogni valore dell'attributo)