I DIO
UVODNE TEME
2
3
1. UVOD Teoretske osnove relacijskog modela podataka postavio je Codd (1970). U razdoblju od 1970., pored Codda, mnogi su istraživači sudjelovali u daljnjem razvoju modela. Danas je relacijski model podataka solidan teoretski aparat i jedan od ključnih elemenata teorije baza podataka. Matematičke osnove ovog modela omogućavaju nam da elegantno i precizno definiramo pojmove i izvodimo dedukciju. Upravo su te karakteristike jedan od osnovnih razloga važnosti relacijskog modela za teoriju baza podataka kao i uspješnu primjenu ovog modela u praksi. Osnovne komponente od kojih se sastoji relacijski model podataka su: - skup objekata koje koristimo kao osnovne elemente kod izgradnje modela baze podataka, - skup operacija koje možemo izvoditi nad objektima modela, - skup pravila integriteta baze podataka. U okviru relacijskog modela razvijene su i neke, manje ili više nezavisne teorije kao što su, na primjer, teorija relacijskih jezika, teorija oblikovanja baza podataka i s njom usko povezana teorija zavisnosti. Mogućnosti primjene ovog modela izuzetno su velike. Izmeñu ostalog, model se koristi kao alat za razvoj relacijskog softvera (upravljački sistemi relacijskih baza podataka i prateći relacijski softver), razvoj programskih jezika za rad s relacijskim bazama podataka (SQL, QUEL, itd.), razvoj teorije oblikovanja baza podataka (postupak normalizacije), istraživanja svojstva podataka (teorija nezavisnosti), itd. Jedan od osnovni ciljeva relacijskog modela podataka jest da život krajnjeg korisnika relacijske baze učini što jednostavnijim i udobnijim. Ono što krajnji korisnik treba znati o relacijskom modelu, da bi mogao koristi relacijsku bazu, jednostavno je i, rekao bih, samo po sebi razumljivo. Relacijske baze su omogućile da stručnjaci različitih profila mogu koristiti podatke u bazi. Za razliku od krajnjih korisnika relacijske baze, informatičari se nalaze u nešto manje udobnom položaju. Njihov zadatak je da osiguraju uvjete za optimalan rad relacijskog softvera, razvoj i, eventualno, istraživački rad. Da bi se mogao uspješno obaviti bilo koji od ovih zadataka neophodno je dobro poznavanje relacijskog modela podataka. Teorija oblikovanja baze podataka, zajedno s teorijom zavisnosti, možda su najsloženiji elementi relacijskog modela podataka. Ujedno, to su elementi s kojima će se informatičar koji radi s bazama podataka, posebno često susretati. Ova knjiga trebala bi mu pomoći u razumijevanju i savladavanju potrebne materije. U prvom dijelu knjige definirani su i obrañeni neki osnovni pojmovi kao što su model, entitet, svojstvo, informacija, podatak itd. Osnovne komponente relacijskog modela obrañene su u drugom dijelu. U trećem dijelu obrañena je teorija oblikovanja baze podataka i oni elementi teorije zavisnosti koji su potrebni za njeno razumijevanje. Nastojao sam da ovu, dosta apstraktnu materiju, semantičkim primjerima što više približim čitaocu. Znajući da neki čitaoci ne poznaju logiku prvog reda trudio sam se da odgovarajuću materiju izložim na što jednostavniji i pristupačniji način. Ako se ipak jave problemi, vjerujem da će korisno poslužiti monografija (Čubrilo, 1988).
4
5
2. MODELI Direktnim promatranjem okoline, ili učenjem na neki drugi način, čovjek cijelog života prikuplja informacije o okolini u kojoj živi i djeluje, kao i o sebi samom. Ukupan broj informacija koje čovjek na taj način uspije prikupiti je velik. Da bi prikupljene informacije mogle biti korisno upotrijebljene, čovjek ih mora sistematizirati i rasporediti u elemente odgovarajuće strukture. Ovako strukturirane informacije možemo smatrati modelom odreñenog segmenta realnog svijeta. Modeli se koriste na različitim područjima i na različite načine. Dvije letjelice iste serije proizvodnje mogu se meñusobno koristiti kao modeli. Globus, izrañen od papira, metala i drva koristi se kao model zemaljske kugle. Teorija koja opisuje neki proces, model je tog procesa. Opis nekog dogañaja možemo smatrati modelom tog dogañaja. Prije nego što prijeñem na modele koji se koriste u teoriji baza podataka, čini se da će biti korisno reći nekoliko riječi o modelima općenito. Original i model tog originala moraju biti meñusobno analogni, odnosno moraju imati meñusobno jednake strukture. Pri tome pod strukturom nekog sustava podrazumijevamo odabrani skup odnosa meñu dijelovima na koje smo sustav podijelili. Obratimo pažnju na činjenicu da su podjela sustava na dijelove, kao i izbor odnosa meñu tim dijelovima proizvoljni, odnosno odreñeni razlogom zbog kojeg definiramo strukturu. Zahvaljujući tome, na istom sustavu možemo definirati više različitih struktura i u skladu s tim napraviti više, meñusobno potpuno različitih modela istog sustava. Strukture, definirane na istom objektu u pravilu ne će biti jednake i u skladu s tim modeli istog objekta u pravilu nisu meñusobno analogni. Uvjet da jedan sustav bude model drugog sustava jest da su ta dva sustava meñusobno analogna. S obzirom na to da je analogija simetrična, ako neki sustav B može biti model sustava A, onda i sustav A može biti model sustava B. Tako će na primjer teorija nekog procesa za inženjera koji se tim procesom bavi biti model procesa. Istovremeno će za teoretičara svaki proces koji se odvija u skladu s tom teorijom biti model teorije. Koji ćemo od dva analogna sustava smatrati originalom a koji modelom, ovisit će o nama. Modele općenito koristimo da bi na njima izveli operacije koje bi bilo teško, skupo ili nemoguće izvesti na originalu. Od dvije letjelice iz iste serije, letjelicu koja je havarirana smatrat ćemo originalom, a letjelicu koja nije doživjela havariju modelom na kojem ćemo pokušati ustanoviti uzrok havarije. Takva ispitivanja nije moguće izvesti na havariranoj letjelici koja je padom, eksplozijom i požarom uništena. Razlog za korištenje modela ne mora uvijek biti ovako dramatičan. Ponekad to može biti činjenica da nam je neku operaciju jednostavnije ili prijatnije izvoditi na modelu umjesto na originalu. Model se sastoji od nekog skupa elemenata koji prikazuju odgovarajuće dijelove originala. Svaki dio originala mora biti moguće preslikati na odgovarajući element modela. S obzirom na simetričnost analogije, obično se kaže da izmeñu originala i modela mora postojati korespondencija. Dosad smo polazili od pretpostavke da model kao takav postoji (treba ga eventualno odabrati izmeñu nekog većeg broja objekata). U stvari, za nas je interesantniji problem gradnje modela. Pri tome polazimo od nekog skupa elemenata od kojih, prema odgovarajućim pravilima, sastavljamo naš model. Jasno je da niti skup elemenata od kojih model sastavljamo, niti skup pravila prema kojima ga sastavljamo, ne mogu biti proizvoljni. Da bismo mogli izgraditi model nekog segmenta realnog svijeta, skup elemenata i skup pravila moraju biti u skladu s pojavama i zakonitostima koje vrijede u tom segmentu. Skup pravila i skup elemenata koje koristimo za izgradnju modela, zajedno tvore model našeg segmenta realnog svijeta na višoj razini apstrakcije. U ovakve modele spadaju na primjer matematika, kartografija, slikarstvo, prirodni jezici itd.
6 Meñu ovakvim modelima najpoznatiji su i, bez sumnje se najviše koriste prirodni jezici. Izmeñu okoline u kojoj živi i načina na koji živi jedna ljudska zajednica, te jezika koji ta zajednica koristi mora postojati korespondencija. Ta korespondencija se može najlakše uočiti na rječniku. Tehnološki razvijene zajednice koristit će niz riječi koje nekoj, u tom pogledu manje razvijenoj zajednici, nisu potrebne. Na primjer, Eskimi koriste nekoliko desetaka izraza da bi označili različite vrste snijega. U tehnološki razvijenoj zajednici kvaliteta snijega nije toliko važna i odgovarajuće riječi ne postoje. U našem jeziku postoji ogroman broj izraza i riječi pomoću kojih je moguće vrlo precizno i ekonomično odrediti stupanj i vrstu rodbinskog odnosa. Nema sumnje da je precizno odreñivanje vrste rodbinskog odnosa izuzetno važno za zajednicu čiju stabilnost osigurava (ili je to do jučer činila) krvna osveta. U jezicima nekih naroda ti izrazi ne postoje jer očigledno tim zajednicama već duže vremena nisu potrebni. Na sličan način i pravila, od kojih se jezik sastoji, odražavaju okolinu i način života zajednice koja se tim jezikom koristi. Jezik je model svih mogućih dogañaja i situacija s kojima se zajednica, koja jezik koristi, može susresti. Posebnu grupu modela tvore formalni, odnosno aksiomatski sustavi. Pod formalnim sustavom podrazumijevamo skup definicija kojima su precizno odreñeni elementi (obično se nazivaju objektima) i pravila kojima su odreñeni dozvoljeni odnosi meñu objektima ili operacije nad objektima sustava. Definicije, od kojih se sastoji formalni sustav, moraju biti meñusobno nekontradiktorne. Bez obzira na našu interpretaciju objekata nekog formalnog sustava, operacije nad tim objektima mogu se izvoditi isključivo u skladu s pravilima čije definicije su dio sustava. Ako nam te operacije ne odgovaraju, možemo promijeniti formalni sustav. Izmeñu originala i modela mora postojati korespondencija. Ona predstavlja osnovu za preslikavanje dijelova jednog objekta na dijelove drugog. Pogledajmo kako stoji s korespondencijom izmeñu formalnog i nekog drugog sustava. Ako je taj drugi sustav formalan (ili ga je moguće definirati kao formalan sustav), onda je moguće formalno definirati korespondenciju. U suprotnom to neće biti moguće pa će preslikavanje izmeñu dva sustava će biti neformalno (odnosno približno). Kao što ćemo odmah vidjeti, to je za nas dosta tužno. Naime, modeli realnog svijeta, koji se koriste u teoriji baza podataka, jesu formalni sustavi. S druge strane, realni svijet nije formalni sustav. Zbog kompleksnosti nije, moguće (a vjerojatno nikad i neće biti) opisati realni svijet skupom meñusobno nekontradiktornih definicija. Kao što kaže Date (1986b), trik kod definiranja formalnog sustava koji ćemo koristiti kao model realnog svijeta, sastoji se u tome da nañemo takav formalni sustav koji će nam omogućiti da na zadovoljavajući način prikažemo one segmente realnog svijeta koji su za nas značajni.
2.1. BAZA PODATAKA I MODELI Sve teorije koje se bave programiranjem polaze od pretpostavke da je algoritam po kojem će se obrada izvoditi dobro definiran i poznat. Specifičnost oblikovanja baze podataka jest da se polazi od pretpostavke da je u trenutku definiranja modela samo približno poznat segment realnog svijeta koji će ona obuhvaćati. Osim u nekim posebnim slučajevima, nitko ne može znati koje obrade će naknadno biti dodane na bazu podataka i koji podaci će tim obradama biti potrebni. Pri tome dodavanje novih podataka u bazu, kao i novih elemenata u model, ne smije izazvati zastoj u tekućoj obradi. Zbog toga je osnovni zahtjev kod oblikovanja baze podataka da bude osigurano neometano širenje baze podataka. Uz pojam baze podataka veže se cijeli niz različitih modela. Da bi lakše odredili ulogu i značenje relacijskog modela, ukratko ćemo se osvrnuti na neke tipove modela i njihov meñusobni odnos. Studijska grupa ANSI/X3/SPARC (1975), predložila je model baze podataka koji je danas poznat kao ANSI/X3/SPARC model. Na osnovu tog modela razvijeni su
7 upravljački sustavi baze podataka s arhitekturom na tri razine (slika 2.1.). Evo o čemu se, zapravo, radi. ANSI/X3/SPARC model povezuje u cjelinu tri podmodela baze podataka: - eksterni, - konceptualni, - interni. Eksterni model
Konceptualni model
Interni model
model A A model B
B C
model C Slika 2.1 Odnos podmodela u ANSI/X3/SPARC modelu Svaki od ta tri podmodela prikazuje odreñeni aspekt baze podataka. Svaki od njih predstavlja sliku iste baze podataka, odnosno istog segmenta realnog svijeta. Eksterni i konceptualni model spadaju u tzv. logičke modele u okviru kojih je definiran sadržaj baze podataka. Interni model spada u tzv. fizičke modele kojima je definiran način i mjesto na koje je odreñeni sadržaj pohranjen u memoriji. Konceptualni model zauzima središnje mjesto u ANSI/X3/SPARC modelu i predstavlja vezu izmeñu eksternog i internog modela. U okviru konceptualnog modela sadržaj čitave baze podataka definiran je pomoću shema. Grubo rečeno, eksterni model možemo zamisliti kao skup konceptualnih modela krajnjih korisnika baze podataka. Pomoću takvog, korisničkog, modela definiran je dio sadržaja baze podataka kojim raspolaže odreñeni tip korisnika. Interni model, kao i konceptualni, obuhvaća sadržaj čitave baze podataka, ali za razliku od konceptualnog modela, interni sadrži parametre relevantne za pohranjivanje podataka na memoriju (formati zapisa na memoriji, organizacija, način prikazivanja pojedinih vrsta semantičkih odnosa itd.). ANSI/X3/SPARC model dobro je definirao proces projektiranja baze podataka. Proces projektiranja počinje snimanjem potreba pojedinih tipova korisnika i definiranjem njihovih modela. Ujedinjavanjem modela pojedinih tipova korisnika definira se model integrirane baze podataka. Model integrirane baze odgovara približno konceptualnom modelu. Konačno, na osnovi ovog modela te karakteristika i mogućnosti upravljačkog sustava baze podataka, definira se interni model. Kao što je spomenuto, na osnovi modela ANSI/X3/SPARC razvijeni su upravljački sustavi baze podataka na tri razine. Većina upravljačkih sustava baze podataka, koji se danas koriste, imaju arhitekturu na tri razine ili neku varijantu te arhitekture. Prednost ovakvih sustava je da koristeći podmodele osiguravaju relativno visok stupanj nezavisnosti izmeñu aplikativnih programa i podataka u bazi. Aplikativni programi komuniciraju s bazom podataka preko odgovarajućeg eksternog modela. Zahtjev za učitavanje odreñenih podataka aplikativni program upućuje na eksterni model, odnosno odgovarajući korisnički model. Upravljački sustav baze preslikava eksterni model na konceptualni i konceptualni na interni model. Ovim postupkom upravljački sustav odreñuje adresu na kojoj su pohranjeni traženi podaci (slika 2.2). Pretpostavimo da je aplikativni program modificiran tako da su potrebni neki podaci koji se ne nalaze u odgovarajućem korisničkom modelu. Korisnički model, zbog toga, mora biti proširen. Ove izmjene neće utjecati na interni model, odnosno raspored podataka na memoriji. Isto tako, preraspodjela podataka u bazi, te odgovarajuća
8 modifikacija internog modela neće utjecati na eksterni model i logiku aplikativnih programa koji koriste bazu. Podmodeli sadržani u ANSI/X3/SPARC modelu nalaze se na istoj razini apstrakcije, a razlikuju se meñusobno prema aspektu promatranja sadržaja baze. Modeli istog segmenta realnog svijeta mogu se meñusobno razlikovati i po razini apstrakcije na kojoj se nalaze. Upravo su u takvom meñusobnom odnosu: - baza podataka, - model baze podataka, - model podataka. model A
model B
Eksterni model model C
Konceptualni model
Interni model
Slika 2.2 Raspored polja u ANSI/X3/SPARC modelu Baza podataka je model odreñenog segmenta realnog svijeta na najnižoj razini apstrakcije. Svaki objekt u segmentu realnog svijeta prikazan je u bazi podataka odgovarajućim skupom podataka kojima su opisana svojstva objekta. Zasad ćemo za ovakav skup podataka koristiti termin opis objekta. Skup opisa istovrsnih objekata povezan je u bazi podataka u cjelinu za koju, ovisno o tipu baze, koristimo termine datoteka ili relacija. Model baze podataka nalazi se na višoj razini apstrakcije. U modelu baze ne postoji ništa što bi odgovaralo pojedinom objektu u segmentu realnog svijeta. Za svaki skup istovrsnih objekata (klasa ili tip) u modelu postoji shema. U okviru sheme definirane su vrste svojstava, koje ulaze u opis objekta. Koncept modela podataka prvi je definirao Codd (Date, 1986b) u kontekstu relacijskog modela. Model podataka nalazi se na najvišoj razini apstrakcije. Prema Coddu, model podataka je formalni sustav koji se sastoji od slijedeće tri komponente: - skup objekata koji su osnovni elementi baze podataka, - skup operacija koje možemo izvoditi nad objektima, - skup pravila integriteta baze podataka. Model podataka koristi se, izmeñu ostalog, kao alat kod izrade modela baze podataka.
2.2. RELACIJSKI MODEL PODATAKA Relacijski model podataka bio je prvi model podataka koji je definiran kao formalni sustav. Modeli podataka kao što su hijerarhijski i mrežni, postojali su i
9 koristili se znatno prije nego što je definiran relacijski model. Meñutim, kao formalni sustavi, ovi modeli definirani su tek naknadno. Relacijski model bavi se isključivo logičkim aspektima baze podataka. U ANSI/X3/SPARC modelu, relacijski model možemo koristiti kod definiranja eksternog i konceptualnog modela baze. Relacijski model se ne bavi problemima rasporeda podataka i tehnikama njihovog memoriranja, kao ni tehnikama pretraživanja baze. Danas postoji, i u praksi je provjeren, čitav niz upravljačkih sustava relacijskih baza podataka (kraće relacijska baza). Prvi takvi sustavi bili su nepotpuni i dosta spori. Veći dio tih nedostataka uklonjen je. Jedan dio starijih baza podataka, zasnovanih na mrežnom modelu podataka, prilagoñen je zahtjevima relacijskog modela i danas se na tržištu nudi kao relacijska baza. Rezultat ovakve situacije je da se u jednom trenutku na tržištu pod nazivom relacijska baza pojavio vrlo velik broj proizvoda, koji su se po svojim mogućnostima značajno razlikovali. Kao ilustraciju interesa za relacijske baze, kako kod kupaca, tako i kod proizvoñača softvera, spomenimo da je Codd u tri navrata (1982. 1985a, 1985b) definirao kriterije za ocjenjivanje relacijskog upravljačkog sustava, kako bi omogućio neometan razvoj relacijskog softvera.
10
11
3. REALNI SVIJET Da bi mogli preslikati neki segment realnog svijeta na neki od formalnih sustava, moramo znati od čega se sastoji taj segment. Prije nego što kažemo nešto više o relacijskom modelu, morat ćemo definirati osnovne elemente realnog svijeta. Kao što smo rekli, realni svijet nije formalni sustav. Skup definicija s kojima ćemo ga pokušati opisati bit će nepotpun i meñusobno kontradiktoran. Zbog toga će se, kod preslikavanja na formalni sustav pojaviti problemi. Opće je prihvaćena ideja da se realni svijet sastoji od "objekata", koje nazivamo entitetima, i koji mogu biti realni ili apstraktni. Svaki entitet ima neka svojstva. Meñusobno, dva ili više entiteta mogu stajati u različitim odnosima. Svaki takav odnos posjeduje vlastita svojstva i poseban je entitet. Za ovaj tip entiteta ponekad se koristi termin izvedeni entitet.
3.1. ENTITET Pojam entiteta teško je precizno definirati. S druge strane, sama ideja može se objasniti dosta jednostavno. U literaturi se može naći veći broj različitih definicija ovog pojma. Prema Hallu i drugima (l976): Entitet je bilo što o čemu je moguće razmišljati Pored ove definicije navest ću još dvije: Entitet je bilo što o čemu možemo prikupljati informacije Entitet je element koji možemo jednoznačno odrediti i na taj način ga izdvojiti (odnosno prepoznati) u skupu Ove tri definicije nisu meñusobno u kontradikciji. Mogućnost jednoznačnog odreñivanja nekog objekta uvjet je koji mora biti ispunjen da bi se o tom objektu mogle prikupljati informacije, a prikupljanje informacija je uvjet za mogućnost razmišljanja. Objekti s kojima svakodnevno dolazimo u kontakt i koje zamjećujemo, u pravilu, mogu biti jednoznačno odreñeni i prema tome jesu entiteti. Za razumijevanje pojma entiteta bit će korisnije da pokušamo zamisliti objekt koji taj uvjet ne ispunjava, kao na primjer zrno pijeska na plaži. Zbog malih dimenzija zapažamo mali broj svojstava, pa su nam sva zrna slična. Kako je riječ o ogromnom broju zrna, teško da možemo jednoznačno odrediti neko odreñeno zrno. Slična je situacija s mravima u mravinjaku. Oni jesu nešto veći, ali se vrlo brzo kreću. U nešto manjoj mjeri ovo vrijedi i za goveda u stadu ili ljude u masi. Općenito, ako neki objekt nismo jednoznačno odredili, ne možemo o njemu prikupljati informacije i ne možemo o njemu razmišljati. Takav objekt za nas nije entitet. Iz primjera koje smo naveli očito je da ne postoji neki objektivan kriterij na osnovi kojeg bi mogli zaključiti da li je neki objekt entitet. To prvenstveno zavisi o našem interesu. Za pastira koji može prepoznati svako govedo u stadu, goveda jesu entiteti. Za osobu pored koje stado slučajno prolazi ona to nisu. Slično je u krajnjoj liniji i s mravima i zrnima pijeska. I ne samo to. S vremenom se mijenjaju okolnosti, a s njima i naš interes. Nešto što je u jednom momentu bio jedan entitet može se u slijedećem pretvoriti u skup entiteta i obratno. Da bi ovo ilustrirali poslužit ćemo se jednim primjerom koji navodi Kent (1978): Dogodilo se ubojstvo i istraga treba otkriti ubojicu. Jedan od svjedoka koji treba pomoći u istrazi je i sobar. U našem modelu na početku istrage sobar, koji je svjedok, i ubojica, koji je počinio ubojstvo, dva su različita entiteta. Kao što je opće poznato, sobari u takvim pričama su krajnje sumnjivi tipovi. U skladu s tim, istraga otkriva da je sobar ubojica. U modelu na kraju
12 istrage sobar i ubojica postaju jedan entitet. Kao što ćemo vidjeti nije ovo jedina misterija entiteta, ali o tome ćemo kasnije.
3.2. SVOJSTVO Entiteti posjeduju svojstva. Opis jednog svojstva sastoji se od atributa i vrijednosti atributa. Atribut (na primjer: VISINA, TEŽINA, BOJA, itd.) je element kojim je jednoznačno odreñena vrsta svojstva. Vrijednosti atributa (na primjer: 175 cm, 78 kg, zelena itd.) je drugi element opisa svojstva. Zajedno, atribut i vrijednost atributa sačinjavaju opis odreñenog svojstva. O elementima od kojih se sastoji opis svojstva reći ćemo nešto više kad budemo govorili o informacijama. Svojstva koja entitet posjeduje mogu se mijenjati zavisno o vremenu ili o nekom drugom parametru. Svaki put kad se vrijednost atributa takvog svojstva promijeni, potrebno je ažurirati odgovarajući podatak u bazi. Ako su promjene vrijednosti atributa česte, mogu postati ozbiljan problem. Posebno je neugodna direktna zavisnost svojstva o vremenu. Zbog toga nastojimo da takva svojstva ne memoriramo u bazi. Umjesto starosti entiteta, u pravilu, memoriramo godinu roñenja (odnosno godinu proizvodnje), a starost izračunamo iz godine roñenja (godine proizvodnje) i tekućeg datuma. Na osnovi svojstava koja posjeduju, odnosno vrijednosti atributa tih svojstava, entitete možemo razvrstati u skupove. Izbor svojstava, ili kombinacije svojstava, na osnovi kojih ćemo takav skup definirati, proizvoljan je. Tako na primjer, skup entiteta mogu činiti sve osobe koje stanuju u istoj zgradi, svi radnici jedne radne organizacije, svi predmeti koji se nalaze na istoj lokaciji ili se koriste u iste svrhe itd. Svi entiteti koji posjeduju svojstvo, odnosno vrijednost atributa svojstva, pomoću kojeg je skup definiran, bit će elementi skupa. Neka od svojstava entiteta (ili kombinacija od nekoliko svojstava) su takva da vrijednosti njihovih atributa jednoznačno odreñuju entitet u promatranom skupu. To znači da unutar takvog skupa neće postojati dva različita entiteta sa istom vrijednošću atributa takvog svojstva. Unutar porodice svaki član je u pravilu jednoznačno odreñen vrijednošću atributa IME. U radnoj organizaciji za jednoznačno odreñivanje radnika koristimo kombinaciju atributa IME i PREZIME ili atribut ŠIFRARADNIKA itd. Ovakva svojstva nazivamo karakterističnim svojstvima. Vrijednost atributa karakterističnog svojstva je identifikator entiteta unutar skupa.
3.3. ODNOS MEðU ENTITETIMA Entiteti koji su elementi istog skupa, kao i entiteti iz različitih skupova, mogu meñusobno biti u odreñenom odnosu. Kao primjer možemo uzeti odnos radnika i radnog zadatka, odnos radnika i radne organizacije itd. Svaki odnos izmeñu dva ili više entiteta posjeduje vlastita svojstva. Uzmimo na primjer odnos izmeñu radnika i radnog zadatka. Broj sati koje radnik provede na odreñenom radnom zadatku nije svojstvo niti radnika, niti radnog zadatka, nego odnosa izmeñu ta dva entiteta. Zahvaljujući činjenici da posjeduju svojstva, odnosi mogu biti jednoznačno odreñeni, pa prema tome predstavljaju entitete. Ponekad se za ovu vrstu entiteta koristi izraz izvedeni entiteti. U nekim modelima podataka nema razlike izmeñu izvedenih i osnovnih entiteta. I jedna i druga vrsta entiteta preslikavaju se na istu vrstu objekata u modelu, a korisniku modela se prepušta da takav objekt interpretira kao osnovni ili kao izvedeni entitet. Ovo obilježje modela naziva se semantički relativizam. Za uspostavljanje modela (kao i za implementaciju baze podataka), posebno je važna klasifikacija odnosa s obzirom na broj entiteta u odnosu. Zbog jednostavnosti, uzet ćemo da entiteti u odnosu potječu iz dva različita skupa (skup A i skup B). Odnos meñu istovrsnim entitetima (elementi istog skupa), kao i odnos meñu više od dvije različite vrste entiteta, mogu biti svedeni na ovaj slučaj. U prvu grupu svrstat ćemo odnose koji odgovaraju preslikavanju 1:1. Kod te vrste odnosa, svaki element skupa A (prvog skupa) može biti preslikan na najviše
13 jedan element skupa B. Istovremeno svaki element skupa B može biti pridružen najviše jednom elementu skupa A. Kao primjer ovakvog odnosa možemo uzeti odnos izmeñu muža i žene u monogamnim društvima, odnos izmeñu naziva i himne države, šifre radnika i samog radnika, itd. U drugu grupu svrstavaju se odnosi koji odgovaraju preslikavanju N:1. Svaki pojedini element skupa A može biti preslikan najviše na jedan element skupa B. Istovremeno, svaki element skupa B može biti pridružen većem broju elemenata skupa A. U ovakvom odnosu općenito stoje podreñeni prema nadreñenim elementima hijerarhijske strukture. Na primjer, radnici prema radnoj organizaciji, općine prema republici itd. Kod odnosa, koji odgovaraju preslikavanjima 1:1 i N:1, svaki element prvog skupa može biti preslikan najviše na jedan element drugog skupa i na taj način jednoznačno odreñuje taj element drugog skupa. Kažemo da elementi prvog skupa funkcijski odreñuju elemente drugog, odnosno da elementi drugog skupa funkcijski zavise o elementima prvog. Treću grupu čine odnosi koji odgovaraju preslikavanju 1:N. Svaki element skupa A može biti preslikan na proizvoljan broj elemenata skupa B, a svaki pojedini element skupa B može biti pridružen najviše jednom elementu skupa A. Općenito, u ovakvom odnosu stoje nadreñeni prema podreñenim elementima u hijerarhijskoj strukturi. Kao primjer možemo uzeti odnos radne organizacije prema radnicima, odnos republike prema općinama itd. Na kraju, četvrtu grupu odnosa čine odnosi koji odgovaraju preslikavanju M:N. Svaki element prvog skupa može biti preslikan na po volji mnogo elemenata drugog, a istovremeno, svaki element drugog skupa može biti pridružen proizvoljnom broju elemenata prvog. Kao primjer ove vrste odnosa može biti odnos radnika prema radnim zadacima, liječnika-specijaliste prema pacijentima, itd. Spomenimo da je četvrta grupa odnosa najkompleksnija. Odnosi 1:N i N:1 posebni su slučajevi odnosa M:N. Na sličan način, odnosi 1:1 su poseban slučaj odnosa 1:N, odnosno N:1, a preko njih i odnosa M:N.
14
15
4. INFORMACIJA Informacija je složen pojam čija definicija može značajno varirati zavisno o načinu i području na kojem se koristi. Ulogom i definicijom informacije u kompjuterskoj obradi podataka bavio se veći broj autora (Engles, 1970; Bachman, 1973; Langefors, 1976; itd.). Ne ulazeći u analizu drugih definicija ovog pojma, smatram da će biti dovoljno navesti definiciju informacije koju ćemo koristiti: Elementarna informacija je opis jednog svojstva kojeg posjeduje odreñeni entitet. S nekoliko primjera ilustrirat ćemo sastav informacije i ulogu koju pojedini elementi informacije imaju. Pogledajmo slijedeću informaciju: MARKO JE VISOK 175 CM Identifikator entiteta, koji svojstvo posjeduje, je vrijednost atributa IME (MARKO). Svojstvo, čiji opis je sadržan u informaciji je VISINA 175 CM. Prije nego što kažemo nešto više o elementima od kojih se sastoji opis svojstva, recimo nešto o tome što želimo postići s opisom svojstva. Korisnik informacije ne mora imati predodžbu svojstva čiji opis se nalazi u informaciji. Opis svojstva mora biti takav da se na osnovu njega može stvoriti predodžba o, do tada, nepoznatom svojstvu. Predodžba o nepoznatom svojstvu svodi se na predodžbu o nepoznatoj vrijednosti atributa. Općenito, predodžbu o nepoznatom svojstvu možemo stvoriti na osnovi usporedbe s nekim poznatim svojstvom iste vrste. Da bi se omogućila takva usporedba, opis svojstva mora sadržavati tri elementa: - oznaku vrste svojstva (atribut), - poznatu vrijednost atributa, - relaciju izmeñu poznate i nepoznate vrijednosti atributa. U našem primjeru: VISINA 175 CM može se rastaviti na: - atribut (VISINA), - oznaku vrijednosti tog atribut (CM), koja je korisniku informacije poznata, - relaciju u kojoj stoji nepoznata prema poznatoj vrijednosti atributa (175). Prvi od ova tri elementa je atribut i njime je odreñena vrsta svojstva. Preostala dva elementa zajedno čine vrijednost atributa. U kompjuterskoj obradi podataka prihvaćen je nešto drugačiji raspored elemenata od kojih se sastoji opis svojstva. Naime, atribut je izjednačen s poljem u koje se kao sadržaj upisuje vrijednost atributa. To praktično znači da su varijabilni elementi opisa svojstva predstavljaju vrijednost atributa, a svi ostali elementi atribut svojstva. U slučaju da se vrijednost atributa u našem primjeru uvijek navodi u centimetrima, atribut bi bio VISINA-U-CM: 175 Visina 175 cm
VISINA-U-CM
Ukoliko visinu možemo izražavati u cm, colima, itd. onda je atribut VISINA, a preostali elementi čine vrijednost atributa (tj. vrijednost atributa VISINA bi bila 175 cm). Opis svojstva je ključni element informacije. Vidjeli smo da, pored opisa svojstva, informacija mora sadržavati i identifikator entiteta koji posjeduje opisano
16 svojstvo. I za identifikator entiteta kao i za elemente opisa svojstva vrijedi da u informaciji mogu biti navedeni eksplicitno ili implicitno. Na primjer, ZELENO je vrijednost atributa BOJA, i u načelu ne može biti vrijednost nekog drugog atributa. Dovoljno je da kažemo da je nešto zeleno i nije potrebno posebno naglašavati da je riječ o atributu BOJA. Slično tome u primjeru: MARKO IMA CRNU KOSU, VISOK JE 175 CM I ROðEN JE U PULI navedena su tri opisa svojstva, a identifikator entiteta koji svojstva posjeduje je samo jedan (MARKO). Kao što je spomenuto, identifikator entiteta koji svojstvo posjeduje je vrijednost karakterističnog atributa. Zapis na memoriji sadrži niz opisa svojstava jednog entiteta. Meñu njima mora postojati bar jedno karakteristično svojstvo. U zapisu na memoriji identifikator entiteta tretiramo kao bilo koju vrijednost atributa. Za svako svojstvo mora postojati atribut i vrijednost atributa. Atribut svojstva odgovara polju, a vrijednost atributa sadržaju koji u to polje upisujemo. Zahvaljujući činjenici da jedan opis svojstva prikazujemo u zapisu s jednim podatkom koji upisujemo u odreñeno polje, te da jedan identifikator entiteta dolazi na više opisa svojstava, približno jedan podatak na memoriji odgovara jednoj informaciji.
4.1. OPERACIJE S INFORMACIJAMA Realni svijet spoznajemo preko informacija. Za njihovo strukturiranje koristimo skup operacija koje su poznate pod zajedničkim nazivom apstrakcije. Pomoću operacija apstrakcije izdvajaju se bitne informacije, odnosno zanemaruju nebitne. Pojedine operacije iz ovog skupa definirane su u okviru tzv. konceptualnog modela (Smith i Smith, 1977; Brodie, 1981). Ukratko ćemo se osvrnuti na te operacije. Polazeći od nekog skupa objekata u realnom svijetu operacijom klasifikacije definira se klasa. Klasa je skup objekata, i posjeduje svojstva koja posjeduje svaki pojedini element skupa (slika 4.1). Zahvaljujući tome, zajednička svojstva nije potrebno memorirati za svaki element zasebno. Dovoljno je da budu memorirana samo jednom, kao svojstva klase. U odnosu na skup objekata realnog svijeta, klasa je entitet na višoj razini apstrakcije. Svaki element klase je tzv. instanca. Svojstva klase prenose se na pojedine elemente klase operacijom instantacije. Instantacija je operacija inverzna klasifikaciji.
OSOBA Generalizacija - Specijalizacija
STUDENT
RADNIK
VOZAČ
STOLAR
PISAC
ZIDAR Klasifikacija - Instantacija
Marko
Darko
Žarko
Slika 4.1 Generička struktura Operacija generalizacije u biti je vrlo slična operaciji klasifikacije. Pomoću generalizacije, kao i pomoću klasifikacije, definira se klasa. Bitna razlika je da se kod
17 generalizacije ne polazi od skupa objekata u realnom svijetu nego od skupa klasa. Razlika je u razini apstrakcije na kojoj se operacija primjenjuje. Kao i kod klasifikacije, i kod generalizacije postoji inverzna operacija, specijalizacija, kojom se prenose svojstva s višeg nivoa apstrakcije na niži. U modelima realnog svijeta pojam klase ima značajnu ulogu. Napomenimo da ne postoji neki prirodni skup klasa. Klase se definiraju prema potrebama informacijskog sustava. Kao posljedica toga javlja se cijeli niz problema. Pojedini entiteti mogu biti svrstani u dvije ili više različitih klasa. Ista osoba, na primjer, može biti i liječnik i pacijent, i potomak i roditelj itd. Pored toga, u nekim slučajevima nije jasno da li neki entitet treba svrstati u odreñenu klasu. Uzmimo kao primjer relativno dobro definiranu klasu RADNIK. Pitanja da li su elementi ove klase i honorarni radnici, umirovljeni radnici, radnici na specijalizaciji, radnici na neplaćenom odmoru itd. u pravilu nisu riješena definicijom klase i rješavaju se naknadnom modifikacijom te definicije. Takve modifikacije, koje se rade pod pritiskom i na nekoliko različitih mjesta, mogu dovesti do zbrke i na kraju imaju za posljedicu inkonzistenciju baze podataka. Operacije klasifikacije, instantacije, generalizacije i specijalizacije osnova su nasljeñivanja svojstva i tzv. generičkih struktura. Generičke strukture i nasljeñivanje svojstava. Kao što je spomenuto, klase su osnova za generičku strukturu. Generička struktura je u načelu hijerarhijska struktura u koju su kao elementi povezane klase (osim na najnižoj razini strukture na kojoj se nalaze entiteti). Postupkom specijalizacije i instantacije pojedini elementi strukture nasljeñuju svojstva od hijerahijski nadreñenih elemenata (slika 4.2). Recimo da smo definirali klasu PTICA sa svojstvima: - ima perje, - leti. Neka su specijalizacije klase PTICA, klase VRABAC, RODA i LASTAVICA i neka je instanca klase VRABAC, vrabac Zvonko (slika 4.2.). Specijalizacijom klasa VRABAC nasljeñuje svojstva od klase PTICA. Instantacijom, instanca Zvonko, nasljeñuje svojstva od klase VRABAC. I tako znamo da Zvonko ima perje i leti. Problem s nasljeñivanjem svojstava su iznimke. Recimo da je Zvonko slomio krilo. On neko vrijeme, a možda i nikad više neće moći letjeti. Da li je on i dalje instanca klase VRABAC? I, ako jest, na koji način registrirati činjenicu da Zvonko ne leti za razliku od svih ostalih vrabaca. Što je s pingvinima? Oni, kao i nojevi i kiviji, ne mogu letjeti ali se po nizu drugih svojstava ubrajaju u ptice. PTICA (- Ima perje - Leti )
VRABAC
RODA
LASTAVICA
Zvonko Slika 4.2 Za svaki element generičke strukture može se zabraniti nasljeñivanje odreñenog svojstva, tako da se eksplicitno navede da taj element odreñeno svojstvo nema. Ova zabrana nasljeñivanja vrijedila bi za taj element i za sve njemu podreñene elemente generičke strukture (slika 4.3.). Operacija asocijacije koristi se, slično kao i operacija klasifikacije odnosno generalizacije, da bi se definirao skup (tzv. asocijacija). Elementi tog skupa mogu biti objekti realnog svijeta ili klase. Skup, meñutim, ne posjeduje svojstva koja posjeduje svaki element skupa. Naprotiv, asocijacija može posjedovati samo ona svojstva koja
18 ne posjeduje niti jedan element skupa. Kao primjer poslužit ćemo se skupom automobila. Datum konstruiranja prvog automobila, ime konstruktora prvog automobila, ukupan broj automobila u jednoj državi, sve su to svojstva koja može imati asocijacija automobila, a koja ne pripadaju niti jednom konkretnom automobilu posebno. Asocijacija se koristi upravo za memoriranje takvih svojstava. PTICA (- Ima perje - Leti )
PINGVIN RODA (- Ne leti )
LASTAVICA
Albert Slika 4.3 Posljednja operacija je agregacija. Agregat koji se dobije kao rezultat ove operacije, je skup elemenata od kojih se sastoji neki složeni sustav. Elementi tog skupa mogu biti jednostavni ili složeni, odnosno mogu i sami biti agregati. U o-bradi podataka, agregacijom se koristimo da bi definirali shemu logičkog sloga sastavljenu od pojedinih atributa. Pomoću agregacije definiramo vrste svojstava (atribute) koja su relevantna za odreñeni tip zapisa. Inverzna operacija je operacija dekompozicije.
4.2. PODATAK Informaciju, u pravilu, smatramo nematerijalnim entitetom. To je točno utoliko što je sadržaj informacije za nas daleko bitniji od načina na koji je taj sadržaj prikazan. Činjenica je, meñutim, da informacija, bilo da je uklesana u kamen, za-pisana na papiru, ili da je pohranjena u našoj memoriji, uvijek ima materijalnu podlogu. Informacije koje su pohranjene na trajnoj ili polutrajnoj memoriji kao što je kamen, papir, ili magnetski zapis za obradu podataka imaju posebnu važnost. Ovakve informacije smatramo podacima. Termin podatak definirat ćemo na slijedeći način: Podatak je skup znakova, na trajnoj ili polutrajnoj memoriji, kojima je prikazan jedan ili više elemenata informacije. Svojstva podataka možemo podijeliti u dvije grupe. Sva ona svojstva koja proizlaze iz značenja nekog podatka smatramo semantičkim svojstvima podatka. Sva ostala svojstva podatka svrstavamo u nesemantička svojstva podatka. Povezivanjem pojedinih podataka na memoriji, s obzirom na njihova semantička svojstva, u smislene cjeline, prikazujemo pojedine informacije. Podaci su sirovina koju unosimo u kompjuter, odnosno u svaku obradu podataka. Rezultat obrade podataka su podaci. U čemu se, dakle, sastoji sama obrada? Slično pitanje moglo bi se postaviti u slučaju automobilske industrije: sirovina s kojom se ulazi u proizvodnju je metal, proizvod je metal. Proces proizvodnje sastoji se u transformaciji sirovine u proizvod. U slučaju obrade podataka operacije, koje izvodimo nad podacima, transformiraju nesemantička svojstva podataka. Kao posljedica transformacije nesemantičkih svojstava mijenjaju se i semantička svojstva podataka. Upravo ta transformacija semantičkih svojstava u većini slučajeva predstavlja cilj obrade podataka.
19
II. DIO
RELACIJSKI MODEL PODATAKA
20
21
5. OBJEKTI RELACIJSKOG MODELA Svaki entitet u segmentu realnog svijeta mora biti preslikan na odgovarajući objekt u modelu tog segmenta. U ovom poglavlju definirat ćemo objekte koji su u relacijskom modelu na raspolaganju za prikaz entiteta.
5.1. POJEDINAČNI PODATAK Pojedinačni podatak (Atomic data value) je najmanji objekt relacijskog modela. U okviru relacijskog modela pojedinačni podatak ne možemo dalje rastavljati na dijelove. Naime, relacijski model je, u biti, logički model. Objekti u relacijskom modelu podataka prikazuju odgovarajuće objekte realnog svijeta. Zbog toga, objekti u relacijskom modelu posjeduju odreñena semantička svojstva, a pojedinačni podatak je najmanji element koji još posjeduje takva svojstva. Znakovi, od kojih se pojedinačni podatak sastoji, ne posjeduju takva semantička svojstva. Uzmimo da je pojedinačni podatak MARKO ime člana obitelji. Pojedinačni podatak MARKO stoji u odreñenim relacijama s drugim pojedinačnim podacima, kao što je ime bračnog druga tog člana obitelji, mjesto i datum roñenja itd. Znakovi, od kojih se podatak MARKO sastoji (A, K, M, O, R) nemaju takva svojstva.
5.2. ATRIBUT Atribut je element informacije kojim je jednoznačno odreñena vrsta svojstva. Relacijski model razlikuje jednostavne i sastavljene atribute. Vrijednost jednostavnog atributa je pojedinačni podatak, dok je vrijednost sastavljenog atributa ureñena ntorka pojedinačnih podataka. U skladu s tim, vrijednost sastavljenog atributa možemo rastaviti na pojedinačne podatke od kojih je sastavljena. Atributi kao što je IMERADNIKA, MJESTO-ROðENJA, i ŠIFRA-OPĆINE su jednostavni atributi. Primjer sastavljenog atributa može biti atribut DATUM. Vrijednost atributa DATUM sastavljena je od vrijednosti jednostavnih atributa DAN, MJESEC i GODINA. Vrijednosti ta tri atributa su pojedinačni podaci. Izraz atribut koristit ćemo, u pravilu, kao oznaku jednostavnog atributa.
5.3. DOMENA Domena je skup svih vrijednosti koje odreñeni atribut može poprimiti. Neka je A atribut i neka je D njemu pridružena domena. Kažemo da je A zadan na D i označavamo to s D = DOM(A). Atribut mora imati domenu i može imati samo jednu domenu. Više različitih atributa može biti zadano na istoj domeni. Na primjer, atributi MJESTO-ROðENJA i MJESTO-BORAVKA bit će, u pravilu, zadani na istoj domeni. S obzirom na to da je domena skup svih vrijednosti koje atribut (ili atributi) zadan na njoj može poprimiti, sadržaj domene ne ovisi o vremenu. Aktivna domena je podskup domene i sastoji se od svih vrijednosti koje, za dani atribut, jedan ili više entiteta u danom momentu posjeduju. Naravno, sadržaj aktivne do-mene se mijenja tokom vremena. Kao i atributi, i domene mogu biti jednostavne ili sastavljene. Elementi jednostavnih domena su pojedinačni podaci. Sastavljena domena je, u najjednostavnijem slučaju, Kartezijev produkt dvije ili više jednostavnih domena. Elementi sastavljene domene su ureñene n-torke pojedinačnih podataka. Kao i u slučaju atributa, pod izrazom domena podrazumijevat ćemo jednostavnu domenu.
5.4. RELACIJA Relacija je jedan od osnovnih pojmova relacijskog modela podataka. Izmeñu relacije u matematici i relacije u relacijskom modelu postoji odreñena razlika. Da
22 bismo spriječili nesporazume definirat ćemo i jedan i drugi pojam i ukazati na razlike meñu njima. Relaciju u matematici definiramo preko Kartezijevog produkta: Relacija, zadana na domenama D1, D2,..., Dn, podskup je Kartezijevog produkta skupova D1, D2,..., Dn Kartezijev produkt skupova D1, D2,..., Dn (označavamo ga kao X(D1, D2,..., Dn)) definiramo kao skup ureñenih n-torki za koje vrijedi da je i-ti član n-torke element i-tog skupa tj.: X(D1, D2,..., Dn) = {( d1, d2,..., dn): di ∈ Di za 1≤ ≤ i ≤ 1} Pod relacijom u matematici, prema tome, podrazumijevamo skup ureñenih ntorki. Broj članova od kojih se n-torka sastoji, odreñen je brojem domena na kojima je relacija zadana i konstantan je za danu relaciju. Tu konstantu nazivamo stupanj relacije. Svaki član n-torke potječe iz odreñene domene, a redoslijed kojim su članovi navedeni u n-torki odreñen je redoslijedom kojim je nad do-me-nama izvoñena operacija Kartezijev produkt i ne može se mijenjati. U relacijskom modelu, relacija odgovara dvodimenzionalnoj tabeli (Slika 5.1) u kojoj svaki red sadrži n-torku, a svaki stupac elemente jedne domene (odnosno vrijednosti atributa zadanog na toj domeni). Ako svakom stupcu pridružimo naziv atributa, dobit ćemo zaglavlje, odnosno shemu relacije.
Zaglavlje tabele ili shema relacije tijelo tabele ili relacija
( IME
ŠIF MJESTO_ROð )
Darko Marko Petar Žarko
517 632 727 814
Ljubljana Varaždin Varaždin Zagreb
redak tabele ili n-torka stupac tabele ili aktivna domena Slika 5.1 Svaki stupac relacije jednoznačno je odreñen nazivom atributa u shemi relacije. Redoslijed stupaca u relaciji postaje, zahvaljujući tome, nebitan. Drugim riječima, relacija ostaje ista bez obzira na to kojim smo redoslijedom stupce ispisali na memoriji. Naravno zbog toga postaje nebitan i redoslijed članova u n-torci relacije. Obratimo pažnju na činjenicu da ovo svojstvo nije u skladu s definicijom relacije preko Kartezijevog produkta. Da bi se taj problem riješio, relaciju u relacijskom modelu definiramo pomoću sheme relacije: Relacijska shema R je konačan skup naziva atributa {A1, A2, ...,An}zajedno sa skupom ograničenja koja su zadana na tom skupu atributa (Cadiou (1975)). Primijetimo da je redoslijed atributa u ovako definiranoj shemi relacije nebitan. Naime, elementi skupa, ukoliko to nije posebno navedeno, nisu povezani ni u kakvu strukturu. Umjesto izraza naziv atributa, zbog jednostavnosti, koristit ćemo izraz atribut. Za trenutak možemo zanemariti ograničenja. O njima ćemo govoriti kasnije a zasada nam nisu prijeko potrebna da bi definirali pojmove n-torke i relacije. Definicija n-torke glasi: Neka je R(A1, A2, ...,An) relacijska shema i neka je svaki
23 atribut Ai ∈ R zadan na odgovarajućoj domeni Di. Neka je D unija svih domena Di (1≤ ≤ i ≤ 1). N-torka je preslikavanje iz R na D uz ograničenje da vrijednost na koju je preslikan atribut Ai mora biti element domene Di .(tj. t(Ai) ≤ i ≤ 1). ∈ Di za 1≤ Da bi relacija mogla biti prikazana u obliku dvodimenzionalne tabele, sve ntorke relacije moraju biti jednake dužine (tj. ukupan broj vrijednosti atributa mora biti jednak u svim n-torkama). Taj uvjet će biti ispunjen ako svaki atribut iz sheme može biti preslikan samo na jednu vrijednost atributa. Naravno, s obzirom na to da više različitih atributa može biti zadano na istoj domeni, postoji mogućnost da više različitih atributa bude preslikano na isti element domene. Radi se dakle o preslikavanju N:1, odnosno n-torka je funkcija iz R na D. Definicija relacije, koja se koristi u relacijskom modelu podataka, glasi: Relacija r na relacijskoj shemi R je konačan skup n-torki. Redoslijed stupaca u relaciji, odnosno redoslijed vrijednosti atributa u n-torki, odreñen je redoslijedom atributa u relacijskoj shemi. Kako je relacijska shema definirana kao skup atributa, taj redoslijed nije bitan. To je osnovna razlika izmeñu pojma relacije u relacijskom modelu i relacije u matematici. Pogledajmo što to, zapravo, znači, tj. zbog čega je bilo potrebno inzistirati na ovoj karakteristici relacije. Kad relaciju ispišemo na neki medij, bilo da se radi o ekranu monitora, papiru ili magnetskom disku, redoslijed stupaca je definiran. Taj redoslijed može biti i te kako važan za preglednost i razumljivost podataka sadržanih u relaciji. Ono što mislimo kad kažemo da redoslijed stupaca nije bitan, jest slijedeće: dvije tabele koje se meñusobno razlikuju samo po redoslijedu stupaca predstavljaju, u relacijskom modelu, dva prikaza iste relacije. Prema definiciji relacije preko Kartezijevog produkta to bi bile dvije različite relacije. Pogledajmo to na jednom primjeru: ( IME Darko Marko Petar Žarko
ŠIF MJESTO-ROð ) 517 Ljubljana 632 Varaždin 727 Varaždin 814 Zagreb
( ŠIF 517 632 727 814
IME MJESTO-ROð ) Darko Ljubljana Marko Varaždin Petar Varaždin Žarko Zagreb
Ove dvije tabele meñusobno se razlikuju samo po redoslijedu stupaca. Ako redoslijed stupaca, kao što je to u relacijskom modelu, nije bitan za relaciju, onda su tabele dva prikaza iste relacije. Ukoliko bi koristili definiciju relacije preko Kartezijevog produkta (dakle definiciju relacije u matematici), redoslijed stupaca bi bio bitan i ove dvije tabele prikazivale bi dvije različite relacije. To očigledno ne bi bilo u skladu s praksom u obradi podataka i moglo bi dovesti do niza komplikacija i nesporazuma.
5.4.1. Svojstva relacije Za relacijski model od posebnog su značaja četiri osnovna svojstva relacije i relacijske sheme: - shema relacije ne sadrži dva jednaka naziva atributa, - redoslijed stupaca u relaciji nije bitan, - relacija ne sadrži dvije jednake n-torke i - redoslijed n-torki u relaciji nije bitan. Prva dva svojstva proizlaze iz definicije relacijske sheme. Shemu relacije definirali smo kao ...skup naziva atributa... Skup, općenito, ne može sadržavati dva jednaka elementa (u našem slučaju dva jednaka naziva atributa ). Pored toga, elementi skupa nisu povezani u strukturu, pa je redoslijed naziva atributa u re-
24 lacijskoj shemi proizvoljan. S obzirom na to da je redoslijed stupaca u relaciji odreñen redoslijedom naziva atributa u relacijskoj shemi, proizvoljan je i redoslijed stupaca u relaciji. Zbog promjene redoslijeda stupaca ne smije doći do gubitka informacija sadržanih u relaciji. Druga dva svojstva proizlaze iz definicije relacije. Relaciju smo definirali kao ...skup n-torki... Prema tome relacija ne može sadržavati dvije jednake n-torke, i redoslijed n-torki u relaciji nije bitan. Zbog promjene redoslijeda n-torki ne smije doći do gubitka informacija sadržanih u relaciji. Zadržimo se malo na problemu gubitka informacija sadržanih u relaciji. Rekli smo da niti redoslijed stupaca, niti redoslijed n-torki u relaciji nisu bitni. Da bi to zaista bilo tako, njihova promjena ne smije imati za posljedicu gubitak informacija. Pogledajmo u kojem slučaju može doći do gubitka informacija. Ako u neki redoslijed stupaca, ili redova tabele pohranimo odreñene informacije, promjena redoslijeda stupaca, odnosno redova, dovest će do gubitka tih informacija. Pretpostavimo da smo n-torke upisivali u relaciju redom kojim su dolazili odgovarajući podaci s terena i da nam je taj redoslijed zbog nečega važan. Promjenom redoslijeda n-torki izgubit će se informacija o redoslijedu stizanja podataka i na nikakav način ne može biti ponovo rekonstruirana. Podsjetimo se da do promjene redoslijeda može doći iz niza razloga. Ako su nam te informacije važne, bilo bi, općenito, korisno memorirati ih u obliku vrijednosti odgovarajućih atributa. Ako se radi o relacijskoj bazi podataka, onda smo na to prisiljeni.
Ključ Zahvaljujući činjenici da u relaciji ne postoje dvije potpuno jednake n-torke, svaku n-torku u relaciji moguće je jednoznačno odrediti vrijednošću nekog podskupa atributa. Podskup atributa, čije vrijednosti jednoznačno odreñuju n-torku u relaciji, nazivamo ključ relacije. Definicija ključa glasi: Ključ relacije r zadane na relacijskoj shemi R je podskup atributa K= {A1, A2, ...,Am} od R koji zadovoljava slijedeće uvjete: 1) Jednoznačnost. Za bilo koje dvije n-torke t1 i t2 u relaciji r postoji A1∈ K za 1≤ ≤ i ≤m, takav da vrijedi t1[Ai] ≠ t2[Ai], drugim riječima, ne postoje dvije n-torke s jednakim vrijednostima svih atri-buta u podskupu K. Taj uvjet možemo napisati kao t1[K] ≠ t2[K] i 2) Minimalnost. Niti jedan pravi podskup K' od K nema svojstvo jednoznačnosti. Uvjet minimalnosti potreban nam je da bi broj atributa u ključu sveli na minimum. Naime, svaki skup atributa koji u sebi sadrži minimalni ključ jednoznačno odreñuje n-torku u relaciji. Podskup atributa u relacijskoj shemi koji zadovoljava uvjet jednoznačnosti, a ne zadovoljava uvjet minimalnosti naziva se i superključ relacije zadane na relacijskoj shemi R. Pod ključem relacije podrazumijevamo minimalni ključ. Kao što je spomenuto, u relaciji uvijek postoji ključ. U najgorem slučaju svi atributi relacijske sheme, na kojoj je relacija zadana, zajedno tvore ključ relacije. Relacija može imati i više različitih ključeva. Podskupovi atributa, od kojih se ti ključevi sastoje, ne moraju biti meñusobno disjunktni. Da bi lakše razumjeli osnovne pojmove, promatrali smo relaciju kao statički objekt. Iako su zaključci do kojih smo došli tim putem valjani, sama pretpostavka nije točna. Relacija odgovara skupu istovrsnih entiteta u segmentu realnog svijeta i s promjenom tog skupa, odnosno svojstva pojedinih elemenata tog skupa, mi-jenja se i relacija. Stanje relacije u odreñenom trenutku je odraz stanja u odgovarajućem segmentu realnog svijeta. Za bilo koje stanje relacije moguće je naći jedan, a
25 ponekad i više ključeva. Problem je u tome što se u različitim stanjima kao ključevi relacije mogu javiti različiti podskupovi atributa. Za razliku od relacije, relacijska shema na kojoj je relacija zadana, ne mijenja se u zavisnosti o vremenu. Zbog toga ćemo ključ definirati na relacijskoj shemi. Takav ključ vrijedit će na svim relacijama zadanim na toj relacijskoj shemi i u svim stanjima tih relacija. Nezgodno je što pri izboru ključa relacijske sheme moramo uzeti u obzir sva stanja u koja mogu doći relacije zadane na toj shemi. Inače, kao i relacija, i relacijska shema uvijek ima ključ (u najnepovoljnijem slučaju svi atributi relacijske sheme sačinjavaju ključ). Kao i relacija, i relacijska shema može imati više ključeva koji ne moraju biti meñusobno disjunktni. Kao oznaku ovih ključeva koristit ćemo termin mogući ključevi (candidate key). Jedan od mogućih ključeva odabrat ćemo za primarni ključ relacijske sheme. Obratimo pažnju na razliku izmeñu mogućih i primarnog ključa relacijske sheme. Teoretski, vrijednost bilo kojeg od mogućih ključeva jednoznačno odreñuje ntorku u bilo kojoj relaciji zadanoj na toj relacijskoj shemi. U praksi, tokom vremena može doći do promjena i neki od mogućih ključeva mogu izgubiti svojstvo jednoznačnosti. Budući da nam je ključ izuzetno važan, mi to u slučaju primarnog ključa nećemo dozvoliti. Zbog toga su pravila održavanja atributa od kojih se sastoji primarni ključ znatno rigoroznija nego za ostale atribute relacijske sheme. Da bi izbjegli nesporazume spomenimo i termin primarni atribut. Bilo koji atribut koji ulazi u sastav nekog od mogućih ključeva, naziva se primarni atribut. Primarni atributi i primarni ključ nisu direktno povezani. Naravno i atributi primarnog ključa su primarni atributi. Pojam primarnog atributa koristi se u definicijama nekih normalnih formi relacijske sheme.
Adresibilnost Adresibilnost je još jedno svojstvo relacijske baze koje proizlazi iz osnovnih svojstava relacije. Svaki stupac relacije jednoznačno je odreñen odgovarajućim nazivom atributa. Svaki red relacije jednoznačno je odreñen vrijednošću ključa ntorke. Zahvaljujući tome, svaki pojedinačni podatak u relaciji možemo jednoznačno odrediti pomoću: - vrijednosti ključa n-torke, - naziva atributa. radnik
( IME
ŠIF
Darko Marko Petar Žarko
517 632 727 814
Slika 5.2
MJESTO-ROð ) Ljubljana Varaždin Varaždin Zagreb
radnik, 727, MJESTO-ROð
Kao što ćemo vidjeti, svaka relacija u relacijskoj bazi podataka jednoznačno je odreñena nazivom relacije. Bez obzira na količinu podataka u relacijskoj bazi, svaki pojedinačni podatak u bazi možemo jednoznačno odreñena s tri elementa: - nazivom relacije, - vrijednošću ključa n-torke, - nazivom atributa. Neka je radnik relacija zadana na relacijskoj shemi RADNIK(IME ŠIF MJESTO-ROð), i neka je atribut ŠIF primarni ključ. Pomoću naziva relacije (radnik),
26 vrijednosti primarnog ključa (vrijednost atributa ŠIF n-torke u kojoj se podatak nalazi) i naziva atributa možemo jednoznačno odrediti svaki pojedini podatak u toj relaciji.
Strani ključ Strani ključ koristimo u relacijskom modelu za povezivanje n-torki u semantičku strukturu. Prije nego što kažemo nešto više o stranom ključu, pogledajmo kako to povezivanje izgleda na jednom primjeru. Primjer Neka je relacija radnik zadana na relacijskoj shemi RADNIK(ŠIF-R IME-R ŠIF-ODJ ŠIF-RUKOV...). Primarni ključ relacijske sheme je podcrtan. U našem primjeru primarni ključ je atribut ŠIF-R. Vrijednost atributa ŠIF-RUKOV, u n-torci nekog radnika A, je šifra njemu neposredno nadreñenog radnika B (tj. primarni ključ u n-torci radnika B). U n-torci radnika A taj atribut je strani ključ. radnik
( ŠIF-R IME-R 517
Darko
632
Marko
ŠIF-ODJ : 21 : 21
ŠIF-RUKOV ) ? 517
Slika 5.3 Radniku Marku neposredno je nadreñeni rukovodilac radnik sa šifrom 517 (tj. radnik Darko). U n-torku radnika Marka kao vrijednost atributa ŠIF-RUKOV upi-sana je vrijednost primarnog ključa radnika Darka. Kad jednom raspolažemo s n-torkom radnika Marka možemo, na osnovi vrijednosti atributa ŠIF-RUKOV, pro-naći n-torku Marku nadreñenog rukovodioca. N-torka radnika Marka je, u ovom primjeru, pozivajuća, n-torka radnika Darka ciljna n-torka, a atribut ŠIF-RUKOV strani ključ. Pozivajuća i ciljna n-torka ne moraju uvijek biti u istoj relaciji. Da bi jednoznačno odredili n-torku u danoj relaciji dovoljna je vrijednost ključa te n-torke. Ako pozivajuća i ciljna n-torka nisu u istoj relaciji, pored vrijednosti ključa potreban je i naziv relacije u kojoj se nalazi ciljna n-torka. Ovaj problem rješava se tako da u opisu relacijske baze podataka postoje opisi stranih ključeva. Zahvaljujući tome, dovoljno je da upravljačkom sustavu baze podataka damo vrijednost stranog ključa. Sustav zna u kojoj relaciji se nalazi ciljna n-torka. Primjer radnik
( ŠIF-R 517
IME-R : Darko :
ŠIF-ODJ... ) 21 odjel
( ŠIF-ODJ 21
NAZIV-ODJ ...) Održavanje
Slika 5.4
Neka su relacije radnik i odjel zadane na relacijskim shemama RADNIK, odnosno ODJEL. U relacijskoj shemi ODJEL atribut ŠIF-ODJ je primarni ključ, a u relacijskoj shemi RADNIK taj atribut je strani ključ:
27 Ulogu stranog ključa u relaciji može imati bilo koji atribut (ili podskup atributa) u relacijskoj shemi, uključivo i primarne atribute. Pogledajmo relacijske sheme LIJEČNIK, DIJAGNOZA i PACIJENT: LIJEČNIK (ŠIF-L IME-L ...) DIJAGNOZA (ŠIF-L ŠIF-P... ) PACIJENT (ŠIF-P IME-P ...) Primarni ključ relacijske sheme LIJEČNIK je atribut ŠIF-L, primarni ključ relacijske sheme PACIJENT je atribut ŠIF-P, a primarni ključ relacijske sheme DIJAGNOZA sastavljen je od ova dva atributa. Svaki za sebe ova dva atributa u shemi DIJAGNOZA predstavljaju strani ključ. Strani ključ možemo definirati na slijedeći način: Neka je r relacija zadana na relacijskoj shemi R, a s relacija zadana na relacijskoj shemi S. Strani ključ relacije r je atribut (ili neki podskup atributa) relacijske sheme R, koji mogu poprimiti nul-vrijednost, ili vrijednost primarnog ključa relacije s. Atributi koji ulaze u sastav primarnog ključa relacije s i atributi koji tvore strani ključ u relaciji r moraju biti zadani na istim domenama. Relacijske sheme R i S ne moraju biti različite. Isto tako relacije r i s ne moraju biti različite relacije. Pojam nul-vrijednosti detaljnije ćemo obraditi kasnije. Zasad recimo samo da je to oznaka, da stvarnu vrijednost atributa ne znamo, ili je iz nekog drugog razloga ne možemo upisati u n-torku. Uvjeti postavljeni u definiciji stranog ključa trivijalno su zadovoljeni za skup atributa koji tvore primarni ključ relacije. Svaka vrijednost stranog ključa bilo koje relacije jednaka je samoj sebi.
Ograničenja Ograničenja vrijednosti pojedinih atributa u relaciji koristimo da bi spriječili unos pogrešnih podataka u bazu podataka. Ograničenja zadana u relacijskoj shemi su odraz zakonitosti koje vrijede u segmentu realnog svijeta. U monogamnom društvu svaka osoba može imati najviše jednog bračnog druga. Svaki čovjek ima samo jedan datum roñenja. Ograničenja nam omogućavaju da opišemo segment realnog svijeta. Ukratko ćemo se osvrnuti na neke osnovne tipove ograničenja. Vrijednost atributa GODINA-ROðENJA ne može biti "2573", vrijednost atributa RADNI-STAŽ ne može biti "120", itd. Moguće vrijednosti pojedinih atributa ntorke u relaciji ograničili smo na elemente odgovarajućih domena. Pored ovakvog ograničenja vrijednosti koje pojedini atribut može poprimiti postoje i niz drugih. Na primjer, radnik star 20 godina ne može imati 30 godina radnog staža. Općenito, ograničenja s kojima ćemo se sretati mogu se podijeliti u dvije grupe: - Ograničenja vrijednosti koje pojedini atributi mogu poprimiti nezavisno o vrijednostima drugih atributa u n-torci. U ovu grupu ograničenja spadaju i ograničenja vrijednosti atributa na elemente domene na kojoj je atribut zadan. - U drugu grupu ubrajamo ograničenja vrijednosti danog atributa u zavisnosti o vrijednostima drugih atributa u n-torci. U ovu grupu spada ograničenje dužine radnog staža u zavisnosti o starosti radnika ili zahtjev da svakoj šifri radnika (kojom je radnik jednoznačno odreñen) može biti pridruženo samo jedno ime i prezime, jedan datum roñenja, jedno mjesto roñenja, najviše jed-no ime bračnog druga, itd. Za ovu grupu ograničenja koristi se termin zavisnosti i ona imaju izuzetnu ulogu u modeliranju baze podataka.
28 Interesantno je spomenuti da su ograničenja posljedica semantičke interpretacije naziva atributa u shemi relacije. Spomenuli smo da vrijednost atributa RADNI-STAŽ ne može biti 30, ako je starost radnika 20 godina. Pretpostavimo sad da netko, tko ne poznaje dobro jezik niz znakova RADNI-STAŽ interpretira kao kućni broj. U toj interpretaciji gornje ograničenje bi glasilo da radnik koji je star 20 godina ne može stanovati na kućnom broju 30 i bilo bi potpuno besmisleno. U biti, promjenom semantičke interpretacije naziva atributa RADNI-STAŽ ograničenje je nestalo. Spomenuli smo da su ograničenja odraz zakonitosti koje vrijede u segmentu realnog svijeta. Naše poznavanje tog segmenta i zakonitosti koje u njemu vrijede osnova je za definiranje ograničenja u relacijskoj shemi. Ispitivanjem relacijske sheme ili relacija zadanih na toj relacijskoj shemi ne možemo pronaći ogra-ničenja. štoviše ispitivanjem relacija mi ne možemo dokazati da neka zakonitost, odnosno ograničenje vrijedi. Činjenica da niti jedan član u nekom kolektivu nema 15-ero djece nije dokaz da nitko u tom kolektivu ne može imati 15-ero djece. U odreñenom trenutku može se desiti da svaki član kolektiva koji promatramo ima najviše jedno dijete (recimo da je kolektiv mali i da su članovi kolektiva mladi ljudi). To nije nikakav dokaz da postoji ograničenje po kojem svaki član može imati najviše jedno dijete. U načelu, ispitivanjem baze podataka može se dokazati da neko ograničenje ne vrijedi. Uz pretpostavku da su svi podaci u bazi ažurni i istiniti, pronalaženje n-torke člana kolektiva koji ima više od jednog djeteta dokaz je da ne postoji ograničenje na najviše jedno dijete. Meñutim, i takav dokaz u nekim slučajevima ne mora biti pouzdan. Pronalaženje osobe koja ima dva ili više bračnih drugova nije dokaz da ne postoji ograničenje prema kojem svaka osoba može imati najviše jednog bračnog druga. Takvo ograničenje postoji, a bigamisti su to ograničenje prekršili. Polazeći od relacijske sheme, ili relacija zadanih na njoj, ograničenja su a priori znanje o sustavu realnog svijeta koji modeliramo. Pogledajmo kakva je uloga ograničenja u relaciji. N-torka, u kojoj je neko od ograničenja zadanih na relacijskoj shemi prekršeno bit će, po svoj prilici, neispravna, odnosno informacije koje nisu u skladu s ograničenjima najvjerojatnije nisu istinite. čak i u slučaju bigamiste takve informacije ne bi trebale biti u bazi. Obrat, meñutim, ne vrijedi. U n-torci radnika starog 20 godina može stajati da on ima 2 godine radnog staža (dakle, u skladu s ograničenjem) i da to ne bude istina. Ograničenja, a posebno neke vrste zavisnosti (funkcijska, višeznačna i join zavisnost), imaju važnu ulogu u relacijskom modelu podataka. Ona su alat za oblikovanje modela baze podataka. S pojedinim tipovima zavisnosti detaljno ćemo se upoznati kasnije. Kad smo govorili o odnosima meñu entitetima spomenuli smo pojam funkcijske zavisnosti. Kod preslikavanja 1:1 i N:1, jedan element domene preslikava se na najviše jedan element kodomene. U takvim slučajevima kažemo da element domene jednoznačno (ili funkcijski) odreñuje element kodomene na koji se preslikava, odnosno da kodomena funkcijski zavisi o domeni. Kao primjere funkcijske zavisnosti, uzet ćemo odnos meñu vrijednosti atributa ŠIF-RAD, MJESTO-ROð i IME-BRAČNOG DRUGA, odnosno, odnose meñu domenama na kojima su ti atributi zadani. Vrijednosti atributa ŠIF-RAD i IME-RAD mogu, u odreñenim uvjetima, jednoznačno odreñivati radnika, odnosno mogu biti identifikatori radnika. Svaki radnik mora imati točno jednu šifru i jedno ime, i ne može imati više od jedne šifre i jednog imena. Vrijednosti ovih atributa stoje meñusobno u odnosu 1:1. Kad kažemo šifra radnika Darka, mislimo na jednu točno odreñenu šifru i kad kažemo ime radnika sa šifrom "517", mislimo na jedno točno odreñeno ime. Svaki radnik ime jedno mjesto roñenja, ali više radnika može biti roñeno u istom mjestu. Zbog toga šifra radnika jednoznačno odreñuje mjesto roñenja radnika, ali mjesto roñenja ne odreñuje jednoznačno šifru radnika. Ovo je primjer
29 preslikavanja N:1 kod kojeg vrijednost atributa ŠIF-RAD funkcijski odreñuje vrijednost atributa MJESTO-ROð. U prethodna dva primjera za svaku postojeću šifru radnika postojalo je odgovarajuće ime radnika i mjesto roñenja na koje je šifra bila preslikana. To ne mora uvijek biti slučaj. Svaki radnik može imati najviše jednog bračnog druga. Preslikavanje domene na kojoj je zadan atribut ŠIF-RAD na domenu atributa IMEBRAČNOG-DRUGA bit će 1:1, ali vjerovatno neće sve šifre radnika biti preslikane (tj. neće svi radnici imati bračnog druga).
5.5. PRAVILA ZA OBLIKOVANJE NAZIVA Kod oblikovanja naziva u relacijskom modelu podataka pridržavamo se odreñenih pravila. Zahvaljujući njima, nazivi su kraći i sadrže neke dodatne informacije. U dosadašnjim primjerima (iako to nije spomenuto) nazivi su oblikovani prema tim pravilima. Kako bi izbjegli nesporazume, reći ćemo nešto o tome. Nazive domena pišemo velikim slovima (MJESTO, ŠIF-RAD, itd.). U skupu domena jedne baze podataka, naziv domene jednoznačno odreñuje domenu. Drugim riječima, u jednoj bazi podataka ne smiju postojati dvije domene s jednakim nazivom. Kao i naziv domene, i naziv atributa pišemo velikim slovima (ŠIF-RAD, MJESTO-ROð, MJESTO-BOR itd.). U skupu atributa jedne baze podataka, naziv atributa jednoznačno odreñuje atribut. Naziv atributa i naziv domene na kojoj je atribut zadan mogu biti jednaki. Ako su ova dva naziva jednaka, iz naziva atributa može se odrediti domena na kojoj je atribut zadan. Meñutim, ako su dva ili više atributa zadana na istoj domeni, onda takvo rješenje nije moguće. U takvim slučajevima naziv atributa sastavljen je od naziva domene i naziva uloge koju domena ima u relacijskoj shemi (na primjer, MJESTO-BOR, i MJESTO-ROð su dva atributa zadana na istoj domeni). Isti atribut može biti element dviju ili više relacijskih shema. Da bi jednoznačno odredili atribut u takvom slučaju koristimo tzv. kvalificirani naziv. Kvalificirani naziv atributa sastoji se od naziva relacijske sheme, u kojoj se atribut nalazi, i naziva atributa. Ova dva naziva odijeljeni su točkom (RADNIK.MJESTOBOR). Umjesto naziva relacijske sheme u kvalificiranom nazivu koristi se u nekim slučajevima naziv relacije (radnik.MJESTO-BOR). Naziv relacijske sheme pišemo velikim slovima (RADNIK). Naziv relacijske sheme jednoznačno odreñuje relacijsku shemu u skupu relacijskih shema jedne baze podataka. Skup atributa, od kojih se relacijska shema sastoji, navodi se, ako je to potrebno, u zagradama iza naziva relacijske sheme (RADNIK(ŠIF-RAD IMERAD...)). Kao što je spomenuto, primarni ključ relacijske sheme označava se podcrtavanjem naziva atributa koji ulaze u sastav primarnog ključa (RADNIK(ŠIFRAD IME-RAD...)). Spomenimo da skup ograničenja, koja su zadana na relacijskoj shemi, može biti naveden kao posljednji element niza u zagradama iza naziva sheme. Elementi skupa ograničenja zatvaraju se u vitičaste zagrade. Neka je F= {O1, O2, O3} skup ograničenja zadanih na relacijskoj shemi RADNIK. To možemo napisati kao RADNIK(ŠIF-RAD IME-RAD... {O1, O2, O3} ) Naziv relacije pišemo malim slovima i kurzivom (radnik). Naziv relacije jednoznačno odreñuje relaciju unutar skupa relacije jedne baze podataka. Naziv relacijske sheme na kojoj je relacija zadana može biti naveden u zagradama iza naziva relacije (radnik (RADNIK)). Umjesto naziva relacijske sheme ponekad se u zagradama, iza naziva relacije, navodi niz atributa od koji se sastoji relacijska shema. Ovo je posebno zgodno kod tabelarnog prikaza relacije, pri čemu popis atributa služi kao zaglavlje tabele. Recimo sad nešto o pravilima kojih ćemo se pridržavati kod označavanja u ovoj knjizi, a koja nisu dio relacijskog modela. Zbog veće preglednosti u tekstu ćemo, kad god to bude moguće, kao naziv domene koristit slovo D s indeksom (na primjer:
30 D1, D2, ...Dn)). Na sličan način, kao nazive atributa koristit ćemo velika slova s početka abecede (A, B, C, D,...), odnosno ta slova s indeksom (na primjer: A1, A2, A3,...). Indeks, ukoliko se koristi, služi za jednoznačno odreñivanje atributa, a ne za odreñivanje redoslijeda atributa u relacijskoj shemi. Kao oznaku podskupa atributa u relacijskoj shemi koristit ćemo velika slova s kraja abecede (X, Y, Z, W). Kao oznaku za odreñenu vrijednost atributa koristit ćemo mala slova s početka abecede, sa ili bez indeksa (na primjer: a, b, c, d, ili a1, a2, a3). Vrijednost sastavljenih atributa označavat ćemo malim slovima na kraju abecede, sa ili bez indeksa (na primjer: x, y, z, w, ili x1, x2, x3). Kvalificirane nazive atributa ćemo, zbog njihove dužine, izbjegavati, osim u slučaju kada to može dovesti do nesporazuma. Kao nazive relacijskih shema koristit ćemo velika slova iz sredine abecede (R, P, Q, S), a kao nazive relacija odgovarajuća mala slova pisana kurzivom. N-torku relacije označavat ćemo malim slovom "t", a vrijednost atributa Ai u n-torci s t[Ai], odnosno vrijednosti nekog podskupa atributa X u n-torci s t[Xi]. Spomenimo na kraju da ćemo, kad god to bude moguće, zbog jednostavnosti, uniju dvaju skupova X i Y pisati kao XY umjesto X ∪Y, odnosno ∪(X, Y).
31
6. RELACIJSKI PODJEZICI BAZE PODATAKA Prema Coddu (1972b), pod pojmom podjezika baze podataka podrazumijeva se jezik za pretraživanje i ažuriranje baze podataka iz kojeg su odstranjene komponente potrebne za njegovo izvoñenje na kompjuteru. Iako je definiran preko jezika baze podataka, podjezik je u biti teoretska podloga za definiranje jezika baze podataka. Svi postojeći jezici za relacijske baze podataka razvijeni su na osnovi dva različita podjezika relacijskog modela: - relacijske algebre, - relacijskog računa. Relacijska algebra je proceduralni jezik i sastoji se od skupa operatora za rad s relacijama, odnosno skupa odgovarajućih operacija definiranih tim operatorima. Kombiniranjem tih operacija moguće je izvesti pretraživanje, odnosno ažuriranje baze podataka. Relacijski račun zasnovan je na računu predikata i spada u neproceduralne jezike. Pomoću relacijskog računa definira se traženi rezultat, a sustavu za upravljanje bazom podataka se prepušta da odabere kombi-naciju operacija potrebnih da se doñe do rezultata. Codd (1972b) je pokazao da su ova dva podjezika meñusobno ekvivalentna tj. da bilo koji izraz u relacijskom računu može biti transformiran u semantički ekvivalentan niz operacija relacijske algebre.
6.1. RELACIJSKA ALGEBRA Codd (1972b) je definirao skup od osam operacija relacijske algebre. U meñuvremenu definirano je nekoliko dodatnih operacija (Date (l986b), Yang (1986)). Naša razmatranja ograničit ćemo na osnovne operacije relacijske algebre, koje je definirao Codd, s tim da ćemo se naknadno osvrnuti na njihovu primjenu u slučaju prisutnosti tzv. nul-vrijednosti u bazi podataka. Osam Coddovih operacija možemo podijeliti na dvije grupe: - operacije nad skupovima koje su za potrebe rada s relacijama nešto modificirane. - posebne operacije relacijske algebre. Od tradicionalnih operacija nad skupovima u relacijskoj algebri se koriste: - unija, - presjek, - razlika, - Kartezijev produkt. Grupa posebnih operacija sastoji se od: - selekcije, - projekcije, - pridruživanja, - dijeljenja. Kako bi se izbjegli mogući nesporazumi, želio bih upozoriti da se nazivi operacija, tj. postupaka koji se izvode nad operandima, koriste i kao nazivi rezultata tih operacija. Tako je, na primjer Kartezijev produkt postupak, ali i skup elemenata dobiven tim postupkom. Većinu pojmova potrebnih za definiranje osnovnih operacija relacijske algebre, definirali smo do sada. treba još definirati jednu operaciju nad n-torkama (spoj) i jedan pojam (unijska kompatibilnost).
32
Spoj Spoj je operacija nad n-torkama koja se javlja kao element nekoliko različitih operacija relacijske algebre. Neka su a i b n-torke: a=(a1, a2, ... an) i b=(b1, b2, ... bm). Operaciju spoj nad n-torkama a i b označavamo pomoću operatora “^” (tj. a^b). Operaciju definiramo pomoću izraza: a^b = (a1, a2, ... an, b1, b2, ... bm) Kao što vidimo, rezultat ove operacije je n-torka u čiji sastav ulaze svi elementi sadržani u n-torkama nad kojima je operacija izvedena. Ukupan broj elemenata u rezultirajućoj n-torki jednak je sumi broja elemenata n-torki a i b tj. (n + m).
Unijska kompatibilnost Binarne operacije unija, presjek i razlika mogu se izvoditi samo nad relacijama koje su meñusobno usporedive. Semantički nema smisla izvoditi operaciju unije nad dvije meñusobno neusporedive relacije, kao što su na primjer, relacije radnik (u kojoj svaka n-torka odgovara jednom radniku) i stroj (u kojoj svaka n-torka odgovara jednom stroju). Usporedivost dviju relacija je uvjet za iz-voñenje operacija unije, presjeka ili razlike nad tim relacijama, i naziva se unijska kompatibilnost. Unijska kompatibilnost relacija definira se preko unijske kompatibilnosti domena. U svom radu Codd (1972b) definira unijsku kompatibilnost domena na slijedeći način: Jednostavna domena je skup čiji elementi su meñusobno istovrsni. Elementi jedne jednostavne domene mogu naprimjer biti cijeli brojevi ili nizovi znakova odreñene dužine itd. Prema Coddu, dvije jednostavne domene su unijski kompatibilne ako sadrže istu vrstu elemenata. Dakle, dvije domene, čiji su elementi cijeli brojevi, unijski su kompatibilne, a domene od kojih jedna sadrži cijele brojeve, a druga nizove znakova odreñene dužine to nisu. Obratimo pažnju na jednu nelogičnost. Prema Coddu unijski bi bile kompatibilne domene od kojih jedna sadrži kućne brojeve, a druga šifre radnika uz uvjet da su definirane kao skupovi cijelih brojeva. Istina je da se elementi ove dvije domene mogu meñusobno usporeñivati. Rezultat te usporedbe semantički će najčešće biti besmislen. Sastavljena domena je podskup Kartezijevog produkta konačnog broja (recimo n) jednostavnih domena. Broj n je stupanj sastavljene domene. Prema Coddu: Dvije sastavljene domene unijski su kompatibilne ako ispunjavaju slijedeće uvjete: - imaju isti stupanj, - za i-tu jednostavnu domenu (0 ≤ i ≤ n) prve sastavljene domene vrijedi da je unijski kompatibilna s i-tom jednostavnom domenom druge sastavljene domene. Relacija je podskup sastavljene domene n-tog stupnja, s tim da redoslijed stupaca u relaciji nije bitan. Po analogiji: Dvije relacije su unijski kompatibilne ako ispunjavaju slijedeće uvjete: - imaju isti stupanj, - izmeñu dva skupa jednostavnih domena na kojima su zadane relacije, postoji preslikavanje 1:1 kojim se svaka domena jedne relacije preslikava na unijski kompatibilnu domenu druge.
33 Ovakva definicija unijske kompatibilnosti formalno omogućuje izvoñenje operacije unije, razlike i presjeka relacija. Nažalost, ovako definirana unijska kompatibilnost omogućava semantički besmislene operacije. Da bi se ovaj problem rješio unijska kompatibilnost je definirana na nešto drukčiji način. Smatramo da su dva atributa meñusobno unijski kompatibilna ako su zadana na istoj domeni. Dvije relacijske sheme su unijski kompatibilne ako zadovoljavaju slijedeće uvjete: - imaju isti stupanj, - izmeñu dva skupa atributa, od kojih se relacijske sheme sastoje, postoji preslikavanje 1:1 kojim se svaki atribut jedne relacijske sheme preslikava na unijski kompatibilan atribut druge. Konačno, Dvije relacije su meñusobno unijski kompatibilne ako su zadane na unijski kompatibilnim relacijskim shemama. Na nekoliko primjera ilustrirat ćemo razliku izmeñu ove dvije definicije unijske kompatibilnosti. Neka su zadane relacije osnovna-sredstva, nabava, radnik-1 i radnik-2. Ako pretpostavimo da su elementi domena na kojima su zadani atributi ODJEL i PROIZVOðAČ istovrsni (niz znakova jednake dužine), onda će se relacije osnovna-sredstva i nabava moći, prema Coddovoj definiciji, smatrati unijski kompatibilnim. Iako odjel radne organizacije ne može biti proizvoñač proizvoda, niti je proizvoñač odjel radne organizacije. Ustvari, prema Coddu, sve četiri relacije mogle bi biti meñusobno unijski kompatibilne. Prema drugoj definiciji, samo bi relacije radnik-1 i radnik-2 bile unijski kompatibilne s obzirom na to da su atributi MJESTOROð i MJESTO-BOR zadani na istoj domeni. osnovna-sredstva(ODJEL ERC ERC ERC FOTO VIDEO
STAVKA) TERMINAL PRINTER MIKRORAČUNALO KAMERA VIDEO KAMERA
nabava (STAVKA PROIZVOðAČ) TERMINAL IBM PRINTER IBM PC EPSON TV PHILIPS FILM KODAK radnik-1 ( IME MJESTO-ROð ) DARKO ZAGREB MARKO VARAŽDIN ŽARKO ZAGREB radnik-2 ( MJESTO-BOR IME ) LJUBLJANA DARKO VARAŽDIN MARKO ZAGREB ŽARKO
34
6.1.1. Unija Operaciju unije, dviju unijski kompatibilnih relacija, r (R) i s (S) označavamo s r∪s. Rezultat ove operacije je skup n-torki sadržanih u relaciji r, relaciji s ili u obadvije. Simbolički to možemo izraziti na slijedeći način: r ∪s = {t: t∈ ∈r ∧∈s } U izvoñenju operacije mogu se javiti neki problemi. Ako su relacije r i s zadane na istoj relacijskoj shemi (tj. R = S), redoslijed stupaca se može razlikovati. Da bi definirali redoslijed koji želimo u rezultatu, morat ćemo uskladiti ova dva redoslijeda U slučaju da su relacije r i s zadane na različitim, unijski kompatibilnim relacijskim shemama (tj. R ≠ S), pored usklañivanja redoslijeda stupaca bit će potrebno uskladiti i nazive unijski kompatibilnih atributa. Primjer Na dvije unijski kompatibilne relcije r (R) i s(S) ilustrirat ćemo operaciju unije i probleme koji se mogu javiti. a) Vrijedi R = S i redoslijed atributa je usklañen: r (A B C ) g h1 k l 2 k h3
s(A B C) gh 1 gl 4 r ∪s = (A B C) gh1 k l 2 kh 3 g l 4
Vrijedi R = S, ali redoslijed atributa nije usklañen: r (A B C ) g h1 k l 2 k h3
s (C A B) 1g h 4g l
Prije izvoñenja operacije potrebno je uskladiti redoslijed atributa u relaciji s s redoslijedom u relaciji r. s(A B C) gh 1 g l 4 Rezultat operacije, koja se nakon toga izvodi, jednak je rezultatu u prethodnom slučaju. b) Vrijedi R ≠ S, DOM(A)=DOM(D), DOM(B)=DOM(E), i DOM(C)=DOM(F): r (A B C ) gh1 kl 2 kh3
s (D E F) g h1 g l 4
Prije izvoñenja operacije potrebno je uskladiti nazive atributa u relaciji s s nazivima u relaciji r. Rezultat operacije jednak je rezultatu dobivenom u prethodna dva slučaja.
35 Operacija unije ima dva svojstva na koja ćemo se osvrnuti s nekoliko riječi. Prvo od tih svojstava je komutativnost, operandi mogu zamijeniti mjesta a rezultat operacije će ostati isti: r ∪ s = s ∪r Pored toga, unija je asocijativna. Neka su relacije p, r i s meñusobno unijski kompatibilne. Redoslijed kojim ćemo izvesti operacije unije, neće utjecati na rezultat: (p ∪r) ∪s = p ∪ (r ∪s ) Zahvaljujući nesporazuma:
asocijativnosti,
izostavljanje
zagrada
neće
dovesti
do
(p ∪r) ∪s = p ∪ r ∪s Pored toga, binarnu operaciju unije možemo proširiti na n-arnu kod koje operator operacije pišemo kao prefiks, a operande navodimo u zagradi koja slijedi: p ∪r ∪s = ∪(p, r , s )
6.1.2. Razlika Kao i u slučaju unije relacija, i kod operacije razlike relacija postavlja se uvjet da operandi budu unijski kompatibilni. Razlika izmeñu dvije unijski kompatibilne relacije r(R) i s(S) označava se kao r-s. Rezultat operacije je relacija zadana na relacijskoj shemi R, odnosno na relacijskoj shemi prvog operanda i obuhvaća sve n-torke sadržane u relaciji r, koje nisu sadržane u relaciji s, tj.: r – s = { t: t ∈ r ∧ t ∉ s } Primjer Neka su r(R) i s(S) dvije unijski kompatibilne relacije i neka vrijedi R = S: r(ABC) gh1 k l 2 k h3 r – s = ( A B C) k l 2 k h3
s(ABC) g h 1 g l 4 s–r=(ABC) g l 4
Kao i u slučaju operacije unije, bit će korisno da se prije izvoñenja operacije razlike usklade redoslijedi i nazivi kompatibilnih atributa. Razlika relacija je binarna operacija, a rezultat operacije je relacija koja je podskup prvog operanda. Kao što iz primjera vidimo, razlika nije komutativna, tj. vrijedi: r–s≠s–r Isto tako, razlika nije asocijativna operacija. Za tri meñusobno unijski kompatibilne relacije p, r, i s vrijedi: (p – r ) – s ≠ p – ( r – s ) Što proizlazi iz činjenica: (p – r ) – s = p – ( r ∪ s )
i
r ∪s ≠ r–s
36
6.1.3. Kartezijev produkt Kartezijev produkt dviju relacija r (R) i s (S) označavamo ovako: r X s. Rezultat ove operacije je skup n-torki koje su nastale kao rezultat operacije spajanja svake pojedine n-torke sadržane u relaciji r sa svakom pojedinom n-torkom relacije s, tj.: r X s = { (tr ^ ts): tr ∈ r ∧ ts ∈ s Rezultat ove operacije može, ali ne mora biti relacija. Ako je presjek skupa atributa relacijskih shema R i S prazan skup, Kartezijev produkt je relacija. Relacijska shema na kojoj je ta relacija zadana unija je skupova atributa relacijskih shema R i S. U slučaju da presjek skupova atributa relacijskih shema R i S nije prazan skup, rezultat operacije Kartezijev produkt nije relacija. Relacijska shema na kojoj bi ta relacija bila zadana sadržavala bi po dvije kopije svih atributa koji se nalaze u presjeku relacijskih shema R i S. S obzirom na to da je relacijska shema definirana kao skup atributa, a skup po definiciji ne sadrži kopije, takva shema nije dozvoljena. Rezultat, prema tome, nije relacija. Primjer Neka su r (R) i s(S) relacije na relacijskim shemama R i S. a) Neka vrijedi R ∩ S = ∅. Kartezijev produkt r X s je relacija: r( A B ) d1 e2 f 1
s( C D ) gh k c
rXs=(ABCD) d 1g h d 1k c e 2g h e 2k c f 1g h f 1k c b) Neka vrijedi R ∩ S ≠ ∅ . Kartezijev produkt r X s nije relacija. r( A B ) d 1 e 2 f 1
s( B C ) 3 g 4 h
rXs=(ABCD) d 13 g d 14 h e 23 g e 24 h f 13 g f 14 h Kartezijev produkt relacija, kao uostalom i prethodne dvije operacije, nešto je modificiran u odnosu na Kartezijev produkt skupova. Elementi Kartezijevog produkta skupova su ureñene n-torke. Elementi Kartezijevog produkta relacija su n-torke. S obzirom na to da redoslijed stupaca u relaciji nije bitan, redoslijed vrijednosti atributa
37 u n-torkama Kartezijevog produkta relacija se može mijenjati, za razliku od redoslijeda članova u ureñenoj n-torki. Iz ovoga dalje slijede razlike izmeñu Kartezijevog produkta relacija i Kartezijevog produkta skupova. Za razliku od Kartezijevog produkta skupova, Kartezijev produkt relacija je komutativan. Kao što je spomenuto, elementi Kartezijevog produkta skupova su ureñene n-torke u kojima je redoslijed članova bitan. Budući da je taj redoslijed odreñen redoslijedom operanada nad kojima se oprecija izvodi, očigledno Kartezijev produkt skupova ne može biti komutativan. Kartezijev produkt relacija je asocijativan. Zahvaljujući asocijativnosti, moguće je binarnu operaciju definirati kao n-arnu. Neka su p, r, i s relacije. Njihov Kartezijev produkt označavamo ovako: X( p, r, s ) tj. operator pišemo kao prefiks, a operande nad kojima se operacija izvodi zatvaramo u zagrade koje slijede iza operatora.
6.1.4. Projekcija Projekcija je unarna operacija kojom se iz dane relacije izdvajaju pojedini stupci. Neka su X i Y skupovi atributa i neka vrijedi Y⊆X. Neka je r(X) relacija zadana na skupu atributa X. Projekciju relacije r na skup atributa Y označavamo s πY(r). Rezultat te operacije je relacija zadana na skupu atributa Y, tj.:
πy(r) = { t[Y]: Y⊆ ⊆X ∧ t ∈ r } Primjer Neka je r(R) relacija na relacijskoj shemi R i neka relacijska shema sadrži atribute A, B, i C. Projekcija relacije r na atribute A i B bit će: r( A B C ) a 2 f b 1 g a 2 g c 3 f
(AB) a 2 b 1 a 2 c 3
πAB(r) = ( A B ) a 2 b 1 c 3
Pogledajmo još nekoliko, od više mogućih, projekcija relacije r :
πA(r) = ( A ) a b c
πBC(r) = ( B C )
πABB(r) = ( A B B )
2 f 1 g 3 f
a 2 2 b 1 1 c 3 3
Kao što iz primjera vidimo, projekcija može sadržavati dvije ili više kopija istog stupca pa, može, ali ne mora biti relacija.
6.1.5. Selekcija Selekcija ili restrikcija, kako se ponekad naziva, unarna je operacija kojom se iz relacije izdvaja odreñeni podskup n-torki. U okviru naredbe selekcije mora biti definiran uvjet, ili kriterij na osnovi kojeg se izvodi izdvajanje n-torki. Neka je r(R) relacija na kojoj treba izvesti selekciju. Neka je F uvjet selekcije. Svaka n-torka sadržana u r, koja zadovoljava F, bit će uključena u skup koji je rezultat operacije. Operator selekcije označavamo sa σ. Selekciju na relaciji r, prema uvjetu F, pišemo kao
σF(r). Selekciju možemo definirati pomoću izraza: σF(r) = { t : t ∈ r ∧ t zadovoljava F )
38 Kriterij selekcije može biti jednostavan ili sastavljen. Jednostavan kriterij ima oblik tvrdnje i sastoji se od dva operanda i θ (theta) operatora. θ operator može biti bilo koji od operatora za usporedbu skalara (=, ≠, <, ≤, >, ≥). Operandi, čije vrijednosti se usporeñuju, mogu biti atributi relacije nad kojom se selekcija izvodi ili atribut i konstanta. Konstanta se navodi s desne strane θ operatora i zadana je vrijednost atributa navedenog s desne strane. Primjer Neka je r(R) relacija, neka su A i B atributi u R i neka je a∈DOM(A) i b∈DOM(B). θ operator može, kao što smo rekli, kao operande imati atribute relacijske sheme R: AθB ili atribut i konstantu: Aθa Bθb Sastavljeni kriterij sastoji se od dva ili više jednostavnih kriterija koji su meñusobno povezani logičkim operatorima (∧, ∨, ¬). Povezivanjem jednostavnih kriterija oblikuje se sastavljeni kriterij: AθB ∧Aθa∨¬Bθb Pogledajmo sada nekoliko primjera selekcije. Primjer Neka je r(R) relacija, neka su A, B, i C atributi u relacijskoj shemi R i neka je k∈DOM(A). r( A B C ) k 2 7 h 3 2 q 4 5 h 2 2
σA=k(r) = σB=C(r) =
(ABC) k 2 7 (ABC) h 2 2
σB
(ABC) k 2 7 q 4 5
σA=h ∧ B>C(r) =
(ABC) h 3 2
Neka su F1 i F2 kriteriji za selekciju. Kompozicija selekcija uzastopno izvode na relaciji r(R):
σF1 σF2 (r) = σF2(σF1(r)) = σF1∧ F2 (r) Kako je konjunkcija komutativna operacija vrijedi:
σF1∧ F2 (r) = σF2∧ F1 (r)
σF1 i σF2 koje se
39
6.1.6 Sastavljene operacije Od osam osnovnih operacija relacijske algebre definirali smo pet jednostavnih operacija. Operacije presjek, pridruživanje i dijeljenje, koje ćemo sada definirati, možemo rastaviti na nekoliko jednostavnih operacija. Značenje ovih operacija, a posebno operacije pridruživanja, za rad s bazom podataka daleko prelazi značenje nekih od jednostavnih operacija. Zbog toga Codd (1982), kao jedan od uvjeta da bi se neki upravljački sistem baze podataka mogao smatrati minimalno relacijskim, postavlja zahtjev da, pored operacija projekcije i selekcije, podržava i operaciju pridruživanja.
Presjek Kao i operacije unije i razlike, i presjek relacija je binarna operacija i uvjetovan je unijskom kompatibilnošću relacija nad kojima se izvodi. Presjek dviju unijski kompatibilnih relacija r(R) i s(S) označavamo s r ∩ s. Rezultat ove operacije je relacija koja obuhvaća sve one n-torke koje su elementi i relacije r(R) i relacije s(S), tj.: r ∩ s = { t: t ∈ r ∧ t ∈ s } Primjer Neka su r(R) i s(S) relacije i neka vrijedi R = S. r( A B C ) a h 1 a k 1 b k 2
s( A B C ) a h 1 a k 2 b k 1 b k 2
Rezultat operacije r ∩ s bit će relacija r'(R): r ∩ s = r'( A B C ) a h 1 b k 2 Presjek je sastavljena operacija i može se izraziti pomoću operacije razlika: r ∩ s = r – (r – s)
Pridruživanje Operacija pridruživanja (join) je sastavljena binarna operacija. Iako to ne mora biti uvijek točno, zamislit ćemo da se operacija pridruživanja izvodi u tri koraka. U prvom koraku se iz dviju relacija dobiva Kartezijev produkt relacija, u drugom koraku se iz Kartezijevog produkta izdvaja podskup n-torki čiji elementi zadovoljavaju odreñene, zadane kriterije. Treći korak se izvodi samo u nekim slučajevima pridruživanja (kod tzv. prirodnog pridruživanja). U okviru tog koraka se, iz tabele dobivene u drugom koraku, izdvajaju kopije stupaca. Pogledajmo na jednom primjeru kako bi se odvijala prva dva zamišljena koraka operacije pridruživanja. Primjer Neka su r(R) i s(S) relacije i neka vrijedi B∈R i D∈S. Neka je uvjet izdvajanja B
40 (r X s) =r'( A B C D ) d 1 g 3 d 1 k 1 e 2 g 3 e 2 k 1 f 1 g 3 f 1 k 1
σB>D(r') = r”( A B C D ) d 1g 3 e 2g 3 f 1 g 3 Theta pridruživanje. Theta (θ) pridruživanje je najopćenitiji oblik operacije pri-druživanja. Neka su r(R) i s(S) relacije, i neka vrijedi Ai∈R i Bj∈S. Theta pridruživanje relacija r i s na osnovi kriterija izdvajanja Ai θ Bj označavamo kao r[ Ai θ Bj ]s. Rezultat ove operacije je skup n-torki koji zadovoljava slijedeće uvjete: - podskup je Kartezijevog produkta relacija r i s, i - svaki element tog podskupa zadovoljava kriterij izdvajanja [ Ai θ Bj ], odnosno: r[ Ai θ Bj ]s = { tr ^ts : tr ∈ r ∧ ts ∈ s ∧ tr [Ai] θ ts[Bj] } Ako je Kartezijev produkt dviju relacija relacija, onda je i rezultat operacije Theta pridruživanja relacija. Dakle, ako vrijedi R∩S = ∅, rezultat operacije theta pridruživanja relacija r(R) i s(S) će biti relacija. Ako je Kartezijev produkt relacija r(R) i s(S) relacija, onda operaciju theta pridruživanja nad relacijama r(R) i s(S) možemo i formalno izraziti pomoću Kartezijevog produkta i selekcije: r [ Ai θ Bj ]s = σAiθBj ( r X s ) Postoje dva posebna slučaja operacije theta pridruživanja o kojima moramo reći nešto više. Kriterij izdvajanja kod operacije theta pridruživanja može biti jednostavan ili sastavljen (kao i u slučaju selekcije). Neka je kriterij izdvajanja općenito označen s F. Prvi poseban slučaj operacije theta pridruživanja javlja se ako vrijedi F =∅, odnosno ako kriterij izdvajanja uopće ne postoji. U tom slučaju rezultat operacije theta pridruživanja jednak je Kartezijevom produktu. Drugi poseban slučaj je theta pridruživanje kod kojeg je theta operator znak jednakosti (=). Ovakvo pridruživanje naziva se pridruživanje s izjednačavanjem (equijoin). Rezultat operacije pridruživanja s izjednačavanjem je tabela s dva potpuno jednaka stupca. Atributi, čije vrijednosti su sadržane u tim stupcima, mogu ali ne moraju biti različiti. Primjer Neka su Neka su r(R) i s(S) relacije i neka vrijed i B∈R i D∈S. Neka je kriterij izdvajanja B = D. Pogledajmo kako će izgledati operacija pridruživanja r[B = D]s: r(AB) d1 e2 e4 f 1
s(C D ) g 2 k 1
41 r[B = D]s = ( A B C D ) d 1 k1 e 2 g2 f 1 k1 S obzirom da su B i D dva različita atributa (imaju različite nazive) rezultat je relacija, iako po vrijednostima atributa sadrži dva potpuno jednaka stupca. Naravno, u slučaju da su atributi, čije vrijednosti se izjednačavaju, i po svojim nazivima jednaki, rezultat pridruživanja neće biti relacija nego tabela. Primjer Neka su na relacijskim shemama NAB(ŠIF-ART DOBAVLJAČ) i PROD(ŠIFART ODJEL) zadane relacije nabava i prodaja. Neka je kriterij za izdvajanje NAB.ŠIF-ART = PROD.ŠIF-ART. Rezultat pridruživanja s izjednačavanjem: nabava [NAB.ŠIF-ART = PROD.ŠIF-ART]prodaja bit će tabela sa zaglavljem: (NAB.ŠIF-ART NAB.DOBAVLJAČ PROD.ŠIF-ART PROD.ODJEL) Kao što vidimo, u tabeli će biti dvije kopije atributa ŠIF- ART. Jedna kopija potiče iz relacije nabava, a druga iz relacije prodaja. Prirodno pridruživanje. Prirodno pridruživanje (natural-join) u uskoj je vezi s operacijom pridruživanja s izjednačavanjem. Kod prirodnog pridruživanja izjednačavaju se svi atributi koji se nalaze u presjeku relacija. Kao rezultat dobit ćemo tabelu koja sadrži kopije svih atributa koji se nalaze u jednoj i drugoj relaciji. Da bi ovu tabelu transformirali u relaciju moramo odstraniti kopije atributa iz zaglavlja tabele zajedno s odgovarajućim stupcima tabele. Ova dodatna operacija (projekcija) izvodi se kao treći korak u okviru operacije prirodnog pridruživanja. Neka su r(R) i s(S) relacije i neka je RS = Q. Prirodno pridruživanje relacija r i s označavamo s r|X|s. Rezultat te operacija bit će relacija q(Q). Za svaku n-torku tq u relaciji q postoje n-torke tr∈r i ts∈s za koje vrijedi tr= tq[R] i ts= tq[S], odnosno: r |X|s = { tq : tq[R]= tr∈r ∧ tq[S]= ts ∧ ts∈s } Primjer Neka su r(R) i s(S) relacije i neka vrijedi R = { A, B, C }, S = { B, C, D } i Q = { A, B, C, D } . r(ABC) s( B C D ) d 1 6 1 6 k b 3 6 3 6 h c 2 7 4 8 k r|X|s = q ( A B C D ) d 16 k b 36 h Maier (1983) navodi primjer s pilotima, avionskim linijama i tipovima aviona koji na tim linijama lete. Koristit ćemo taj primjer za ilustraciju prirodnog pridruživanja. Primjer Pretpostavimo da avionska kompanija ima popis tipova aviona za koje svaki pojedini pilot kompanije ima dozvolu za upravljanje i popis tipova aviona koji se koriste na pojedinim linijama. Ti popisi pohranjeni su kao relacije u bazi podataka.
42 letjelica ( LINIJA 860 860 876 876 920
TIP ) 727 747 727 747 707
dozvola( PILOT FRKOVIĆ FRKOVIĆ KOVAČIĆ HORVAT HORVAT
TIP ) 707 727 747 727 747
Pregled pilota, koji mogu pojedinim tipovima letjelica na odreñenoj možemo dobiti prirodnim pridruživanjem relacija letjelica i dozvola: letjelica |X| dozvola = ( LINIJA 860 860 860 860 876 876 876 876 920
TIP 727 727 747 747 727 727 747 747 707
PILOT ) FRKOVIĆ HORVAT KOVAČIĆ HORVAT FRKOVIĆ HORVAT KOVAČIĆ HORVAT FRKOVIĆ
Operaciju prirodnog pridruživanja možemo definirati kao kombinaciju jednostavnih operacija: Kartezijevog produkta, selekcije i projekcije. Neka su r(R) i s(S) relacije, neka vrijedi R∩S=Y i neka je R.Y∈R i S.Y∈S. Vrijedi: r |X||s = πRS(σR.Y=S.Y(rXs)) Postoje dva, za nas važna, posebna slučaja prirodnog pridruživanja. Prvi slučaj javlja se kada za relacije r(R) i s(S) čije prirodno pridruživanje tražimo, vrijedi R∩S = ∅, tj. relacije nemaju zajedničkih atributa. U tom slučaju, prirodno pridruživanje jednako je Kartezijevom produktu tih relacija. Primjer r(AB) k 1 g 8
s( C D ) f 6 a 1
r|X|s = ( A B C D ) k k g g
1 1 8 8
f 6 a1 f 6 a1
Drugi poseban slučaj javlja se kada za relacije r(R) i s(S), čije prirodno pridruživanje tražimo, vrijedi R = S, tj. kad su obadvije relacije zadane na istoj relacijskoj shemi. Rezultat prirodnog pridruživanja, u tom slučaju jednak je presjeku relacija r i s.
Primjer. r( A B ) k 1 g 8 r|X|s = ( A B ) k 1
s( A B ) k 1 a 6
43 Prirodno pridruživanje je komutativna i asocijativna operacija. Zahvaljujući tome moguće je binarnu operaciju prirodnog pridruživanja proširiti na n-arnu. N-arnu operaciju prirodnog pridruživanja označavamo tako da operator operacije pišemo kao prefiks, a operande navodimo u zagradi koja slijedi. Neka r(R), s(S) i q(Q) relacije. Vrijedi: r |X|s|X|q = |X| (r, s, q) Zbog značaja operacije prirodnog pridruživanja termin pridruživanje koristi se kao oznaka prirodnog pridruživanja.
Dijeljenje Operacija dijeljenja dviju relacija je binarna operacija s dosta kompliciranom definicijom. Neka su r(R) i s(S) relacije i neka vrijedi R = { X, Y } Neka je Y unijski kompatibilan s relacijskom shemom S. Dijeljenje relacije r(R) s relacijom s(S) označavamo s r/s. Rezultat ove operacije je relacija q(X) koja je najveći podskup od πX(r) za koji vrijedi da je q|X| sadržan u r. Drugi način na koji ovu operaciju možemo definirati je preko karakteristika ntorki od kojih se relacija q sastoji, odnosno: r/s = { t : ∀(ts ∈ s) ∃(tr ∈ r) { tr : tr[X] = tq ∧ tr[Y] = ts }} Riječima to možemo izreći na slijedeći način: Za svaku n-torku sadržanu u relaciji s postoji u relaciji r n-torka za koju vrijedi da su joj vrijednosti po atributima Y jednaki n-torki relacije s, a vrijednosti po atributima X jednaki n-torci u rezultatu. Lakše ćemo razumjeti operaciju dijeljenja ako se poslužimo s nekoliko jednostavnih primjera. Primjer Neka su r(R) i s(S) relacije i neka vrijedi R = {X, Y } i Y = S. r( X Y ) x1 y1 x1 y2 x2 y1 x3 y2 x4 y3 x5 y1 x5 y2 x5 y3
s( Y ) y1 y2
r/s = ( X ) x1 x2 Dijeljenje relacija je sastavljena operacija koja se može izraziti pomoću nekoliko jednostavnih operacija: r/s = πX(r) - πX ((πX(r) Xs) – r) Izvoñenje zadnjeg primjera po koracima imalo bi slijedeći izgled:
44 r( X Y ) x1 y1 x1 y2 x2 y1 x3 y2 x4 y3 x5 y1 x5 y2 x5 y3
s( Y ) y1 y2
πX(r) = r’( X ) x1 x2 x3 x4 x5 r’Xs = q( X Y ) x1 y1 x1 y2 x2 y1 x2 y2 x3 y1 x3 y2 x4 y1 x4 y2 x5 y1 x5 y2 q – r = p( X Y ) x2 y2 x3 y1 x3 y2 x4 y1 x4 y2
πX(p) = t( X ) x2 x3 x4 r’ – t = (r/s) ( X ) x1 x2 Spomenimo da dijeljenje relacije nije niti komutativna niti asocijativna operacija. Komplicirana definicija ove operacije i relativno jednostavni primjeri koje smo koristili za ilustraciju mogu dovesti do zaključka da se ova operacija u praksi rijetko ili nikako ne koristi. To nije točno. Pogledajmo još jedan primjer s pilotima: Primjer U prethodnom primjeru s pilotima upoznali smo se s relacijama letjelica(LINIJA TIP) i dozvola (PILOT TIP). Pretpostavimo da kompanija želi da svaki pilot koji leti na odreñenoj liniji može upravljati svim tipovima letjelica koje se koriste na toj liniji. Iz relacije letjelica dobit ćemo popis tipova letjelica na odreñenoj liniji. Ako
45 s tim popisom podijelimo relaciju dozvola dobit ćemo popis pilota koji mogu upravljati svim tipovima letjelica na danoj liniji. Za ovaj primjer izmijenit ćemo sadržaj relacije dozvola, a umjesto relacije letjelica koristit ćemo samo popise tipova letjelica na dvije linije. dozvola ( PILOT FRKOVIĆ FRKOVIĆ FRKOVIĆ KOVAČIĆ KOVAČIĆ HORVAT HORVAT HORVAT HORVAT ŽIC
TIP ) 707 727 747 707 727 707 727 747 1011 727
p1( TIP ) 707 727 747
dozvola/p1 = ( PILOT ) FRKOVIĆ HORVAT
p2( TIP ) 707
dozvola/p2 = ( PILOT ) FRKOVIĆ KOVAČIĆ HORVAT
6.1.7. Grafički prikaz operacija relacijske algebre Operacije sa skupovima mogu se vrlo efektno grafički prikazati. Slična je situacija i s većinom operacija relacijske algebre. Iznimke su operacije Kartezijev produkt i pridruživanje (theta pridruživanje i prirodno pridruživanje), koje su u biti operacije nad pojedinim elementima skupova, a ne nad skupovima. Pored toga, grafički prikaz operacije dijeljenja relacije nije ni naročito efektan niti jako ilustrativan. Grafički prikazi koje navodim napravljeni su prema Date (1986a). U njima se umjesto krugova, koji se obično koriste kao simboli skupova, koriste pravokutnici kao simboli dvodimenzionalnih tabela, odnosno relacija. Osjenčani prostor je rezultat operacije: r ∪s
πAB(r)
r
r
A
s
σF(r)
r∩s r
r s
B
46 r–s
r/s
X
Y Y
r
r s s
Slika 6.1 Grafički prikaz operacija s relacijama
47
7 PRAVILA INTEGRITETA U RELACIJSKOM MODELU Po svom značenju izrazi integritet, konzistencija, i osiguranje, odnosno zaštita podataka, meñusobno su srodni. Da bi izbjegli nesporazume, koji su u takvim slučajevima prilično vjerojatni, ukratko ćemo se osvrnuti na značenje svakog od tih izraza. Pod integritetom baze podataka podrazumijevamo ispravnost i istinitost informacija, odnosno podataka kojima su te informacije prikazane u bazi. Neispravni, netočni ili neistiniti podaci u bazi mogu biti posljedica slučajne pogreške kod unosa, odnosno ažuriranja podataka, pogreške programera, pogreške operatera, pogreške sistema, ili namjernog unošenja neispravnih podataka, odnosno uništavanja podataka u bazi. Problematika integriteta baze podataka u širem smislu obuhvaća sve mjere kojima je cilj da spriječe unos neispravnih podataka u bazu. Meñutim, kako se mjere za sprečavanje slučajnih pogrešaka značajno razlikuju od mjera za sprečavanje namjernih ilegalnih operacija, u praksi se ova problematika dijeli u dva područja. Osiguranje, odnosno zaštita podataka u bazi, bavi se mjerama za sprečavanje namjernog uništavanja sadržaja baze podataka. Slučajne pogreške i mjere za njihovo sprečavanje spadaju u problematiku integriteta baze u užem smislu. Izraz konzistentnost baze podataka često se koristi kao sinonim izraza integritet. Prema Date-u (1983), termin konzistencija je uži pojam kojim se označava neispravnost do koje je došlo zbog meñusobne neusklañenosti dvije ili više kopija nekog podatka u bazi.
7.1 PRAVILA INTEGRITETA Pravila integriteta su ograničenja sadržaja baze podataka na neka dozvoljena stanja. Cilj tih ograničenja je sprečavanje unošenja neispravnih i neistinitih podataka u bazu. Sve promjene stanja baze podataka, do kojih dolazi zbog upisa novih n-torki, kao i ažuriranja ili brisanja postojećih n-torki u bazi podataka, moraju biti u skladu s tim ograničenjima. Zajednička karakteristika svih ograničenja je činjenica da podaci koji nisu u skladu s tim pravilima sigurno nisu istiniti. Obrat meñutim ne vrijedi. Podatak može biti u skladu sa svim pravilima integriteta i biti neistinit. Pravila integriteta koja se javljaju u jednoj relacijskoj bazi, možemo podijeliti na dvije grupe. Opća pravila integriteta vrijede u svim relacijskim bazama podataka i dio su relacijskog modela, dok su tzv. korisnička pravila integriteta specifična za pojedine relacijske sustave i definira ih korisnik. Skup općih pravila integriteta relacijskog modela sastoji se od dva pravila: - entitetskog integriteta, - referencijalnog integriteta.
7.1.1 Entitetski integritet Prema Coddu (Codd, 1979), pravilo entitetskog integriteta glasi: Vrijednost primarnog ključa, ne smije biti jednaka nulvrijednosti. Ako je primarni ključ relacije sastavljeni atribut, vrijednost niti jedne komponente primarnog ključa ne smije biti jednaka nul-vrijednosti. Nul-vrijednost jednog atributa oznaka je za privremeno nepoznatu ili nepostojeću vrijednost tog atributa. Nul-vrijednost ne može jednoznačno odreñivati ntorku u relaciji. U skladu s tim je zahtjev da primarni ključ kao cjelina ne smije
48 poprimiti nul-vrijednost. Kao što znamo, ključ relacije, pored jednoznačnosti mora imati i svojstvo minimalnosti. Ovaj uvjet dolazi do izražaja u slučaju kad je primarni ključ sastavljen od nekog skupa atributa u relacijskoj shemi. Prema definiciji ključa, ako iz podskupa atributa od kojih se sastoji ključ izbacimo bilo koji atribut, ostatak više neće posjedovati svojstvo jednoznačnosti. Zbog toga niti jedna komponenta primarnog ključa ne smije biti jednaka nul-vrijednosti. Primarni ključ omogućava jednostavno i efikasno adresiranje u relacijskoj bazi podataka. Cilj je prvog pravila integriteta (entitetski integritet) da tu mogućnost očuva. U skladu s tim, kao dozvoljena stanja relacijske baze podataka smatraju se samo ona kod kojih je dosljedno očuvano svojstvo jednoznačnosti primarnog ključa.
7.1.2 Referencijalni integritet Zahtjev koji se postavlja referencijalnim integritetom u osnovi je jednostavan. Ako u bazi podataka postoji n-torka t1kojom se poziva neka n-torka t2, onda pozvana n-torka t2 (tzv. ciljna n-torka) mora postojati u bazi. Pozivanje n-torke izvodi se preko stranog ključa. Referencijalni integritet možemo definirati na slijedeći način: Neka u relaciji r(R) postoji strani ključ koji odgovara primarnom ključu u relaciji s(S). Svaka vrijednost stranog ključa u r mora biti: - ili jednaka vrijednosti primarnog ključa u nekoj od n- torki relacije s - ili jednaka nul-vrijednosti. Relacije r(R) i s(S) ne moraju biti različite relacije. U nekim slučajevima mora se dozvoliti mogućnost da strani ključ poprimi nulvrijednost. Pretpostavimo da strani ključ u relaciji radnik ukazuje na n-torku neposredno nadreñenog rukovodioca. Postavlja se pitanje što upisati kao vrijednost stranog ključa u n-torku radnika koji stoji na čelu radne organizacije. Taj radnik očigledno nema nadreñenog rukovodioca, pa prema tome ne postoji odgovarajuća ntorka. Pogledajmo još jedan sličan primjer. Pretpostavimo da u relaciji radnik postoji atribut ŠIFRA-ODJELA. Kao vrijednost treba upisati šifru odjela na kojem radnik radi. Kako u bazi postoji relacija odjel čiji primarni ključ je upravo šifra odjela, ovaj atribut u relaciji radnik je strani ključ. Ako dozvolimo da pojedini radnici mogu kroz odreñeni vremenski period biti nerasporeñeni, postavlja se pitanje što upisati kao sadržaj u ovo polje. Pomoću stranog ključa n-torke u relacijskoj bazi povezuju se u semantičke strukture. Pri tome se koristi mogućnost adresiranja n-torke pomoću primarnog ključa u relacijskoj bazi. Referencijalni integritet je zahtjev da se strani ključ dosljedno koristi za uspostavljanje semantičke strukture kako ne bi nastala zbrka u bazi podataka.
7.2. NEKI PROBLEMI IMPLEMENTACIJE INTEGRITETSKIH OGRANIČENJA Pravila integriteta odreñuju koja stanja baze podataka se mogu smatrati dozvoljenima. Ona su kriterij za ocjenu ispravnosti sadržaja baze podataka. Pravila integriteta se ne bave direktno problemom postizanja dozvoljenog stanja. Ipak, koriste se kod svakog unosa i ažuriranja podataka u bazi. Spomenimo još jednom da su pravila integriteta dio relacijskog modela. Način implementacije tih pravila u upravljački sustav baze podataka nije dio relacijskog modela. Zbog važnosti koju pravila integriteta imaju za relacijski model mislim da je potrebno upoznati se s nekim problemima koji se javljaju kod njihove implementacije. Da bi spriječio ulazak baze podataka u neko od nedozvoljenih, ilegalnih stanja, upravljački sustav mora, prije izvoñenja bilo koje operacije, ispitati moguće posljedice. Ukoliko ustanovi da će kao rezultat operacije baza podataka biti prevedena u neko od dozvoljenih stanja, upravljački sustav izvodi operaciju.
49 Nas, meñutim, interesira što treba napraviti sustav ako ustanovi da će izvoñenje odreñene operacije imati za posljedicu prelazak baze podataka u ilegalno stanje. Najjednostavnija mogućnost provoñenja pravila integriteta jest da upravljački sustav relacijske baze jednostavno odbije izvoñenje bilo koje od operacija čija posljedica bi bilo ilegalno stanje baze podataka. Druga, znatno složenija mogućnost je da se, pored tražene operacije, izvede i neka dodatna operacija kojom se djelovanje tražene operacije kompenzira tako da krajnji rezultat bude dozvoljeno stanje baze podataka. Upravljački sustav pružao bi korisniku baze mogućnost izbora. Korisnik bi morao specificirati: - pod kojim uvjetima treba odbiti izvoñenje operacije, - pod kojim uvjetima izvoñenje operacije može biti dozvoljeno i, eventualno, - koje kompenzacijske operacije treba izvesti. Promotrimo što to znači za pojedina pravila integriteta. U slučaju entitetskog integriteta, izbor, u načelu, nije velik. Bilo koja operacija čija posljedica bi bila da čitav primarni ključ , ili neki dio ključa neke n-torke u relaciji poprimi nul-vrijednost, ne smije biti izvedena. Nul-vrijednost u primarnom ključu ne može biti kompenzirana nikakvom dodatnom operacijom. Što se tiče referencijalnog integriteta, mogućnosti izbora su znatno veće. U slučaju da se traži brisanje neke ciljne n-torke moguće su tri osnovne strategije: - ciljna n-torka ne može se brisati tako dugo dok u bazi postoji pozivajuća n-torka. - kao dio operacije brisanja ciljne n-torke treba izvesti brisanje svih pozivajućih n-torki u bazi, u kojima je vrijednost stranog ključa jednaka vrijednosti primarnog ključa ciljne n- torke. - kao dio operacije brisanja ciljne n-torke vrijednosti stranih ključeva u pozivajućim n-torkama ažuriraju se na nul-vrijednost (ili vrijednost nekog postojećeg primarnog ključa). Slične mogućnosti postoje i u slučaju da se traži ažuriranje primarnog ključa ciljne n-torke (ažuriranje primarnog ključa je sastavljena operacija koja se sastoji od brisanja jedne postojeće i upisa nove n-torke u bazu podataka): - operacija ažuriranja primarnog ključa može biti izvedena samo u slučaju da u bazi podataka ne postoji pozivajuća n-torka. - u okviru operacije ažuriranja primarnog ključa ciljne n-torke ažurira se na novu vrijednost primarnog ključa i vrijednost stranog ključa u pozivajućoj n-torci. - u okviru operacije ažuriranja primarnog ključa ciljne n-torke ažurira se na nul-vrijednost vrijednost stranog ključa u pozivajućoj n-torci. Izbor neke od opisanih strategija ovisi u velikoj mjeri o prirodi semantičkog odnosa izmeñu pozivajuće i ciljne n-torke, odnosno o prirodi odnosa koji je prikazan pomoću stranog ključa. S nekoliko primjera (CINCOM, 1986) ilustrirat ćemo neke od mogućih odnosa. a) Postojanje ciljne n-torke uvjet je za postojanje pozivajuće n-torke. Kod ovakvog odnosa brisanje ciljne n-torke mora pratiti brisanje svih n-torki koje se na tu ciljnu n-torku pozivaju. Promjenu vrijednosti primarnog ključa ciljne n-torke mora pratiti odgovarajuća promjena vrijednosti stranih ključeva u pozivajućim ntorkama. Kao primjer takvog odnosa, uzet ćemo odnos izmeñu n-torke u relaciji rukovodilac i n-torke u relaciji radnik. Pretpostavit ćemo (što je vrlo vjerojatno) da svaki rukovodilac mora biti radnik u radnoj organizaciji. U trenutku kad napušta radnu organizaciju (uvjet za brisanje njegove n-torke u relaciji radnik) radnik gubi osnovni uvjet za rukovodioca. Prema tome, brisanje n-torke radnika, u relaciji radnik, mora biti praćeno brisanjem odgovarajuće n-torke u relaciji rukovodilac. U slučaju ažuriranja primarnog ključa n -torke u relaciji radnik treba na novu
50 vrijednost ažurirati i vrijednost stranog ključa u relaciji rukovodilac. rukovodilac( ŠIF-RUKOV ŠIF-ODJ . . )
radnik ( ŠIF-RAD IME-RAD . . )
Atributi ŠIF-RUKOV i ŠIF-RAD imaju zajedničku domenu. b) Za svaku pozivajuću n-torku mora postojati pridružena ciljna n-torka. Obratimo pažnju na razliku izmeñu ovog i prethodnog slučaja. U ovom slučaju ciljna n-torka se može mijenjati, što u prethodnom nije bilo moguće. Brisanju ciljne n-torke u ovom slučaju mora prethoditi ažuriranje vrijednosti stranog ključa u pozivajućim ntorkama. Kao primjer ovakvog odnosa, uzet ćemo odnos u kojem stoje n-torke relacije radnik i n-torke relacije odjel, uz pretpostavku da svaki radnik mora biti rasporeñen u neki od odjela. U trenutku kad se odreñeni odjel ukida, radnici tog odjela moraju biti prerasporeñeni u druge odjele. U skladu s tim, brisanju n-torke u relaciji odjel mora prethoditi ažuriranje vrijednosti stranih ključeva u n-torkama svih radnika tog odjela. radnik ( ŠIF-RAD IME-RAD ŠIF-ODJ . . )
odjel ( ŠIF-ODJ NAZIV-ODJ . . )
c) Pozivajuća n-torka ne ovisi o ciljnoj. Drugim riječima, ciljna n-torka može, ali ne mora postojati. Ukoliko ne postoji, vrijednost stranog ključa jednaka je nulvrijednosti. U ovakvom odnosu nalazi se radnik prema projektu na kojem radi (odnosno odgovarajuće n-torke kojima su opisani radnik i projekt). Uvjet za brisanje n-torke projekta može biti završetak rada na projektu ili napuštanje projekta. Radnik, koji radi na tom projek-tu, može privremeno ostati bez projekta. U skladu s tim, brisanju n-torke u relaciji projekt mora prethoditi ažuriranje vrijednosti stranog ključa u n-torkama svih radnika koji rade na tom projektu. Nova vrijednost stranog ključa može biti i nul- vrijednost (za razliku od prethodnog slučaja kad to nije bilo moguće). radnik ( ŠIF-RAD IME-RAD ŠIF-ODJ ŠIF-PROJ . .
projekt ( ŠIF-PROJ NAZIV-PROJ
)
d) Kao posljednji slučaj, razmotrit ćemo odnos za koji ne postoji semantička interpretacija, ili je ona za nas nebitna. Takav odnos možemo zanemariti i pored toga što, formalno, postoji strani ključ. Primarni ključevi relacija rukovodilac i radnik imaju zajedničku domenu. Formalno su n-torke u obadvije relacije istovremeno i pozivajuće i ciljne n-torke, a primarni ključevi ovih relacija su istovremeno i strani ključevi. Promotrili smo odnos u kojem je n-torka relacije rukovodilac pozivajuća, a n-torka u relaciji radnik ciljna. Pogledajmo sad odnos u kojem je n-torka relacije radnik pozivajuća, a n-torka relacije rukovodilac ciljna. Što treba učiniti s pozivajućom n-torkom (n-torka relacije radnik), ako se briše
51 ciljna n-torka (n-torka relacije rukovodilac)? Znamo da svi radnici ne samo da ne moraju, nego i ne mogu biti rukovodioci. Znamo, takoñer, da netko može prestati biti rukovodilac i ostati radnik u radnoj organizaciji (bar teoretski!). Prema tome, brisanju ciljne n-torke (n-torke u relaciji rukovodilac ne mora prethoditi nikakvo ažuriranje pozivajuće n-torke u relaciji radnik. rukovodilac ( ŠIF-RUKOV . . radnik ( ŠIF-RAD IME-RAD . . )
)
52
53
8. NUL – VRIJEDNOSTI U nekoliko navrata spomenute su nul-vrijednosti. Sad bi bilo vrijeme da se o tome kaže nešto više. Model baze podataka polazi od jedne vrlo prijatne pretpostavke da su nam sve relevantne informacije poznate i samo o nama ovisi da li ćemo ih unijeti u bazu. U praksi ova pretpostavka često zataji. Informacije koje nedostaju, bilo zato što nisu poznate, bilo zato što uopće ne postoje, problem su gotovo svake baze podataka. U okviru relacijskog modela mnogi su autori razmatrali ovu problematiku (Codd, 1975; Lacroix i Pirotte, 1976; Zaniolo, 1977; Lipski, 1979; Vassilou, 1979; Date, 1983 itd.). Rezultat svih tih napora jest da je problem manje ili više jasan. Za rješavanje tog problema postoji više prijedloga, ali cjelovito rješenje ne postoji. Rad na traženju rješenja problema nul-vrijednosti jedno je od značajnijih područja istraživanja u okviru relacijskog modela. U ovom poglavlju upoznat ćemo se s nekim aspektima ovog problema i nekim od ponuñenih rješenja. Poñimo od samog pojma nul-vrijednosti. Iz iskustva znamo da u svakidašnjem životu često ne raspolažemo informacijama koje su nam potrebne. U biografijama nekih povijesnih ličnosti naići ćemo na primjedbu: 'Točan datum roñenja nije poznat'. Iako nemam nekih posebnih dokaza, pretpostavljam da se u policijskim kartotekama ponekad javlja opaska: 'Sadašnje mjesto boravka nije poznato'. Zajedničko za navedene primjere jest da odgovarajuća informacija postoji. Povijesna ličnost se jednom rodila, a sumnjiva osoba negdje boravi. Uz dovoljno uloženog truda i sredstava te informacije bi se, eventualno, mogle pribaviti. Naravno, pitanje je koliko bi vremena to trajalo i da li bi vrijednost informacije odgovarala cijeni koju smo za nju platili. Pored ovakvih slučajeva, javljaju se i oni u kojima je jasno da, bez obzira na trud i sredstva koja smo spremni uložiti, do odreñenih informacija nije moguće doći. Kako na primjer ustanoviti ime bračnog druga osobe koja nije u braku, i u dogledno vrijeme ne namjerava stupiti u brak. Kako ustanoviti točno vrijeme povratka izletničkog autobusa ako na prospektu jasno piše da će ono biti 'naknadno odreñeno'. To su dva primjera nul-vrijednosti. Recimo usput da ANSI/X3/SPARC izvješće (1975) navodi preko 12 različitih vrsta nul-vrijednosti. Za nas meñutim nije toliko važan zbog kojeg se nul-vrijednost pojavila, a za razumijevanje pojma nul-vrijednosti će biti dovoljna i dva spomenuta primjera. Baza podataka je informacijski model realnog svijeta. Jasno je da ćemo se s problemom informacija koje nedostaju susresti i u bazama podataka. Prema tome, moramo imati mogućnost da takve informacije nekako označimo i da tim oznakama rukujemo. Podsjetimo se da informaciju u bazi podataka prikazujemo pomoću vrijednosti odgovarajućeg atributa. Ako nam odreñena informacija nije dostupna, postavlja se pitanje što upisati na mjesto rezervirano za tu informaciju. Dugo vremena koristila se nula, ako se radilo o numeričkom podatku, ili znak za bjelinu kad je bila riječ o nenumeričkom podatku. To je često imalo za posljedicu zbrku u obradi. Naime, informacija čija vrijednost nam nije poznata možda je stvarno jednaka nuli, odnosno bjelini, ali najvjerojatnije nije. Zbog toga je predloženo da se za informaciju koja nam nije poznata ili ne postoji, uvede termin 'nul-vrijednost'. Termin nul-vrijednost koristimo kao oznaku da nam je stvarna vrijednost atributa nepoznata. Spomenimo da nul-vrijednost može biti i drugačije definirana. Definicija nul-vrijednosti može bitno utjecati na logiku rukovanja s njima. Zbog toga ćemo se ograničiti na nul-vrijednosti kao oznaku za vrijednost atributa koja nam zasada nije poznata ili ne postoji.
54
8.1. NEKI PROBLEMI RUKOVANJA S NUL-VRIJEDNOSTIMA Najčešće se nul-vrijednost upisuje u bazu podataka privremeno, umjesto stvarne vrijednosti atributa. Nul-vrijednost zamjenjuje bilo koju vrijednost danog atributa, odnosno bilo koji element domene na kojoj je atribut zadan. Uzmimo da za odreñeni atribut u dvije različite n-torke stoje upisane nul-vrijednosti. Stvarne vrijednosti, umjesto kojih su te nul-vrijednosti upisane mogu, ali vjerojatno neće biti meñusobno jednake. Kakav treba biti rezultat operacije usporeñivanja ove dvije vrijednosti atributa (na pr. ? = ?). Drugim riječima, postavlja se pitanje da li možemo smatrati da je vrijednost istinitosti izraza '? = ?' ISTINA. U trenutku kad ove dvije nulvrijednosti poprime stvarne vrijednosti, vrijednost istinitosti ovog izraza bit će ili ISTINA ili LAŽ. U meñuvremenu, ako u izrazu postoji nul-vrijednosti njegova vrijednost istinitosti nije ni ISTINA ni LAŽ. Dvovalentna logika u prisutnosti nulvrijednosti očigledno ne zadovoljava. Pored vrijednosti istinitosti ISTINA i LAŽ morat ćemo uvesti i treću vrijednost. Tu vrijednost nazvat ćemo MOŽDA i označiti je sa znakom '?'. Pogledajmo tabele istinitosti za osnovne logičke operatore (I, ILI, NOT) za dvovalentu i trovalentnu logiku: I I L I I L L L L
ILI I I I L I
NOT I L L I
L I L
I I ? L
I I ? L
? ? ? L
L L L L
ILI I ? L
I I I I
? I ? ?
L I ? L
NOT I L ? ? L I
Obratimo pažnju na činjenicu da u slučajevima da nul-vrijednost vrijednost nije prisutna, trovalentna logika prelazi u dvovalentnu. Definirajmo sada operacije usporeñivanja nad nul-vrijednostima: Neka je theta bilo koji operator za usporedbu skalara (=, ≠, <, ≤, >, ≥) i neka su x i y operandi. Ako su x, y ili oba operanda u izrazu 'x θ y' jednaki nul-vrijednosti, rezultat usporedbe će takoñer biti nul-vrijednost. Drugim riječima, ako je vrijednost jednog, drugog, ili oba operanda nepoznata (nul-vrijednost), rezultat usporedbe će takoñer biti nepoznat (nul-vrijednost). Analogno tome možemo definirati i aritmetičke operacije nad nulvrijednostima: Neka je alfa bilo koji operator za aritmetičku operacije (+, -, x, /) i neka su x i y operandi. Vrijednost aritmetičkog izraza 'x α y' bit će nul-vrijednost ako su x ili y ( ili oba operanda nul-vrijednosti). Slijedeći problem s kojim se moramo suočiti jest problem kopija n-torki. Kao što znamo, relacija je skup i kao takva ne smije sadržavati dvije ili više meñusobno jednakih n-torki. U prisutnosti nul-vrijednosti pitanje da li su dvije n-torke meñusobno jednake može biti dosta zamršeno. Pretpostavimo da imamo dvije n-torke s meñusobno potpuno jednakim vrijednostima svih atributa, s tim da je kao vrijednost atributa A1 u obje n-torke upisana nul-vrijednost. Pitanje je da li se te dvije n-torke mogu smatrati kopijama ili ne. Naime, kad se nul-vrijednosti zamijene stvarnim vrijednostima atributa A1, n-torke mogu, ali vjerojatno neće biti kopije. Recimo odmah
55 da nema nekog egzaktnog rješenja ovog problema. S druge strane, da bi se mogle izvoditi binarne operacije nad skupovima kao što su unija, razlika i projekcija, kao i operacije presjek i dijeljenje relacija, ovo pitanje mora biti riješeno. Naime, skup ne smije sadržavati kopije i da bismo ih mogli odstraniti, moramo biti u stanju prepoznati ih. Date (1983) predlaže slijedeću definiciju kopija: Smatrat ćemo da su n-torke (d1, d2,... dn) i (e1, e2,... en) meñusobno jednake ako i samo ako za svako 'i' (1≤ ≤ i ≤ n) vrijedi di = ei i - obje vrijednosti atributa (di i ei) nisu nul-vrijed-nosti ili - obje vrijednosti atributa jesu nul-vrijednosti. Prema toj definiciji n-torke: d1, ?,... dn e1, ?,... en ako vrijedi di = ei, za 1≤ ≤ i ≤n, ove dvije n-torke će biti kopije. Po istoj definiciji n-torke: d1, ?,... dn e1, e2,... en i pored toga što vrijedi di = ei, za 1≤ ≤ i ≤n, nisu kopije. Dvovalentna logika i nepostojanje dobre definicije kopije osnovni su problemi koji se javljaju kod operacija nad nul-vrijednostima u bazi podataka. Nakon što smo se upoznali s mogućim rješenjima tih problema pogledajmo sada kako izgledaju operacije relacijske algebre u prisutnosti nul-vrijednosti.
8.2. OPERACIJE RELACIJSKE ALGEBRE U PRISUTNOSTI NUL- VRIJEDNOSTI Zbog uvoñenja trovalentne logike i nove definicije kopije od pet jednostavnih operacija relacijske algebre samo se operacija Kartezijev produkt ne mijenja. Zbog nove definicije kopije, rezultati operacija unije, razlike, i projekcije nešto su izmijenjeni. Slična je situacija s operacijom selekcije. Kako se u prisustvu nulvrijednosti primjenjuje trovalentna logika, rezultat operacije selekcija mogao bi nas iznenaditi. Naravno, kao posljedica tih promjena, dolazi do promjena kod sastavljenih operacija relacijske algebre. Naglasimo da su definicije svih operacija relacijske algebre ostale nepromijenjene. Zahvaljujući tome, u slučaju da nul-vrijednosti nema, ove operacije prelaze u standardne operacije relacijske algebre. Promotrimo na nekoliko primjera kako će izgledati rezultati ovih operacija u prisustvu nul-vrijednosti. Primjer. Neka su r(R) i s(R) relacije i neka je R = { A, B, C }. Rezultati operacija unije, razlike i presjeka na tim relacijama su slijedeći: r( A B C ) g h 1 g ? ? ? ? 3 ? ? ?
s( A B C ) g h 2 ? ? 3 ? ? ? r∪ s=(ABC) g h 1 g ? ? ? ? 3 ? ? ? g h 2
r–s=(ABC) g h 1 g ? ?
πAB(r) = ( A B ) g h g ? ? ?
56 Kao što je spomenuto, u skladu s promjenama kod jednostavnih operacija, javljaju se i promjene kod sastavljenih operacija. Definicija kopije utjecat će na sastavljene operacije presjek i dijeljenje. Primjer Neka su r(R) i s(R) relacije iz prethodnog primjera. Rezultat operacije presjek ovih dviju relacija će biti: r∩s=(ABC) ? ? 3 ? ? ? Primjer Neka su s(S) i q(Q) relacije i neka vrijedi S= { X, Y } i Q = Y. s( X Y ) x1 y1 x1 y2 x2 ? x2 y2 x3 y1 x3 ? ? ? ? y2
q( Q ) ? y2
s/q = ( X ) x2 ? U okviru naredbe za selekciju sadržan je i kriterij izdvajanja. Iz relacije, nad kojom se selekcija izvodi, bit će izdvojene sve one n-torke za koje je tvrdnja, sadržana u kriteriju izdvajanja, istinita. Naravno, neće biti izdvojene one n-torke za koje ta tvrdnja nije istinita, kao i n-torke za koje je tvrdnja MOŽDA istinita. Ustvari, kao što ćemo, vidjeti mi nemamo mogućnosti da izdvojimo n-torke u kojima je kao vrijednost odgovarajućeg atributa upisana nul-vrijednost. Primjer Neka je r(R) relacija i neka za atribut MJESTO vrijedi MJESTO ∈ R. Promotrimo rezultat selekcije: σ (MJESTO = ZG) ∨ ¬(MJESTO = ZG) (r) U slučaju da niti jedna n-torka relacije r kao vrijednost atributa MJESTO nema upisanu nul-vrijednost (vrijedi dvovalentna logika), u rezultatu operacije bit će sadržane sve n-torke relacije r (naime, ili je vrijednost atributa MJESTO jednaka ZG ili nije jednaka ZG). Ako je u nekim n-torkama relacije r kao vrijednost atributa MJESTO upisana nul-vrijednost (vrijedi trovalentna logika), te n-torke neće biti uključene u rezultat operacije. Praktično, do tih n-torki (barem preko atributa MJESTO) operacijom selekcije ne možemo doći. Operacija selekcije nije se izmjenila. Ipak, rezultat ove operacije u prisutnosti nul-vrijednosti, zahvaljujući trovalentnoj logici, može dovesti do 'gubitka' jednog dijela relacije. Ovo još više dolazi do izražaja u operaciji pridruživanja.
57
8.3. DODATNE OPERACIJE Pored operacija relacijske algebre, koje smo dosad upoznali, za rad s nulvrijednostima predložene su još neke. Upoznat ćemo se s dvije grupe takvih operacija.
8.3.1 MOŽDA operacije Kod operacija čije naredbe sadrže kriterij izdvajanja (selekcija i pridruživanje), u rezultatu će biti sadržane samo kopije onih n-torki za koje je tvrdnja sadržana u kriteriju izdvajanja istinita. Tvrdnjom u kriteriju moguće je specificirati bilo koju vrijednost ili grupu vrijednosti danog atributa relacije. Iznimka je, kao što smo vidjeli, jedino nul-vrijednost. Bez obzira kako je formulirana tvrdnja u kriteriju izdvajanja, za n-torke koje u odgovarajućem atributu imaju upisanu nul-vrijednost ona će uvijek biti MOŽDA istinita. Da bi se riješio ovaj problem, predloženo je da se definira unarni theta operator 'JE NUL-VRIJEDOST' (Codd, 1979; Date, 1983). U najjednostavnijem slučaju kao operand koristi se atribut relacije. Neka je r(R) relacija i A atribut za koji vrijedi A∈R. Tvrdnja (A) JE NUL-VRIJEDOST će biti istinita smo za one n-torke relacije r koje kao vrijednost atributa A imaju, umjesto stvarne, upisanu nul-vrijednost. Operand se može proširiti na proizvoljan skalarni izraz. Tvrdnja sadržana u kriteriju bit će istinita samo za one n-torke za koje je vrijednost istinitosti tog izraza jednaka MOŽDA. Neka je r(R) relacija i neka vrijedi A, B∈R. Tvrdnja (A = B) JE NUL-VRIJEDNOST će biti istinita za sve n-torke relacije r za koje je istinitost izraza (A = B) jednaka MOŽDA. To će biti, kao što znamo, kad je vrijednost jednog ili oba operanda jednaka nul-vrijednosti. Operacije koje koriste ovaj unarni operator nazivaju se MOŽDA operacije. Konkretno, predložene su operacije MOŽDA SELEKCIJA (MAYBE SELECT) i MOŽDA PRIDRUŽIVANJE (MAYBE JOIN). Vrsta theta operatora koji se u tim operacijama koristi vidljiva je iz oznake operacije (MOŽDA) i ne navodi se posebno u uvjetu. U kriteriju izdvajanja navodi se samo operand. Operacijom MOŽDA SELEKCIJA (MOŽDA σ) izdvajaju se u rezultat samo kopije onih n-torki relacije za koje je istinitost operanda MOŽDA. U jednom od prethodnih primjera koristili smo relaciju r(R), čija shema R je sadržavala, izmeñu ostalih, i atribut MJESTO. Operacijom MOŽDA σ
MJESTO(r)
iz relacije r biti izdvojene samo n-torke koje kao vrijednost atributa MJESTO imaju upisanu nul-vrijednost. Dakle, upravo one koje operacijom selekcije nikako nismo mogli izdvojiti u rezultat. Operacija pridruživanje je binarna operacija u okviru koje se izvodi združivanje n-torki dviju relacija. U rezultat su uključeni oni parovi n-torki za koje je tvrdnja navedena u kriteriju istinita. Kao i u slučaju selekcije, i kod pridruživanja u rezultatu neće biti sadržane n-torke za koje je tvrdnja MOŽDA istinita. Kao što znamo, to su sve one n-torke koje kao vrijednost nekog od atributa navedenih u kriteriju izdvajanja imaju upisanu nul-vrijednost. Operacijom MOŽDA PRIDRUŽIVANJE bit će združene samo one n-torke jedne i druge relacije za koje je tvrdnja navedena u kriteriju MOŽDA istinita. Pogledajmo kako bi to izgledalo na jednom primjeru.
58 Primjer. Neka su r(R) i s(S) relacije, te neka vrijedi R = { SD, MJESTO } i S = { SK, MJESTO }. r( SD MJESTO ) D1 ZG D2 VŽ D3 ?
s( SK MJESTO ) K1 PU K2 ZG K3 ?
MOŽDA r[ r.MJESTO = s.MJESTO ]s = ( SD r.MJESTO SK s.MJESTO ) D1 ZG K3 ? D2 VŽ K3 ? ? K1 PU D3 D3 ? K2 ZG D3 ? K3 ? Kao što vidimo, u rezultatu nije sadržana n-torka D1 ZG K2 ZG budući da niti odgovarajuća n-torka relacije r ni ona relacije s nemaju kao vrijednost atributa MJESTO, upisanu nul-vrijednost.
8.3.2. Vanjsko pridruživanje Za razliku od MOŽDA operacija, operacija vanjsko pridruživanje nije definirana da bi se otklonili problemi izazvani prisutnošću nul-vrijednosti u relaciji. Razlog zbog kojeg je ova operacija definirana je proširenje mogućnosti operacije pridruživanje. U okviru operacije pridruživanje (ili unutarnje pridruživanje), obavlja se združivanje n-torki iz dvije relacije na osnovi usporedbe vrijednosti atributa sadržanih u n-torkama. N-torke koje ne mogu biti združene ne ulaze u rezultat operacije i za korisnika su, na neki način, 'izgubljene'. To u nekim slučajevima može biti nezgodno. Vanjsko pridruživanje je operacija u okviru koje se obavlja združivanje kao i kod običnog (unutarnjeg) pridruživanja, a nakon toga, sve preostale nezdružene n-torke 'združuju' se s n-torkom koja se sastoji od niza nul-vrijednosti. Razlikujemo lijevo, desno i simetrično vanjsko pridruživanje. Kod lijevog pridruživanja u rezultat će biti uključene samo nezdružene n-torke iz prve relacije, kod desnog će s nul-vrijednostima biti združene i uključene u rezultat samo nezdružene n-torke iz druge relacije, i konačno, kod simetričnog vanjskog pridruživanja s nul-vrijednostima se združuju sve nezdružene n-torke iz prve i druge relacije nad kojima se izvodi operacija. U narednom primjeru koristit ćemo notaciju koju predlaže Date (1983). Simbol *theta *, prema toj notaciji, koristi se kao oznaka za simetrično vanjsko pridruživanje. Simboli *theta i theta* koriste se kao oznake za lijevo, odnosno desno vanjsko pridruživanje. Neka je theta znak jednakosti. Oznaka za simetrično vanjsko pridruživanje će biti *=*, a oznake *= i =* za lijevo odnosno desno vanjsko pridruživanje. Primjer. Neka su r(R) i s(S) relacije i neka vrijedi R= { SD, MJESTO } i S= { SK, MJESTO }. Neka je kriterij izdvajanja r.MJESTO = s.MJESTO. r( SD MJESTO ) D1 ZG D2 VŽ D3 ?
s( SK MJESTO ) K1 PU K2 ZG K3 ?
59 a) Lijevo vanjsko pridruživanje r[r.MJESTO *= s.MJESTO]s = ( SD r.MJESTO SK s.MJESTO ) D1 ZG K2 ZG D2 VŽ ? ? ? ? ? D3 b) Desno vanjsko pridruživanje r[r.MJESTO =* s.MJESTO]s = ( SD r.MJESTO SK s.MJESTO ) D1 ZG K2 ZG ? ? K1 PU ? ? K3 ? c) Simetrično vanjsko pridruživanje r[r.MJESTO *=* s.MJESTO]s = ( SD r.MJESTO SK s.MJESTO ) D1 ZG K2 ZG D2 VŽ ? ? ? ? ? D3 ? ? K1 PU ? ? K3 ?
60
61
III DIO
TEORIJA OBLIKOVANJA BAZE PODATAKA
62 U središtu teorije oblikovanja baze podataka nalazi se ideja zavisnosti i ograničenja koja iz zavisnosti proizlaze. Prije nego što kažemo nešto više o samom postupku oblikovanja baze, moramo se upoznati s odreñenim elementima teorije zavisnosti. U okviru toga upoznat ćemo se s pojedinim tipovima zavisnosti i transformacijama koje su nam potrebne u postupku oblikovanja baze podataka. Codd (1970) je ugradio funkcijske zavisnosti u koncept relacijskog modela. Delobel i Casey (1973), te Armstrong (1974) bavili su se problemom logičkog izvoñenja funkcijskih zavisnosti. Pomoću funkcijskih zavisnosti definirane su prva, druga, treća i Boyce-Coddova normalna forma (Codd, 1971; 1972a; 1974). Funkcijske zavisnosti pokazale su se kao vrlo pogodan instrument za definiranje modela realnog svijeta. Takav model se, u pravilu, sastoji od skupa atributa i skupa funkcijskih zavisnosti koje su zadane na tom skupu atributa. Transformacija modela svodi se na transformaciju skupa funkcijskih zavisnosti. Matematički aparat za rukovanje i transformaciju skupa funkcijskih zavisnosti razvijen je u okviru teorije zavisnosti koja predstavlja dio relacijskog modela. Grafičke metode za rad sa skupom funkcijskih zavisnosti razvili su Ausiello i dr.(1983), a Yang (1986) je uočio i ispravio neke pogreške. Grafički algoritmi za rad sa skupom funkcijskih zavisnosti su, uz minimalnu modifikaciju, preuzeti od Yanga (1986). Višeznačne zavisnosti definirali su, i ispitivali njihove karakteristike, nezavisno Zaniolo (1976), Fagin (1977) i Delobel (1978). Beeri, Fagin i Howard (1977), te Mendelzon (1979) definirali su aksiome za logičko izvoñenje funkcijskih i višeznačnih zavisnosti. Na kraju, uz pomoć višeznačnih zavisnosti definirana je četvrta normalna forma. Join zavisnosti definirao je Rissanen (1977). Sciore (1982) je definirao skup pravila za logičko izvoñenje join zavisnosti. Na osnovi join zavisnosti, Fagin (1979) je definirao projekt-join normalnu formu.
63
9. FUNKCIJSKA ZAVISNOST Funkcijska zavisnost je vrsta odnosa u kojem mogu stajati elementi dvaju ili više, ne obavezno različitih, skupova. Smatramo da neki skup X funkcijski ili jednoznačno odreñuje neki skup Y, odnosno da Y funkcijski zavisi o X, ukoliko vrijedi da niti jedan element skupa X ne može biti preslikan na više od jednog elementa skupa Y. U skladu s tim funkcijsku zavisnost možemo definirati na slijedeći način: Neka su U i V skupovi. Smatramo da vrijedi U → V (čitaj 'U funkcijski odreñuje V' ili 'V funkcijski zavisi o U'. U je lijeva, a V desna strana funkcijske zavisnosti U → V) ako niti jedan element skupa U ne može biti preslikan na više od jednog elementa skupa V. Rezultat takvog preslikavanja je skup ureñenih parova. Prvi član svakog ureñenog para potječe iz prvog, a drugi iz drugog skupa. Kako niti jedan element prvog skupa ne može biti preslikan na više od jednog elementa drugog skupa, u skupu ureñenih parova ne mogu postojati dva različita ureñena para koji imaju meñusobno jednak prvi član. Gornjom definicijom opisan je općenit slučaj funkcijske zavisnosti. Nas, meñutim, posebno interesira funkcijska zavisnost meñu atributima relacijske sheme. Tu se javljaju neke specifičnosti i bit će korisno da se s njima upoznamo prije nego što krenemo dalje i upadnemo u niz nesporazuma. U prvom redu, kao što znamo, atributi nisu skupovi. Kad govorimo o funkcijskoj zavisnosti meñu atributima mislimo, zapravo, na funkcijsku zavisnost meñu domenama na kojima su ti atributi zadani, odnosno meñu aktivnim domenama tih atributa. Posebno treba obratiti pažnju na slijedeći problem. Kad promatramo odnos izmeñu dva podskupa atributa relacijske sheme, zanemarujemo vrijednosti svih ostalih atributa u n-torkama relacije, ali ih, u pravilu, ne odstranjujemo iz relacije. Promatramo, dakle, niz ureñenih parova, čiji članovi su smješteni u dva stupca tabele. Taj niz može sadržavati kopije. Nakon što smo lijepo obrazložili da skup ureñenih parova dobiven funkcijskim preslikavanjem ne može sadržavati dva elementa s jednakim prvim članom, ova tvrdnja može izgledati kao kontradikcija (ako su dva ureñena para meñusobno jednaka onda će im i prvi članovi biti jednaki). Ipak, ona to nije. Dva stupca tabele koji sadrže članove ureñenih parova, nisu relacija i, za razliku od relacije, mogu sadržavati kopije. Ako meñu promatranim podskupovima atributa postoji funkcijska zavisnost, niz ureñenih parova, koji promatramo, ne može sadržavati dva ureñena para koji imaju jednak prvi, a razlikuju se po drugom članu (to bi značilo da je prvi član preslikan na dva različita druga člana). Pokušajmo sad definirati funkcijsku zavisnost na relacijskoj shemi: Neka je R(A1, A2,... An) relacijska shema i neka su X i Y dva podskupa atributa u R. Smatramo da vrijedi X → Y, ako u bilo kojoj relaciji r zadanoj na R, za bilo koje dvije n-torke t1 i t2, za koje vrijedi t1[X] = t2[X], vrijedi i t1[Y] = t2[Y]. Nicolas (1978) je ovu definiciju dao u simboličkom obliku: ∀ t1∀ t2 (( t1[X] = t2[X] ) ⇒ ( t1[Y] = t2[Y] )) Kao što znamo, relacija nije statičan objekt. Tokom vremena relacije prelaze iz jednog dozvoljenog stanja u drugo dozvoljeno stanje (ili bi se tako trebale ponašati). Ispitivanjem sadržaja neke relacije, mi ispitujemo jedno od dozvoljenih
64 stanja. Neke funkcijske zavisnosti koje vrijede u jednom, ne moraju vrijediti u drugom dozvoljenom stanju. Za funkcijsku zavisnost koja vrijedi u svim dozvoljenim stanjima svih relacija zadanih na danoj relacijskoj shemi, kažemo da vrijedi na relacijskoj shemi. Pomoću funkcijskih zavisnosti opisujemo zakonitosti. To mogu biti prirodni zakoni (svaki čovjek ima jedan datum roñenja), društvene norme (svaka osoba može imati najviše jednog bračnog druga) ili poslovni običaji (svaki račun mora biti podmiren). Funkcijske zavisnosti koje vrijede u jednom od dozvoljenih stanja možemo podijeliti na dvije grupe. Funkcijske zavisnosti koje vrijede na relacijskoj shemi i funkcijske zavisnosti specifične za to dozvoljeno stanje. Ispitivanjem sadržaja relacije otkrit ćemo i jedne i druge funkcijske zavisnosti. Da li u nekoj relaciji r, u odreñenom momentu vrijedi X → Y, možemo ustanoviti vrlo jednostavnim ispitivanjem. Algoritam ispitivanja sastoji se od dva koraka: 1) N-torke relacije r sortiramo po vrijednosti atributa u stupcu X. Nakon sortiranja, sve n-torke s meñusobno jednakom vrijednošću od X bit će u tabeli smještene jedna iza druge. 2) Ako su u svakom podskupu n-torki relacije r, čiji elementi imaju meñusobno jednake vrijednosti od X, jednake i vrijednosti od Y, u relaciji r, u tom momentu, vrijedi X → Y. Primjer Treba ustanoviti da li, u relaciji raspored, vrijede zavisnosti LET → SAT, i SAT → LET: raspored ( PILOT IVEKOVIĆ IVEKOVIĆ MODRIĆ MODRIĆ MODRIĆ OMEJEC OMEJEC KVATERNIK KVATERNIK KVATERNIK
LET 790 860 876 920 790 790 860 876 876 925
DATUM SAT ) 22.5. 9.35 23.5. 0.40 21.5. 7.00 25.5. 9.20 24.5. 9.35 26.5. 9.35 25.5. 10.40 22.5. 7.00 26.6. 7.00 28.5. 10.40
Nakon sortiranja n-torki po vrijednosti atributa LET, tabela će izgledati ovako: raspored ( PILOT IVEKOVIĆ MODRIĆ OMEJEC IVEKOVIĆ OMEJEC MODRIĆ KVATERNIK KVATERNIK MODRIĆ KVATERNIK
LET 790 790 790 860 860 876 876 876 920 925
DATUM 22.5. 24.5 26.5. 25.5. 25.5. 21.5. 22.5. 26.5. 25.5. 28.5.
SAT ) 9.35 9.35 9.35 10.40 10.40 7.00 7.00 7.00 19.20 10.40
Vidimo da se svaka vrijednost atributa LET preslikava na jednu jedinu vrijednost atributa SAT. Prema tome, vrijedi zavisnost LET → SAT. Obratimo pažnju na činjenicu da iz toga ne možemo zaključiti da li ta zavisnost vrijedi u nekom drugom dozvoljenom stanju relacije raspored, odnosno da li vrijedi na relacijskoj
65 shemi na kojoj je zadana relacija raspored. Nakon sortiranja n-torki po vrijednosti atributa SAT, tabela raspored će izgledati ovako: raspored ( PILOT MODRIĆ KVATERNIK KVATERNIK IVEKOVIĆ MODRIĆ OMEJEC IVEKOVIĆ OMEJEC KVATERNIK MODRIĆ
LET 876 876 876 790 790 790 860 860 925 920
DATUM SAT ) 21.5. 7.00 22.5. 7.00 26.5. 7.00 22.5. 9.35 24.5. 9.35 26.5. 9.35 25.5 10.40 25.5 10.40 28.5 10.40 25.5. 19.20
Kao što vidimo, vrijednost atributa SAT 10.40 preslikava se na vrijednosti atributa LET 860 i 925. Dakle, ne vrijedi zavisnost SAT → LET. Ako ne vrijedi u jednom dozvoljenom stanju relacije raspored, zavisnost ne vrijedi ni u relacijskoj shemi na kojoj je relacija raspored zadana. Očito je da ispitivanjem pojedinih relacija u odreñenim momentima ne možemo ustanoviti da li neka zavisnost vrijedi na relacijskoj shemi na kojoj je relacija zadana. Za to bi bilo potrebno ispitati sva dozvoljena stanja svih relacija zadanih na danoj relacijskoj shemi, a to je prevelik posao. Ispitivanjem, meñutim, možemo ustanoviti da neka zavisnost ne vrijedi na relacijskoj shemi. Dovoljno je dokazati da ne vrijedi u jednom dozvoljenom stanju. Općenito, zavisnost koja vrijedi u odreñenom momentu, u odreñenoj relaciji može biti posljedica: - funkcijske zavisnosti u relacijskoj shemi na kojoj je relacija zadana ili - nedovoljnog broja n-torki u relaciji. Pogledajmo na primjer relaciju: raspored ( PILOT LET IVEKOVIĆ 790
DATUM SAT ) 22.5. 9.35
Ispitivanjem pomoću našeg algoritma, lako ćemo se uvjeriti da na toj relaciji vrijede sve funkcijske zavisnosti koje su u skupu atributa (na kojem je relacija zadana) uopće moguće. Nas interesiraju funkcijske zavisnosti koje vrijede na relacijskoj shemi. One prikazuju odreñene zakonitosti. Funkcijske zavisnosti koje vrijede samo u odreñenoj relaciji specifične su za dani skup n-torki, odnosno za odgovarajući skup primjera. Ispitivanjem pojedinih relacija ne možemo ustanoviti koje su to zavisnosti. Postavlja se pitanje na koji način možemo pronaći zavisnosti koje prikazuju zakonitosti. Funkcijske zavisnosti zadane na relacijskoj shemi su istinite tvrdnje o realnom svijetu. Ovakve tvrdnje zasnivane su na apriornom znanju o segmentu realnog svijeta koji modeliramo. Jedini način da nañemo takve funkcijske zavisnosti (tj. da ustanovimo koje funkcijske zavisnosti vrijede u nekoj relacijskoj shemi) jest da ispitamo semantičke karakteristike atributa od kojih se relacijska shema sastoji. Da bi ilustrirali odnos izmeñu semantičkih karakteristika atributa i funkcijskih zavisnosti u relacijskoj shemi, poslužit ćemo se primjerom koji navodi Ullman (1980). Primjer Neka su E1 i E2 skupovi entiteta koji meñusobno stoje u odnosu N:1 (tj. vrijedi E1 → E2). Neka relacijska shema R(A1, A2,...,An) opisuje odnos izmeñu elemenata skupa E1 i E2. Neka su X i Y podskupovi atributa u R za koje vrijedi X → E1 i Y → E2.
66 Budući da vrijedi X → E1 i E1 → E2, mora vrijediti i X → E2, pa prema tome i X → Y. Ustvari, vrijedi X → Z za bilo koji podskup atributa Z u R, bez obzira da li je riječ o atributima svojstava entiteta u E1, E2, ili o atributima koji opisuju svojstva njihovog meñusobnog odnosa. Kako preslikavanje na E1 na E2 nije 1:1, ne vrijedi E2 → E1 , pa ne vrijedi ni Y → X.
9.1. LOGIČKO IZVOðENJE FUNKCIJSKIH ZAVISNOSTI Relacijska shema sastoji se od konačnog broja atributa. Iz toga proizlazi da je konačan i broj podskupova atributa u relacijskoj shemi, odnosno da je konačan broj funkcijskih zavisnosti koje mogu biti zadane na relacijskoj shemi. To nam teoretski omogućava da pronañemo sve funkcijske zavisnosti koje vrijede u relacijskoj shemi. Broj podskupova atributa u relacijskoj shemi je konačan, ali je, u pravilu, dosta velik. Semantički odnosi meñu pojedinim podskupovima mogu biti zamršeni i nerazumljivi. Semantička analiza podskupova atributa u relacijskoj shemi će, uglavnom, biti dugotrajan postupak pomoću kojeg ćemo otkriti samo dio zavisnosti koje vrijede u relacijskoj shemi. Zbog toga nam je interesantna mogućnost logičkog izvoñenja funkcijskih zavisnosti. Polazeći od funkcijskih zavisnosti koje su otkrivene semantičkom analizom, možemo logički izvesti ostale. Pretpostavimo da relacijska shema R, izmeñu ostalih, sadrži i atribute A, B, i C, te da vrijede funkcijske zavisnosti A → B i B → C. Iz ove dvije funkcijske zavisnosti logički proizlazi zavisnost A → C. Da bismo to dokazali, pretpostavit ćemo da u nekoj relaciji r(R) u kojoj vrijedi A → B i B → C, ne vrijedi A → C. Neka su t1 i t2 n-torke u r za koje vrijedi t1[A] = t2[A] i t1[C] ≠ t2[C]. Iz t1[A] = t2[A] i A → B proizlazi da mora vrijediti t1[B] = t2[B]. Ako to nije točno, onda ne vrijedi A → B. U slučaju da vrijedi t1[B] = t2[B], zbog B → C, mora vrijediti i t1[C] = t2[C]. S obzirom na to da smo pošli od pretpostavke da to ne vrijedi očigledno da u r ne vrijedi ili A → B ili B → C (ili obje). U slučaju da ove dvije zavisnosti vrijede, mora vrijediti i A → C, za koju kažemo da iz njih logički proizlazi. Općenito: Neka je F neki skup funkcijskih zavisnosti u relacijskoj shemi R, i neka vrijedi X, Y ⊆R i X → Y, s tim da funkcijska zavisnost X → Y nije element od F. Kažemo da F logički implicira X → Y (odnosno da X → Y logički proizlazi iz F), ako u svakoj relaciji u kojoj vrijede zavisnosti u F, vrijedi i zavisnost X → Y. Skup funkcijskih zavisnosti F logički implicira neki skup zavisnosti F+. Skup F+ nazivamo zatvarač skupa F. Skup F sadržan je u svom zatvaraču kao podskup. Polazeći od nekog skupa funkcijskih zavisnosti, logički implicirane funkcijske zavisnosti izvodimo na osnovi pravila izvoñenja. Pravila su definirali Delobel i Casey (1973). Armstrong (1974) je pokazao da su tri pravila meñusobno nezavisna, te da su potpun (tj. sve funkcijske zavisnosti koje su logički implicirane mogu pomoću njih biti izvedene) i pouzdan sustav (tj. sve funkcijske zavisnosti, koje su na osnovi njih izvedene, zaista vrijede) sustav za logičko izvoñenje funkcijskih zavisnosti. Ova tri pravila poznata su pod nazivom Armstrongovi aksiomi. Ostala pravila za logičko izvoñenje funkcijskih zavisnosti mogu se izvesti iz Armstrongovih aksioma. U osnovi čitavog matematičkog aparata za rad sa skupom funkcijskih zavisnosti stoje Armstrongovi aksiomi za logičko izvoñenje funkcijskih zavisnosti. Zbog toga će biti korisno da se na te aksiome osvrnemo nešto detaljnije.
9.1.1. Armstrongovi aksiomi Skup pravila s kojima ćemo se upoznati donekle se razlikuje od pravila koja je Armstrong u svom radu (Armstrong, 1974) definirao kao aksiome. I pored toga, skup
67 od tri meñusobno nezavisna pravila za logičko izvoñenje funkcijski zavisnosti danas je poznat pod nazivom Armstrongovi aksiomi (Ullman, 1980). Uz svaki od aksioma navest ćemo dokaz pouzdanosti. Dokaze da su pravila meñusobno nezavisna, kao i dokaz da je skup pravila kompletan (potpun), nećemo ovdje navoditi. Razlog za to je primjedba jednog prijatelja koji smatra da informatičari te dokaze i onako ne bi čitali, a matematičari bi svakako gunñali. Čitaoca, koji je za te dokaze ipak zainteresiran, upućujem na knjige Ullmana (1980), Maiera (1983) ili Yanga (1986).
Refleksivnost Y⊆X⊆R⇒X→Y U svom najopćenitijem obliku ovaj aksiom glasi: Svaki entitet jednoznačno odreñuje samog sebe i svaki svoj dio. U nekoj relaciji r zadanoj na R, uz pretpostavku da vrijedi Y ⊆ X ⊆ R, ne možemo imati dvije n-torke t1 i t2 za koje vrijedi t1[X] = t2[X] i t1[Y] ≠ t2[Y], jer ako se ntorke t1 i t2, podudaraju u vrijednostima sastavljenog atributa X onda se moraju podudarati i u vrijednostima svih komponenti od X. Postoje dva posebna slučaja : - za Y = X vrijedi X → X, i - za Y = ∅ vrijedi X → ∅. Funkcijske zavisnosti koje se izvode na osnovu aksioma refleksivnosti ne zavise o ostalim funkcijskim zavisnostima u zadanom skupu. One proizlaze iz skupa atributa na kojima je skup funkcijskih zavisnosti F zadan. To su tzv. trivijalne funkcijske zavisnosti i u pravilu se ne navode eksplicitno kao elementi skupa F. Izuzetno su važne za logičko izvoñenje funkcijskih zavisnosti.
Uvećanje X → Y ∧ W ⊆ R ⇒ XW → YW Aksiom uvećanja u svom najjednostavnijem obliku svodi se na dodavanje istog elementa (atribut W) na lijevu i desnu stranu funkcijske zavisnosti. Neka je r(R) relacija zadana na relacijskoj shemi R, neka vrijedi X, Y, W ⊆ R i neka vrijedi X → Y. Pretpostavit ćemo da u relaciji r postoje dvije n-torke t1 i t2 za koje vrijedi t1[XW] = t2[XW] i t1[YW] ≠ t2[YW]. Kako se n-torke ne mogu meñusobno razlikovati po vrijednosti od W (prema aksiomu refleksivnosti W → W), proizlazi da je razlika u vrijednosti YW posljedica razlike u vrijednosti od Y. Ako je to točno, onda u r ne vrijedi zavisnost X → Y. Odnosno, ako u R vrijedi X →Y i W ⊆ R onda u R mora vrijediti XW → YW. Postoji jedan poseban slučaj: - za W = X vrijedi X → YX, budući da je u zavisnosti XX → YX lijeva strana (XX) unija podskupa atributa X sa samim sobom.
Tranzitivnost X→Y ∧Y→Z ⇒X→Z Dokaz pouzdanosti ovog aksioma naveden je kao ilustracija logičke implikacije, pa ga nećemo ponavljati. Kao ilustraciju upotrebe aksioma za izvoñenje logičkih zavisnosti upotrijebit ćemo primjer koji navodi Ullman (1980).
68 Primjer Skup atributa R sastoji se od atributa MJESTO, ULICA, i HPT. Skup zavisnosti F zadan na R sastoji se od dvije zavisnosti: 1) HPT → MJESTO 2) MJESTO ULICA → HPT Primjer možda i nije najbolje odabran s obzirom da kod nas, manje ili više, u praksi vrijedi zavisnost MJESTO → HPT. U početku je zaista vrijedilo MJESTO ULICA → HPT (veća mjesta imala su više HPT brojeva), ali je kasnije to izgleda izmjenjeno. Vjerojatno su korisnici pogrešno koristili HPT brojeve i stvorili zbrku. Na ovo upozoravam da ne bi došlo do zabune, a primjer ćemo koristiti kao da navedene zavisnosti vrijede. Polazeći od F, uz pomoć aksioma možemo, izmeñu ostalog, izvesti: 3) ULICA HPT → ULICA MJESTO (uvećanjem zavisnosti 1) s atributom ULICA) 4) MJESTO ULICA → MJESTO ULICA HPT (uvećanjem zavisnosti 2) s atributima MJESTO i ULICA) 5) ULICA HPT → MJESTO ULICA HPT (tranzitivnost primijenjena na zavisnosti 3) i 4) ) Naravno, polazeći od F moguće je izvesti i cijeli niz drugih zavisnosti. Meñutim, smatram da će za ilustraciju i ovo biti dovoljno.
9.1.2. Pravila izvoñenja funkcijskih zavisnosti Kao što je već spomenuto, polazeći od skupa funkcijskih zavisnosti F zadanog na skupu atributa R, pomoću Armstrongovih aksioma mogu se izvesti sve funkcijske zavisnosti koje logički proizlaze iz F. To, meñutim, u nekim slučajevima može biti dosta zamršen izvod. Da bi se izvod pojednostavnio, pored aksioma koristimo i niz pravila za izvoñenje funkcijskih zavisnosti. Sva ta pravila mogu se izvesti su iz Armstrongovih aksioma. Upoznat ćemo se s tri, vjerojatno najviše korištena pravila izvoñenja.
Pravilo unije ili aditivnosti X → Y ∧ X → Z ⇒ X → YZ Ako zavisnost X → Y uvećamo s X dobit ćemo X → XY. Ako zavisnost X → Z uvećamo s Y dobit ćemo XY → YZ. Primjenom aksioma tranzitivnosti na zavisnosti X → XY i XY → YZ, dobit ćemo zavisnost X → YZ.
Pravilo dekompozicije X→Y∧Z⊆Y⇒X→Z Pravilo dekompozicije je obrat pravila unije. Na osnovi refleksivnosti iz Z ⊆ Y možemo izvesti zavisnost Y → Z. Ako na zadanu zavisnost X → Y i izvedenu Y → Z primijenimo aksiom tranzitivnosti dobit ćemo zavisnost X → Z.
Pravilo pseudotranzitivnosti X → Y ∧ WY → Z ⇒ XW → Z Ako zavisnost X → Y uvećamo s W, dobit ćemo XW → YW. Iz zavisnosti XW → YW i YW → Z, na osnovi tranzitivnosti slijedi XW → Z.
69
9.1.3. Pregled aksioma i pravila izvoñenja za funkcijske zavisnosti Prije nego kažemo nešto više o slijedećoj temi, smatram da će biti korisno sažeti prikaz aksioma i pravila izvoñenja za funkcijske zavisnosti. Osim što ćemo na taj način naglasiti ogromnu važnost koju ova pravila imaju i za teoriju i za praksu, iskoristit ćemo pregled da bi numerirali aksiome i pravila.
Armstrongovi aksiomi AF1) Refleksivnost Y⊆X⊆R⇒X→Y AF2) Uvećanje X → Y ∧ W ⊆ R ⇒ XW → YW AF3) Tranzitivnost X→Y ∧Y→Z ⇒X→Z
Pravila izvoñenja funkcijskih zavisnosti PF1) Unija ili aditivnost X → Y ∧ X → Z ⇒ X → YZ PF2) Dekompozicija X→Y∧Z⊆Y⇒X→Z PF3) Pseudotranzitivnost X → Y ∧ WY → Z ⇒ XW → Z
9.1.4. Derivacijski niz Neka je F skup FZ i neka je X → Y FZ. Ako F implicira X → Y, onda je X → Y element od F ili može, primjenom Armstrongovih aksioma biti, izvedena iz F. Izvoñenje, općenito, može zahtijevati višestruku primjenu aksioma. Kao rezultat svake pojedine primjene, dobit ćemo jednu izvedenu FZ. Nizu primjena aksioma odgovarat će niz izvedenih FZ. Taj niz naziva se derivacijski niz baziran na F. Definicija derivacijskog niza glasi: Neka je F skup FZ na relacijskoj shemi R. Neka je P neki niz FZ na R. P je derivacijski niz baziran na F ako za svaki FZ u P vrijedi: - da je ili element od F ili - da slijedi iz prethodnih FZ u P primjenom jednog od aksioma. S obzirom na to da je svako pravilo za logičko izvoñenje FZ izvedeno iz Armstrongovih aksioma, mora vrijediti: Ako za zavisnost X → Y postoji derivacijski niz P baziran na F, i ako je P dobiven primjenom pravila za logičko izvoñenje FZ, onda postoji i derivacijski niz P' za X → Y dobiven samo primjenom Armstrongovih aksioma. P smatramo derivacijskim nizom za FZ X →Y, ako je X → Y element u P (zavisnost X → Y ne mora biti posljednja u nizu zavisnosti u P). Sve zavisnosti u P koje su elementi od F čine 'korišteni skup zavisnosti' u P. Primjer Neka je F = {AB → E, AG → J, BE → I, E → G, GI → H}. Treba naći derivacijski niz za FZ AB → GH.
70 Rješenje: 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14)
AB → E AB → B AB → BE BE → I AB → I E →G AB → G AB → GI GI → H GI → GI GI → I AB → H AB → GHI AB → GH
zadana zavisnost refleksivnost na AB unija na 1) i 2) zadana zavisnost tranzitivnost na 3) i 4) zadana zavisnost tranzitivnost na 1) i 6) unija na 5) i 7) zadana zavisnost refleksivnost na GI dekompozicija na 10) tranzitivnost na 8) i 9) unija na 7) i 12) dekompozicija na 13)
Ovaj niz zavisnosti je derivacijski niz baziran na skupu FZ F. Sve zadane zavisnosti u nizu elementi su korištenog skupa zavisnosti. Niz je derivacijski niz za FZ AB → GH, ali i za sve ostale izvedene zavisnosti u nizu (naprimjer, za zavisnost AB → I). Konačno, derivacijski niz može sadržavati i zavisnosti koje nam nisu bile potrebne za izvoñenje neke odreñene zavisnosti. Tako u ovom primjeru zavisnosti, 10) i 11) nisu bile potrebne za izvoñenje zavisnosti AB → GH.
9.1.5. B-aksiomi Maier (1980) je definirao skup tzv. B-aksioma za izvoñenje funkcijskih zavisnosti. Aksiomi su meñusobno nezavisni, a sustav koji oni čine je potpun i pouzdan. Neka je R relacijska shema , neka su X, Y, Z, i W podskupovi atributa u R, te neka je C atribut u R. B-aksiome možemo definirati na slijedeći način:
B1) Refleksivnost Y⊆X⊆R⇒X→Y
B2) Akumulacija X → YZ ∧ Z → CW ⇒ X →YZC
B3) Projektivnost X → YZ ⇒ X → Y Iz B-aksioma možemo izvesti Armstrongove aksiome, što je dokaz da je sustav B-aksioma potpun: AF1) Refleksivnost ( Y ⊆ X ⊆ R ⇒ X → ) Slijedi iz B1. AF2) Uvećanje (X → Y ∧ W ⊆ R ⇒ XW → YW) Neka u R vrijedi X → Y i Z⊆W⊆R. Na osnovi B1 znamo da u R vrijedi XW → XW. Primjenom B2 na XW → XW i X → Y dobit ćemo XW → XWY. Primjenom B3 na XW → XWY dobit ćemo XW → YW. AF3) Tranzitivnost (X → Y ∧ Y → Z ⇒ X → Z) Neka u R vrijedi X → Y i Y → Z. Primjenom aksioma B2 dobit ćemo zavisnost X →YZ. Primjenom aksioma B3 na X → YZ dobit ćemo zavisnost X → Z.
71 Dokaze pouzdanosti i meñusobne nezavisnosti B-aksioma nećemo navoditi. Neka je F skup FZ, neka F implicira FZ X → Y, i neka FZ X → Y nije u F. Pomoću B-aksioma možemo naći derivacijski niz za FZ X → Y baziran na F koji zadovoljava slijedeće uvjete: 1) Prva FZ u nizu je X → X. 2) Posljednja FZ u nizu je X →Y. 3) Osim prve i posljednje FZ u derivacijskom nizu, svi ostali elementi niza su ili zadani u F ili izvedeni primjenom aksioma B2. Derivacijski niz koji zadovoljava ove uvjete naziva se RAP derivacijski niz, zbog redoslijeda kojim se koriste B-aksiomi (Refleksivnost, Akumulacija, Projektivnost). Primjer Neka je F = {AB → E, AG → J, BE → I, E → G, GI → H}. RAP derivacijski niz za AB → GH je: 1) AB → AB B1 2) AB → E Zadana zavisnost 3) AB → ABE B2 1) i 2) 4) BE → I Zadana zavisnost 5) AB → ABEI B2 na 3) i 4) 6) E → G Zadana zavisnost 7) AB → ABEGI B2 na 5) i 6) 8) GI → H Zadana zavisnost 9) AB → ABEGHI B2 na 7) i 8) 10) AB → GH B3 na 9) S obzirom na to da je skup B-aksioma kompletan, ako neki skup zavisnosti F implicira zavisnost X → Y i ta zavisnost nije u F, primjenom B-aksioma možemo naći derivacijski niz za X → Y baziran na F. Iz toga slijedi: Ako za FZ X → Y postoji derivacijski niz baziran na F, onda postoji i RAP derivacijski niz. U odnosu na derivacijski niz, RAP derivacijski niz ima više prednosti. U pravilu je nešto kraći od derivacijskog niza. Sam postupak izvoñenja znatno je jednostavniji. Počinjemo tako da na osnovi zavisnosti (za koju tražimo derivacijski niz) i aksioma B1, postavimo prvi element derivacijskog niza. Zatim tražimo u F zavisnost, čija lijeva strana je sadržana u desnoj strani zadnjeg elementa u RAP derivacijskog niza. Nakon što, na ovaj način, iskoristimo sve zavisnosti u F, dobit ćemo maksimalno veliku desnu stranu (element 9)) za zadani skup atributa (AB) s obzirom na F. Prema B3 (ili prema pravilu dekompozicije) skup atributa u lijevoj strani funkcijski odreñuje svaki podskup atributa u desnoj strani.
9.1.6. Zadaci za vježbu Derivacijski niz 1) Neka je R(ABCDEGH) relacijska shema na kojoj je zadan skup funkcijskih zavisnosti F = { A → D, BE → H, BH → AG, C → E, CD → B}. a) Primjenom Armstrongovih aksioma treba naći derivacijski niz baziran na F za funkcijsku zavisnost CD → H. Rješenje: 1) CD → C Primjena aksioma refleksivnosti na CD.
72 2) 3) 4) 5) 6) 7) 8) 9)
C CD CD CD BCD CD BE CD
→ → → → → → → →
E E B BCD BE BE H H
Zadano u F. Primjena aksioma tranzitivnosti na 1) i 2). Zadano u F. Uvećanje 4) s CD. Uvećanje 3) s atributom B. Primjena tranzitivnosti na 5) i 6). Zadano u F. Primjena tranzitivnosti na 7) i 8).
b) Primjenom pravila za logičko izvoñenje funkcijskih zavisnosti treba odrediti derivacijski niz baziran na F za CD → H. Rješenje: 1) CD → C Primjena aksioma refleksivnosti na CD. 2) C → E Zadano u F. 3) CD → E Primjena aksioma tranzitivnosti na 1) i 2). 4) CD → B Zadano u F. 5) CD → BE Primjena pravila unije na 3) i 4). 6) BE → H Zadano u F. 7) CD → H Primjena aksioma tranzitivnosti na 5) i 6). c) Treba odrediti derivacijski niz baziran na F za funkcijsku zavisnost AC → B. Rješenje: 1) CD → B Zadano u F. 2) A → D Zadano u F. 3) AC → A Primjena aksioma refleksivnosti na AC. 4) AC → D Primjena aksioma tranzitivnosti na 3) i 2). 5) AC → CD Primjena pravila uvećanja s C na 4). 6) AC → B Primjena aksioma tranzitivnosti na 5) i 1). d) Nañite derivacijski niz, baziran na F, za funkcijsku zavisnost CD → A. Rješenje: 1) BH → AG Zadano F. 2) BE → H Zadano u F. 3) CD → B Zadano u F. 4) C → E Zadano u F. 5) CD → C Primjena aksioma refleksivnosti na CD. 6) CD → E Primjena aksioma tranzitivnosti na 5) i 4). 7) CD → BE Primjena pravila unije na 3) i 6). 8) CD → H Primjena aksioma tranzitivnosti na 7) i 2). 9) CD → BH Primjena pravila unije na 3) i 8). 10) CD → AG Primjena aksioma tranzitivnosti na 9) i 1). 11) AG → A Primjena aksioma refleksivnosti na AG. 12) CD → A Tranzitivnost na 10) i 11). e) Odredite RAP derivacijski niz, baziran na F, za FZ CD → A. Rješenje: 1) 2) 3) 4) 5) 6) 7)
CD CD CD C CD BE CD
→ → → → → → →
CD B BCD E BCDE H BCDEH
Refleksivnost na CD. Zadano. Akumulacija na 1) i 2). Zadano. Akumulacija na 3) i 4). Zadano. Akumulacija na 5) i 6).
73 8) 9) 10)
BH → AG CD → ABCDEHG CD → A
Zadano. Akumulacija na 7) i 8). Projektivnost na 9).
f) Treba naći RAP derivacijski niz, baziran na F, za FZ CD → H. Rješenje: 1) 2) 3) 4) 5) 6) 7) 8)
CD C CD CD CD BE CD CD
→ → → → → → → →
CD E CDE B BCDE H BCDEH H
B1 na CD. Zadano. B2. Zadano. B2. Zadano. B2 B3 na 7).
g) Odredite RAP derivacijski niz, baziran na F, za FZ AC → B. Rješenje: 1) AC → AC B1. 2) A → D Zadano. 3) AC → ACD B2. 4) CD → B Zadano. 5) AC → ABCD B2. 6) AC → B B3. 2) Neka je na R(ABCDEF) zadan skup FZ G = {A → F, B → AC, C → E, CF → BD, E → C, F → A}. Odredite RAP derivacijske nizove bazirane na G za FZ a) b) c) d)
CF → A B → EF B →D AC → E
3) Neka je na R(ABCDEFG) zadan skup FZ F = {B → E, CEG → F, D → BCG, EG → A}. Nañite RAP derivacijske nizove bazirane na F za FZ a) b) c) d)
BD BG D D
→ → → →
G A E F
9.2. ZATVARAČ SKUPA FUNKCIJSKIH ZAVISNOSTI Polazeći od nekog skupa FZ F zadanog na skupu atributa R, možemo izvesti skup FZ F'. Elemente skupa F' skup F ne sadrži, ali ih implicira. Uniju skupova F i F' nazivamo zatvarač skupa F (označavamo kao F+). Zatvarač skupa FZ definiramo na slijedeći način: Zatvarač skupa FZ F zadanih na skupu atributa R je skup FZ koji zadovoljava slijedeće uvjete: - zadani skup FZ F je podskup zatvarača ( F⊆ ⊆F+), - primjenom Armstrongovih aksioma na FZ u F+ i atributa u R ne može biti izvedena niti jedna FZ koja već nije sadržana u F+. Skup atributa u R, na kojem je zadan skup zavisnosti F, važan je za odreñivanje F+ zato što u sastav F+ ulaze i sve zavisnosti koje se izvode na osnovi
74 aksioma refleksivnosti. Tako, naprimjer, skup F+ za svaki skup zavisnosti F zadan na R = {A, B} sadržavat će, izmeñu ostalih, i zavisnosti B → B, AB → B, AB → AB. Skup F+ za bilo koji skup zavisnosti zadanih na R = {A, C} te zavisnosti neće sadržavati. U slučaju da skup atributa R nije eksplicitno definiran (definiran je samo skup zadanih zavisnosti F), smatrat ćemo da se R sastoji od svih atributa sadržanih u lijevoj ili desnoj strani zavisnosti u F. Pretpostavimo da je ukupan broj atributa konačan, Odatle slijedi da F+ ima konačan broj elemenata. Zahvaljujući tome, teoretski je uvijek moguće za bilo koji F naći F+ . U praksi se, kao i obično, javljaju problemi. Naime, broj zavisnosti u F+ je konačan, ali je, u pravilu, vrlo je velik. Izvoñenje, pa čak i samo ispisivanje svih zavisnosti u F+, može zahtijevati dosta vremena. Ilustracije radi pretpostavimo da je F = {A → B1, A → < B2, ..., A → Bn }.Samo na osnovi pravila unije (PF1), u F+ moraju biti sadržane sve zavisnosti A → Y za koje vrijedi Y ⊆ {B1, B2, ..., Bn}. Takvih podskupova ima 2n. Zbog velikog broja FZ u F+ izvoñenje ovog skupa, kao i bilo koja operacija s njim, u praksi je vrlo neugodan zadatak (iznimka su vrlo mali skupovi FZ). S druge strane, pojam zatvarača skupa FZ F+ je važan, jer se pomoću njega definiraju neki drugi pojmovi. Što se tiče operacija s F+, njih možemo puno jednostavnije izvesti pomoću tzv. zatvarača skupa atributa.
9.3. ZATVARAČ SKUPA ATRIBUTA Zatvarač skupa atributa definiramo na slijedeći način: Neka je F skup FZ zadan na skupu atributa R i neka vrijedi X ⊆R. U F+ postoji podskup FZ čije lijeve strane su jednake podskupu atributa X. Unutar tog podskupa FZ postoji FZ X → Y čija je desna strana maksimalna. Za bilo koji drugi element tog podskupa X → Z vrijedi Z ⊆ Y. Desna strana zavisnosti X → Y naziva se zatvarač skupa atributa X (označavamo je kao X+). Zbog aksioma refleksivnosti zatvarač od X mora uvijek sadržavati i X. Za razliku od zatvarača skupa funkcijskih zavisnosti F+, zatvarač bilo kojeg skupa atributa X+ može se, polazeći od zadanog skupa FZ F relativno brzo i jednostavno odrediti. Naime, u primjeru za RAP derivacijski niz, vidjeli smo kako se odreñuje zatvarač skupa atributa. Zbog važnosti tog postupka pogledat ćemo taj primjer još jednom, ali sad s naglaskom na odreñivanje zatvarača skupa atributa. Primjer Neka je F = {AB → E, AG → J, BE → I, E → G, GI → H}. Treba naći zatvarač skupa atributa AB+ baziran na F. Rješenje: 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12)
AB AB AB BE AB E AB GI AB AG AB AB+
→ → → → → → → → → → → =
AB E ABE I ABEI G ABEGI H ABEGHI J ABEGHIJ ABEGHIJ
B1 Zadana zavisnost B2 na 1) i 2) Zadana zavisnost B2 na 3) i 4) Zadana zavisnost B2 na 5) i 6) Zadana zavisnost B2 na 7) i 8) Zadana zavisnost B2 na 9) i 10)
75 Postupak je, kao što vidimo, gotovo jednak postupku za odreñivanje RAP derivacijskog niza. U prvom koraku, na osnovi B1 i skupa atributa X (za koji treba naći zatvarač) konstruira se FZ X → X. Nakon toga se, primjenom B2 na FZ u F, proširuje lijeva strana zavisnosti. Kad su iscrpljene sve FZ u F lijeva strana je maksimalna, odnosno jednaka je zatvaraču za zadani skup atributa baziran na F. Ovaj postupak koristimo kad ručno tražimo zatvarač za skup atributa. Maier (1983) daje dva algoritma za odreñivanje zatvarača skupa atributa. Pogledajmo prvi.
Algoritam ZATVARAČ ULAZ: Skup atributa X i skup FZ F. IZLAZ: Zatvarač skupa atributa X u F. ZATVARAČ (X, F) begin SZ:= ∅; NZ:= X; while NZ ≠ SZ do begin SZ:= NZ; for svaki FZ W → Z u F do begin if NZ ⊇W then NZ:= NZ ∪ Z; end; end; return (NZ); end. Primjer Neka je F = { A → D, AB → E, BI → E, CD→ I, E → C}, te neka je skup atributa za koji treba naći zatvarač, X = AE. ZATVARAČ (AE, {A → D, AB → E, BI → E, CD → I, E → C}) begin SZ: = ∅; NZ: = AE; I. prolaz
NZ: ≠ SZ; SZ: = AE; za A → D E→C NZ: = ACDE;
II. prolaz
NZ: ≠ SZ; SZ: = ACDE; za A → D CD → I E→C NZ: =ACDEI;
III. prolaz
NZ: ≠ SZ; SZ: = ACDEI; za A → D CD → I E→C
76 NZ: = ACDEI; IV. prolaz
NZ = SZ; AE+ = ACDEI end.
Algoritam koristi B-aksiome (refleksivnost i akumulaciju). Početni skup atributa u zatvaraču X+ formira se na osnovi aksioma refleksivnosti i pohranjuje u polje NZ. Nakon toga se, primjenom aksioma akumulacije, polazna konstrukcija zatvarača proširuje s atributima Z za svaku zavisnost W → Z takvu da je W sadržan u skupu. Ispitivanje zavisnosti i proširivanje privremene konstrukcije izvodi se u petlji. Izvoñenje petlje se prekida nakon što u jednom prolazu nije moguće dodati privremenoj konstrukciji zatvarača niti jedan novi atribut. Algoritam ZATVARAČ moguće je bitno poboljšati. Ukupan broj zavisnosti i ukupan broj atributa, koje treba ispitati, može se značajno smanjiti. Naime, kod algoritma ZATVARAČ u svakom prolazu ispituju se sve zavisnosti u F (kako zavisnosti koje još nisu upotrijebljene, tako i zavisnosti koje su već upotrebljene) i svi atributi u njihovim lijevim stranama. Da bi se smanjio broj ispitivanja, moramo pratiti koje zavisnosti iz F su već iskorištene za konstrukciju zatvarača i za koje atribute smo izveli ispitivanje, te kakav je rezultat tog ispitivanja za svaki pojedini atribut u lijevoj strani svake zavisnosti u F. U algoritmu koji predlažu Beeri i Bernstein (1979): - za svaki atribut u R postoji popis zavisnosti koje taj atribut sadrže u lijevoj strani, - za svaku zavisnost u F prati se ukupan broj atributa lijeve strane (koji još nisu sadržani u privremenoj konstrukciji zatvarača) i - ažurira se podskup atributa u privremenoj konstrukciji zatvarača, za koje još nije izvedeno ispitivanje.
Algoritam ZAT2 ULAZ i IZLAZ: kao u algoritmu ZATVARAČ ZAT2 (X, F) begin 1) Inicijalizacija for svaku FZ W → Z u F do begin BROJ(W → Z): = W; for svaki atribut A u W do begin dodaj W → Z u LISTA(A); end; end; NZ:= X; UPDATE:= X; 2) Obrada while UPDATE ≠ ∅ do begin izaberi jedan atribut A u UPDATE; UPDATE:= UPDATE - A; for svaku FZ W → Z u LISTA(A) do begin BROJ(W → Z: = BROJ(W → Z) - 1; if BROJ(W → Z) = 0 then
77 begin DODAJ:= Z - NZ; NZ:= NZ ∪ DODAJ; end; end; end; 3) Kraj obrade return (NZ); end; Polje BROJ(W → Z) sadrži ukupan broj atributa lijeve strane zavisnosti za koje još nije izvedeno ispitivanje. Polje LISTA(A) sadrži popis svih zavisnosti u F čija lijeva strana sadrži atribut A. U polju UPDATE nalazi se popis svih atributa u privremenoj konstrukciji zatvarača za koje još nije izvedeno ispitivanje. Rad algoritma ZAT2 ilustrirat ćemo na jednom primjeru. Da bismo mogli lakše usporediti algoritme ZAT2 i ZATVARAČ, poslužit ćemo se istim primjerom koji smo koristili za ilustraciju rada algoritma ZATVARAČ. Primjer ZAT2 (AE, {A → D, AB → E, BI → E, CD → I, E → C}) begin 1) Inicijalizacija Nakon izvoñenja ovog dijela algoritma postavljen je početni sadržaj u slijedeća polja: BROJ(A → D): = 1; BROJ(AB → E): = 2; BROJ(BI → E): = 2; BROJ(CD → I): = 2; BROJ(E → C): = 1; LISTA(A):= A → D, AB → E; LISTA(B):= BI → E, AB → E; LISTA(C):= CD → I; LISTA(D):= CD → I; LISTA(E):= E → C; LISTA(I) := BI → E; NZ: = AE; UPDATE:= AE; 2) Obrada I.prolaz
UPDATE ≠ ∅ UPDATE:= UPDATE – {A} = {E} ; BROJ(A → D): = 1 – 1 = 0; DODAJ:= {D} - NZ = {D} ; NZ:= NZ ∪ DODAJ = {ADE}; UPDATE:= UPDATE ∪ DODAJ = {DE} BROJ(AB → E): = 2 - 1 = 1;
II.prolaz UPDATE ≠ ∅ UPDATE:= UPDATE – {E} = {D}; BROJ (E → C): = 1 - 1 = 0; DODAJ: = {C} - NZ = {C}; NZ:= NZ ∪ DODAJ = {ACDE};
78 UPDATE:= UPDATE ∪ DODAJ = {CD}; III.prolaz UPDATE ≠ ∅ UPDATE:= UPDATE – {D} = {0}; BROJ(CD → I): = 2 - 1 = 1; IV.prolaz UPDATE ≠ ∅ UPDATE:= UPDATE – {C} = {0} ; BROJ(CD → I): = 1 - 1 = 0; DODAJ:= {I} - NZ = {I}; NZ: = NZ ∪ DODAJ = {ACDEI} ; UPDATE:= UPDATE ∪ DODAJ = {I}; V.prolaz
UPDATE ≠ ∅ UPDATE:= UPDATE – {I} = {0} ; BROJ(BI → E): = 2 - 1 = 1;
VI.prolaz UPDATE = ∅ 1) Kraj obrade AE+ = ACDEI Ukupan broj operacija, potreban da bi se pomoću algoritma ZAT2 odredio zatvarač skupa atributa, znatno je manji nego kod algoritma ZATVARAČ. Programiranje ovog algoritma, meñutim, znatno je zamršenije, a njegove prednosti dolaze do izražaja tek kod nešto većih skupova zavisnosti koji imaju stotinjak ili više elemenata. Uz pomoć algoritma za odreñivanje zatvarača skupa atributa u zadanom skupu zavisnosti F, možemo ustanoviti da li je neka proizvoljna zavisnost W → Z element skupa F+. Naime, ako vrijedi Z ⊆ W + u F, onda vrijedi i W → Z ∈ F+. Algoritam ELEMENT izvodi ovo ispitivanje.
Algoritam ELEMENT ULAZ: Skup F, i zavisnost W → Z. IZLAZ: ISTINA ako F implicira W → Z, inače LAŽ. ELEMENT (F, W → Z) begin if Z ∈ ZAT2(W, F) then return (ISTINA); else return (LAŽ); end. Rad algoritma ELEMENT ilustrirat ćemo na jednom primjeru. Primjer Neka je skup FZ, koji će se u primjeru koristiti, jednak kao u prethodna dva primjera. Treba ustanoviti da li zavisnost AB → I logički proizlazi iz F, odnosno da li je element skupa zavisnosti F+. ELEMENT ({A → D, AB → E, BI → E, CD → I, E → C}, AB → I) ZAT2 (AB, {A → D, AB → E, BI → E, CD → I, E → C}) AB+ = ABCDEI I ⊆ {ABCDEI} ISTINA
79
9.3.1 Zadaci za vježbu Zatvarač skupa atributa 1) Neka je na R(ABCDEG) zadan skup FZ F = {AD → E, AE → C, AG → E, BE → AC, C → BD, CEG → A, DE → BG, E → G}. Treba naći zatvarač skupa atributa s obzirom na F za a) AC Rješenje: 1) AC → 2) C → 3) AC → 4) AD → 5) AC → 6) DE → 7) AC → 8) ACF+ =
AC BD ABCD E ABCDE BG ABCDEG ABCDEG
B1. Zadano. B2. Zadano. B2. Zadano. B2.
b) BC Rješenje: BCF+ = BCD c) D Rješenje: DF+ = D d) lijeve strane svih FZ u F Rješenje: AD F+ = ABCDEG AE F+ = ABCDEG AG F+ = ABCDEG BE F+ = ABCDEG C F+ = BCD + CEG F = ABCDEG DE F+ = ABCDEG = EG E F+ 2) Neka je na R(ABCDEFG) zadan skup FZ F = {B → E, CEG → F, D → BCG, EG → A}. Ustanovite da li iz F može biti izvedena FZ a)
D→A Rješenje: Da, jer je D F+ = ABCDEFG, i atribut A je sadržan u zatvaraču
od D. b) AB → G Rješenje: Ne, jer je AB F+ = ABE, i atribut G nije sadržan u zatvaraču. c) EC → F Rješenje: Ne, jer je EC F+ = EC. d) BD →A Rješenje: Da. BD F+ = ABCDEFG 3) Zadan je skup FZ F = {A → BD, AE → F, BE → AF, CF → E, DE → BC, DF → E, EF → A} .Treba ustanoviti da li su slijedeće FZ elementi od F+ ? a)
AF → C Rješenje: Da. AF F+ = ABCDEF.
80 b)
DE → A Rješenje: Da. DE F+ = ABCDEF.
c)
AC → F Rješenje: Ne. AC F+ = ABCD.
81
10. POKRIVAČ SKUPA FUNKCIJSKIH ZAVISNOSTI 10.1. EKVIVALENTNI SKUPOVI FZ Da bi mogli definirati pokrivač skupa FZ, potrebno je definirati pojam ekvivalencije skupova FZ: Neka su F i G dva skupa FZ zadana na skupu atributa R. Smatramo da su F i G meñusobno ekvivalentni (označavamo kao F ≡ G), ako vrijedi F+ = G+. Pomoću ekvivalencije skupova FZ definirat ćemo pojam pokrivača skupa FZ: Skup FZ F smatramo pokrivačem skupa FZ G ako vrijedi F ≡ G (odnosno, F+ = G+). Ekvivalencija je simetričan odnos. Ekvivalencija vrijedi samo ako vrijedi F+ = G . Zbog simetričnosti ekvivalencije, ako je skup F pokrivač skupa G, onda je i skup G pokrivač skupa F. S obzirom da je F+ = G+ u krajnjoj liniji uvjet da bi jedan od ova dva skupa bio pokrivač drugog, svaka zavisnost u skupu F mora biti logički izvediva iz skupa G, i obratno. Ovo možemo proširiti i reči da skup G logički proizlazi iz skupa F i obratno, ako vrijedi F+ = G+. Višestrukom primjenom algoritma ELEMENT možemo ustanoviti da li su dva skupa FZ meñusobni pokrivači (tj.da li su meñusobno ekvivalentni). +
Primjer 1 Neka su dani skupovi FZ F i G. Neka je F = {A→BC, A→D, CD→} i G = {A→BCE, A→ABD, CD→E}. Treba ustanoviti da li su skupovi F i G meñusobno ekvivalentni (odnosno da li su pokrivači jedan drugog). Da bismo to ustanovili moramo za svaku pojedinu zavisnost u skupu F (pomoću algoritma ELEMENT) ustanoviti da li logički proizlazi iz skupa G i obratno. ELEMENT (G, A→BC) AG+ = ABCDE ISTINA ELEMENT (G, A →D) A G+ = ABCDE ISTINA ELEMENT (G, CD →E) C G+ = CDE ISTINA Očigledno, sve zavisnosti u F logički proizlaze iz G. ELEMENT (F, A →BCE) A F+ = ABCDE ISTINA ELEMENT (F, A→ABD) AF+ = ABCDE ISTINA
82 ELEMENT (F, CD→E) CD F+ = CDE ISTINA S obzirom na to da i sve zavisnosti iz skupa FZ G logički proizlaze iz F, skupovi F i G meñusobno su ekvivalentni, odnosno pokrivači su jedan drugom. Primjer 2 Zadani su skupovi zavisnosti F = {A→BC, A→D, CD→E} i G = {A→BCDE}. Treba ustanoviti da li su ova dva skupa meñusobno ekvivalentna. ELEMENT (G, CD→E) CDG+ = CD LAŽ Ova dva skupa nisu meñusobno ekvivalentna budući da zavisnost CD→E, sadržana u skupu F ne proizlazi logički iz skupa zavisnosti G. Obratimo pažnju na činjenicu da je za dokaz da skupovi nisu meñusobno ekvivalentni dovoljno dokazati da postoji jedna zavisnost (u jednom od skupova) koja ne proizlazi logički iz zavisnosti u drugom skupu. Algoritam DERIV ispituje da li zavisnosti u skupu G logički proizlaze, i mogu biti izvedene, iz zavisnosti u skupu F.
Algoritam DERIV ULAZ: Dva skupa funkcijskih zavisnosti F i G. IZLAZ: ISTINA ako vrijedi G⊆F+, inače LAŽ. DERIV(F, G) begin v:= ISTINA; for svaku FZ X→Y u G do begin v:= v ∧ ELEMENT(F, X→Y); end; return(v); end. Algoritam EKVIV ispituje da li su dva skupa funkcijskih zavisnosti meñusobno ekvivalentna.
Algoritam EKVIV ULAZ: Dva skupa funkcijskih zavisnosti F i G. IZLAZ: ISTINA ako vrijedi F≡G, inače LAŽ. EKVIV(F, G) begin v:= DERIV(F, G) ∧ DERIV(G, F); return(v); end. Skup funkcijskih zavisnosti može imati više različitih pokrivača. Dva ekvivalentna skupa mogu se meñusobno razlikovati po broju zavisnosti koje sadrže. S nekim tipovima pokrivača upoznat ćemo se detaljnije.
10.1.1. Zadaci za vježbu 1) Na R(ABCDEG) zadana su dva skupa FZ
83 F = {AE →B, B →AG, BDE →C, CD →B, CE →B, CG →E, E →D, EG→A} G = {AE→C, B→AG, CD→E, CE→B, CG→E, ED, EG→A} Da li vrijedi F≡G? Rješenje: Treba ustanoviti da li svaka pojedina zavisnost u F može biti izvedena iz G, i da li svaka zavisnost u G može biti izvedena iz F. Zavisnosti iz F: AE→B AEG+ = B→AG B G+ = + BDE→C BDE G = CD→B CD G+ = CE→B CE G+ = CG→E CG G+ = E→D E G+ = EG→A EG G+ =
ABCDEG ABG ABCDEG ABCDEG ABCDEG ABC DE ABCDEG
Zavisnosti iz G: AE→C AE F+ B→AG B F+ CD→E CD F+ CE→B CE F+ CG→E CG F+ E→D E F+ EG→A EG F+
ABCDEG ABG BCDEG ABCDEG ABCDEG DE ABCDEG
= = = = = = =
Dakle, vrijedi F ≡ G. 2) Zadana su dva skupa FZ F = {ADF→E, B→D, C→ABF, DF→G} i G = {AG→E, B→D, C→ABF, DF→G}. Da li vrijedi F ≡ G? Rješenje: Zavisnosti iz F: ADF→E ADF G+ = B→D B G+ = C→ABF C G+ = DF→G DF G+ =
ADEFG BD ABCDEFG DFG
Zavisnosti iz G: AG→E AG F+ = AG Ne vrijedi F ≡ G, jer FZ AG→E, koja je element skupa FZ G, nije izvediva iz F. 3) Za skupove FZ F= {A→E, AF→C, C→AD, D→F, DE→B, E→A, F→D} i G = {AG→E, B→D, C→ABF, DF→G} treba ustanoviti da li su ekvivalentni. Rješenje: Za skupove FZ F i G ne vrijedi F ≡ G.
10.2. NEREDUNDANTNI POKRIVAČ Svaki skup FZ F ekvivalentan je sa svojim zatvaračem F+. Zatvarač F+ sadržavat će samo iznimno jednak broj zavisnosti kao i skup F. U pravilu, broj zavisnosti u F+ je znatno veći. U F+ postoji velik broj zavisnosti koje logički proizlaze, i mogu biti izvedene, iz preostalih zavisnosti u skupu F+. Takve zavisnosti smatramo redundantnim zavisnostima. Skup koji sadrži redundantne zavisnosti je redundantni
84 skup. Za nas je interesantno da za svaki skup FZ postoji neredundantan pokrivač. Neredundantan pokrivač skupa FZ definirat ćemo na slijedeći način: Skup FZ F je neredundantan ako ne postoji pravi podskup F' od F za koji vrijedi F' ≡ F. Skup FZ F je neredundantan pokrivač od G ako vrijedi F ≡ G i ako je F neredundantan. Da je neki skup zavisnosti F neredundantan, možemo dokazati tako da za svaku pojedinu zavisnost X→Y u F dokažemo da logički ne proizlazi iz ostatka skupa F (tj. iz skupa {F – { X→Y }}. Ako bilo koja zavisnost X→Y u F može biti izvedena iz ostatka skupa F, skup F je redundantan. Pomoću algoritma REDUND ustanovit ćemo da li je neki skup zavisnosti redundantan.
Algoritam REDUND ULAZ; Skup funkcijskih zavisnosti F. IZLAZ: ISTINA ako je F redundantan, inače LAŽ REDUND(F) begin v:= LAŽ for svaku FZ X→ Y u F do begin if ELEMENT (F – {X→Y}, X→Y) then v:= ISTINA; end; return(v); end. Kao što je spomenuto, svaki skup funkcijskih zavisnosti ima neredundantni pokrivač. U pravilu, ima više različitih neredundantnih pokrivača. Neke od njih možemo naći tako da iz zadanog skupa zavisnosti F izbacimo sve redundantne funkcijske zavisnosti. Upravo tako algoritam NEREDPOK traži neredundantan pokrivač G skupa FZ F.
Algoritam NEREDPOK ULAZ: Skup funkcijskih zavisnosti F. IZLAZ: Neredundantni pokrivač G od F. NEREDPOK(F) begin G:= F; for svaku FZ X→Y u F do begin if ELEMENT(G – {X→Y}, X→Y) then G:= G – {X→Y}; end; return(G); end. Napomenimo još jednom da algoritam NEREDPOK može naći samo one neredundantne pokrivače skupa F koji su sadržani u njemu. O redoslijedu kojim se zavisnosti u skupu ispituju i izbacuju ovisi koje će zavisnosti, pa čak i koliko će zavisnosti, biti sadržano u neredundantnom pokrivaču. Pogledajmo to na nekoliko primjera.
85 Primjer 1 Neka je F = {A→B, B→A, B→C, A→C}. Uz pretpostavku da će se ispitivanje i izbacivanje redundantnih zavisnosti u skupu izvoditi prema redoslijedu kojim su navedene, dobit ćemo kao neredendantni pokrivač G = { A→B, B→A, A→C}. Primjer 2 Zadan je skup FZ F = {A→B, A→C , B→A, B→C }. Razlika u odnosu na skup FZ F koji je korišten u prethodnom primjeru, sastoji se u redoslijedu kojim su zavisnosti navedene. Uz pretpostavku da će se ispitivanje i izbacivanje redundantnih zavisnosti u skupu izvoditi prema redoslijedu kojim su navedene, dobit ćemo kao neredendantni pokrivač G = {A→B, B→A, B→C }. Kao što iz ova dva primjera vidimo, promjenom redoslijeda zavisnosti u zadanom skupu F, promijenit će se rezultat koji ćemo dobiti pomoću algoritma NEREDPOK. Obadva skupa koje smo dobili kao rezultat u ova dva primjera, jesu neredundantni pokrivači od F i podskupovi od F. Tehnikom izbacivanja redundantnih zavisnosti ne možemo dobiti neredundantni pokrivač zadanog skupa FZ koji nije njegov podskup. Skup G' = {A→B, B→A, AB→C } je takoñer neredundantni pokrivač od F, ali nije podskup od F. Nikakvom promjenom redoslijeda ispitivanja redundantnosti i izbacivanja redundantnih zavisnosti iz skupa F ne možemo dobiti neredundantni pokrivač G'. Razmotrimo još dva primjera. Primjer 3 Neka je F = {S→N, S→C, N→S, N→C, C→S}. Pomoću algoritma NEREDPOK, uz pretpostavku da će se ispitivanje i izbacivanje redundantnih zavisnosti u skupu izvoditi prema redoslijedu kojim su navedene, dobit ćemo kao neredundantni pokrivač G = {S→N, N→C, C→S}. Primjer 4 Zadan je skup FZ F = = { C→S, N→C, N→S, S→C, S→N }. Razlika u odnosu na skup FZ F koji je korišten u primjeru 3 sastoji se u redoslijedu kojim su zavisnosti navedene. Uz pretpostavku da se ispitivanje i izbacivanje redundantnih zavisnosti u skupu izvodi prema redoslijedu kojim su navedene, dobit ćemo kao neredendantni pokrivač G = { C→S, N→S, S→C, S→N }. Neredundantni pokrivači koje smo za isti skup zavisnosti F dobili u primjerima 3 i 4 ne samo da se meñusobno razlikuju po zavisnostima od kojih se sastoje, nego i po broju zavisnosti.
10.2.1. Zadaci za vježbu 1) Zadan je skup FZ F= {A→BC, BC→A, AD→E, BCD→EF}. Odredite redundantne FZ u F. Rješenje: Za svaku FZ u F treba ustanoviti da li je izvediva iz ostatka skupa FZ. Ostatak skupa FZ F označit ćemo slovima L, M, N, i O. A→BC BC→A AD→E BCD→EF
AL+ BC M+ AD N+ BCD O+
= = = =
A BC ABCDEF ABCDE
Funkcijska zavisnost AD→E je redundantna u F. 2) Zadan je skup FZ F = {A→BC, BC→A, ABCD→EF, AD→E, BCD→F}. Treba naći neredundantni pokrivač G od F.
86 Rješenje: A→BC BC→A ABCD→EF AD→ E BCD→F
A L+ BC M+ ABCD N+ AD O+ BCD P+
= = = = =
A BC ABCDEF ABCDF ABCDE
FZ ABCD→EF ,AD→E, i BCD→F su redundantne u F. Nakon izbacivanja prve FZ, preostale dvije više nisu redundantne u F. Neredundantni pokrivač od F je G = {A→BC, BC→A, AD→E, BCD→F}. 3) Zadan je skup FZ F = {A→BC, BC→A, AD→E, BCD→F, ABCD→EF}. Odredite neredundantan pokrivač od F. Dobiveni rezultat usporedite s rezultatom u prethodnom zadatku i objasnite razliku. Rješenje: Neredundantni pokrivač od F je G = {A→BC, BC→A, ABCD→EF}. 4) Za zadani skup FZ F treba naći neredundantni pokrivač G: a) F = {AB→DF, AE→D, AF→C, E→B, F→E} Rješenje: G = {AB→DF, AF→C, E→B, F→E} b) F = {AB→CD, AEF→C, B→EF, EF→B} Rješenje: G = {AB→CD, B→EF, EF→B} c) F = {A→CEF, B→E, BF→AC, D→F, DE→A, E→B, F→D} Rješenje: G = {A→CEF, B→E, D→F, DE→A, E→B, F→D} d) F = {AB→D, AD→CE, AF→C, D→F, F→B} Rješenje: G = {AB→D, AD→CE, D→F, F→B} e) F = {AE→BCD, E→FG, EF→G} Rješenje: G = {AE→BCD, E→FG} d) F = {BF→C, BDF→AE, C→BF, CD→AE} Rješenje: G = {BF→C, C→BF, CD→AE} e) F = {AB→F, AF→CE, BD→E, BE→F, BF→D, CF→B, D→AC, F→E} Rješenje: G = {AB→F, AF→CE, BE→F, BF→D, CF→B, D→AC, F→E}
10.3. SUVIŠNI ATRIBUTI Neredundantni pokrivač F ne možemo dalje smanjivati izbacivanjem nekih zavisnosti jer tako dobiven skup F' ne bi bio ekvivalentan s F. Postoji, meñutim, mogućnost da se smanji broj atributa na lijevoj, odnosno desnoj strani pojedinih zavisnosti u F. Atribut, koji može biti izbačen iz lijeve ili desne strane neke zavisnosti u skupu F a da pri tome ne doñe do promjene ekvivalencije skupa F, smatramo suvišnim i definiramo ga na slijedeći način: Neka je F skup zavisnosti zadan na skupu atributa R i neka je X→ →Y zavisnost u F. Atribut A je suvišan ako vrijedi: 1) X = AZ, X ≠ Z i (F – {X→ →Y}) ∪ {Z→ →Y} ≡ F, ili 2) Y = AW, Y ≠ W, i (F – {X→ →Y}) ∪ {Z→ →W} ≡ F
87 Prema toj definiciji, atribut je suvišan ako može biti uklonjen iz lijeve ili desne strane neke zavisnosti X→Y u F, a da tako dobiven skup F' bude ekvivalentan sa skupom F. Primjer Neka je zadan skup zavisnosti F = {A→BC, B→C, AB→D}. Atribut C je suvišan u desnoj strani zavisnosti A →BC, a atribut B u lijevoj strani zavisnosti AB →D. Treba provjeriti da li je skup F' = {A→B, B→C, A→D} ekvivalentan sa skupom F. Predlažem da ovu provjeru napravite sami. Nakon toga, nastavit ćemo dalje i definirati lijevo reduciranu, desno reduciranu te reduciranu zavisnost, odnosno lijevo reducirani, desno reducirani te reducirani skup FZ. Neka je F skup funkcijskih zavisnosti zadan na skupu atributa R i neka je X →Y element od F. Smatramo da je zavisnost X→ →Y lijevo reducirana, ako X ne sadrži niti jedan suvišan atribut. Zavisnost X→ →Y smatramo desno reduciranom ako Y ne sadrži niti jedan suvišan atribut. Konačno, zavisnost X→ →Y je reducirana ( LR-reducirana) ako je lijevo i desno reducirana i vrijedi Y ≠ 0. Spomenimo da se lijevo reducirana zavisnost u postupku normalizacije naziva i puna funkcijska zavisnost. Skup FZ F je lijevo reduciran (desno reduciran, reduciran) ako su sve FZ u F lijevo reducirane (odnosno desno reducirane, reducirane). Lijevo, odnosno desno reduciranje skupa FZ F možemo svesti na traženje suvišnih atributa u lijevoj, odnosno desnoj strani pojedinih zavisnosti, i na zamjenu FZ sa suvišnim atributima s odgovarajućim zavisnostima bez suvišnih atributa u skupu F. Inače, lijevo i desno reduciranje su dva bitno različita postupka. Dok se desno reduciranje na osnovi pravila dekompozicije može svesti na eliminaciju redundantnih zavisnosti, dakle, na umanjivanje skupa zavisnosti, kod lijevog reduciranja pojedine zavisnosti skupu zamjenjujemo s odgovarajućim 'jačim' zavisnostima. Zbog toga ćemo se posebno upoznati sa svakim od ova dva postupka. Počnimo s lijevim reduciranjem. Neka je F skup FZ zadan na skupu atributa R, i neka je X→Y element u F. Neka vrijedi X = AZ. Pretpostavit ćemo da je A suvišan atribut na lijevoj strani zavisnosti X →Y. Prvo pitanje je što, zapravo, moramo dokazati da bi mogli zaključiti da je A suvišan na lijevoj strani zavisnosti X→Y. Pretpostavimo da smo zavisnost X→Y u skupu FZ F zamijenili s Z→Y. Skup F logički proizlazi iz skupa F', bez obzira da li je A suvišan ili ne. Naime, iz zavisnosti Z→Y uvećanjem s A dobit ćemo zavisnost AZ →AY, odnosno, budući da vrijedi X = AZ, X→AY. Primjenom pravila dekompozicije na X→AY dobit ćemo X→Y. Prema tome, ako vrijedi X = AZ, iz Z→Y uvijek možemo logički izvesti X →Y. U skladu s tim, uvijek ćemo moći iz F' logički izvesti F, ali to ne dokazuje da je odstranjeni atribut A bio suvišan u lijevoj strani FZ. Pokušajmo, dakle, na neki drugi način pronaći dokaz za suvišnost atributa u lijevoj strani FZ. Da bismo lakše razumjeli postupak lijevog reduciranja podsjetimo se da skup FZ predstavlja model nekog segmenta realnog svijeta. Svaka FZ u F predstavlja, u biti, neku tvrdnju. Zamjenom FZ X→Y s FZ Z→Y, mi smo jednu tvrdnju zamijenili drugom. Pitanje je da li ta nova tvrdnja (Z→Y) zaista vrijedi, odnosno da li logički proizlazi iz skupa FZ F. Ako dokažemo da Z→Y može biti logički izvedena iz F, dokazali smo da je A suvišan atribut u lijevoj strani zavisnosti X→Y. FZ Z→Y smatra se 'jačom' od FZ X→Y, jer ima manje atributa u lijevoj strani.
88 Dakle, da bismo lijevo reducirali skup FZ F moramo posebno obraditi svaku pojedinu FZ čija lijeva strana sadrži više od jednog atributa. Neka je takva zavisnost ABC→Y. Da bi mogli zaključiti da li je atribut A suvišan konstruirat ćemo zavisnost BC→Y i ustanoviti da li skup F implicira konstruiranu zavisnost. Ako zavisnost BC→Y logički proizlazi iz zadanog skupa FZ F, onda je atribut A suvišan i zavisnost ABC→Y možemo zamijeniti sa zavisnošću BC→Y. Ovaj postupak ponovit ćemo za svaki atribut svake zavisnosti koja u lijevoj strani sadrži više od jednog atributa. Za samo dokazivanje da neka FZ logički proizlazi iz skupa FZ može se koristiti algoritam ELEMENT, ali taj postupak (kao što smo vidjeli) može biti izveden i ručno. Pogledajmo kako bi to izgledalo na jednom jednostavnom primjeru. Primjer Neka je zadan skup FZ F = {A→C, AB→DE, AC→J}. Treba naći lijevo reducirani pokrivač. Za zavisnost AB→DE i AC→J treba ustanoviti da li sadrže suvišne atribute u lijevoj strani. Za zavisnost AB→DE konstruirat ćemo zavisnost B→DE i ispitati da li može biti izvedena iz skupa FZ F. U tu svrhu naći ćemo zatvarač skupa atributa za B baziran na F. S obzirom da je BF+ = B, zavisnost B →DE ne proizlazi iz skupa F, odnosno atribut A u lijevoj strani ove zavisnosti nije suvišan. Čitav postupak ponovit ćemo za zavisnost A→DE. Kako je A F+ = ACJ, očigledno niti ovaj atribut nije suvišan. Druga zavisnost u F, koju treba ispitati, je AC→J. Konstruirat ćemo zavisnost C→J. Kako je zatvarač CF+ = C, atribut A nije suvišan. Da bi ispitali da li je možda atribut C suvišan, konstruirat ćemo zavisnost A→J. Zatvarač A F+ = ACJ, što znači da zavisnost A→J logički proizlazi iz skupa FZ F. Atribut C u lijevoj strani zavisnosti AC→J je, prema tome, suvišan i može biti izbačen. Lijevo reducirani pokrivač skupa F je G = {A→C, AB→DE, A→J}. Ovu logiku koristi i algoritam LERED da bi lijevo reducirao zadani skup FZ F. Algoritam LERED ULAZ: Skup funkcijskih zavisnosti F. IZLAZ: Lijevo reducirani pokrivač skupa F. LERED(F) begin G:= F; for svaku FZ X→Y u F do begin if X>1 then begin For svaki atribut A u X do begin if ELEMENT(G, {X – A} →Y) then odstrani A iz X u X→Y u G; end; end; end; return(G); end; Kao što je spomenuto, postupak kojim se dokazuje da je neki atribut suvišan u desnoj strani zavisnosti nešto je drugačiji. Neka je X→Y element skupa FZ F, i neka je Y = AW. Na osnovi pravila dekompozicije, zavisnost X→AW u skupu F možemo zamijeniti zavisnostima X→A i X→W. Dokaz da je atribut A suvišan u desnoj strani zavisnosti X→Y svodi se na dokaz da je zavisnost X→A redundantna u
89 skupu F. Algoritam DERED koristi tu logiku da bi našao desno reducirani pokrivač skupa FZ.
Algoritam DERED ULAZ: Skup funkcijskih zavisnosti F. IZLAZ: Desno reducirani pokrivač za F. DERED(F) begin G:= F; for svaki FZ X→Y u F do begin if X >1 then begin for svaki atribut A u Y do begin if ELEMENT({G - {X→Y} ∪ {X→ (Y-A}, X→A) then odstrani A iz Y u X→Y u G; end; end; end; return(G); end. Da bismo dobili reducirani pokrivač skupa F, moramo prvo lijevo, a zatim desno reducirati skup FZ F (ako prvo izvedemo desno reduciranje, rezultat ne mora biti reducirani skup). Naime, nakon lijevog reduciranja neredundantnog skupa FZ može se dogoditi da skup sadrži redundantne zavisnosti, odnosno suvišne atribute u desnoj strani. Uzmimo skup FZ F = {B→A, D→A, BA→D}. Skup F je neredundantan i desno reduciran. Nakon lijevog reduciranja dobit ćemo skup G = {B→A, D→A, B →D}. Zavisnost B →A u skupu G je redundantna. Odnosno, ako na zavisnosti B→A i B →D primijenimo pravilo unije dobit ćemo skup G' = {B→AD, D→A}, koji nije desno reduciran. Zbog toga skup FZ mora biti prvo lijevo, pa tek nakon toga desno reduciran. Pretpostavimo da u skupu FZ F, koji treba desno reducirati, imamo redundantnu zavisnost X→Y. Svi atributi u Y bit će suvišni pa ćemo kao rezultat dobiti zavisnost X→∅. Ovu zavisnost treba izbaciti iz reduciranog pokrivača. Kao što smo vidjeli, čak i ako poñemo od neredundantnog skupa zavisnosti može nam se dogoditi da, kao rezultat lijevog reduciranja, dobijemo redundantan skup FZ, odnosno da nakon desnog reduciranja neke zavisnosti u skupu poprime oblik X→∅. Pogledajmo algoritam za lijevo i desno reduciranje skupa FZ.
Algoritam RED ULAZ: Skup funkcijskih zavisnosti F. IZLAZ: Reducirani pokrivač skupa F. RED(F) begin G:= DERED(LERED(F)): izbaci sve FZ koje imaju oblik X→∅ iz G; return(G); end.
90
10.3.1. Zadaci za vježbu Reduciranje lijeve strane FZ 1) Zadan je skup FZ F = {A→BD, D→B, AD→C}. Nañite L-reducirani pokrivač G. Rješenje: Elementi L-reduciranog skupa FZ su L-reducirane FZ. FZ može imati nereduciranu lijevu stranu samo ako ima dva ili više atributa na lijevoj strani. U našem primjeru treba, dakle, ispitati samo zavisnost AD→C. Ispitivanje se svodi na provjeru da li iz skupa FZ može biti izvedena neka "jača" FZ. U našem primjeru to će biti zavisnosti A→C i D→C. A→C D→C
AF+ = ABCD DF+ = BD
Kao što vidimo, zavisnost A→C logički proizlazi iz skupa FZ F i, prema tome, atribut D je suvišan u lijevoj strani zavisnosti AD→C. L-reducirani pokrivač je G = {A→BD, D→B, A→C}. 2) Zadan je skup FZ F= {ABE→D, AEF→CD, B→EF, EF→B}. Treba naći reducirani pokrivač G. Rješenje: Za zavisnost ABE→D AB→D ABF+ = ABCDEF AE→D AEF+ = AE BE→D BDF+ = BEF Za zavisnost AB→D A→D AF+ B→D BF+
= A = BEF
Za zavisnost AEF→CD AE→CD AEF+ = AE AF→CD AFF+ = AF EF→CD EFF+ = BEF Za zavisnost EF→B E→B EF+ F→B FF+
= E = F
Prema tome, G = {AB→D, AEF→CD, B→EF, EF→B}. 3) Za zadani skup FZ F treba naći L-reducirani pokrivač G. a) F = {A→EF, B→E, ABF→C, D→F, DE→A, E→B, F→D} Rješenje: G1 = {A→EF, B→E, A→C, D→F, DE→A, E→B, F→D} G2 = {A→EF, B→E, BF→C, D→F, DE→A, E→B, F→D} b) F = {AB→D, ADF→CE, D→F, F→B} Rješenje: G1 = {AB→D, AD→CE, D→F, F→B} G2 = {AB→D, AF→CE, D→F, F→B} c) F = {AE→BCD, E→F, EF→G }
L-
91 Rješenje: G = {AE→BCD, E→F, E→G } d) F = {BF→C, BCDF→E, C→BF, CD→A} Rješenje: G1 = {BF→C, BDF→E, C→BF, CD→A} G2 = {BF→C, CD→E, C→BF, CD→A} e) F = {AE→B, B→AG, BDE→C, CD→B, CE→B, CG→BE, E→D, EG→A} Rješenje: G = {AE→B, B→AG, BE→C, CD→B, CE→B, CG→BE, E→D, EG→A} f) F = {AB→DF, ADF→C, E→B, F→E} Rješenje: G = {AB→DF, AF→C, E→B, F→E} g) F = {ACDF→B, B→D, C→ADF, DF→EG} Rješenje: G = {C→B, B→D, C→ADF, DF→EG}
Reduciranje desne strane FZ 1) Zadan je skup FZ F = {AB→DEF, AF→CD, E→B, F→E}. Treba naći D-reducirani pokrivač G. Rješenje: Svi elementi desno reduciranog skupa FZ su D-reducirani. Za svaku FZ, koja u desnoj strani ima dva ili više atributa, treba ustanoviti da li je D-reducirana. Na osnovi pravila dekompozicije, takvu FZ zamijenit ćemo skupom FZ koje u desnoj strani imaju samo jedan atribut. Za svaku od tako dobivenih FZ ispitat ćemo da li je redundantna, i ako jest izbacit ćemo je iz skupa FZ. Na kraju ćemo preostale FZ s jednakom lijevom stranom, na osnovi pravila unije, zamijeniti s jednom FZ. Zavisnost AB→DEF zamjenjujemo s AB→D AB→E AB→F Zavisnost AF→CD zamjenjujemo s AF→C AF→D Na taj način dobili smo pokrivač F1 = {AB→D, AB→E, AB→F, AF→C, AF→D, E→B, F→E}. Prvih pet zavisnosti u skupu F1 ispitujemo na redundanciju i redundantne zavisnosti izbacujemo iz skupa. Dobivamo skup FZ F2 = = { AB→F, AF→C, AF→D, E→B, F→E}. Na osnovi pravila unije, zamjenjujemo FZ AF→C i AF→D s FZ AF→CD. Dobiveni skup FZ G = = {AB→F, AF→CD, E→B, F→E} je Dreducirani pokrivač od F 2) Treba naći D-reducirani pokrivač G zadanog skupa FZ F. a) F = {A→BE, B→F, AF→CE, BE→F, BF→D, CF→B, D→AC, F→E} Rješenje: G = {A→B, B→F, BF→D, CF→B, D→AC, F→E} c) F = {AB→GE, AB→CDF, B→EF, EF→B}
92 Rješenje: G = {AB→G, AB→CD, B→EF, EF→B} d) F = {B→ADFE, C→AB, DF→EG} Rješenje: G = {B→ADF, C→B, DF→EG}
Reduciranje FZ 1) Treba odrediti reducirani pokrivač skupa FZ F = {A→CEF, B→E, BF→AC, ABF→CD, D→F, DE→AB, E→B, F→D}. Rješenje: Elementi reduciranog skupa FZ su L- i D-reducirane FZ. Skup mora biti prvo lijevo i zatim desno reduciran. Uštedjet ćemo mnogo vremena ako prije reduciranja odstranimo redundantne zavisnosti iz skupa. Neredundantni pokrivač F1 = {A→CEF, B→E, D→F, DE→AB, E→B, F→D} L-reducirani pokrivač F2 = {A→CEF, B→E, D→F, DE→AB, E→B, F→D} Reducirani pokrivač g = {A→CEF, B→E, D→F, DE→A, E→B, F→D} 2) Za zadani skup FZ F treba naći neredundantni, reducirani pokrivač G. a) F = {AB→DF, ADF→BCE, AF→BC, D→F, F→B} Rješenje: Neredundantni pokrivač: F1 = {AB→DF, ADF→BCE, D→F, F→B} L-red. pokrivač: F2 = {AB→DF, AF→BCE, D→F, F→B} ili {AB→DF, AD→BCE, D→F, F→B} Reducirani pokrivač: G = {AB→D, AF→CE, D→F, F→B} ili {AB→D, AD→CE, D→F, F→B} e) F = {AE→BCDF, E→F, EF→G AE→G} Rješenje: F1 = {AE→BCDF, E→F, EF→G} F2 = {AE→BCDF, E→F, EF→G AE→G} G = {AE→BCD, E→F, EF→G AE→G}
10.4. KANONSKI POKRIVAČ Iako u postupku oblikovanja baze podataka kanonski pokrivač kao takav ne koristimo, neka svojstva ovog pokrivača su nam interesantna, pa ćemo ga definirati: Skup funkcijskih zavisnosti F je kanonski ako svaka zavisnost u F ima oblik X→ →A, i F je neredundantan i lijevo reduciran. S obzirom na to da je kanonski skup FZ neredundantan, te da svaka zavisnost ima samo jedan atribut u desnoj strani, kanonski skup je desno reduciran, odnosno reduciran. Primjenom pravila dekompozicije na zavisnost X→Y, u kojoj je Y = {A1, A2,..., An}, dobit ćemo skup zavisnosti {X→ A1, x→ A2, ..., X→ An}. U skladu s tim ,za svaki skup FZ F vrijedi da postoji pokrivač skupa, G, u kojem svaka zavisnost ima oblik X→A. Ako je skup zavisnosti F reduciran, primjenom pravila dekompozicije na zavisnosti u F dobit ćemo njegov kanonski pokrivač. Vrijedi i obratno. Ako je G
93 kanonski skup, primjenom pravila unije na zavisnosti s jednakom lijevom stranom u G, dobit ćemo reducirani pokrivač F od G.
10.5. EKVIVALENTNI SKUPOVI ATRIBUTA Ranije smo definirali pojam zatvarača skupa atributa baziran na zadanom skupu funkcijskih zavisnosti. U uskoj vezi sa zatvaračem skupa atributa nalazi se pojam ekvivalencije dva skupa atributa. Prije nego što krenemo dalje, definirat ćemo pojam ekvivalencije dva skupa atributa s obzirom na zadani skup FZ F: Neka je F skup FZ zadan na skupu atributa R i neka vrijedi X, Y⊆ ⊆R. Za skupove atributa X i Y smatramo da su meñusobno ekvivalentni (označavamo kao X ≡ Y) ako su FZ X→ →Y i Y→ →X elementi skupa F+. Iz definicije ekvivalencije skupa atributa slijedi: ukoliko vrijedi X ≡ Y, mora vrijediti i - Y⊆X+ ∧ X⊆Y+ - X+ = Y+. Neka su X, Y i Z tri podskupa atributa u R na kojem je zadan skup zavisnosti F. Ako u F vrijedi X ≡ Y i Y ≡ Z, onda mora vrijediti i X ≡ Z. To slijedi iz činjenice da su zatvarači meñusobno ekvivalentnih skupova atributa, jednaki. Dakle, iz XF+ =Y F+ i Y F+ = ZF+ proizlazi X ≡ Y i Y ≡ Z. Istovremeno iz X F+ = Y F+ i Y F+= Z F+ proizlazi X F+ = Z F+. Vrijedi, prema tome, i X ≡ Z. Skup lijevih strana svih zavisnosti u F može se, na osnovi ekvivalencije, podijeliti u podskupove tako da su elementi svakog podskupa meñusobno ekvivalentni. S E F(X) označit ćemo podskup FZ u F čije su lijeve strane meñusobno ekvivalentne (odnosno ekvivalente su s podskupom atributa X). S eF (X) označit ćemo skup svih lijevih strana zavisnosti u E F (X), a s E F označit ćemo skup svih podskupova E F (X) u F. X je bilo koji podskup atributa u danoj klasi ekvivalencije. S obzirom na to da niti jedan podskup atributa Z u R, na kojem je zadan skup zavisnosti R, ne može biti element dvaju različitih podskupova eF (X), niti jedna zavisnosti Z → W u F ne može biti element dvaju različitih podskupova E F (X), pa je, prema tome, EF particija skupa FZ F. Primjer. Neka je F = {A→BC, B→AD, AE→I, BE→IJ}. Zatvarači lijevih strana zavisnosti u F su: A F+ = ABCD = ABCD B F+ AE F+ = ABCDEIJ BE F+ = ABCDEIJ Atributi A i B, kao i podskupovi atributa AE i BE, meñusobno su ekvivalentni s obzirom na to da vrijedi: A F+ AE F+
= B F+ = BE F+
A⊆B F+ i + AE⊆BE F i
B⊆A F+ BE⊆AE F+
EF ima dva elementa; podskupove EF(A) i EF(AE), s tim da vrijedi: EF(A) = {A→BC, B→AD} EF(AE) = {AE→I, BE→IJ} eF(A) = {A, B} eF(AE) = {AE, BE} Neka su F i G dva ekvivalentna skupa FZ zadana na skupu atributa R. Pošto su F i G ekvivalentni, za svaku zavisnost u F postoji RAP derivacijski niz baziran na
94 G i obratno. U RAP derivacijskom nizu (baziranom na F) za zavisnost X→Y u G mora biti korištena bar jedna FZ iz iste klase ekvivalencije kao i FZ X→Y. Neka su F i G dva ekvivalentna skupa FZ zadana na skupu atributa R. Neka je X podskup atributa u R. Skup EF (X) neprazan je samo ako je i skup EG(X) neprazan. Drugim riječima, broj elemenata u particiji skupa F (EF) mora biti jednak broju elemenata u particiji skupa G (EG) Općenito, vrijedi: Bilo koja dva, meñusobno ekvivalentna, skupa FZ moraju imati jednak broj klasa ekvivalencije. Primjer 1 Neka su F i G meñusobno ekvivalentni, neredundantni skupovi FZ. Neka je F = {A→BC, B →A, AD→E}, i G = {A→ABC, B→A, BD→E} Zatvarači lijevih strana zavisnosti u F su AF+ BF+ ADF+
= ABC = ABC = ABCDE
Zatvarači lijevih strana zavisnosti u G su AG+ BG+ BDG+
= = =
ABC ABC ABCDE
Elementi EF su: EF(A) = {A→BC, B→A} EF(AD) = {AD→E} Elementi EGsu: EG(A) = {A→ABC, B→A} EG(AD) = {BD→E} Iz zatvarača podskupova lijevih strana zavisnosti u F i G proizlazi da postoji ekvivalencija izmeñu atributa A (odnosno B) s obzirom na F i atributa A (odnosno B) s obzirom na G, kao i izmeñu podskupova atributa AD s obzirom na F i BD s obzirom na G. Pogledajmo sad RAP derivacijski niz za zavisnost BD→E iz G s obzirom na skup F: 1) BD→BD B1 2) BD→ABCD B2 na A→BC i 1) 3) BD→ABCDE B2 na AD→E i 2) 4) BD→E B3 na 3) Kao što vidimo, za izvoñenje zavisnosti BD→E morali smo koristiti zavisnost AD→E, čija lijeva strana spada u istu klasu ekvivalencije kao i skup atributa BD. Primjer 2. Neka su F i G ekvivalentni, neredundantni skupovi zavisnosti. F = {A→BC, B→AD, AE→I, BE→IJ} i G = {A→B, B→ACD, AE→IJ}. Zatvarači lijevih strana zavisnosti u F su AF+ = ABCD B F+ = ABCD AE F+ = ABCDEIJ BE F+ = ABCDEIJ
95 Iz toga slijedi da su elementi particije E F: E F(A) i E F(AE). EF(A) = {A→BC, B→AD} EF (AE) = {AE→I, BE→IJ} Zatvarači lijevih strana zavisnosti u G su AG+ BG+ AEG+
= ABCD = ABCD = ABCDEIJ
Iz toga slijedi da su elementi particije EG EG(A) i EG(AE): EG(A) = {A→B, B→ACD} EG(AE) = {AE→IJ}
10.5.1. Zadaci za vježbu Klase ekvivalencije u skupu FZ 1) Na R(ABCDEF) zadan je skup FZ G = {A→F, B→AC, C→E, CF→BD, E→C, F→A}. Nañite klase ekvivalencije. Rješenje: AG+ BG+ CG+ CFG+ EG+ FG+
= = = = = =
AF ABCDEF CE ABCDEF CE AF
EG(A) = {A→F, F→A} eG (A) = {A, F} EG(B) = {B→AC, CF→BD} eG(B) = {B, CF} EG(C) = {C→E, E→C} eG (C) = {C, E} 2) Za skup FZ F = {A→BC, BC→A, AD→E, BCD→F} odredite klase ekvivalencije. Rješenje: EF(A) eF(A)
= {A→BC, BC→A}, pa je = {A, BC}
EF (AD) = {AD→E, BCD→F}, pa je eF(AD) = {AD, BCD} 3) Na R(ABCDEFG) zadan je skup FZ F = {AE→C, B→A, BDG →CF, DG→EF}. Treba odrediti moguće ključeve i nekoliko superključeva od R. Rješenje: AEF BF BDGF DGF
= = = =
AEC AB ABCDEFG DEFG
96 Relacijska shema R ima samo jedan mogući ključ i taj je sastavljen od atributa BDG. Svaki podskup atributa u R koji u sebi sadrži atribute BDG predstavlja superključ od R. 4) Particija skupa FZ F = {A→BC, BC→A, AD→E, BCD→F} (EF) sastoji se od dva podskupa: = EF(A) EF (AD) =
{A→BC, BC→A} i {AD→E, BCD→F}
Podskup eF (AD) sadrži sve moguće ključeve relacijske sheme (Dokažite to tako da nañete zatvarač elemenata ovog podskupa baziran na F). Oni se mogu meñusobno zamjenjivati bez promjene ekvivalencije. Skupovi FZ F1 = {A→BC, BC→A, AD→EF} i F2= {A→BC, BC→A, BCD→EF} ekvivalentni su sa skupom F i meñusobno. Dokažite da vrijedi F ≡ F1 ≡ F2.
10.6. MINIMALNI POKRIVAČ Izbacivanjem redundantnih zavisnosti iz nekog skupa FZ F dobili smo neredundantni pokrivač od F. Kao što smo vidjeli, broj FZ, u tako dobivenom neredundantnom pokrivaču, ovisi o redoslijedu ispitivanja i izbacivanja zavisnosti. Vjerojatno postoji pokrivač skupa F s manjim brojem zavisnosti od neredundantnog pokrivača koji smo našli pomoću algoritma NEREDPOK. Za nas je interesantan pokrivač skupa F koji bi imao minimalan broj FZ. Definirat ćemo takav skup i upoznati se s načinom na koji takav skup možemo pronaći. Definicija minimalnog skupa glasi: Skup funkcijskih zavisnosti F je minimalan ako ne postoji njemu ekvivalentan skup s manjim brojem funkcijskih zavisnosti. Iz definicije je jasno da minimalan skup mora biti neredundantan. Nažalost, definicija se ne može koristiti za ispitivanje da li je neki skup minimalan. Promotrimo kako takav skup možemo pronaći. Znamo da su, unutar jedne klase ekvivalencije, lijeve strane svih FZ meñusobno ekvivalentne. Neka je F neredundantni skup FZ te neka su V→Y i Z→W elementi podskupa EF (X). Iz onog što znamo o klasama ekvivalencije, jasno je da iz F logički proizlazi: - V→Z - V→YW. Ako zamijenimo zavisnosti V→Y i Z →W u skupu F s FZ V→YW, dobit ćemo skup FZ F'. Skup F' ima jednu zavisnost manje od skupa F. Ovakva zamjena bila bi korisna uz uvjet da vrijedi F'≡F, tj. da se zamjenom nije promijenila ekvivalencija skupa FZ. Da bismo to ispitali, dovoljno je ustanoviti da li je ekvivalencija skupa atributa Z s obzirom na F' jednaka ekvivalenciji skupa Z s obzirom na F. U algoritam MINPOK ugrañen je upravo opisani postupak.
Algoritam MINPOK ULAZ: Neredundantni skup FZ F. IZLAZ: Minimalni pokrivač skupa F, skup G. MINPOK(F) begin G:= F; Nañi particiju EF;
97 za svaku EF(X) u EF do begin for svaku FZ V→Y u EF(X) do begin for svaku FZ Z→W ≠ V→Y u EF(X) do begin nañi ZQ+ s obzirom na Q = {(G - (V→Y, Z→W)) ∪ (V→YW) } if ZQ+ = Z F+ then begin zamijeni FZ V→Y i Z →W s V→YW u G; end; end; end; end; return(G); end. Primjer Neka je F = {A→BC, B→A, AD→E, BD→I} neredundantan skup FZ. Treba naći minimalni pokrivač G, skupa F. Particija EF ima dva podskupa EF (A) i EF (AD): EF(A) = {A→BC, B→A} EF(AD) = {AD→E, BD→I} za A→BC za B→A za AD→E
BQ+ = B AQ+ = A BDQ+ = ABCDEI
BF+ = ABC A F+ = ABC BD F+ = ABCDEI
G = {A→BC, B→A, AD→EI}
10.7. OPTIMALNI POKRIVAČ Ovo izgleda kao pravi trenutak da se spomene još jedna vrsta pokrivača. Za oblikovanje baze podataka pokrivač s minimalnim brojem FZ jako je važan. Važniji od njega bio bi pokrivač koji ima minimalan ukupan broj atributa u lijevim i desnim stranama svih FZ. Skup FZ s minimalnim ukupnim brojem atributa nazivamo optimalni pokrivač. Definicija optimalnog pokrivača glasi: Skup FZ F je optimalan ako ne postoji njemu ekvivalentan skup FZ s manjim ukupnim brojem atributa od F. Kao ni definicija minimalnog skupa, ni ova definicija ne pruža mogućnost testiranja optimalnosti skupa. Još je neprijatnije da ne postoji algoritam pomoću kojeg možemo naći optimalan pokrivač zadanog skupa FZ. Manje ili više, sve što smo do sada radili, počev od izbacivanja redundantnih FZ, pa do lijevog i desnog reduciranja, radili smo da bismo našli pokrivač sa što je moguće manjim brojem atributa. Nastojimo svaki podatak u bazi memorirati samo na jednom mjestu. Kao što ćemo vidjeti, to nije uvijek moguće. Naime, podaci u bazi povezani su u semantičke strukture preko kopija vrijednosti odreñenih atributa.
10.8. SASTAVLJENA FUNKCIJSKA ZAVISNOST Prstenasti pokrivač nekog skupa funkcijskih zavisnosti F sastoji se od sastavljenih funkcijskih zavisnosti. Kako sastavljene funkcijske zavisnosti nismo definirali ranije, morat ćemo to učiniti sada:
98 Sastavljena funkcijska zavisnost (SFZ) zadana na skupu atributa R ima oblik (X1, X2, ..., Xn) →Y. (X1, X2, ..., Xn) je lijeva, a Y desna strana SFZ. Na skupu atributa R vrijedi SFZ (X1, X2, ..., Xn) →Y ako vrijedi X1, X2, ..., Xn, Y ⊆ R i ako za bilo koja dva člana lijeve strane SFZ Xi i Xj vrijedi Xi→ →Xj i Xi→ →Y. SFZ (X1, X2, ..., Xn) →Y je kraći način zapisivanja skupa funkcijskih zavisnosti čije lijeve strane su meñusobno ekvivalentne. Drugim riječima, za bilo koja dva člana lijeve strane Xi i Xj mora vrijediti Xi+ = Xj+. Zbog potreba prstenastog pokrivača dozvolit ćemo da desna strana SFZ bude prazan skup (tj. Y =∅). U tom slučaju, SFZ će imati oblik(X1, X2, ..., Xn). Svaki SFZ ekvivalentan je s nekim skupom FZ F. Skup F smatramo karakterističnim skupom zavisnosti za taj SFZ, tj.: Skup FZ F karakterističan za SFZ (X1, X2, ..., Xn) →Y ako vrijedi F ≡ (X1, X2, ..., Xn) →Y Postoje dva, za nas interesantna, tipa karakterističnih skupova: to su prirodni i prstenasti karakteristični skup FZ. Skup FZ F je prirodan karakterističan skup zavisnosti za neku SFZ, ako za svaki podskup atributa Xi u lijevoj strani SFZ u F postoji točno jedna FZ u kojoj je Xi lijeva strana. Prirodni karakteristični skup F za SFZ (X1, X2, ..., Xn) →Y možemo prikazati kao F = { X1→Y1, X2→Y2, ..., Xn→Yn) →Y. Prstenasti, karakteristični skup FZ F za SFZ (X1, X2, ..., Xn) →Y ima oblik F = { X1→X2, X2→X3, ..., Xn-1→Xn, Xn→X1Y} Kao što vidimo, prstenasti, karakteristični skup zavisnosti za SFZ je prirodan. Za svaki podskup atributa u lijevoj strani SFZ (Xi) postoji točno jedna zavisnost u kojoj je Xi lijeva strana. Svoj naziv ovaj tip karakterističnog skupa dobio je zbog toga što ga je moguće grafički prikazati u obliku prstena: X1 Y
X2
Xn X n-1
X3
Skup SFZ G možemo tretirati kao uniju karakterističnih skupova FZ Fi za svaki SFZ u G, odnosno kao skup FZ.
10.9. PRSTENASTI POKRIVAČ Skup F smatramo pokrivačem skupa G ako vrijedi F ≡ G. Pri tome skupovi F i G mogu biti skupovi FZ, skupovi SFZ ili jedan od njih može biti skup FZ, a drugi skup SFZ. Smatramo da je skup SFZ prstenast, ako za bilo koja dva meñusobno ekvivalentna podskupa atributa X i Z (vrijedi X↔Z) vrijedi da ne mogu biti članovi lijevih strana dviju različitih SFZ u F.
99 Za svaki skup FZ F možemo naći prstenasti pokrivač G. neka je skup FZ F neredundantni skup. Za svaki podskup zavisnosti u EF formirat ćemo u G jedan SFZ. Skup eF(X) bit će lijeva, a unija svih desnih strana zavisnosti u podskupu EF(X) desna strana tako formiranog SFZ. Primjer Neka je skup FZ G = {A→BC, B→AD, AE→I, BE→IJ}. Da bismo našli klase ekvivalencije u skupu G, odredit ćemo zatvarač skupa atributa za svaki lijevu stranu FZ u G: AG+ B G+ AE G+ BE G+
= = = =
ABCD ABCD ABCDEIJ ABCDEIJ
Particija zavisnosti u skupu G, E G ima dva elementa: EG (A) = EG (AE) =
{A→BC, B→AD } {AE→I, BE→IJ }
Prstenasti pokrivač skupa FZ G sastojat će se, prema tome, od dvije SFZ i bit će F = {(A, B) →ABCD, (AE, BE)→IJ}. Kao i skup FZ, i skup SFZ može biti redundantan i može sadržavati suvišne atribute. Prije nego što definiramo neredundantan i reducirani prstenasti skup, definirat ćemo pojam pomičnog atributa. Neka je G skup SFZ i neka je Xi član lijeve strane jedne SFZ u G. Neka za atribut Aj vrijedi Aj∈ ∈Xi. Atribut Aj smatramo pomičnim ako može biti prenesen iz lijeve u desnu stranu SFZ, a da pri tome ne doñe do promjene ekvivalencije skupa G. Član Xi smatramo pomičnim ako su pomični svi atributi od kojih se sastoji podskup atributa Xi. Zbog meñusobne ekvivalencije članova lijeve strane SFZ (X1, X2, ..., Xn)→Y, bilo koji član lijeve strane može biti prenesen s lijeve na desnu stranu SFZ. Posljedica toga će, u pravilu, biti promjena ekvivalencije SFZ i čitavog skupa G. Jedino u slučaju da član lijeve strana Xi odgovara redundantnoj FZ, možemo ga prenijeti bez promjene ekvivalencije. Pogledajmo na primjer SFZ (A, B, AB)→Y. Karakterističan prirodni skup ovog SFZ je {A→Y, B→Y, AB→ Y}. Ako atributi A i B svaki za sebe jednoznačno odreñuju Y, onda će i kombinacija tih atributa jednoznačno odreñivati Y. Zavisnost AB→Y može biti logički izvedena iz zavisnosti A→Y i B→Y, pa je prema tome redundantna. Zbog toga je član AB na lijevoj strani promatranog SFZ pomičan i možemo ga prenijeti na desnu stranu bez promjene ekvivalencije SFZ. SFZ (A, B)→ABY je ekvivalentna sa SFZ (A, B, AB) →Y. Primjer Neka je G = {A→BC, B→AD, AE→I, BE→I}. Zavisnost AE→I može biti izvedena iz zavisnosti A→BC i BE→IJ na osnovi pravila dekompozicije i pseudotranzitivnosti, što znači da je redundantna u skupu G. Prstenasti pokrivač F od G jednak je F = {(A, B)→ABCD, (AE, BE)→IJ}. Skup F je redundantan, jer je lijevi član AE u drugoj SFZ pomičan. Neredundantan prstenasti pokrivač skupa G bio bi F' = {(A, B)→ABCD, (BE)→IJ}. Skup F' nema pomičnih članova na lijevoj strani. Ostanimo još malo kod prethodnog primjera. Kao što smo vidjeli, u G je redundantna zavisnost AE→I. U F je AE pomičan član. Interesantno je da je u F, pored AE, pomičan i član BE. U skupu FZ G zavisnost BE→IJ nije bila redundantna. Jedino ta zavisnost sadrži atribut J u desnoj strani i, prema tome, ne može biti
100 izvedena iz ostalih zavisnosti. Meñutim, prirodni karakteristični skup funkcijskih zavisnosti G' od F ne mora biti jednak skupu FZ G: G' = {A→ABCD, B→ABCD, AE→IJ, BE→IJ}. U skupu G' može biti izvedena zavisnost AE→IJ (iz zavisnosti A→ABCD, i BE →IJ) ili zavisnost BE→IJ (iz zavisnosti B→ABCD, i AE→IJ). Bilo koja od ove dvije zavisnosti može biti redundantna u skupu G'. Meñutim, nakon što je jedna od njih odstranjena iz skupa, druga zavisnost više nije redundantna. Sada možemo definirati neredundantan prstenasti skup: Prstenasti skup G je neredundantan ako niti jedan SFZ iz G ne može biti odstranjen, a da se pri tome ne promijeni ekvivalencija skupa G, te ako niti jedan SFZ u G nema pomičan član u lijevoj strani. Pomičan član u lijevoj strani SFZ odgovara redundantnoj FZ u skupu FZ. Polazeći od neredundantnog skupa FZ, dobit ćemo neredundantni prstenasti pokrivač. Neka je G neredundantan skup SFZ. Unija prirodnih karakterističnih skupova svih SFZ u G je neredundantan skup FZ F za koji vrijedi F ≡ G. Razmotrimo to na primjeru: Primjer Neka je F = {(A, B)→ABCD, (AE)→IJ} skup SFZ. Unija prirodnih karakterističnih skupova SFZ u F je skup G = { A→ABCD, B→ABCD, AE→IJ}. Skup G je neredundantan i vrijedi F ≡ G. Slično kao što pomičan član u lijevoj strani nekog SFZ odgovara redundantnoj FZ u prirodnom karakterističnom skupu za taj SFZ, pomičan atribut u nekom lijevom članu SFZ odgovara suvišnom atributu u lijevoj strani odgovarajuće FZ. Definirajmo reducirani prstenasti skup SFZ: Neka je G neredundantan skup SFZ. SFZ (X 1, X2, ..., Xn) →Y je reducirana ako niti jedan član u lijevoj strani ne sadrži niti jedan pomičan atribut, te ako desna strana SFZ ne sadrži niti jedan suvišni atribut. Skup SFZ G je reduciran ako su svi elementi skupa reducirani. Prstenasti pokrivač nekog neredundantnog (ali nereduciranog) skupa FZ F neće biti reduciran. Lijeve strane SFZ u prstenastom pokrivaču mogu sadržavati pomične, a desne suvišne atribute. Primjer 1 Skup FZ F = {ABC, B→AD, ABE→ →IJ} je neredundantan, ali nije reduciran. Prstenasti pokrivač od F, G = {(A, B)→ABCD, (ABE)→IJ} sadrži pomični atribut A (ili B) u lijevoj strani SFZ (ABE)→IJ. Desna strana SFZ (A B)→ABCD sadrži suvišne atribute AB. Ako skup FZ F najprije reduciramo, a zatim na osnovi reduciranog pokrivača F' od F odredimo prstenasti pokrivač G', situacija će biti nešto bolja. Lijeve strane SFZ u prstenastom pokrivaču neće sadržavati pomične atribute. Primjer 2 Neka je skup FZ F jednak kao u prethodnom primjeru. Reducirani pokrivač od F, F' = {A→BC, B→AD, BE→IJ}. Članovi lijeve strane ne sadrže pomične atribute, kao što smo i očekivali. Meñutim, suvišni atributi u desnoj strani prve SFZ i dalje su prisutni.
101 Podsjetimo se kako smo konstruirali SFZ. Desna strana SFZ u prstenastom pokrivaču jednaka je uniji svih desnih strana zavisnosti u podskupu EF'(A). Na taj način je uvijek moguće da se u desnoj strani nañe neki od atributa koji su sadržani u nekoj od lijevih strana zavisnosti. Svi atributi desne strane SFZ koji su sadržani u nekom od članova lijeve strane SFZ suvišni su na osnovi aksioma refleksivnosti. Za reducirani SFZ (X1, X2, ..., Xn) →Y uvijek vrijedi: (X1 ∪ X2 ∪...∪ ∪ Xn) ∩ Y = ∅ Drugim riječima : presjek unije svih lijevih članova i desne strane reducirane SFZ uvijek mora biti prazan skup. Zahvaljujući činjenici da smo krenuli od reduciranog skupa FZ i izbacili iz desne strane SFZ sve atribute koji se nalaze u presjeku, riješili smo se najvećeg dijela suvišnih atributa u prstenastom pokrivaču. U većini slučajeva to će biti dovoljno. Meñutim, problem suvišnih atributa u desnoj strani nismo u potpunosti riješili. Primjer 3 Neka je skup FZ F = { B1B2→A, D1D2→B1B2, B1→ C1, B2→C2, D1→A, D2→A, AB2C1→D1, AB1C2→ D2}. Skup FZ F je reduciran. Jedine dvije meñusobno ekvivalentne lijeve strane zavisnosti u F su B1B2 i D1D2 . Prstenasti pokrivač skupa F, G = { (B1B2, D1D2 ) →A, (B1)→C1, (B2)→ C2, (D1)→A, D2→A, (AB1C2)→ D1, (AB1C2)→ D2}. Atribut A u desnoj strani prvog SFZ u G je suvišan (zbog (D1)→A i D2→A). Da bismo bili sigurni da desna strana prstenastog pokrivača ne sadrži suvišne atribute, morali bi desno reducirati prstenasti pokrivač. To je moguće na dva različita načina. Prvi od ta dva načina je da nañemo uniju prstenastih karakterističnih skupova svih SFZ u prstenastom pokrivaču i da je desno reduciramo. Nakon toga treba od desno reducirane unije naći prstenasti pokrivač. Drugi način je direktno desno reduciranje prstenastog pokrivača. Za to bi bilo potrebno prilagoditi algoritme ZAT2 (ili ZATVARAČ), ELEMENT i DERED za rad sa skupom SFZ. Ustvari, veće modifikacije su potrebne samo u algoritmu ZAT2 (odnosno ZATVARAČU). Umjesto pojedinih FZ, algoritam bi morao pratiti članove lijevih strana pojedinih SFZ.
10.9.1. Zadaci za vježbu Prstenasti pokrivač 1) Nañite prstenasti pokrivač G za skup FZ F = {AB→D, AD→E, AF→C, D→F, F→B}. Treba naći klase ekvivalencije koje čine particiju u F. Rješenje: ABF+ ADF+ AFF+ DF+ FF+
= = = = =
ABCDEF ABCDEF ABCDEF BDF BF
Particija EF ima tri podskupa: EF (AB) = {AB→D, AD→E, AF→C} EF (D) = {D→F} EF (F) = {F→B} Za svaki podskup (klasu ekvivalencije) konstruiramo jednu sastavljenu FZ. Lijeva strana SFZ sastoji se od lijevih strana FZ jedne klase, a desna je unija desnih strana: (AB, AD, AF)→CDE (D)→F (F)→B
102 Ovako dobivene SFZ su elementi pokrivača G, tj. G = {(AB, AD, AF)→CDE, (D)→F, (F)→B} 2) Zadan je skup FZ F = {A→EF, B→E, BF→C, D→F, DE→A, E→B, F→D}. Nañite a) klase ekvivalencije u F. Rješenje: EF(A) = {A→EF, BF→C, DE→A} EF(B) = {B→E, E→B} EF(D) = {D→F, F→D} b) prstenasti pokrivač G. Rješenje: (A, BF, DE)→ACEF (B, E)→BE (D, F)→DF G = { (A, BF, DE)→ACEF, (B, E)→BE, (D, F)→DF} d) prirodan karakterističan skup FZ za G. Rješenje: G1 = {A→CEF, BF→ACE, DE→ACF, B→E, E→B, D→F, F→D} e) prstenasti prirodan karakterističan skup FZ za G. Rješenje: G1 = {A→BF, BF→DE, DE→ACF, B→E, E→B, D→F, F→D} 3) Zadan je skup FZ F = {AB→D, AEF→C, B→EF, EF→B} treba odrediti prstenasti pokrivač G, prirodan karakteristični skup FZ G1 i prstenasti prirodni karakteristični skup G2. Rješenje: G = { (AB, AEF)→CD, (B, EF) →BEF} G, = {AB→CD, AE→CD, B→EF, EF→B} G2 = {AB→F, AEF→BCD, B→EF, EF→B} 4) Za zadani neredundantni i reducirani skup FZ F treba naći prstenasti pokrivač. a) F = {AB→G, AB→CD, B→EF, EF→B} Rješenje: G = {(AB) →CDG, (B, EF) → BEF} b) F = {A→EF, B→E, A→C, D→F, DE→A, E→B, F→D} Rješenje: G = {A, DE)→CEF, (B, E) →BE, (D, F)→DF} c) F = {AB→D, AD→CE, D→F, F→B} Rješenje:
103 G = {(AB, AD)→CDE, (D)→F, (F)→B} d) F = {AE→BCD, E→F, E→G} Rješenje: G = {AE)→BCD, (E)→FG}
Reducirani prstenasti pokrivač 1) Treba naći reducirani prstenasti pokrivač zadanog skupa FZ F = {BF→C, BCD→E, C→BDF, CD→AE}. Rješenje: L-reducirani prstenasti pokrivač se može dobiti relativno jednostavno. Prstenasti pokrivač neredundantnog skupa FZ neće imati pomičnih članova u lijevim stranama SFZ, a u prstenastom pokrivaču L-reduciranog skupa FZ ne će postojati pomični atributi. Umjesto da prstenasti pokrivač nekog skupa direktno odreñujemo, prvo ćemo pronaći neredundantni L-reducirani pokrivač tog skupa i zatim tražiti njegov prstenasti pokrivač. Neredundantni pokrivač G1 = {BF→C, C→BDF, CD→AE} L-reducirani pokrivač G2 = {BF→C, C→ABDEF} L-reducirani prstenasti pokrivač G3 = {(BF,C) →ABCDEF} Odstranjivanje suvišnih atributa iz desne strane nije moguće izvesti na sličan način. Prvi korak koji moramo napraviti je da iz desne strane SFZ uklonimo sve atribute koji se nalaze u presjeku desne strane i unije lijevih članova SFZ (tj. za SFZ (X1, X2,..., Xn)→Y mora vrijediti (X1∪X2∪...∪Xn)∩ Y = ∅). U najvećem broju slučajeva ovom ćemo operacijom potpuno odstraniti suvišne atribute iz desne strane. Nažalost, ne uvijek. Potpuno D-reduciranje možemo izvesti tako da nañemo prirodni karakteristični pokrivač prstenastog pokrivača i na njemu izvedemo D-reduciranje. Prstenasti pokrivač ovako dobivenog skupa bit će reduciran. Približno D-reducirani prstenasti pokrivač G4 = {(BF,C)→ ADE} Prirodni karakteristični pokrivač od G4 = {BF→ACDE, C→ABDEF} Desno reduciranje u ovom primjeru (kao i u većini slučajeva) neće promijeniti stanje Reducirani prstenasti pokrivač G = {(BF,C)→ADE)} 3) Treba odrediti reducirani prstenasti pokrivač G zadanog skupa FZ F. a)F = {BD→C, BH→CG, D→AH, H→DE} Rješenje: G1 = {BH→CG, D→AH, H→DE} G2 = {BH→CG, D→AH, H→DE} G3 = {(BH)→CG, (D, H) →ADEH} G4 = {(BH)→CG, (D,H) →AE} G5 = {BH→CG, D→AEH, H→ADE} G = {(BH)→CG, (D,H)→AE} b) F = {ACF→B, B→ADFE, C→AB, CE→BDF, DF→EG} Rješenje: G1 = {B→ADFE, C→AB, DF→EG} G2 = {B→ADFE, C→AB, DF→EG} G3 = {(B) →ADFE, (C) → AB, (DF) →EG} G4 = {(B) →ADFE, (C) →AB, (DF) →EG}
104 G5 = {B→ADFE, C→AB, DF→EG} G6 = {B→ADF, C→B, DF→EG} G = {(B) →ADF,(C) →B, (DF) →EG}
10.10. ATRIBUTI KOJI NISU NEOPHODNI Atributi sadržani u članovima lijeve strane SFZ prošli su kroz postupak lijevog reduciranja i ne mogu biti uklonjeni iz SFZ bez promjene ekvivalencije SFZ. Meñutim, u nekim slučajevima, moguće je modificiranjem pojedinih članova lijeve strane SFZ izbaciti atribut iz SFZ bez promjena ekvivalencije čitavog skupa SFZ. Naime, atribut ili grupu atributa koji su sadržani u nekom članu lijeve strane SFZ moguće je zamijeniti s ekvivalentnom grupom atributa bez promjene ekvivalencije skupa SFZ. Ukoliko je ta ekvivalentna grupa sadržana u SFZ, ova zamjena imat će za posljedicu smanjenje ukupnog broja atributa u SFZ (Ling, Tompa i Kameda, 1981). Promotrimo to na jednom primjeru. Primjer Neka je zadan skup FZ F = {A→B, B→A, AC→DE, BD→C}. F je minimalan, pa prema tome i neredundantan, i reduciran. Zatvarači lijevih strana FZ u F i klase ekvivalencija su: A F+ = AB BF+ = AB ABCDE ACF+ = BDF+ = ABCDE {A→B, BFA} EF (A) = EF(AC) = {AC→DE, BD→C} Prstenasti pokrivač skupa F je skup G = (A, B), (AC, BD) →E} Pogledajmo drugu SFZ u G. U prvom članu lijeve strane (AC) sadržan je atribut A. U istoj klasi ekvivalencije nalazi se i atribut B. Ako u članu AC atribut A zamijenimo s atributom B, dobit ćemo grupu atributa BC. Skupovi atributa AC i BC meñusobno su ekvivalentni, što možemo provjeriti tako da u skupu F zamijenimo lijevu stranu zavisnosti AC→DE s BC i nañemo zatvarače. Zamjenom atributa dobili smo skup FZ F' = {A→B, B→A, BC→DE, BD→C}. AF'+ BF'+ ACF'+ BCF'+ BDF'+ BCF'+
= = = = = =
AB AB ABCDE ABCDE ABCDE ABC
Nakon zamjene atributa A u prvom članu SFZ (AC, BD) →E atributom B, SFZ će imati slijedeći izgled (BC, BD) →E. Skup atributa na kojem je zadana SFZ smanjio se za atribut A. Time je promijenjena ekvivalencija SFZ. Meñutim, ono što je za nas važno, nije promijenjena ekvivalencija skupa SFZ.
105
11. GRAFIČKE METODE ZA RAD SA SKUPOM FUNKCIJSKIH ZAVISNOSTI Prije nego što kažemo nešto više o grafičkom prikazu skupa funkcijskih zavisnosti, ukratko ćemo se osvrnuti na neke pojmove iz teorije grafova koji će nam biti potrebni. Usmjereni graf G je par (L, V) u kojem V predstavlja konačan, neprazan skup čije elemente nazivamo vrhovima, a L je konačan mnogoskup (elementi mnogoskupa ne moraju obavezno biti meñusobno različiti) ureñenih parova vrhova (i, j) koje nazivamo lukovima. Luk polazi od prvog i ukazuje na drugi element ureñenog para. Staza je niz uzastopnih, istosmjernih lukova koji povezuju dva vrha u grafu.
11.1. GRAFIČKI PRIKAZ SKUPA FUNKCIJSKIH ZAVISNOSTI Zbog preglednosti, svi skupovi FZ koji se dalje u tekstu spominju, transformirani su tako da zadovoljavaju slijedeće uvjete: - U skupu ne postoje dvije različite FZ X→Y i Z→W za koje vrijedi X = Z (tj. ne postoje dvije FZ s jednakom lijevom stranom). Za svaku FZ X→Y u skupu vrijedi X ∩Y = ∅. Na osnovi pravila unije, dvije FZ, čije lijeve strane su jednake, mogu se zamijeniti jednom FZ (tj. X→Y ∧ X→W ⇒ X→WY). FZ koje proizlaze iz aksioma refleksivnosti trivijalne su FZ. Ovakve FZ vrijede uvijek i nema potrebe da lijeva strana (ili pojedini atributi sadržani u lijevoj strani) FZ bude navedena i u desnoj strani. Primjenjujući ove transformacije, ukupan broj FZ u skupu bit će značajno smanjen, a isto tako i ukupan broj atributa navedenih u desnim stranama FZ. Primjer Neka je F = {A→B, A→C, A→D, B→BC, AB →AE}. Treba transformirati skup FZ F tako da zadovoljava gornje uvjete. 1) Na osnovi pravila unije, prve tri FZ u F (A→B, A→C, A→D) možemo zamijeniti s FZ A→BCD. 2) Eliminacijom trivijalnih zavisnosti B→B i AB→A iz preostale dvije FZ u F (B→BC, AB →AE), dobit ćemo FZ B→C i AB→E. Ovim transformacijama dobili smo pokrivač skupa FZ F, F' = {A→BCD, B→C, AB→E}. Skup F' zadovoljava postavljene uvjete. Općenito, vrhovi u grafu odgovaraju atributima ili podskupovima atributa. Pomoću lukova prikazujemo funkcijsku zavisnost. Crtkani lukovi koriste se za prikaz trivijalnih funkcijskih zavisnosti. Pogledajmo na koji način ćemo, polazeći od nekog skupa FZ doći do grafičkog prikaza tog skupa: Neka je F skup FZ zadan na skupu atributa R. Graf skupa F, GF = (V, L) konstruiramo na slijedeći način: 1) Za svaki atribut A, za koji vrijedi A ∈ R, u grafu mora postojati odgovarajući vrh u skupu V (vrh je označen nazivom atributa). Ovakve vrhove (koji odgovaraju pojedinim atributima u R) smatrat ćemo jednostavnim vrhovima. 2) Za svaku FZ X→Y u F, za koju vrijedi X> 1 (tj. čija lijeva strana sadrži više od jednog atributa), u skupu V mora postojati vrh označen s X. Ovakav vrh smatrat ćemo sastavljenim vrhom. 3) Za svaku FZ X→Y u F, za koju vrijedi Y = A 1, ..., Ak, u skupu L mora postojati k punih lukova koji polaze iz vrha X i ukazuju na jednostavne vrhove A1, ..., Ak.
106 4) Za svaki sastavljeni vrh X, za koji vrijedi X = A 1,..., Am, u skupu L mora postojati m crtkanih lukova koji polaze iz vrha X i ukazuju na jednostavne vrhove A1,..., Am. Jednostavni vrhovi A1,..., Am komponente su sastavljenog vrha X. Postupak konstruiranja FZ grafa ilustrirat ćemo slijedećim primjerom: Primjer Skup FZ F = {AE→BCD, E→GH} zadan je na skupu atributa R {A, B, C, D, E, G, H}. Za skup F treba konstruirati FZ graf GF. a)
b) C
C
B
D
B
D AE
G A
G
E
A
E
H
H
b)
d) C
C
B
D
B
D
AE
AE G
A
G
E
A H
E H
Slika 11.1 Konstrukcija FZ grafa Ranije smo definirali pojam staze u usmjerenom grafu. Definirat ćemo sad FZ stazu. Kao što ćemo vidjeti, izmeñu ova dva pojma postoji odreñena razlika. Svaka staza je ujedno i FZ staza. Obrat ne vrijedi. Neka je GF = (V, L) graf koji odgovara skupu FZ F. Neka su vrhovi i, j∈V. FZ staza i, j) minimalni je podgraf G'F =(V', L') od GF za koji vrijedi i, j∈V', i jedna od mogućnosti: a) Luk (i, j) ∈L', b) Vrh j jednostavan je vrh i postoji vrh k za koji vrijedi k∈V', luk (k, j) ∈L', i u podgrafu G'F postoji FZ staza (i , k), c) Vrh j sastavljen je vrh s komponentama m1,...,mr. Crtkani lukovi (j, m1) ,...,(j, mr ) su elementi mnogoskupa L'. U podgrafu G'F sadržane su FZ staze (i, m1),...,(i, mr). Shematski prikaz FZ staze dan je na slici 11.2 a)
i
j
b)
i
k
c)
j
m1 i
m2
j
m3 Slika 11.2 Shematski prikaz FZ staze S obzirom na to da FZ staza (i, j) predstavlja minimalni podgraf, unutar nje ne može postojati pravi podgraf koji bi bio FZ staza (i, j).
107 Kao što je spomenuto, svaka je staza u usmjerenom grafu ujedno i FZ staza. Obrat ne vrijedi, jer crtkani lukovi u FZ stazi (ukoliko oni postoje) mogu imati smjer suprotan smjeru punih lukova u FZ stazi. Definirat ćemo pojam pune i crtkane FZ staze: FZ stazu (i, j) smatramo crtkanom ako su svi lukovi koji polaze iz vrha i crtkani. Ukoliko ovaj uvjet nije ispunjen, FZ staza se smatra punom. Primjeri FZ grafa s crtkanom i punom stazom prikazani su na slikama 11.3a. i 11.3b. a) Crtkana FZ staza (ABC, G) B
D
ABC C
DF
G
DF
G
F
a) Puna FZ staza (ACE, G) D ACE C
F
Slika 11.3. Primjeri FZ grafa sa crtkanom i punom stazom Sastavljeni vrh, bez ijednog punog luka koji iz njega polazi, može biti početni ili završni luk u FZ stazi. U FZ grafu GF = (V, L), L je mnogoskup lukova koji može biti podijeljen na dva podskupa: podskup crtkanih i podskup punih lukova. Ako s L označimo ukupan broj lukova u mnogoskupu L (odnosno s Lci Lp broj lukova u podskupovima), onda vrijedi: L = Lc + Lp Skup crtkanih lukova Lc približno odgovara podskupu trivijalnih FZ u zadanom skupu FZ (izostavljene su trivijalne FZ tipa X→X). Trivijalne FZ imaju značajnu ulogu u procesu logičkog izvoñenja FZ. To je razlog zbog kojeg su one sastavni dio grafičkog prikaza skupa FZ. Ukoliko u L postoji crtkani luk (i, j) i puni luk (i, j), puni luk je redundantan i može biti odstranjen iz grafa bez promjene ekvivalencije skupa FZ koji graf prikazuje. Neka je GF graf skupa FZ F, neka je Fl ukupan broj atributa u lijevim stranama svih FZ u F, a Fd ukupan broj atributa u desnim stranama svih FZ u F. Ukupan broj crtkanih lukova u GF jednak je ili manji od ukupnog broja atributa u lijevim stranama svih FZ u F (tj. Lc ≤ Fl). Naime, ukupan broj crtkanih lukova jednak je ukupnom broju atributa u sastavljenim vrhovima grafa. Ukupan broj punih lukova u GF jednak je ukupnom broju atributa u desnim stranama svih FZ u F (tj. Lp = Fd).
108
11.2. ZATVARAČ FZ GRAFA Zatvarač FZ grafa GF, koji sada možemo definirati, jest graf GF+ = (V, L+). Broj vrhova u zatvaraču GF+ jednak je broju vrhova u grafu GF. Za mnogoskup lukova u zatvaraču L+ vrijedi L+ = Lc+ + Lp+ , i definiramo ga na slijedeći način: Lc+ = {(i,j): i, j ∈ V i postoji crtkana FZ staza (i,j) u L} Lp+ = {(i,j): i, j ∈ V ∧(i,j) ∉ Lc+ i postoji puna FZ staza (i,j) u L} Obratimo pažnju na činjenicu da će crtkani luk (i, j) biti uključen u zatvarač, bez obzira na to da li postoji puni luk (i, j). Nasuprot tome, puni luk (i, j) bit će uključen u zatvarač samo ako ne postoji odgovarajući crtkani luk. b) FZ graf GF+
a) FZ graf GF H
BDF
H
F A
BDF
F B
A
B
E
E
BD
BD
C
C D
D
Slika 11.4 Zatvarač FZ grafa Zatvarač FZ grafa, za razliku od zatvarača skupa FZ, sadrži prikaze samo onih FZ koje su potrebne za logičko izvoñenje. On ne sadrži prikaz redundantnih FZ i ne predstavlja grafički prikaz zatvarača skupa FZ. Neka je F skup FZ i F+ zatvarač od F, te neka je GF FZ graf od F i GF+ = (V,L+) zatvarač od GF. Luk (i,j) može biti sadržan u L+ samo ako u F+ postoji FZ čija lijeva strana odgovara vrhu i, a desna vrhu j u skupu V.
11.3. EKVIVALENCIJA FZ GRAFOVA Neka su GF i GG FZ grafovi skupova FZ F i G. Smatramo da su grafovi GF i GG meñusobno ekvivalentni (označavamo kao GF ≡ GG) ako i samo ako su skupovi FZ F i G meñusobno ekvivalentni. Graf GF smatramo pokrivačem grafa GG (i obratno) ako vrijedi GF ≡ GG.
11.4. REDUNDANTNI VRHOVI U FZ GRAFU Jednostavni vrh ne može biti redundantan u FZ grafu. Sastavljeni vrh i u grafu GF redundantan je ako za svaki puni luk (i, j) u grafu postoji FZ crtkana staza (i, j). Ako postoji crtkana staza (i, j), ona ne sadrži puni luk (i,j), jer inače ne bi bila crtkana. Crtkana staza (i,j) implicira redundantnost punog luka (i,j). Puni luk u tom slučaju može biti odstranjen iz grafa bez promjene zatvarača grafa. Naravno, ako su
109 svi puni lukovi koji polaze iz sastavljenog vrha i redundantni, onda i vrh i može biti odstranjen iz grafa bez promjene zatvarača grafa. Graf GF smatramo redundantnim ako u njemu postoji bar jedan redundantni vrh. U neredundantnom grafu nema redundantnih vrhova (ali mogu postojati suvišni vrhovi, koji će kasnije biti definirani). Kasnije ćemo definirati i redundantne lukove).
Algoritam za utvrñivanje redundantnosti vrha FZ grafa ULAZ: Graf GF = (V,L), i vrh i. IZLAZ: ISTINA ako je vrh i redundantan, inače LAŽ Postupak: 1) v:= ISTINA; 2) Ako je vrh i jednostavan vrh v:= LAŽ) 3) Za svaki puni luk koji polazi iz sastavljenog vrha i luka (i, j) učinite: ustanovite da li postoji crtkana FZ staza (i, j). Ako crtkana FZ staza ne postoji v:= LAŽ 4) Ako je v = ISTINA vrh i je redundantan u FZ grafu GF.
Algoritam za odreñivanje neredundantnog pokrivača FZ grafa ULAZ: Graf GF = (V,L). IZLAZ: Neredundantni pokrivač GF’ = (V',L'). Postupak: 1) Ako su svi vrhovi u grafu GF jednostavni, graf je neredundantan. 2)Ispitajte sastavljeni vrh grafa GF s najvećim brojem atributa i ukoliko je redundantan, izbacite ga iz grafa. 3) Ponovite korak 2) za svaki sastavljeni vrh grafa GF. 4) Graf GF' = (V',L'), koji je preostao nakon koraka 3), je neredundantni pokrivač grafa GF. Ekvivalenciju dva skupa FZ moguće je utvrditi pomoću algoritma EKVIV ili preko zatvarača skupova atributa. Neka su F i G dva skupa FZ. Za lijeve strane strane svih FZ u F i svih FZ u G odredit ćemo zatvarače skupa atributa s obzirom na F, a zatim na G. Ako su zatvarači za svaki pojedini skup atributa s obzirom na F jednaki zatvaračima s obzirom na G, za skupove F i G vrijedi F ≡ G. Mi ćemo se ovom metodom koristiti za kontrolu ekvivalencije FZ grafova. Primjer Zadan je skup FZ F = {A→B. ADF→EG, BC→G, DF→CE}. Treba naći FZ graf GF i neredundantni pokrivač grafa GF'. Rješenje je na slikama 11.5. i 11.6. FZ graf GF DF
D
C
F
E
ADF
G A
Slika 11.5 FZ graf
BC B
110 Sastavljeni vrh s najvećim brojem atributa je vrh ADF. Iz njega polaze dva puna luka (ADF→E i ADF→G). Za puni luk (ADF,E) vrijedi da je redundantan jer postoji crtkana staza (ADF,E). Naime, sastavljeni vrh ADF je, preko crtkanih lukova, spojen s jednostavnim vrhovima D i F, a oni su crtkanim lukovima spojeni sa sastavljenim vrhom DF. U grafu GF postoji puni luk (DF,E). Dakle, u grafu GF postoji crtkana staza (ADF,E). Na sličan način možemo dokazati da u grafu GF postoji crtkana staza (ADF,G), pa je, prema tome, i puni luk (ADF,G) redundantan. Budući da su svi puni lukovi koji polaze iz vrha redundantni, redundantan je i sam vrh ADF. Sastavljeni vrh DF, nakon izbacivanja vrha ADF, nije redundantan. Sastavljeni vrh BC nije redundantan ni prije izbacivanja vrha ADF. Iz FZ grafa GF moramo odstraniti redundantni vrh ADF sa svim lukovima koji polaze iz njega da bismo dobili neredundantan graf GF' . FZ graf GF’ DF
D
C
F
E
G A
BC B
Slika 11.6 Neredundantni FZ graf Provjerit ćemo da li su grafovi GF i GF’ meñusobno ekvivalentni. Prema definiciji, uvjet za njihovu ekvivalenciju, je ekvivalencija odgovarajućih skupova FZ. Graf GF odgovara zadanom skupu FZ F. Graf GF' odgovara skupu FZ F' = {A→B, BC→G, DF→CE}. Zatvarači skupa atributa s obzirom na : skup FZ F su A+ = AB ADF+ = ABCDEFG BC+ = BCG DF+ = CDEF
skup FZ F' su A+ = AB ADF+ = ABCDEFG BC+ = BCG DF+ = CDEF
Kao što vidimo, zatvarači skupova atributa s obzirom na F jednaki su zatvaračima skupova atributa s obzirom na F'. Prema tome vrijedi F ≡ F', odnosno GF ≡ GF’.
11.5. EKVIVALENCIJA VRHOVA I KLASE EKVIVALENCIJE U FZ GRAFU Neka su i i j dva vrha u grafu GF. Smatramo da su ti vrhovi meñusobno ekvivalentni (označavamo s i ≡ j) ako u zatvaraču grafa GF+ postoje lukovi (i, j) i (j, i). Neka su GF i GG dva FZ grafa, i neka je vrh i sadržan u grafu GF,a vrh j u grafu GG. Smatramo da vrijedi i ≡ j ako vrijedi: -
GF ≡ GG (odnosno GF+ = GG+). U zatvaraču ova dva grafa postoje lukovi (i, j) i (j, i).
111 Neka je GF FZ graf. Klasa ekvivalencije u GF je najveći podskup meñusobno ekvivalentnih vrhova u GF. Zbog tranzitivnosti ekvivalencije niti jedan vrh grafa ne može istovremeno biti element dvije različite klase ekvivalencije.
11.6. SUVIŠNI VRH Neka je GF = (V,L) FZ graf. Sastavljeni vrh grafa i smatrat ćemo suvišnim ako vrijedi: -
postoji vrh j ∈ V, za koji vrijedi i ≡ j, i zamjena svakog punog luka (i, k) ∈ L, punim lukom (j, k) ne mijenja zatvarač GF+.
Promotrimo detaljnije u kojim uvjetima može biti ispunjen drugi uvjet iz definicije suvišnog vrha. S obzirom na to da u GF vrijedi i ≡ j, u GF+ moraju postojati lukovi (i, j) i (j, i). Kako je vrh i po definiciji sastavljen, nijedan puni luk (uključujući eventualno i luk (j, i)) ne može ukazivati na njega. Umjesto toga, svi puni lukovi ukazuju na komponente sastavljenog vrha i. Kad izbacimo iz grafa vrh i, njegove komponente i dalje ostaju u grafu zajedno s punim lukovima koji na njih ukazuju. Preostaje, dakle, da razmotrimo što je s punim lukovima koji polaze iz sastavljenog vrha i. Luk (i, j) će ostati sačuvan samo ako u zatvaraču grafa postoji crtkana staza (i, j). Tu su moguća dva slučaja: 1) Luk (i, j) u grafu GF je crtkan. Kao što znamo, crtkani luk odgovara trivijalnoj FZ, i izbacivanje vrha i iz grafa neće imati za posljedicu promjenu zatvarača. 2) Luk (i, j) je pun, a pored toga postoji crtkana staza (i, j). Puni luk je prema tome redundantan u grafu GF i njegovo odstranjivanje neće izazvati promjenu zatvarača grafa. Pored toga, svi puni lukovi sadržani u crtkanoj stazi (i, j) ostaju u grafu i nakon izbacivanja vrha i. m1 j
m2
i
m3 Slika 11.7 Crtkana FZ staza (i, j) Prema definiciji suvišnog vrha, svaki puni luk (i, j) moramo u grafu zamijeniti s punim lukom (j, k). U zatvaraču grafa puni luk (j, k) izvodi se na osnovu tranzitivnosti lukova (j, i) i (i, k). Izbacivanjem vrha i izbačen je i luk (i, k), pa u zatvaraču ne može više biti izveden luk (j, k). Da bismo spriječili promjenu zatvarača, moramo (ukoliko u grafu GF, nakon što je izbačen vrh i, ne postoji luk (j, k) ili staza (j, k)) puni luk (i, k) nadomjestiti punim lukom (j, k). Sada definiciju suvišnog vrha možemo zamijeniti nešto jednostavnijom: Sastavljeni vrh i FZ grafa GF = (V,L) smatramo suvišnim ako vrijedi: - postoji vrh j za koji vrijedi i ≡ j, i - postoji crtkana staza (i, j).
Primjer Neka je zadan skup FZ F = {AB→E, CD→F, A→C, B→D, C→A, D→B, F→AD}, i neka je GF FZ graf skupa F (vidi slika 11.8.). Treba naći i odstraniti sve suvišne vrhove iz grafa GF.
112 A C E
AB
CD B
F
D
Slika 11.8 FZ graf Za vrhove AB, CD, i F u grafu GF vrijedi AB≡CD≡F. Pored toga, postoje crtkane staze (AB,CD) i (CD,AB). Dakle, jedan od sastavljenih vrhova (AB, CD) može biti odstranjen kao suvišan (nakon toga onaj preostali više neće biti suvišan). a) Odstranjen suvišan vrh AB
b) Odstranjen suvišan vrh CD
A
A C
E
C CD
B
F
E
D
AB
F B
D
Slika 11.9 FZ graf bez suvišnih vrhova
11.7. MINIMALAN FZ GRAF FZ graf GF = (V,L) minimalan je ako ne postoji pokrivač od GF s manjim brojem vrhova. Ova definicija minimalnog grafa ne obećava brzu i jednostavnu metodu za pronalaženje minimalnog grafa. Da vidimo što se može učiniti. Minimalan graf sigurno ne smije sadržavati redundantne i suvišne vrhove. Sastavljeni vrh u grafu, iz kojeg polazi puni luk, odgovara FZ u skupu FZ (FZ koja u lijevoj stani ima više od jednog atributa). O redoslijedu pronalaženja i izbacivanja redundantnih FZ u F ovisi koje i koliko FZ ćemo moći izbaciti iz F. Slično tome, o redoslijedu pronalaženja i izbacivanja redundantnih vrhova iz FZ grafa ovisi koje i koliko vrhova ćemo moći izbaciti. U algoritmu za traženje neredundantnog grafa polazimo od sastavljenog vrha s najvećim brojem atributa. Taj redoslijed, (kao ni bilo koji drugi) ne osigurava da ćemo iz grafa izbaciti najveći broj vrhova. Pronalaženjem i izbacivanjem suvišnih vrhova riješit ćemo taj problem. Algoritam za traženje minimalnog pokrivača grafa sastoji se od algoritma za traženje neredundantnog pokrivača grafa i algoritma za traženje i izbacivanje suvišnih vrhova. S obzirom na to da smo se već upoznali s algoritmom za traženje neredundantnog pokrivača grafa, izostavit ćemo taj dio algoritma (uzet ćemo da je ulaz u ovaj algoritam neredundantni graf) i koncentrirati se na pronalaženje i odstranjivanje suvišnih vrhova.
Algoritam za pronalaženje minimalnog pokrivača grafa ULAZ: Neredundantni pokrivač grafa GF = (V,L). IZLAZ: Minimalni pokrivač grafa GF' = (V',L'). Postupak: 1) Nañite zatvarač grafa GF+ = (V,L); 2) Nañite klase ekvivalencije u V; 3) Ako sve klase ekvivalencije sadrže samo po jedan vrh, ili sadrže samo
113 jednostavne vrhove, graf GF je minimalan i postupak je završen; 4) Za svaku klasu ekvivalencije koja sadrži više elemenata, od kojih je najmanje jedan sastavljeni vrh, utvrdite koji od elemenata klase ispunjavaju uvjete za suvišan vrh (unutar klase ekvivalencije da bi vrh i bio kandidat za suvišan vrh mora ispunjavati slijedeće uvjete: - Vrh i je sastavljen vrh. - Postoji crtkana staza (i, j), pri čemu je j bilo koji element klase ekvivalencije. Ovakvi elementi su kandidati za suvišni vrh. Unutar klase ekvivalencije odredite jedan element (j) koji će biti predstavnik klase (predstavnik klase treba biti vrh koji nije kandidat, ili ako su svi elementi klase kandidati, onda vrh s najmanjim brojem atributa). 5) Kandidat za suvišni vrh s najvećim brojem atributa (i) treba izbaciti iz grafa. Za sve lukove (i, k) za koje ne postoji staza (j, k) nakon izbacivanja vrha i treba dodati puni luk (j, k) u graf; 6) Za svaku klasu ekvivalencije ponovite korake 4) i 5) za svaki vrh u klasi koji nije jednostavan vrh i koji nije predstavnik klase; 7) Dobiveni rezultat je minimalni pokrivač graf GF' = (V',L'). Uvjet za redundantnost vrha i u FZ grafu je da za svaki puni luk (i, k) koji polazi iz vrha i postoji crtkana staza (i, k). Uvjet da je vrh i u grafu suvišan je da postoji ekvivalentan vrh ) i, te da u zatvaraču grafa postoji crtkana staza (i, j). Ako je ispunjen uvjet za suvišni vrh, bit će ispunjen i uvjet za redundantnost. Obrat ne vrijedi.
11.8. LD-MINIMALNI FZ GRAF Neka je F skup FZ, neka je GF FZ graf od F. Graf GF smatramo LD-minimalnim ako je minimalan i ako je reduciran (LD-reduciran). Smatramo da je skup FZ F reduciran ako su sve FZ u F lijevo i desno reducirane, tj. ne sadrže nijedan suvišni atribut ni u lijevoj ni u desnoj strani. Da bismo našli LD-minimalni pokrivač nekog FZ grafa GF moramo prvo naći minimalni pokrivač grafa GF i zatim odstraniti sve redundantne lukove u njemu. Redundantni mogu, u principu, biti i crtkani i puni lukovi: - crtkani luk (i, j) redundantan je ako u zatvaraču grafa postoji crtkana staza (i, j) koja ne sadrži crtkani (i, j) luk. - puni luk (i, j) redundantan je ako u zatvaraču grafa postoji FZ staza (i, j) (crtkana ili puna) koja ne sadrži puni luk (i, j). Razmotrimo u kakvom odnosu stoje suvišni atributi u desnoj strani zavisnosti u skupu FZ F prema redundantnim lukovima u GF. Neka je GF minimalni graf skupa FZ F i neka je FZ X→Y element od F. FZ X→Y, čija desna strana predstavlja podskup atributa (Y = {A1,...,An }), u GF prikazujemo pomoću n punih lukova koji polaze iz vrha X i ukazuju na komponente vrha Y. Puni luk u grafu odgovara atributu u desnoj strani FZ. Odstranjivanjem redundantnih punih lukova u GF, odstranit ćemo i suvišne atribute u desnoj strani svih FZ u skupu F (desno reduciranje FZ). Preostaje nam da razmotrimo u kakvom odnosu stoje suvišni atributi u lijevoj strani zavisnosti u F s redundantnim lukovima u GF. Neka je, kao i u prethodnom slučaju, GF minimalni FZ graf skupa FZ F i neka je FZ X→Y element od F. Za zavisnost X→Y vrijedi X = {A1,...,Am}. Budući da je graf neredundantan (tj. ne sadrži suvišne vrhove), atribut A1 može biti suvišan u lijevoj strani FZ samo ako u F+ postoji FZ Z→A1 (Z = {A2,...,Am}), odnosno ako u GF postoji crtkana staza (i, j), gdje vrh i odgovara skupu atributa {A1,...,Am}, a vrh j atributu A1, te ako ta crtkana staza ne sadrži crtkani luk (i, j). Na slici 11.10. nalazi se skica ovakvog odnosa.
114
A1A2A3 A1
A2
A3
A2A3 Slika 11.10 Suvišni atribut A1 u vrhu A1A2A3
Algoritam za pronalaženje LD-minimalnog pokrivača grafa ULAZ: Minimalni pokrivač grafa GF = (V,L). IZLAZ: LD-minimalni pokrivač GF' = (V,L'). Postupak: 1) Nañite zatvarač GF+ grafa GF; 2) Odredite klase ekvivalencije i odredite predstavnika za svaku klasu; 3) Modificirajte graf GF tako da svaki puni luk (i, j) izmeñu vrhova koji pripadaju različitim klasama zamijenite lukovima izmeñu predstavnika tih klasa. Zatim povežite sve elemente iste klase lukovima u prsten (Hamiltonov prsten); 4) Iz ovako modificiranog grafa odstranite sve redundantne lukove; 5) Dobiveni rezultat je LD-minimalni pokrivač GF';
Primjer Neka je skup FZ F = {ABC→E, BD→AG, C→D, E→FH, F→ABCEH, G→A}. Treba naći LD-minimalni pokrivač FZ grafa GF. E
ABC
H C F B A
D BD
G Slika 11.11 Minimalni FZ graf s klasama ekvivalencije ABC ≡ E ≡ F, A B BD, C, G, H E
ABC
C F B A Slika 11.12 Hamiltonov prsten za klasu {ABC, E, F}
115 E
BC
H C F B A
D BD
G Slika 11.13 LD-minimalni pokrivač FZ grafa Promotrimo postupak odstranjivanja redundantnih lukova. Puni luk (BD,A) redundantan je, jer postoji puna staza (BD,A) preko vrha G. Njegovim odstranjivanjem bit će odstranjen suvišni atribut A u desnoj strani FZ BD →AG. Crtkani luk (ABC,A) je redundantan jer postoji crtkana staza (ABC,A) preko vrhova D, BD, i G. Odstranjivanje crtkanog luka (ABC,A) povlači za sobom odstranjivenje atributa A iz sastavljenog vrha ABC (lijeve strane zavisnosti ABC→E). Puni luk (F,A), koji je bio dio sustava veza s kojim su elementi klase povezani u prsten, više nije potreban. Odstranjivanjem ovog punog luka bit će odstranjen suvišni atribut u desnoj strani zavisnosti F→ABCEH. a) A BD G b) ABC
C F B A
D BD
G Slika 11.14 Redundantni lukovi u FZ grafu
116
117
12. NORMALIZACIJA Metoda oblikovanja baze podataka poznata pod nazivom normalizacija, razvijena je u okviru relacijskog modela podataka. Kao što je spomenuto, teoretske osnove relacijskog modela podataka postavio je Codd (1970). Praktično istovremeno s relacijskim modelom, Codd je definirao i osnove normalizacije. Prema Coddu (1972b), osnovni cilj relacijskog modela je zaštita korisnika baze podataka i omogućavanje lakšeg i jednostavnijeg pristupa podacima u bazi. U relacijskom modelu to se postiže, izmeñu ostalog, tako da se: - sprečavaju anomalije održavanja podataka u bazi, - na minimum svede potreba za reorganizacijom, izazvana unošenjem novih tipova podataka u bazu, - omogući bolje korištenje informacija pohranjenih u bazu. U ostvarivanju tih ciljeva značajna uloga pripada oblikovanju baze podataka (tzv. normalizaciji). Zahvaljujući solidnim matematičkim osnovama relacijskog modela, normalizacija predstavlja egzaktnu metodu za oblikovanje baze podataka. Metoda osigurava fleksibilnost i neometano širenje tako oblikovane baze podataka. Jedan od osnovnih ciljeva normalizacije je eliminacija redundancije u bazi, odnosno, njeno svoñenje na tzv. kontroliranu redundanciju. Istraživanja u okviru relacijskog modela pokazala su da su - nekontrolirana redundancija, - anomalije održavanja podataka, pa čak i - varijabilna dužina n-torke u relaciji odraz semantičkih odnosa meñu atributima unutar relacijske sheme.
Redundancija Memoriranje više kopija iste informacije u bazi podataka može, u nekim slučajevima, povećati brzinu obrade. Na primjer, ako u logičkom slogu radnika memoriramo sve informacije potrebne za obračun osobnog dohotka tog radnika (informacije o radnim zadacima na kojima je radnik radio u proteklom periodu, informacije o općini u kojoj radnik boravi itd.), onda će nam za obračun osobnog dohotka radnika biti dovoljno da učitamo jedan jedini logički slog iz baze podataka. Ako su potrebne informacije rasporeñene u nekoliko logičkih slogova, bit će potrebno izvesti nekoliko učitavanja. Budući da su ulazno-izlazne operacije najsporije operacije u kompjuterskoj obradi podataka, jasno je da se time značajno povećava vrijeme obrade. Dok je kapacitet kompjutera bio skroman a cijena visoka, jedan od važnijih ciljeva projektiranja informacijskog sustava bio je svoñenje potrebnih kompjuterskih resursa na minimum. S druge strane, ovakvo rješenje izaziva niz problema. Jedan od njih je i redundancija podataka. Podaci o radnom zadatku na kojem je radilo tridesetak radnika moraju se memorirati u tridesetak kopija, podaci o općini u kojoj boravi nekoliko tisuća radnika u nekoliko tisuća kopija itd. Ovako velik broj kopija čini njihovo održavanje izuzetno teškim. Tzv. anomalije održavanja podataka posljedica su, u pravilu, ovakve nekontrolirane redundancije.
Anomalije održavanja Pod anomalijama održavanja podrazumijevamo: - potencijalnu inkonzistenciju, - anomaliju dodavanja i - anomaliju brisanja podataka u bazi. Svaka od ovih anomalija manifestira se na specifičan način a, kao što je spomenuto, njihov zajednički uzrok je nekontrolirana redundancija.
118 Potencijalna inkonzistencija najuočljivija je posljedica nekontrolirane redundancije. Kod ažuriranja informacije, koja je u bazi podataka memorirana u više kopija, uvijek postoji mogućnost da neka od kopija ostane neažurirana (što je veći broj kopija to je ova mogućnost veća). Nakon toga ćemo u bazi podataka imati o istom svojstvu odreñenog entiteta dvije različite tvrdnje, od kojih jedna sigurno nije istinita. Ovakvo stanje naziva se inkonzistencija baze podataka. Anomalija dodavanja javlja se u onim slučajevima kad su informacije koje opisuju svojstva jednog entiteta, memorirane u bazi kao dio opisa nekog drugog entiteta. Uzmimo, na primjer, da su informacije o dobavljačima koji nam proizvod isporučuju, memorirane u okviru opisa proizvoda. Informacije o dobavljaču ne mogu se unijeti u bazu tako dugo dok nije memoriran bar jedan proizvod koji nam taj dobavljač isporučuje. S obzirom na to da se prikupljanje informacija o proizvodima koji su nam potrebni odvija potpuno nezavisno od prikupljanja informacija o dobavljačima tog proizvoda, ovakvo rješenje može imati vrlo neugodne posljedice kao što je, na primjer, gubitak informacija o dobavljačima. Anomalija brisanja je inverzija anomalije dodavanja (samo mnogo opasnija). Poslužit ćemo se opisom svojstava proizvoda u okviru kojeg su memorirani opisi dobavljača (preko kojeg proizvod nabavljamo). Svakim brisanjem opisa nekog proizvoda brišu se i podaci o dobavljaču. Kad bude obrisan opis zadnjeg proizvoda koji nam neki dobavljač u odreñenom momentu isporučuje, bit će obrisana i zadnja kopija podataka o dobavljaču. Kako kod brisanja podataka o proizvodu, u pravilu, ne mislimo na to da pri tome brišemo i podatke o nekim drugim entitetima, na ovaj način je moguće nenamjerno i elegantno uništiti podatke koji su nam potrebni i važni i čije ponovno kreiranje može oduzeti mnogo vremena i stojati mnogo novaca.
Varijabilna dužina n-torke Slično kao i redundancija, i varijabilna dužina n-torke u bazi sama po sebi nije anomalija i može (pod odreñenim uvjetima) biti vrlo korisna. S druge strane, rukovanje sa zapisima varijabilne dužine izaziva niz problema. Interesantan je, meñutim, način na koji se problem varijabilne dužine tretira u relacijskom modelu i literaturi o relacijskom modelu. U odnosu na način na koji se tretira problem redundancije uočljive su dvije bitne razlike: - relacijski model, u odreñenoj mjeri dozvoljava redundanciju u bazi podataka (tzv. kontrolirana redundancija). Varijabilnu dužinu zapisa relacijski model ne dozvoljava ni pod kakvim uvjetima. - druga razlika sastoji se u načinu na koji se u literaturi objašnjava potreba sprečavanja redundancije i varijabilne dužine zapisa. Dok se potreba sprečavanja redundancije iscrpno obrazlaže nizom argumenata, argumenti za sprečavanje varijabilne dužine zapisa su, u najmanju ruku, nepotpuni. Prije nego što kažemo nešto više o samoj normalizaciji moramo definirati osnovne pojmove s područja relacijskog modela, elemente teorije zavisnosti (račun funkcijskih zavisnosti) i grafičke metode za rukovanje sa skupom funkcijskih zavisnosti.
12.1. METODE NORMALIZACIJE Svojstva relacije ovise o semantičkim odnosima meñu atributima unutar relacijske sheme. Ograničavanjem tih odnosa na odreñene tipove zavisnosti koje mogu (ili moraju) postojati meñu atributima u relacijskoj shemi, može se postići da relacije zadane na toj relacijskoj shemi nemaju nepoželjna svojstva, odnosno da imaju neka poželjna svojstva. Za relacijsku shemu u kojoj takva ograničenja vrijede kažemo da je normalizirana, odnosno da se nalazi u odreñenoj normalnoj formi.
119 Normalnih formi ima nekoliko i svaka naredna predstavlja odreñeno dodatno ograničenje na relacijskoj shemi. U najopćenitijem smislu, normalizacija je postupak kojim se proizvoljna, nenormalizirana relacijska shema transformira uvoñenjem novih ograničenja. Paralelno s transformacijom relacijskih shema transformiraju se i relacije zadane na tim relacijskim shemama. U okviru normalizacije ne smije doći do nepovratnog gubitka informacija. U svakom momentu normalizacije mora biti moguće rekonstruirati polazno stanje. Reverzibilnost postupka je dokaz da tokom normalizacije nije došlo do gubitka informacija. Postoji više varijanti normalizacije baze podataka. Kod nekih tehnika (tzv. vertikalna normalizacija), postupak normalizacije se izvodi dekompozicijom relacijske sheme. Odnosno, iz relacijske sheme izdvajaju se atributi koji stoje u nedozvoljenim odnosima s ostalim atributima u shemi, i od njih se formiraju nove relacijske sheme. Pri tome se nenormalizirana relacijska shema postepeno zamjenjuje s više manjih relacijskih shema. Kao posljedica dekompozicije relacijske sheme, relacija zadana na polaznoj, relacijskoj shemi zamjenjuje se svojim projekcijama. Pri tome dolazi do cijepanja svake pojedine n-torke u relaciji. Da bismo uspostavili početno stanje morat ćemo napraviti uniju relacijskih shema, odnosno prirodno pridruživanje relacija zadanih na tim relacijskim shemama. Operacije projekcije i prirodnog pridruživanja osnova su vertikalne normalizacije. Pomoću operacije projekcije vertikalno razbijamo relaciju na dvije ili više projekcija, a operaciju prirodnog pridruživanja koristimo za dokaz reverzibilnosti, odnosno da bi uspostavili početno stanje. Druga osnovna tehnika normalizacije je tzv. horizontalna normalizacija. Kao što je spomenuto, kod vertikalne normalizacije iz relacijske sheme izdvajaju se atributi koji stoje u nedozvoljenim odnosima s ostalim atributima u shemi, i od njih se formiraju nove relacijske sheme. Kod horizontalne normalizacije skup atributa u relacijskoj shemi se ne mijenja. Mijenjaju se domene na kojima su zadani pojedini atributi sheme. Relacija se rastavlja na podskupove n-torki koje zadovoljavaju odreñene uvjete. Ovakvi podskupovi su fragmenti relacije (Maier, 1983a). Sama tehnika horizontalne normalizacije nije potpuno razvijena (Yang, 1986) i u literaturi se mogu naći samo pojedini primjeri, koji više ilustriraju mogućnosti primjene ove tehnike, nego samu tehniku (Smith, 1978). U doglednoj budućnosti ova tehnika bi mogla odigrati značajnu ulogu kod distribuiranih baza podataka. Podsjetimo se da kod distribuiranih baza podataka relacija ne mora u cijelosti biti pohranjena na jednoj lokaciji. Fragmetacija relacija i njihova distribucija u skladu je s principima horizontalne normalizacije. U postupku horizontalne normalizacije koristimo se operacijama selekcije i unije za transformaciju relacija zadanih na relacijskoj shemi. Horizontalna normalizacija može se koristiti u kombinaciji s vertikalnom normalizacijom. Vratimo se ponovo vertikalnoj normalizaciji, koja je danas osnovna tehnika. Razlikujemo dvije varijante ove tehnike: - normalizaciju dekompozicijom, i - normalizaciju sintezom. Normalizacija dekompozicijom je starija. Postupak počinje od proizvoljne, nenormalizirane relacijske sheme i izvodi se u koracima. Svakim korakom normalizacije, relacija (odnosno relacijska shema na kojoj je relacija zadana) prevodi se u iduću višu normalnu formu. Kao što je rečeno, svaki korak normalizacije mora biti reverzibilan. Vertikalna normalizacija sintezom ne polazi od relacijske sheme, nego od skupa atributa i skupa zavisnosti zadanih na tom skupu atributa. Ovaj postupak se, za razliku od normalizacije dekompozicijom, ne provodi u koracima. Polazeći od skupa atributa i skupa zavisnosti zadanog na njemu, konstruira se relacijska shema (odnosno skup relacijskih shema) direktno u traženoj normalnoj formi.
120
12.2. DEKOMPOZICIJA BEZ GUBITAKA INFORMACIJA U toku normalizacije, općenito, ne smije doći do gubitka informacija. Razmotrimo, dakle, pod kojim uvjetima dekompozicija relacijske sheme neće imati za posljedicu gubitak informacija u relacijama zadanim na shemi (losseless join). Definirat ćemo pojam dekompozicije relacijske sheme: Dekompozicija relacijske sheme R(A1, A2,...,An) je zamjena relacijske sheme R sa skupom relacijskih shema {R1, R2,...,Rk} za koje vrijedi Ri ⊆ R (1≤ ≤ i ≤k) i R1R2...Rk = R. Relacijske sheme Ri ne moraju biti meñusobno disjunktni skupovi. Smatramo da je dekompozicija relacijske sheme izvedena bez gubitka informacija ako je ispunjen slijedeći uvjet: Neka je R relacijska shema i neka je skup {R1, R2,...,Rk} dekompozicija od R. Neka je r relacija zadana na R, i neka su ri projekcije relacije r zadane na Ri (1≤ ≤ i ≤k). Dekompozicija relacijske sheme R je izvedena bez gubitaka informacija, ako za bilo koju relaciju r zadanu na R vrijedi da je ona rezultat prirodnog pridruživanja svih svojih projekcija ri zadanih na Ri. Reverzibilnost dekompozicije relacijske sheme ovisi i dokazuje se reverzibilnošću dekompozicije relacija zadanih na toj relacijskoj shemi. Operacije relacijske algebre, projekcija i prirodno pridruživanje, osnova su transformacije relacije u toku vertikalne normalizacije. Projekcija relacije odgovara dekompoziciji relacijske sheme na kojoj je relacija zadana, a unija relacijskih shema prirodnom pridruživanju relacija zadanih na tim relacijskim shemama. Operacija projekcije koristi se da bi se relacija r(R) transformirala na dvije ili vojih projekcija ri(Ri). Operaciju prirodnog pridruživanja koristimo da bi, polazeći od projekcija neke relacije, rekonstruirali početnu relaciju. Tako dokazujemo reverzibilnost dekompozicije. Operacije projekcije i prirodnog pridruživanja nisu meñusobno inverzne. Samo u nekim slučajevima (kad je dekompozicija reverzibilna) bit će moguće prirodnim pridruživanjem projekcija neke relacije rekonstruirati polaznu relaciju. Pogledajmo na jednom primjeru o ćemu se radi. Primjer Neka je p relacija zadana na relacijskoj shemi P(XYZ). Neka su r(R) i s(S) projekcije relacije p zadane na relacijskim shemama R i S za koje vrijedi RS = P. p( X Y Z ) x1 y1 z1 x2 y1 z2 x3 y2 z2 a)
πXY(p) = ( X Y )
πXZ(s) = ( X Y )
x1 y1 x2 y1 x3 y2
x1 z1 x2 z2 x3 z2
rXs = p ( X Y Z ) x1 y1 z1 x2 y1 z2 x3 y2 z2
121 b)
πXY(p) = ( X Y ) x1 y1 x2 y1 x3 y2
πYZ(s) = ( Y Z ) y1 z1 y1 z2 y2 z2
rXs = p ( X Y Z ) x1 y1 z1 x1 y1 z2 x2 y1 z1 x2 y1 z2 x3 y2 z2 c)
πXY(p) = ( X Y ) x1 y1 x2 y1 x3 y2
πZ(s) = ( Z ) z1 z2 z2
rXs = p ( X Y Z ) x1 y1 z1 x1 y1 z2 x2 y1 z1 x2 y1 z2 x3 y2 z1 x3 y2 z2 Samo u slučaju a) dekompozicija relacijske sheme P je bila reverzibilna. U slučaju c) vrijedi R ∩S = ∅ pa je rezultat operacije prirodnog pridruživanja jednak Kartezijevom produktu projekcija. Očigledno, presjek relacijskih shema kod dekompozicije ne smije biti prazan skup. Taj uvjet je nužan, ali (kao što proizlazi iz slučaja b)) nije dovoljan. Uvjet koji mora biti ispunjen da bi dekompozicija bila reverzibilna definirao je Rissanen (1977) kao dio uvjeta za nezavisnost projekcija: Dekompozicija relacijske sheme P na relacijske sheme R i S je reverzibilna ako su zajednički atributi u relacijskim shemama R i S ključ u bar jednoj od ove dvije sheme. Zahvaljujući Rissanenovom uvjetu moguće je jednostavno provjeriti reverzibilnost dekompozicije. Provjeravanje reverzibilnosti na relacijama daleko je složeniji postupak. Aho, Beeri i Ullman (1979) definirali su algoritam kojim se ovo provjeravanje izvodi. Ukratko ćemo se upoznati s ovim algoritmom.
Algoritam Neka je R (A1, A2,...,An)) relacijska shema, a X i Y podskupovi atributa u R. Neka je F skup funkcijskih zavisnosti zadanih na R, i neka je skup relacijskih shema { R1, R2,...,Rk } dekompozicija od R. 1) Da bi provjerili da li je dekompozicija relacijske sheme R bez gubitaka informacija, konstruirat ćemo tabelu s n stupaca i k redaka, tako da i-ti stupac tabele odgovara atributu Ai u relacijskoj shemi, a j-ti red tabele odgovara elementu dekompozicije Rj. U i-ti stupac j-tog reda upisat ćemo znak ai ako vrijedi Ai∈Rj, odnosno znak bij ako vrijedi Ai∉Rj. 2) Za svaku zavisnost X→Y u F modificirat ćemo sadržaj tabele. U okviru toga ćemo, za svaki atribut Ai, za koji vrijedi Ai∈X, potražiti u tabeli redove u
122 kojima je u stupcu Ai upisan znak ai. Ako nañemo dva ili više takvih redova, izjednačit ćemo u njima znakove upisane u stupcima Am za koje vrijedi Am∈Y. Pri tome, ako je bar u jednom od tih redova upisan znak am, upisat ćemo taj znak i u sve ostale takve redove. Ako su u svim takvim redovima tabele za atribut Am upisani znakovi bmj, upisat ćemo bilo koji od tih znakova i u sve ostale redove za atribut Am. Ako je nakon ove modifikacije sadržaja tabele jedan ili više redova u cijelosti popunjeno a-ovima, dekompozicija relacije R je reverzibilna, odnosno bez gubitka informacija. S jednim primjerom ilustrirat ćemo upotrebu ovog algoritma. Primjer Neka je R(SR IR GR ID GD MD, {SR→IR GR, ID→GD MD}) relacijska shema R sa zadanim ograničenjima i neka su R1(SR IR GR), R2(ID GD MD) i R3(SR ID) dekompozicija od R. Da bi ustanovili da li je dekompozicija reverzibilna, konstruirat ćemo tabelu sa šest stupaca i tri reda: SR R1 R2 R3
a1 b12 a1
IR a2 b22 b23
GR
ID
GD
MD
a3 b32 b33
b41 a4 a4
b51 a5 b53
b61 a6 b63
Ispitivanjem tabele, za zavisnost SR→IR GR ćemo ustanoviti da prvi i treći red tabele, u stupcu koji odgovara atributu SR (lijeva strana zavisnosti), imaju upisan znak a1. U ovim redovima, u stupcima koji odgovaraju funkcijski zavisnim atributima IR i GR (desna strana zavisnosti), kao sadržaj su upisani znakovi a2 (odnosno a3) u prvom redu. Ove znakove upisat ćemo kao vrijednost drugog i trećeg stupca u trećem redu tabele. Nakon ove modifikacije tabela ima slijedeći izgled: SR R1 R2 R3
a1 b12 a1
IR a2 b22 a2
GR
ID
GD
MD
a3 b32 a3
b41 a4 a4
b51 a5 b53
b61 a6 b63
Kao što vidimo, tabela još uvijek nema niti jedan red potpuno popunjen aovima. Nastavit ćemo s ispitivanjem i modificiranjem sadržaja tabele, za zavisnost ID→GD MD. Stupac, koji odgovara atributu ID, u drugom i trećem redu ima znak a4. Stupci, koji odgovaraju atributima GD i MD, u drugom redu imaju vrijednost a5, odnosno a6. Ove znakove upisat ćemo kao vrijednosti petog i šestog stupca u trećem redu tabele. Nakon ove modifikacije tabela ima slijedeći izgled: SR R1 R2 R3
a1 b12 a1
IR a2 b22 a2
GR
ID
GD
MD
a3 b32 a3
b41 a4 a4
b51 a5 a5
b61 a6 a6
Zadnji red tabele potpuno je popunjen a-ovima, pa je prema tome, dekompozicija relacijske sheme R na skup relacijskih shema {R1, R2, i R3} reverzibilna. Podsjetimo se još jednom da to znači da je svaka relacija zadana na relacijskoj shemi R rezultat operacije prirodnog pridruživanja svojih projekcija na relacijske sheme dekompozicije (u ovom slučaju projekcija na relacijske sheme R1, R2, i R 3).
123 Provjerimo dobiveni rezultat pomoću Rissanenovog testa. U relacijskoj shemi R1 ključ je atribut SR (zbog SR→IR GR), u R2 atribut ID (zbog ID→GD MD), a u R3 ključ je sastavljen i sastoji se od atributa SR i ID. Zajednički atribut u relacijskim shemama R1 i R3 je atribut SR (ključ u R1), a u relacijskim shemama R2 i R3 atribut ID (ključ u R2). Prema tome dekompozicija je reverzibilna. Osim što je potvrdila reverzibilnost dekompozicije, ova provjera pokazuje da je ispitivanje reverzibilnosti prema Rissanenu puno brže i jednostavnije.
12.3. DEKOMPOZICIJA BEZ GUBITAKA ZAVISNOSTI Jasno je da bi gubitak jednog dijela podataka iz relacija, tokom dekompozicije relacijske sheme na kojoj su relacije zadane, bio ravan katastrofi. Drugi važan moment o kojem moramo voditi brigu u toku dekompozicije relacijske sheme je očuvanje skupa funkcijskih zavisnosti koji je zadan na relacijskoj shemi. Naime, dekompozicija može biti reverzibilna iako je u toku dekompozicije došlo do gubitka nekih funkcijskih zavisnosti. Posljedice takvog gubitka su dovoljno neprijatne da bi se o njegovom sprečavanju moralo razmisliti. Najjednostavnije će biti da cijeli problem promotrimo na jednom primjeru. Primjer Neka je na relacijskoj shemi R(RADNIK ODJEL DJELATNOST) zadan skup FZ F = {RADNIK→ODJEL, ODJEL→DJELATNOST, RADNIK→DJELATNOST}. Neka su projekcije R1(RADNIK ODJEL) i R2(RADNIK DJELATNOST) dekompozicija od relacijske sheme R. Lako se možemo uvjeriti da je dekompozicija reverzibilna (zajednički atribut u projekcijama R1 i R2 je atribut RADNIK i taj atribut je ključ u obadvije projekcije). Isto tako se možemo uvjeriti da je došlo do gubitka zavisnosti. U projekciji R1 zadana je zavisnost RADNIK→ODJEL, u projekciji R2 zavisnost RADNIK→DJELATNOST. Zavisnost ODJEL→DJELATNOST nije zadana niti u jednoj od projekcija i ne može biti logički izvedena iz zavisnosti u projekcijama. Razmotrimo sad kakve su posljedice gubitka zavisnosti i zašto se one javljaju. Ono što je skupom zavisnosti F definirano u našem primjeru možemo jednostavno opisati na slijedeći način: - svaki radnik radi u jednom odjelu, - svaki odjel se bavi jednom djelatnošću. Zbog tranzitivnosti slijedi da se svaki radnik bavi samo jednom djelatnošću. Očigledno je da se svi radnici jednog odjela bave istom djelatnošću. Spomenimo da se dva ili više različitih odjela mogu baviti istom djelatnošću (trebat će nam u jednom od narednih primjera). Zbog gubitka zavisnosti ODJEL → DJELATNOST, djelatnost odjela ne možemo memorirati na jednom mjestu (memorira se u n-torki svakog radnika koji radi u tom odjelu). Memoriranje ovako velikog broja kopija podatka predstavlja samo po sebi problem (nekontrolirana redundancija), a pored toga izaziva i anomalije održavanja. Inkonzistencija, kao posljedica ažuriranja tih kopija, potencijalno je prisutna. Podatke o djelatnosti odjela ne možemo memorirati tako dugo dok nije memoriran bar jedan radnik koji u tom odjelu radi (anomalija dodavanja). Brisanjem podataka o jednom radniku briše se i kopije podataka o djelatnosti odjela (anomalija brisanja). Postoji, meñutim, još jedan problem koji treba spomenuti. Pretpostavimo da se promijeni djelatnost kojom se odjel bavi. Zajedno s odjelom, djelatnost mijenjaju svi radnici u odjelu. Da bismo ažurirali bazu podataka, treba ažurirati djelatnost u ntorci svakog radnika koji u tom odjelu radi. U relaciji, koju treba ažurirati, zadanoj na projekciji R2(RADNIK DJELATNOST), ne postoji informacija u kojem odjelu radnik radi. Dakle, da bismo znali da li n-torku učitanu iz relacije zadane na R2 treba ažurirati, ili ne, potrebna nam je informacija iz n-torke tog radnika u relaciji zadanoj na projekciji R1(RADNIK ODJEL). Drugim riječima, projekcije se ne mogu
124 samostalno održavati. Prema Rissanenu (1977), smatramo da projekcije nisu meñusobno nezavisne. Da bismo ažuriranje mogli izvesti, morat ćemo operacijom prirodnog pridruživanja nad projekcijama r1(R1) i r2(R2) rekonstruirati relaciju r(R). Nadam se da prethodni primjer dovoljno uvjerljivo ilustrira potrebu da se ne dozvoli gubitak zavisnosti u toku dekompozicije. Prije nego što kažemo nešto više o problemu gubitka zavisnosti morat ćemo definirati neke pojmove i termine. U prvom redu, moramo definirati pod kojim uvjetima smatramo da je neka zavisnost X→Y zadana (ili vrijedi) na relacijskoj shemi R: Neka je R relacijska shema i neka su X i Y dva skupa atributa. Smatramo da zavisnost X→ →Y vrijedi u R, ako su ispunjeni slijedeći uvjeti: Izmeñu skupova atributa X i Y postoji funkcijska zavisnost X→ →Y. Za skupove atributa X i Y vrijedi da su podskupovi u relacijskoj shemi R. Prilikom dekompozicije relacijsku shemu R, na kojoj vrijedi neki skup FZ F, zamjenjujemo s nekim skupom relacijskih shema. Svaki element tog skupa Ri je projekcija od R. Na svakoj od tih projekcija relacijske sheme R, Ri, vrijedi neki podskup funkcijskih zavisnosti Fi, koji nazivamo projekcijom skupa F na Ri. Neka je F skup funkcijskih zavisnosti zadan na relacijskoj shemi R. Neka je F+ zatvarač tog skupa zavisnosti i neka je Ri projekcija relacijske sheme R. Projekcija skupa funkcijskih zavisnosti F na Ri je skup funkcijskih zavisnosti Fi. Za svaku zavisnost u Fi, X→ →Y, vrijedi (X→ →Y) ⊆Ri. ∈F+ i X,Y⊆ Na kraju, možemo definirati što znači da nije došlo do gubitka FZ u toku dekompozicije: Neka je F skup funkcijskih zavisnosti zadan na relacijskoj shemi R i neka je skup relacijskih shema {R1, R2,...,Rn} dekompozicija od R. Smatramo da je dekompozicijom sačuvan skup funkcijskih zavisnosti F, ako je unija svih projekcija od F na Ri ekvivalentna s F+. Kao što je spomenuto, problemom nezavisnosti projekcija bavio se Rissanen (1977). On je pokazao da su projekcije, na koje se u toku dekompozicije razbija relacijska shema, meñusobno nezavisne ako i samo ako vrijedi: - Svaka funkcijska zavisnost zadana na R, sadržana je, ili može biti izvedena iz unije funkcijskih zavisnosti zadanih na projekcijama. - Zajednički atributi u dvije projekcije sadrže ključ u bar jednoj od njih. Obratimo pažnju na činjenicu da Rissanenov uvjet nezavisnosti projekcija podrazumijeva da u toku dekompozicije nije došlo niti do gubitka informacija, niti do gubitka funkcijskih zavisnosti.
12.4 VERTIKALNA NORMALIZACIJA DEKOMPOZICIJOM Vertikalna normalizacija dekompozicijom teoretski je dobro obrañena i danas se mnogo koristi u praksi. Postupak polazi od proizvoljne relacijske sheme, koja ili
125 nije normalizirana ili se nalazi u nekoj od normalnih formi, i izvodi se u koracima. Svakim korakom normalizacije, relacijska shema se prevodi u slijedeću, višu normalnu formu. Svaki korak normalizacije mora biti reverzibilan.
12.4.1 Izbor primarnog ključa Da bi relaciju mogli normalizirati dekompozicijom, mora biti odreñen primarni ključ relacijske sheme. Kao što znamo pod primarnim ključem relacijske sheme podrazumijevamo podskup atributa relacijske sheme koji ispunjava uvjet jednoznačnosti i uvjet minimalnosti. Kad je riječ o normaliziranoj relacijskoj shemi, odreñivanje ključa je relativno jednostavno. Atributima u normaliziranoj relacijskoj shemi odreñene su vrste svojstava jedne odreñene vrste entiteta. Svaka n-torka, u relaciji zadanoj na takvoj relacijskoj shemi, je opis svojstava jednog odreñenog entiteta. Unutar tog opisa, vrijednost ključa relacijske sheme je identifikator entiteta i može se relativno jednostavno odrediti. Naravno, entitet može imati više različitih identifikatora (ime osobe, nadimak, šifra itd.). U skladu s tim, u relacijskoj shemi može biti više različitih podskupova atributa koji ispunjavaju uvjete za ključ. Izmeñu više 'mogućih' ključeva relacijske sheme (candidat key), odabrat ćemo jedan za primarni ključ. Na primjer: PROIZVOD ( ŠIF-PROIZV NAZIV-PROIZV CIJENA KOLIČINA ) Možemo pretpostaviti da u relacijskoj shemi PROIZVOD uvjete za ključ ispunjavaju atributi ŠIF-PROIZV i NAZIV-PROIZV. S obzirom na to da postoji, (makar i minimalna) mogućnost da se pojave dva različita proizvoda s jednakim nazivom, za primarni ključ relacijske sheme vjerojatno će biti odabran atribut ŠIF-PROIZV. U slučaju nenormalizirane relacijske sheme to je nešto drugačije. Nenormalizirana relacijska shema, u pravilu, sadrži atribute više različitih vrsta entiteta. Za svaku vrstu entiteta u relacijskoj shemi postoje identifikacijski atributi. Pogledajmo, na primjer, slijedeću relacijsku shemu: NENORMALIZIRANA-RS( ŠIF-TRGOVINE NAZIV-TRGOVINE ŠIF-PROIZVODA NAZIV-PROIZVODA ŠIF-DOBAVLJAČA NAZIV-DOBAVLJAČA) Ovo je primjer, i u njemu su, zbog preglednosti, navedeni samo neki od mogućih ključeva, a potpuno su izostavljeni atributi kao što su CIJENA proizvoda, ADRESA trgovine, IME-I-PREZIME odgovorne osobe itd. I pored toga, odreñivanje primarnog ključa je vrlo ozbiljan zadatak. Relacijska shema sadrži atribute tri osnovne i četiri izvedene vrste entiteta. Za svaku vrstu entiteta u shemi postoje dva ili više mogućih identifikacijskih podskupova atributa. Prije nego što pristupimo odreñivanju mogućih, i izboru primarnog ključa, moramo odrediti 'vlasnika' relacijske sheme. Pod 'vlasnikom' sheme podrazumijevamo vrstu entiteta čiji atributi se nalaze (ili bi se trebali nalaziti) u shemi. Mogući vlasnici u našem primjeru su: trgovina, proizvod, dobavljač, odnos izmeñu trgovine i proizvoda, izmeñu proizvoda i dobavljača, izmeñu trgovine i dobavljača, te izmeñu trgovine, dobavljača i proizvoda. Interesantno je pitanje u kojoj mjeri izbor vlasnika sheme utječe na rezultat normalizacije. Ako s normalizacijom idemo do kraja (projekt-join normalna forma), konačan rezultat će biti jednak, bez obzira na to koju vrstu entiteta smo na početku odredili za vlasnika sheme. Činjenica je, meñutim, da se u praksi s normalizacijom nikad ne ide do kraja. Prema tome, izbor vlasnika relacijske sheme može utjecati na rezultat normalizacije dekompozicijom. No zasad nemamo jasnu sliku o tome na koje karakteristike bi morali obratiti pažnju kod izbora vlasnika. U pravilu, nećemo odabrati
126 izvedeni tip entiteta za vlasnika (da bismo izbjegli sastavljeni ključ relacijske sheme na samom početku normalizacije). Nakon što je na neki način odabran 'vlasnik' relacijske sheme, mogu se odrediti mogući ključevi i, na kraju, izmeñu njih odabrati primarni ključ sheme. Uzmimo da smo u prethodnom primjeru odlučili da trgovina bude vlasnik relacijske sheme. U tom slučaju, mogući ključevi su atributi ŠIF-TRGOVINE I NAZIVTRGOVINE. Da smo umjesto trgovine odabrali dobavljača, mogući ključevi bili bi atributi ŠIF-DOBAVLJAČA i NAZIV-DOBAVLJAČA. Ako za vlasnika odaberemo odnos izmeñu dva osnovna tipa entiteta, mogući ključevi bit će podskupovi od dva ili više identifikacijskih atributa osnovnih tipova.
12.4.2. Prva normalna forma Definicija prve normalne forme (1NF) je: Relacijska shema R nalazi se u 1NF ako su svi neključni atributi funkcijski zavisni o ključu od R. Baza podataka nalazi se u 1NF ako se svaka relacijska shema u njoj nalazi u 1NF. Podsjetimo se da se pod ključnim atributima misli na sve atribute relacijske sheme R koji ulaze u sastav bilo kojeg mogućeg ključa od R. Prvi korak normalizacije relacijsku shemu transformira u 1NF. Drugim riječima, iz relacijske sheme R treba odstraniti sve one neključne atribute koji nisu funkcijski zavisni o ključu od R. Od odstranjenih atributa konstruira se nova relacijska shema. Vrijednost atributa, koji je funkcijski zavisan o ključu, jednoznačno je odreñena s vrijednošću ključa. Recimo da je ključ relacijske sheme atribut IMERADNIKA. Vrijednost atribut GODINA-ROðENJA funkcijski je zavisna o ključu (ključ je jednoznačno odreñuje). Uz svako ime radnika može biti navedena samo jedna godina roñenja radnika. Atributi, koji nisu funkcijski ovisni o ključu, imat će, za danu vrijednost ključa, neki podskup vrijednosti. Neka je ključ relacijske sheme, kao i u prethodnom slučaju, atribut IME-RADNIKA. Atributi IME-DJETETA i GOD-ROð-D nisu funkcijski zavisni o vrijednosti atributa IME-RADNIKA. Radnik može nemati djece, imati jedno ili više djece. Atributi, koji nisu funkcijski zavisni o ključu relacijske sheme, a odnose se na jednu vrstu entiteta (DIJETE), unutar relacijske sheme, koja opisuje drugu vrstu entiteta (RADNIK) tvore 'grupu koja se ponavlja'. S obzirom na to da izraz 'grupa koja se ponavlja' može dovesti do nesporazuma, razmotrimo na primjeru relacije radnik zadane na relacijskoj shemi RADNIK, kako takva grupa izgleda: radnik (IME-RAD GODINA-ROð IME-DJETETA GOD-ROð-D) Darko 1938 Ivica 1964 Marica 1967 Pavle 1949 Iva 1968 Ada 1972 Matija 1976 Žarko 1939 Tomica 1969 Kao što iz primjera vidimo, za svako dijete, koje radnik ima, postojat će u ntorci relacije jedna grupa vrijednosti atributa djeteta (IME-DJETETA i GOD-ROð-D). Ovi atributi čine grupu koja se ponavlja. Ovakve grupe podataka, uzrok su varijabilne duljine n-torke u relaciji zadanoj na nenormaliziranoj relacijskoj shemi. U okviru prvog koraka normalizacije, moramo iz relacijske sheme izdvojiti sve grupe koje se ponavljaju. Da bismo to postigli, treba ustanoviti koji su neključni atributi u relacijskoj shemi funkcijski zavisni o ključu. Nakon toga, iz relacijske sheme
127 izdvajamo sve one atribute koji to nisu. Ono što je od relacijske sheme preostalo jest relacijska shema u 1NF. Pogledajmo sad što napraviti s atributima koje smo izdvojili iz osnovne sheme. Kao što je spomenuto, od njih se konstruira nova relacijska shema. Dvije relacijske sheme (normalizirana (osnovna) shema i novoformirana shema) su projekcije osnovne relacijske sheme. Prema Rissanenu, da bi dekompozicija relacijske sheme na dvije projekcije bila reverzibilna, projekcije moraju imati neke zajedničke atribute, i ti atributi moraju sadržavati ključ bar jedne od projekcija. Naše dvije projekcije nemaju niti jedan zajednički atribut. Da bismo taj problem riješili, u novu shemu dodat ćemo primarni ključ normalizirane sheme. Relacijska shema, koju smo na taj način dobili ne mora biti u 1NF. Da bismo je preveli u 1NF, morat ćemo nad njom izvesti postupak koji je upravo proveden nad osnovnom shemom tj. moramo odrediti vlasnika relacijske sheme, odrediti moguće i meñu njima odabrati primarni ključ i na kraju, provesti prvi korak normalizacije). Razmotrimo kako bi se odvijao prvi korak normalizacije relacijske sheme RADNIK. ( IME-RADNIKA GODINA-ROðENJA) ( IME-RADNIKA + GODINA-ROðENJA IME-DJETETA GOD-ROð-D )
( IME-DJETETA GOD-ROð-D )
( IME-DJETETA GOD-ROð-D IME-RADNIK )
Definicija 1NF uz pomoć funkcijskih zavisnosti, s kojom smo se upravo upoznali, samo je jedna od nekoliko mogućih definicija 1NF. U literaturi se 1NF često definira preko svojstava relacija zadanih na relacijskoj shemi u 1NF: Relacijska shema R se nalazi u 1NF ako svaka relacija, zadana na R, može biti prikazana u obliku dvodimenzionalne tabele. Baza podataka nalazi se u 1NF ako se svaka relacijska shema u njoj nalazi u 1NF. Prije nego što kažemo nešto više o ovoj definiciji, potrebno je razjasniti što se misli pod dvodimenzionalnom tabelom. Tabela je dvodimenzionalna, ako sve n-torke u njoj imaju jednaku dužinu. Grupe koje se ponavljaju, smještaju se u treću dimenziju. Drugim riječima, definicijom se traži da relacijska shema u 1NF ne grupe koje se ponavljaju. Definicija nije u kontradikciji s prethodnom definicijom 1NF. Ipak, ovu definiciju prati i nešto drugačiji postupak za prvi korak normalizacije i bit će korisno da se s tim postupkom upoznamo. To će biti najjednostavnije na primjeru: radnik ( IME-RAD GODINA-ROð IME-DJETETA GOD-ROð-D ) Darko 1938 Ivica 1964 Marica 1967 Pavle 1949 Iva 1968 Ada 1972 Matija 1976 Žarko 1939 Tomica 1969 Relacijska shema ima grupu koja se ponavlja (IME-DJETETA, GOD-ROð-D). Zbog toga n-torke relacije imaju varijabilnu duljinu i relacija ne može biti prikazana u obliku dvodimenzionalne tabele, tj. relacijska shema nije u 1NF. U načelu, relacijsku shemu možemo prevesti u 1NF tako da za svako dijete kopiramo podatke o roditelju.
128 radnik (IME-RAD GODINA-ROð IME-DJETETA GOD-ROð-D) Darko 1938 Ivica 1964 Darko 1938 Marica 1967 Pavle 1949 Iva 1968 Pavle 1949 Ada 1972 Pavle 1949 Matija 1976 Žarko 1939 Tomica 1969 Naša relacija sada ima oblik dvodimenzionalne tabele, što znači da je relacijska shema u 1NF. Postupak je upravo fascinantan zbog svoje jednostavnosti. U jednom momentu grupa koja se ponavlja je postojala, da bi u slijedećem nestala. Pri tome nije izvedena nikakva transformacija relacijske sheme. O čemu je zapravo riječ? Obratimo pažnju na ključ relacijske sheme. Prije normalizacije, ključ je bio atribut IME-RAD. Nakon normalizacije, IME-RAD ne može više biti ključ, s obzirom na to da vrijednosti ključa moraju jednoznačno odreñivati n-torke u relaciji (odnosno ne mogu postojati dvije ili više n-torki s jednakom vrijednošću ključa). Ključ relacijske sheme, nakon normalizacije, je atribut IME-DJETETA. Dakle, relacijska shema je promjenom vlasnika prevedena u 1NF. Treća definicija 1NF (Maier, 1983): Relacijska shema R se nalazi u 1NF ako za svaki atribut A u R vrijedi da su vrijednosti domene na kojoj je zadan atribut A (dom(A)) pojedinačni (atomarni) podaci. Baza podataka nalazi se u 1NF ako se svaka relacijska shema u njoj nalazi u 1NF. Ova definicija se najviše koristi u literaturi. Ono što se pri tome misli jest da niti u jednoj n-torki relacije, zadane na relacijskoj shemi koja se nalazi u 1NF, niti jedan atribut ne smije imati više od jedne vrijednosti. Drugim riječima ne smiju postojati grupe koje se ponavljaju.
12.4.3 Druga normalna forma U drugom koraku normalizacije relacijsku shemu prevodimo u drugu normalnu formu (2NF). Definicija 2NF (Codd,1971; Codd 1972a): Relacijska shema R nalazi se u 2NF ako se svi neključni atributi nalaze u punoj funkcijskoj zavisnosti o ključu od R. Baza podataka nalazi se u 2NF ako se svaka relacijska shema u njoj nalazi u 2NF. Iz ove definicije je jasno da relacijska shema koja se nalazi u 2NF mora biti i u 1NF. Svi neključni atributi moraju biti funkcijski ovisni o ključu relacijske sheme (uvjet za 1NF), i ta funkcijska zavisnost mora biti puna (dodatni uvjet za 2NF). Što je to puna funkcijska zavisnost, odnosno što je parcijalna funkcijska zavisnost (tj. FZ koja nije puna) najlakše ćemo objasniti na primjeru. U slučaju kad je ključ relacijske sheme sastavljen, funkcijska zavisnost o ključu može biti posljedica funkcijske zavisnosti o dijelu ključa (aksiom uvećanja). Takva funkcijska zavisnost nije puna i nazivamo je parcijalnom. Neka je, na primjer, ključ relacijske sheme sastavljen od atributa ŠIFRA-RADNIKA i ŠIF-RAD-ZADATKA. Atributi SATI-RADA i IME-RADNIKA funkcijski su ovisni o ključu. Atribut SATI-RADA nalazi se u punoj funkcijskoj zavisnosti o ključu, s obzirom da niti jedan pravi podskup ključa ne odreñuje jednoznačno vrijednost atributa SATI-RADA. Vrijednost atributa SATIRADA jednoznačno odreñuju tek svi sastavni dijelovi ključa zajedno. U slučaju atributa IME-RADNIKA, situacija je nešto drugačija. Dio ključa jednoznačno odreñuje vrijednost atributa IME-RADNIKA (vrijedi FZ ŠIFRA-RADNIKA → IME-RADNIKA).
129 Zbog toga i cijeli sastavljeni ključ jednoznačno odreñuje vrijednost atributa IMERADNIKA (uvećanjem ŠIFRA-RADNIKA → IME-RADNIKA s ŠIF-RAD-ZADATKA → ∅ dobit ćemo ŠIFRA-RADNIKA ŠIF-RAD-ZADATKA→IME-RADNIKA). U ovom slučaju riječ je o parcijalnoj funkcijskoj zavisnosti o ključu. Obratimo pažnju na činjenicu da se parcijalna funkcijska zavisnost ne može javiti kad lijeva strana FZ sadrži samo jedan atribut (odnosno kad je ključ relacijske sheme jednostavan). U prvom koraku normalizacije iz relacijske sheme izdvojili smo sve atribute koji nisu bili funkcijski zavisni o ključu sheme. Ako je ključ relacijske sheme sastavljen, postoji mogućnost da su neki od neključnih atributa parcijalno funkcijski zavisni o ključu. U drugom koraku normalizacije ustanovit ćemo koji od neključnih atributa stoje u parcijalnoj funkcijskoj zavisnosti o ključu, i zatim ćemo sve takve atribute izdvojiti iz relacijske sheme. Time je osnovna shema prevedena u 2NF. Atributima, koje smo izdvojili iz osnovne sheme, dodat ćemo dio ključa o kojem su funkcijski zavisni, i od njih formirati novu relacijsku shemu. Ključ ove relacijske sheme bit će dio ključa osnovne sheme, koji je dodan na kraju. Promotrimo kako se odvija drugi korak normalizacije: ( ŠIFRA-RADNIKA ŠIF-RAD-ZADATKA SATI-RADA ) ( ŠIFRA-RADNIKA ŠIF-RAD-ZADATKA MJESTO-ROð-R OPIS-RAD-ZAD + SATI-RADA )
MJESTO-ROð-R
( ŠIFRA-RADNIKA MJESTO-ROð-R)
OPIS-RAD-ZAD
( ŠIF-RAD-ZADATKA OPIS-RAD-ZAD)
Izbacivanjem atributa MJESTO-ROð-R i OPIS-RAD-ZAD, koji su parcijalno zavisni o sastavljenom ključu, osnovna relacijska shema prevedena je u 2NF. Izbačenim atributima dodali smo kopije dijelova ključa o kojima su funkcijski zavisni i od njih formirali nove relacijske sheme. Ova dekompozicija je reverzibilna. Zajednički atributi osnovne i novoformirane relacijske sheme su ključ nove sheme. Vrijedi uočiti da se sve relacijske sheme, koje smo u ovom koraku formirali, nalaze u 2NF.
12.4.4. Treća normalna forma Treću normalnu formu (3NF) definiramo na slijedeći način (Codd,1971; Codd, 1972b): Relacijska shema R nalazi se u 3NF ako je u 1NF i ako niti jedan neključni atribut nije tranzitivno zavisan o ključu od R. Baza podataka nalazi se u 3NF ako se svaka relacijska shema u njoj nalazi u 3NF. Razmotrimo, prije svega, kako izgleda tranzitivna zavisnost u relacijskoj shemi: Neka je R(K, A1,...,An) relacijska shema u kojoj vrijedi K→{A1,...,An} i Ai→Aj. Podskup atributa K je ključ relacijske sheme R. Funkcijska zavisnost K→Aj je tranzitivna zavisnost o ključu i logički proizlazi iz zavisnosti K→Ai i Ai→Aj. Uzmimo jedan semantički primjer. Neka je R relacijska shema koja se sastoji od slijedećih atributa: R(IME-RADNIKA MJESTO-BOR-R GODINA-ROð-R IME-DJETETA GOD-ROð-D )
130 Atribut IME-DJETETA je ključ relacijske sheme R koja se nalazi u 2NF. Uz pretpostavku da je radnik roditelj djeteta, i da samo jedan od roditelja radi, vrijedi IME-DJETETA→IME-RADNIKA. Pored zavisnosti o ključu, u R vrijede i zavisnosti IME-RADNIKA → MJESTO-BOR-R GODINA-ROð-R. Atributi MJESTO-BOR-R i GODINA-ROð-R su tranzitivno zavisni o ključu. Parcijalna funkcijska zavisnost je poseban slučaj tranzitivne zavisnosti. Neka je R(K, A1,..., An) relacijska shema, neka je Z pravi podskup atributa u K (tj. vrijedi Z⊂K), i neka u R vrijedi K → A1,..., An i Z→ Ai. Zbog refleksivnosti u R vrijedi K→Z, a iz zavisnosti K→Z i Z→Ai proizlazi tranzitivna zavisnost K→Ai. 3NF podrazumijeva 1NF i 2NF. Definicijom 3NF eksplicitno se traži da relacijska shema u 3NF mora biti i u 1NF. Budući da je parcijalna funkcijska zavisnost poseban slučaj tranzitivne zavisnosti o ključu, iz uvjeta da neključni atributi relacijske sheme u 3NF ne smiju biti tranzitivno zavisni o ključu, proizlazi da se relacijska shema u 3NF mora nalaziti i u 2NF. Tranzitivnu zavisnost o ključu eliminirat ćemo iz relacijske sheme koja se nalazi u 2NF (ili 1NF) tako da iz sheme izbacimo tranzitivno zavisne neključne atribute. Osnovna relacijska shema time je prevedena u 3NF, ali to predstavlja samo dio posla. Atributima, koje smo izbacili iz osnovne sheme, dodajemo kopiju podskupa atributa koji ih funkcijski odreñuje (a, koji nije ključ osnovne sheme) i tako formiramo novu relacijsku shemu. Promotrimo kako se ovaj korak normalizacije odvija na našem primjeru. (IME-RADNIKA R( IME-RADNIKA MJESTO-BOR-R GOD-ROð-R IME DJETETA GOR-ROð-D )
MJESTO-BOR-R GOD-ROð-R
MJESTO-BOR-R GOD-ROð-R ) ( IME-RADNIKA IME DJETETA GOR-ROð-D )
Izbacivanjem atributa (MJESTO-BOR-R i GODINA-ROð-R) koji su tranzitivno zavisni o ključu relacijske sheme (atribut IME-DJETETA), osnovna shema je prevedena u 3NF. Isključenim atributima dodana je kopija atributa IME-RADNIKA i od njih je formirana nova relacija u kojoj je atribut IME-RADNIKA ključ. Ova dekompozicija je reverzibilna. Zajednički atribut IME-RADNIKA je ključ novoformirane relacijske sheme. Relacijske sheme koje formiramo u trećem koraku ne moraju biti u 3NF. Naime, u njima mogu postojati tranzitivne zavisnosti o ključu. Da bismo to ilustrirali, proširit ćemo relacijsku shemu R s imenom i godinom roñenja bračnog druga radnika: (IME-RADNIKA R( IME-RADNIKA MJESTO-BOR-R MJESTO-BOR-R MJESTO-BOR-R GOD-ROð-R GOD-ROð-R GOD-ROð-R IME-BR-DRUGA IME-BR-DRUGA IME-BR-DRUGA GOD-ROð-BD GOD-ROð-BD ) GOD-ROð-BD IME DJETETA ( IME-RADNIKA GOR-ROð-D ) IME DJETETA GOR-ROð-D ) Relacijska shema u kojoj je ključ atribut IME-RADNIKA nije u 3NF. Atribut GOD-ROð-BD funkcijski je zavisan o atributu IME-BRAČNOG-DRUGA i tranzitivno zavisan o ključu relacijske sheme. Ukratko ćemo rezimirati prva tri koraka normalizacije. U prvom koraku iz relacijske sheme odstranjeni su svi neključni atributi koji nisu funkcijski zavisni o
131 ključu. U drugom koraku odstranjeni su neključni atributi koji su funkcijski zavisni o dijelu ključa sheme. Konačno, u trećem koraku iz relacijske sheme su odstranjeni svi neključni atributi koji su funkcijski zavisni o nekom podskupu atributa koji nije ključ. Kao rezultat, dobili smo relacijsku shemu u 3NF u kojoj za sve neključne atributi vrijedi da su: - funkcijski zavisni o ključu relacijske sheme, - nisu funkcijski zavisni o podskupu atributa u relacijskoj shemi koji nije ključ, bez obzira na to da li se taj podskup sastoji od ključnih ili neključnih atributa (tj. nisu tranzitivno zavisni o ključu relacijske sheme). Neka je R relacijska shema, te neka su X i Y podskupovi atributa u R (s time da je X ključ od R, a Y bilo koji podskup atributa). Neka je A bilo koji neključni atribut. Budući da je X ključ, u R mora vrijediti: X →Y X →A R se nalazi u 3NF ako vrijedi: a) ¬(Y→A), ili b) Y→A Y→X U slučaju da vrijedi a), relacijska shema se nalazi u 3NF i niti jedan neključni atribut A nije funkcijski zavisan o bilo kojem podskupu atributa Y (koji nije ključ u R). Ako vrijedi b), podskup atributa Y je jedan od mogućih ključeva u R, i R se nalazi u 3NF. Ako Y nije mogući ključ u R i u R vrijedi Y →A, R nije u 3NF. Pri tome se javljaju dvije mogućnosti: 1) Y⊂X, 2) Y⊄X U slučaju 1) atribut A je parcijalno zavisan o ključu relacije R. Na kraju spomenimo da je svaku relacijsku shemu moguće reverzibilno transformirati u 3NF i pri tome sačuvati sve funkcijske zavisnosti. Kao što ćemo vidjeti, s normalnim formama višim od 3NF to nije uvijek slučaj. Budući da je transformacija u 3NF relativno jednostavan i uvijek izvodiv postupak kojim se postiže većina ciljeva normalizacije, lako je razumjeti veliko značenje koje 3NF ima za praksu.
12.4.5 Nedostatci vertikalne normalizacije dekompozicijom Ukratko ćemo dekompozicijom.
se
osvrnuti
na
značajnije
nedostatke
normalizacije
Prvi, i možda najveći, nedostatak dekompozicije jest vrijeme potrebno da bi se zadana relacijska shema transformirala u 3NF. Iako je osnovni koncept normalizacije dekompozicijom relativno jednostavan, transformacija relacijske sheme može oduzeti dosta vremena. Ovaj nedostatak dolazi do punog izražaja kad su u pitanju velike relacijske sheme i teško ga je ilustrirati na malim i jednostavnim primjerima koje smo koristili. Praćenje semantičkih odnosa meñu atributima unutar relacijske sheme, kad se radi o velikom broju atributa, izuzetno je nezahvalan i naporan posao, a mogućnost pogreške dosta velika. Kao drugi nedostatak, spomenut ćemo da ukupan broj relacijskih shema u 3NF, koji dobijemo dekompozicijom, ne mora biti najmanji mogući broj za danu
132 nenormaliziranu relacijsku shemu. Naime, ukupan broj relacijskih shema u 3NF ovisi o pretpostavljenom vlasniku sheme. Lako se može dogoditi da kao rezultat normalizacije dekompozicijom dobijemo više relacijskih shema nego što je to prijeko potrebno. To će se negativno odraziti i na troškove održavanja baze podataka, i na mogućnost korištenja podataka u bazi. Primjer Neka je F = {AB →CDE, AC→BDE, B→C, B→E, C→B, C→D} skup FZ zadan na relacijskoj shemi R(ABCDE). Ako krenemo od ključa AB ili AC, dekompozicijom ćemo dobiti tri relacijske sheme u 3NF: 1. korak R(ABCDE) s ključem AB i AC 2. i 3. korak R1(ABC) s ključem AB i AC R2(BE) s ključem B R3(CD) s ključem C Izbacivanjem tranzitivno zavisnog, neključnog atributa E iz R(ABCDE), dobili smo R'(ABCD) i konstruiramo shemu R2. Ako nakon toga iz R' izbacimo i tranzitivno zavisni neključni atribut D ostat će nam R1, a za izbačeni atribut D konstruirat ćemo R3. Postoji, meñutim, i rješenje s dvije relacijske sheme u 3NF: R1'(BCDE) s ključem B i C R2'(AB) s ključem AB ili R''2(AC) s ključem AC Kod normalizacije dekompozicijom ne znamo da li je dobiveno rješenje optimalno ili postoje rješenja s manjim brojem relacijskih shema. Kao treći problem spomenut ćemo da kod normalizacije dekompozicijom može doći do gubitka zavisnosti. Budući da se ne kontrolira da li je skup zavisnosti očuvan, eventualnog gubitka zavisnosti postat ćemo svjesni tek kad se jave problemi s održavanjem baze. Primjer Neka je F = {A →BCDE, CD→E, CE→B} skup funkcijskih zavisnosti zadan na relacijskoj shemi R(ABCDE). Dekompozicijom ćemo dobiti dvije relacijske sheme u 3NF: 1. korak R(ABCDE) s ključem A 2. i 3. korak R1(ABCD) s ključem A R2(CDE) s ključem CD Zavisnost CE→B ne može biti izvedena iz unije zavisnosti zadanih na R1 i R2. Svi ti problemi ne javljaju se kod vertikalne normalizacije sintezom.
12.5. VERTIKALNA NORMALIZACIJA SINTEZOM Normalizacija sintezom omogućuje nam da, polazeći od skupa atributa i skupa funkcijskih zavisnosti koji je na tom skupu atributa zadan (tj. polazeći od proizvoljne relacijske sheme), konstruiramo skup relacijskih shema u 3NF. Zasada ne postoji pouzdan algoritam za konstrukciju relacijske sheme u normalnim formama višim od 3NF.
133 Maier (1983) je definirao ciljeve koje treba postići algoritmom za sintezu i dao vrlo lijep pregled ciljeva razvoja algoritma za normalizaciju sintezom. Normalizacija sintezom treba omogućiti da se, polazeći od proizvoljne relacijske sheme R na kojoj je zadan skup funkcijskih zavisnosti F, postignu slijedeći ciljevi: 1. konstrukcija skupa relacijskih shema, čiji se elementi Ri, s obzirom na F, nalaze u 3NF, 2. svoñenje skupa relacijskih shema u 3NF na minimum, 3. osiguranje reverzibilnosti i 4. očuvanje skupa funkcijskih zavisnosti F. Minimalan broj relacijskih shema u 3NF, koje treba konstruirati da bi se relacijska shema R transformirala u skup relacijskih shema u 3NF, odreñen je skupom funkcijskih zavisnosti F (koji je zadan na R). Za svaku klasu ekvivalencije neredundantnog pokrivača G od F, mora biti konstruirana najmanje jedna relacijska shema u 3NF. Primjer 1 Neka je F = {A→BC, B→C} skup zavisnosti zadan na relacijskoj shemi R(ABC). F je neredundantan skup. Pomoću algoritma koji smo skicirali dobit ćemo kao rezultat dvije relacijske sheme: R1(ABC) s ključem A R2(BC) s ključem B R1 nije u 3NF. Atribut C je tranzitivno zavisan o ključu relacijske sheme R1, preko atributa B. Skup zavisnosti F nije reduciran. U desnoj strani prve zavisnosti u F postoji suvišni atribut (C), i to je razlog zbog kojeg relacijska shema R1 nije u 3NF. Da smo upotrijebili reducirani skup FZ F'= {A→B, B→C}, kao rezultat dobili bi relacijske sheme: R1'(AB) s ključem A R2 (BC) s ključem B Kad sve atribute podskupa reduciranih zavisnosti povežemo u cjelinu, kao što je SFZ, mogu se javiti suvišni atributi. U skladu s tim, niti reducirani skup FZ ne pruža sigurnost da će rezultat, dobiven našim algoritmom, biti relacijske sheme u 3NF. Da bismo riješili taj problem, prije konstrukcije relacijske sheme naći ćemo reducirani prstenasti pokrivač skupa funkcijskih zavisnosti. Naš modificirani algoritam ima slijedeći izgled: 1. Nañite reducirani prstenasti pokrivač G od zadanog skupa FZ F. 2. Za svaku SFZ (X1, X2,..., Xn)→Y u G konstruirajte relacijsku shemu Ri(X1, X2,..., XnY) u kojoj su podskupovi X1, X2,..., Xn ključevi. 3. Ispišite skup relacijskih shema konstruiranih u 2. koraku. I ovaj algoritam ćemo ispitati na jednom primjeru. Primjer 2 Neka je F = {A→C, B→C} skup FZ zadan na R(ABC). Prateći naš algoritam, odredit ćemo reducirani prstenasti pokrivač od F (to je G = {(A)→C, (B)→C}). Ako sad od svake SFZ konstruiramo, prema algoritmu, jednu relacijsku shemu, dobit ćemo: R1(AC) s ključem A R2(BC) s ključem B Kao što vidimo, obadvije relacijske sheme su u 3NF. Problem suvišnih atributa i tranzitivne zavisnosti o ključu je definitivno riješen. Algoritam, meñutim, ima
134 jedan nedostatak. Zajednički atribut u ove dvije relacijske sheme je atribut C, a on nije ključ niti u jednoj od dvije relacijske sheme. Nije zadovoljen drugi Rissanenov uvjet nezavisnosti projekcija, kojim se garantira da u toku normalizacije neće doći do gubitka informacija. U projekcijama koje smo dobili kao rezultat u prvom primjeru (R'1(AB) s ključem A i R2(BC) s ključem B) taj uvjet je bio zadovoljen. Atribut B koji se nalazi u obadvije relacijske sheme, ključ je u R2, a strani ključ u R'1. Općenito, da bi normalizacija bila reverzibilna, projekcije moraju biti povezane preko stranih ključeva. Kad imamo tri ili više projekcija, one moraju biti povezane u lanac a), zvijezdu b) ili neku kombinaciju: a) R1(AB) R2(BC) R3(CD) R4(DE) b) R1(ABD) R2(BC) R3(DE) Da li će konstruirane relacijske sheme biti povezane ili ne, ovisi o skupu zadanih zavisnosti. U prvom primjeru to se dogodilo, a u drugom nije. Da ne bismo ovisili o slučaju, konstruirat ćemo jednu zavisnost i dodati je zadanom skupu FZ F. Lijeva strana konstruirane FZ sastojat će se od svih atributa u relacijskoj shemi, a desna strana će biti jedan dodatni atribut Z (koji u relacijskoj shemi R ne postoji). Nakon što je konstrukcija relacijskih shema u 3NF završena, dodatni atribut ćemo odbaciti. Konstruirana zavisnost R →Z ne može u toku reduciranja biti izbačena kao redundantna jer niti jedna zavisnost u F nema atribut Z. Lijeva strana zavisnosti može biti reducirana tako da iz nje budu izbačeni neki suvišni atributi. Meñutim, podskup atributa R' (dobiven lijevim reduciranjem) ekvivalentan je sa skupom atributa R. Time je osigurano povezivanje svih konstruiranih relacijskih shema, odnosno postignut je cilj. Konačnu berziju algoritma za normalizaciju sintezom definirao je Bernstein (1976). Prema Maieru (1983) algoritam ima slijedeći oblik:
Algoritam SINTEZA ULAZ: Skup zavisnost F, zadan na R. IZLAZ: Komplet relacijskih shema u 3NF za F. SINTEZA(F, R) 1) Nañi atribut Z koji nije sadržan u R (tj.Z∉R). 2) Konstruiraj FZ R→Z i dodaj je u F. 3) Nañi neredundantni, reducirani, prstenasti pokrivač G za prošireni skup FZ F’. 4) Za svaku SFZ (X1, X2, ...,Xn)→V u G konstruiraj relacijsku shemu RiX1, X2, ...,Xn, Y) s ključevima X1, X2, ...,Xn 5) Izbaci atribut Z iz relacijske sheme Ri. 6) Ispiši skup relacijskih shema u 3NF. Operacije, koje se izvode u koracima 1), 2) i 5) osiguravaju da sve relacijske sheme koje će biti konstruirane, budu meñusobno povezane u semantičku cjelinu. Na taj način se sprečava da toku sinteze doñe do gubitka informacija. U trećem koraku treba naći neredundantan, reduciran i prstenasti pokrivač proširenog skupa funkcijskih zavisnosti. U koraku 4) se, polazeći od neredundantnog, reduciranog, prstenastog pokrivača proširenog skupa FZ F’ konstruiraju relacijske sheme u 3NF. Za nas je posebno interesantan korak 3). Ovaj korak se, prema Maieru(1983), sastoji od slijedećih postupaka: a) Nañi i odstrani redundantne FZ u proširenom skupu FZ F’ (tj. nañi
135 neredundantni pokrivač proširenog skupa FZ). b) Nañi lijevo reducirani pokrivač neredundantnog skupa FZ. c) Nañi desno reducirani pokrivač L-reduciranog neredundantnog skupa FZ. d) Odredi klase ekvivalencije i nañi prstenasti pokrivač neredundantnog i reduciranog skupa FZ. e) Nañi desno reducirani pokrivač prstenastog skupa FZ dobivenog u d). Svaka od ovih transformacija ima za cilj smanjivanje ukupnog broja FZ u zadanom skupu, odnosno, smanjivanje ukupnog broja atributa u lijevim i desnim stranama FZ zadanog skupa F. Promotrimo na jednom primjeru kako bi se odvijao postupak definiran algoritmom SINTEZA. Primjer 3 Neka je F = {A→C, B→C} skup zavisnosti zadan na R(ABC). Atribut Z ne nalazi se u relacijskoj shemi. Konstruirat ćemo zavisnost ABC→Z i dodati je u F. Na taj način dobili smo prošireni skup zavisnosti F' = {A→C, B→C, ABC→Z}. Reducirani prstenasti pokrivač od F' je G = {(A) →C, (B) →C, (AB) →Z}. Na osnovu toga konstruirat ćemo tri relacijske sheme: R1(AC) s ključem A R2(BC) s ključem B R3(ABZ) s ključem AB Budući da je atribut Z dodan samo da bi se spriječilo izbacivanje novo konstruirane zavisnosti kao redundantne, možemo ga sad izbaciti. Relacijska shema R3 imala bi sad slijedeći izgled: R3(AB) s ključem AB. Pregled algoritama koji se koriste u postupku normalizacije sintezom može se naći u Ullmanu (1988, 1997).
12.6 Grafičke metode i normalizacija sintezom Na kraju, spomenimo da grafičke metode (Ausiello i sur., 1983; Yang, 1986; Tkalac, 1990) mogu biti korištene u kombinaciji s algoritmom SINTEZA. Naravno, grafičke metode koriste se u koraku 3. algoritma SINTEZA. Umjesto neredundantnog, reduciranog prstenastog pokrivača, koristimo LDminimalni pokrivač grafa. Kao što znamo, LD-minimalni pokrivač ima više prednosti u odnosu na reducirani prstenasti pokrivač. U prvom redu, on sadrži minimalan broj atributa (pored redundantnih vrhova, odstranjeni su mu i suvišni vrhovi, odnosno odstranjen je najveći mogući broj atributa). Treči korak algoritma sinteze sastojao bi se od slijedećih komponenata: 1) Algoritam za grafički prikaz skupa funkcijskih zavisnosti 2) Algoritam za odreñivanje neredundantnog pokrivača FZ grafa 3) Algoritam za pronalaženje minimalnog pokrivača FZ grafa 4) Algoritam za pronalaženje LD-minimalnog pokrivača FZ grafa Nakon toga se za svaku klasu ekvivalencije (umjesto za svaki SFZ) konstruira jedna relacijska shema.
12.7 Nedostatci Bernsteinovog algoritma Kao što je rečeno, ukupan broj kopija atributa u modelu baze podataka s kontroliranom redundancijom ovisi o broju stranih ključeva i broju atributa u svakom od stranih ključeva.
136 Postavlja se pitanje koji je najmanji broj stranih ključeva neophodan u bazi podataka. Zbog uvjeta reverzibilnosti postupka oblikovanja (dekompozicija nenormalizirane relacijske sheme), sve relacijske sheme u bazi moraju biti meñusobno povezane. One mogu biti povezane linearno u lanac, hijerarhijski preko jedne od relacijskih shema ili nekom kombinacijom ova dva osnovna načina. Neka se model baze podataka sastoji od relacijskih shema R1, R2, R3 i R4 . Ako s → prikažemo vezu koja polazi iz jedne i ukazuje na drugu relacijsku shemu u modelu, pogledajmo kako one mogu biti meñusobno povezane: a) R1 →R2 →R3 →R4 b) R1 ← R2 → R3 ↓ R4 U slučaju a) osim jedne (R4) svaka relacijska shema u modelu sadrži jedan strani ključ. Ako je ukupan broj relacijskih shema n, neophodan ukupan broj stranih ključeva mora biti n-1. U drugom slučaju, ključevi svih ostalih relacijskih shema sadržani su u shemi R2. Ponovo je ukupan broj stranih ključeva n-1. To je ujedno najveći dozvoljeni broj stranih ključeva u normaliziranom modelu baze podataka. Manje od toga značilo bi da neke od relacijskih shema nisu povezane s ostatkom modela. Veći broj stranih ključeva značio bi da postoje povratne, odnosno višestruke veze izmeñu relacijskih shema u modelu. Kad bi pomoću stranih ključeva bilo moguće uspostaviti povratnu vezu izmeñu dvije relacijske sheme to bi značilo da su ključevi tih relacijskih shema meñusobno ekvivalentni te da nema razloga da se te dvije sheme ne povežu u jednu. Pogledajmo što bi značile višestruke veze. Recimo da je relacijska shema R1 sa shemom R3 povezana preko relacijske sheme R2 (kao u slučaju a)), a pored toga i direktno (tj. da postoji veza koja polazi iz R1 i ukazuje na R3). Relacijska shema R1 mora u tom slučaju sadržavati ključ sheme R2 i sheme R3. Znamo da ključ sheme R2 funkcijski odreñuje shemu R3 (naime, ključ R 2 funkcijski odreñuje sve atribute u R2 pa i strani ključ koji ukazuje na R3). Iz toga proizlazi da vrijedi R2 → R3. Unutar relacijske sheme R1, ključ R3 je tranzitivno ovisan (preko ključa R2) o ključu od R1. U relacijskoj shemi, koja se nalazi u trećoj normalnoj formi (3NF) niti jedan neključni atribut ne smije biti tranzitivno ovisan o ključu. Ukupan broj stranih ključeva u modelu, prema tome, ovisi o broju relacijskih shema u modelu. Pomoću Bernsteinovog algoritma za zadani skup FZ, bit će konstruiran minimalni broj relacijskih shema. Preostaje, dakle, da vidimo da li se može utjecati na broj atributa u stranom ključu. Neka je R1 relacijska shema. Ona može imati više mogućih ključeva. Neki od tih ključeva mogu biti sastavljeni i sastojati se od dva ili više atributa. S obzirom da nastojimo broj kopija atributa svesti na minimum, moramo kao strani ključ koristiti onaj ključ koji je sastavljen od najmanjeg broja atributa. Bernsteinov algoritam ne osigurava minimalnu veličinu stranog ključa. Zbog toga je potrebno u toku konstruiranja relacijskih shema svaki strani ključ usporediti s ostalim ključevima odgovarajuće relacijske sheme (ciljne sheme), naći najmanji i staviti ga umjesto postojećeg stranog ključa. Kao što je spomenuto, osim atributa sadržanih u stranim ključevima, kopije svih ostalih atributa u relacijskoj shemi nisu potrebne i moraju biti odstranjene. Broj i veličina relacijskih shema u modelu odreñeni su skupom FZ. U okviru Bernsteinovog algoritma traženje neredundantnog pokrivača proširenog skupa, svodi se na traženje redundantnih zavisnosti i njihovo izbacivanje iz skupa. Na taj način možemo doći samo do neredundantnog pokrivača koji je podskup proširenog skupa FZ. Lako je moguće da se meñu neredundantnim pokrivačima, koji nisu podskupovi, nalaze neki s manjim ukupnim brojem FZ.
137 U Bernsteinovom algoritmu o redoslijedu ispitivanja i izbacivanja redundantnih zavisnosti iz skupa ovisi koje zavisnosti i koliko zavisnosti će kao redundantne biti izbačeno iz skupa. Neka je R skup atributa na kojem je zadan skup zavisnosti F. Neka su X→Y i V→W dvije zavisnosti u F koje mogu biti izvedene iz ostatka skupa F. Neka se zavisnost V→W koristi u postupku izvoñenja zavisnosti X→Y. Nakon izbacivanja redundantne zavisnosti V→W iz skupa FZ F, zavisnost X→Y više ne može biti izvedena iz ostatka skupa F, odnosno ona više nije redundantna. Na taj način, izbacivanjem jedne redundantne zavisnosti iz skupa FZ, sve one zavisnosti, u čijem izvoñenju izbačena zavisnost sudjeluje, više ne mogu biti izvedene iz ostatka skupa FZ. Prema tome, nije sigurno niti da smo Bernsteinovim algoritmom, meñu neredundantnim pokrivačima koji su podskup zadanog skupa, našli onaj koji ima najmanji broj zavisnosti. Pokazano je (Ling i sur. 1981; Yang, 1986) da u neredundantnom pokrivaču zadanog skupa mogu postojati zavisnosti koje nisu neophodne i koje, uz odreñene transformacije skupa FZ, mogu biti odstranjene kao redundantne. Meñutim, bez dodatnih transformacija ove zavisnosti nisu redundantne. Bernsteinovim algoritmom ove zavisnosti se ne odstranjuju. S obzirom da Bernsteinov algoritam ne radi sa zatvaračem nego s nekim njegovim podskupom, nemamo pregled svih relevantnih FZ. Neka je Z podskup atributa u Y u zavisnosti X→Y , i neka je Z jedini strani ključ, koji ukazuje na relacijsku shemu Rn u čitavom skupu FZ. Zavisnost X→Y ne može biti redundantna (tj. ne može biti izvedena iz ostatka skupa). Recimo da bi zavisnost X→Y bila redundantna da nema tog ključa. Što će se dogodit ako taj ključ ugradimo u desne strane svih zavisnosti koje su ekvivalentne s X→Y? Ekvivalencija skupa se neće promijeniti, a zavisnost X→Y će postati redundantna. Upravo to se može dogoditi kad konstruiramo sastavljenu funkcijsku zavisnost od jedne klase ekvivalencije. Prije nego što kažemo nešto više o LD-reduciranju podsjetimo se da za svaku klasu ekvivalencije konstruiramo jednu relacijsku shemu. Shema je unija atributa lijevih i desnih strana svih FZ u klasi ekvivalencije. Atributi lijevih strana su ključevi relacijske sheme, a atributi desne strane su strani ključevi, s tim da neki atributi lijeve strane mogu biti elementi stranih ključeva. Lijevim reduciranjem izbacuju se suvišni atributi iz lijevih strana FZ. Kako su lijeve strane FZ ključevi u relacijskoj shemi. Lijevim reduciranjem reduciraju se superključevi budućih relacijskih shema na ključeve. Sve relacijske sheme u modelu baze podataka moraju biti povezane preko stranih ključeva. Desnim reduciranjem iz desne strane izbacuju se suvišni strani ključevi, preko kojih bi se uspostavile višestruke i tranzitivne veze meñu relacijskim shemama. Bilo bi poželjno da kao strani ključ koristimo najmanji strani ključ odgovarajuće sheme. Koji ćemo ključ izbaciti kao suvišan, ovisi o redoslijedu ispitivanja suvišnosti i izbacivanja suvišnih atributa. Ako smo prethodno izbacili kao suvišne atribute manjeg stranog ključa, atributi većeg više neće biti suvišni. Nakon što smo uklonili manji strani ključ kao suvišan, veći će biti jedina veza. Sve je to dodatno komplicirano činjenicom da mi izbacujemo pojedine atribute od kojih se strani ključ sastoji, a ne strani ključ kao takav. Iako je to u biti problem redoslijeda praktično je nemoguće odrediti optimalan redoslijed. Zbog toga ćemo problem morati riješiti na nešto drugačiji način.
12.8 Predložena modifikacija algoritma sinteze Probleme koji se javljaju u Bernsteinovom algoritmu možemo, s obzirom na njihov uzrok, podijeliti u dvije grupe: - nedefiniran redoslijed odstranjivanja redundantnih zavisnosti i suvišnih atributa, - činjenica da se pojedine operacije izvode nad podskupom zatvarača, umjesto nad zatvaračem zadanog skupa FZ.
138 Zbog svega što je rečeno, predlažemo da se treći korak Bernsteinovog algoritma za normalizaciju sintezom modificira na slijedeći način: a) Za svaku pojedinu FZ X→Y, koja je element proširenog skupa FZ F’ nañi zatvarač lijeve strane X+. b) U proširenom skupu FZ F’, zamijeni svaku FZ X→Y s X→X+. c) Nañi lijevo reducirani pokrivač skupa FZ dobivenog u a), i to tako da se svaka FZ koja ima lijevu stranu sastavljenu od više atributa prvo pokuša zamijeniti s FZ sa što je moguće manjim brojem atributa u lijevoj strani. d) FZ, u ovako dobivenom L-reduciranom skupu svrstaj silazno, prema veličini desne strane (tj. zatvarača lijeve strane X+), a unutar svake klase ekvivalencije (FZ s jednakim zatvaračima lijevih strana) silazno prema broju atributa u lijevoj strani. e) Nañi neredundantan pokrivač skupa FZ. f) Nañi D-reducirani pokrivač neredundantnog skupa FZ iz prethodnog koraka. g) Nañi prstenasti pokrivač skupa FZ iz prehodnog koraka. h) Iz desne strane svake SFZ u prstenastom pokrivaču odstrani sve atribute koji proizlaze iz aksioma refleksivnosti, tj. SFZ (X1, X2,..., Xn)→Y u prstenastom pokrivaču iz prethodnog koraka zamijeni sa SFZ (X1, X2,..., Xn)→Y tako da vrijedi X1∪X2∪...∪Xn∩Y= ∅. i) Za desnu stranu svake pojedine SFZ ustanovi koje strane ključeve sadrži i, ako treba, zamijeni ih s najmanjim lijevim članom odgovarajuće SFZ. Neka se FZ V→W koristi u izvoñenju FZ X→Y. Zatvarač lijeve strane FZ V→W, mora biti sadržan u zatvaraču lijeve strane FZ X→Y ( tj. V+⊆X+). Iz toga slijedi da zavisnost, čiji zatvarač lijeve strane ima veći broj atributa ne može učestvovati u izvoñenju zavisnosti čiji zatvarač lijeve strane ima manji broj atributa i, prema tome, ne može utjecati na redundantnost takve zavisnosti. Zbog toga je potrebno da ispitivanje redundantnosti i izbacivanje redundantnih zavisnosti započne od zavisnost s najvećim zatvaračem lijeve strane. Zavisnosti u istoj klasi ekvivalencije mogu meñusobno sudjelovati u izvoñenju. Zato je potrebno odrediti redoslijed ispitivanja i izbacivanja redundantnih zavisnosti unutar iste klase. S obzirom da smo zainteresirani da uklonimo najveći broj atributa, treba unutar iste klase započeti s uklanjanjem redundantnih od zavisnosti s najvećim brojem atributa u lijevoj strani FZ. Lijevo reduciranje skupa FZ (korak c)) ujedno je priprema skupa za sortiranje. Zamjenom desnih strana svih FZ u skupu, za zatvaračem lijeve strane pripremili smo skup za svih redundantnih FZ. Ovom transformacijom došli smo u mogućnost da kao redundantne odstranimo i FZ o kojima govori Yang (1986). Nakon što smo našli neredundantan i L-reduciran skup FZ, kao i njegov prstenasti pokrivač, jedini suvišni atributi u desnoj strani SFZ mogu biti atributi u desnoj strani mogu biti atributi koji se javljaju u nekom od elemenata lijeve strane. Nakon njihovog otklanjanja (korak h)), našli smo neredundantan LD-reducirani pokrivač skupa FZ. Od svih takvih pokrivača koji su podskupovi zadanog skupa FZ, ovaj pokrivač ima najmanji ukupan broj FZ kao i najmanji broj atributa u lijevim i desnim stranama FZ. Da bismo bili sigurni da će model baze podataka imati minimalan broj kopija, moramo zamijeniti svaki pojedini strani ključ s najmanjim članom lijeve strane odgovarajuće SFZ. Zamjenom desne strane svih FZ u zadanom skupu sa zatvaračem lijeve strane, zadani skup smo transformirali u karakterističan pokrivač, njegovog prstenastog pokrivača. Na taj način otvorena je mogućnost da se kao redundantne zavisnosti eliminiraju i zavisnosti o kojima govori Yang (1986). Definiranjem redoslijeda, prema kojem se redundantne zavisnosti eliminiraju, osigurano je da će iz
139 skupa FZ kao redundantne zavisnosti biti izbačen podskup s najvećim brojem FZ i s najvećim brojem atributa u lijevim stranama. Kako se u predloženom algoritmu desno reduciranje izvodi na karakterističnom prstenastom pokrivaču skupa FZ, svi suvišni atributi iz desne strane su uklonjeni. Jedini suvišni atributi koji se mogu javiti u desnoj strani prstenastog pokrivača su oni koji odgovaraju trivijalnim FZ u skupu FZ. Zamjenom stranih ključeva sadržanih u desnoj strani SFZ s minimalnim ključevima odgovarajućih SFZ osigurano je da će algoritam meñu neredundantnim i reduciranim podskupovima proširenog skupa FZ naći podskup s najmanjim ukupnim brojem atributa u lijevim i desnim stranama zavisnosti (Tkalac i Mateljan,1992).
12.9. BOYCE-CODDOVA normalna forma Boyce-Coddova normalna forma (BCNF) je najviša normalna forma koja se definira pomoću funkcijskih zavisnosti. Definicija BCNF (Codd, 1974) je: Neka je R relacijska shema i neka vrijedi X⊂ ⊂R i A∈ ∈(R - X). Relacijska shema R nalazi se u BCNF ako se nalazi u 1NF i ako za svako X za koje vrijedi X→ →A, vrijedi X→ →R. Baza podataka nalazi se u BCNF, ako se svaka relacijska shema u bazi nalazi u BCNF. Dakle, ako neki podskup atributa X u R funkcijski odreñuje bilo koji atribut u relacijskoj shemi, koja se nalazi u BCNF, i ako ta funkcijska zavisnost nije trivijalna, onda X mora biti ključ relacijske sheme R (tj. X→R). Napomenimo da od ovog uvjeta nisu izuzeti atributi koji ulaze u sastav ključa relacijske sheme. U prethodnim koracima normalizacije bili su, iz relacijske sheme, uklonjeni odreñeni tipovi tranzitivnih zavisnosti . Uvjetom za BCNF, iz relacijske sheme odstranjene su sve tranzitivne funkcijske zavisnosti o ključu. Njime su obuhvaćene i parcijalne funkcijske zavisnosti i tranzitivne zavisnosti neključnih atributa o ključu sheme, kao i sve ostale tranzitivne zavisnosti o ključu koje se uopće mogu javiti u relacijskoj shemi. Bit će korisno stati i reći nešto više tranzitivnim zavisnostima u relacijskoj shemi. Tranzitivne zavisnosti, koje se mogu javiti u relacijskoj shemi, možemo podijeliti u četiri grupe, zavisno o tome da li je tranzitivno zavisan ključni ili neključni atribut relacijske sheme, te da li je tranzitivnost uspostavljena preko podskupa ključnih ili neključnih atributa u shemi: 1) Tranzitivna zavisnost neključnog atributa preko podskupa neključnih atributa. Neka je R(KB1B2) relacijska shema, neka je K ključ relacijske sheme R, i neka, pored funkcijskih zavisnosti o ključu u R, vrijedi i zavisnost B1→B2. Zavisnost K→ B2 je tranzitivna i može biti izvedena iz zavisnosti K→B1 i B1→B2 primjenom aksioma tranzitivnosti. 2) Tranzitivna zavisnost neključnog atributa preko dijela ključa (tzv. parcijalna funkcijska zavisnost). Neka je R(KB) relacijska shema u kojoj je podskup atributa K sastavljeni ključ sheme R za koji vrijedi K = A1A2. Neka u R pored zavisnosti o ključu (K→ B), vrijedi i zavisnost A1 → B. Zavisnost K→B je tranzitivna. Ona može biti izvedena primjenom aksioma tranzitivnosti na trivijalnu zavisnost K→A1 i zadanu zavisnost A1 →B. 3) Tranzitivna zavisnost ključnog atributa preko podskupa neključnih atributa. Neka je R(KB) relacijska shema u kojoj je K sastavljeni ključ za koji vrijedi K = A1A2, i neka, pored funkcijskih zavisnosti o ključu u relacijskoj shemi R, vrijedi i zavisnost B→A1. Trivijalna zavisnost K → A1, je tranzitivna i može biti izvedena primjenom aksioma tranzitivnosti na zavisnosti A1A2→B i B → A1.
140 4) Tranzitivna zavisnost ključnog atributa preko podskupa ključnih atributa. Neka je R(KBX) relacijska shema u kojoj su podskupovi atributa K i X sastavljeni ključevi za koje vrijedi K = A1A2 i X = C1C1. Neka, pored funkcijske zavisnosti o ključu u R vrijedi i zavisnost C1→A1. Trivijalna zavisnost K→A1 je tranzitivna i može biti izvedena primjenom aksioma tranzitivnosti na zavisnosti K→C1 i C1→A1. Tranzitivne zavisnosti koje smo svrstali u 2. grupu, odstranjene su iz relacijske sheme u 2. koraku normalizacije, a tranzitivne zavisnosti svrstane u 1. grupu odstranjene su u 3. koraku. Preostale su, dakle, tranzitivne zavisnosti iz grupe 3. i 4. U relacijskoj shemi koja se nalazi u 3NF ove tranzitivne zavisnosti mogu postojati. Da bismo relacijsku shemu preveli iz 3NF u BCNF, moramo ove tranzitivne zavisnosti odstraniti iz relacijske sheme. Promotrimo na dva primjera kako to izgleda. Primjer 1 Neka je R(PACIJENT AMBULANTA LIJEČNIK) relacijska shema u kojoj atributi PACIJENT i AMBULANTA čine sastavljeni ključ. Neka u R vrijede zavisnosti PACIJENT AMBULANTA → LIJEČNIK i LIJEČNIK → AMBULANTA. Drugim riječima, svaki liječnik radi samo u jednoj ambulanti, a svaki pacijent u jednoj ambulanti uvijek ide istom liječniku. Relacijska shema R nalazi se u 3NF, a ključni atribut AMBULANTA tranzitivno je zavisan o ključu (trivijalna FZ) preko neključnog atributa LIJEČNIK. Primjer 2 Neka je R(ŠIF-R-Z NAZIV-R-Z ŠIF-RAD SATI-RADA) relacijska shema. U R postoje dva sastavljena ključa (ŠIF-R-Z ŠIF-RAD i NAZIV-R-Z ŠIF-RAD). Pored zavisnosti o ključu, u R vrijede i zavisnosti ŠIF-R-Z → NAZIV-R-Z i NAZIV-R-Z → ŠIF-R-Z. Ključni atributi NAZIV-R-Z i ŠIF-R-Z tranzitivno su zavisni o ključu u čiji sastav ulaze. Tranzitivnost je uspostavljena preko atributa koji je dio drugog sastavljenog ključa. Relacijska shema R nalazi se u 3NF. Kao što se iz ova dva primjera može zaključiti, relacijska shema koja se nalazi u 3NF i ima jednostavan ključ, mora biti i u BCNF. Samo relacijska shema u 3NF koja ima bar jedan sastavljeni ključ ne mora biti i u BCNF. Da bi relacijsku shemu, koja se nalazi u 3NF, transformirali u BCNF, moramo odstraniti tranzitivne funkcijske zavisnosti o ključu sheme. To ćemo učiniti tako, da iz relacijske sheme izbacimo tranzitivno zavisan atribut, ili, u nekim slučajevima, da odstranimo podskup atributa preko kojeg je tranzitivnost uspostavljena. Naravno, od atributa, odstranjenih iz osnovne relacijske sheme, formira se nova relacijska shema itd. Evo kako bi se ta transformacija odvijala u posljednjem primjeru: R1( ŠIF-R-Z R( ŠIF-R-Z ŠIF-RAD ŠIF-RAD SATI-RADA ) NAZIV-R-Z R2( ŠIF-R-Z SATI-RADA ) NAZIV-R-Z NAZIV-R-Z) Druga mogućnost bila bi: R1( ŠIF-R-Z R( ŠIF-R-Z ŠIF-RAD SATI-RADA ) ŠIF-RAD NAZIV-R-Z SATI-RADA ) R2( NAZIV-R-Z ŠIF-R-Z ŠIF-R-Z) Svaku relacijsku shemu moguće je reverzibilno transformirati u BCNF. Meñutim, pri tome nije uvijek moguće očuvati zadani skup funkcijskih zavisnosti. Naime, neke relacijske sheme moguće je transformirati u BCNF samo po cijenu gubitka nekih od zadanih zavisnosti.
141 Razmotrimo relacijsku shemu R(PACIJENT AMBULANTA LIJEČNIK) na kojoj vrijedi skup FZ F = {PACIJENT AMBULANTA → LIJEČNIK, LIJEČNIK → AMBULANTA} . Relacijska shema R se nalazi u 3NF. Dekompozicija, kojom se R transformira u BCNF, sastoji se od dvije projekcije: R1(PACIJENT LIJEČNIK) sa sastavljenim ključem PACIJENT LIJEČNIK i R2(LIJEČNIK AMBULANTA) s ključem LIJEČNIK. Dekompozicija je reverzibilna. Zajednički atribut LIJEČNIK je ključ u R2. Provjerit ćemo da li je očuvan zadani skup funkcijskih zavisnosti F. Unija zavisnosti zadanih na projekcijama R1 i R2 je G = {LIJEČNIK→AMBULANTA}. Zavisnost PACIJENT AMBULANTA → LIJEČNIK je izgubljena. Ako želimo sačuvati skup F, onda bar jedna projekcija od R mora sadržavati atribute PACIJENT, AMBULANTA i LIJEČNIK. Ta projekcija neće biti u BCNF. Zaključit ćemo ovo poglavlje s parom elegantnih definicija koje je formulirao Zaniolo (1982): Definicija treće normalne forme: Neka je R relacijska shema, neka je X ⊂ R i neka je A atribut u relacijskoj shemi R. R se nalazi u 3NF ako i samo ako za svaku FZ X→ →A vrijedi jedna od slijedeće tri mogućnosti: 1. X sadrži A ( FZ je trivijalna), 2. X sadrži mogući ključ u R (X je superključ u R), 3. A je element mogućeg ključa u R. Podsjetimo se da je superključ skup atributa koji kao podskup (ne obavezno pravi!) sadrži mogući ključ relacijske sheme. Definiciju BCNF dobit ćemo tako da izostavimo treću mogućnost. Na kraju, spomenimo da se definicija BCNF prvi put pojavila u radu Heatha (1971). Autor je meñutim smatrao da se radi o poboljšanoj definiciji 3NF.
12.10. ZADACI ZA VJEŽBU 1) Za skup FZ F = {AB→D, AD→CE, D→F, F→B} zadan na R(ABCDEF) Nañite relacijsku shemu u 3NF metodom vertikalne normalizacije sintezom. Rješenje: Treba naći atribut Z koji se ne nalazi u R i konstruirati FZ R→Z. Ovu FZ dodaje se u F. Za dobiveni skup FZ F1 treba naći reducirani prstenasti pokrivač F2. Za svaku SFZ u F2 konstruiramo po jednu relacijsku shemu. Na kraju se iz relacijskih shema izbacuje atribut Z. Z ∉R ABCDEF→Z F1 = {AB→D, AD→CE, D→F, F→B, ABCDEF→Z} F2 = {(AB, AD, AF) →CEZ, (D) →F, (F) →B} R1(ABCDE) R2(DF) R3(FB)
Ključ = AB, AD, AF Ključ = D Ključ = F
2) Za zadani skup FZ F treba metodom vertikalne normalizacije sintezom naći relacijske sheme u 3NF. a) F = {ABE→GE, AB→CDF, AEF→C, B→EF, EF→B} Rješenje: R1 (ABCDG) Ključ = AB Ključ = B, EF R2 (BEF)
142 b) F = {A→CEF, B→E, BF→AC, ABF→DC, D→F, DE→AB, E→B, F→D} Rješenje: R1 (ADECF) Ključ = A, DE R2 (BE) Ključ = B, E R3 (DF) Ključ = D, F c) F = {AE→BCDF, AE→G, E→F, EF→G} Rješenje: R1(ABCDE) Ključ = AE R2(EFG) Ključ = E d) F = {BF→C , BCDF→E, C→BDF, CD→AE} Rješenje: R1 (BFC) Ključ = B, C R2(ACDE) Ključ = CD e) F = {ACF→B, B→ADFE, C→AB, CE→BDF, DF→EG} Rješenje: R1(ABDF) Ključ = B R2(BC) Ključ = C R3(DFEG) Ključ = DF
12.11. ZAKLJUČAK Kao što ćemo vidjeti, pored funkcijskih zavisnosti u postupku oblikovanja baze podataka odreñenu ulogu imaju i višeznačne i join zavisnosti. Ipak, postoji bitna razlika izmeñu uloge koju imaju funkcijske i uloge ostalih tipova zavisnosti. Naime, neke vrste funkcijskih zavisnosti (tranzitivne zavisnosti) se uklanja iz relacijske sheme, ali drugi dio (zavisnosti o ključu) predstavlja temelj modela baze podataka. Sve druge vrste zavisnosti u relacijskoj shemi traže se isključivo da bi se uklonile iz relacijske sheme. U praksi se koriste pretežno prva tri koraka normalizacije. Za to postoji više razloga: - Svaku nenormaliziranu relacijsku shemu moguće je prevesti u 3NF bez gubitaka informacija i funkcijskih zavisnosti. - U prva tri koraka normalizacije odstranjuje se najveći dio nepravilnosti relacijske sheme. Kao što je pokazano (Date, 1992) sami principi normalizacije u pravilu nisu dovoljni za izbor najpovoljnijeg modela relacijske baze podataka. U okviru tih principa treba za svaki pojedini slučaj tražiti i naći ono rješenje koje će najbolje odgovarati.
143
13. VIŠEZNAČNA ZAVISNOST Govorili smo o funkcijskim zavisnostima i njihovoj ulozi u oblikovanju baze podataka. Funkcijske zavisnosti, meñutim, nisu jedine zavisnosti koje se mogu pojaviti meñu atributima relacijske sheme i nisu jedine zavisnosti o čijem postojanju ovise karakteristike relacije i baze podataka. Meñu zavisnostima koje mogu bitno utjecati na karakteristike relacije, najvažnije su, pored funkcijskih, višeznačne zavisnosti (Fagin; 1977, Delobel; 1978, Zaniolo i Melkanoff;1981). Višeznačna zavisnost nema onako jednostavnu i lako prepoznatljivu semantičku interpretaciju kao funkcijska zavisnost. Da bismo lakše razumjeli kakva je to zavisnost, upoznat ćemo se s njom na nešto manje formalan način. Formalna definicija bit će navedena nešto kasnije. Ullman (1980) navodi jednu privlačnu neformalnu definiciju višeznačne zavisnosti: Pretpostavimo da je R relacijska shema, te da su X i Y disjunktni podskupovi atributa u R (tj. X∩ ∩Y = ∅ i X, Y⊆ ⊆R). Intuitivno znamo da 'X višeznačno odreñuje Y' (označavamo s X→ →→Y) ako se dana vrijednost od X preslikava na neki podskup vrijednosti od Y, koji može imati nula ili više elemenata, i ako taj podskup vrijednosti od Y nije ni na kakav način zavisan o vrijednostima ostalih atributa u R ( tj. (R - XY)) na koje se dana vrijednost od X preslikava. Višeznačna zavisnost u pravilu se definira kao odnos izmeñu dva elementa (X i Y). Meñutim, riječ je, u biti, o dijelu odnosa izmeñu tri elementa i, ako to zanemarimo, teško možemo razumjeti karakteristike višeznačne zavisnosti. U neformalnoj definiciji višeznačne zavisnosti koju smo naveli, spomenuto je da 'podskup vrijednosti od Y, na koje se preslikava dana vrijednost od X, ne smije ni na kakav način biti ovisan o vrijednostima ostalih atributa u relacijskoj shemi'. Neka ti ostali atributi u relacijskoj shemi tvore podskup atributa Z (Z = R - XY). Ako podskup vrijednosti od Y nije ni na kakav način zavisan o podskupu vrijednosti od Z, onda ni podskup vrijednosti od Z nije ni na kakav način zavisan o podskupu Y. Prema tome, ako podskupovi atributa X, Y i Z tvore particiju skupa aributa u relacijskoj shemi R, i ako u R vrijedi X →→Y, onda u R mora vrijediti i X→→Z. I zaista, višeznačna zavisnost u relacijskoj shemi se uvijek javlja u paru. Takav par zavisnosti označavamo s X→→YZ. Grafički prikaz višeznačne zavisnosti može doprinijeti boljem razumijevanju prirode ovog tipa odnosa meñu atributima relacijske sheme. Neka su disjunktni podskupovi atributa X, Y i Z u odnosu X→→YZ. Neka se dana vrijednost od X (x) preslikava na podskup vrijednosti od Y (y1, y2, y3) i podskup vrijednosti od Z (z1, z2). Odnos meñu elementima domena na kojima su zadani X, Y i Z prikazan je na slici 13.1. X x Slika 13.1 Z Y y1 y2 y3
z1 z2
144 Interesantan je odnos u kojem stoje višeznačna i funkcijska zavisnost. Iz definicije višeznačne zavisnosti izmeñu dva podskupa atributa X i Y, vidimo da podskup vrijednosti od Y na koji se preslikava dana vrijednost od X može imati nula ili više elemenata. Ukupan broj elemenata tog podskupa nije definicijom odreñen. On, prema tome, može biti varijabilan, kao što je, na primjer, slučaj s brojem sportova kojima se neka osoba bavi ili brojem stranih jezika koje govori. S druge strane, taj broj može biti konstantan (broj roditelja neke osobe). Pretpostavimo da se bilo koja vrijednost od X preslikava uvijek samo na jednu (ili najviše na jednu) vrijednost od Y. U tom slučaju je promatrana višeznačna zavisnost X→→Y istovremeno i funkcijska zavisnost X→Y. Prema tome, funkcijska zavisnost je poseban slučaj višeznačne zavisnosti, odnosno ako u R vrijedi →Y, onda vrijedi i X→→ Y. Kod prvog susreta s pojmom višeznačne zavisnosti upravo se nameće pitanje kako je moguće da u četiri koraka normalizacije ne bude otkriveno, i odstranjeno, višeznačno preslikavanje jednog podskupa atributa u relacijskoj shemi na drugi, odnosno kako u relacijskoj shemi, koja se nalazi u BCNF, može postojati višeznačna zavisnost. Promotrimo, dakle, kako se to može dogoditi. Neka je R relacijska shema, te neka su X, Y i Z podskupovi atributa koji tvore particiju od R. Neka vrijedi X→→YZ, i neka te višeznačne zavisnosti nisu funkcijske zavisnosti. Ako pretpostavimo da je ključ relacijske sheme R neki podskup atributa u X, onda će višeznačna zavisnost biti otkrivena već u prvom koraku normalizacije. Podskupovi atributa Y i Z nisu funkcijski ovisni o X, pa će kao grupa koje se ponavlja biti će izbačeni iz relacijske sheme. Meñutim, ako je ključ od R unija podskupova YZ, ili XYZ, onda višeznačna zavisnost X→→YZ neće biti otkrivena. U svakoj n-torki relacije r(R), pored odreñene kombinacije vrijednosti atributa Y i Z, bit će i vrijednost atributa X koja je toj kombinaciji pridružena. Ako podskupovi Y i Z, na koje se dana vrijednost od X preslikava, sadrže više elemenata, onda će mogućih kombinacija tih elemenata biti više. U vezi s tim postavljaju se dva pitanja: - koju kombinaciju elemenata od Y i Z upisati u odreñenu n- torku? - koliko n-torki s danom vrijednošću od X treba sadržavati relacija r(R) ? Odgovori na ova pitanja su meñusobno povezani. Ako se dana vrijednost od X preslikava na podskup vrijednosti od Y i podskup vrijednosti od Z, i ako ta dva podskupa nisu ni na kakav način povezana, jedino logično rješenje jest da se memoriraju sve moguće kombinacije vrijednosti od Y i Z (tj. da se svakom pojedinom elementu podskupa Y pridruži svaki pojedini element podskupa Z). Svakom elementu Kartezijevog produkta, koji je na ovaj način dobiven, pridruži se odgovarajuća vrijednost od X i memorira kao posebna n-torka. Iz toga proizlazi odgovor na drugo pitanje. U relaciji r u kojoj vrijedi višeznačna zavisnost X →→YZ, ukupan broj n-torki za svaku pojedinu vrijednost od X mora biti jednak broju elemenata Kartezijevog produkta podskupa vrijednosti od Y i podskupa vrijednosti od Z na koje se ta vrijednost od X preslikava. Formalna definicija višeznačne zavisnosti (Fagin, 1977) glasi: Neka je R relacijska shema u kojoj su X i Y disjunktni podskupovi atributa. Neka je Z podskup atributa u R za koji vrijedi Z = R - XY, tako da X, Y i Z tvore particiju od R. Smatramo da u R vrijedi višeznačna zavisnost (VZZ) izmeñu X i Y (označavamo s X→ →→Y) ako uvijek kad relacija zadana na R sadrži n-torke xy1z1 i xy2z2 ona mora sadržavati i n-torke xy1z2 i xy2z1. Ustvari, da bi se dokazalo da u relaciji vrijedi VZZ, dovoljno je dokazati za bilo koji element podskupa vrijednosti od Y da mora biti preslikan na svaki pojedini element podskupa vrijednosti od Z. U primjeru, koji je dio definicije VZZ, da bi se dokazalo postojanje VZZ u relaciji, dovoljno je dokazati da mora postojati jedna od ntorki (xy1z2 i xy2z1).
145 Uz malu modifikaciju, ova definicija omogućuje da sortiranjem relacije i prebrojavanjem n-torki utvrdimo da li u relaciji postoji VZZ: Neka je R relacijska shema i neka X, Y i Z čine particiju skupa atributa u R. U R postoji višeznačna zavisnost X→ →→Y Z, ako je ukupan broj n-torki u relaciji zadanoj na R, za danu vrijednost od X jednak produktu broja elemenata podskupa vrijednosti od Y i podskupa vrijednosti od Z na koje se dana vrijednost od x preslikava. Promotrimo kako bi ispitivanje, na osnovu ove definicije, izgledalo na jednom primjeru: r( ŠIF-RAD 517 517 517 517 518 519 519
SPORT TRČANJE TRČANJE PLIVANJE PLIVANJE TENIS PLIVANJE PLIVANJE
STR-JEZIK ) ENGLESKI NJEMAČKI ENGLESKI NJEMAČKI NJEMAČKI FRANCUSKI NJEMAČKI
Radnik sa šifrom 517 bavi se trčanjem i plivanjem i poznaje engleski i njemački jezik. U relaciji postoje n-torke: 517 517
TRČANJE PLIVANJE
ENGLESKI NJEMAČKI
517 517
TRČANJE PLIVANJE
NJEMAČKI ENGLESKI
i postoje n-torke
U skladu s prvom definicijom, u relaciji postoji VZZ ŠIF-RAD→→ SPORTSTR-JEZIK. Promotrimo što je s brojem n-torki za pojedine vrijednosti od X. Ukupan broj n-torki sa šifrom 517 je 4 (2x2). Ukupan broj n-torki sa šifrom 518 je 1 (1x1), a sa šifrom 519 2 (1x2). Relaciju zadanu na relacijskoj shemi u kojoj vrijedi VZZ možemo reverzibilno, tj. bez gubitka zavisnosti, transformirati u dvije projekcije. Neka je R(XYZ) relacijska shema, neka u R vrijedi X→→YZ, i neka je r relacija zadana na R: r (X x x x x
Y y1 y2 y1 y2
Z) z1 z2 z2 z1
πXY(r) = r1( X Y )
πXZ(r) = r2( X Z )
x y1 x y2
x z1 x z2
r1X r2 = r ‘( X x x x
Y y1 y1 y2
Z) z1 z2 z1
146 x y2 z2 Kao što vidimo, relacija r’, koju smo dobili prirodnim pridruživanjem projekcija r1 i r2 relacije r, jednaka je relaciji r’. Ovo svojstvo može se iskoristiti za definiranje VZZ: Neka podskupovi atributa X, Y i Z tvore particiju skupa atributa relacijske sheme R. VZZ X→ →→Y Z vrijedi u R ako je svaka relacija zadana na R rezultat operacije prirodnog pridruživanja nad svojim projekcijama XY i XZ. Definirat ćemo pojam trivijalne višeznačne zavisnosti. Općenito, trivijalnom smatramo svaku zavisnost koja vrijedi uvijek. U tom smislu: VZZ X→ →→Y je trivijalna ako za bilo koju relacijsku shemu R za koju vrijedi X,Y⊆ ⊆R, bilo koja relacija r (R) zadovoljava X→ →→Y. Nažalost, ova definicija ne govori nam mnogo. Mogli bismo je, uz malu modifikaciju, koristiti i kao definiciju trivijalne funkcijske zavisnosti. Pitanje, koje nas interesira, jest koji uvjet mora biti ispunjen da bi višeznačna zavisnost bila trivijalna. Funkcijsku zavisnost X→Y smatramo trivijalnom ako vrijedi Y⊆X, tj. ako zavisnost može biti logički izvedena na osnovi aksioma refleksivnosti. VZZ X→→Y bit će trivijalna ako zadovoljava jedan od slijedećih uvjeta: - logički proizlazi iz trivijalne funkcijske zavisnosti, tj ako vrijedi Y⊆X, ili - vrijedi XY = R, tj. ako vrijedi X→→Y∅.
Ugrañena višeznačna zavisnost Do sada smo promatrali višeznačnu zavisnost kao odnos meñu podskupovima atributa koji tvore particiju relacijske sheme R. Promotrimo što će se dogoditi ako to nije tako. Neka podskupovi atributa X, Y Z i W tvore particiju relacijske sheme R, i neka podskupovi atributa X, Y i Z stoje meñusobno u odnosu X→→YZ. U relacijskoj shemi R ne vrijedi X→→Y, niti X→→Z. Pokušajmo dokazati suprotno. Pretpostavimo da vrijedi X→→Y. Kako je R - XY = ZW, mora vrijediti i X→→ZW, a to nije točno. Meñutim, ako iz relacijske sheme izbacimo podskup atributa W, VZZ će se pojaviti. Ovakve višeznačne zavisnosti nazivamo ugrañenim. Definicija ugrañene višeznačne zavisnosti glasi: Neka je R relacijska shema i neka su X, Y, Z i W podskupovi atributa koji tvore particiju od R. Smatramo da u R vrijedi ugrañena višeznačna zavisnost X→→YZ, ako u projekciji od R, R'(XYZ) vrijedi višeznačna zavisnost X→→YZ Primjer Neka je R relacijska shema i neka su X, Y, Z i W podskupovi atributa koji tvore particiju od R. Neka u R vrijedi ugrañena VZZ X→→YZ i funkcijska zavisnost YZ→W. Neka je r relacija zadana na R. r(X x x x x
Y y1 y2 y1 y2
Z z1 z2 z2 z1
W) w1 w2 w1 w1
Zahvaljujući zavisnosti YZ → W, dekompozicija od R na R1(XYZ) i R2(YZW) je reverzibilna (zajednički atributi YZ su ključ u projekciji R2). Reverzibilnost možemo provjeriti na našem primjeru:
147
πXYZ(r) = r1 ( X Y Z ) x x x x
y1 y2 y1 y2
πYZW(r) = r2 ( Y Z W )
z1 z2 z2 z1
y1 y2 y1 y2
z1 z2 z2 z1
w1 w2 w1 w1
r1Xr2 =( X Y Z W ) x x x x
y1 y2 y1 y2
z1 z2 z2 z1
w1 w2 w1 w1
Interesantno je, meñutim, da je reverzibilna i dekompozicija R na R2(YZW), R3(XY) i R4(XZ). Za reverzibilnost ove dekompozicije odgovorna je, pored funkcijske zavisnosti YZ→W i ugrañena višeznačna zavisnost X→→YZ. Zahvaljujući njoj, mogli smo reverzibilno dekomponirati relacijsku shemu R1(XYZ) (u kojoj vrijedi X →→YZ) na R3 i R4. Promotrimo to na našem primjeru:
πXY(r) = r3 ( X Y )
πXZ(r) = r4 ( X Z )
x y1 x y2
πYZW(r) = r2 ( Y Z W )
x z1 x z2
y1 y2 y1 y2
r3Xr4 = r’’ ( X Y Z ) x x x x
y1 y1 y2 y2
z1 z2 z1 z2
z1 z2 z2 z1
w1 w2 w1 w1
r’’Xr2 = r’ ( X Y Z W ) x x x x
y1 y1 y2 y2
z1 z2 z1 z2
w1 w1 w1 w2
I pored nešto izmijenjenog redoslijeda n-torki u r', lako se možemo uvjeriti da je njen sadržaj jednak sadržaju relacije r.
13.1. LOGIČKO IZVOðENJE VIŠEZNAČNIH ZAVISNOSTI Kroz definicije VZZ i primjere upoznali smo se s osnovnim svojstvima VZZ, te odnosom u kojem stoje FZ i VZZ. Kao što zadani skup FZ logički implicira skup F+, skup funkcijskih i višeznačnih zavisnosti V logički implicira skup zavisnosti V+. Kao što je, polazeći od zadanog skupa FZ F, moguće izvesti skup F+, tako je polazeći od zadanog skupa FZ i VZZ V moguće je izvesti skup zavisnosti V+. Skup pravila za logičko izvoñenje funkcijskih i višeznačnih zavisnosti definirali su Beeri, Fagin i Howard (1979) i pokazali da je taj skup pouzdan i potpun. Mendelzon (1979) se bavio pitanjem meñusobne nezavisnosti unutar tog skupa pravila za izvoñenje. U ovom poglavlju upoznat ćemo se sa skupom aksioma, kao i nekim dodatnim pravilima za logičko izvoñenje VZZ. Dokaz meñusobne nezavisnosti aksioma, kao i dokaz potpunosti skupa aksioma, prelaze okvire ovog priručnika. Dokaz pouzdanosti bit će naveden samo za aksiom tranzitivnosti za VZZ. Dokaze pouzdanosti za ostale aksiome i pravila logičkog izvoñenja čitalac može izvesti sam ili ih potražiti u odgovarajućoj literaturi (Maier, 1983; Yang, 1986; itd.).
148
13.1.1. Aksiomi za logičko izvoñenje višeznačnih zavisnosti Skup aksioma, koje koristimo za logičko izvoñenje VZZ, možemo podijeliti u tri podskupa: - skup aksioma za logičko izvoñenje FZ, - skup aksioma za logičko izvoñenje VZZ, - skup aksioma kojima je definiran odnos izmeñu FZ i VZZ. Prije nego što kažemo nešto više o svakom pojedinom podskupu razmotrimo pregled svih aksioma.
Aksiomi za logičko izvoñenje FZ AF1) Refleksivnost Y⊆X⊆R⇒ X→Y AF2) Uvećanje X→Y ∧ W⊆R ⇒ XW→YW AF3) Tranzitivnost X→Y ∧ Y→Z ⇒ X→Z
Aksiomi za logičko izvoñenje VZZ AV1) Komplement X→→Y ⇒ X→→(R – XY) AV2)Uvećanje za VZZ X→→Y ∧ W⊆R ⇒ XW→→YW AV3) Tranzitivnost za VZZ X→→Y ∧ Y→→Z ⇒ X→→ (Z – Y)
Aksiomi odnosa FZ i VZZ AV4) Repliciranje X→Y ⇒ X→→Y AV5) Združivanje X→→Y ∧ W→Z ∧ W∩Y=∅ ⇒ X→Z Aksiomi za logičko izvoñenje FZ, kao uostalom i pravila za izvoñenje FZ, dio su skupa pravila za izvoñenje VZZ. To proizlazi iz činjenice da je svaka FZ poseban slučaj VZZ. Naveli smo ih da bi se ta činjenica naglasila, kao i da bi se olakšala usporedba aksioma za logičko izvoñenje FZ s ostalim aksiomima za izvoñenje VZZ. Aksiomi AV1 i AV4 direktno proizlaze iz prve, Ullmanove neformalne definicije VZZ. Smatram da su dovoljno obrazloženi i da nema potrebe da se posebno dokazuje njihova pouzdanost. Dokaz pouzdanosti aksioma AV2, AV3 i AV5 temelji se na drugoj, formalnoj definiciji VZZ. Budući da je način na koji se pouzdanost aksioma dokazuje, u biti , vrlo sličan za sva tri aksioma, ovdje ćemo navesti samo dokaz pouzdanosti aksioma tranzitivnosti za VZZ. Da se podsjetimo: prema definiciji VZZ, ako u relacijskoj shemi R vrijedi X→→Y, onda uvijek kada relacija zadana na R sadrži n-torke: x y1 z1 x y2 z2 mora sadržavati i n-torke:
149 x y1 z2 x y2 z1 Neka je R(XABCW) relacijska shema, neka vrijedi Y = AB, Z = BC, Z - Y = C, i neka u R vrijedi X→→Y i Y→→Z. Neka je r relacija zadana na R, i neka se u r nalaze n-torke: 1) x a1 b1 c1 w1 2) x a2 b2 c2 w2 Da bi dokazali pouzdanost aksioma tranzitivnosti za VZZ, moramo dokazati da u relacijskoj shemi R zavisnost X →→ Z - Y vrijedi kao posljedica zavisnosti X →→Y i Y→→Z. Ako u relaciji r vrijedi zavisnost X→→Z - Y, onda u njoj, pored n-torki 1) i 2), moraju postojati i n-torke x a1 b1 c2 w1 x a2 b2 c1 w2 Za dokazivanje pouzdanosti dovoljno je dokazati da jedna od ove dvije ntorke mora postojati u r, ako r zadovoljava zavisnosti X→→Y i Y→→Z. Naime, ako u r postoje n-torke 1) i 2), zbog zavisnosti X→→Y mora postojati i n-torka: 3) x a1 b1 c2 w2 Ako u r postoje n-torke 1) i 3), zbog zavisnosti Y →→Z mora postojati i ntorka : 4) x a1 b1 c2 w1 N-torka 4) je jedna od dvije n-torke čije postojanje u r smo morali dokazati. Time smo ujedno dokazali pouzdanost aksioma tranzitivnosti za VZZ. Kao što je spomenuto, na sličan način dokazuje se pouzdanost ostalih aksioma i pravila za logičko izvoñenje VZZ. Bit će korisno usporediti skup aksioma za izvoñenje FZ sa skupom aksioma za izvoñenje VZZ. Aksiom komplementa (AV1) odraz je specifičnosti VZZ i meñu aksiomima za izvoñenje FZ ne postoji aksiom koji bi odgovarao aksiomu komplementa. S druge strane, meñu aksiomima za izvoñenje VZZ ne postoji aksiom refleksivnosti. Meñutim, zahvaljujući aksiomu repliciranja (AV4), aksiom refleksivnosti možemo primijeniti i na skup VZZ. Aksiomi za uvećanje FZ i VZZ praktično se meñusobno ne razlikuju. Za razliku od aksioma uvećanja, aksiomi tranzitivnosti za FZ i VZZ značajno se razlikuju. Aksiom tranzitivnosti za FZ glasi: X→Y ∧ Y→Z ⇒ X→Z. Usporedimo ga s aksiomom tranzitivnosti za VZZ: X→→Y ∧Y→→Z ⇒ X→→(Z – Y). U slučaju da vrijedi Y∩Z = ∅ aksiom tranzitivnosti za VZZ postaje jednak aksiomu tranzitivnosti za FZ. Općenito, aksiomi za logičko izvoñenje zavisnosti odraz su, i proizlaze iz svojstava tih zavisnosti. U skladu s tim, razlike izmeñu aksioma za izvoñenje FZ i VZZ uglavnom su posljedica činjenice da je VZZ X→→Y dio odnosa izmeñu tri elementa (X, Y i Z) koji tvore particiju relacije.
13.1.2. Pravila izvoñenja VZZ Slično kao što se kod funkcijskih zavisnosti, pored aksioma, koriste i pravila za izvoñenje FZ, koriste se i pravila za izvoñenje VZZ. Ona se izvode iz aksioma i, u nekim slučajevima mogu postupak logičkog izvoñenja učiniti znatno jednostavnijim i bržim. Ovdje ćemo se osvrnuti na četiri pravila za izvoñenje VZZ.
150 PV1) Unija VZZ X→→Y ∧ X→→Z ⇒ X→→YZ. PV2) Dekompozicija VZZ X→→Y ∧ X→→Z ⇒ X→→(Y∩Z), X→→(Y-Z), X→→(Z-Y). PV3) Pseudotranzitivnost VZZ X→→Y ∧WY→→Z ⇒ WX→→(Z-WY). PV4) Mješovita pseudotranzitivnost X→→Y ∧ XY→Z ⇒X→(Z-Y). U odnosu na odgovarajuća pravila za logičko izvoñenje FZ, javljaju se kod nekih pravila za izvoñenje VZZ odreñene razlike. Posebno je značajna razlika koja se javlja kod pravila dekompozicije. Prema pravilu dekompozicije za FZ, ako neki skup atributa X jednoznačno odreñuje neki skup atributa Y, onda X jednoznačno odreñuje svaki podskup atributa u Y. Prema pravilu dekompozicije za VZZ na osnovi toga što neki skup atributa X višeznačno odreñuje skup atributa Y, ne možemo ništa zaključiti o odnosu u kojem X stoji prema podskupovima atributa u Y. Tek ako X istovremeno višeznačno odreñuje i neki skup atributa Z, možemo zaključiti da X višeznačno odreñuje i presjek i razlike skupova Y i Z. Kao što ćemo vrlo brzo vidjeti, ova razlika će nam donijeti dosta problema.
13.2. SKUP VIŠEZNAČNIH ZAVISNOSTI Uloge koje FZ i VZZ imaju u postupku oblikovanja baze podataka meñusobno se značajno razlikuju. Kao što znamo, FZ o ključu predstavljaju osnovu semantičkog modela entiteta u relacijskom modelu. U toku normalizacije odstranjuju se iz relacijske sheme tranzitivne FZ o ključu koje izazivaju anomalije održavanja. S druge strane, vidjet ćemo, zadatak je normalizacije da sve VZZ, koji nisu FZ ili trivijalne, eliminira iz relacijske sheme. U relacijskoj shemi sve takve VZZ izazivaju probleme i zbog toga ih treba odstraniti. U skladu s tim, i naš interes za karakteristike skupa VZZ razlikuje se od interesa za skup FZ. Za dani skup VZZ (odnosno FZ i VZZ) V možemo primjenom aksioma AF1 AF3 i AV1 - AV5 izvesti skup svih FZ i VZZ koje logički proizlaze iz skupa zavisnosti V. Taj skup je zatvarač skupa zavisnosti i označava se s V+. Izvoñenje skupa V+ može, zbog velikog broja elemenata, oduzeti dosta vremena. Slično kao i zatvarač skupa FZ, i V+ nema veće praktično značenje. Razmotrimo na jednom primjeru postupak logičkog izvoñenja VZZ. Primjer Neka je V = {A→→BC, DE→→C} skup zavisnosti zadan na skupu atributa R= {A,B,C,D,E}. Treba odrediti sve VZZ X→→Y, za koje vrijedi X = A, koje logički proizlaze iz skupa V. 1) A→→ BC Zadano 2) A→→DE Komplement od 1) 3) DE→→C Zadano 4) A→→C Tranzitivnost na 2) i 3) 5) A→→BDE Komplement od 4) 6) A→→BCDE Unija na 1) i 2) 7) A→→CDE Unija na 2) i 4) 8) A→→B Komplement od 7) 9) A→→A Refleksivnost i replikacija Dakle, samo VZZ X →→Y za koje vrijedi X = A u V + ima osam.
151 Daleko interesantnija od zatvarača skupa zavisnosti VZZ (odnosno, FZ i VZZ) je tzv. baza zavisnosti skupa atributa. Baza zavisnosti ima za skup VZZ ulogu sličnu onoj koju zatvarač skupa atributa ima za skup FZ. Meñutim, iako su uloge, koje zatvarač i baza zavisnosti skupa atributa imaju, slične, njihove strukture se meñusobno značajno razlikuju. Podsjetimo se da je zatvarač skupa atributa X (X+) neki skup atributa, za koje vrijedi X→X+. Primjenom pravila dekompozicije na zavisnost X→X+, za svaki skup atributa Z⊆X+ možemo izvesti zavisnost X→Z. Pravilo dekompozicije za VZZ tako nešto ne dozvoljava. Umjesto pravila dekompozicije, za konstruiranje baze zavisnosti skupa atributa koristimo pravilo unije za VZZ. Baza zavisnosti skupa atributa X, s obzirom na neki skup zavisnosti V, jest skup {Y1, Y2,..., Yn}. Elementi tog skupa su podskupovi atributa za koje u V+ vrijedi X→→Yi. Desna strana svake VZZ u V+ je unija podskupa elemenata baze zavisnosti. Baza zavisnosti skupa atributa X ne sadrži desne strane svih VZZ u V+ u kojima je X lijeva strana. Promotrimo, dakle, koji je najmanji skup desnih strana zavisnosti X→→Y u V+ koji mora biti sadržan u bazi zavisnosti od X. Svi elementi baze zavisnosti moraju biti meñusobno disjunktni. Neka zatvarač skupa VZZ, V+ sadrži zavisnosti X→→AB i X→→BC. Na osnovi pravila dekompozicije znamo da u V+ moraju postojati i zavisnosti: X→→A X→→B X→→C
(AB - BC) (AB∩BC) (BC - AB)
Umjesto da u bazu zavisnosti unesemo podskupove atributa AB i BC, koji nisu meñusobno disjunktni, unijet ćemo presjek i obadvije razlike. Iako smo tim postupkom umjesto dva, elementa u bazu zavisnosti unijeli tri, ukupan broj elemenata baze smo značajno ograničili. Naime, maksimalan broj elemenata u bazi zavisnosti može biti jednak broju elemenata skupa atributa na kojem je skup zavisnosti zadan. Baza zavisnosti skupa atributa X s obzirom na zadani skup zavisnosti V, particija je skupa atributa R na kojem je V zadan. Zbog aksioma komplementa, baza zavisnosti mora sadržavati particiju skupa atributa R - X. Iz aksioma refleksivnosti i replikacije proizlazi da za svaki A⊆X+ vrijedi X→→A. Na osnovi toga, u bazu zavisnosti treba unijeti, kao zaseban element, svaki atribut A za koji vrijedi A∈X+. Primjer Neka je V = {A→→BC, DE→→C} skup zavisnosti zadan na skupu atributa R = {A,B,C,D,E}. Baza zavisnosti atributa A s obzirom na skup F bit će BZ(A) = {A,B,C,DE}. Elementi baze zavisnosti od A jesu desne strane VZZ u V+ A→→Y, tako odabrane, da primjenom pravila unije na ovaj skup možemo izvesti sve VZZ u V+ čija lijeva strana je A. Sada bismo mogli definirati pojam baze zavisnosti skupa atributa: Neka je V skup zavisnosti (VZZ i FZ) zadan na skupu atributa R. Neka vrijedi X⊆ ⊆R. Baza zavisnosti od X s obzirom na V (označavamo s BZ(X)) jest particija od R, {Y1, Y2,...,Yn} tako da za svaki VZZ u V+ X→ →→Y vrijedi da je Y unija nekih od elemenata particije. Algoritam za konstrukciju baze zavisnosti postavilo je nezavisno nekoliko autora (Galil, 1979; Hagihara i dr., 1979; Beeri, 1980; Sagiv, 1980). Opis postupka konstrukcije baze zavisnosti, koji ovdje navodimo, malo je modificirana verzija postupka koji navodi Maier (1983):
152
Algoritam BOX ULAZ: Skup zavisnosti V, skup atributa R i podskup atributa X. IZLAZ: Baza zavisnosti skupa atributa X s obzirom na V. BOX(V,R,X) 1) Nañite zatvarač skupa atributa X, X+ s obzirom na V. Svaki pojedini atribut A za koji vrijedi A∈X+ dodajte u bazu zavisnosti kao zaseban element. 2) U V nañite podskup VZZ X'→→Y' za koje vrijedi X'⊆X. Na osnovi aksioma uvećanja (uvećanjem X'→→Y' s X dobit ćemo X→→Y') i na osnovi aksioma komplementa (VZZ X→→(R - X'Y')), dodajte u bazu zavisnosti Y' i (R - X'Y') kao elemente. Nakon toga, bilo koja dva elementa baze Yi i Yj, za koja ne vrijedi (Yi∩Yj)= ∅, treba zamijeniti s (Yi∩Yj), (Yi – Yj), (Yj – Yi). 3) Neka je nakon koraka 2) baza zavisnosti BZ(X) = {Y1,...,Yn}. Neka je Y'' = Yi...Yk. Iz definicije baze zavisnosti znamo da u V+ vrijedi X→→Y''. U V nañite podskup VZZ W→→Z za koje vrijedi W⊆Y''. Na snovi aksioma uvećanja i tranzitivnosti za VZZ (uvećanjem VZZ W→→Z s Y'' dobit ćemo Y''→→Z; primjenom aksioma tranzitivnosti za VZZ na X→→Y'' i Y''→→Z dobit ćemo zavisnost X→→(Z - Y'')) u bazu zavisnosti od X unesite kao element (Z - Y''). Na osnovi aksioma komplementa u bazu zavisnosti od X unesite kao element (R - (Z - Y'')). Nakon toga, bilo koja dva elementa baze Yi i Yj, za koja ne vrijedi (Yi∩Yj)= ∅, treba zamijeniti s (Yi∩Yj), (Yi – Yj), (Yj – Yi). Primjer Neka je F = {A→→BC, DE→→C} skup zavisnosti zadan na skupu atributa R = {A,B,C,D,E}. Treba odrediti bazu zavisnosti za atribut A s obzirom na V. Promotrimo kako će se odvijati konstrukcija baze zavisnosti po koracima algoritma koje smo definirali: 1) A+ = A BZ(A) = {A, BCDE} 2) Skup VZZ X'→→Y' u V za koje vrijedi X'⊆X ima samo jedan element (VZZ A→→BC). Za zavisnost A→→BC, dodat ćemo u bazu zavisnosti element BC i, na osnovi aksima komplementa (za zavisnost A→→DE), element DE. BZ(A) = {A, BCDE, BC, DE} nakon sreñivanja baze zavisnosti dobit ćemo: BZ(A) = {A, BC, DE} 3) Skup VZZ W→→Z u V za koje vrijedi W⊆Y'' ima samo jednu VZZ: DE→→C. Za zavisnost DE →→ C, dodat ćemo kao element u bazu C i na osnovi aksioma komplementa, za zavisnost DE→→AB, element AB. BZ(A) = {A, BC, DE, C, AB} Nakon sreñivanja baze zavisnosti imamo: BZ(A) = {A, B, C, DE} Time je konstrukcija baze zavisnosi za atribut A s obzirom na V završena.
153
13.3. ZADACI ZA VJEŽBU Baza zavisnosti 1) Na relaciji R(ABCDEF) zadan je skup zavisnosti F = {A→C}. Treba naći bazu zavisnosti za skup atributa AB. Rješenje: Baza zavisnosti za skup atributa X (X∈R) je particija od R za koju vrijedi da se na osnovu pravila unije mogu konstruirati sve višeznačne zavisnosti čija lijeva strana je X. Na osnovu aksioma replikacije za svaku FZ X→Y u R vrijedi X→→Y. U prvom koraku treba naći zatvarač od X i na osnovu pravila dekompozicije unijeti sve elemente zatvarača u BZ(X). ABF+ = ABC BZ (X) = {A, B, C, DEF} 2) Na relaciji R(ABCDEF) zadan je skup zavisnosti V = {A→C, B→→D}. Treba odrediti BZ(AB). Rješenje: a) Treba naći zatvarač ABV+ i sve atribute zatvarača dodati pojedinačno u BZ. ABV+ = ABC BZ’(AB) = {A, B, C, DEF} b) Treba naći sve X1→→Y za koje vrijedi X1⊆X vrijedi i X→→XY. Na osnovu aksioma uvečanja i aksioma komplementa u BZ treba dodati XY i (R – XY). 1) B→→D 2) AB→→D 3) AB→→CEF
Zadano u V Primjena aksioma uvećanja na 1) Primjena aksioma komplementa na 2)
BZ(AB) = {A, B, C, DEF, D, CEF} Bilo koja dva elementa BZ čiji presjek nije prazan skup zamjenjujemo u BZ s njihovim presjekom i obadvije razlike. BZ(AB) = {A, B, C, D, EF} 3) Na relaciji R(ABCDEF) zadan je skup zavisnosti V = {A→C, B→→D, BC→DE}. Nañite BZ(AB). Rješenje: a)
ABV+ = ABC BZ’(AB) = {A, B, C, DEF}
b)
l) B→→D 2) AB→→D 3) AB→→CEF
Zadano u V Uvećanje na 1) Aksiom komplementa na 2)
BZ’’(AB) = {A, B, C, D, EF} c)
1) 2) 3) 4) 5)
BC→DE BC→→DE AB→→BC AB→→DE AB→→CF
Zadano u V Na osnovu aksioma replikacije na 1) Na osnovu BZ2(AB) Primjenom aksioma tranzitivnosti na 3) i 2) Komplement na 4)
BZ(AB) = {A, B, C, D, EF, DE, CF} BZ(AB) = {A, B, C, D, E, F}
154 4) Na relaciji R(ABCDEF) zadan je skup zavisnosti V = {AB→C, C→EF, E→BD} Odredite BZ(AB). Rješenje: BZ(AB) = {A, B, C, D, E, F} 5) Na relaciji R(ABCDEF) zadan je skup zavisnosti V = {A→C, C→E, F→BC}. a) Nañite BZ(AB). Rješenje: BZ(AB) = {A, B, C, E, DF} b) Nañite BZ(F). Rješenje:
BZ(F) = {AD, B, C, E, F}
6) Na relaciji R(ABCDEFG) zadan je skup zavisnosti V = {A→→C, B→→CE}. Nañite BZ(AB). Rješenje: BZ(AB) = {A, B, C, E, DFG}
13.4. UVJET REVERZIBILNOSTI DEKOMPOZICIJE Reverzibilna dekompozicija relacijske sheme može biti izvedena na osnovi skupa FZ ili na osnovi skupa VZZ. Bez obzira na vrstu zavisnosti, smatramo da je dekompozicija relacijske sheme R reverzibilna ako je svaka relacija zadana na R jednaka rezultatu prirodnog pridruživanja svojih projekcija na elementima dekompozicije. Upoznali smo se s dvije metode ispitivanja reverzibilnosti dekompozicije relacijske sheme: metodom konstrukcije tabele i Rissanenovim uvjetom reverzibilnosti dekompozicije. Obadvije metode vrijede samo u slučaju da je dekompozicija izvedena na osnovi skupa FZ i mogu se modificirati tako da vrijede i u slučaju da je dekompozicija izvedena na osnovi skupa VZZ. Ispitivanje reverzibilnosti metodom konstruiranja tabele relativno je složen zadatak i kad je u pitanju skup FZ. To još više dolazi do izražaja kad tu metodu treba primijeniti za ispitivanje reverzibilnosti dekompozicije izvedene na osnovi skupa VZZ. Zbog svega toga, upoznat ćemo se samo s mogućnošću primjene Rissanenove metode koja je znatno jednostavnija i brža. Podsjetimo se da Rissanenov uvjet reverzibilnosti dekompozicije izvedene na osnovi skupa FZ glasi: Dekompozicija relacijske sheme R na relacijske sheme R1 i R2 je reverzibilna ako su zajednički atributi u relacijskim shemama R1 i R2 ključ u bar jednoj od njih. Ovaj uvjet možemo simbolički prikazati izrazom: ((R1 ∩ R2)→ → R1) ∨ ((R1 ∩ R2)→ → R2) Ovako definiran Rissanenov uvjet vrijedi samo u slučaju da je dekompozicija izvedena na osnovi skupa FZ. Taj uvjet ne može biti ispunjen kad su u pitanju VZZ. Razmotrimo to na jednom primjeru. Primjer 1 Neka je V = {B→→AC} skup zavisnosti zadan na relacijskoj shemi R(ABC) i neka se dekompozicija od R sastoji od relacijskih shema R1(AB) i R2(BC). Dekompozicija je reverzibilna, što možemo provjeriti na relaciji r (R). Neka r sadrži četiri n-torke: r(A B a1 b a2 b a1 b a2 b
C) c1 c2 c2 c1
155
πR1(r) = ( A B )
πR2(r) = ( B C )
a1 b a2 b
b c1 b c2
πR1(r)XπR2(r) = ( A B C ) a1 b a1 b a2 b a2 b
c1 c2 c1 c2
Relacija je, dakle, reverzibilna. Pa ipak, Rissanenov uvjet nije zadovoljen. Zajednički atribut u relacijskim shemama R1 i R2 je atribut B, a on ne može biti ključ niti u jednoj od relacijskih shema. Rissanenov uvjet možemo modificirati tako da vrijedi i za VZZ: Dekompozicija na relacijske sheme R1 i R2 je reverzibilna ako i samo ako vrijedi (R1 ∩ R2)→ → → (R1 - R2) (R2 - R1). U prethodnom primjeru ovaj uvjet je ispunjen. S obzirom na to da vrijedi (R1 ∩ R2) = B, (R1 - R2) = A i (R2 - R1) = C, uvjet reverzibilnosti za prethodni primjer glasi B→ →AC, a to je upravo zadano skupom zavisnosti V. Rekli smo da ovako definiran uvjet vrijedi i za VZZ. Prema tome, morao bi vrijediti i u slučaju da je dekompozicija izvedena na osnovi skupa FZ. Primjer 2 Neka je F = {B→A, C→B} skup FZ zadan na relacijskoj shemi R(ABC). Neka je R1(AB) i R 2(BC) dekompozicija od R. Zajednički atribut u R1 i R2 je atribut B. Taj atribut je ključ u R1. Prema tome, dekompozicija je reverzibilna. Pokušajmo sad na nju primijeniti modificirani Rissanenov uvjet. Primjenom aksioma repliciranja na B→A dobit ćemo B→→A, a na osnovi aksioma komplementa iz B→→A proizlazi da vrijedi i B→→C. Iz F logički proizlazi B→→AC, a to je uvjet reverzibilnosti ove dekompozicije. Pozitivan rezultat primjene modificiranog uvjeta na dekompozicije u prethodna dva primjera mogao bi kod optimista stvoriti utisak da će rezultat uvijek biti pozitivan, bez obzira na to da li je dekompozicija reverzibilna ili ne. Da to nije baš tako pokušat ćemo se uvjeriti na slijedećem primjeru. Primjer 3 Neka je F = {A→B, C→B} skup zavisnosti zadan na relacijskoj shemi R(ABC) i neka su R1(AB) i R 2(BC) dekompozicija od R. Zajednički atribut u R1 i R2 je atribut B, a on ne može biti ključ niti u jednoj od ove dvije sheme. Prema tome, dekompozicija nije reverzibilna. Pokušajmo to dokazati pomoću modificiranog Rissanenovog uvjeta ((R1 ∩ R2)→ → (R1 - R2)(R2 - R1)). S obzirom na to da vrijedi (R1 ∩ R2) = B, (R1 - R2) = A i (R2 - R1) = C, uvjet za reverzibilnost dekompozicije je B→→AC. Da bi taj uvjet bio zadovoljen, iz F bi moralo logički proizlaziti ili B→→A ili B→→C. Niti jedna od te dvije zavisnosti ne može se izvesti iz F.
13.5. Četvrta normalna forma Cilj zadnjeg koraka normalizacije dekompozicijom s kojim smo se upoznali bio je da relacijsku shemu transformira u BCNF. Podsjetimo se na definiciju i osnovne karakteristike relacijske sheme u BCNF:
156 Relacijska shema je u BCNF ako za bilo koja dva disjunktna podskupa atributa u R, X i Y, za koje vrijedi X→ →Y, vrijedi X→ →A za svaki atribut A za koji vrijedi A∈ ∈R. Baza podataka nalazi se u BCNF, ako se svaka relacijska shema u bazi nalazi u BCNF. Relacijska shema koja se nalazi u BCNF, ne sadrži tranzitivne funkcijske zavisnosti. Iz sheme su izbačene sve funkcijske zavisnosti osim trivijalnih i zavisnosti o ključu. Problemi s održavanjem relacija zadanih na takvoj relacijskoj shemi mogu se javiti kao posljedica VZZ u relacijskoj shemi. Promotrimo, naprimjer, relacijsku shemu R(ŠIF-RAD SPORT STR-JEZIK). U R ne postoje funkcijske zavisnosti, a svi atributi zajedno tvore ključ relacijske sheme. Kao posljedica VZZ ŠIFRAD→→SPORTSTR-JEZIK u relaciji zadanoj na R, broj n-torki s danom šifrom radnika bit će jednak produktu broja sportova kojima se radnik bavi i broja stranih jezika kojima se služi: r( ŠIF-RAD 517 517 517 517
SPORT TRČANJE TRČANJE PLIVANJE PLIVANJE
STR-JEZIK ) ENGLESKI NJEMAČKI ENGLESKI NJEMAČKI
Ako se radnik sa šifrom 517 počne baviti još jednim sportom, u relaciju treba dodati još dvije n-torke (za svaki strani jezik po jednu). Slično, ako nauči još jedan strani jezik, treba dodati po jednu n-torku za svaki sport kojim se bavi. Očita je nekontrolirana redundancija, kao i potencijalna inkonzistencija koja iz nje proizlazi. Da bi se ažurirao neki od podataka, treba ažurirati sve n-torke u kojima se nalazi kopija tog podatka. Kako su atributi SPORT i STR-JEZIK dijelovi ključa, u relaciju ne može biti upisana n-torka radnika koji se ne bavi niti jednim sportom, ili ne koristi niti jedan strani jezik (anomalija dodavanja). Da bi se registrirala činjenica da se radnik prestao baviti odreñenim sportom (ili da je zaboravio jedan strani jezik), potrebno je izbrisati sve n-torke radnika u kojima je zapisan taj sport (odnosno strani jezik). Pri tome se svaki put brišu i kopije podataka o stranim jeziku (odnosno sportu). Javlja se, dakle, i anomalija brisanja. Kao što je spomenuto, uzrok anomalija održavanja je VZZ u relacijskoj shemi. Da bismo spriječili anomalije, moramo iz relacijske sheme odstraniti VZZ. Time relacijsku shemu transformiramo u četvrtu normalnu formu (4NF). Definicija 4NF prema Faginu (1977) glasi: Relacijska shema R nalazi se u 4NF, ako se nalazi u 1NF i ako za bilo koja dva disjunktna podskupa atributa u R, X i Y, za koje vrijedi X→ →→Y (i ta zavisnost nije trivijalna) vrijedi X→ →A za svaki atribut A∈ ∈R. Baza podataka nalazi se u 4NF, ako se svaka relacijska shema u bazi nalazi u 4NF. Podsjetimo se da je X→→Y trivijalna VZZ ako je njegov komplement prazan skup (tj. ako vrijedi X→→Y∅). Za bilo koja dva disjunktna podskupa X i Y relacijske sheme R, koji tvore particiju od R, vrijedi X→→Y∅ (tj. vrijedi da meñusobno stoje u trivijalnoj višeznačnoj zavisnosti). Da bismo ilustrirali postupak eliminacije VZZ iz relacijske sheme, poslužit ćemo se još jednom relacijskom shemom R(ŠIF-RAD SPORT STR-JEZIK). Jedine netrivijalne zavisnosti u R su VZZ ŠIF- RAD→→SPORTSTR-JEZIK. Shema R se, prema tome, nalazi u BCNF. Da bismo odstranili VZZ iz R, moramo je dekomponirati na R1(ŠIF-RAD SPORT) i R2(ŠIF-RAD STR-JEZIK). Dekompozicijom smo netrivijalne VZZ ŠIF-RAD→→SPORTSTR-JEZIK, pretvorili u dvije trivijalne ŠIF-
157 RAD→→SPORT∅ i ŠIF-RAD→→STR-JEZIK∅ u projekcijama R1 i R2 koje se nalaze u 4NF. Relacijsku shemu, koja u sebi sadrži VZZ, dekomponirat ćemo u dvije relacijske sheme. Kao posljedica ugrañene VZZ u polaznoj relacijskoj shemi, elementi dekompozicije mogu u sebi sadržavati VZZ. Takav element dekompozicije morat ćemo ponovno dekomponirati. Ovaj postupak ćemo ponavljati sve dok se ne riješimo VZZ. Važno je naglasiti da za svaku relacijsku shemu R, koja se nalazi u BCNF, postoji reverzibilna dekompozicija od R u 4NF. Fagin (1977) smatra da bi semantički bilo opravdano odstraniti VZZ iz relacijske sheme prije, ili u toku prvog koraka normalizacije. Naime, pri tome se semantički neovisni podskupovi atributa odvajaju u zasebne cjeline. Problem, meñutim, leži u činjenici da otkrivanje VZZ, u velikoj nenormaliziranoj relacijskoj shemi, ne mora uvijek biti jednostavan zadatak. Interesantan je problem ključa relacijske sheme u kojoj postoji VZZ. Neka su X, Y i Z podskupovi atributa koji tvore particiju relacijske sheme R, i neka vrijedi R→→YZ. Pokazano je (Tkalac, 1986) da ključ relacijske sheme R mora biti složen, i da se, u pravilu, sastoji od svih atributa u R. Samo iznimno, ključ može biti sastavljen od atributa sadržanih u podskupovima Y i Z. Ako se relacijska shema R nalazi u BCNF i ima jednostavan ključ (tj. ključ sheme se sastoji samo od jednog atributa), onda se R nalazi i u 4NF.
158
159
14. JOIN ZAVISNOST Join zavisnost (ili zavisnost pridruživanja) je jedna vrsta ograničenja koja može biti zadana na relacijskoj shemi. U ovom poglavlju upoznat ćemo se s nekim karakteristikama ovog tipa zavisnosti. Da bismo mogli razumjeti odnos u kojem stoje zavisnosti koje smo do sada upoznali, prije nego što kažemo nešto više o join zavisnostima, napravit ćemo kraći osvrt na neke karakteristike VZZ i FZ. Ako su na relacijskoj shemi R zadane FZ ili VZZ, možemo R reverzibilno dekomponirati na dvije relacijske sheme R1 i R2. U nekim slučajevima, u toku normalizacije, dekomponirat ćemo relacijsku shemu na tri ili više relacijskih podshema. Meñutim, u svim takvim slučajevima riječ je o nizu uzastopnih dekompozicija na dvije relacijske sheme. Reverzibilnost dekompozicije relacijske sheme definirana je operacijom prirodnog pridruživanja nad projekcijama relacije zadane na relacijskoj shemi. Ako je R relacijska shema, njena dekompozicija {R1, R2,..., Rn} je reverzibilna ako za bilo koju relaciju r zadanu na R vrijedi: r = X(πR1(r), (πR1(r), (πR1(r)) (tj. svaka relacija zadana na R jednaka je rezultatu prirodnog pridruživanja svojih projekcija zadanih na elementima dekompozicije). Činjenica da su sve reverzibilne dekompozicije, s kojima smo se do sada sreli, bile ograničene na dvije relacijske sheme posljedica je karakteristika FZ i VZZ kojima smo se do sada bavili. Aho, Beeri i Ullman (1979) pokazali su da postoje i relacijske sheme za koje ne postoji reverzibilna dekompozicija na dva, ali zato postoji reverzibilna dekompozicija na tri ili više elemenata. Postojanje ovakvih relacijskih shema bila je indikacija da, pored FZ i VZZ postoji još najmanje jedna vrsta zavisnosti koja može biti zadana na relacijskoj shemi. Pokazalo se da su FZ i VZZ samo posebni slučajevi jednog općeg tipa zavisnosti koji je definirao Rissanen (1977): Neka je R relacijska sheme i neka je skup S = {R1, R2,..., Rn} dekompozicija od R. Ako je dekompozicija S reverzibilna, smatramo a u R vrijedi join zavisnost (JZ), koju označavamo s X (R1, R2,..., Rn). Iz definicije je očito da je VZZ poseban slučaj JZ. Iz toga slijedi da je i FZ, kao poseban slučaj VZZ, nužno, poseban slučaj JZ. Neka je R(XYZ) relacijska shema na kojoj vrijedi X→→YZ. Relacijske sheme R1(XY) i R2(XZ) su reverzibilna dekompozicija od R. Drugim riječima, u R postoji JZ X(XY, XZ), što je samo drugi način označavanja višeznačne zavisnosti X→→YZ. Način na koji je JZ otkrivena (postojanje reverzibilne dekompozicije na tri ili više dijelova, i istovremeno nepostojanje reverzibilne dekompozicije na dva dijela) mogao bi čitaoca navesti na zaključak da je postojanje JZ u relacijskoj shemi vezano za reverzibilnu dekompoziciju na tri ili više relacijskih podshema. Naravno, takav zaključak je pogrešan. FZ i VZZ su posebni slučajevi JZ, pa prema tome, JZ postoji u relacijskoj shemi uvijek kad postoji reverzibilna dekompozicija relacijske sheme na dvije ili više podshema. S nekoliko primjera ilustrirat ćemo osnovna svojstva JZ. Primjer 1 Neka je R(XYZ) relacijska shema i neka je r relacija zadana na R:
160
r(XYZ) xyz x y z1 x y1z Obratimo pažnju na činjenicu da u R ne vrijedi VZZ X→→YZ. Naime, kad bi ova VZZ vrijedila, u r bi morala, pored tri postojeće, postojati i četvrta n-torka t = (x y1z1). Projekcije relacije r na relacijske sheme R1(XY), R2(XZ) i R3(YZ) su:
πXY(r) = r1( X Y )
πXZ(r) = r2( X Z )
xy x y1
x z x z1
πYZ(r)=r3( Y Z ) yz y z1 y1z
S obzirom na to da su vrijednosti od X u svim n-torkama jednake, operacijom prirodnog pridruživanja relacija r1 i r2 dobit ćemo Kartezijev produkt: r1Xr2 = r'( X Y Z ) x yz x y z1 x y1z x y1z1 Kad bi u R vrijedilo X→→YZ, relacija r(R) morala bi sadržavati pored tri postojeće i n-torku t = (x y1z1), odnosno Kartezijev produkt r1 X r2. U tom slučaju vrijedilo bi r = r', i dekompozicija od R na relacijske sheme R1(XY) i R2(XZ) bila bi reverzibilna. Budući da r ne zadovoljava VZZ X→→YZ, u njoj ne postoje neki elementi Kartezijevog produkta r1Xr2. Zbog toga u r' imamo suvišnu n-torku t = (x y1z1). Dekompozicija R na R1 i R2, prema tome, nije reverzibilna. Malo je neobično, ali ovaj višak n-torki naziva se gubitkom informacija. Prirodnim pridruživanjem relacije r' i treće projekcije od r, zadane na R3(YZ), eliminirat ćemo suvišnu n-torku: r'Xr3 = r'' ( X Y Z) xy z x y z1 x y1 z S obzirom na to da vrijedi r'' = r, odnosno r= X(r1, r2, r3), dekompozicija R na {R1, R2, R3} je reverzibilna. Treću projekciju r koristimo kao neku vrstu filtra, koji u r'' propušta samo odreñene elemente Kartezijevog produkta podskupova vrijednosti od Y i Z na koje se vrijednost od x preslikava. Na taj način se odstranjuju suvišne n-torke. Naš 'filtar' ima i neke, ne tako poželjne, karakteristike. On propušta odreñene kombinacije vrijednosti atributa Y i Z, bez obzira na vrijednost atributa X. To u odreñenim slučajevima, može imati nezgodne posljedice. U prethodnom primjeru sve n-torke imale su jednake vrijednosti atributa X, tako da ova karakteristika filtra nije mogla doći do izražaja. U idućem primjeru nećemo imati taj problem. Primjer 2. Neka je R(XYZ) relacijska shema i r relacija zadana na R:
161 r( X Y Z ) x y z1 x y1 z x1 y z Projekcije relacije r zadane na relacijskim shemama R1(XY), R2(XZ) i R3(YZ) su:
πXY(r)=r1( X Y )
πXZ(r)=r2( X Y )
x y x y1 x1 y
x z1 x z x1 z
πYZ(r)=r3( Y Z ) y z1 y1z yz
Prirodnim pridruživanjem relacija r1 i r2 dobit ćemo: r1Xr2 = r'( X Y Z ) x y z1 x yz x y1z1 x y1z x1 y z Relacija r' sadrži dvije suvišne n-torke, pa, prema tome, dekompozicija R na R1 i R2 nije reverzibilna. Prirodnim pridruživanjem relacije r' i relacije r3 eliminirat ćemo jednu od dvije suvišne n-torke: r'Xr3 = r''( X Y Z ) x y z1 x yz x y1z x1 y z Relacija r'' još uvijek sadrži jednu suvišnu n-torku (x y z), pa ni dekompozicija {R1, R2, R3} od R nije reverzibilna. Semantička interpretacija uvjeta, koji mora biti ispunjen da bi u relacijskoj shemi R vrijedila JZ, dosta je zamršena. Prije nego što kažemo nešto više o samom uvjetu, bit će korisno da razmotrimo jedan primjer. Primjer je u nešto modificiranom obliku preuzet od Kenta (1983): Primjer 3 Pretpostavimo da se na pojedinim prodajnim mjestima (trgovinama) nudi na prodaju odreñeni asortiman proizvoda. Proizvode koje nudi, svaka pojedina trgovina nabavlja od odreñenih dobavljača. Svaki od dobavljača, od kojih trgovina nabavlja robu, može isporučiti odreñeni asortiman proizvoda. Asortimani pojedinih trgovina i pojedinih dobavljača se djelomično preklapaju. U najopćenitijem slučaju, da bi se moglo pratiti koje proizvode odreñena trgovina nabavlja od odreñenog dobavljača (odnos trgovina-dobavljač-proizvod) moramo u jednoj n-torci imati sve tri informacije. Neka je R(T D P) relacijska shema u kojoj vrijednost atributa T predstavlja šifru trgovine, atributa D šifru dobavljača, a vrijednost atributa P šifru proizvoda. Neka je r relacija zadana na R: r( T t1 t1 t2
D P) d1 p1 d2 p2 d1 p2
Iz relacije je vidljivo da se asortiman koji nudi trgovina t1 sastoji od proizvoda p1 i p2 (prve dvije n-torke). Proizvod p1 nabavlja od proizvoñača d1, a proizvod p2 od proizvoñača d2. Asortiman dobavljača d1 jednak je asortimanu trgovine t1 (prva i
162 treća n-torka). Dobavljač d1 dakle, može isporučiti sve vrste proizvoda koje trgovina t1 nudi. Meñutim, trgovina t1, proizvod p2 nabavlja od dobavljača d2. Za takvu situaciju u praksi može biti više razloga. Možda dobavljač d2 nudi trgovini povoljnije uvjete (niža cijena, kraći rok isporuke itd). Možda d2 ima proizvod p2 bolje kvalitete itd. Pretpostavimo da se radi o velikim robnim kućama koje žele ponuditi kupcu što je moguće veći izbor robe. Svaka od tih robnih kuća nudi odreñene vrste proizvoda i posluje s odreñenim dobavljačima. Svaki od dobavljača može isporučiti odreñene vrste proizvoda. Recimo da postoji pravilo po kojem robna kuća koja posluje s jednim dobavljačem od njega nabavlja, u okviru onog što ona nudi kupcima, sve vrste roba koje joj on može isporučiti. U relaciji r, u tom slučaju morala bi postojati i n-torka t4=(t1 d1 p2). Ovo pravilo predstavlja uvjet za reverzibilnost dekompozicije R na {R1(TD), R2(TP), R3(DP)}. Pogledajmo: r'( T t1 t1 t2 t1
πTD(r')=r1( T D )
D P) d1 p1 d2 p2 d1 p2 d1 p2
πTP(r')=r2( T P )
t1 d1 t1 d2 t2 d1
πDP(r')=r3( D P )
t1 p1 t1 p2 t2 p2 r1Xr2=r''( T t1 t1 t1 t1 t2
D d1 d1 d2 d2 d1
d1 p1 d2 p2 d1 p2
P) p1 p2 p1 p2 p2
Kao što iz projekcije r3 vidimo, dobavljač d2 ne isporučuje proizvod p1, pa je n-torka t3 =(t1 d2 p1) suvišna u r''. Pridruživanjem r'' s projekcijom r3, tu n-torku ćemo odstraniti: r''Xr3 =r'''( T D P ) t1 d1 p1 t1 d1 p2 t1 d2 p2 t2 d1 p2 Kao i u slučaju FZ, odnosno VZZ, i za JZ vrijedi: JZ X (R1, R2,..., Rn) vrijedi u relacijskoj shemi R ako vrijedi R = ∪(R1, R2,..., Rn) i ako svaka relacija r(R) zadovoljava zavisnost X (R1, R2,..., Rn). Kao i VZZ i JZ može biti ugrañena: U relacijskoj shemi R postoji ugrañena JZ X (R1, R2,..., Rn) ako neka projekcija relacije r(R) zadovoljava zavisnost X (R1, R2,..., Rn). Primjer 4 Neka na relacijskoj shemi R(ABCD) postoji ugrañene VZZ A→→BC i A→→BD. Znamo da je VZZ poseban slučaj JZ. Prema tome na R postoji ugrañena JZ X(AB, AC) i X(AB, AD).
163 I na kraju, definirajmo trivijalnu JZ. Kao i u slučaju FZ i VZZ, trivijalna JZ postoji u svakoj relacijskoj shemi i nije uvjetovana nekim posebnim ograničenjima: JZ X (R1, R2,...,Rn) na relacijskoj shemi R je trivijalna ako i samo ako vrijedi Ri = R za 1≤ ≤ i ≤n. Ako je neki od elemenata dekompozicije relacijske sheme R jednak relacijskoj shemi R, dekompozicija će uvijek biti reverzibilna. Ovakva JZ smatra se trivijalnom. Interesantan je odnos trivijalne VZZ i trivijalne JZ. VZZ je trivijalna ako je njen komplement prazan skup. Dakle, VZZ X→→Y∅ na relacijskoj shemi R(XY) je trivijalna. Dekompozicija od R, koju na osnovu ovakve VZZ možemo izvesti, jednaka je {R(XY)}, tj. ima samo jedan element, i taj je jednak relacijskoj shemi R. Trivijalna VZZ je trivijalna JZ. Naravno, analogno vrijedi i da trivijalna FZ, po istoj logici, odgovara trivijalnoj JZ.
14.1. LOGIČKO IZVOðENJE JOIN ZAVISNOSTI Sciore (1982) je predložio skup pravila za logičko izvoñenje JZ na osnovi skupa zadanih JZ. Predloženi skup pravila je pouzdan (dokaz pouzdanosti zainteresirani čitalac može naći u Scioreu (1982)), ali se smatra da nije potpun (Yang, 1986). Drugim riječima, sve JZ koje se mogu primjenom predloženog skupa pravila izvesti zaista vrijede. Nije, meñutim, sigurno da sve JZ koje logički proizlaze iz nekog zadanog skupa zavisnosti primjenom ovih pravila mogu biti izvedene. Bilo kako bilo, mi ćemo se s predloženim pravilima upoznati, ali prije toga ćemo se osvrnuti na neke karakteristike relacijske sheme, koje su bitne za razumijevanje ovih pravila. Ako za relacijsku shemu R postoji reverzibilna dekompozicija {R1, R2,..., Rn} (tj. u R vrijedi JZ X(R1, R2,..., Rn)), unija svih relacijskih shema u dekompoziciji (odnosno u odgovarajućoj JZ) jednaka je relacijskoj shemi R, tj. vrijedi R = R1 R2...Rn. Dodavanjem ili izbacivanjem pojedinih relacijskih shema iz reverzibilne dekompozicije, te dodavanjem ili izbacivanjem atributa iz pojedinih relacijski shema u dekompoziciji, modificirat ćemo dekompoziciju. Ako je dekompozicija, koju smo na taj način dobili, reverzibilna, onda na uniji atributa svih relacijskih shema u dekompoziciji vrijedi, pored ostalih, i JZ koja odgovara dobivenoj dekompoziciji. Obratimo pažnju na činjenicu da unija svih elemenata modificirane dekompozicije ne mora biti jednaka relacijskoj shemi R. Kao što znamo, ako je jedan element dekompozicije relacijske sheme R jednak relacijskoj shemi R, dekompozicija će biti reverzibilna (trivijalna JZ u R). Općenito, u reverzibilnu dekompoziciju relacijske sheme R možemo dodavati relacijske sheme Ri za koje vrijedi Ri ⊆ R. Povećanje broja elemenata dekompozicije neće utjecati na njenu reverzibilnost. Za reverzibilnost dekompozicije bitni su atributi sadržani u presjecima elemenata dekompozicije. Atribut A za koji vrijedi A∈Ri i A∉(Ri∩Rj), nije bitan za reverzibilnost dekompozicije. Izbacivanjem takvog atributa iz relacijske sheme Ri smanjit ćemo uniju atributa dekompozicije, ali će nova dekompozicija biti reverzibilna i odgovarat će ugrañenoj JZ. Operacijama nad relacijskim shemama u dekompoziciji, odgovaraju operacije nad relacijama zadanim na tim relacijskim shemama. Dekompoziciji relacijske sheme Ri odgovara operacija projekcije nad relacijama ri zadanim na Ri. Unija relacijskih shema dekompozicije, odgovara operaciji prirodnog pridruživanja nad relacijama zadanim na tim relacijskim shemama.
Pravila logičkog izvoñenja join zavisnosti PJ0) Na svakoj relacijskoj shemi R vrijedi JZ X (R).
164 Za reverzibilnost trivijalne JZ X(R1, R2,..., Rn) na relacijskoj shemi R, odgovorna je relacijska shema Ri za koju vrijedi Ri = R. PJ1) Neka je S = {S1, S2,..., Sn} reverzibilna dekompozicija od R (u R vrijedi JZ X(S), i neka je Y bilo koji podskup atributa za koji vrijedi Y ⊆ R. Ako u R vrijedi JZ X S, onda vrijedi i JZ X (S,Y). Ovo pravilo ne bi smjelo biti neko iznenañenje. Dodavanjem relacijske sheme Y, za koju vrijedi Y ⊆ R, u reverzibilnu dekompoziciju od R, ne mijenja se unija skupa atributa elemenata dekompozicije, i ne utječe na reverzibilnost dekompozicije. Primjer Neka je X(S) = X(AB, AC) i Y = BC. Ako je {AB, AC} reverzibilna dekompozicija od R(ABC), onda i {AB, AC, BC} mora biti reverzibilna dekompozicija od R. Neka je r(R): r( A a a a a
B b1 b2 b1 b2
C) c1 c2 c2 c1
Dekompozicija R na {R1(AB), R2(AC)} je reverzibilna:
πAB(r) = r1( A B )
πAC(r)= r2( A C )
a b1 a b2
a c1 a c2 r1Xr2 = r'( A a a a a
B b1 b1 b2 b2
C) c1 c2 c1 c2
Dekompozicija R na {R1(AB), R2(AC), R3(BC)} mora takoñer biti reverzibilna:
πBC(r) = r3( B C ) b1 c1 b2 c2 b1 c2 b2 c1 r'Xr3 = r''( A a a a a
B b1 b1 b2 b2
C) c1 c2 c1 c2
Vidimo da vrijedi r = r ' = r'', tj. dekompozicije R na R1 i R2, te R na R1, R2 i R3 su reverzibilne. PJ2) Neka je S = {S1, S2,..., Sn} , i neka je {S, X, Y} reverzibilna dekompozicija relacijske sheme R. Ako u R vrijedi JZ X (S, X, Y), mora vrijediti i X (S, XY). Drugim riječima, unija elemenata reverzibilne dekompozicije relacijske sheme ne može utjecati na reverzibilnost dekompozicije. Znamo da unija relacijskih shema odgovara prirodnom pridruživanju relacija zadanih na tim relacijskim shemama. Operacija prirodnog pridruživanja relacija (zadanih na dva elementa dekompozicije)
165 je korak u postupku kojim dokazujemo reverzibilnost dekompozicije, i ne može utjecati na samu reverzibilnost. Primjer Neka je S = {AB, AC}, te neka je X = BCD i Y = DE. Ako je {AB, AC, BCD, DE} reverzibilna dekompozicija relacijske sheme R(ABCDE), onda će i {AB, AC, BCDE} biti reverzibilna dekompozicija od R. U skladu s tim, ako u R vrijedi X(AB, AC, BCD, DE), onda mora vrijediti i X(AB, AC, BCDE). PJ3) Neka je S = {S1, S2,..., Sn}, P = {Y1, Y2,...,Ym}, i neka je {S, Y} reverzibilna dekompozicija od R a {P} reverzibilna dekompozicija od Y (tj. vrijedi Y = Y1, Y2,..., Ym, a dekompozicija P odgovara ugrañenoj JZ X(P) u R). Ako u R vrijedi { X (S, Y), X (P)}, onda vrijedi i X (S, P). Ako neki element u revezibilnoj dekompoziciji relacijske sheme R zamijenimo njegovom reverzibilnom dekompozicijom, dobivena dekompozicija će biti reverzibilna. Primjer Neka je S = {AC, ABD}, Y = BDE i P = {BD, DE}. Ako je {AC, ABD, BDE} reverzibilna dekompozicija relacijske sheme R(ABCDE) i {BD, DE} reverzibilna dekompozicija od Y(BDE), onda je i {AC, ABD, BD, DE} reverzibilna dekompozicija od R. U R dakle, mora vrijediti i X(AC, ABD, BD, DE). PJ4) Neka je S = {S1, S2,..., Sn} neka je {S, YA} reverzibilna dekompozicija od R, i neka vrijedi A∉S. Ako u R vrijedi X (S, YA), onda u R mora vrijediti i ugrañena JZ X (S, Y). Izbacivanjem atributa koji nisu bitni za reverzibilnost dekompozicije iz pojedinih elemenata dekompozicije, ukupan broj atributa dekompozicije će se smanjiti, ali dekompozicija će ostati reverzibilna. Primjer Neka je S = {BCD} i YA = DEA. Ako je {BCD, DEA} reverzibilna dekompozicija relacijske sheme R(ABCDE), onda je {BCD, DE} reverzibilna dekompozicija od R'(BCDE). Prema tome, ako u R vrijedi JZ X(BCD, DEA), onda mora vrijediti i ugrañena JZ X(BCD,DE) (kao i X(BCD,DA), X(BCD,D)) Iz pravila PJ3) i PJ4), koja se bave ugrañenim JZ, možemo izvesti pravilo PJ5): PJ5) Neka je S = {S1, S2,..., Sn}, P = {X1, X2,..., Xm}, i neka je Y podskup atributa za koji vrijedi Y⊆R. Neka su {S, Y} i P dvije reverzibilne dekompozicije relacijske sheme R, te neka su svi atributi bitni za reverzibilnost dekompozicije P elementi skupa atributa Y. Ako u R vrijedi X (S, Y), X (P), onda mora vrijediti i X (S, X1∩Y, X2 ∩Y,...,Xm ∩Y). Izbacivanjem svih atributa, koji nisu sadržani u Y iz elemenata dekompozicije P, dobili smo dekompoziciju P'. Unija svih elemenata u dekompoziciji P' jednaka je Y. Broj elemenata u dekompoziciji P jednak je broju elemenata u P'. S obzirom na to da su svi atributi odgovorni za reverzibilnost dekompozicije P sadržani u P', dekompozicija P' je reverzibilna. Prema tome, P' je reverzibilna dekompozicija od Y. Ako u dekompoziciji {S, Y} zamjenimo element Y njegovom reverzibilnom dekompozicijom P', dobit ćemo modificiranu, ali reverzibilnu dekompoziciju (PJ3).
166 Primjer Neka su R(ABCDE) i Y(BDE), te neka je S = {AC, ABD} i P = {ABD, CDE}. Neka u R vrijede JZ X(AC, ABD. BDE) i X(ABD, CDE). U R mora vrijediti i JZ X(AC, ABD, BD, DE). Na osnovi aksioma AJ0) - AJ4) možemo, polazeći od nekog skupa JZ zadanih na relacijskoj shemi R, izvesti skup JZ koji logički proizlazi iz zadanog skupa. Kao što je spomenuto, skup pravila za logičko izvoñenje JZ vjerojatno nije potpun, ali i takav kakav je poslužit će za pronalaženje JZ u relacijskoj shemi. U skupu pravila ne spominju se eksplicitno FZ i VZZ. Postavlja se pitanje kakvu ulogu imaju ove vrste zavisnosti u postupku logičkog izvoñenja JZ. Pokazali smo da je VZZ poseban slučaj JZ, kao i da je FZ poseban slučaj VZZ. Prema tome, sve FZ i VZZ, zadane na relacijskoj shemi R, smatramo JZ na R. Dakle, skup FZ i VZZ zadan na relacijskoj shemi, kao i svaki drugi skup JZ, logički implicira neki skup JZ na toj relacijskoj shemi. Smatramo da JZ logički proizlazi iz nekog skupa zavisnosti F, zadanog na R, ako je reverzibilnost dekompozicije, koja odgovara JZ, posljedica zavisnosti u F. Za nas je posebno interesantan skup FZ o ključevima relacijske sheme i odnos tog skupa prema JZ u relacijskoj shemi. Naime, u prethodnim koracima normalizacije odstranili smo sve ostale FZ i VZZ iz relacijske sheme (koja se nalazi u 4NF). JZ zadana na relacijskoj shemi u 4NF, može, ali i ne mora, logički proizlaziti iz skupa FZ o ključevima u R. Polazeći od algoritma koji su razvili Aho, Beeri i Ullman (1977) (tzv. membership algoritam), Fagin (1979) je definirao algoritam pomoću kojeg možemo ustanoviti da li odreñena JZ u relacijskoj shemi logički proizlazi iz skupa FZ o ključevima relacijske sheme. Ukratko ćemo skicirati taj algoritam. Neka je R relacijska shema, i neka je F = {K1→R, K2→R,..., Kn→R} skup FZ o ključevima zadan na R, a elementi skupa {K1, K2,..., Kn} mogući ključevi u R. Neka je u R zadana JZ j= X(R1, R2,..., Rm).
Algoritam ELEMENTJZ ULAZ: JZ j i skup FZ F. IZLAZ: ISTINA ako F logički implicira j, inače LAŽ. ELEMENTJZ(j, F) 1) Definirajte skup relacijskih shema S = {R1, R2,..., Rm }. 2) Za svaki par relacijskih shema Ri, Rj u JZ j, ispitajte da li vrijedi Ki⊆(Ri∩Rj). Ako je uvjet ispunjen, zamijenite relacijske sheme Ri i Rj u S s njihovom unijom RiRj. Na taj način, svaki put kad je uvjet ispunjen, ukupan broj elemenata u S smanjit će se za jedan. 3) Ako, kao rezultat obrade u 2), dobijemo S = {R} (tj. skup S ima samo jedan element), znači da JZ j logički proizlazi iz F. U protivnom, ako skup S sadrži više od jednog elementa, JZ j ne može biti logički izvedena iz F. Primjer Neka je R(ABCD) relacijska shema, i neka su atributi A i B mogući ključevi u R. Neka je u R zadana JZ X(AB, AD, BC). Treba ustanoviti da li zadana JZ logički proizlazi iz skupa mogućih ključeva u R. 1) S = {AB, AD, BC}; 2) za A→ABCD vrijedi A∈AB∩AD S = {ABD, BC} za B→ABCD vrijedi B∈ABD∩BC S = {ABCD}
167 3) Budući da vrijedi S = {ABCD}, skupa mogućih ključeva u R.
zavisnost X(AB, AD, BC) logički proizlazi iz
S obzirom da vrijedi Ki→R i Ri⊆R, iz uvjeta Ki⊆Ri∩Rj slijedi (Ri∩Rj) → Ri i (Ri∩Rj) → Rj. Na osnovi Rissanenovog uvjeta nezavisnosti relacijskih shema, znamo da je svaka dekompozicija relacijske sheme R, koja proizlazi iz skupa FZ, reverzibilna samo ako su sve relacijske sheme u dekompoziciji od R meñusobno povezane stranim ključevima, odnosno ako vrijedi: (Ri∩ ∩Rj) → Ri ili (Ri∩ ∩Rj) → Rj Kako je taj uvjet, očigledno, zadovoljen, dekompozicija koja odgovara JZ je reverzibilna, odnosno JZ proizlazi iz skupa FZ o ključevima u R. Da bismo ispitali da li JZ proizlazi iz nekog proizvoljnog skupa FZ zadanog na relacijskoj shemi R, algoritam ELEMENTJZ bi morao biti modificiran. Evo o čemu je riječ. Neka je R relacijska shema i neka vrijedi X,Y⊆R. Neka je F skup FZ zadan R i neka je X→Y∈F. Na kraju, neka je {R1, R2,..., Rn} dekompozicija od R. Iz uvjeta X⊆ (Ri∩Rj) ne proizlazi X⊆Ri ili X→Rj. Tek ako vrijedi (Ri-X)⊆Y, vrijedi X⊆R i. Da bi mogli ustanoviti da li zadana JZ proizlazi iz nekog skupa VZZ, u algoritmu ELEMENTJZ morao bi se koristiti modificirani Rissanenov uvjet reverzibilnosti dekompozicije: (Ri∩Rj) →→(Ri-Rj) (Rj-Ri)
14.2. PROJEKT-JOIN normalna forma Vidjeli smo vezu koja postoji izmeñu skupa FZ i VZZ zadanih na relacijskoj shemi i mogućnosti reverzibilne dekompozicije relacijske sheme s jedne, te anomalija održavanja s druge strane. Osim trivijanih zavisnosti i FZ o ključevima relacijske sheme, sve ostale zavisnosti su izazivale anomalije održavanja. Dekompozicijom relacijske sheme odstranjivali smo nepoželjne zavisnosti i rješavali se anomalija održavanja. Naravno, dekompozicija mora biti reverzibilna, tj. ne smije biti povezana s gubitkom informacija. To je razlog naše potrage za reverzibilnim dekompozicijama relacijske sheme. Prevoñenjem relacijske sheme u 4NF, odstranili smo iz nje sve VZZ (osim trivijalnih i FZ o ključu). U relacijskoj shemi koja se nalazi u 4NF, pored JZ koje proizlaze iz trivijalnih VZZ i FZ o ključu sheme, mogu postojati i JZ koje nisu VZZ. Kao što Date na jednom mjestu rezignirano kaže: 'vjerojatno je i te zavisnosti potrebno odstraniti iz relacijske sheme'. Naime, ovakve JZ u relacijskoj shemi uzrok su anomalija održavanja. Razmotrimo kakav oblik poprimaju te anomalije kad su u pitanju JZ. Neka je R(ABC) relacijska shema na kojoj je zadana JZ X(AB, AC, BC) i neka je r relacija zadana na R: 1) 2) 3) 4)
r( A B a b a b1 a1 b a b
C) c1 c c c
Da bi r(R) zadovoljavala JZ X(AB, AC, BC), uvijek kada sadrži n-torke 1), 2), i 3) mora sadržavati i n-torku 4). To praktično znači da u momentu kad se u relaciju r upiše posljednja od prve tri n-torke, treba upisati i n-torku 4) (anomalija dodavanja). Obratimo pažnju na činjenicu da naknadno brisanje neke od prve tri ntorke ne povlači za sobom automatski i brisanje n-torke 4). Meñutim, ako želimo iz relacije izbaciti n-torku 4), onda moramo izbaciti i neku od prve tri n-torke (anomalija brisanja). Pri tome se postavlja pitanje izbora n-torke i odgovornosti za taj izbor. Iako to nije previše uočljivo, u relaciji koja zadovoljav JZ postoji i redundancija i s njom u
168 vezi potencijalna inkonzistencija. Lakše ćemo ih vidjeti na semantičkom primjeru. Neka je R(TRGOVINA DOBAVLJAČ PROIZVOD) relacijska shema i neka je r relacija zadana na R: r(TRGOVINA NAMA NAMA ROMA NAMA˙
DOBAVLJAČ ISKRA GORENJE ISKRA
PROIZVOD) MIKSER VENTILATOR VENTILATOR
ISKRA
VENTILATOR
Prve tri n-torke u relaciji možemo shvatiti kao premise: -
'NAMA' prodaje proizvode od 'ISKRE'. 'NAMA' prodaje ventilatore. 'ISKRA' proizvodi ventilatore.
Zaključak, koji slijedi iz ovih premisa, jest: -
'NAMA' prodaje ventilatore 'ISKRA'.
Ako relacija u kojoj je zadana JZ sadrži sve premise potrebne za donošenje odreñene vrste zaključka, onda mora sadržavati i zaključak. Sad možemo uočiti redundanciju. Pored toga što zaključak može biti izveden, on mora biti i eksplicitno naveden u relaciji (četvrta n-torka). Jasna je i potencijalno prisutna opasnost od inkonzistencije koja će nastupiti ako u relaciju ne bude upisan zaključak, nakon što je upisana posljednja premisa, ili ako iz relacije bude naknadno uklonjen zaključak, a ne bude uklonjena i bar jedna premisa potrebna za njegovo donošenje. Da bismo spriječili anomalije održavanja, iz relacijske sheme moramo ukloniti JZ. Time relacijsku shemu prevodimo u projekt-join normalnu formu (PJNF). Postoji nekoliko PJNF. Upoznat ćemo se s njihovim definicijama i prodiskutirati razlike meñu njima. Maier (1983) je dao dvije definicije od kojih prva glasi: Neka je R relacijska shema i neka je F skup zavisnosti zadan na R. R je u PJNF, s obzirom na F, ako za svaku JZ X (R1, R2,..., Rn) koja proizlazi iz F vrijedi da je trivijalna ili da svaki element dekompozicije Ri sadrži ključ od R. Baza podataka nalazi se u PJNF, ako se svaka relacijska shema u bazi nalazi u PJNF. Razlog, zbog kojeg se dozvoljava da relacijska shema R u PJNF sadrži netrivijalnu JZ X(R1, R2,..., Rn) u kojoj svaka Ri sadrži ključ od R, je slijedeći: Ako svaka Ri sadrži ključ od R, projekcija relacije r(R) na Ri imat će isti broj n-torki kao i r. Prema tome , ne postoji mogućnost da se dekompozicijom smanji redundancija. Primjer 1 Neka je R(ABCDEI) relacijska shema na kojoj je zadan skup zavisnosti F = { X(ABCD, CDE, BDI), X(AB, BCD, AD), A→BCDE, BC→AI}. Ključevi od R su A i BC. R se ne nalazi u PJNF prema gornjoj definiciji, s obzirom na JZ X(ABCD, CDE, BDI). Da bismo relacijsku shemu transformirali u PJNF, morali bi je dekomponirati na R 1(ABCD), R2(CDE) i R3(BDI). Prema Yangu (1986), postoje tri PJNF (PJNF, jaka PJNF i najjača PJNF). Definicija PJNF koju navodi Yang ekvivalentna je definiciji koju je dao Maier. Druga definicija koju daje Maier (1983) jednaka je originalnoj definiciji PJNF, koju je dao Fagin (1979) i koja glasi: Neka je R relacijska shema, neka je V skup zavisnosti zadan na R, i neka je F skup FZ o ključevima od R. Relacijska shema R se nalazi u PJNF, ako se nalazi u
169 1NF, i ako za svaku JZ X (R1, R2,..., Rn), koja proizlazi iz V, vrijedi da je trivijalna ili da proizlazi iz F. Baza podataka nalazi se u PJNF, ako se svaka relacijska shema u bazi nalazi u PJNF. Ovo je nešto jača definicija od prethodne i njome se zahtijeva da u presjeku elemenata dekompozicije Ri∩Rj bude sadržan jedan od ključeva od R. Prema Yangu(1986), relacijska shema, koja zadovoljava ovu definiciju, nalazi se u jakoj PJNF. Primjer 2 Neka je R(ABC) relacijska shema na kojoj je zadan skup zavisnosti V= { X( AB, BC), A→BC, C→AB}. Skup F = {A→BC, C→AB} je skup zavisnosti o ključevima od R. Relacijska shema R nalazi se u PJNF, jer elementi dekompozicije sadrže ključeve od R (AB sadrži ključ A, a BC sadrži ključ C). Relacijska shema R ne nalazi se u jakoj PJNF, jer JZ X(AB, BC) ne proizlazi iz skupa zavisnosti o ključevima od R (ključevi od R nisu u presjeku elemenata dekompozicije). Definicija najjače PJNF prema Yangu (1986) je: Neka je R relacijska shema, neka je V skup zavisnosti zadan na R, neka je F skup FZ o ključevima od R, i neka za FZ Ki→ →R vrijedi Ki→ →R∈ ∈F. Relacijska shema R nalazi se u najjačoj PJNF, ako se nalazi u 1NF, i ako za svaku JZ X (R1, R2,..., Rn), koja proizlazi iz V, vrijedi da je trivijalna ili da proizlazi iz Ki→ →R. Baza podataka nalazi se u najjačoj PJNF, ako se svaka relacijska shema u bazi nalazi u najjačoj PJNF. Ovom definicijom traži se da svaka JZ proizlazi iz FZ o jednom ključu od R. Dakle u svim presjecima Ri∩Rj dekompozicije mora biti sadržan isti ključ od R. Smatramo da se relacijska shema koja zadovoljava ovaj uvjet, nalazi u najjačoj PJNF. Primjer 3 Neka je R(ABCD) relacijska shema na kojoj je zadan skup zavisnosti V = {X( AB, AD, BC), A→BD, B→AC}. Iz V proizlazi da su ključevi relacijske sheme R, A i B, odnosno da je skup zavisnosti o ključevima F = {A→R, B→R }. Relacijska shema se nalazi u PJNF s obzirom na V, jer svi elementi dekompozicije sadrže ključ od R. R se nalazi u jakoj PJNF, jer presjeci elemenata dekompozicije sadrže ključ od R (AB∩AD = A, i AB∩BC = B). R se ne nalazi u najačoj PJNF, jer se u presjecima elemenata dekompozicije nalaze različiti ključevi. Konverzija relacijske sheme u vertikalnoj normalizaciji izvodi se pomoću operacija dekompozicije i unije. Operacija dekompozicije relacijske sheme odgovara operaciji projekcije relacije zadane na relacijskoj shemi, a unija shema odgovara operaciji prirodnog pridruživanja relacija na tim relacijskim shemama. Dekompozicija i unija relacijskih shema, koje se izvode u okviru vertikalne normalizacije, moraju biti takve da odgovarajuće operacije projekcije i prirodnog pridruživanja budu meñusobno inverzne. Kako je vertikalna normalizacija ograničena na operacije projekcije i prirodnog pridruživanja relacija zadanih na relacijskim shemama, PJNF (odnosno najjača PJNF) je najviša normalna forma koja se može postići. To ne znači da se u relaciji zadanoj na relacijskoj shemi u najjačoj PJNF, anomalije ne mogu javiti. To samo znači da vertikalna normalizacija više ništa ne može učiniti da bi te anomalije odstranila.
170
171
15. HORIZONTALNA NORMALIZACIJA Za razliku od vertikalne, horizontalna normalizacija se izvodi pomoću operacija selekcije i unije relacija zadanih na relacijskim shemama. Pri horizontalnoj normalizaciji skup atributa od kojeg se sastoji relacijska shema ostaje nepromijenjen. Skup n-torki, od kojih se sastoji relacija zadana na relacijskoj shemi, u okviru horizontalne normalizacije dijeli se na podskupove koje nazivamo fragmentima relacije. Pojedini fragmenti relacije izdvajaju se operacijom selekcije i definirani su kriterijem za izdvajanje. Neka je R relacijska shema na kojoj je zadana relacija r. Neka je si(R) fragment relacije r(R). Fragment si definiran je kriterijem selekcije Ci, tj.: si = σCi(r) Da bi horizontalna normalizacija bila reverzibilna, relacija mora biti jednaka uniji svih svojih fragmenata. Drugim riječima, ne smije se dogoditi da neke od n-torki relacije budu, u toku fragmentacije, izgubljene. Neka su s1, s2 ,...,sn fragmenti relacije r, neka je si definirano kriterijem selekcije Ci. Skup { C1, C2,..., Cn} prema Maieru (1983), nazivamo shemom fragmentacije. Formalnu definiciju sheme fragmentacije možemo naći kod Maiera (1983). Za nas će biti dovoljno ako kažemo da shema fragmentacije mora biti takva da bude zadovoljen uvjet: r = ∪( s1, s2 ,...,sn) tj. da unija svih fragmenata bude jednaka početnoj relaciji. Ako svaka n-torka u relaciji zadovoljava neki sumarni uvjet C0, shema fragmentacije mora zadovoljavati uvjet: C0 → C1 ∨ C2 ∨ ...∨ Cn Kriteriji C1 ∨ ...∨ Cn moraju biti takvi da svaka n-torka, koja zadovoljava sumarni kriterij C0, zadovoljava najmanje jedan od kriterija u shemi fragmentacije (svaka n-torka relacije r mora zadovoljavati najmanje jedan od kriterija selekcije u shemi fragmentacije). Kao što je ranije spomenuto, zasada nije potpuno razvijena teorija horizontalne normalizacije. U literaturi se mogu naći pojedinačni primjeri kojima se ilustriraju neke od mogućnosti horizontalne normalizacije (Smith, 1978; Maier, 1983b). S tri primjera ilustrirat ćemo neke od tih mogućnosti. Jedan od osnovnih zadataka vertikalne normalizacije jest transformacija skupa zavisnosti koji je zadan na relacijskoj shemi. To se postiže dekompozicijom relacijske sheme, pri čemu se lijeva i desna strana zavisnosti pohranjuju u različite sheme. Kod horizontalne normalizacije skup atributa relacijske sheme se ne mijenja. Interesantno je da se i horizontalnom normalizacijom može mijenjati skup zavisnosti zadan na relacijskoj shemi. Premda to nije bilo posebno naglašeno, s tim smo se susreli kad smo govorili o ograničenjima na relaciji. U jednom primjeru smo vidjeli da relacija, u kojoj se nalazi samo jedna n-torka, zadovoljava sve FZ koje su moguće na odgovarajućoj relacijskoj shemi. Lako se možemo uvjeriti da na toj relaciji vrijede i sve moguće VZZ i JZ. Prirodnim pridruživanjem projekcija takve relacije uvijek ćemo dobiti polaznu n-torku. Povećanjem broja n-torki u relaciji postepeno će se smanjivati broj ograničenja koja su zadovoljena. Općenito, ograničavanjem vrijednosti pojedinih atributa, možemo mijenjati skup zavisnosti koje vrijede u relaciji. Razmotrimo to na jednom poznatom primjeru.
172 Primjer 1 Neka je R(PAL) relacijska shema na kojoj je zadan skup zavisnosti F = { PA → L, L → A } . Relacijska shema R nalazi se u 3NF i ne može biti prevedena u BCNF bez gubitka zavisnosti. Relacijske sheme R1(LA) i R2(PL), koje su elementi dekompozicije od R, nalaze se u BCNF. Dekompozicija je reverzibilna, ali skup FZ F nije očuvan. Zavisnost PA r2 L ne može biti izvedena iz skupa zavisnosti zadanih na relacijskim shemama R1 i R2. Razmotrimo što je u ovom slučaju moguće učiniti uz pomoć horizontalne normalizacije. Neka je r relacija zadana na relacijskoj shemi R. Neka su r1 i r2 i projekcije od r, zadane na R1 i R2. Projekciju r1, na kojoj je zadana zavisnost L → A, memorirat ćemo kao takvu. Što se tiče projekcije r2, podijelit ćemo je na fragmente, tako da u svaki od fragmenata ulaze n-torke s odreñenom vrijednošću atributa A, tj.: si = πPL(σA =const (r)) Ako je vrijednost atributa A konstanta, onda zavisnost PA → L prelazi u jaču zavisnost P → L. Na osnovi aksioma uvećanja iz zavisnosti P → L možemo izvesti zavisnost PA → L, pa je prema tome skup F očuvan. U slijedećem primjeru, koji navodi Smith (1978), horizontalna normalizacija se koristi da bi se odstranila redundancija iz relacije. Primjer 2 Neka je r relacija zadana na relacijskoj shemi R(DOBAVLJAČ PROIZVOD). Neka se svi dobavljači mogu podijeliti u dvije grupe: univerzalni dobavljači, koji mogu isporučiti sve vrste proizvoda, - specijalizirani dobavljači, preko kojih se mogu nabaviti samo neke vrste proizvoda. Podjelom relacije r(R) na dva fragmenta, od kojih prvi sadrži n-torke univerzalnih dobavljača (ur), a drugi sve ostale n-torke (sr), stvorit ćemo interesantnu situaciju. Kako svaki univerzalni dobavljač može isporučiti sve vrste proizvoda, fragment je Kartezijev produkt svih vrijednosti atributa PROIZVOD sa skupom vrijednosti atributa DOBAVLJAČ. Relacija ur zadovoljava VZZ ∅ →→ DOBAVLJAČ PROIZVOD (to nije trivijalna zavisnost!). VZZ možemo odstraniti tako da relaciju ur rastavimo na dvije projekcije urd = πDOBAVLJAČ(ur) i urp = πPROIZVOD(ur). Na taj način spriječili smo redundanciju i prateće anomalije održavanja, što ne bi bilo moguće učiniti u relaciji r. Slijedeći primjer, koji takoñer potječe od Smitha (1978), ilustrira još jednu mogućnost horizontalne normalizacije. Primjer 3 Neka je R(VRSTA-VOZILA...BROJ-OSOVINA...RASPON-KRILA...DUBINAGAZA...) relacijska shema. Zavisno o vrsti, vozilo ima odreñena svojstva. Tako, naprimjer, kopneno vozilo ima točkove rasporeñene na odreñenom broju osovina, letjelica ima krila s odreñenim rasponom itd. Pojedine vrste vozila neće imati neka od svojstava čiji atributi su dio relacijske sheme R. U takvom slučaju morat ćemo, kao vrijednost atributa, upisati nul-vrijednost. Nul-vrijednosti, koje, u pravilu, izazivaju dosta problema u bazi podataka, možemo odstraniti pomoću horizontalne normalizacije. Relaciju r(R) podijelit ćemo, prema vrijednosti atributa VRSTAVOZILA, na fragmente. Projekcijom svakog od tih fragmenata na atribute, koje odreñena vrsta vozila posjeduje, riješit ćemo se nul-vrijednosti. S ovih nekoliko primjera ilustrirane su neke od mogućnosti horizontalne normalizacije. Samostalno ili u kombinaciji s vertikalnom normalizacijom, horizontalna normalizacija može biti vrlo korisna u postupku modeliranja baze podataka. S porastom broja distribuiranih baza podataka povećat će se, vjerojatno, i značenje horizontalne normalizacije.
173
174
16. LITERATURA Abiteboul, S, R.Hull and V.Vianu (1995): Foundations of Databases, AddisonWesley, Reading, MA, 1995. Aho, A.V., C.Beeri i J.D.Ullman (1979): The theory of joins in relational databases, ACM Trans. Database Syst. 4, 3, str. 297-314. Preliminarna verzija objavljena u Proc. Eighteenth Annual IEEE Simp. on Fundations of Computer Science, 1977., str.107-113, 1979. Armstrong, W.W. (1974): Dependency structures of data base relationships, Proc. IFIP Congr. 74, str. 580-583, North-Holland, Amsterdam, 1974. Atzani, P. and V.De Antonellis: Relational Database Theory, Benjamin-Cummings, 1993. ANSI/X3/SPARC (1975): Study group on data base management systems: interim report, FDT 7, 2 (Bulletin of ACM SIGFIDET), 1975. Ausiello, G., A.D.Atri i D.Sacca (1983): Graph Algorithms for Functional Dependency Manipulation, J. ACM 30, 4, str.752-766, 1983. Bachman, C.W. (1975): Trends on database management, Proc. NCC, AFIPS, 44, str. 69-75, 1975. Beeri, C. (1980): On the membership problem for functional and multivalued dependencies in relational databases, ACM Trans. on Database Systems, 5, str. 241-259, 1980. Beeri, C. i P.A.Bernstein (1979): Computatinal problems related to the design of normal form relational schemes, ACM Trans.on Database Systems, 4, str.30-59, 1979. Beeri, C., R.Fagin i J.H.Howard (1977): A complete axiomatization for functional and multivalued dependencies, Proc. ACM SIGMOD Conf., 1977, str. 47-61, 1977. Bernstein, P.A. (1976): Synthesizing third normal form relations from functional dependencies, ACM Trans. on Database Systems, 1, str. 277-298, 1976. Brodie, M.L. (1981): Association: A database abstraction for semantic modelling, Proc. 2nd International Entity-Relationship Conference, Washington, D.C., 1981. Cadiou, J.M. (1975): On semantic issues in the relational model of data, Proc. Int. Symp. on Math. Foundations of Computer Science, Gdanjsk, Poljska, Lecture Notes in Computer Science, Springer-Verlag, Heidelberg, 1975. Chamberlin, D.D. (1976): Relational data-base management system, ACM Comput. Surv., 8, str. 43-66, 1976. CINCOM (1986): NORMAL, Design Users Guide, P26-9261-01, Cincom Systems, 2300 Montana Av., Cincinnati, OH, 1986. Codd, E.F. (1970): A relational model of data for large shared data banks, Commun. ACM, 13, str. 377-387, 1970. Codd, E.F. ((1971): Normalized data base structure: A brief tutorial, Proc. ACM SIGFIDET Workshop on Data Description, Access and Control, str.1-17, 1971. Codd, E.F. (1972a): Further normalization of the data base relational model, u Data Base Systems (ed. R. Rustin), str. 33-64, Prentice-Hall, Englewood
175 Cliffs, NJ, 1972. Codd, E.F. (1972b): Relational completness of data base sublanguages, u 'Data Base Systems' (ed. R. Rustin), str. 65-98, Prentice-Hall, Englewood Cliffs, NJ, 1972. Codd, E.F. (1974): Recent investigations in relational data-base systems, 1974 IFIP Conf., str. 1017-1021, 1974. Codd, E.F. (1975): Understanding relations, (Installment 7), FDT 7, no.3-4, str.2328 (Bulletin of ACM SIGMOD), 1975. Codd, E.F. (1979): Extending the database relational model to capture more meaning, ACM Trans.on Database Systems, 4, str. 397-434,1979. Codd, E.F. (1981): Data Models in Database Management, ACM SIGMOD Rec., 11, no. 2, 1981. Codd, E.F. (1982): A practical foundation for productivity, Commun. ACM, 25, no. 2, 1982. Codd.E.F. (1985a): Is your DBMS really relational?, Computerworld, 21.10.1985, 1985. Codd, E.F. (1985b): Does your DBMS run by the rules?, Computerworld, 28.10.1985. Čubrilo, M. (1988): Matematička logika za ekspertne sisteme, Informator, Zagreb. 1988. Date, C.J. (1983): An Introduction to Database Systems, vol. II., Addison-Wessley, Reading, MA, 1983. Date, C.J. (1986a): An Introduction to Database Systems, vol. I., četvrto izdanje, Addison-Wessley, Reading MA, 1986. Date, C.J. (1986b): Relational Database: Selected Writings, Addison-Wessley, Reading, MA, 1986. Date, C.J. (1992): A Normalization Problem, The Relational Journal, Vol.4, No. 2, April/May 1992. Date, C.J. (1994): An Introduction to Database Systems, šesto izdanje AddisonWessley, Reading, MA, 1994. Delobel, C. (1978): Normalization and hierarhical dependencies in the relational data model, ACM Trans. on Database Systems, 3, str. 201-222, 1978. Delobel, C. i R.G.Casey (1973): Decomposition of data base and the theory of boolean switching functions, IBM J. of Research and Development, 17, str. 484-485, 1973. Engles, R.W. (1970): A Tutorial on Data-Base Organization, IBM Systems Development Division, Tr. 00. 2004, New York, NY, 1970. Fagin, R. (1977): Multivalued dependencies and new normal form for relational databases, ACM Trans. on Database Systems, 2, str. 262-278, 1977 Fagin, R. (1979): Normal forms and relational database operators, ACM SIGMOD Conf. 1979, str. 153-160, 1979. Galil, Z. (1979): An Almost Linear-Time Algorithm for Computing a Dependency Basis in Relational Databases, IBM Report, RJ 2656, San Jose, CA, 1979. Hagihara, K., M.Ito, K.Tanaguchi i T.Kasami (1979): Decision problems for multivalued dependencies in relational databases, SIAM J.Computing, 8, str. 247-257, 1979. Heath, I.J. (1971): Unacceptable File Operations in a Relational Database, Proc. 1971 ACM SIGFIDET Workshop on Data Description, Access and Control, San Diego, Cali. (November 1971).
176 Hall, P., J.Owlett i S.J.P.Todd (1976): Relations and entities, u 'Modelling in Data Base Management Systems' (ed. G. M. Nijssen), str. 201-220, North-Holland, Amsterdam, 1976. Kent, W. (1978): Data and Reality, Elsevier North-Holland, New York, NY, 1978. Kent, W. (1983): A simple guide to five normal forms in relational database theory, Commun. ACM, 26, str.120-125, 1983. Langefors,B. (1974): Information systems, Proc. IFIP Congr. 1974, str. 937-945, North-Holland, Amsterdam, 1974. Lacroix, M. i A.Pirotte (1976): Generalized joins, ACM SIGMOD Rec., 8, str. 14-15, 1976. Ling, T.W., F.W.Tompa, i T.Kameda (1981): An Improved Third Normal Form for Relational Databases, ACM Trans. on Database Systems, 6, 2, str. 329-346, 1981. Lipski, W.Jr. (1979): On semantic issues connected with incomplete databases, ACM Trans.on Database Systems, 4, str. 262-296, 1979. Maier, D. (1980): Minimum covers in the relational database model, JACM, 27, str. 664-674, 1980. Maier, D. (1983): The Theory of Relational Databases, Computer Science Press, Rockville, MA, 1983. Maier, D. (1983b): Fragments of relations, ACM SIGMOD Rec., 13, str. 15-22, 1983. Mendelzon, A.O. (1979): On axiomatizing multivalued dependencies in relational databases, JACM, 26, str. 37-44, 1979. Mannila, H. and K.J.Raiha (1992): The Design of Relational Databases, AddisonWesley, Reading, MA, 1992. Nicolas, J.M. (1978): Mutual dependencies and some results on undecomposable relations, Proc.4th Int.Conf.Very Large Data Bases, str. 360-368, 1978. Rissanen, J. (1977): Independent components of relations, ACM Trans. Database Syst., 2, str. 317-325, 1977. Sagiv, Y. (1980): An algorithm for interferring multivalued dependencies with an application to propositional logic, JACM, 27, str. 250-262, 1980. Schmid, H.A. i J.R.Swenson (1975): On the semantics of the relational data model, Proc. ACM SIGMOD Conf.1975, str. 211-223, 1975. Sciore, E. (1982): A complete axiomatization on full join dependencies, JACM, 29, str. 373-393, 1982. Smith, J.M. (1978): A normal form for abstract syntax, Proc. 4th Int. Conf. Very large Data Bases, str.156-162, 1978. Smith, J.M. i D.C.P.Smith (1977): Database abstractions: aggregation and generalization, ACM Trans. Database Syst., 2, str.105-133, 1977. Tkalac, S. (1986): Višeznačna ovisnost i ključ relacije u Boyce-Coddovoj normalnoj formi, Informatologia Yugoslavica, 18, str.17-25, 1986. Tkalac, S. (1990): Pregled grafičkih metoda za rad sa skupom funkcijskih zavisnosti, u Informacijske znanosti i znanje (ed.: S.Tkalac i M.Tuñman), Zavod za informacijske studije, Zagreb, 1990. Tkalac, S i V.Mateljan(1992): Prijedlog modifikacije Bernsteinovog algoritma za vertikalnu normalizaciju sintezom, Informatologia, vol.24, no.1, str.1-11, 1992. Ullman, J.D. (1980): Principles of Database Systems, Computer Science Press,
177 Rockville, MA, 1980. Ullman, J.D. (1988): Principles of Database and Knowledge-Base Systems, Vol.I, Computer Science Press, New York, 1988. Ullman, J.D. and J. Widom (1997): A First Course in Database Systems, Prentice Hall, Upper Sadle River, N.J., 1997. Vassiliou, Y. (1979): Null values in database management: a denotational semantic approach, ACM SIGMOD Conf. 79, str. 162-169, 1979. Zaniolo, C. (1976): Analysis and Design of Relational Schemata for Database Systems, Doktorska disertacija, UCLA, Los Angeles, CA, 1976. Zaniolo, C. (1977): Relational views in a database system support for queries, Proc. IEEE COMPSAC 77, 1977. Zaniolo, C. (1982): A New Normal Form for the Design of Relational Database Schemata, ACM TODS 7, No. 3 (September 1982). Zaniolo, C. and M.A.Melkanoff, (1981): On the design of relational database schemata, ACM Transactions on Database Systems, vol. 6, no.1, str.1-47, 1981. Yang, C.C. (1986): Relational Databases, Prentice-Hall, Englewood Cliffs, NJ, 1986.
178
KAZALO 1NF 126 2NF 128 3NF 129 4NF 155 Adresibilnost 25 Agregacija 18 Aksiomi za logičko izvoñenje FZ 66 Armstrongovi aksiomi 66 B-aksiomi 70 Aksiomi za logičko izvoñenje VZZ 148 Armstrongovi aksiomi 66, 148 Komplement 148 Repliciranje 148 Tranzitivnost za VZZ 148 Uvećanje za VZZ 148 Združivanje 148 Aktivna domena 21 Akumulacija 70 Algoritam BOX 152 DERED 89 DERIV 82 EKVIV 82 ELEMENT 78 ELEMENTJZ 166 LERED 88 MINPOK 96 NEREDPOK 84 RED 89 SINTEZA 134 ZAT2 76 ZATVARAČ 75 Anomalije održavanja 117 Anomalija brisanja 118 Anomalija dodavanja 118 Potencijalna inkonzistencija 118 Redundancija 117 ANSI model 6 Armstrongovi aksiomi 66 Refleksivnost 67 Uvećanje 67 Tranzitivnost 67 Asocijacija 17 Atribut 12, 15, 21 Jednostavni atribut 21 Primarni atribut 25 Sastavljeni atribut 21 Vrijednost atributa 12 Atributi koji nisu neophodni 104 B-aksiomi 70
179 Refleksivnost 70 Akumulacija 70 Projektivnost 70 Baza zavisnosti 151 BCNF 139 BOX 152 Boyce-Coddova normalna forma 139 Crtkana FZ staza 107 Četvrta normalna forma 155 Dekompozicija bez gubitaka zavisnosti 123 Dekompozicija bez gubitka informacija 120, 154 DERED 89 DERIV 82 Derivacijski niz 69 RAP derivacijski niz 71 Dijeljenje 43, 46 Domena 21 Aktivna domena 21 Jednostavna domena 21 Sastavljena domena 21 Druga normalna forma 128 EKVIV 82 Ekvivalencija FZ grafova 108 Ekvivalencija skupova atributa 93 Ekvivalencija skupova funkcijskih zavisnosti 81 Ekvivalencija vrhova 110 ELEMENT 78 ELEMENTJZ 166 Entitet 11 Izvedeni entitet 12 Izvorni entitet 12 Odnos meñu entitetima 12 Svojstvo entiteta 12 Entitetski integritet 47 Funkcijska zavisnost 13, 28 FZ 13, 28 Tranzitivne zavisnosti FZ 139 Parcijalna funkcijska zavisnost 128, 139 Puna funkcijska zavisnost 128 Trivijalna FZ 67 FZ staza 107 Generalizacija 17 Generičke strukture 17 Grafički prikaz skupa funkcijskih zavisnosti 105 Crtkana FZ staza 107 Ekvivalencija vrhova 110 Ekvivalencija FZ grafova 108 FZ staza 107 Jednostavni vrh 105 Puna FZ staza 107 Sastavljeni vrh 105 Suvišni vrh 111 Grupa koja se ponavlja 127 Horizontalna normalizacija 119, 171 Informacija 15
180 Agregacija 18 Asocijacija 17 Generalizacija 16 Generičke strukture 17 Klasifikacija 16 Izvedeni entitet 12 Izvorni entitet 12 Jaka PJNF 169 Jednostavna domena 21 Jednostavni atribut 21 Jednostavni vrh 105 Jednoznačnost ključa 24 Join zavisnost 159 JZ 159 Ugrañena JZ 162 Trivijalna JZ 163 Kanonski pokrivač 92 Karakteristični skup 98 Kartezijev produkt 22, 31, 36 Klasifikacija 16 Ključ 24 Jednoznačnost ključa 24 Minimalnost ključa 24 Mogući ključ 25, 125 Primarni ključ 25, 125 Strani ključ 26 Superključ 24 Komplement 148 LD-minimalni FZ graf 113 LERED 88 Logičko izvoñenje funkcijskih zavisnosti 66 Armstrongovi aksiomi 66 B-aksiomi 70 Derivacijski niz 69 Pravila logičkog izvoñenja FZ 68 RAP derivacijski niz 71 Logičko izvoñenje join zavisnosti 163 Logičko izvoñenje višeznačnih zavisnosti 147 Aksiomi za logičko izvoñenje VZZ 148 Pravila logičkog izvoñenja VZZ 149 Miješovita pseudotranzitivnost 150 Minimalni FZ graf 112 Minimalni pokrivač 96 Minimalnost ključa 24 MINPOK 96 MOŽDA operacije 57 MOŽDA operator 57 Model 5 Mogući ključ 25, 125 N-torka 23 Najjača PJNF 169 Nasljeñivanje svojstava 17 NEREDPOK 84 Neredundantni pokrivač 83 Normalizacija 117
181 1NF 126 2NF 128 3NF 129 4NF 155 BCNF 139 Horizontalna normalizacija 119, 171 PJNF 167 Vertikalna normalizacija 118-142, 155-157, 167-169 Vertikalna normalizacija dekompozicijom 124-132, 139-142, 155157, 167-169 Vertikalna normalizacija sintezom 133-138 Vlasnik relacijske sheme 125 Nul-vrijednost 53Odnos meñu entitetima 12 Ograničenja 27 Funkcijska zavisnost 13, 28, 63 Join zavisnost 159 Višeznačna zavisnost 143 Optimalni pokrivač 97 Parcijalna funkcijska zavisnost 128, 139 PJNF 167 Jaka PJNF 169 Najjača PJNF 169 Podatak 18 Pojedinačni podatak 21 Pokrivač skupa funkcijskih zavisnosti 81 Kanonski pokrivač 92 Minimalni pokrivač 96 Optimalni pokrivač 97 Neredundantni pokrivač 83 Prstenasti pokrivač 98 Reducirani pokrivač 86 Pomični član 99 Pomični atributi 99 Potencijalna inkonzistencija 118 Pravila integriteta 47 Entitetski integritet 47 Referencijalni integritet 48 Pravila logičkog izvoñenja FZ 68 Pravilo aditivnosti 68 Pravilo dekompozicije 68 Pravilo pseudotranzitivnosti 68 Pravilo unije 68 Pravila logičkog izvoñenja JZ 163 Pravila logičkog izvoñenja VZZ 149 Pravilo unije za VZZ 150 Pravilo dekompozicije za VZZ 150 Pravilo miješovite pseudotranzitivnosti za VZZ 150 Pravilo pseudotranzitivnosti za VZZ 150 Pravilo aditivnosti 68 Pravilo dekompozicije 68 Pravilo dekompozicije za VZZ 150 Pravilo pseudotranzitivnosti 68 Pravilo miješovite pseudotranzitivnosti za VZZ 150 Pravilo pseudotranzitivnosti za VZZ 150
182 Pravilo unije 68 Pravilo unije za VZZ 150 Presjek 39, 45 Pridruživanje 39 Prirodno pridruživanje 41 Theta pridruživanje 40 Vanjsko pridruživanje 58 Primarni atribut 25 Primarni entitet 12 Primarni ključ 25, 125 Prirodni karakteristični skup 98 Prirodno pridruživanje 41 Projekcija 37, 45 Projekt-join normalna forma 167 Projektivnost 70 Prstenasti karakteristični skup 98 Prstenasti pokrivač 98 Prva normalna forma 126 Pseudotranzitivnost VZZ 150 Puna funkcijska zavisnost 128 Puna FZ staza 107 RAP derivacijski niz 71 Razlika 35, 46 RED 89 Reducirani pokrivač 87 Redundancija 117 Redundantna funkcijska zavisnost 83 Redundantni vrh u FZ grafu 108 Referencijalni integritet 48 Refleksivnost 67, 69 Relacija 21 Relacijska algebra 31 Dijeljenje 31, 43, 46 Kartezijev produkt 31, 36 MOŽDA operacije 57 MOŽDA operator 57 Presjek 39, 45 Pridruživanje 39 Prirodno pridruživanje 41 Projekcija 37, 45 Razlika 35, 46 Selekcija 37, 45 Spoj 32 Theta pridruživanje 40 Vanjsko pridruživanje 58 Unija 34, 45 Unijska kompatibilnost 32 Relacijska shema 22 Relacijski model podataka 8 Adresibilnost 25 Atribut 12, 15, 21 Domena 21 Ključ 24 Ograničenja 27 Pojedinačni podatak 21
183 Relacija 21 Repliciranje 148 Reverzibilnost dekompozicije 120, 154 Sastavljena domena 21 Sastavljena funkcijska zavisnost 97 Karakteristični skup 98 Pomični član 99 Pomični atributi 99 Prirodni karakteristični skup 98 Prstenasti karakteristični skup 98 Sastavljeni atribut 21 Sastavljeni vrh 105 Selekcija 37, 45 SINTEZA 134 Spoj 32 Strani ključ 26 Superključ 24 Suvišni atributi 86 Suvišni vrh 111 Svojstvo entiteta 12 Theta pridruživanje 40 Tranzitivne FZ zavisnosti 139 Tranzitivnost 67 Tranzitivnost za VZZ 148 Treća normalna forma 129 Trivijalna FZ 67 Trivijalna JZ 163 Trivijalna VZZ 146 Trovalentna logika 54 Ugrañena JZ 162 Ugrañena VZZ 146 Unija 34, 45 Unija VZZ 150 Unijska kompatibilnost 32 Uvećanje 67 Uvećanje za VZZ 148 Vanjsko pridruživanje 58 Varijabilna dužina n-torke 118 Vertikalna normalizacija 118-142, 155-157, 167-169 Vertikalna normalizacija dekompozicijom 124-132, 139-142, 155-157, 167-169 Vertikalna normalizacija sintezom 132-138 Višeznačna zavisnost 143 Ugrañena VZZ 146 Trivijalna VZZ 146 Vlasnik relacijske sheme 125 Vrijednost atributa 12 VZZ 143 ZAT2 76 ZATVARAČ 75 Zatvarač FZ grafa 108 Zatvarač skupa atributa 74 Zatvarač skupa funkcijskih zavisnosti 73 Združivanje 148
184
FZ SFZ VZZ JZ 1NF 2NF 3NF BCNF 4NF PJNF
TABELA KRATICA funkcijska zavisnost sastavljena funkcijska zavisnost višeznačna zavisnost join zavisnost prva normalna forma druga normalna forma treća normalna forma Boyce-Coddova normalna forma četvrta normalna forma projekt-join normalna forma
TABELA SIMBOLA
simboli operatora
-
aɍb spoj n-torki ∪ unija relacija ∩ presjek relacija razlika relacija X Kartezijev produkt
σ π r[A θ B]s r|X|s *θ θ* *θ* / {} θ
α
¬ ∧ ∨ ⇒ ≡
selekcija relacija projekcija relacija theta pridruživanje relacija prirodno pridruživanje relacija lijevo vanjsko pridruživanje desno vanjsko pridruživanje simetrično pidruživanje kvocjent relacija skup theta operator
alfa operator negacija konjunkcija disjunkcija implikacija ekvivalencija
simboli zavisnosti →
funkcijska zavisnost →→ višeznačna zavisnost |X| join zavisnost
185
ostali simboli F t
uvjet selekcije n-torka
V, W, X, Y, Z
podskup atributa
A, B, C, D, E, F, G, H, I, J
atribut
a, b, c, d, e, f, g, h, i, j
vrijednost atributa
F, G ? p, q, r, s P, Q, R, S r(R)
skup FZ nul-vrijednost relacija relacijska shema relacija zadana na relacijskoj shemi R