teoria della normalizzazione basi di dati 2010/11

54
Teoria della Teoria della Normalizzazione Normalizzazione Basi di Dati 2010/11 Basi di Dati 2010/11

Upload: fran

Post on 17-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Teoria della Normalizzazione Basi di Dati 2010/11. Obiettivo — Sviluppare una metodologia che permetta di:. Decidere se un particolare schema di relazione è un buon schema - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Teoria della Normalizzazione Basi di Dati 2010/11

Teoria della NormalizzazioneTeoria della Normalizzazione

Basi di Dati 2010/11Basi di Dati 2010/11

Page 2: Teoria della Normalizzazione Basi di Dati 2010/11

Obiettivo — Sviluppare una metodologia Obiettivo — Sviluppare una metodologia che permetta di:che permetta di:

Decidere se un particolare schema di relazione è un buon schema

Nel caso che uno schema di relazione R non soddisfi i criteri di bontà, decomporlo in un insieme di schemi di relazione

{R1, R2, ..., Rn}

tali che

• ogni Ri sia un buon schema

• la decomposizione sia senza perdite

Il nostro approccio è basato su:

• dipendenze funzionali

• dipendenze multivalore

Page 3: Teoria della Normalizzazione Basi di Dati 2010/11

Dipendenze funzionaliDipendenze funzionali

Esprimono vincoli sulla ammissibilità delle istanza delle relazioni

Stabiliscono che, all’interno di ogni tupla, i valori di alcuni attributi determinino i valori di altri attributi

Generalizzazione del concetto di chiave

Page 4: Teoria della Normalizzazione Basi di Dati 2010/11

Dipendenze funzionali (cont.)Dipendenze funzionali (cont.) Sia R uno schema di relazione sull’insieme X di attributi, siano inoltre

X e X

Vale la dipendenza funzionale

su R se e solo se per ogni istanza di r di R, ogni coppia di ennuple t1 and t2 di r aventi gli stessi valori per gli attributi in , ha gli stessi valori per gli attributi in . Formalmente:

t1[] = t2 [] t1[ ] = t2 [ ]

Esempio: Considerando la seguente istanza r dello schema R(A,B)

si osserva che: A B NON vale.

3 41 53 7

Page 5: Teoria della Normalizzazione Basi di Dati 2010/11

Ricordiamo che:Ricordiamo che:

K è una superchiave per uno schema R(X) se e solo se K X K è chiave candidata per R(X) se e solo se

• K X, e

• per nessun K si ha X

le dipendenze funzionali permettono di esprimere vincoli non esprimibili tramite la nozione di chiave.

Ad esempio: consideriamo lo schema:

Vendita (nomeCliente, codiceMerce, nomeProduttore, ammontare).

Desideriamo che valgano le seguenti dipendenze:

codiceMerce ammontare codiceMerce nomeProduttore

ma non desideriamo che valga:

codiceMerce nomeCliente

Page 6: Teoria della Normalizzazione Basi di Dati 2010/11

Dipendenze funzionaliDipendenze funzionali

Una dipendenza funzionale è banale se è sempre soddisfatta da ogni possibile istanza di una relazione.

In generale, se vale , allora la DF è banale

Page 7: Teoria della Normalizzazione Basi di Dati 2010/11

Chiusura di un insieme di dipendenze Chiusura di un insieme di dipendenze funzionalifunzionali

Dato un insieme F di dipendenze funzionali, vi possono essere altre dipendenze funzionali logicamente implicate da F.

• Ad es., se valgono A B e B C, possiamo inferire che vale A C

L’insieme F+ di tutte le dipendenze funzionali logicamente implicate da F è detto chiusura di F.

Possiamo trovare tutti gli elementi di F+ applicando gli assiomi di Armstrong (dove , e sono insiemi di attributi):

• se , allora (riflessività)

• se , allora (arricchimento)

• se , e , allora (transitività)

Proprietà: queste regole di inferenza sono

