🗄️ Normalizzazione DB – Riassunto Visuale

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
Aggiornamento
Cancellazione
Ridondanza
Attributi multivalore
Attributi composti

📈 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)
Chiave primaria + assenza attributi composti + assenza attributi multivalore
2FN

Seconda Forma Normale

Definizione formale
Una tabella è in 2NF se:
  • ✅ È già in 1NF
  • ✅ Ogni attributo non-chiave dipende dall'intera chiave primaria
    (non solo da una sua parte)

⚠️ Se la chiave primaria ha un solo attributo 1FN→ 2NF automatica.

Se NON in 2NF:
  • Per ogni dipendenza parziale: Nuova tabella con parte di chiave + attributi dipendenti
  • Tabella originale: chiave + solo attributi dipendenti dall'intera chiave
1NF + No dipendenze parziali
3FN

Terza Forma Normale

Definizione formale
Una tabella è in 3NF se:
  • ✅ È già in 2NF
  • ✅ Ogni attributo non-chiave dipende direttamente dalla chiave primaria
    (non da altri attributi non-chiave)
Se NON in 3NF:
  • Per ogni dipendenza transitiva: Nuova tabella con attributo non-chiave + attributi che da esso dipendono
  • Nella tabella originale: rimuovi attributi spostati, tieni la chiave esterna
2NF + No dipendenze transitive

🔀 Flusso di normalizzazione

Tabella grezzaChiave primaria? Attributi composti? / Multivalore?
⬇ Risolvi
1NFDipendenze parziali?
⬇ Risolvi
2NFDipendenze transitive?
⬇ Risolvi
3NF ✓ Problemi risolti!