Slide da Iis Altiero Spinelli su Normalizzazione di Basi di Dati. Il Pdf, adatto per lo studio universitario di Informatica, spiega concetti come le forme normali, la dipendenza funzionale e la prima forma normale (1NF), con esempi pratici.
Mostra di più40 pagine
Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Normalizzazione
di Basi di Dati
Prof. Francesco Accarino
IIS Altiero Spinelli
via Leopardi 132 Sesto San Giovanni
Procedura che permette di trasformare
schemi non normalizzati in schemi che
soddisfano una forma normale (i.e.,
normalizzati)
• La normalizzazione va utilizzata come
tecnica di verifica dei risultati della
progettazione di una base di dati
Non è una metodologia di progettazione
Impiegato
Stipendio
Progetto
Bilancio
Funzione
Rossi
20
Marte
2
Verdi
35
Giove
15
Verdi
35
Venere
15
Neri
55
Venere
15
Neri
55
Giove
15
Neri
55
Marte
2
Mori
48
Marte
2
Mori
48
Venere
15
Bianchi
48
Venere
15
Bianchi
48
Giove
15
tecnico
progettista
progettista
direttore
consulente
consulente
direttore
progettista
progettista
direttore
Lo stipendio di ciascun impiegato è ripetuto in tutti i
records
o Ridondanza
Se lo stipendio di un impiegato varia, è necessario
andarne a modificare il valore in diverse ennuple
0
anomalia di aggiornamento
Se un impiegato interrompe la partecipazione a tutti i
progetti,dobbiamo cancellarlo
0
anomalia di cancellazione
- Un nuovo impiegato senza progetto non può essere
inserito
0
anomalia di inserimento
abbiamo usato un'unica relazione per
rappresentare informazioni eterogenee
gli impiegati con i relativi stipendi
a i progetti con i relativi bilanci
o le partecipazioni degli impiegati ai progetti con le
relative funzioni
Il processo di normalizzazione (proposto da Codd)
sottopone uno schema di relazione a una serie di test
per certificare se soddisfa una data forma normale.
Esistono:
• Prima forma normale (1NF)
• Seconda forma normale (2NF)
• Terza forma normale (3NF)
. Forma normale di Boyce e Codd (BCNF)
• (4NF e 5NF)
• La normalizzazione dei dati può essere considerata
come un processo di analisi degli schemi forniti, basato
sulle loro dipendenze funzionali e chiavi primarie, per
raggiungere le proprietà desiderate di
1. Minimizzazione della ridondanza
2. Minimizzazione delle anomalie di
inserimento/cancellazione/modifica
Schemi di relazione inadeguati, che non soddisfano
certe condizioni vengono decomposti in schemi di
relazione più piccoli che superano i test e pertanto
possiedono le proprietà desiderate.
• La chiave Primaria è l'insieme di uno o più attributi che
identificano in modo univoco un record della tabella
• La chiave candidata è ogni insieme minimale di uno o
più attributi che possono svolgere la funzione di chiave
primaria(ci possono essere più chiavo candidate ma una
sola chiave primaria)
L'attributo no chiave è un campo che non fa parte della
chiave primaria
ESEMPIO:
Inventario( NumeroInventario, Prodotto, Magazzino, Quantità IndirizzoMagazzino)
• NumeroInventario è una chiave candidata
Prodotto non è una chiave candidata
. Magazzino non è una chiave candidata
• (Prodotto Magazzino) è una chiave candidata
• (Prodotto, Magazzino, Quantità) non è una chiave candidata non
è una chiave candidata perché contiene al suo interno un
sottoinsieme di attributi che sono già chiave candidata
IL progettista sceglierà la chiave primaria in base alle particolari
esigenze che intende soddisfare
• Si ha dipendenza funzionale tra attributi quando il valore di un
insieme di attributi A determina un singolo valore dell'attributo B e si
indica con A ->B. Si dice anche che B dipende da A o che A è un
determinante per B
Se un attributo è chiave candidata di una relazione allora è un
determinante di ogni attributo della relazione e viceversa, un
attributo che determina tutti gli altri attributi è chiave candidata.
• NumeroInventario è determinante di ogni attributo
• (Prodotto Magazzino) è determinante di ogni attributo
• Magazzino è determinante di indirizzo Magazzino
Si ha dipendenza transitiva quando A determina B e B determina C. Si
dice allora che C dipende transitivamente da A
Richiede che il dominio di un attributo
comprenda solo valori atomici (semplici,
indivisibili) e che il valore di qualsiasi attributo
in una tupla sia un valore singolo del dominio.
a 1NF è già parte integrante della definizione
formale di relazione nel modello relazionale.
o tutte le righe della tabella contengono lo stesso numero di colonne
o gli attributi rappresentano informazioni elementari
o i valori che compaiono in una colonna appartengono allo stesso
dominio
u ogni riga è diversa da tutte le altre
l'ordine con il quale le righe compaiono nella tabella è irrilevante
IMPIEGATI
Cod. impiegato
Cognome
Nome
Data nascita
Figli a carico
001242
Rossi
Franco
09/11/1961
Marco
Giuseppe
Sandra
001318
Verdi
Alberto
24/04/1963
Sonia
Claudio
Una tabella di questo genere NON è in Prima forma normale in quanto
l'attributo figli a carico contiene più valori.
Con un processo di normalizzazione la tabella deve essere
trasformata in 2 tabelle
Cod. impiegato
Cognome
Nome
Data nascita
001242
Rossi
Franco
09/11/1961
001318
Verdi
Alberto
24/04/1963
1
Cod. impiegato
Cod. Figlio
Nome
001242
01
Marco
001242
02
Giuseppe
N
001242
03
Sandra
001318
01
Sonia
001318
02
Claudio
Requisiti della Seconda forma normale
E' in prima forma normale
• tutti i suoi attributi non-chiave dipendono dall'intera
chiave, cioè non possiede attributi che dipendono
soltanto da una parte della chiave
La seconda forma normale elimina la dipendenza parziale degli attributi
dalla chiave. Esempio:
La Tabella T1(A1,A2,A3,A4,A5) con
(A1, A2) -> A3
A1 > A4
A2 -> A5
non è in 2FN, e può essere normalizzata in
2FN con le tabelle:
T2(A1,A2,A3)
T3(A1,A4)
T4(A2,A5)
La seconda forma normale riguarda quindi le tabelle in cui la chiave
primaria sia composta da più attributi e stabilisce che, in questo
caso, tutte le colonne corrispondenti agli altri attributi dipendano
dall'intera chiave primaria.
ESEMPIO: Inventario
CodArticolo CodMagazzino DescArticolo Quantità IndirizzoMagazzino
Chiave primaria: Codarticolo + CodMagazzino
Inventario
CodArticolo
CodMagazzino DescArticolo Quantità IndirizzoMagazzino
Soluzione: mettere in 2FN
Articolo
CodArticolo DescArticolo
Magazzino
CodMagazzino IndirizzoMagazzino
1
1
N
N
Inventario
CodArticolo
CodMagazzino Quantità
Requisiti della Terza forma normale
E' in Seconda forma normale
• tutti gli attributi non-chiave dipendono direttamente dalla
chiave, cioè non possiede attributi che dipendono da
altri attributi che non sono in chiave
La terza forma normale elimina la dipendenza transitiva degli attributi
dalla chiave. Esempio:
La Tabella T1(A1,A2,A3,A4) con A2 -> A4
non è in 3FN, e può essere normalizzata in
3FN con le tabelle:
T2(A1,A2,A3)
T3(A2,A4)
18
La terza forma normale stabilisce che non esistano dipendenze tra le
colonne di una tabella se non basate sulla chiave primaria.
ESEMPIO: Impiegati
CodImpiegato
Nome Reparto TelefonoReparto
Chiave primaria CodImpiagato
Dipendenze funzionali CodImpiegato -> Reparto
Reparto > TelefonoReparto
19
Impiegato
CodImpiegato
Nome Reparto TelefonoReparto
Problemi
• telefono del Reparto ripetuto per ogni Impiegato di quel Reparto (ridondanza)
. se il telefono cambia, occorre modificare molte righe
• con errori di aggiornamento, si avrebbero telefoni differenti
• se un Reparto non ha impiegati, non si può conoscere il suo telefono
Soluzione: mettere in 3FN
Impiegato
Reparto
CodImpiegato
Nome
Reparto
Reparto
TelefonoReparto
20
Con la normalizzazione:
la tabella iniziale viene scomposta in più tabelle
• complessivamente forniscono le stesse informazioni
di partenza
• mantengono le dipendenze tra gli attributi
in ciascuna di esse ogni attributo dipende
direttamente dalla chiave
• vengono evitati problemi di ridondanza e di
inconsistenza dei dati
non ci deve essere perdita complessiva delle
informazioni
21
Prima forma normale
possiede i requisiti fondamentali del modello relazionale, in
particolare ogni attributo è elementare, non ci sono righe uguali,
non ci sono attributi di gruppo o ripetuti
Seconda forma normale
è in prima forma normale e non ci sono attributi non-chiave che
dipendono parzialmente dalla chiave
Terza forma normale
è in seconda forma normale e non ci sono attributi non-chiave che
dipendono transitivamente dalla chiave
22
Per integrità referenziale si intende l'insieme di
regole che garantiscono l'integrità dei dati di un
modello
relazionale
rendendo
valide
le
associazioni tra le tabelle ed eliminando gli
eventuali errori di inserimento, cancellazione o
modifica di dati collegati tra loro.
23
Per ogni valore non nullo della chiave esterna, deve esistere un valore
corrispondente della chiave primaria nella tabella associata
ON DELETE
ON UPDATE
Relazione2
Chiave
B1
B2
FK1
K1
A
A2
A3
A4
xxxx
xxxx
xxxx
xxxx
XXXX
xxxx
-
xxxx
-
xxxx
-
-
-
xxxx
Ogni valore non
nullo di FK1 deve
comparire in K1
Relazione1
no action
set null
cascade
xxxx
xxxx
xxxx
24
Non è possibile immettere un valore nella chiave esterna di una tabella associata, se
tale valore non esiste tra le chiavi della tabella primaria
Esempio: Se esiste una integrità referenziale (Foreign key) tra l'ordine ed il
cliente: un ordine non può essere assegnato ad un cliente che non esiste nella
tabella dei clienti.
Non è possibile eliminare una riga dalla tabella primaria, se esistono righe legate ad
essa attraverso la chiave esterna nella tabella correlata
Esempio: Non è possibile eliminare un cliente dalla tabella dei clienti se ci sono
ordini assegnati a quel cliente nella tabella degli ordini.
Non si può modificare il valore assegnato ad una chiave nella tabella primaria, se
essa compare in qualche riga della tabella correlata
Esempio: Non è possibile modificare il valore alla chiave di un cliente se si sono
ordini per quel cliente già registrati nella tabella degli ordini.
25