• corrette (generano solo dipendenze valide) e

• complete (generano tutte le dipendenze valide)

Page 8: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio R = (A, B, C, G, H, I)

F = { A B, A C, CG H, CG I, B H}

alcuni membri di F+ sono:

• A H

per transitività da A B e B H

• AG I

arricchendo A C con G, per ottenere AG CG e poi utilizzando la transitività con CG I

• CG HI

da CG H e CG I

Questa è una applicazione della union rule. Tale regola può essere giustificata in base a:

– la definizione di dipendenza funzionale, oppure sfruttando

– arricchimento di CG I per ottenere CG CGI, arricchimento diCG H per ottenere CGI HI, e infine transitività

Page 9: Teoria della Normalizzazione Basi di Dati 2010/11

Calcolo di FCalcolo di F++

Algoritmo di calcolo della chiusura di un insieme di dipendenze funzionali F:

F+ = Frepeat

for each dipendenza funzionale f in F+

applica riflessività e arricchimento a f e

aggiungi ad F+ le dipendenze ottenute

for each coppia di dipendenze f1 e f2 in F+

if f1 e f2 possono essere combinate utilizzando la transitività

then aggiungi ad F+ le dip. ottenute

until F+ non cambia

Page 10: Teoria della Normalizzazione Basi di Dati 2010/11

Calcolo di FCalcolo di F++

Possiamo velocizzare/semplificare il calcolo di F+ utilizzando ulteriori regole di inferenza: Se valgono e , allora vale anche (unione)

Se vale , allora valgono anche e (decomposizione)

Se valgono e , allora vale anche (pseudotransitività)

Esercizio:

Ricavare le precedenti regole a partire dagli assiomi di Armstrong.

Page 11: Teoria della Normalizzazione Basi di Dati 2010/11

ChiusuraChiusura didi un insieme di attributi un insieme di attributi

Dato un insieme di attributi si definisce la chiusura di rispetto a F (denotata con +) l’insieme di tutti gli attributi che sono funzionalmente determinati da attributi in utilizzando le dipendenza in F.

Avremo che:

è in F+ se e solo se +

Algoritmo che computa + rispetto a F:result := ;while (ci sono cambiamenti in result) dofor each in F do

beginif result then result := result

end

Page 12: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R(X) = (A, B, C, G, H, I) (quindi X = ABCGHI )

F = {A B, A C, CG H, CG I, B H}

(AG)+

1. result = AG

2. result = ABCG (da A C e A B)

3. result = ABCGH (da CG H e CG AGBC)

4. result = ABCGHI (da CG I e CG AGBCH)

Page 13: Teoria della Normalizzazione Basi di Dati 2010/11

Usare la chiusura di attibuti…Usare la chiusura di attibuti…

Viene sfruttata in diversi contesti:

per verificare se un insieme di attributi è una superchiave:

per verificare se è superchiave si calcola +.

è superchiave se + contiene tutti gli attributi di R(X).

per verificare se vale una dipendenza funzionale:

per verificare se vale (ovvero se appartiene a F+) basta verificare se vale +.

cioè, si calcola +, e si verifica se contiene tutti gli attributi di .

calcolo della chiusura di F

per ogni X, si calcola la chiusura +, e per ogni Y +, generiamo la dipendenza Y.

Page 14: Teoria della Normalizzazione Basi di Dati 2010/11

Copertura MinimaleCopertura Minimale

Un insieme F di dipendenze funzionali può contenere dipendenze ridondanti, ovvero che possono essere ottenute dalle altre dipendenze di F Esempio: A C è ridondante in {A B, B C, A C}

Anche degli attributi di una dipendenza funzionale potrebbero essere ridondanti:

A destra: {A B, B C, A CD} può essere semplificata in {A B, B C, A D}

A sinistra: {A B, B C, AC D} può essere semplificata in {A B, B C, A D}

