Normalizzazione di uno schema relazionale Tabella che non
Normalizzazione di uno schema relazionale
Tabella che non rispetta alcuna delle forme normali (LA CHIAVE PRIMARIA E’ SOTTOLINEATA) Data Codice Cliente Nome Cliente Città Cliente Codice Prod. 1 Descriz 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri 82003 8/1/96 1001 Rossi N. ordine Prod 1 Q. tà Prod. 1 Prezzo Prod. 1 Codice Prod. 2 Descriz. Prod. 2 Q. tà Prod. 2 Prezzo Prod. 2 001 mele 1000 --- --- MI 002 uva 200 5000 001 mele 40 1000 CR 002 uva 100 5000 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) Data Codice Cliente Nome Cliente Città Cliente Codice Prod. 1 Descriz 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri 82003 8/1/96 1001 Rossi N. ordine Prod 1 Q. tà Prod. 1 Prezzo Prod. 1 Codice Prod. 2 Descriz. Prod. 2 Q. tà Prod. 2 Prezzo Prod. 2 001 mele 1000 --- --- MI 002 uva 200 5000 001 mele 40 1000 CR 002 uva 100 5000 004 arance 30 500
Tabelle in prima forma normale TABELLA ORDINI N. ordine Data Codice Nome Città Cliente 82001 2/1/96 1001 Rossi CR 82002 3/1/96 2239 Neri MI 82003 8/1/96 0112 Gialli MI TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q. tà Prod. Prezzo Prod. 82001 mele 1000 82002 uva 200 5000 82002 001 mele 40 1000 82003 002 uva 100 5000 82003 004 arance 30 500
Verso la seconda forma normale TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q. tà Prod. Prezzo Prod. 82001 mele 1000 82002 uva 200 5000 82002 001 mele 40 1000 82003 002 uva 100 5000 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 ?
Verso la seconda forma normale TABELLA DETTAGLI ORDINI N. ordine Codice Prod. Descr. Q. tà Prod. Prezzo Prod. 82001 mele 1000 82002 uva 200 5000 82002 001 mele 40 1000 82003 002 uva 100 5000 82003 004 arance 30 500
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 N. ordine Data Codic 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 MI N. ordine Codice Prod. Q. tà Prod. 82001 100 82002 200 82002 001 40 82003 002 100 82003 004 30 Codice Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 500
Verso la terza forma normale N. ordine Data Codic 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 MI • 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?
Verso la terza forma normale N. ordine Data Codic 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 MI
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 Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 500 N. ordine Codice cliente Codice Prod. Q. tà Prod. 82001 1001 100 82002 2239 002 200 82002 2239 001 40 82003 0112 002 100 82003 0112 004 30 Codice Cliente Nome Cliente Città Cliente 1001 Rossi CR 2239 Neri MI 0112 Gialli MI Codice Prod. Descr. Prezzo Prod. 001 002 004 mele uva arance 1000 500
Quali forme normali non sono rispettate? CHIAVE
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/
Fonte: http: //www-db. deis. unibo. it/courses/SIL-B/
- Slides: 31