1. Verifiche di qualita`
per schemi relazionali
La qualita` di schemi
relazionali
Il concetto di qualita` per uno schema
relazionale si riferisce alla possibilita` di
generare comportamenti anomali durante le
operazioni di aggiornamento, dovuti alla
presenza di dati ridondanti
1
2. La qualita` di schemi
relazionali
Schema relazionale
Vincoli di integrita`
(dipendenze funzionali)
SI NO
Lo schema soddisfa
determinate proprieta’?
Applicare teoria
No anomalie
Normalizzazione
Nuovo schema
equivalente a quello iniziale, 2
senza anomalie
La qualita` di schemi
relazionali
Se utilizziamo le metodologie di progettazione presentate in
precedenza, gli schemi relazionali generati spesso soddisfano
una forma normale (terza forma normale)
non presentano anomalie
In questo caso, la teoria della normalizzazione rappresenta un
utile strumento di verifica, che puo` suggerire modifiche nel caso
in cui vogliamo ottenere forme normali differenti, magari piu`
restrittive
forma normale di Boyce-Codd
La normalizzazione e` inoltre utile in fasi di revisione successiva
degli schemi relazionali
vincoli di integrita` sorti da nuovi requisiti applicativi possono
generare nuove anomalie
nuovi schemi normalizzati 3
3. Ridondanza
Chiave = colloc
stesso Film
ridondanza 4
Ridondanza
Video
No ridondanza
Film
5
4. Anomalia di modifica
La valutazione del film Pulp Fiction di Quentin Tarantino cambia
4
4
4
Se non modifichiamo tale valore in tutte le tuple in cui appare il film
da aggiornare, dopo la modifica, tuple relative allo stesso film
potrebbero avere valutazioni diverse
anomalia di modifica 6
Anomalia di cancellazione
Tutti i video relativi a “Pulp fiction” di Quentin Tarantino hanno
dei problemi e devono essere sostituiti
Ogni informazione sul film “Pulp fiction” viene persa
7
anomalia di cancellazione
5. Anomalia di inserimento
Vogliamo inserire l’elenco dei film per i quali verranno resi disponibili
alcuni video a partire dal prossimo mese
? mediterraneo gabriele salvatores 1991 commedia 3.80
Poiche’ la collocazione del video e` chiave di FilmInVideo, le informazioni
relative ad un film non possono essere inserite finche’ non e` nota la
collocazione di almeno un video relativo a quel film
anomalia di inserimento 8
Ridondanza e anomalie
Il problema legato alla presenza di anomalie
dipende dall’avere utilizzato un’unica
relazione per memorizzare informazioni
relative a film e video
concettualmente rappresentano due entita`
distinte che condividono un’associazione
Tali anomalie non si verificano se utilizziamo
le relazioni Film e Video
9
6. Teoria della normalizzazione –
obiettivi
Identificare situazioni che possono generare anomalie, partendo
dall’analisi di alcuni tipi di vincoli di integrita` validi per lo schema di
partenza
dipendenze funzionali
Identificare quali proprieta`, rispetto alle dipendenze funzionali, uno
schema deve soddisfare affinche` non sia soggetto ad anomalie
definizione di forme normali per gli schemi relazionali
Fornire strumenti per trasformare lo schema relazionale di partenza
in uno schema equivalente al precedente che soddisfi una forma
normale
scomposizione
prevede la sostituzione di una relazione che presenta anomalie con un
insieme di relazioni, che non presentano tale problema
il processo di scomposizione e` guidato dalle dipendenze funzionali
identificate 10
Teoria della normalizzazione –
osservazione
La normalizzazione puo` portare ad inefficienze nelle
prestazioni, nel caso in cui le interrogazioni richiedano
frequentemente di combinare i dati suddivisi in relazioni
distinte
Determinare la valutazione del film corrispondente ad un
certo video
FilmInVideo (non normalizzata) interrogazione su singola
tabella
Film + Video (normalizzate) join
Il processo di normalizzazione deve essere applicato con le
dovute cautele
11
7. Dipendenze funzionali
La presenza di ridondanza in uno schema dipende da
proprieta` del dominio applicativo che possono essere
rappresentate tramite vincoli di integrita`
dipendenze funzionali
Le dipendenze funzionali, come ogni altra tipologia di
vincoli, devono essere identificate durante la fase di
progettazione concettuale, a partire dal documento di
specifica dei requisiti
12
Dipendenze funzionali –
concetti di base
Una dipendenza funzionale descrive un legame di tipo funzionale
esistente tra gli attributi di una singola relazione
dati il titolo ed il regista di un film, l’anno di produzione, il genere e la
valutazione assegnati al film sono unici
titolo e regista determinano funzionalmente i valori degli attributi
13
anno, genere e valutaz
8. Dipendenze funzionali –
definizione
R(A1,A2,....An) schema di relazione
X e Y sottoinsiemi di UR
r istanza di R(A1,A2,....An)
r soddisfa X Y se, per ogni coppia di tuple
t1 e t2 in r, vale
se t1[X] = t2[X] allora t1[Y] = t2[Y]
14
Dipendenze funzionali –
definizione
X determina funzionalmente Y in R(A1, A2,
...., An), indicato con X →R(A1,...,An) Y (o con X
→ Y , in assenza di ambiguita`) se qualunque
istanza r di R(A1,A2,....,An) soddisfa X → Y
X →R(A1,...,An) Y (X → Y ) e` chiamata
dipendenza funzionale su UR
15
9. Dipendenze funzionali –
notazione
A1A2 . . .An denota l’insieme {A1,A2, . . . ,An}
dati X e Y insiemi di attributi, XY denota X U Y
16
Dipendenze funzionali –
esempio
VALGONO NON VALE
a) titolo regista → anno titolo → colloc
b) titolo regista → valutaz
c) titolo regista → regista
d) colloc → titolo regista
e) colloc → valutaz
f) titolo → regista 17
10. Dipendenze funzionali – tipi
(a), (b), (d) dipendono dalla semantica dei dati
sono vincoli di integrita`
devono essere determinati durante la fase di progettazione
concettuale
(f) dipende dalla specifica istanza considerata
non e` un vincolo di integrita`
(c) sempre valida
dipende dalla definizione
dipendenza funzionale banale
(e) implicata dalle dipendenze (b) e (d)
dipendenza funzionale derivata
18
Dipendenze funzionali derivate
Formalizzabili tramite la nozione di
implicazione logica di un insieme di
dipendenze funzionali
L’implicazione logica permette di determinare
l’insieme massimale di dipendenze funzionali
derivabili a partire da un insieme di
dipendenze funzionali dato
chiusura di un insieme di dipendenze
funzionali
19
11. Dipendenze funzionali derivate
R(A1, ...,An) schema di relazione
F insieme di dipendenze funzionali su UR
X → Y dipendenza funzionale su UR
F implica logicamente X → Y , denotato con F |= X → Y ,
se qualunque istanza r di R(A1, ...,An) che soddisfa tutte
le dipendenze in F, soddisfa anche X → Y
La chiusura di F, denotata con F+, e` l’insieme delle
dipendenze funzionali logicamente implicate da F
F+ = {X → Y | F |= X → Y } 20
Dipendenze funzionali derivate
– esempio
F= titolo regista → anno
titolo regista → valutaz
titolo regista → regista
colloc → titolo regista
colloc → valutaz
titolo → regista
F |= colloc → anno
F |= colloc → titolo
F |= colloc → regista
Escludendo le dipendenze banali e ridondanti:
F+ = F U {colloc → anno, colloc → titolo, colloc → regista} 21
12. Regole di Armstrong
Il calcolo di F+ e` fondamentale per applicare la teoria
della normalizzazione
A questo proposito, e` stato definito un insieme di regole
di inferenza che permette di calcolare F+
regole di Armstrong
Ogni regola di Armstrong ha la forma:
se G allora X → Y
dove G e` un insieme (eventualmente vuoto) di
dipendenze funzionali (le premesse) e X → Y e` una
dipendenza funzionale (la conclusione)
22
Regole di Armstrong
D insieme di attributi
A1: riflessivita`. Sia Y ⊆ X ⊆ D.
Allora X → Y
A2: additivita`. Sia Z ⊆ D.
Se X → Y, allora XZ → Y Z
A3: transitivita`.
Se X → Y e Y → Z, allora X → Z 23
13. Regole di Armstrong derivate
Non aumentano il potere espressivo
A4: unione.
Se X → Y e X → Z, allora X → Y Z
A5: pseudotransitivita`.
Se X → Y e WY → Z, allora XW → Z
A6: scomposizione. Sia Z ⊆ Y.
Se X → Y , allora X → Z
24
Regole di Armstrong –
derivazione
Le regole di Armstrong possono essere concatenate in
modo che le conclusioni di un certo insieme di regole
diventino le premesse di un’altra regola
Derivazione
Dato un insieme di dipendenze funzionali F, X → Y e`
derivabile da F, indicato con F ⊢ X → Y , se esiste una
derivazione le cui premesse sono contenute in F e la
cui conclusione coincide con X → Y
25
14. Regole di Armstrong –
proprieta`
Le regole di Armstrong sono corrette
ogni derivazione con premesse in F puo`
derivare solo conclusioni in F+
Le regole di Armstrong sono complete
ogni dipendenza funzionale in F+ puo`
essere derivata a partire da F, applicando
tali regole
26
Regole di Armstrong –
proprieta`
F insieme di dipendenze funzionali su un
insieme di attributi D
X ⊆ D, Y ⊆ D
F ⊢ X → Y se e solo se F |= X → Y
27
15. Chiusura di un insieme di
attributi
La computazione di F+ e` molto costosa
esponenziale nel numero di dipendenze
Spesso non e` necessario calcolare F+ ma
e` sufficiente stabilire se una certa
dipendenza funzionale appartiene ad F+
algoritmo semplice ed efficiente basato sulla
nozione di chiusura di un insieme di attributi
rispetto ad un insieme di dipendenze
28
Chiusura di un insieme di
attributi
Contiene tutti gli attributi che possono essere
derivati da quelli di partenza, utilizzando le
dipendenze funzionali date
F insieme di dipendenze funzionali su un insieme di
attributi D
X⊆D
La chiusura di X rispetto ad F, denotata con X+, e`
l’insieme {A ∈ D | F ⊢ X → A}
29
16. Chiusura di un insieme di
attributi – proprieta`
F insieme di dipendenze funzionali
F ⊢ X → Y se e solo se Y ⊆ X+, con X+
calcolata rispetto ad F
30
Chiusura di un insieme di
attributi – algoritmo
Attributi funzionalmente
determinati da X(i)
31
17. Chiusura di un insieme di
attributi – esempio
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
X = colloc
X(0) = colloc
X(1) = colloc tipo titolo regista
X(2) = colloc tipo titolo regista anno genere valutaz
X(3) = X(2) = X+ = U FilmInVideo
32
Chiavi
Il concetto di chiave puo` essere definito in
termini di dipendenze funzionali
Utile per
determinazione delle forme normali
verificare se le chiavi identificate durante la
progettazione logica sono correttamente definite
rispetto alle dipendenze funzionali
33
18. Chiavi
R(A1, ...,An) schema di relazione
F insieme di dipendenze funzionali su UR
X ⊆ UR
X e` chiave di R(A1, ...,An) se verifica le
seguenti condizioni:
1. X → A1 A2 . . . An ∈ F+
2. non esiste Y ⊆ X tale che Y → A1 A2 . . . An ∈ F+
34
Chiavi
X e` chiave per uno schema di relazione R(A1, ...,An)
rispetto ad un insieme di dipendenze funzionali F
F |= X → A1 A2 . . . An
F ⊢ X → A 1 A 2 . . . An
A1 A2 . . . An ⊆ X+
35
19. Chiavi – osservazione
Se un attributo non compare mai a destra di
una dipendenza funzionale in F, questo
attributo fara` certamente parte della chiave
In caso contrario, non sarebbe possibile
derivarlo applicando le regole di Armstrong
36
Chiavi – esempio
R(C,S,Z)
F = {CS → Z, Z → C }
CS+ = SZ+ = CSZ
CS e SZ sono chiavi per R
37
20. Chiavi – esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
Sappiamo che colloc e` chiave della relazione
Le dipendenze funzionali ci permettono di verificare che questo
vincolo e` corretto
Infatti:
colloc+ = UFilmInVideo
condizione di minimalita` soddisfatta
38
Chiavi – esempio
Supponiamo di non conoscere la chiave di
FilmInVideo e di volerla determinare
colloc non compare mai a destra in una dipendenza
funzionale
colloc appartiene alla chiave
colloc+ = UFilmInVideo
colloc e` chiave
colloc e` l’unica chiave
39
21. Forme normali
Le forme normali sono state introdotte per
stabilire condizioni che, se soddisfatte da uno
schema relazionale, garantiscono l’assenza
delle anomalie discusse in precedenza
Esistono vari tipi di forme normali
differiscono per il tipo di anomalie che permettono
di evitare
Forme normali piu` note:
forma normale di Boyce-Codd (BCNF)
terza forma normale (3NF)
40
Forme normali
BCNF 3NF
Permette di evitare un Permette di evitare un
insieme molto ampio di insieme piu` ristretto di
anomalie anomalie
Piu` restrittiva di 3NF Meno restrittiva di
BCNF
Poco usata nella
pratica Molto usata nella
pratica
41
22. Forme normali – osservazione
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
Le dipendenze
{titolo regista→anno titolo regista→genere titolo regista → valutaz}
generano ridondanza:
molti video possono corrispondere allo stesso film, quindi avere lo stesso
titolo e stesso regista
in base alle dipendenze, molti video avranno anche lo stesso valore per
anno, genere e valutaz
La dipendenza colloc → titolo regista non genera ridondanza
colloc e` chiave per FilmInVideo
non e` possibile che due tuple abbiamo lo stesso valore per colloc
X → Y , con X chiave o super-chiave per la relazione considerata, non potra`
mai generare ridondanze e quindi anomalie 42
Forme normali – BCNF
R(A1, ...,An) schema di relazione
F insieme di dipendenze funzionali su UR
R(A1, ...,An) e` in forma normale di Boyce-
Codd (BCNF) rispetto ad F se per ogni
dipendenza funzionale X → Y ∈ F, con Y ⊆
X, allora X e` una chiave o super-chiave di R
43
23. Forme normali – BCNF –
esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
Sappiamo che l’unica chiave di tale relazione e` colloc
Lo schema non e` in BCNF in quanto le dipendenze
titolo regista → anno, titolo regista →genere e titolo regista → valutaz
non soddisfano la condizione di BCNF
titolo regista non e`chiave o super-chiave della relazione
44
Forme normali – BCNF –
esempio
Video(colloc,tipo,titoloFilm,registaFilm)
Film(titolo,regista,anno,genere,valutaz)
Dipendenze funzionali:
colloc → tipo titolo regista per Video
titolo regista → anno genere valutaz per Film
Sono in BCNF
le uniche dipendenze funzionali sono quelle che
hanno la chiave sul lato sinistro
45
24. Forme normali – 3NF
La BCNF impone una condizione molto forte
permette di evitare ogni tipo di anomalia, in quanto evita ogni tipo
di ridondanza
potrebbe non permettere di modellare alcuni vincoli rilevanti per il
dominio applicativo (tutti quelli che a sinistra non contengono una
chiave od una superchiave)
come vedremo successivamente, se una relazione non soddisfa
la BCNF non sempre e` possibile decomporla per ottenere uno
schema equivalente in BCNF per il quale valgano tutte le
dipendenze funzionali di partenza
Alcune delle precedenti restrizioni si possono superare con la
3NF
Forma normale piu` debole
Gli schemi in 3NF ammettono una certa ridondanza, benche’
limitata
46
Forme normali – 3NF –
attributo primo
R(A1, ...,An) schema di relazione
Ai, 1 ≤ i ≤ n, e` un attributo primo per R(A1,
...,An) se Ai e` elemento di una qualche
chiave di R
47
25. Forme normali – 3NF
R(A1, ...,An) schema di relazione
F insieme di dipendenze funzionali su UR
R(A1, ...,An) e` in terza forma normale (3NF)
rispetto ad F se per ogni dipendenza
funzionale X → Y ∈ F, con Y ⊆ X, allora:
X `e una chiave o super-chiave di R oppure
∀ A ∈ Y , A e` un attributo primo per R(A1, ...,An)
48
Forme normali – 3NF
BCNF 3NF
BCNF 3NF
49
26. Forme normali – 3NF –
esempio
R(C,S,Z)
F = {CS → Z, Z → C }
CS+ = SZ+ = CSZ
Attributi primi = CSZ
Lo schema e` in 3NF
Poiche` Z non e` ne’ chiave ne’ super-chiave,
lo schema non e` in BCNF
50
Forme normali – 3NF –
esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
Attributi primi = colloc
Lo schema non e` in 3NF
51
27. Scomposizione
Una volta scelta una forma normale, la base di dati
ottenuta tramite la progettazione logica non
necessariamente soddisfa le proprieta` imposte da
tale forma normale
E` necessario trasformare lo schema di ogni relazione
in uno o piu` schemi di relazioni che soddisfino tale
forma normale
scomposizione 52
Scomposizione
La scomposizione di uno schema di relazione
R(A1, ...,An)
e` la sua sostituzione con un insieme di
schemi relazionali Σ = {R1,R2, . . . ,Rk} non
necessariamente disgiunti tali che
UR = UR1 ∪ UR2 ∪ . . . ∪ URk
53
28. Scomposizione – proprieta`
Lossless join (join senza perdite)
Preservazione delle dipendenze funzionali
54
Scomposizione lossless join
Se una relazione viene scomposta, e` importante che
sia possibile riottenere esattamente la stessa
relazione eseguendo il join naturale delle relazioni in
cui e` stata scomposta
R(A1, ...,An) schema di relazione
F insieme di dipendenze funzionali su UR
Σ = {R1,R2, . . . ,Rk} scomposizione di R(A1, ...,An)
Σ e` lossless join rispetto ad F se per ogni istanza r
di R(A1, ...,An) che soddisfa F, vale:
r = ΠR1 (r) ΠR2 (r) ΠRk (r)
... 55
29. Scomposizione lossless join -
esempio
R(A,B,C,D,E,G,H,I) F = {A → HI, B → DE}
Le istanze di R non sono scomponibili senza perdite rispetto ad ABDEI
ed ACGH
r
ΠABDEI (r) ΠACGH (r)
ΠABDEI (r) ΠACGH (r)
56
Scomposizione lossless join
Esiste un algoritmo generale per determinare
se una data scomposizione verifica la
proprieta` di lossless join
non lo vediamo
Introduciamo invece un semplice test
applicabile nel caso in cui la scomposizione
contenga solo due schemi
57
30. Scomposizione lossless join
Σ = {R1,R2} scomposizione per R(A1, ...,An)
F insieme di dipendenze funzionali su UR
Σ ha la proprieta` di lossless join rispetto ad F se
e solo se F implica logicamente una delle seguenti
dipendenze funzionali:
(UR1 ∩ UR2) → (UR1 − UR2 )
1.
(UR1 ∩ UR2) → (UR2 − UR1 )
2.
58
Scomposizione lossless join –
esempio
R(A,B,C,D,E,G,H,I) F = {A → HI, B → DE}
Le istanze di R sono scomponibili senza perdite
rispetto ad ABDEI ed ABCGH
Infatti
ABDEI ∩ ABCGH = AB
ABDEI ABCGH = DEI
AB → DEI ∈ F+
59
31. Scomposizione lossless join –
esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
R1(colloc,tipo,titoloR2,registaR2)
R2(titolo,regista,anno,genere,valutaz)
soddisfa la proprieta` di lossless join
UR1 ∩ UR2 = {titolo, regista}
UR2 − UR1 = {anno, genere, valutaz}
F |= titolo regista→anno genere valutaz
60
Scomposizione lossless join -
esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista Una scomposizione
e) colloc → tipo con schemi disgiunti
non e` mai lossless join
R1(colloc,tipo)
R2(titolo,regista,anno,genere,valutaz)
non soddisfa la proprieta` di lossless join
UR1 ∩ UR2 = { }
UR2 − UR1 = UR2
→ UR2 ovviamente non vale in F+
61
32. Scomposizione che preserva
le dipendenze
Un’altra importante proprieta` di una scomposizione
di uno schema R in Σ = {R1, ...,Rk} e` che l’insieme
delle dipendenze funzionali F definito per R sia
implicato dalle proiezioni di F sugli schemi R1, . . .,
Rk
La nozione di proiezione permette di restringere un
insieme di dipendenze funzionali ad un sottoinsieme
di attributi dello schema per il quale sono state
definite
62
Scomposizione che preserva
le dipendenze
D insieme di attributi
F insieme di dipendenze funzionali su D
Z⊆D
La proiezione di F su Z, denotata con Π Z(F),
e` l’insieme {X → Y |X → Y ∈ F+ | XY ⊆ Z}
63
33. Scomposizione che preserva
le dipendenze
R(A1, ...,An) schema di relazione
Σ = {R1, . . . ,Rk} scomposizione per R(A1, ...,An)
F insieme di dipendenze funzionali su UR
Σ preserva le dipendenze in F se
∪ i=1,...,k ΠRi (F) |= F
Se vengono verificate le dipendenze locali ad ogni schema, allora
anche le dipendenze globali (che coinvolgono schemi diversi)
sono verificate
64
Scomposizione che preserva
le dipendenze - esempio
R(C,S,Z)
F = {CS → Z, Z → C}.
Σ = { R 1, R 2 } R1(S,Z) R2(C,Z)
Σ ha la proprieta` di lossless join
{S, Z} ∩ {C, Z} → {C, Z} − {S, Z} ∈ F+
ΠR1(F) = { S → S, Z → Z}
ΠR2(F) = { C → C, Z → Z, Z → C}
CS → Z non e` preservata
65
34. Scomposizione che preserva
le dipendenze – esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
a) titolo regista → anno
b) titolo regista → genere
c) titolo regista → valutaz
d) colloc → titolo regista
e) colloc → tipo
f) anno → tipo
Σ = { R1, R2 } R1 = colloc titolo regista tipo
R2 = titolo regista anno genere valutaz
ΠR1(F) = { (d), (e) }
ΠR2(F) = { (a), (b), (c) }
ΠR1(F) U ΠR2(F) |= (f)
anno+ = anno
66
Σ non preserva le dipendenze
Scomposizione che preserva
le dipendenze – algoritmi
Dalla definizione discende algoritmo per
determinare se una scomposizione Σ = {R1, .
. . ,Rk} preserva un insieme di dipendenze
funzionali F
basato sul calcolo di F
esponenziale nella dimensione di F
Esistono altri algoritmi polinomiali, che non
presentiamo, basati sul concetto di chiusura
di un insieme di attributi
67
35. Scomposizione che preserva
le dipendenze – osservazione
Dato X ⊆ Ri, la dipendenza funzionale ottenuta da X
→ X+ (con X+ calcolato rispetto ad F) eliminando gli
attributi a destra che non compaiono in Ri appartiene
a ΠRi (F)
Ogni dipendenza funzionale che appartiene a ΠRi (F)
puo` essere calcolata in questo modo
68
Scomposizione che preserva
le dipendenze – esempio
R(A,B,C,D)
F = {A → B, B → C, C → D, D → A}
Σ = {AB, BC, CD}
A+ = B+ = C+ = D+ = ABCD
ΠAB(F) = {A → B, B → A}
ΠBC(F) = {B → C, C → B}
ΠCD(F) = {C → D, D → C}
G = ΠAB(F) U ΠBC(F) U ΠCD(F)
Stabiliamo se D → A e` preservata da Σ
D+ = ABCD calcolato rispetto a G
D → A `e preservata da Σ
69
36. Scomposizione in BCNF
Qualsiasi schema di relazione ammette una
scomposizione BCNF che soddisfa la proprieta` di
lossless join
E` possibile che non esista, per un dato schema di
relazione, una scomposizione in BCNF che preservi le
dipendenze
Il prezzo da pagare per ottenere una forma normale che
elimini completamente le anomalie, come la BCNF, e`
una potenziale perdita di vincoli di integrita` 70
Scomposizione in BCNF –
algoritmo
Scomposizione lossless join di S
Complessita` dipende dalla
complessita`calcolo
proiezioni
71
37. Scomposizione in BCNF –
esempio
R(C,S,Z)
F= {CS → Z, Z → C}
Chiavi CS e SZ
Non e` in BCNF
Z → C viola la BCNF
S1(C, Z) ΠS1(F)= {Z → C} S2(S, Z) ΠS2(F) = { }
Chiave Z Π Chiave SZ
BCNF BCNF
Σ = {S1, S2} non preserva CS → Z
72
Scomposizione in BCNF –
esempio
FilmInVideo(colloc titolo regista anno genere valutaz tipo)
F = { (a) titolo regista → anno genere valutaz,
(b) colloc → titolo regista tipo}
Chiave colloc
Non e` in BCNF
titolo regista → anno genere valutaz
viola la BCNF
R2(colloc,titolo,regista, tipo)
R1(titolo,regista,anno,genere,valutaz)
Π
ΠR2(F)= { (b) }
ΠR1(F)= { (a) }
Chiave colloc
Chiave titolo regista
BCNF
BCNF
Σ = {R1, R2} preserva le dipendenze 73
38. Scomposizione in 3NF
L’algoritmo che vedremo puo` essere
applicato solo sotto opportune ipotesi
Se queste ipotesi sono soddisfatte,
l’algoritmo genera una scomposizione in 3NF
lossless join che preserva le dipendenze
L’insieme di dipendenze funzionali deve
essere minimale
l’insieme non deve quindi contenere ridondanze
74
Scomposizione in 3NF –
minimalita`
Unicita` degli attributi a destra
1.
Il lato destro di ogni dipendenza in F corrisponde ad un singolo
1.
attributo
Assenza di dipendenze funzionali ridondanti
2.
Per nessuna dipendenza X → A ∈ F, l’insieme di dipendenze G
= F − {X → A} e` equivalente ad F, cioe` vale F+ = G+
Per determinare se questa condizione e` soddisfatta, si calcola
X+ rispetto a F − {X → A}
se A e` in X+, allora F+ = G+ e quindi X → A e` ridondante
Assenza di attributi a sinistra ridondanti
3.
Per nessuna dipendenza X → A ∈ F e nessun sottoinsieme Z di
X, l’insieme di dipendenze G = F − {X → A} U {Z → A} e`
equivalente ad F, cioe` vale F+ = G+
Z e` ridondante in X → A se (X − Z)+, calcolata rispetto ad F,
contiene A
75
39. Scomposizione in 3NF –
minimalita`
Per la regola di scomposizione e` sempre possibile
ricondursi alla forma richiesta dalla condizione (1)
E` possibile dimostrare che per ogni insieme di
dipendenze funzionali F esiste un insieme di
dipendenze funzionali minimale G tale che F+ = G+
L’insieme G puo` essere calcolato applicando le
regole precedenti in sequenza, considerando una
dipendenza funzionale alla volta
L’ordine in cui le varie dipendenze sono esaminate
puo` generare insiemi minimali diversi
76
Scomposizione in 3NF –
esempio
R(A,B,C,D)
F = {AB → D, A → B, A → C, B → C, C → B}
Unicita` attributi a destra soddisfatta
Dipendenze ridondanti
A→C A→B
A+ = ABCD rispetto ad F −{A → C} A+ = ABCD rispetto ad F − {A → B}
A → C e` ridondante A → B e` ridondante
F1 = F −{A → C} F3 = F − {A → B}
Nessun’altra dipendenza puo` essere Nessun’altra dipendenza puo` esse
eliminata eliminata
Attributi ridondanti a sinistra Attributi ridondanti a sinistra
AB → D AB → D
A+ = ABCD calcolata rispetto ad F1 A+ = ABCD calcolata rispetto ad
B puo` essere eliminata da AB → D B puo` essere eliminata da AB
F2 = {A → D, A → B, B → C, C → B} F4 = {A → D, A → C, B → C, C
minimale B} minimale 77
40. Scomposizione in 3NF –
algoritmo
78
Scomposizione in 3NF –
esempio
R(A,B,C,D)
F = {A → D, A → B, B → C, C → B} minimale
A+ = ABCD A e` l’unica chiave
Lo schema non e` in 3NF
C → B e B → C non soddisfano condizione
Generiamo gli schemi R1(A,D), R2(A,B) ed R3(B,C)
Gli schemi R1(A,D) e R2(A,B) possono essere combinati
ottenendo il nuovo schema R1,2(A,B,D)
R1,2(A,B,D) R3(B,C)
R1,2 contiene la chiave
R1,2(A,B,D) R3(B,C) 3NF lossless join e preserva le dipendenze
79
41. Scomposizione in BCNF –
esempio
R(A,B,C,D)
F = {A → D, A → B, B → C, C → B}
Chiave A
Non e` in BCNF
C → B viola la BCNF
R2(A,D,C)
R1(B,C)
ΠR2 (F) = {A → D, A → C }
ΠR1(F)= {B → C, C → B}
Chiave a
Chiavi B e C
BCNF
BCNF
Σ = {R1, R2} preserva anche A → B 80
A+ = ABCD calcolato rispetto a ΠR1(F) U ΠR2(F)
Osservazione
La progettazione logica, insieme alla normalizzazione,
permette di generare schemi relazionali di qualita`, a
partire da schemi ER
Se utilizziamo le metodologie di progettazione basate
sui diagrammi ER gli schemi relazionali ottenuti sono
gia` in 3NF
81
42. Osservazione
La normalizzazione rappresenta comunque un utile
strumento di verifica di qualita`
non sempre le basi di dati esistenti sono state progettate
seguendo i criteri proposti
lo schema di una base di dati puo` evolvere nel tempo
a questa evoluzione non sempre si affianca un raffinamento
della documentazione
modifiche applicate a schemi normalizzati, se effettuate con
scarsa attenzione, possono portare alla generazione di
ridondanze
utile strumento per verificare la scelta degli identificatori, e di
conseguenza delle chiavi, determinate nelle fasi di
progettazione concettuale e logica
82