Intuitivamente, una copertura minimale di F è un insieme “minimale” di dipendenze funzionali equivalente a F e privo di dipendenze e attributi ridondanti

Page 15: Teoria della Normalizzazione Basi di Dati 2010/11

Copertura MinimaleCopertura Minimale

Piu' formalmente, un insieme F di DF è minimale se e solo se: Ogni DF in F ha come parte destra un solo attributo Non e' possibile sostituire una DF X → A di F con una DF Y → A, dove Y

e' un sottoinsieme proprio di X, e avere ancora un insieme di DF equivalente ad F

Non e' possibile rimuovere una DF da F e avere ancora un insieme di DF equivalente ad F.

Una copertura minimale di un insieme di DF E e' un insieme minimale di DF

F equivalente ad E, ovvero tale che F+ = E+ .

Page 16: Teoria della Normalizzazione Basi di Dati 2010/11

Algoritmo di Copertura MinimaleAlgoritmo di Copertura Minimale

Ricerca di una copertura minimale F per un insieme di DF E:

1. Si imposti F:=E

2. Si sostituisca ogni DF X → {A1,...,An} in F con le n DF X → A1, ...., X → An

3. Per ogni DF X → A in F, per ogni attributo B in X:

Se B e' ridondante nella DF X → A, ovvero se F e' equivalente ad {F – {X → A}} U { (X – {B}) → A}, allora si sostituisca X → A con X - {B} → A in F.

1. Per ogni DF rimanente X → A in F: Se F – {X → A} e' equivalente ad F allora si rimuova X → A da F.

Page 17: Teoria della Normalizzazione Basi di Dati 2010/11

Come verificare ridondanza attributi?Come verificare ridondanza attributi?

Sia F un insieme di DF. Consideriamo la DF X → Y in F e l'attributo B X:

Per verificare se B X è ridondante:

1. Calcoliamo la chiusura ({X} – B)+ rispetto a F

2. Verifichiamo se ({X} – B)+ contiene Y; se sì, allora B è ridondante (e può essere eliminato)

Page 18: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R = (A, B, C)F = {A BC, B C, A B, AB C}

Dopo l'esecuzione del passo (2) dell'algoritmo si ha: F ={A B, A → C, B C, AB → C}

Eseguiamo il passo (3). A è ridondante in AB C ? Verifichiamo se la chiusura di B rispetto ad F contiene C

Sì: Infatti B+={B,C}. Dunque F diventa {A B, A C, B → C}

