7
BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU NORMALIZACIJA: PRIMER: (Jan 2011) Dati su šema relacije R(A, B, C, D, E, F) i skup funkcijskih zavisnosti F={B→CE, CF→A, BD→A, D→E, ACF→DE, B→F}. Potrebno je: a) Odrediti skup kandidat ključeva KK date šeme. R(A, B, C, D, E, F} F={B→CE, CF→A, BD→A, D→E, ACF→DE, B→F} Samo sa leve strane: B Samo sa desne strane: E To znači da u kandidat ključ OBAVEZNO ulazi B, a NIKAKO ne može da uđe E. Sada probamo redom zatvarače svih ključeva koji sadrže B: B+= B|CE|F|A|D → B je kandidat ključ Pošto k.k. mora da sadrži B, svi ostali ključevi mogu biti samo superključevi sa B! KK ={ B } Pavle Batuta 08/419 pavledb @ gmail . com

Normalizacija

Embed Size (px)

DESCRIPTION

Baze podataka

Citation preview

Page 1: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

NORMALIZACIJA:

PRIMER: (Jan 2011) Dati su šema relacije R(A, B, C, D, E, F) i skup funkcijskih zavisnosti F={B→CE, CF→A, BD→A, D→E, ACF→DE, B→F}. Potrebno je: a) Odrediti skup kandidat ključeva KK date šeme.

R(A, B, C, D, E, F}F={B→CE, CF→A, BD→A, D→E, ACF→DE, B→F}Samo sa leve strane: BSamo sa desne strane: ETo znači da u kandidat ključ OBAVEZNO ulazi B, a NIKAKO ne može da uđe E.Sada probamo redom zatvarače svih ključeva koji sadrže B:B+= B|CE|F|A|D → B je kandidat ključPošto k.k. mora da sadrži B, svi ostali ključevi mogu biti samo superključevi sa B!

KK ={ B }

Pavle Batuta 08/419 [email protected]

Page 2: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

b) Ispitati redom da li je data šema u BC, 3. i 2. normalnoj formi i svaki put u tabeli naznačitida li posmatrana zavisnost narušava posmatranu normalnu formu.

Najpre vršimo proveru za 2NF:(Ukoliko zavisnost ne zadovoljava 2NF, ne zadovoljava nijednu od NF).Da bi 2NF bila zadovoljena, neključni atribut ne sme parcijalno da zavisi od dela kandidat ključa.To znači da ako se na desnoj strani nadje deo kandidat ključa, i na levoj strani mora se naći deo kandidat ključa da bi se zadovoljila 2NF.Ako ni leva ni desna strana ne sadrži k.k, zavisnost zadovoljava 2NF.Ako desna strana sadrži deo k.k, a leva ne sadrži deo k.k, zavisnost narušava 2NF.Ako je leva stana neki od k.k, automatski je zadovoljena 2NF.

B → CE je u 2NF automatski zbog toga što mu je leva strana neki od k.k,CF → A je u 2NF zbog toga što ni leva ni desna strana ne sadrže deo k.k.BD → A je u 2NF zbog toga što desna strana ne sadrže deo k.k.D → E je u 2NF zbog toga što ni leva ni desna strana ne sadrže deo k.k.ACF → DE je u 2NF zbog toga što ni leva ni desna strana ne sadrže deo k.kB → F je u 2NF automatski zbog toga što mu je leva strana neki od k.k.

Zatim vršimo provere u 3NF i BCNF.Najpre proverimo uslove BCNF:Nijedna zavisnost nije TRIVIJALNA (tipa X → X ili ABCX → X isl.).SUPERKLJUČNE zavisnosti su B → F, B → CE i BD → A (leva strana sadrži k.k).Zatim proverimo uslove 3NF, koji su isti kao za BCNF uz dodatni uslov:Nijedna zavisnost ne zadovoljava uslov da je desna strana zavisnosti deo k. k.

B→CE CF→A BD→A D→E ACF→DE B→F

BCNF OK X OK X X OK

3NF OK X OK X X OK

2NF OK OK OK OK OK OK

2NF je u potpunosti zadovoljena.

Pavle Batuta 08/419 [email protected]

Page 3: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

c) Sprovesti normalizaciju date šeme u 3. normalnu formu algoritmom koji garantuje očuvanjefunkcijskih zavisnosti.

Svodi se na nalaženje kanoničnog pokrivača.

Najpre se napravi Fc1 = F = {B→CE, CF→A, BD→A, D→E, ACF→DE, B→F}Zatim se proverava da li je atribut višak počevši s leva na desno; provera se vrši na taj način što se ukloni slovo, zatim se traži zatvarać za levu stranu bez tog slova. Atribut je višak samo ako se desna strana iliuklonjeno slovo može dobi ti bez uklonjene relacije. Pritom, uklanjanje je moguće samo ako sa leve stane ima više od jednog atributa (tipa XY → Z ili više).

Proveravamo CF → A, BD → A, ACF → DE.

Uklanjamo C:Zatvarač (F)+= F C nije višak.Uklanjamo F:Zatvarač (C)+=C F nije višak.

Uklanjamo B:Zatvarač (D)+=D|E B nije višak.Uklanjamo D:Zatvarač (B)+=B|CE|F|A Dobili smo desnu stranu, D je višak.

Uklanjamo A:Zatvarač (CF)+=CF|A Dobili smo polazno slovo, A je višak.Uklanjamo C:Zatvarač (AF)+=AF C nije višak.Uklanjamo F:Zatvarač (AC)+=AC F nije višak.

