PODATAKA U ovom dijelu govorimo o funkcijskim zavisnostima i zavisnostima spoja. Zavisnosti predstavljaju odreena semantika ogranienja (uvjeti integriteta) na sadraj relacija u bazi podataka. Baza podataka smatra se valjanom (konzistentnom) ako relacije baze podataka zadovoljavaju specificirana ograninja.
Pr. R = {Radnik#, Odjel#, Poslovoa#} r(Radnik# Odjel# Poslovoa#) ======================== R1 O1 P1 R2 O1 P1 R3 O2 P2 Semantika: (x, y, z) e r znai da radnik x radi u odjelu y iji je poslovoa z . U relaciji r vrijedi: svakom radniku odgovara tono jedan odjel. Kaemo da funkcijska zavisnost Radnik# Odjel# vrijedi u relaciji r . U relaciji r ne vrijedi funkcijska zavisnost Odjel# Radnik# , jer svakom odjelu ne odgovara tono jedan radnik; odjelu O1 odgovaraju radnici R1 i R2 .
FORMALIZACIJA
Neka je R relacijska shema, X, Y _ R . Izraz X Y je funkcijska zavisnost nad R . Pr. R = ABC Izrazi A B, AB B, C AC, C C su funkcijske zavisnosti nad relacijskom shemom R .
Sa FZ(R) oznaavamo skup svih funkcijskih zavisnosti nad R .
Propozicija
Skup FZ(R) je konaan . Podskupove od FZ(R) oznaavamo sa F, G, H, F1,.. Funkcijske zavisnosti oznaavamo sa f, g, h, f1,.. U r vrijedi funkcijska zavisnost Radnik#, Odjel# Poslovoa , jer svakom radniku i pripadnom odjelu odgovara tono jedan poslovoa (svakoj Radnik#, Odjel# vrijednosti odgovara tono jedna Poslovoa vrijednost) U relaciji r ne vrijedi funkcijska zavisnost Odjel#, Poslovoa# Radnik# , jer svakoj Odjel#, Poslovoa vrijednosti ne odgovora jedna Radnik# vrijednost; naime, Vrijednosti O1, P1 odgovaraju vrijednosti R1 i R2
Semantika Funkcijska zavisnost X Y e FZ(R) vrijedi u relaciji r nad R , r(R), ako svakoj X vrijednosti odgovara jedna Y vrijednost;
X Y ne vrijedi u r(R) ako postoji barem jedna X vrijednost kojoj odgovaraju barem dvije Y vrijednosti.
Ekvivalentna formulacija: X Y e FZ(R) vrijedi u r(R) ako t1, t2 e r (t1|X| = t2|X| t1|Y| = t2|Y|) X Y ne vrijedi u r ako -t1, t2 e r (t1|X| = t2|X| . t1|Y| = t2|Y|) Relacija r je model za X Y ako X Y vrijedi u r Pr. R = ABC , F: A B, BC B, C AB r(A B C) ======== 2 1 0 2 2 2 1 1 0 1 2 2
Ispitati koje zavisnosti iz F vrijede u relaciji r 1. Ispitujemo f: A B Kako za prva dva sloga t1 i t2 iz r vrijedi: t1|A| = t2|A| i t1|B| = t2|B| , zakljuujemo da f ne vrijedi u r . t1 t2 Slikovito:
A vrijednosti B vrijednosti
2 1 1 2
2. Ispitujemo f1: BC B
Neka su u i v bilo koja dva sloga iz r. Implikacija u|BC| = v|BC| u|B| = v|B| vrijedi, jer kad god se dva sloga podudaraju na na nekom skupu atributa X , onda se ti isti slogovi podudaraju i na bilo kojem podskupu od X.
Prema tome, f1 vrijedi u r . 3. Ispitujemo f2: C AB . Prvi i trei slog iz r , u oznaci t1 i t3 , imaju svojstvo: t1|C| = t3|C| i t1|AB| = t3|AB| . Zakljuujemo da f2 ne vrijedi u r . Za zavisnost X Y e FZ(R) kaemo da je primjenjiva na relaciju r(R1), gdje je R1 _ R, ako vrijedi XY _ R1.
U protivnome, kaemo da X Y nije primjenjivo na r(R1). Pr. r(A, B, C) G: AB C, B AD, B C Koje su zavisnosti iz G primjenjive na r ? (Primjenjivost smo pretpostavili u definiranju X Y vrijedi u r). Kaemo da skup zavisnosti F _ FZ(R) vrijedi u relaciji r(R) ako svaka zavisnost iz F vrijedi u r .
Ako F vrijedi u r , onda kaemo da je r model za F.
Neka je R skup atributa i F skup zavisnosti nad R. Par (R, F) zovemo relacijskom shemom.
Shema baze podataka, SH(BP), je skup relacijskih shema SH(BP) : (R1, F1), (R2, F2),.., (Rk, Fk)
Baza podataka nad SH(BP) je skup relacija BP: r1(R1), r2(R2),.., rk(Rk) .
BP je valjana baza podataka ako F1 vrijedi u r1, F2 vrijedi u r2,.., Fk vrijedi u rk .
Kaemo jo da je BP u valjanom ili konzistentnom stanju. Pr. SH(BP) : R1 = ABC , F1: A C R2 = BCD , F2: B C, D B
Napisati jednu valjanu BP nad SH(BP). SH(BP): (R1, F1), (R2, F2),.., (Rk, Fk)
BP: r1(R1) r2(R2) rk(Rk)
F1, F2,.., Fk su uvjeti integriteta. LOGIKA POSLJEDICA Neka je F _ FVS(R) i f e FVS(R) . f je logika posljedica od F ako za svaku relaciju r nad R vrijedi: Ako je r model za F , onda je r model i za f . (Ako F vrijedi u r , onda f vrijedi u r ) Oznaka: F f KATALOG FZ Neka su X, Y, Z, Y1 _ R . Tada vrijedi:
1. X Y XZ YZ (proirenje)
2. X Y, Y Z X Z (tranzitivnost)
3. X Y, X Y1 X YY1 (unija)
4. X Y X Z , ako je Z _ Y (projekcija)
5. F X Y , gdje je F bilo koji skup funkcijskih zavisnosti i Y _ X (trivijalnost) Dokaz
d1. Neka je r bilo koja relacija nad R. Neka u r vrijedi X Y. Treba dokazati da XZ YZ takoer vrijedi u r . . . Implikacijski problem (I-problem):
Ispitati da li vrijedi F f Pr. (primjena kataloga FZ)
(a)A B AD BD vrijedi po pravilu proirenja
(b) A D, D C A C (tranzitivnost)
(c) BD A, BD B BD AB (unija)
(d)F ACD AC (trivijalnost)
(e)Specijalno, C ACD AC , to krae piemo u
obliku ACD AC , gdje kaemo da ACD AC vrijedi po pravilu trivijalosti Za zavisnost X Y kaemo da je trivijalna ako je Y _ X. Propozicija Trivijalna zavisnost X Y vrijedi u svakoj relaciji na koju je primjenjiva. Pr. Rijeimo I-problem X Y XZ Y (l. pro) 1. X Y zadano 2. XZ YZ 1., proirenje 3. YZ Y trivijalnost 4. XZ Y 2., 3., tranzitivnost Neka su F, G _ FZ(R)
Kaemo da je G logika posljedica od F, ili da F ima za logiku posljedicu G ako
F g za svaku zavisnost g iz G
Notacija F G
F G znai da G nije logika posljedica od F . Propozicija Neka su F, G, H _ FZ(R) bilo koji skupovi funkcijskih zavisnosti. Tada vrijedi:
1. F G ako je G _ F 2. F G i G H povlai F H RJEAVANJE I-PROBLEMA
Postupci: (Se) Semantiki (koristi se definicija logike posljedice, tj. radi se u kontekstu relacija i slogova) (Si) Sintaksni (koriste se pravila o rezoniranju o zavisnostima, tj. koristimo Katalog FZ). (Al) Algoritamski (koristi se zatvara skupa atributa). ((Al) ima linearnu sloenost) ZATVARA SKUPA ATRIBUTA F _ FZ(R) , X _ R
Zatvara skupa atributa X s obzirom na skup funkcijskih zavisnosti F oznaavamo sa ZAT(X, F).
Definicija je: ZAT(X, F) = {A e R F X A}
ZAT(X, F) piemo i u obliku XF +
Algoritam za raunanje ZAT(X, F) koristi pojam zatvara primjenjivosti ili z-primjenjivosti. Kaemo da je X Y primjenjivo na skup atributa W ako X _ W i nije Y _ W
Pr. W = ABC , F: AB C, A BD, CD A
Odrediti koje zavisnosti iz F su z-primjenjive na W Dogovor: Skup zavisnosti F = {X1 Y1, .., Xk Yk} pisat emo u obliku F: X1 Y1,.., Xk Yk ili
F: X1 Y1 . Xk Yk ALGORITAM |ZAT(X, F)| Ulaz: F _ FZ(R) , X _ R . Izlaz: ZAT(X, F) .
Postupak: 1. Staviti X0 = X 2. Odrediti zavisnost iz f iz F koja je z-primjenjiva na X0. Ako takva zavisnost ne postoji, onda je ZAT(X, F) = X0. Ako je U V izabrana zavisnost iz F, koja je z-primjenjiva na X0, onda treba izraunati X1 = X0 V. 3. Primjeniti korak 2. na X1. Navedeni postupak treba ponavljati sve dotle dok ne doemo do takvog skupa atributa Xk za koji ne postoji niti jedna zavisnost u F koja bi bila z-primjenjiva na Xk. Dobiveni Xk je ZAT(X, F). Zato navedeni postupak terminira ? F je konaan i svaka zavisnost iz F moe se primijeniti najvie jedan put Pr. R = ABCD , F: AB C, C AC, AC D . Odrediti: (a) ZAT(A, F)
X0 = A C (nema z-primjenjivi zav)
ZAT(A, F) = X0 = A
(b) ZAT(AC, F)
Xo = AC AC D
X1 = AC D = ACD C
ZAT(AC, F) = X1 = ACD
Propozicija
X _ ZAT(X, F)
ZAT(ZAT(X, F), F) = ZAT(X, F) Krai zapis: koristimo operator zatvaranja Za . Za(Y, U V) = YV , gdje je U V z-primjenjivo na Y. Za(Yk, C) = Yk (indikator da nema z-primjenjivih zavisnosti na Yk) ZAT(X, F): X0 = X; X1 = Za(X0, fo); ..; Xi+1 = Za(Xi, fi); ZAT(X, F) = Za(Xk, C) = Xk.
Pr. R = ABCDE , F: AB CD, B A, C DE Izraunati ZAT(BD, F) Xo = BD, Za(BD, B A) = BDA, Za(BDA, AB CD) = BDAC, Za(BDAC, C DE) = BDACE = R, Za(R, C) = R = ZAT(BD, F). ALGORITAM(rjeavanje I-problema) Ulaz: F _ FZ(R) , f = X Y e FZ(R) Izlaz: Odgovor je li f logika posljedica od F .
Postupak: 1. Raunati ZAT(X, F) 2. Ako Y _ ZAT(X, F), onda F f Ako nije Y _ ZAT(X, F), onda F f Pr. R = ABCD , F: A B, B C, f = A C Rijeimo I-problem F f . ZAT(A, F) = ? Xo = A, Za(A, A B) = AB, Za(AB, A C) = ABC, Za(ABC, C) = ABC = ZAT(A, F).
Kako je C _ ZAT(A, F), vrijedi F A C
Pr. F X Z , gdje je F proizvoljan skup zavisnosti i Z _ X. Rjeenje: Z _ X _ ZAT(X, F)
EKVIVALENCIJA SKUPOVA ZAVISNOSTI Za skupove zavisnosti F, G _ FZ(R) kaemo da su ekvivalentni, u oznaci F G, ako vrijedi F G i G F .
Pr. R = ABCD, F: A B G: A B B C B C A C Ispitati F G .
Ekvivalentni skupovi zavisnosti predstavljaju isto semantiko ogranienje (filter)
Sa V(R, F) oznaavamo skup svih valjanih relacija nad R. (modeli za F) Propozicija Neka su (R, F) i (R, G) relacijske sheme i F G. Tada je V(R, F) = V(R, G).
R R F G r r Izmeu dva ekvivalentna skupa zavisnosti prednost dajemo jednostavnijem skupu zavisnosti. ARMSTRONGOVA RELACIJA Pr. R = ABC, F: A B, C B g: B C Vrijedi F g Napisati r(R) za koju vrijedi: r je model za F i F nije model za g Rjeenje: Konstruirat emo eljenu relaciju koja ima samo dva sloga. B A C ZAT(B, F) = B r( ZAT(B, F) R ZAT(B, F)) ======================= a a a a b b
Pr. R = ABCD, F: A B, BC D, D A Napisati dvije zavisnosti f, g e FZ(R) koje ne slijede iz F, a zatim napisati relaciju r(R) koja je model za F, a nije model niti za f niti za g . Rjeenje: ZAT(B, F) = B , ZAT(C, F) = C f: B A, g: C D rf( A B C D) rg( A B C D) =========== ============ 0 0 0 0 2 2 2 2 1 0 1 1 3 3 2 3
Novi simboli r = rf rg r( A B C D) ========== 0 0 0 0 1 0 1 1 2 2 2 2 3 3 2 3
F+ F _ FZ(R), F+ = {f e FZ(R) F f}, F- = FZ(R) F+
FZ(R) = F+ F- F F- Armstrongova relacija je relacija r nad R koja je model za F (time i za F+), a nije model niti jedne zavisnosti iz F- . Konstrukcija: F _ FZ(R), F- : f1, f2,.., fk
1. Napisati rf1, rf2,.., rfk (uz uvoenje novih sim.)
2. r(R) = rf1 rf2 . . rfk
KLJU (R, F) , K _ R . K je klju za (R, F) ako
(1) F K R (K je dedinstven identifikator) (2) Ne postoji K1 c K : F K1 R (minimalnost) Postupci odreivanja kljua:
(a) odozgo prema dolje; (b) odozdo prema gore (c) kljuni trik Pr. R = ABCD, F: AB C, B D, CD B
Nai sve kljueve za (R, F)
(a) Xk = ABCD, odmah vrijedi (1), tj. F Xk R Dalje smanjujemo Xk da zadovoljimo (2) uz uvanje (1) (c) Atributi koji nisu u desnoj strani zavisnosti iz F: to je atribut A. A je element bilo kojeg kljua K za (R, F) . Pogledajmo da li je A klju: F A R ? ZAT(A, F) = A, R A. Prema tome, A nije klju. (b) Proirujemo A dok ne dobijemo klju
Neka je Xk _ R skup atributa koji nisu u desnoj strani zavisnosti od F. Tada svaki klju K za (R, F) sadri Xk, tj. Xk _ K za bilo koji K. Ako je Xk klju za (R, F), onda je to jedini klju.
Kljuni, nekljuni atributi: A e R je kljuni atribut ako je A element nekog kljua za (R, F); Ako A nije element niti jednog od kljueva za (R, F) , onda je A nekljuni atribut. Pr. R = ABCDE, F , K1 = AC, BC Napisati kljune i nekljune atribute Rjeenje: KA: A, B, C ; NA: D, E
U kreiranju BP jedan od kljueva se specificira kao primarni klju PK. KANONSKI POKRIVA F pojednostavljenje |1|, |2|, |3| kp(F) |1|: Desno razbijanje X ABC X A, X B, X C, X D Desno zazbijanje od F dobije se desnim razbijanjem svake zavisnosti iz F . Pr. F: A BC Draz(F): A B AB D A C AC AD AB D AC A AC D
Propozicija F Draz(F) |2|: Lijeva redukcija Izbacivanje suvinih atributa iz lijeve strane zavisnosti. X Y je lijevo reducirana s obzirom na F ako u X nema suvinih atributa, tj. ne postoji
X1 c X : F X1 Y Pr. F: A B, B CD, AC B, A D
a) Ispitujemo da li je A B lijevo reducirano s obzirom na F.
F C B ? ZAT(C, F) = C, B C ; Znai F C B
Prema tome, A B je lijevo reducirano. b)Ispitijemo lijevu reduciranost AC B
Traimo X1 c AC tako da bude F X1 B
C AC A F A B ? C
ZAT(A, F): X0 = A, Za(A, A B) = AB,.. B _ AB _ ZAT(A, F).
Zato, F A B , te AC B nije lijevo reducirano. C je suvino u lijevoj strani zavisnosti AC B X Y , X1 Y e FZ(R), X1 _ X
Lijeva redukcija od X Y je X1 Y ako je X1 Y lijevo reducirano s obzirom na F.
Piemo: Lred(X Y) = X1 Y Ako je F: f1, f2,.., fk , onda je lijeva redukcija od F Lred(F): Lred(f1), Lred(f2),.., Lred(fk) Dokaz:
F Lred(F) po definiciji Lred;
Lred(F) F po pravilu lijevog proirenja, tj. X Y XX1 Y Propozicija F Lred(F)
Zavisnosti oblika C Y zovu se nestandardne funkcijske zavisnosti. Kako izgledaju modeli r(R) od C Y ?
Propozicija Neka F ne sadri nestandardne zavisnosti. Tada je svaka funkcijska zavisnost, ija je lijeva strana jednolana, lijevo reducirana s obzirom na F |3|: Izbacivanje suvinih zavisnosti f e F je suvina(redundantna) u F ako f slijedi iz preostalih zavisnosti u F, tj.
F {f} f F je redundantan skup ako ima suvinih zavisnosti. F je neredundantan skup ako nema suvinih zav. F |3| Neredundantan skup Nrs(F)
Pr. F: A B Smjer ispitivanja suvinosti B C P B D P A B ? A B A D P A B , jer A B e P. F1: B C .. Ns(F): B C B D B D A B A B A D
Propozicija F Nrs(F) Propozicija F moe imati vie kanonskih pokrivaa;
kp1(F) kp2(F) za bilo koje kanonske pokrivae kp1, kp2 od F Napisati F koji ima dva razliita kanonska pokrivaa. Pr. F: A C, AB C, C DI, CD I, EC AB EI I
kp1(F) = kp2(F).
Redoslijed |1|, |2|, |3| je bitan. Na primjer, poredak |3|, |2| moe zahtijevati ponovno izvrenje |3| Pr. F: B A, D A, BA D
F je neredundantan skup; poslije |2| dobivamo redundantan skup, te treba korak |3|. Pr. F: A BC, B C
F je neredundantan skup; poslije |1| dobivamo redundantan skup. Pr. F: AB CD, A C F je lijevo reduciran skup; poslije |1| dobivamo skup koji nije lijevo reduciran. Poredak [1], [2], [3] garantira izvrenje svakog koraka samo jedanput Za skup zavisnosti F kaemo da je desno reduciran ako je svaka zavisnost iz F desno reducirana; X Y e F je desno reducirana ako u desnoj strani Y nema suvinih atributa, tj. ne postoji Y1 c Y :
F |F {X Y}| {X Y1} F |1|, |3| Dred(F)
Pr. R = ABCDE, F: A BC, AC BD, CD A, DE B, D AC . Nai kp(F). Odnos broja zavisnosti u F i u kp(F) ? KLJU (R, F) , K _ R . K je klju za (R, F) ako
(1) F K R (K je dedinstven identifikator) (2) Ne postoji K1 c K : F K1 R (minimalnost) Postupci odreivanja kljua:
(a) odozgo prema dolje; (b) odozdo prema gore (c) kljuni trik Pr. R = ABCD, F: AB C, B D, CD B
Nai sve kljueve za (R, F)
(a) Xk = ABCD, odmah vrijedi (1), tj. F Xk R Dalje smanjujemo Xk da zadovoljimo (2) uz uvanje (1) (c) Atributi koji nisu u desnoj strani zavisnosti iz F: to je atribut A. A je element bilo kojeg kljua K za (R, F) . Pogledajmo da li je A klju: F A R ? ZAT(A, F) = A, R A. Prema tome, A nije klju. (b) Proirujemo A dok ne dobijemo klju
Neka je Xk _ R skup atributa koji nisu u desnoj strani zavisnosti od F. Tada svaki klju K za (R, F) sadri Xk, tj. Xk _ K za bilo koji K. Ako je Xk klju za (R, F), onda je to jedini klju.
Kljuni, nekljuni atributi: A e R je kljuni atribut ako je A element nekog kljua za (R, F); Ako A nije element niti jednog od kljueva za (R, F) , onda je A nekljuni atribut. Pr. R = ABCDE, F , K1 = AC, BC Napisati kljune i nekljune atribute Rjeenje: KA: A, B, C ; NA: D, E
U kreiranju BP jedan od kljueva se specificira kao primarni klju PK. TIPOVI FUNKCIJSKIH ZAVISNOSTI TRIVIJALNA ZAVISNOST X Y je trivijalna ako je Y _ X . Pr. Trivijalne zavisnosti: AB A, B C . Netrivijalne zavisnosti: AB BC, C A Propozicija Neka je X Y e FZ(R) trivijalna f.z. Tada X Y vrijedi u svakoj relaciji r nad R PARCIJALNA FUNKCIJSKA ZAVISNOST Neka je (R, F) relacijska shema, X Y e FZ(R). X Y je parcijalna s obzirom na F ako -X1 c X : F X1 Y X X1 Y Pr. R = ABC, F: A B, AC B AC B je parcijalna, jer F A B A B nije parcijalna, jer F C B Zadatak
Pr. R = ABC, F: A B, AC B
Da li je BC A parcijalna f.z. s obzirom na F ? Postoji li parcijalna zavisnost nekljunog atributa od kljua ? Postoji li netrivijalna funkcijska zavisnost ija lijeva strana ne sadri klju ? TRANZITIVNA FUNKCIJSKA ZAVISNOST (R, F) , X Z e FZ(R) . X Z je tranzitivna funkcijska zavisnost s obzirom na F ako -Y _ R : (1) F X Y, (2) F Y Z i Y Z je netrivijalna f.z., (3) F Y X Tranzitivni dijagram: X Y Z nfz Zadatak:
R = ABCD, F: A B, B C
(a) Je li A B tranzitivna f. z. s obzirom na F ? (b) Je li A C tranzitivna f.z. ? (c) Je li B D tranzitivna f.z. ? (d) Postoji li tranzitivna zavisnost nekljunog atributa od kljua ? (e) Postoji li netrivijalna funkcijska zavisnost ija lijeva strana ne sadri klju ? ZAVISNOSTI SPOJA
Dekompozicija skupa atributa R , u oznaci d(R), je skup d(R) = {R1,.., Rk}, gdje je (1) Ri _ R za svaki i = 1,.., k , (2) Ri = C za svaki i = 1,.., k , (3)R1 R2 .. Rk = R
Izraz (R1,.., Rk) zovemo zavisnost spoja nad R . Pr. R = ABCD Zavisnosti spoja nad R : (AB, BCD), (ABCD, C) Nije zavisnost spoja nad R : (AB, C), (AB, E) Sa ZS(R) oznaavamo skup svih zavisnosti spoja nad R .
Zavisnost spoja (R1,.., Rm) e ZS(R) vrijedi u relaciji r nad R ako
r = H|R1|(r) .. H|Rm|(r) r se dobije prirodnim spojem svojih projekcija na komponente dekompozicije, tj. komponente zavisnosti spoja Pr. R = ABCD r(A B C D) ========== a a c a a b b c b b a c
Ispitati (AB, CD), (ABC, B, CD), (AC, ABCD) u relaciji r Zavisnost spoja (R1,..,Rn) e ZS(R) je trivijalna zavisnost spoja ako je Ri = R za neko i e {1,.., n}. Pr. R = ABCD; (AB, ABCD, A) je trivijalna z.s. (A, BC, BCD) ne netrivijalna z.s. IMPLIKACIJSKI PROBLEM ZA FUNKCIJSKE ZAVISNOSTI I ZAVISNOSTI SPOJA FZS(R) je skup svih funkcijskih zavisnosti i zavisnosti spoja nad R, tj.
FZS(R) = FZ(R) ZS(R) I-problem: F _ FZS(R), f e FZS(R)
Testirati F f ?
Neka je R = A1, A2,.., Am i d(R): R1,.., Rn dekompozicija od R. Konstruiramo tablicu T0(A1 A2 .. Aj .. Am) ================= R1 . . .
Ri . . Tij .. .
Rm . . . aj ako Aj e Ri
Tij = bij ako Aj e Ri Pr. R = ABCD, d(R): AB, BC, AD
T0 ( A B C D) ================= AB a1 a2 b13 b14 BC b21 a2 a3 b24 AD a1 b32 b33 a4 FZ i ZS transformacije (modifikacije) relacije koja se sastoji od simbola aj i bij. FZ modifikacija po X Aj Sluaj (A)
Ti Ti+1 X Aj X Aj ========= ======== x aj x aj x bij x aj
Sluaj (B)
Ti Ti+1 X Aj X Aj ======== ========== x bij x bij x bkj x bij
i < k ZS modifikacija po (R1,.., Rt)
Ti+1 = H|R1|(Ti) .. H|Rt|(Ti) Red t e Ti(A1, A2,.., An) je ciljni red ako se sastoji samo od simbola a, tj. ima oblik
t = (a1, a2,.., an). Stupac sc = Ai je ciljni stupac. ai ai : ai (R, F) , F _FZS(R) , d(R)
T0 T1 T2 . . Ti Ti+1 . . Tf
Sve mogue modifikacije koristei zavisnosti iz F Dobiveni Tf je model za F . ALGORITAM (rjeava I-problem)
(ZS)
Ulaz: (R, F), F _ FZS(R) , (R1,.., Rm) e FZS(R) Izlaz: Rezultat testa F (R1,.., Rm) Postupak:
1. Napisati T0 za dani R i d(R) : R1,.., Rm 2. Izraunati Tf 3. Ako cr e Tf , onda F (R1,.., Rm) Ako cr e Tf , onda F (R1,.., Rm)
(FZ)
Ulaz: (R, F) , F _ FZS(R) , X Aj e FZS(R) Izlaz: Rezultat testa F X Aj Postupak:
1. Napisati T0 za dani R i d(R): X, R 2. Izraunati Tf 3. Ako je Aj u Tf ciljni stupac, onda F X Aj Ako Aj u Tf nije ciljni stupac, onda F X Aj
Napomena: Postupak prekidamo im u postupku modifikacija dobijemo tablicu koja sadri ciljni red odnosno ciljni stupac. Navedeni postupak terminira, tj. dolazi se do modela za F ? Pr. R = ABCD, F: A B, C BD, (AC, BD)
Rijeiti implikacijske probleme:
(a) F AC D (b) F (AC, BD, C) Propozicija
X Y (XY, X(R XY)) Propozicija
(R1,.., Rk) (R1,.., Rk, X) ako je X _ Ri za neki Ri . Dekomponiranje preko funkcijske zavisnosti X Y XY X(R \ XY) SVOJSTVA DEKOMPOZICIJE d(R) UVANJE INFORMACIJE (R, F) relacijska shema, F _ FZ(R), d(R1,.., Rk) dekompozicija od R.
Dekompozicija d uva informaciju ako
F (R1,.., Rk) Navedena definicija kae da dekompozicija d uva informaciju ako za svaku relaciju r nad R vrijedi: ako je r model za F , onda je r model i za zavisnost spoja (R1,.., Rk), tj. r se dobije prirodnim spojem svojih projekcija na komponente dekompozicije. Pr. R = ABC, F: A B, C B, d(CB, CA)
Ispitati da li d uva informaciju. Treba rijeiti I-problem F (CB, CA) . Zadatak Napisati r(A, B, C) koja je model za F, a zatim provjeriti (CB, CA) u r .
UVANJE FUNKCIJSKIH ZAVISNOSTI Projekcija skupa funkcijskih zavisnosti F na skup atributa Ri definira se ovako:
(R, F), F _ FZ(R), Ri _ R
H|Ri|(F) = {X YeFZ(R) F X Y i XY _ Ri} Pr. R = ABC, F: A B, B C, R1 = AC
H|AC|(F): A C, + trivijalne zav. nad AC Uoite da C A e H|AC|(F) , jer F C A . Dekompozicija d(R) = R1,.., Rk relacijske sheme (R, F) uva funkcijske zavisnosti F ako za svaku relaciju r nad R vrijedi: ako je H|R1|(r) model za H|R1|(F) i ..i H|Rk|(r) model za H|Rk|(F), onda je r model za F (R, F) globalno (R1, H|R1|(F)) . . (Rk, H|Rk|(F))
lokalno H|R1|(r)
. . H|Rk|(r)
r(R)
Propozicija (uvanje funkcijskih zavisnosti)
Neka je zadana shema (R, F) , gdje je F _ FZ(R) . Dekompozicija d(R): R1,.., Rk uva zavisnosti F ako i samo ako
H[R1](F) .. H[Rk](F) F Zadatak dokazati navedenu propoziciju ALGORITAM ZA TESTIRANJE UVANJA FUNKCIJSKIH ZAVISNOSTI Ri-operacija na skupu atributa X
Ri(X, F) = X |(X Ri) F + Ri | Primjer: R = ABCD , X = AC , R1 = AB F : A B , B C Izraunati R1(X, F) Algoritam (uv. zav) Testiramo G F , gdje je G = HR1(F) .. HRk(F) G se nee eksplicite raunati !! Ulaz: (R, F) , F _ FZ(R) , d(R): R1,.., Rk Izlaz: Da ako d uva F Ne ako d ne uva F Postupak: (1) Izabrati zavisnost f: X Y iz F te ispitati da li d uva f; Ispitivanje koristi postupak: P: 1. X0 = X 2. Xi+1 = Rj(Xi, F) za neki Rj e d(R) 3. Prvi Xk za koji vrijedi Rt(Xk, F) = Xk , za svaki Rt e d(R) , je ZAT(X, G) = X G + .
4. G X Y , tj. d uva X Y ako i ako Y _ X G +
(2) d uva F ako i samo ako d uva svaku zavisnost f iz F . Napomena: f e F je sauvano ako f e G Primjer: R = ABCD , d(R) : AB , BC , CD F: A B , B C , C D , D A
Ispitati da li dekompozicija d uva F NORMALNE FORME Neka je A = {a, b, c,..} skup atomnih objekata . Koristei konstrukte za: Skupove, Liste, Relacije, dobivamo skupove neatomnih (sloenih) objekata Primjer A = Alf I R Dat Novac Graf atomni obj.
S = {{a, b}, C,..}; L = {<a, b, a, c>, <>, ..}; R = {r1, r2,..}; K = {<r1, S1, {a}>,..} sloeni obj. Atribut A je atomni (jednostavan) atribut ako se Dom(A) sastiji samo od atomnih objekata; u protivnome, A je sloen atribut. (R, F) je u 1NF ako su svi atributi iz R atomni atributi.
(R, F) je u poopenoj NF ako je svaki atribut iz R jednostavan ili sloen. 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF Strogost (jaina) normalnih formi U daljem pretpostavljamo: (R, F) je u 1NF . 2NF : (R, F) je u 2NF ako s obzirom na F ne postoji parcijalna zavisnost nekljunog atributa od kljua.
3NF : (R, F) je u 3NF ako s obzirom na F ne postoji tranzitivna zavisnost nekljunog atributa od kljua. Zatvara skupa zavisnosti F :
F + = {f e FZ(R) F f } BCNF (Boyce, Codd) : (R, F) je u BCNF ako za svaku netrivijalnu funkcijsku zavisnost X Y e F + vrijedi:
Lijeva strana zavisnosti X sadri klju od (R, F) . Slijedi uvodni primjer koji je motivacija za uvoenje normalnih formi. Uvodi se pojam redundancije i postupak uklanjanja redundancije. Primjer R = Artikl#, Dobavlja#, Grad; F: Dobavlja# Grad do (Artikl# Dobavlja# Grad) ======================== a1 d1 Zagreb a2 d1 Zagreb a3 d1 Zagreb a2 d3 Sisak a4 d2 Rijeka Semantika (a, d, g) e do znai da dobavlja d lociran u gradu g dobavlja artikl a . Redundancija: Ponavljanje grada dobavljaa za svaki artikl. Precizno, do(Artikl# Dobavlja# Grad) ========================= a1 d1 Zagreb a2 d1 ? ? = Zagreb, jer vrijedi Dobavlja# Grad Anomalije (AB) Anomalija brisanja: Brisanjem redova za artikle a1, a2, a3 (kada d1 prestane dobavljati navedene artikle), gubimo informaciju o dobavljau i pripadnom gradu (nepoeljan efekt) (AU) Anomalija upisivanja: Nemogunost upisivanja dobavljaa i pripadnog grada ako dani dobavlja trenutno ne dobavlja neki artikl. (AM) Anomalija modifikacije: Nemogunost nezavisnog auriranja vrijednosti atributa Grad . Napomena (AB) i (AU) ne moemo rijeiti pomou Null . Zato ? Uzrok promlema: Postoji parcijalna zavisnost nekljunog atributa Grad o kljuu K = Artikl#, Dobavlja. Znai, (R, F) nije u 2NF . Rjeenje problema: Koristei funkcijsku zavisnost Dobavlja# Grad inimo dekompoziciju (na dvije komponente) Dobavlja# Grad Dobavlja#, Grad Dobavlja#, Artikl# Ovakvo dekomponiranje osigurava uvanje informacije R1: R2: Relacija do zamjenjuje se s dvije relacije do1 = H[Dobavlja# Grad] (do) , do2 = H[Dobavlja# Artikl#] (do) Nae rjeenje ima sljedea svojstva:
(A) d(R): R1, R2 je 2NF dekompozicija, tj. pripadne relacijske sheme (Dobavlja#, Grad; H|Dobavlja#, Grad|(F)) i (Dobavlja#, Artikl#; H|Dobavlja#, Artikl#|(F)) su u 2NF ;
(B) d(R) uva informaciju (do = do1 do2);
(C) d(R) uva skup zavisnosti F , tj. HR1(F) HR2(F) F . Zadatak R = ABCD, F: A C, B A
Ispitati da li je (R, F) u 2NF. Ako nije izvrite 2NF dekompoziciju koja uva informaciju. (R, F) moe biti u 2NF , a da i dalje postoje redundancija (i anomalije). Primjer R = Radnik#, Poduzee, Grad F: Radnik# Poduzee, Poduzee Grad K: Radnik# (jedini klju) (R, F) je u 2NF, a nije u 3NF Zato ? Tranzitivni dijagram Radnik# Poduzee Grad nfz Klju Nekljuni atribut Propozicija Neka je (R, F) rel. shema i neka F ne sadri nestandardne zavisnosti (C Y) . Tada (A) svaka dvokomponentna rel. shema (A1A2, H|A1, A2|(F)) je u 2NF, 3NF, BCNF;
(B) (R, F) je u 2NF ako su svi kljuevi od (R, F) jednolani (sastoje se samo od jednog atributa) Nastavak primjera r(Radnik# Poduzee Grad) ===================== R1 In2 Zagreb R2 In2 Zagreb R3 In2 Zagreb R4 Bp Karlovac Semantika Ra, Po, Gr) e r : Radnik Ra je zaposlen u poduzeu Po koje je locirano u gradu Gr. Redundancija: ponavljanje grada poduzea za svakog zaposlenog radnika. R1 In2 Zagreb R2 In2 ? ? = Zagreb Zato ? Vrijedi Poduzee Grad Temeljem zavisnosti Poduzee Grad dobivamo dekompoziciju Poduzee Grad d(R): Poduzee, Grad ; Radnik#, Poduzee, Poduzee, Grad Poduzee, Radnik# d(R) je 3NF dekompozicija koja uva informaciju i zavisnosti Baza podataka sastojat e se od projekcija relacije r na komponente dobivene dekompozicije r1 = H[Poduzee, Grad](r) r2 = H[Radnik#, Poduzee](r) Vrijedi: r = r1 r2 Zadatak R = ABCD, F: A B, A C, A D Ispitati da li je (R, F) u 3NF. Ako nije, onda izvrite 3NF dekompoziciju koja uva informaciju (R, F) moe biti u 3NF, a da i dalje postoje redundacija i anomalije; zato se uvodi BCNF Primjer R = ABC, F: AB C, C B
(R, F) je u 3NF, a nije u BCNF. K1 = AB, K2 = AC ; C B netrivijalna fz Zato ? Koristei zavisnost C B (uzrok zato (R, F) nije u BCNF, dobivamo dekompoziciju: C B CB CA d(ABC): CB, CA d(ABC) je u BCNF , uva informaciju, ali ne uva zavisnosti F . Zadatak1 Dokaite da d(ABC) ne uva zavisnosti F Zadatak2 Ne postoji BCNF dekompozicija od (ABC, F) koja uva informaciju i zavisnosti. Dekomponiranje preko funkcijske zavisnosti X Y XY X(R \ XY) Propozicija (odnos normalnih formi) Pretpostavljamo (R, F) u 1NF. (A) Ako je (R,F) u BCNF onda je (R, F) u 3NF.
(B) Ako je (R, F) u 3NF , onda je (R, F) u 2NF. Dokazati navedenu propoziciju Propozicija Via normalna forma povlai niu normalnu formu Napomena: u dokazu koristiti kontrapoziciju PROBLEM OBLIKOVANJA BAZE PODATAKA (R, F) BP r(R)
Propozicija Za svaku shemu (R, F), gdje je F _ FZ(R), postoji 3NF dekompozicija koja uva informaciju i zavisnosti. Dokaz: (algoritam sinteze 3NF preko kanonskog pokrivaa) . Kanonski pokriva od F , kp(F) [1] Desno razbijanje [2] Lijeva redukcija [3] Izbacivanje redundantnih (suvinih) zavisnosti F kp(F) [1], [2], [3] ALGORITAM SINTEZE 3NF Ulaz: (R, F), F _ FZ(R) Izlaz: d(R): R1,.., Rk sa svojstvima (a) d(R) je 3NF dekompozicija, tj., (R1, H|R1|(F)),.., (Rk, H|Rk|(F)) su u 3NF; (b) d(R) uva informaciju; (c) d(R) uva zavisnosti. Postupak: 1. Izraunati kp(F); 2. Sinteza komponenti R1,.., Rk; 3. Dodavanje kljua; 4. Smanjenjenje broja komponenti dekompozicije Primjer (sinteza komponenti)
kp(F) : X1 A1 R1 = X1A1 X2 A2 R2 = X2A2 . . Xk Ak Rk = XkAk Primjer (dodavanje kljua) Ako niti jedna komponenta R1, R2,.., Rk ne sadri klju za (R, F), onda odredite klju K za (R, F) i dodajte K kao novu komponentu, tj. d(R): X1A1, X2A2,.., XkAk, K Primjer (smanjenje komponenti dekompozicije) (A) kp(F): X A1 X A2 R1 = XA1A1 Y B1 Y B2 R2 = YB1B2B3 Y B3 (B) d(R): AB, ABCD, CDE, CDEF, eliminacija podskupova d1(R): ABCD, CDEF Zadatak Pr. R = ABCDE, F: AB C, C B, CD A Primijeniti algoritam sinteze 3NF. Zadatak R = Predmet#, Nastavnik#, Blok-sat, Dan, Prostorija, Student#, Ocjena
F: Predmet# Nastavnik# Blok-sat, Dan, Prostorija Predmet# Blok-sat, Dan, Nastavnik# Prostorija Student#, Predmet# Ocjena Blok-sat, Dan, Student# Prostorija
Primijeniti algoritam sinteze 3NF. Ternarna veza sudjeluje (Radnik, Projekt, Posao) Radnik sudjeluje na Projektu vrei Posao Radnik Projekt Posao sudjeluje Konkretizacija Radnik Projekt Posao R1 R2 R3 P1 P2
Savjetnik Voa Dizajner
sudjeluje (Radnik Projekt Posao) ============================= R1 P1 Savjetnik R1 P2 Voa R2 P2 Dizajner sudjeluje (Radnik, Projekt, Posao) Radnik sudjeluje na Projektu vrei Posao Radnik Projekt Posao sudjeluje PP1: Jedan radnik na jednom projektu obavlja jedan posao PP2: Jedan posao jedan radnik obavlja na jednom projektu PP3: Danom projektu i poslu moe biti pridrueno vie radnika (nije ogranienje) Naznaiti kardinalitete u dijagramu 1..* 1..1 1..1 radnik( r# ,..) projekt( p# ,..) posao(naziv,..) sudjeluje( r#, p#, naziv, broj-sati-tj) naziv not null on delete cascade on update cascade Imamo sljedee funkcijske zavisnosti F: r#, p# naziv r#, naziv p# Promjena prolog primjera (veza s logikim oblikovanjem) PP1: Jedan radnik na jednom projektu obavlja jedan posao PP2: Jedan posao jedan radnik obavlja na jednom projektu PP3: Jedan posao obavlja se na jednom projektu Imamo sljedee funkcijske zavisnosti F: r#, p# naziv r#, naziv p# naziv p# ,..) r# radnik( ,..) p# projekt( ,..) naziv posao( tj) - sati - naziv, broj r#, p#, sudjeluje( Ova relacijska shema nije dobra Bit e dekomponirana uvaavajui naziv p# POSTUPCI OBLIKOVANJA BAZE PODATAKA AD Logiko oblikovanje LO (R, F) SRBP Konceptualno oblikovanje KO ER dijagram SRBP AD KO LO SRBP 4NF , 5NF, 6NF 4NF , 5NF i 6NF temelje se na zavisnostima spoja; 4NF definira se pomou zavisnosti spoja specijalnog tipa tzv. vieznanih zavisnosti. VIEZNANA ZAVISNOST Primjer R = Artikl#, Boja, Odjel# Semantika: Tabelirat emo artikle, njihovu boju i odjel koji koristi taj artikl. Ogranienje: Svakom artiklu odgovara skup boja, nezavisno od odjela, tj. skup je boja danog artikla isti za svaki odjel koji koristi taj artikl. Navedeno ogranienje piemo u obliku vieznane zavisnosti Artikl# Boja r(Artikl# Boja Odjel#) ================== A1 crvena O1 A1 plava O2 A1 plava O1 A1 crvena O2 U r vrijedi Artikl# Boja Artikl# Boja R1: Artikl#, Boja R2: Artikl#, Odjel# Vrijedi Artikl# Boja = (R1, R2) Zadatak Provjerite (R1, R2) u r. Zadatak U r vrijedi i zavisnost Artikl# Odjel# ? Formalizacija R - skup atributa, X, Y _ R. Izraz X Y zovemo vieznana zavisnost. X Y vrijedi u r nad R ako u r vrijedi (XY, X(R XY)) Primjer Ispitati u r : AB C, A D, AB B, AC BD r(A B C D) ========== 1 0 1 1 1 0 0 1 2 1 0 1
X Y je trivijalna vieznana zavisnost ako je Y _ X ili XY = R . Skup svih vieznanih zavisnosti nad R oznaavamo sa VZ(R) Propozicija (trivijalna vieznana zavisnost) Trivijalna vieznana zavisnost X Y e VZ(R) vrijedi u svakoj relaciji r nad R . Pravila rezoniranja o vieznanim zavisnostima 1. X Y X Y ; obrat ne vrijedi, 2. X Y X X (R XY) (komplementiranje)
3. X Y, Y Z X (Z Y) (tranzitivnost)
4. X Y, X Z X YZ (unija)
5. Iz X Y ne slijedi X Z , gdje je Z _ Y FVZ(R) skup svih funkcijskih i vieznanih zavisnosti nad R . RJEAVANJE I-problema ZA FUNKCIJSKE I VIEZNANE ZAVISNOSTI Koristimo Bazu zavisnosti
Neka je F _ FVZ(R) , X _ R . Neka je V skup vieznanih zavisnosti definiran ovako: (a) Svaka vieznana zavisnost iz F je u V; (b) Za svaku funkcijsku zavisnost X A1..Ak iz F , u V staviti vieznane zavisnosti X A1,.., X Ak . Baza zavisnosti od X s obzirom na V , BZ(X, V) , je particija od R X , dobivena sljedeim algoritmom: Algoritam (baza zavisnosti) Ulaz: X _ R , V _ VZ(R) Izlaz: BZ(X, V) Postupak: 1. X0 = R X 2. Izabrati zavisnost V W e V tako da bude V X0 = C i W X0 = C . Ako takva zav. ne postoji, onda je BZ(X, V) = X0, inae stavite 3. X1 = X0 W , X2 = X0 W . 4. Primijeniti 2. na X1 i X2 . 5. Navedeni postupak ponavljati dok ne doemo do skupova atributa T1,.., Tm koje vie nije mogue dekomponirati. 6. BZ(X, V) = {T1,.., Tm} Primjer R = ABCD, F: A B, B CD, C A Izraunati BZ(C, V) Algoritam (rjeava implikacijski problem)
Ulaz: F _ FVZ(R), f: X Y ili f: X Y , gdje su X, Y _ R, X Y = C . |X Y X (Y X) ; isto za | Izlaz: DA ako F f NE ako F f Postupak: 1. Transformirati F u V . 2. Izraunati BZ(X, V) . 3. F X Y ako i samo ako je Y unija nekih lanova iz BZ(X, V) . F X A ako i samo ako (a) A e BZ(X, V) i (b) Postoji Xi Yi u F takva da A Xi = C i A e Yi . Napomena: X A1...Ak X A1,.., X Ak Primjer R = ABCD, F: A B, B C, B D (a) Rijeiti I-probleme F A C ; F B A
(b) Pronai sve kljueve za (R, F) (R, F), F _ FVZ(R), Ri _ R . Projekcija skupa zavisnosti F na skup atributa Ri je skup zavisnosti H|Ri|(F) koji se definira ovako: (1) X Y e H|Ri|(F) ako X Y e FVZ(R) i F X Y i XY _ Ri ; (2) X Y e H|Ri|(F) ako X Y e FVZ(R) i -X Z e FVZ(R): F X Z i Z Ri = Y . Napomena: vieznana zavisnost X Y moe biti u H|Ri|(F) iako ne slijedi iz F Primjer R = ABCD, F: A B, B C, B CD Ispitati da li vrijedi: (a) A C e H|ABC|(F) ; (b) B D e H|ABD|(F) . (R, F) moe biti u BCNF, a da i dalje postoji redundancija (i anomalije). Primjer R = Artikl#, Boja, Odjel# F: Artikl# Boja K = R ; (R, F) je u BCNF Zato ? Postoji redundancija koja se oituje na slijedei nain: r(Artikl# Boja Odjel#) =================== A1 crvena O1 A1 plava O2 redundantno, jer A1 plava O1 A1 crvena O2 vrijedi Artikl# Boja Uzrok redundancije je netrivijalna vieznana zavisnost Artikl# Boja , ija lijeva strana ne sadri klju. Rjeenje problema: Artikl# Boja d(R): r reprezentiramo pomou H|R1|(r) i H|R2|(r) R2 = Atrikl#, Odjel# R1 = Artikl#, Boja Vrijedi r = H|R1|(r) H|R2|(r) uvanje informacije 4NF Neka je F _ FVZ(R) . (R, F) je u 4NF ako za svaku netrivijalnu zavisnost X Y iz F + vrijedi da lijeva strana X sadri klju za (R, F). Zadatak R = ABC, F: A C, B AC Ispitati je li (R, F) u 4NF, te ako nije, onda odrediti 4NF dekompoziciju koja uva informaciju FVS(R) je skup svih funkcijskih, vieznanih zavisnosti i zavisnosti spoja nad R . 5NF F _ FVS(R) (R, F) je u 5NF ako svaka netrivijalna zavisnost spoja iz F + ima svojstvo da sve njene komponente sadre klju. Primjer R = AB, F: (A, B) Da li je (R, F) u 5NF ? Ako nije, onda odredite 5NF dekompoziciju koja uva informaciju. 6NF F _ FVS(R) (R, F) je u 6NF ako u F + ne postoji netrivijalna zavisnost spoja. Primjer Napisati (R, F) koja je u 5NF, a nije u 6NF Primjer Zadana je relacijska shema (R, F), gdje je R = R#, ZO#, Plaa, Odjel, BudzetO F: Odjel BudzetO K1 = R# K2 = ZO# Analizirati (R, F) s obzirom na normalne forme