Eseguiamo il passo (4). A C è implicata logicamente da A B e B C (usando la

transitivita'), e puo' dunque essere eliminata da F

Una copertura canonica (o minimale) è: { A B, B C }

Page 19: Teoria della Normalizzazione Basi di Dati 2010/11

Forme normali basate su Dipendenze FunionaliForme normali basate su Dipendenze Funionali

1NF: Prima forma normale (2NF: Seconda forma normale) 3NF: Terza forma normale BCNF: Forma normale di Boyce-Codd

Normalizzare uno schema di relazione R

=Decomporre (opportunamente) R in schemi

che siano “in forma normale”

Page 20: Teoria della Normalizzazione Basi di Dati 2010/11

Normalizzare sfruttando Normalizzare sfruttando le dipendenze funzionalile dipendenze funzionali

Decomponendo uno schema di relazione R sfruttando un insieme di dipendenze funzionali F in un insieme di schemi R1, R2,.., Rn vogliamo:

Decomposizione Lossless-join (senza perdita informazione)

Minimizzare la ridondanza: le relazioni Ri dovrebbero essere o in Boyce-Codd Normal Form o in Third Normal Form.

Conservare le dipendenze: Se Fi è l’insieme delle dipendenze in F+ che includono solo attributi in Ri allora

la decomposizione deve essere “dependency preserving”, cioé (F1 F2 … Fn)

+ = F+

altrimenti, il controllo delle violazioni delle dipendenza funzionali (dello schema originario) comporterebbe la computazione esplicita di operazioni di join (sono le più costose).

Page 21: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R = (A, B, C)F = {A B, B C) può essere decomposto in due modi diversi

R1 = (A, B), R2 = (B, C)

decomposizione senza perdite

conserva le dipendenze

R1 = (A, B), R2 = (A, C)

decomposizione senza perdite

non conserva le dipendenze: (non posso controllare se viene violato il vincolo B C senza calcolare R1 R2)

Page 22: Teoria della Normalizzazione Basi di Dati 2010/11

Verificare la conservazione delle dipendenzeVerificare la conservazione delle dipendenze Per verificare se la dipendenza è preservata in una

decomposizione di R in R1, R2, …, Rn applichiamo il seguente test

(le chiusure di attributi sono fatte rispetto a F) result =

while (result cambia) dofor each Ri nella decomposizione

t = (result Ri)+ Ri

result = result t

Se result contiene tutti gli attributi in , allora la dipendenza funzionale è preservata.

Applicheremo il test su tutte le dipendenze in F.

Questa procedura impiega un tempo polinomiale, mentre un tempo esponenziale viene impiegato dalla computazione di F+ e di (F1

F2 … Fn)+

Page 23: Teoria della Normalizzazione Basi di Dati 2010/11

Boyce-Codd Normal FormBoyce-Codd Normal Form

è banale (ovvero, )

è superchiave di R(X)

Uno schema di relation R(X) è in BCNF rispetto a un insieme F di

dipendenze funzionali, se per ogni dipendenza in F+ della forma , con X and X, almeno una delle seguenti condizionivale:

Page 24: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R(X) = (A, B, C)F = {A B

B C}Chiave = {A}

R non è in BCNF

Decomposizione: R1 = (A, B), R2 = (B, C)

R1 e R2 sono in BCNF

la decomposizione è senza perdite

e preserva le dipendenze

Page 25: Teoria della Normalizzazione Basi di Dati 2010/11

Test per BCNFTest per BCNF

Per verificare se una dipendenza funzionale non banale causa una violazione della BCNF

1. computare + (la chiusura di ), e

2. verificare se include tutti gli attributi di R, cioè se + è superchiave per R.

Test semplificato: per verificare se uno schema R è in BCNF, è sufficiente verificare solo che le dipendenze del dato insieme F non violano la BCNF (invece che controllate tutte le dipendenze in F+). Infatti: se nessuna delle dipendenze in F causa una violazione della BCNF, allora

nessuna delle dipendenze in F+ causa una violazione della BCNF.

Tuttavia, utilizzare solo F è scorretto quando si effettua il test su una relazione della decomposizione di R. Esempio: consideriamo R (A, B, C, D), con F = { A B, B C}

decomponiamo R in R1(A,B) e R2(A,C,D) nessuna delle dipendenze in F contiene solo attributi di (A,C,D), quindi

potremmo credere che R2 soddisfi BCNF.

tuttavia, la dipendenza A C in F+ mostra che R2 non è in BCNF.

Page 26: Teoria della Normalizzazione Basi di Dati 2010/11

Algoritmo per la decomposizione in BCNFAlgoritmo per la decomposizione in BCNF

– result := {R};done := false;while (not done) do

if (esiste uno schema S in result che non è in BCNF)then begin

si determini una DF su S che violi BCNF;result := (result – S) {(S – )} {( )};

endelse done := true;

Risultato: ogni S è in BCNF, e la decomposizione è senza perdite

Page 27: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R = (nomeDitta, città, indirizzo, nomeCliente, codiceMerce, ammontare)

F = {nomeDitta città indirizzo

codiceMerce ammontare nomeDitta}

Key = {nomeCliente, codiceMerce}

Decomposizione R1 = (nomeDitta, città, indirizzo)

R2 = (nomeDitta, nomeCliente, codiceMerce, ammontare )

R3 = (nomeDitta, codiceMerce, ammontare )

R4 = (nomeCliente, codiceMerce)

Decomposizione finale R1, R3, R4

Page 28: Teoria della Normalizzazione Basi di Dati 2010/11

Test BCNF per la decomposizioneTest BCNF per la decomposizione

Per verificare se uno schema Ri di una decomposizione di R è in BCNF si opera come segue:

o verificare se Ri è in BCNF rispetto alla restrizione di F su Ri (cioé, tutte le

dip. funz. in F+ che contengono solo attributi di Ri)

oppure effettuare sull’insieme originale di dip. funz. F su R, il seguente test:

– per ogni insieme di attributi Ri, verificare che + o non includa attributi di Ri- , o includa tutti gli attributi di Ri.

se la condizione è violata da qualche in F, si dimostra che la dip. funz. (+ - ) Ri

vale in Ri, e Ri viola la BCNF.

Le dipendenze di questo tipo saranno sfruttate per decomporre ulteriormente lo schema Ri

Page 29: Teoria della Normalizzazione Basi di Dati 2010/11

BCNF e conservazione delle dipendenzeBCNF e conservazione delle dipendenze

R = (J, K, L)F = {JK L

L K}due chiavi candidate: JK e JL

R non è in BCNF

ogni possibile decomposizione di R non preserva

JK L

Non è sempre possibile ottenere una BCNF che conservi le dipendenze. Esempio:

Page 30: Teoria della Normalizzazione Basi di Dati 2010/11

Third Normal Form: motivazioniThird Normal Form: motivazioni

Ci sono casi in cui BCNF non preserva le dipendenza, mentre è necessario avere una procedura efficiente per impedire le

violazioni delle dip. funz.

Soluzione: definire una forma normale più debole. ammettere della ridondanza (con i conseguenti svantaggi;

vedremo esempio) ma garantire che le dip. funz. possano essere controllate sulle

relazioni (decomposte) senza computare alcun join.

Proprietà: esiste sempre una decomposizione in 3NF che conserva le dipendenze.

Page 31: Teoria della Normalizzazione Basi di Dati 2010/11

Third Normal FormThird Normal Form

Uno schema R è in 3NF se per ogni

in F+

vale almeno una delle seguenti condizioni: è banale (cioé, )

è superchiave di R

ogni attributo A in – è contenuto in una chiave candidata di R.

(Nota: attributi diversi possono essere contenuti in chiavi differenti)

Una relazione in BCNF è anche in 3NF.

La terza condizione è il rilassamento della BCNF che assicura la conservazione delle dipendenze.

Page 32: Teoria della Normalizzazione Basi di Dati 2010/11

3NF (Cont.)3NF (Cont.) Esempio

R = (J, K, L)F = {JK L, L K}

due chiavi candidate: JK e JL

R è in 3NF

JK L JK è superchiaveL K K è contenuto in una chiave candidata

la decomposizione in BCNF ha i due schemi (JL) e (LK)

verificare il rispetto della dip. funz. JK L richiederebbe un join

c’è ridondanza in questo schema

altro esempio:

Vendite (nomeProduttore, nomeCliente, nomeRappresentante)

nomeRappresentante nomeProduttore

nomeProduttore nomeCliente nomeRappresentante

Page 33: Teoria della Normalizzazione Basi di Dati 2010/11

Test per la 3NFTest per la 3NF

Buona notizia: dobbiamo controllare solo le dip. funz. in F, non è necessario controllare tutte le dip. in F+.

Utilizziamo la chiusura di attributi per verificare se per una data dip. funz. , è superchiave.

Se non è superchiave, dovremmo verificare se ogni attributo in è contenuto in una chiave candidata di R. Ma: questo test è costoso perché impone di calcolare tutte le chiavi

candidate

si dimostra infatti che il test di 3NF è un problema NP-hard

TUTTAVIA, la decomposizione in 3NF può essere calcolata in tempo polinomiale

Page 34: Teoria della Normalizzazione Basi di Dati 2010/11

Algoritmo di decomposizione in 3NFAlgoritmo di decomposizione in 3NF

1. Sia G una copertura canonica di F;

2. Per ogni parte sinistra X di una DF in G, si definisca uno schema di relazione D con attributi { X U {A1} U {A2} U … U {Ak} } dove X→ A1, …, X→Ak sono le sole dipendenze di G con X come parte sinistra (X e' la chiave di questa relazione).

3. Se nessuno degli schemi di relazione in D contiene una chiave di R, allora si crei un ulteriore schema di relazione D contenente attributi che formano una chiave di R.

4. Si eliminino le relazioni ridondanti (proiezioni di altre relazioni).

Page 35: Teoria della Normalizzazione Basi di Dati 2010/11

Algoritmo di decomposizione in 3NF Algoritmo di decomposizione in 3NF (Cont.)(Cont.)

Si dimostra che l’algoritmo visto è tale cheè corretto

ogni schema Ri è in 3NF

la decomposizione conserva le dipendenze ed è senza perdite

Page 36: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

Schema dato:

R (nomeDitta, nomeCliente, nomeImpiegato, numeroUfficio)

dipendenze funzionali: nomeImpiegato nomeDitta numeroUfficio nomeCliente nomeDitta nomeImpiegato

chiave:

{nomeCliente, nomeDitta}

Page 37: Teoria della Normalizzazione Basi di Dati 2010/11

Applichiamo l’algoritmo...Applichiamo l’algoritmo...

Il passo 2 inserisce i seguenti schemi nella decomposizione:

S (nomeImpiegato, nomeDitta, numeroUfficio)

T (nomeCliente, nomeDitta, nomeImpiegato)

Dato che T contiene una chiave candidata per R, abbiamo concluso la decomposizione

Page 38: Teoria della Normalizzazione Basi di Dati 2010/11

Comparazione di BCNF e 3NFComparazione di BCNF e 3NF

Per ogni dato schema è sempre possibile calcolare una 3NF senza perdite

che conserva le dipendenze

Per ogni dato schema è sempre possibile calcolare una BCNF senza perdite

potrebbe non preservare tutte le dipendenze

Page 39: Teoria della Normalizzazione Basi di Dati 2010/11

Comparazione di BCNF e 3NF (Cont.)Comparazione di BCNF e 3NF (Cont.)

Jj1

j2

j3

null

Ll1

l1

l1

l2

Kk1

k1

k1

k2

Uno schema in 3NF ma non in BCNF comporta:

ripetizione di informazioni (ad es., la coppia di dati l1, k1)

necessita l’impiego di valori nulli (ad es., per rappresentare la correlazione tra l2, e k2 quando non ci siano corrispondenti valori per J).

Esempio di problemi dovuti alla ridondanza ammessa dalla 3NF: R = (J, K, L)

F = {JK L, L K}

Page 40: Teoria della Normalizzazione Basi di Dati 2010/11

Obiettivi della progettazioneObiettivi della progettazione

Obiettivi del progetto di database relazionali sono: BCNF.

Decomposizioni senza perdite.

Conservazione delle dipendenze.

Se questo non è raggiungibile, possiamo scegliere se

1. rinunciare alla conservazione di (alcune) dipendenze

2. ammettere la ridondanza dovuta a 3NF

SQL (“di base”) fornisce un modo diretto per imporre delle generiche dipendenze funzionali nella definizione degli schemi; ma solo le dipendenze dovute a superchiavi.

Le altre dip.funz. possono essere imposte tramite l’uso di asserzioni, tuttavia queste sono più costose da valutare.

Quindi anche se scegliamo una decomposizione che preserva le dipendenze, non abbiamo un modo diretto/efficiente per imporle/valutarle in SQL.

Page 41: Teoria della Normalizzazione Basi di Dati 2010/11

Dipendenze MultivaloreDipendenze Multivalore

Esistono schemi che sono in BCNF ma che appaiono non sufficientemente normalizzati

Consideriamo lo schema

lezione(corso, docente, libro)

tale che (c,d,l) lezione significa che il docente d ha la qualifica per insegnare il corso c, e l è il libro di testo utilizzato in c

per ogni corso si memorizzano tutti gli insegnanti che hanno titolo a insegnare quel corso e l’insieme dei libri di quel corso (indipendentemente da quale docente insegna realmente il corso).

Page 42: Teoria della Normalizzazione Basi di Dati 2010/11

Non ci sono dip. funz. non banali e lo schema è BCNF

MA CI SONO anomalie di inserzione!!! – ad es., se Sara è un nuovo docente di database, si devono inserire le DUE tuple

(database, Sara, DB Concepts)(database, Sara, Ullman)

corso docente libro

databasedatabasedatabasedatabasedatabasedatabaseoperating systemsoperating systemsoperating systemsoperating systems

AviAviHankHankSudarshanSudarshanAviAvi Jim Jim

DB ConceptsUllmanDB ConceptsUllmanDB ConceptsUllmanOS ConceptsShawOS ConceptsShaw

lezione

Dipendenze Multivalore (Cont.)Dipendenze Multivalore (Cont.)

Page 43: Teoria della Normalizzazione Basi di Dati 2010/11

Sarebbe meglio decomporre comunque in:

corso docente

databasedatabasedatabaseoperating systemsoperating systems

AviHankSudarshanAvi Jim

insegna

corso libro

databasedatabaseoperating systemsoperating systems

DB ConceptsUllmanOS ConceptsShaw

adotta

Vedremo che questo schema è in quarta forma normale (4NF)

Dipendenze Multivalore (Cont.)Dipendenze Multivalore (Cont.)

Page 44: Teoria della Normalizzazione Basi di Dati 2010/11

Dipendenze Multivalore (MVDs)Dipendenze Multivalore (MVDs)

Sia R(X) uno schema e siano X e X. Una dipendenza multivalore

sussiste in R, se in ogni sua istanza r, per ogni coppia di tuple t1 e t2 in r tali che t1[] = t2 [], esistono le tuple t3 e t4 in r tali che:

t1[] = t2 [] = t3 [] = t4 [] t3[] = t1 [] t3[X – ] = t2[X – ] t4 [] = t2[] t4[X – ] = t1[X – ]

Page 45: Teoria della Normalizzazione Basi di Dati 2010/11

MVD (Cont.)MVD (Cont.)

Visualmente si può rappresentare questa condizione di esistenza di in questo modo:

Page 46: Teoria della Normalizzazione Basi di Dati 2010/11

Esempio Esempio

Nell’esempio precedente:

corso docentecorso libro

La definizione formale che abbiamo dato esprime la situazione in cui ad un particolare valore di Y (corso) è associato un insieme di valori distinti per Z (docente) e un insieme di valori distinti per W (libro); inoltre questi due insiemi sono indipendenti l’uno dall’altro.

Nota: se Y Z allora Y Z

Page 47: Teoria della Normalizzazione Basi di Dati 2010/11

Teoria delle MVDTeoria delle MVD

La seguente legge deriva dalla definizione di dip. multivalore: Se , allora

Ovvero, ogni dip. funz. è anche una dip. Multivalore

La chiusura D+ di un insieme di dipendenze D è l’insieme di tutte le dipendenze funzionale o multivalore implicate logicamente da D. Possiamo calcolare D+ sfruttando le definizioni di dipendenze

funzionale e multivalore.

Vedremo ora un insieme di regole di inferenza per le dipendenze multivalore, similmente a quanto visto con gli assiomi di Armstrong.

Page 48: Teoria della Normalizzazione Basi di Dati 2010/11

Regole di inferenza per le D.M.V.Regole di inferenza per le D.M.V.

Questo è un insieme corretto e completo di regole di inferenza per le dip. multivalore (nota che una dip. funzionale è una dip. multivalore). Sia X l’insieme di tutti gli attributi di R, e siano X :

riflessività (DF): se , allora

arricchimento (DF): se , allora

transitività (DF): se , e , allora

complementazione (DMV): se , allora (X - )

arricchimento (DMV): se , allora transitività (DMV): se , , allora ( - )

replicazione: se , allora coalescenza: se e ed esiste disgiunto da tale

che allora

Page 49: Teoria della Normalizzazione Basi di Dati 2010/11

Quarta forma normaleQuarta forma normale

Uno schema R(X) è in 4NF rispetto ad un insieme di dipendenze (funzionali o multivalore) D se per tutte le dipendenze multivalore in D+ della forma , con X and X, vale almeno una delle seguenti condizioni: è banale (cioé, oppure = X)

è una superchiave per lo schema R(X)

Una relazione in 4NF è anche in BCNF

Page 50: Teoria della Normalizzazione Basi di Dati 2010/11

Algoritmo di Decomposizione in 4NFAlgoritmo di Decomposizione in 4NF

result: = {R};done := false;calcola D+;

while (not done) if (esiste uno schema Ri in result che non sia in 4NF) then begin

sia una delle dip. multivalore di D+ non banali che causa la violazione della 4NF su Ri. Sia result := (result - Ri) (Ri - ) (, ); end else done:= true;

Nota: ogni Ri è in 4NF e la decomposizione è senza perdite

Page 51: Teoria della Normalizzazione Basi di Dati 2010/11

EsempioEsempio

R =(A, B, C, G)

F ={ A B, A C, A G }unica chiave: ACG

R non è in 4NF perché tutte tre le dipendenze violano la def. di 4NF

Decomposizione di R:

a) R1 = (A, B) (R1 è in 4NF)

b) R2 = (A, C, G) (R2 non è in 4NF)

