Relatsiooniline andmebaaside teooria II. 6. Loeng Anne Villems ATI
Organiatoorsed probleemid 4. ja 5. loengu punktid on Moodle s Pooltel on 4. loengu ül. Tagasiside puudu. Kahoot i järgi punktide kandmine võtab ca pool tundi. Individuaalülesannete tagasiside ca 10 tundi. Tingimus: Kahoot is kasutame perekonnanime Vajadusel lisame eesnime selle järgi Tänane Kahoot tuleb loengu lõpus.
Harjutus 1 Olgu teada, et relatsioonil R(A, B, C) kehtivad funktsionaalsed sõltuvused: Leida F +. F= {A B, A C} Mitu funktsionaalset sõltuvust on F + -s?
Loengu plaan Võti funktsionaalsete sõltuvuste põhjal. Kas X Y kuulub F +? Sõltuvuste pere Relatsiooni dekompositsioon Kadudeta ühendi omadus
Esimene kasulik tulemus: võti Relatsiooni võtme definitsioon: Def. Kui relatsioonil R(A 1, A 2,, A n ) kehtib funktsionaalsete sõltuvuste hulk F, siis atribuutide hulka X nimetatakse relatsiooni R võtmeks, kui on täidetud 2 tingimust: 1. X A 1, A 2,, A n F + 2. Ei leidu sellist Y X, et Y A 1, A 2,, A n F +
Kahoot-küsimustik Aadress: https://kahoot.it Ekraanilt saate 4-kohalise koodi Sisetate koodi Siis oma perekonnanime: AINULT perekonnanimi Vajadusel paremale eesnimi Ei kasuta hüüdnimesid näit. Swaggy Vastamise aeg: 1 min igal küsimusel
Relatsiooni võtmed Võtmeid võib olla palju. Me nimetame neid võimalikeks võtmeteks (ingl. k. candidate key). Edaspidi eeldame, et võtmed on määratud vastavalt funktsionaalsetele sõltuvustele.
Probleemid F + leidmisega F + leidmine on eksponentsiaalse keerukusega. F + maht (sõltuvuste arv hulgas) on eksponentsiaalne atribuutide arvu n suhtes. Kõik algoritmid, mis kasutavad F + läbivaatamist, on eksponentsiaalse keerukusega n suhtes. Kas saab leida väiksema keerukusega algoritme?
Küsimus: kas X Y F +? Kas sellele küsimusele saab vastata ilma F + leidmata? Jah, saab. Leiame hulga X sulundi. Def. Olgu antud R(A 1, A 2,, A n ) ja F ja mingi atribuutide hulk X {A i }. Hulga X sulundiks X + sõltuvuste hulgal F nimetatakse kõigi selliste atribuutide hulka A mille puhul X A on tuletatav Armstrongi aksioomide põhjal hulgast F. Lemma: X Y on tuletatav parajasti siis, kui Y X +.
Algoritm X + leidmiseks Antud: R(A 1, A 2,, A n ), F ja X. Moodustame atribuutide hulkade jada X (0),X (1), järgmiste reeglite alusel: 1. X (0) = X 2. X (j) saamiseks võtame X (j-1) ja lisame sellised atribuudid A, mille jaoks peres F on sõltuvus Y Z, Y X (j-1) = ja A Z. Lõpetame, kui kas X (j) ={A i } või X (j) = X (j-1).
Näide tahvlile! Olgu antud R(A, B, C, D, E, G) ja F, mis koosneb 8 sõltuvusest: AB C D EG C A BE C BC D CG BD ACD B CE AG ja olgu antud X=BD Leidke X +. (Tulemus X + = ABCDEG) X (0) = {B, D} X (1) = {B, D, E, G} X (2) = {B, D, E, G, C} X (3) = {B, D, E, G, C, A,D}
Teoreem: Algoritm X + leidmiseks on korrektne Esimene tõestuse pool: näitame, et kui A ilmub mingisse X (j), siis ta peab kuuluma X +. Teine pool: Kui A on X + -s, siis leidub mingi X (j), selline, et A X (j).
Sõltuvuste pere Meile ei meeldi algoritmid, mis vaatavad läbi F +. Leidsime juba ühe algoritmi, mis vaatab läbi F. Kas saab F väiksemaks muuta?
Sõltuvuste pere F kate G Sõltuvuste ekvivalents: Olgu sõltuvused pered F ja G Me ütleme, et nad on ekvivalentsed, kui F + = G + e. ütleme, et G katab F (ja vastupidi). Kontrollimiseks on vaja iga X Y F puhul kontrollida, kas ta kuulub G + Seda kontrollime, leides X + G järgi ja vaadates, kas Y X + Sama iga sõltuvuse korral G, kas Y X + F järgi.
Relatsioonide dekompositsioon Tähistame relatsiooni R atribuutide ( tunnuste) hulka {A 1, A 2,, A n } tähega U. Def. Relatsiooni R(U) dekompositsiooniks nimetatakse relatsiooni R asendamist relatsioonide hulgaga ={R 1, R 2,, R k } selliselt, et Hulgad U i võivad olla lõikuvad.
Milleks dekompositsioonid? See annab andmebaasi administraatorile võimaluse läbi viia salaplaan: R(U) asemel hoida andmebaasis relatsioonide hulka R 1 (U 1 ), R 2 (U 2 ),, R k (U k ). Saame nende R i -de seisundid R seisundist projektsiooniga. Salaplaan õnnestub, kui suudame R(U) seisundi taastada R 1 (U 1 ), R 2 (U 2 ),, R k (U k ) seisunditest loomuliku ühendi operatsiooniga. Kas see alati on nii? Vaatame näidet!
Näide Olgu R(A, B, C) seisund järgmine: Olgu dekompositsioon ={R 1, R 2 ) selline, et R 1 =(A, B) ja R 2 =(B, C), siis on R 1 seisund ja R 2 seisund vastavalt: A B A C Ja nende loomulik ühend 1 2 1 2 (üle A) 1 3 Tulemuses on 4 rida! Info läks kaotsi! A B C 1 2 2 1 2 1 1 3 1 1 1 A B C 1 2 2 1 2 1 1 3 2 1 3 1
Kadudeta ühendi omadus Def. Olgu antud R, F ja ={R 1, R 2,, R k }. Olgu r relatsiooni R mistahes seisund ja r 1, r 2, r k vastavalt R 1, R 2,, R k seisundid, siis me ütleme, et dekompositsioon on kadudeta ühendi omadusega F suhtes, kui r = (r) (r)... (r) on siin loomuliku ühendi märk. s.t. relatsiooni seisund on taastatav oma vastavatest projektsioonidest. Eelmise näite dekompositsioon ei olnud seda!
Kadudeta ühendi kontrolli algoritm Antud R(A 1, A 2,, A n ), F ja ={R 1, R 2,,R k }. Meetod: Ehitame tabeli n veeru ja k reaga, elemendiks a i, kui R i -s esineb tunnus A j, b i,j vastasel juhul. Kordame: vaatame läbi tabeli read ja F. Kui leiame X Y sellise, et kaks tabeli rida langevad kokku X osas, muudame Y nii, et nad langevad ka kokku (s.t. asendame b i,j a i -ga või kui mõlemad on erinevad b-d, muudame indeksid kokkulangevaks)
Näide: Hange( Hankija nimi, Aadress, Toode, Hind) F: {Firma nimi Aadress; Firma nimi, Toode Hind } Kas Hankija(Firma nimi, Aadress) ja Tarne ( Firma nimi, Toode, Hind) on kadudeta ühendi omadusega? Firma nimi Aadress Toode Hind a 1 a 2 b 1,3 b 1,4 a 1 b 2,2 a 2 a 3 a 4 See dekompositsioon on kadudeta ühendi omadusega.
Erijuht: k=2, s.t. R(U),F ja =(R 1 (U1), R 2 (U2)) Teoreem: k=2 korral annab =(R 1, R 2 ) kadudeta ühendi parajasti siis kui kehtib üks kahest funktsionaalsest sõltuvusest: U 1 U 2 U 1 -U 2 või U 1 U 2 U 2 -U 1 NB! Nõuab, et üks kuulub F + Tõestus: U 1 U 2 U 1 -U 2 U 2 - U 1 R1 a a a a b b R2 a a b b a a