Normalizzazione di uno schema relazionale
Ma se i prodotti venduti con un ordine fossero di più di 2 ? Tabella che non rispetta alcuna delle forme normali (LA CHIAVE PRIMARIA E’ SOTTOLINEATA) N. ordine Data Codice Cliente Nome Cliente Città Cliente Codice Prod.1 Descriz Prod1 Q.tà Prod. 1 Prezzo Prod.1 Codice Prod.2 Descriz. Prod.2 Prezzo 82001 2/1/96 1001 Rossi CR 001 mele 100 1000 --- 82002 3/1/96 2239 Neri MI 002 uva 200 5000 40 82003 8/1/96 004 arance 30 500 Ma se i prodotti venduti con un ordine fossero di più di 2 ? Aumentare il n. delle colonne non è una buona soluzione Ridondanza (Rossi) Cosa succede se Rossi cambia indirizzo ? (anomalia nella modifica) Un cliente non esiste finché non ordina almeno un prodotto (anomalia nell’inserimento) Cosa potrebbe succedere se elimino un ordine? (anomalia nella eliminazione
Prima forma normale Una tabella si dice in prima forma normale quando: tutte le sue righe hanno lo stesso numero di attributi una colonna contiene valori tutti dello stesso tipo non esistono due righe uguali l’ordine di inserimento non conta non esistono attributi ripetuti o composti.
Tabella che non rispetta alcuna delle forme normali (LA CHIAVE PRIMARIA E’ SOTTOLINEATA) N. ordine Data Codice Cliente Nome Cliente Città Cliente Codice Prod.1 Descriz Prod1 Q.tà Prod. 1 Prezzo Prod.1 Codice Prod.2 Descriz. Prod.2 Prezzo 82001 2/1/96 1001 Rossi CR 001 mele 100 1000 --- 82002 3/1/96 2239 Neri MI 002 uva 200 5000 40 82003 8/1/96 004 arance 30 500 1 2
Tabelle in prima forma normale TABELLA ORDINI N. ordine Data Codice Cliente Nome Cliente Città Cliente 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri MI 82003 8/1/96 0112 Gialli TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q.tà Prod. Prezzo Prod. 82001 001 mele 100 1000 82002 002 uva 200 5000 40 82003 004 arance 30 500
Verso la seconda forma normale TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q.tà Prod. Prezzo Prod. 82001 001 mele 100 1000 82002 002 uva 200 5000 40 82003 004 arance 30 500 chiave multicampo il prodotto esiste solo se c’è un ordine per esso e se cambia il prezzo delle mele? e se venisse eliminato l’ordine 82003 ?
2. Almeno un campo non dipende dall'intera chiave Verso la seconda forma normale TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q.tà Prod. Prezzo Prod. 82001 001 mele 100 1000 82002 002 uva 200 5000 40 82003 004 arance 30 500 1. Chiave multi campo 2. Almeno un campo non dipende dall'intera chiave
Seconda forma normale Una tabella si dice in seconda forma normale quando: rispetta già la prima forma normale tutti gli attributi non appartenenti alla chiave dipendono dall’intera chiave
Seconda forma normale Codice Prod. Descr. Prezzo Prod. 001 002 004 ordine Data Codic Cliente Nome Città 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri MI 82003 8/1/96 0112 Gialli N. ordine Codice Prod. Q.tà Prod. 82001 001 100 82002 002 200 40 82003 004 30 Codice Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 5000 500
Verso la terza forma normale ordine Data Codic Cliente Nome Città 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri MI 82003 8/1/96 0112 Gialli cosa succede se un cliente non ha ancora fatto acquisti? e se il cliente si trasferisse in un’altra città ? e se l’unico ordine di un cliente venisse cancellato?
NomeCliente non dipende dalla chiave Verso la terza forma normale N. ordine Data Codic Cliente Nome Città 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri MI 82003 8/1/96 0112 Gialli NomeCliente non dipende dalla chiave
Terza forma normale Una tabella si dice in terza forma normale quando: rispetta già la seconda forma normale (e quindi anche la prima) tutti gli attributi non appartenenti alla chiave dipendono solo dalla chiave
Terza forma normale Codice Cliente Nome Cliente Città Cliente 1001 Rossi CR 2239 Neri MI 0112 Gialli Codice Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 5000 500 N. ordine Codice cliente Prod. Q.tà 82001 1001 001 100 82002 2239 002 200 40 82003 0112 004 30 Codice Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 5000 500
2a forma violata, perchè? la 3a no, perchè? Quali forme normali non sono rispettate? CHIAVE CHIAVE 2a forma violata, perchè? la 3a no, perchè?
Quali forme normali non sono rispettate?
Quali forme normali non sono rispettate?
Quali forme normali non sono rispettate?
La relazione che segue non è in prima forma normale, perché?? Fonte: www.studiamo.it
Ora rispetta la prima (opinabile il discorso cap…) ma ne viola altre; quali?? Fonte: www.studiamo.it
CHIAVE Fonte: www.studiamo.it
Fonte: http://www-db.deis.unibo.it/courses/SIL-B/
Fonte: http://www-db.deis.unibo.it/courses/SIL-B/
La normalizzazine non è un obbligo. Fonte: http://www-db.deis.unibo.it/courses/SIL-B/