Cos'è la normalizzazione in un database?
sobes.tech AI
Risposta dell'AI
La normalizzazione dei database è il processo di organizzazione dei dati in un database relazionale al fine di ridurre la ridondanza (duplicazione dei dati) e migliorare l'integrità dei dati. Ciò si ottiene suddividendo grandi tabelle in tabelle più piccole e definendo le relazioni tra di esse.
L'obiettivo principale della normalizzazione:
- Ridurre la ridondanza dei dati: Evitare la ripetizione delle stesse informazioni in luoghi diversi.
- Migliorare l'integrità dei dati: Garantire la precisione e la coerenza dei dati.
- Fornire flessibilità: Facilitare modifiche e ampliamenti della struttura del database.
La normalizzazione è definita da un insieme di regole chiamate forme normali. Le prime tre forme normali sono le più comuni:
-
Prima forma normale (1NF):
- Ogni colonna della tabella deve contenere valori atomici (indivisibili).
- Non ci devono essere gruppi ripetitivi di colonne.
- Ogni riga deve essere unica (tramite la chiave primaria).
-
Seconda forma normale (2NF):
- La tabella è in 1NF.
- Tutti gli attributi non chiave dipendono completamente dalla chiave primaria (se composta). Non ci sono dipendenze parziali.
-
Terza forma normale (3NF):
- La tabella è in 2NF.
- Non ci sono dipendenze transitive. Gli attributi non chiave non dipendono da altri attributi non chiave.
Esistono forme normali più alte (BCNF, 4NF, 5NF, 6NF), ma generalmente si considera che la 3NF sia sufficiente per la maggior parte degli scopi pratici.
Esempio (semplificato):
Tabella non normalizzata di ordine cliente:
| ID Ordine | Nome Cliente | Indirizzo Cliente | Prodotti | Quantità | Prezzo unitario |
|---|---|---|---|---|---|
| 101 | Ivan | Mosca | Portatile | 1 | 50000 |
| 101 | Ivan | Mosca | Mouse | 2 | 1000 |
| 102 | Maria | San Pietroburgo | Tastiera | 1 | 3000 |
Dopo la normalizzazione (ad esempio, fino alla 3NF):
Tabella Ordini:
| ID Ordine | ID Cliente | Data Ordine |
|---|---|---|
| 101 | 1 | 2023-10-26 |
| 102 | 2 | 2023-10-26 |
Tabella Clienti:
| ID Cliente | Nome Cliente | Indirizzo Cliente |
|---|---|---|
| 1 | Ivan | Mosca |
| 2 | Maria | San Pietroburgo |
Tabella Dettagli Ordine:
| ID Dettaglio Ordine | ID Ordine | ID Prodotto | Quantità | Prezzo unitario |
|---|---|---|---|---|
| 1 | 101 | 10 | 1 | 50000 |
| 2 | 101 | 20 | 2 | 1000 |
| 3 | 102 | 30 | 1 | 3000 |
Tabella Prodotti:
| ID Prodotto | Nome Prodotto |
|---|---|
| 10 | Portatile |
| 20 | Mouse |
| 30 | Tastiera |
La denormalizzazione è il processo inverso della normalizzazione, a volte utilizzato per ottimizzare le prestazioni di lettura dei dati a scapito di un aumento della ridondanza.