Decomposizione di R2

c) R3 = (A, C) (R3 è in 4NF)

d) R4 = (A, G) (R4 è in 4NF)

Page 52: Teoria della Normalizzazione Basi di Dati 2010/11

Finora abbiamo assunto dato uno schema R. Questo può essere prodotto come: risultato della conversione di uno schema E-R nel modello relazionale

oppure, R potrebbe essere un singolo schema di relazione contenente tutti gli attributi di interesse (relazione universale)

oppure, R potrebbe essere stato generato con qualche procedimento non specificato e necessita di una verifica di qualità ed eventualmente di una conversione in forma normale.

Page 53: Teoria della Normalizzazione Basi di Dati 2010/11

Modellazione ER e NormalizzazioneModellazione ER e Normalizzazione

Qualora uno schema ER sia progettato opportunamente, identificando correttemente tutte le entità, le relazioni prodotte dalla traduzione nel modello relazionale non necessitano solitamente di normalizzazione.

Tuttavia, nei (complessi e imperfetti) processi di progetto reali possono prodursi dip. funz. da attributi non di chiave verso altri attributi della stessa entità.

Dip. funzionali da parte di attributi non di chiave sono possibili ma rare in quanto nella maggioranza dei casi pratici molte associazioni sono binarie.

Page 54: Teoria della Normalizzazione Basi di Dati 2010/11

Denormalizzazione per la performanceDenormalizzazione per la performance

Potremmo voler utilizzare schemi non normalizzati per aumentare la performance

Ad es. mostrare assieme informazioni memorizzate in due tabelle differenti richiede il join delle tabelle

Alternativa 1: usare schemi denormalizzati che contengono gli attributi di entrambe le relazioni accesso più veloce

spazio e tempo di esecuzione superiore per gestire le modifiche

maggiore sforzo di programmazione per gestire la ridondanza, con conseguente maggiore incidenza degli errori di programmazione

Alternativa 2: usare una vista materializzata stessi vantaggi e svantaggi della alternativa 1, eccetto il maggiore

sforzo di programmazione.