Cos'è la normalizzazione?
sobes.tech AI
Risposta dell'AI
La normalizzazione dei dati nel contesto dei database è il processo di organizzare i dati per ridurre la ridondanza e migliorare l'integrità dei dati. Si ottiene dividendo grandi tabelle in tabelle più piccole e collegandole.
Obiettivo principale:
- Eliminare la duplicazione dei dati.
- Migliorare l'integrità dei dati (evitare anomalie di inserimento, aggiornamento e cancellazione).
- Aumentare l'efficienza dello storage e delle query (in alcuni casi).
Il processo di normalizzazione si basa sui principi delle forme normali (FN). Le più comuni sono:
- Prima forma normale (1FN): Atomicità dei dati nelle celle, assenza di gruppi ripetitivi di colonne.
- Seconda forma normale (2FN): È in 1FN e ogni attributo non chiave dipende completamente da tutto la chiave primaria.
- Terza forma normale (3FN): È in 2FN e non ci sono dipendenze funzionali transitive di attributi non chiave dalla chiave primaria attraverso altri attributi non chiave.
Esempio:
Tabella originale "Ordini_Prodotti":
| ID Ordine | Data Ordine | ID Prodotto | Nome del Prodotto | Prezzo del Prodotto | Quantità | Nome Cliente | Indirizzo Cliente |
|---|---|---|---|---|---|---|---|
| 1 | 2023-10-27 | 101 | Telefono | 500 | 1 | Ivan Pétrov | Via Pushkina, 10 |
| 1 | 2023-10-27 | 102 | Cuffie | 100 | 2 | Ivan Pétrov | Via Pushkina, 10 |
| 2 | 2023-10-27 | 101 | Telefono | 500 | 1 | Maria Ivanova | Via Lermontova, 5 |
Dopo normalizzazione (fino a 3FN):
Tabella "Ordini":
| ID Ordine | Data Ordine | ID Cliente |
|---|---|---|
| 1 | 2023-10-27 | 1 |
| 2 | 2023-10-27 | 2 |
Tabella "Righe di Ordine":
| ID Riga | ID Ordine | ID Prodotto | Quantità |
|---|---|---|---|
| 1 | 1 | 101 | 1 |
| 2 | 1 | 102 | 2 |
| 3 | 2 | 101 | 1 |
Tabella "Prodotti":
| ID Prodotto | Nome del Prodotto | Prezzo del Prodotto |
|---|---|---|
| 101 | Telefono | 500 |
| 102 | Cuffie | 100 |
Tabella "Clienti":
| ID Cliente | Nome del Cliente | Indirizzo del Cliente |
|---|---|---|
| 1 | Ivan Pétrov | Via Pushkina, 10 |
| 2 | Maria Ivanova | Via Lermontova, 5 |
Tuttavia, una normalizzazione eccessiva può portare ad un aumento del numero di join (JOIN) durante le query, il che può ridurre le prestazioni. Pertanto, nella progettazione di database, si cerca spesso un equilibrio tra il grado di normalizzazione e le prestazioni. La denormalizzazione è il processo di violare intenzionalmente le forme normali per migliorare le prestazioni, di solito aggiungendo ridondanza.