Sada uklonimo iz Fc1 viškove sa leve strane.Dobijamo kao rezultat Fc2 = { B→CE, CF→A, B→A, D→E, CF→DE, B→F }.Iz Fc2 sada uklanjamo viškove sa desne strane i nakon toga spojimo neke relacije ako je potrebno. Da je atribut višak sa desne strane utvrđujemo tako što ga uklonimo iz zavisnosti i gledamo (pomoću zatvarača) da li se do istog može doći.

Proveravamo B→CE.B→C:(B)+=B|A|F Nema viška.B→E:(B)+=B|C|F|DE E u zavisnosti je vi[ak.Proveravamo CF→A.(CF)+=CF|DE Nema viška.Proveravamo B→A.

Pavle Batuta 08/419 [email protected]

Page 4: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

(B)+=B|CE|F|A Zavisnost je višak.Proveravamo D→E.(D)+=D Nema viška.Proveravamo CF→DE.CF→D:(CF)+=CF|A|E Nema viška.CF→E:(CF)+=CF|A|D|E E u zavisnosti je višak.Proveravamo B→F.(B)+=B|CE|A Nema viška.

Eliminišemo viškove, i dobijamo Fc3 = { B→C, CF→A, CF→D, D→E, B→F }.Izvršimo spajanje gde je potrebno i konačno dobijamo:

Fc = { B→CF, CF→AD, D→E }

Svaku od zavisnosti predstavimo relacijom i dobijamo dekompoziciju u 3NF bez gubitaka.NAPOMENA: u skup relacija, ukoliko nije već sadržan, potrebno je ubaciti jednu relaciju koga čine svi atributi nekog od kandidata ključeva.U našem slučaju KK = { B }, ono se sadrži u R1.Konačno rešenje je.

R1 = (B,C,F) R2 = (C,F,A,D) R3 = (D,E)

Pavle Batuta 08/419 [email protected]

Page 5: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

d) Sprovesti normalizaciju date šeme u BC normalnu formu, izdvajajući zavisnosti redosledom sa desna na levo.

Da bismo izvršili dekompoziciju najpre je potrebno da vidimo koje zavisnosti (ne)zadovoljavaju BCNF.

B→CE CF→A BD→A D→E ACF→DE B→F

BCNF OK X OK X X OK

Idući s desna na levo, prva koja ne zadovoljava je ACF→DE. Napravićemo relaciju koja sadrži sve atribute ove zavisnosti:R1(A,C,D,F,E)i ostatak koji dobijamo tako što izbacimo desnu stranu zavisnosti:R’(A,B,C,F)Nad R1 se traži zatvarači skupa atributa:(A)+=A(C)+=C(D)+=D|E(F)+=F(E)+=E(CF)+=CF|A|DE(ACF)+=ACF|DE

Dobija se novi skup F1 = { D→E, CF→ADE, ACF→DE }Iz ovog skupa funkcijskih zavisnosti tražimo prvu koja ne zadovoljava BCNF.

ACF→DE zadovoljava, CF→ADE zadovoljava (ACF i CF su kandidat ključevi za R1)D→E ne zadovoljava, pravimo nove relacije iz R1:R2(D,E) i R’’(A,C,D,F)(D)+=D|EFr2 = { D→E } zadovoljava BCNF.Jedno od rešenja je (D,E).

Sada pravimo zatvarač skupa za R’’(A,C,D,F)(A)+=A(C)+=C(D)+=D(F)+=F(CF)+=CF|A|D(ACF)+=ACF|D

Dobija se novi skup F2 = { CF→AD, ACF→D }

Pavle Batuta 08/419 [email protected]

Page 6: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

Obe relacije zadovoljavaju BCNF.Jedno od rešenja je (A,C,D,F).

Ostalo je još da proverimo da li je relacija R’(A,B,C,F) u BCNF.Gledamo sledeću zavisnost u F za koju ne važi BCNF, a to je CF→A.

R3(C,F,A), R4(B,C,F)

Zatvarač R3(C,F,A):(C)+=A(F)+=C(A)+=D(CF)+=CF|AF3 = { CF→A }Zadovoljava BCNF.Jedno od rešenja je (C,F,A).

Zatvarač R4(B,C,F):(B)+=B|C|F(C)+=C(F)+= FF3 = { B→CF }Zadovoljava BCNF.Jedno od rešenja je (B,C,F).

Kao rešenja smo dobili (D,E), (A,C,D,F), (C,F,A), (B,C,F).Relacija (C,F,A) se je sadržana u (A,C,D,F), pa se briše.

Rešenje je dekompozicija:

R1(D,E), R2(A,C,D,F), R3(B,C,F)

Pavle Batuta 08/419 [email protected]

Page 7: Normalizacija

BAZE PODATAKA 1 - ELEKTORTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

e) Ispitati da li je pri postupku u okviru tačke d) došlo do gubitka funkcijskih zavisnosti ikojih?

R1(D,E), R2(A,C,D,F), R3(B,C,F)F1 = { D→E } F2 = { CF→AD, ACF→D }F3 = { B→CF }Fd = F1 ∪ F2 ∪ F3Fd = { D→E, CF→AD, ACF→D, B→CF }Originalni skup zavisnosti je: F={B→CE, CF→A, BD→A, D→E, ACF→DE, B→F}PRIVIDNO izgubljene zavinsosti su B→CE, BD→A, ACF→E, B→C.

Proveravamo zatvarač nad odgovarajućim atributima nad skupom Fd.(B)+=B|CF|AD|E B→CE je pronađen.(BD)+=BD|CF|A BD→A je pronađen.(ACF)+=ACF|D|E ACF→E je pronađen.(B)+=B|CF B→C je pronađen.

Odavde se vidi da su sve zavisnosti pronađene, tj. nema izgubljenih funkcijskih zavisnosti.

Pavle Batuta 08/419 [email protected]