Algoritam sinteze Baze podataka

Embed Size (px)

DESCRIPTION

Izvođenje algoritma sinteze

Citation preview

  • 5/31/2018 Algoritam sinteze Baze podataka

    1/4

    U prvom koraku se vri transformacija polaznog skupa F u skup E.Transformacija se sastoji iz postupka

    reukcije levih strana funkcionalnih zavisnosti skupa F. Leve strane uoznaci ovog algoritma su

    obeleene sa X, a oblik zavisnosti je XA. Skupovi obeleja A i X moraju biti podskupovi skupa U.

    U prvoj narebi prvog koraka algoritma skup E poprima vrenost praznog skupa (POSTAVI E u E).

    Druga naredba je programska petlja REDUKCIJA, u kojoj je ulazna vrednost svaka funkcionalna zavisnost

    polaznog skupa F (RADI redukcija (X AF).

    U okviru ove programske petlje je ugnjeena jos jedna programska petlja. Ona nosi naziv RADI

    eliminacija_obelezja BX. U unutranjoj programskoj pelji eliminacija_obelezja se analizira svakoobeleje leve strane odabrane funkcionalne zavisnosti.To praktno znai a je svako to obeleje

    potencijalno suvino.U okviru unutranje petlje eliminacija_obelezja postoji jena nareba grananja

    koja ispituje a li je neko obeleje suvino ili nije u okviru analizirane grupe obeleja sa leve strane

    funkcionalnih zavisnosti u oznaci X. Sam proces ispitivanja ukljuuje formalni prisup definicije zatvaranja

    skupa obeleja u onosu na efinisani skup funkconalnih zavisnosti F.

    U uslovu narebe grananja izraz AKO JE A elemenat skupa zatvaranja obelezja X-B+u odnosu na F

    TADAse iz skupa obelezja X eliminise obelezje B, sto znaci da je obelezje B bilo suvisno. Ukoliko

    prethodni uslov nije zadovoljen TADAobelezje B se ne odstranjuje iz skupa X i ono nije suvino u skupu

    X. Unutrasnja ugnjeena petlja po nazivom eliminacija_obelezja se ponavlja za svako obeleje leve

    strane odabrane funkcionalne zavisnosti skupa X.

    Spoljna petlja vri redukciju za sve funkcionalne zavisnosti tipa XA iz F. Ovo praktino znai da dve

    ugnjeene programske petlje tipa DO WHILEanaliziraju svako obeleje leve strane svake funkcionalne

    zavisnosti polaznog skupa F.

    U okviru programske petlje REDUKCIJAse u svakom koraku u skup E, koji je u poetku bio prazan,

    dodaje zavisnost tipa XA (X odreuje A) za koju saa moemo garantovati da leva strana te zavisnosti

    u oznaci X kao skup obeleja nema suvinog obeleja.

    Rezultat prvog koraka algoritma sinteze je skup E koji u sebi sari iskljuivo redukovane funkcionalne

    zavisnosti oblika XA, u kojima svaka leva strana funkcionalnih zavisnosti sigurno ne sari ni jedno

    suvino obeleje.

    U rugom koraku algoritma sinteze se transformie skup E koji je rezultat prvog koraka algoritma u skup

    H koji prestavlja nereunantno pokrivanje za skup E. Prva nareba rugog koraka postavlja E u H, a

    kljunieo rugog koraka algoritma prestavlja upravljaka programska struktura tipa programske petljepo nazivom eliminacija_fz. Obzirom a u prvoj narebi se skup E kompletno prenese u skup H alja

    analiza u rugom algoritamskom koraku se onosi iskljucivo na H. Programska petlja eliminacija_fz

    analizira svaku funkcionalnu zavisnost skupa H. Analiza se vrsi na osnovu ugnjezjene strukture

    grananja, ge je uslov te strukture vezan za pojam zatvaranja skupa X u onosu na skup H bez

    posmatrane zavisnosti XA. Ako je naveeni uslov taan taa je funkcionalna zavisnost XA tranzitivna

    ili trivijalna i kao takva se eliminie iz skupa H. Postupak se ponavlja za svaku funkcionalnu zavisnost iz

  • 5/31/2018 Algoritam sinteze Baze podataka

    2/4

    skupa H i kao rezultat rugog koraka se obija skup H u kome su ostranjene sve tranzitivne i trivijalne

    funkcionalne zavisnosti i ovo nereunantno pokrivanje u oznaci H je prva prava prekretnica i ozbiljan

    rezultat algoritma sinteze.Nereunantno pokrivanje H praktino prestavlja polaznu osnovu

    eksplicitno za tredi i etvrti korak algoritma sinteze, e se redi a implicitno prestavlja osnovu i za

    korake 5, 6 i 7 ovog algoritma.

    U tredem koraku se vri particionisanje skupa H koji prestavlja pokrivac pocetnog skupa F u

    poskupove G o Xiu kome index i uzima vrednosti od 1m, a m prestavlja vrenost karinaliteta

    levih strana skupa H. Ceo tredi korak se sastoji iz ve programske petlje.

    Prva je RADI formiranje_podskupova u kojoj se posmatraju sve f-zavisnosti iz skupa H. U toj petlji se

    ujeno vrsi i analiza svake funkcionalne zavisnosti u H. U prvom koraku ove petlje se u promenljivu ind

    postavlja vrenost 0, sto ujeno prestavlja i zastavicu (semafor) u ovom algoritmu, onosno, ta

    promenljiva ima bivalentne vrednosti 0 i 1, na osnovu kojih se realizuju odredjeni delovi algoritamskog

    koraka. U okviru spoljne programske petlje se definise i unutrasnja programska petlja, koja trazi

    poskupove G o Xiiz skupa G o X, sve ok je vrenost inikatorajednaka nuli. AKO JE Y=Xi, sto znacida leva strana funkcionalnih zavisnosti YA je jenaka levoj strain particivnog skupa G o Xi, tada se

    zavisnost YA oaje na skup funkcionalnih zavisnosti G o Xi.

    Nakon ovog koraka se menja broj indikatora i postavlja se na 1, sto prakticno znaci da izlazimo iz petlje

    trazenja poskupova. Ako inicator nije promenio vrenost taa se u skup funkcionalnih zavisnosti G o

    Y dodaje samo jedna zavisnost YA i tako formira jenoclani skup G o Y. Ovaj jednoclani skup se

    oaje na skup G o X i to je ujeno i poslenja nareba spoljne petlje formiranja poskupova. Ova

    poslednja naredba je u sustini poslednja naredba za prvu iteraciju ove petlje, odnosno, ceo postupak se

    ponavlja za sve funkcionalne zavisnosti skupa H, koji predstavlja rezultat drugog koraka algoritma

    sinteze i ujedno je kronicko pokrivanje za pocetni skup F. Obzirom da se iterativni postupak ponavlja u

    okviru programske petlje formiranje_podskupova, tada mozemo zakljuciti da svaka funkcionalna

    zavisnost oblika YA iz H ce biti particionisana u neki o poskupova G o Xi. Konacan rezultat ovog

    koraka je skup G o X, koji sarzi skupove G o Xi, a skupova G o X iima onoliko, koliko postoji razlicitih

    levih strana u skupu H. U opstem slucaju, skupovi G o Ximogu biti jednoclani ili viseclani, sto zavisi od

    samog skupa H, onosno o priroe ogranicenja koja su ugrajena u kronicki pokrivac.

    Cetvrti korak vrsi izvajanje ekvivalentnih levih stran iz skupa G o X i smesta ih u skup J. Skupu J se u

    stvari nalaze ekvivalentni kljucevi koji se izdvajaju u ovom koraku.Sam process izdvajanja se realizuje

    kroz jednu jedinu programsku petlju pod nazivom ekvi_lhs.Ova programska petlja analizira svaki G oXitako sto prakticno posmatra sve participativne poskupove o G o X1 o G o Xn. Ovi participativni

    podskupovi su prakticno svi razliciti, sto je i posebno naglaseno u okviru ovog algoritamskog koraka,

    odnosno posmatra se G o Xije razlicito o G o Xj. Proces utvrdjivanja ekvivalentnih kljuceva se

    realizuje koriscenjem definicije zatvaranja skupa obelezja. U naredbi grananja, ciji formalni oblik glasi:

    Ako je (Xi)H+= (Xj)H

    +TADA su obelezja Xii Xju sustini ekvivalentni kljucevi. Ako je navedeni uslov tacan,

  • 5/31/2018 Algoritam sinteze Baze podataka

    3/4

    odnosno, ako su skupovi zatvaranja za obelezja Xii Xj, u onosu na skup H jenaki, taa na osnovu

    definicije zatvaranja se izvodi direktna implikacija da su Xii Xjdva ekvivalentna kljuca.

    Naredni korak algoritma, u slucaju ovog tacnog uslova, postavlja u skup J zavisnosti XiXji XjXi sa

    naredbom POSTAVIJJ U {XiXj, XiXj}. Obzirom da je doslo do promene u parcijalnim skupovima

    G (X) u novi skup G (X)G (Xi) U G(Xj).

    U G(X) se ostranjuje onaj skup zavisnosti u oznaci G (Xi) ako je bio jednoclan naredbom

    G(X)G(X)\{G(Xj)}.

    U slucaju da skup nije bio jednoclan iz njega se odstranjuju i sve funkcionalne zavisnosti koje direktno

    uticu na kreiranje ekvivalentnih kljuceva. Naredbom G(Xi)G(Xi)\{YA|(AXiU Xj) i (Y=Xiv Y=Xj}). TO jeujedno poslednja naredba u okviru naredbe grananja i istovremeno poslednja naredba naredbe

    programske petlje ekvi_lhs, koja se odnosi na prvu iteraciju ove programske petlje.

    Naredne iteracije programske petlje ekvi_lhsanaliziraju i sve ostale parcione podskupove i ti parcioni

    podskupovi prakticno predstavljaju i ukupne iteracije ovog programskog koraka iz cega se namecezakljucak da je broj iteracija ekvi_lhs jednak broju poredjenja dva po dva parciona skupa. To znaci da je

    ovo kombinatorno prilicno slozen algoritamski korak jer se traze skupovi zatvaranja za svako obelezje

    G(Xi) i mora se izvrsiti medjusobno poredjenje svih participativnih podskupova.

    U petom koraku se prakticno ponavlja ideja drugog koraka, ali na razlicitim skupovima koji se analiziraju.

    U prvom koraku algoritma se uniraju svi skupovi G(Xi) i prenose u jedan jedinstven skup G (X). U

    narenom koraku se u skup L prenese prazan skup u kome ce biti prenete pronajene tranzitivne

    funcionalne zavisnosti. Naredni korak je programska petlja tranzitivna_fzu kojoj se analizira svaka

    funkcionalna zavisnost oblika XA iz G. Za utvrdjivanje da li je neka fz tranzitivna ili ne, ponovo se

    koristi definicija zatvaranja skupa obelezja X u odnosu na skupove G i Jiz koje se izuzima zavisnostXA. AKO A pripaa skupu zatvaranja obelezja X u onosu na G U J bez XA, TADA je fz X>A

    tranzitivna i naredbom POSTAVILL U {XA}. Ovom naredbom se premesta fz XA u skup L.Ovo je

    ujedno i kraj prve iteracije u sestom koraku, a petlja tranzitivna_fzponavlja svoje iteracije za svaku

    funkcionalnu zavisnost skupa G.Rezultat ovoga koraka je moifikovan skup G u kome se nalaze sve

    novopronadjene tranzitivne fz.

    Sesti korak algoritma sinteze rekonstruise poskupove. U ovom koraku se posmatra svaka grupa G(Xi),

    G(Xi), G(Xi)ako su nastali u prethodnim koracima. Rekonstrukcija podskupova se realizuje tako sto

    se u novi G(Xi) postavljaju funkcionalne zavisnosti koje nisu u L, ali cija zatvaranja mogu biti jednaka. To

    znaci da se rekonstrukcija vrsi na osnovu rezultata treceg, cetvrtog i petog koraka. Konkretno se skupu

    G(Xi) pridruzuju svi njegovi ekvivalentni kljucevi, a istovremeno iskljucuju sve novouocene tranzitivne

    zavisnosti. Na taj nacin obijamo rekonstruisane poskupove G(Xi) koji sadrze samo neophodan i

    minimalan broj funkcionalnih zavisnosti.

    U sedmom koraku se formira skup sema relacija sa jednom jedinom strukturom programske petlje koja

    prolazi kroz sve poskupove G(Xi). Ovaj prolazak u okviru petlje izvaja sva obelezja skupa G(Xi) i

    prenosi ih u skup Rinaredbom POSTAVIRiattr (G(Xi)). Naredna naredba puni kljuceve seme relacije tako

  • 5/31/2018 Algoritam sinteze Baze podataka

    4/4

    sto sve leve strane fz skupa G(Xi) postavlja u skup Kinaredbom POSTAVIKilhs (G(Xi)). U skup S ,koji je

    prvom naredbom u ovom koraku napunjen, praznim skupom se prenose novonastali skupovi naredbom

    POSTAVISS U {Ni(Ri, Ki)} gde su u skupu Ni skupovi obelezja, a u skupu Ki skupovi kljuceva skupa

    G(Xi). Rezultat prve iteracije sedmog koraka je kreiranje seme relacije oblika N(Ri, Ki) sto znaci da su

    jedina ogranicenja ove seme relacije ogranicenja kljuca koji je sintetizovan i dobijen kao jedan od

    krajnjih rezultata kompletnog algoritma. Iterativni postupak programske petlje RADI

    skup_sema_relacija,u okviru semog koraka, se ponavlja sve ok postoji skupova G(Xi) skupa G(X). To

    prakticno znaci da je broj iteracija sedmog koraka jednak kardinalnosti skupa G(X).