Mirko Malekovic - Teorija Baza Podataka Skripta
February 7, 2017 | Author: MiroslavMesarov | Category: N/A
Short Description
Download Mirko Malekovic - Teorija Baza Podataka Skripta...
Description
SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE
Dr. sc. Mirko Maleković redoviti profesor
TEORIJA BAZA PODATAKA skripta
Varaždin, listopad 2008.
SADRŽAJ 1. SIMBOLIČKA (MATEMATIČKA) LOGIKA......................................................................................1 1.1. PROPOZICIJSKA LOGIKA..........................................................................................................1 1.2. LOGIKA PRVOG REDA...............................................................................................................9 1.3. O LOGIČKOM REZONIRANJU.................................................................................................14 2. RELACIJSKE BAZE PODATAKA.....................................................................................................16 2.1. RELACIJSKA ALGEBRA..........................................................................................................18 2.2. ZAVISNOSTI U RELACIJSKIM BAZAMA PODATAKA........................................................27 2.3. FORMALNI SUSTAVI................................................................................................................34 2.4. IMPLIKACIJSKI PROBLEM......................................................................................................40 2.5. NORMALNE FORME.................................................................................................................50 3. PARCIJALNA INFORMACIJA...........................................................................................................61 3.1. UVOD...........................................................................................................................................61 2.2. PARCIJALNA RELACIJA...........................................................................................................62 3.3. RELACIJSKI OPERATORI ZA PARCIJALNE RELACIJE.......................................................67 2.4. TIPOVI LOGIČKIH POSLJEDICA............................................................................................70 4. TEMPORALNE BAZE PODATAKA.................................................................................................73 4.1. UVOD...........................................................................................................................................73 4.2. TEMPORALNE RELACIJE........................................................................................................73 4.3. RELACIJSKI OPERATORI ZA TEMPORALNE RELACIJE...................................................75 5. DEDUKTIVNE BAZE PODATAKA..................................................................................................83 5.1. UVOD...........................................................................................................................................83 5.2. SINTAKSA I SEMANTIKA DEDUKTIVNE BAZE PODATAKA...........................................85 5.3. DATALOG....................................................................................................................................91 4.4. RAČUNANJE PRAVILA.............................................................................................................96 4.5 PROŠIRENJA DATALOGA......................................................................................................105 6. POOPĆENE RELACIJSKE BAZE PODATAKA (PORBP)............................................................123 6.1. UVOD.........................................................................................................................................123 6.2. PARTICIJSKA NORMALNA FORMA (PNF).........................................................................125 6.3. RELACIJSKI OPERATORI ZA PONF RELACIJE..................................................................126 7. OBJEKTNO ORIJENTIRANE BAZE PODATAKA.........................................................................136 7.1. UVOD..........................................................................................................................................136 7.2. ODL............................................................................................................................................143 7.3. OQL............................................................................................................................................151 LITERATURA.......................................................................................................................................162
1. SIMBOLIČKA (MATEMATIČKA) LOGIKA Simboličku logiku koristimo kao formalni alat za simboliziranje rezoniranja u raznim problemskim ili aplikacijskim domenama. (A) PROPOZICIJSKA LOGIKA (PL) (B) LOGIKA PRVOG REDA (PREDIKATSKA LOGIKA) (LPR)
1.1. PROPOZICIJSKA LOGIKA Temeljni element propozicijske logike je propozicija. Propozicija je deklarativna rečenica koja je istinita ili neistinita (ali ne oboje, tj. propozicija ne može biti istovremeno istinita i neistinita). Pr. Zadane su rečenice R1: Zagreb je glavni grad Hrvatske. R2: Split je glavni grad Hrvatske. R3: X je glavni grad Hrvatske. R1 je istinita propozicija; R2 je neistinita ili lažna propozicija; R3 nije propozicija, jer bez konkretizacije varijable X ne možemo odrediti istinosnu vrijednost od R3. Propozicije ćemo označavati slovima P, Q, R, S uz moguće indeksiranje. Pomoću propozicija iskazujemo činjenice (svojstva) problemske domene. Zato ćemo propozicije imenovati i drugim simbolima osim prije spomenitih. FORMULA Koristeći propozicije i logičke veznike: ¬ (negacija), ∧ (konjunkcija), ∨ (disjunkcija), ⇒ (implikacija) i ⇔ (ekvivalencija) gradimo izraze koji se nazivaju formule. Formule ćemo označavati slovima F, G, H uz moguće indeksiranje. Formule se definiraju rekurzivno kao što slijedi: (a) Svaka propozicija je formula. (b) (¬F), (F ∧ G), (F ∨ G), (F ⇒ G), i (F ⇔ G) su formule ako su F i G formule. (c) Formule se grade jedino konačnim brojem primjena pravila (a) i (b) . Pr. Izraz F: ((P ∨ Q) ⇒ R) je formula; Izraz G: P ¬ Q nije formula.
1
Konvencija o ispuštanju zagrada: 1. Formulu (F # G) pišemo bez (vanjskih) zagrada; Ovdje je # bilo koji logički veznik. 2. Koristimo jačinu vezanja logičkih veznika: ¬ , ∧ , ∨ , ⇒ , ⇔ U navedenom nizu jače veže onaj veznik koji je više lijevo. Pr. F: (( P ∨ Q) ⇒ R) možemo pisati u obliku F: P ∨ Q ⇒ R ; G: ((¬P) ∧ (R ∨ S)) možemo pisati u obliku G: ¬P ∧ (R ∨ S) Prije navedenim pravilima definirali smo sintaksu propozicijske logike, tj. rekli smo kako se grade formule u PL. Značenje formula, tj. semantika formula, je postupak odreðivanja istinosne vrijednosti formula. Sa PR[F] označavamo skup svih propozicija od kojih je izgraðena formula F . INTERPRETACIJA FORMULE Interpretacija formule F je preslikavanje I: PR[F] → {0, 1} Pr. F = P ∧ ¬ R Jedna interpretacija od F je I: P R ==== 1 0 Iz tablice čitamo: I(P) = 1 , I(R) = 0 . Kažemo da je P u interpretaciji I istinito (P u I vrijedi), a R je u I neistinito (R u I ne vrijedi). U zadavanju interpretacije korist se i simboli F, T umjesto 0, 1 respektivno. Tvrdnja (propozicija) Neka je broj elemenata u skupu PR[F], PR[F] ,jednak k . Tada formula F ima 2k različitih interpretacija. SEMANTIČKA PRAVILA Semantička pravila za negaciju definiramo tablicom:
2
F ¬F ====== Ako je I(F) = 0, onda je I(¬F) = 1 0 1 Ako je I(F) = 1, onda je I(¬F) = 0 1 0 Semantička pravila za ∨, ∧, ⇒, i ⇔ dana su u tablici: F G F ∨ G F ∧ G F ⇒G F ⇔ G 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 Iz tablice čitamo: F ∨ G vrijedi u I ako barem jedna od formula F, G vrijedi u I; F ∨ G ne vrijedi u I ako obe formule F, G ne vrijede u I . F ∧ G vrijedi u I ako obe formule F, G vrijede u I; F ∧ G ne vrijedi u I ako barem jedna od formula F, G ne vrijedi u I . Implikacija F ⇒ G vrijedi u I u svim slučajevima osim kada F vrijedi u I i G ne vrijedi u I . Ekvivalencija F ⇔ G vrijedi u I samo onda kada F i G imaju istu istinosnu vrijednost u I . Pr. F = P ∨ Q ⇒ R , I: P Q R I1: P R ====== ====== 1 1 0 1 1 Odrediti I(F), I1(F). I(F): 1 ∨ 1 ⇒ 0 = 1 ⇒ 0 = 0 ; prema tome, I(F) = 0, tj., F u interpretaciji I ne vrijedi. I1(F) nije definirano, jer I1 nije interpretacija za F. Kada je I(F) = 1, onda kažemo da je F istinito u I ili da F vrijedi u I; Kada je I(F) = 0, onda kažemo da je F neistinito u I ili da F ne vrijedi u I. Istinosna tablica od F sadrži vrijednosti formule F u svakoj njenoj interpretaciji. Pr. F = ¬ P ∧ Q P Q ¬P F ============ 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0
3
TAUTOLOGIJA Formula F je tautologija ili validna formula ako F vrijedi u svakoj svojoj interpretaciji, tj. I(F) = 1 za svaku interpretaciju I od F. Pr. F = P ∨ ¬ P je tautologija. KONTRADIKCIJA Formula F je kontradikcija ako F ne vrijedi u svakoj svojoj interpretaciji, tj. I(F) = 0 za svaku interpretaciju I od F. Pr. G = P ∧ ¬ P je kontradikcija. Sa F = ⊤ označavamo da je F tautologija; Sa F = ⊥ označavamo da je F kontradikcija. Interpretacija niza formula F1, .., Fn je preslikavanje I: PR[F1] ∪ .. ∪ PR[Fn] → {0, 1} I(Fi) računamo tako da u formulu Fi uvrstimo vrijednosti propozicija iz Fi koje su definirane interpretacijom I. Interpretacija I formule F je model za F ako F vrijedi u I. Interpretacija I niza formula F1,.., Fn je model danog niza formula ako svaka od formula F1,.., Fn vrijedi u I. Za niz formula F1,.., Fn kažemo da je konzistentan ako ima model; u protivnome, kažemo da je dani niz kontradiktoran. Pr. Ispitati konzistentnost formula F = P ⇒ Q , G = ¬ Q Ispitujemo da li niz F, G ima model. LOGIČKA POSLJEDICA Za formulu G kažemo da je posljedica formula F1,.., Fn ako za svaku interpretaciju I formula F1,.., Fn, G vrijedi: Ako je I model za F1,.., Fn , onda je I model i za G Notacija: F1,.., Fn G Da G nije logička posljedica od F1,.., Fn pišemo ovako: F1,.., Fn G Pr. Ispitati da li vrijedi ¬(P ∨ Q) ¬P ∧ ¬Q .
4
Propozicija F1,.., Fn G ako i samo ako je formula H = (F1 ∧ .. ∧ Fn) ⇒ G tautologija. (SEMANTIČKA) JEDNAKOST FORMULA Formule F i G su jednake ako vrijedi F G i G F ; Pišemo F = G . Napomena: Jednakost F = G znači jednakost pripadnih istinosnih tablica.
5
KATALOG PL Za bilo koje formule F, G, H vrijedi: 1. F = F refleksija 2. F ∨ G = G ∨ F; F ∧ G = G ∧ F komutacija 3. (F $ G) $ H = F $ (G $ H) asocijacija za $ ∈ {∨, ∧, ⇔} 4. F ∨ (G ∧ H) = (F ∨ G) ∧ (F ∨ H) distribucija F ∧ (G ∨ H) = (F ∧ G) ∨ (F ∧ H) 6. ¬(¬F) = F ¬(F ∨ G) = ¬F ∧ ¬G ¬(F ∧ G) = ¬F ∨ ¬G ¬(F ⇒ G = F ∧ ¬G 6. F ⇒ G = ¬F ∨ G F ⇔ G = (F ⇒ G) ∧ (G ⇒ F) 7. F ⇒ G = ¬G ⇒ ¬F kontrapozicija 8. Jednakosti sa ⊥ i ⊤ ¬⊥ = ⊤ ¬⊤ = ⊥ F ∨ ⊥ = F F ∨ ⊤ = ⊤ F ∧ ⊥ = ⊥ F ∧ ⊤ = F F ∨ ¬F = ⊤ F ∧ ¬ F = ⊥
6
ZADACI 1. F = (P ∨ Q) ∧ P ⇒ R Napišite interpretaciju I za F , a zatim odredite I(F). 2. Napišite istinosnu tablicu za F (iz 1.) . 3. Ispitajte da li je formula F = P ⇒ (¬P) tautolo gija. 4. Da li je G = ¬(P ∨ Q) ⇒ Q kontradikcija? 5. Riješite implikacijski problem P ⇒ R, P ⇒ ¬R ¬P 6. Dokažite jednakost ¬(P ∧ R) = ¬P ∨ ¬R 7. Dokažite ¬(F ⇒ G) = F ∧ ¬G 8. Literal je izraz oblika F ili ¬F, gdje je F propozicijski simbol; Klauzula je disjunkcija literala. Napišite nekoliko klauzula. 9. Dokažite P ∨ M, ¬P ∨ N M ∨ N (rezolucijski princip) 10. Konjukcija klauzula je konjunktivna normalna forma. KNF[F] je konjunktivna normalna forma od F. Odredite KNF[G] ako je G = P ∧ Q ⇒ R. 11. Osoba A nudi osobi B nagrade n1 i n2 uz sljedeći uvjet U: Osoba B treba reći izjavu F. Ako F vrijedi, onda B dobiva n1 ili n2; Ako F ne vrijedi, onda B ne dobiva niti jednu nagradu. Koju izjavu F treba reći B da bi dobio n1? Rj. N1: Dobit ću n1; N2: Dobit ću n2. F = ¬N2 , tj. neću dobiti n2. 12. Ponuda A: Reći P; Ako P = 1, onda dobivate 100Kn Ako P = 0, onda dobivate S Kn, S ≠ 100 Ponuda B: Reći P; Bez obzira na istinitost od P, dobivate S Kn, S >100 Koja je ponuda bolja? Rj. Ponuda A osigurava proizvoljan dobitak D Kn. P = Neću dobiti 100 Kn i neću dobiti D Kn.
7
13. Svaki stanovnik države X je sretan (uvijek govori istinu) ili nesretan (uvijek govori neistinu), ali ne oboje. Psiholog Ps testira bračni par (B1, B2) tako da pita osobu B1 o stanju para. Osoba B1 je odgovorila: Ako sam ja sretan, onda je B2 sretan. Ps je na osnovi odgovora osobe B1 točno zaklj učio o stanju osoba B1 i B2. Objasnite rješenje
8
1.2. LOGIKA PRVOG REDA Logika prvog reda ili predikatna logika proširuje propozicijsku logiku omogućujući iskaze o svojstvima objekata ili relacijama izmeðu objekata. SINTAKSA Formule LPR grade se od sljedćih simbola Konstante: a, b, c, a1,... Varijable: x, y, z, x1,... Funkcije: f, g, h, f1,... Predikati (relacije): P, Q, R, P1,... Kvantifikatori: ∃ , ∀ Term Konstante i varijable su termi; f(t1,.., tk) je term ako su t1,.., tk termi i f je funkcija od k argumenata. Termi označavaju objekte, a predikati su relacije nad objektima. Atomska formula Izraz P(t1,.., tm) je atomska formula ako su t1,.., tm termi i P je predikat od m argumenata. Pr. R(a, g(y), z) je atomska formula. Koristeći atomske formule i logičke veznike ¬, ∧, ∨, ⇒, ⇔, te kvantifikatore ∃ , ∀ gradimo formule: 1. Svaka atomska formula je formula. 2. ¬F, F ∧ G, F ∨ G, F ⇒ G, F ⇔ G su formule ako F i G formule. 3. ∃ x(F) , ∀x(F) su formule ako je F formula i x varijabla. Kažemo da je F i sva pojavljivanja varijable x u F pod djelovanjem navedenih kvantifikatora ∃ x i ∀x . Zagradama naznačujemo prioritet operacija. ZATVORENA FORMULA Formula F je zatvorena ako su sva pojavljivanja varijabli u F pod djelovanjem nekog od kvantifikatora. Pr. F = ∀x(P(x, a) ∧ ∃ y(R(f(y))) je zatvorena G = ∀x(P(x, a)) ∨ R(b, f(x) nije zatvorena. G je otvorena formula. U daljem pretpostavljamo da je riječ o zatvorenim formulama. 9
SLOBODNI SIMBOLI Konstante, funkcije i predikate od kojih je F izgraðeno zovemo slobodnim simbolima od F. INTERPRETACIJA FORMULE Interpretirati formulu znači dati značenje njenih slobodnih simbola na nepraznoj domeni objekata D. Pr. F = ∃ y(R(a, f(y)) I: D = {3, 5}, a = 5, f:D → D T 3 5 ========= f(T) 5 5 R: D × D → {0, 1} (U, V) (3, 3) (3, 5) (5, 3) (5, 5) ========================== R(U, V) 0 1 0 1 Predikat (relaciju) kraće pišemo u obliku R( U V ) ======== 3 5 Napisali smo u relaciji R samo one 5 5 parove (U, V) za koje R vrijedi. Procijenimo F u I, tj. izračunajmo I(F): Formulom F se tvrdi da postoji y u D tako da R(a, f(y)) vrijedi za dani a i f . y = 3 : I(F) = R(5, f(3)) = R(5, 5) = 1 Kako za y = 3 R(5, f(y)) vrijedi, imamo I(F) = 1. Prema tome, F vrijedi u interpretaciji I .
SEMANTIČKA PRAVILA Formulu F procijenjujemo u njenoj interpretaciji I pomoću pravila: (S1) Neka F nema varijabli i kvantifikatora. I(F) računamo tako da u F uvrstimo vrijed nosti konstanti, funkcija i predikata zadanih u I. (S2) Ako je F = ∀xG, onda je I(F) = 1 ako je I(G) = 1 za svaki x ∈ D; U protivnome, tj. ako je I(G) = 0 za neki x ∈ D , onda je i I(F) = 0: Ako je F = ∃ xG, onda je I(F) = 1 ako je I(G) = 1 za neki x ∈ D; U protivnome, tj. ako je I(G) = 0 za svaki x ∈ D, onda je I(F) = 0. 10
U oba slučaja, I(G) za x = d računamo tako da svako pojavljivanje x u G zamjenjujemo sa d, a konstante, funkcije, i predikate iz G zamjenjujemo vrijednostima danim u I . Pr. F = ∃ x(P(x, a)) ∧ ∀y(P(b, f(y)) I: D = {2, 3}, a = 2, b = 3, f: D → D T 2 3 ========= f(T) 2 2 P: D × D → {0, 1} P ( U V ) ======== 2 2 3 2 Računamo I(F): Neka je H = ∃ xP(x, a) prva, a H1 = ∀yP(b, f(y)) druga komponenta konjunkcije F. Računamo I(H) i I(H1), te I(F) = I(H) ∧ I(H1). Pojmovi: tautologija, kontradikcija, logička posljedica, jednakost formula definiraju se na isti način kao u PL. Umjesto K1(K2(F)) pisat ćemo kraće K1K2(F), gdje su K1 i K2 kvantifikatori.
11
KATALOG LPR Za bilo koje formule F i G vrijedi: 1. ∀x∀y(F) = ∀y∀x(F), ∃ x∃ y(F) = ∃ y∃ x(F) 2. ¬(∀x(F)) = ∃ x(¬(F)), ¬(∃ x(F)) = ∀x(¬(F)) 3. ∀x(F ∧ G) = ∀x(F) ∧ ∀x(G) 4. ∃ x(F ∨ G) = ∃ x(F) ∨ ∃ x(G) Postoje formula F za koju vrijedi 5. ∀x∃ y(F) ≠ ∃ y∀x(F) Postoje formule F i G za koje vrijedi 6. ∀x(F ∨ G) ≠ ∀x(F) ∨ ∀x(G) Postoje formule F i G za koje vrijedi 7. ∃ x(F ∧ G) ≠ ∃ x(F) ∧ ∃ x(G) KVANTIFIKATORI OGRANIČENOG OPSEGA (∀x∈D) (F) = ∀x(x ∈ D ⇒ F) Formula (∀x∈D) (F) vrijedi u interpretaciji I ako je I(F) = 1 za svaki x iz D. (∃ x∈D) (F) = ∃ x(x ∈ D ∧ F) Formula (∃ x∈D)(F) vrijedi u interpretaciji I ako I(F) = 1 za neki x iz D. Katalog LPR ostaje na znazi ako ∀x i ∃ x zamijenimo sa (∀x∈S) i (∃ x∈S).
12
ZADACI 1. F = ∀x[P(a, x) ∧ R(x, f(x))] Napišite I za F, a zatim odredite I(F). 2. Da li vrijedi ∀x(F) ∃ x(F) ? 3. Da li vrijedi (∀x∈S)(F) (∃ x∈S)(F) ? 4. Negirajte formulu F = ∀x∃ y(P(y) ∧ R(x) ⇒ P1(x)) 5. Napišite formulu LPR koja je tautologija; Napišite formulu LPR koja je kontradikcija. 6. Da li vrijedi ∃ x∀y(F) ∀y∃ x(F) ? 7. Reèenicu R1: Za svaki prirodan broj, osim jedinice, postoji manji prorodan broj, izrazite pomoću formule LPR. 8. Rečenici R2: Sve zavisnosti iz skupa S su trivijalne, izrazite pomoću LPRformule. 9. Rečenicu R3: Postoji zavisnost u skupu S koja nije tranzitivna, izrazite pomoću LPRformule. 10. Koliko interpretacija ima formula F = ∀x(P(x))?
13
1.3. O LOGIČKOM REZONIRANJU 1. Monotonost logike Ako F1, F2,.., F4 , tada F1, F2,.., Fk, H G G 2. Logika nemonotonog rezoniranja Ne mora vrijediti monotonost iz 1. (Uvode se odgovarajuća pravila dedukcije) Difoltna logika (default logic) DL Pravilo: F : G Ako F i ako je konzisten tno pretpostaviti G, onda H vrijedi H . Pr. F1: Ptica(Ari) F2: ∀x[Ptica(x) ⇒ Leti(x)] G: Leti(Ari) Imamo F1, F2 : G G Proširimo F1, F2 sa F3: Pingvin(Ari) Shema F1, F2, F3 : G nije primjenjiva! G Prema tome, G slijedi iz F1, F2 , a ne slijedi iz F1, F2, F3 .
14
Abdukcija (forma default rezoniranja) F ⇒ G, G : F F Pr. R1: Ako je pacijent uplašen, onda je njgov tlak visok. R2: Tlak pacijenta je visok. Zaključak: Pacijent je uplašen.
Navedeni zaključak može biti pogrešan.
15
2. RELACIJSKE BAZE PODATAKA U ovom odjeljku karakteriziramo pojmove baze podataka (Data Base) i sustava za upravljanje bazom podataka (Database Management System). Po potrebi koristit ćemo sljedeće kratice: Baza podataka (BP), Sustav za upravljanje bazom podataka (SUBP). Neformalno, bazu podataka možemo karakterizirati na sljedeći način. •
Baza podataka je kolekcija podataka, ograničenja i operacija koja reprezentira neke aspekte realnog svijeta .
Modeliranjem aplikacijske domene AD dolazimo do baze podataka BP. Prema tome, BP je model za AD. AD BP
modeliranje
Svaka baza podataka temelji se na odgovarajućem modelu podataka. Tako imamo hijerarhijske baze podataka (temeljene na hijerarhijskom modelu podataka), mrežne baze podataka (temeljene na mrežnom modelu podataka, relacijske baze podataka (temeljene na relacijskom modelu podataka), deduktivne baze podataka (temeljene na deduktivnom modelu podata), temporalne baze podataka (temeljene na temporalnom modelu podataka), objektno/relacijske baze podataka (temeljene na poopćenom relacijskom modelu podataka) i objektno orijentirane baze podataka (temeljene na objektnom modelu podataka). U ovom prvom poglavlju opisujemo teoriju relacijskih baza podataka. Dva su razloga za to. Prvo, relacijske baze podataka su najzastupljenije baze podataka u komercijalnom smislu. Drugo, one su osnova za izgradnju naprednijih baza podataka (deduktivne baze podataka, temporalne baze podataka, objektno/orijentirane baze podataka). Za kreiranje (ostvarenje) baze podataka koristi se poseban softver tzv. sustav za upravljanje bazom podataka (Access, Oracle, DB2,..). Sustav za upravljanje relacijskom bazom podataka nazivamo, kraće, relacijskim sustavom. Analogno vrijedi za ostale sustave. Dakle, na primjer, objektno/relacijski sustav je sustav za upravljanje objektno/ relacijskom bazom podataka.
16
MODEL PODATAKA Svaki model podataka, MP, sastoji se od tri komponente, tj., MP = (S, UI, O), gdje je S strukturalna komponenta (kaže u kojem obliku su prikazani podaci), UI je integritetna komponenta (ograničenja na dozvoljena stanja strukture) i O je operativna komponenta (operacije nad strukturama). Za relacijski model podataka, RMP, imamo sljedeće: S je skup relacija (tablica), UI je skup ograničenja stanja relacija i O je skup relacijskih operatora. Već smo istakli da se relacijske baze podataka temelje na relacijskom modelu podataka. To znači da će podaci u relacijskoj bazi podataka biti prikazani u obliku relacija (tablica) dok će uvjeti integriteta UI predstavljati ograničenja koja trebaju biti zadovoljena u relacijama da bi se dana baza podataka mogla smatrati valjanom. U daljnjem izlaganju, prvo ćemo opisati strukturalnu komponentu relacijskog modela (pojam relacije), zatim ćemo opisati relacijsku algebra (relacijske operatore), a onda ćemo razmotriti zavisnosti u relacijskim bazama podataka (specijalna klasa uvjeta integriteta). Pravila rezoniranja o zavisnostima u relacijskim bazama podataka i primjena zavisnosti u oblikovanju sheme relacijske baze podataka bit će dana u preostalim odjeljcima ovog poglavlja.U području baza podataka postoje terminološke razlike između teorije baza podataka i njene primjene (sustavi za upravljanje bazom podataka). Veza između pojmova je kao što slijedi: veza ( Teorija Primjena ) =============================== relacija tablica slog red atribut stupac
Prema tome, umjesto relacija možemo reći tablica, umjesto sloga red, te umjesto atribut možemo reći stupac. Iako će kasnija razmatranja pokazati da je relaciju moguće prikazati na više tabličnih načina, mi ćemo relaciju identificirati s tablicom (zapisom) kojom smo zadali danu relaciju. U daljnjem razmatranju koristit ćemo, ovisno o kontekstu, prvi ili drugi tip naziva.
17
2.1. RELACIJSKA ALGEBRA •
Relacijska algebra sastoji se od temeljnih relacijskih operatora: unija ∪ , razlika − , selekcija σ , projekcija Π , preimenovanje δ , prirodno spoj ∞ i izvedenih (deriviranih) operatoratora, koji se definiraju primjenom nekih od temeljnih operatora.
U daljnjem, indekse ćemo pisati u nespuštenom obliku; dakle, primjerice umjesto Ai pisat ćemo Ai. Relacija Konačan, neprazan skup atributa, R = {A1,.., Ak}, nazivamo relacijskom shemom. Neka je D = D1 ∪ D2 ∪..∪ Dk, gdje je Dom(Ai) = Di za i = 1,.., k . Slog nad R je funkcija t : R → D , gdje je t(Ai) ∈ Di , i = 1,.., k . Relacija nad R je konačan skup slogova nad R . Notacija r(R) znači da je r relacija nad relacijskom shemom R . Kažemo još da je shema relacije r jednaka R i pišemo sh(r) = R.
Neka je zadana relacija r nad R , r = {t1,.., tm} , gdje je slog ti zadan tablično x A1 A2 .. Ak ============== , i = 1,.., k . ti(x) ai1 ai2 .. aik Kraći zapisi sloga ti su: ti A1 A2 .. Ak ============== ai1 ai2 .. aik ili samo ti (ai1, ai2,.., aik) kada je iz konteksta jasno što znači svaka komponenta sloga (za svaku od komponenti sloga zna se atrubut čija vrijednost je dana komponenta). Relaciju r reprezentiramo u obliku tablice r (A1 A2 . . Ak) ============ a11 a12 .. a1k a21 a22 .. a2k ...................... am1 am2 .. amk
18
Ako je r1 prazna relacija nad R , onda je pripadna tablica oblika r1 (A1 A2 .. Ak) ============= ∅ Primjer 2.1 Neka je zadana relacija dozvola = {t1, t2, t3, t4}, gdje su slogovi t1, t2, t3 i t4 definirani kao što slijedi. R = {Pilot#, Tipaviona}, D1 = dom(Pilot#) = varchar(2), D2 = dom(Tipaviona) = int, D = D1 ∪ D2 t1: R → D x Pilot# Tipaviona ================ t1(x) P1 707 t2: R → D x Pilot# Tipaviona ================ t2(x) P2 707 t3: R → D x Pilot# Tipaviona ================ t3(x) P2 747 t4: R → D x Pilot# Tipaviona ================ t4(x) P3 727 Relaciju dozvola predstavljamo u obliku tablice dozvola(Pilot# Tipaviona) =================== P1 707 P2 707 . P2 747 P3 727 Prema tome, ime relacije postaje ime tablice, relacijska shema je dana u zaglavlju tablice, a slogovi su predstavljeni redovima tablice. Činjenicu da je red (P1, 707) u tablici dozvola pišemo ovako dozvola(P1, 707). Općenito, ako je red t = (x1, x2,.., xn) u tablici r, onda to naznačujemo zapisom r(x1, x2, .., xn). U daljnjem ćemo relaciju zadavati tablično, a domene atributa ćemo navoditi samo u slučaju kada je razmatranje domenski ovisno. Također, kada semantika relacije nije jasna iz njenog tabličnog prikaza, upotrijebit ćemo dodatni komentar za njenu potpunu karakterizaciju. 19
Primjer 2.2 Neka je zadana relacija dozvola iz prošlog primjera. dozvola(Pilot# Tipaviona) =================== P1 707 P2 707 . P2 747 P3 727 Možemo se upitati o semantici relacije dozvola, tj., možemo postaviti pitanje koja je informacija tabelirana u tablici dozvola. Semantika je sljedeća. Semantika (relacije dozvola) dozvola(x, y) znači da pilot x ima dozvolu za tip aviona y. Prema tome, zadnji red u tablici dozvola nam kaže da vrijedi dozvola(P3, 727), a to znači da pilot P3 ima dozvolu za tip aviona 727. U daljnjem pisanju koristit ćemo sljedeće oznake. •
Oznake
Atributi : A, B, C, D, E, F, A1, B1,... Skupovi atributa : X, Y, Z, R, S, X1, Y1,.. Relacije : r, s, r1, s1,.. Slogovi : t, u, v, t1, u1,.. Kratice: {A1, A2,.., Ak} = A1, A2,.., Ak = A1 A2..Ak . X ∪ Y = XY . •
Jednakost relacija
Relacije r(R) i s(S) su jednake ako vrijedi: (1) R = S, tj. sh(r) = sh(s) (2) r i s se sastoje od istih slogova . (3)
20
Primjer 2.3 Neka su zadane relacije r(A B) r1(A B) r2 (B A) ====== ======== ======= 1 2 2 2 2 2 2 2 1 2 2 1 Vrijedi: r = r1 = r2 , jer je ispunjeno: (1) sh(r) = sh(r1) = sh(r2) i (2) relacije r, r1 i r2 imaju iste slogove . Iz Primjera 1.3 vidimo da kod tabličnog predstavljanja (zadavanja) relacije poredak atributa u zaglavlju tablice i poredak redova u tablici nisu bitni. Dakle, sve tablice koje imaju isto zaglavlje i iste redove predstavljaju istu relaciju. Također, budući je relacija skup (nema ponavljanja elemenata skupa), pripadna tablica ne sadrži ponavljanje redova. Primjer 2.4 r(A B C) s(A B) ======== ====== ∅ ∅ Za relacije r i s vrijedi r ≠ s, jer relacije r i s nemaju iste sheme . •
Restrikcija sloga
Neka je X ⊆ R ; t[X] je restrikcija sloga t na skup atributa X . Primjer 2.5 r(A B C) ========= 1 0 0 1 0 1 Ako sa t1 označimo prvi slog (red) u relaciji r, onda je restrikcija od t1 na atribute BC dana sa x B C ============== t1[B, C](x) 0 0 Dalje, za slogove t1 i t2 iz relacije r vrijedi t1[A, B] = t2[A, B] . 21
Propozicija (jednakost slogova na praznom skupu atributa) Za bilo koje slogove ti, tj nad relacijskom shemom R vrijedi ti[∅] = tj[∅] .
•
Relacijski operatori : ∪ , ∩ , −
Slijede definicije relacijskih operatora operatora ∪ , ∩ , − . Neka su zadane relacije r(R) , s(R) . r ∪ s (R), r ∪ s = {t nad R t ∈ r ili t ∈ s } r ∩ s (R), r ∩ s = {t nad R t ∈ r i t ∈ s } r − s (R), r − s = {t nad R t ∈ r i t ∉ s } •
Projekcija
Za relaciju r(R) i X ⊆ R , X ≠ ∅ imamo: Π [X](r) (X), Π [X](r) = {t[X] t ∈ r } Umjesto Π [X](r) možemo pisati Π X(r). Prema tome, projekciju relacije r na skup atributa X, u oznaci Π [X](r), dobijemo tako da odredimo skup koji se sastoji od restrikcija svih slogova iz r na skup atributa X. Primjer 2.6 Neka je zadana relacija r( A B C ) ======== 1 2 3 2 2 3 3 1 2 Tada je Π [BC](r) ( B C ) ============ 2 3 1 2
22
• Selekcija Za relaciju r(R) i uvjet (formulu) F, selekcija relacije r po uvjetu F je relacija nad R koja se sastoji od svih slogova iz r koji zadovoljavaju F. σ [F](r) (R), σ [F](r) = {t ∈ r F(t) = T}; sa F(t) = T naznačili smo da slog t zadovoljava uvjet F, tj., F(t) vrijedi. Sa F(t) = ⊥ označavamo da slog t ne zadovoljava uvjet F. Slično kao kod projekcije, umjesto σ [F](r) možemo pisati σ F(r). Neka je Atr(F) skup svih atributa od kojih je izgrađena formula F. Kažemo da je F primjenjivo na relaciju r(R) ako je Atr(F) ⊆ R . U slučaju kada F nije primjenjivo na r(R), onda σ [F](r) nije definirano.
•
Formula je definirana rekurzivno :
(1) Atom je izraz oblika At op k , k op At , At op Bt , gdje su At i Bt bilo koji atributi i op ∈ {= , , ≤ , ≥ , ≠ } je aritmetički operator . Svaki atom je formula . (2) Formula je svaki izraz oblika ¬F , F ∨ G, F ∧ G , F ⇒ G , F ⇔ G, gdje su F i G formule . Primjer 2.7 Neka su zadani relacija dozvola i upit U: dozvola(Pilot# Tipaviona) =================== P1 707 t1 P2 707 t2 P2 747 t3 P3 727 t4 U: odrediti sve one pilote s pripadnim tipom aviona iz relacije dozvola koji imaju dozvolu za tip aviona 747. Rješenje je dano relacijom σ [F](dozvola), gdje je F: Tipaviona = 747. Računamo F(t), gdje t označava slogove (redove) iz relacije (tablice) dozvola. Za izračunavanje F(t) trebamo vrijednosti atributa u slogu t uvrstiti umjesto korespondentni atributa u formuli F.
23
Neka su t1, t2, t3 i t4 redovi u tablici dozvola. Imamo: F(t1) = (707 = 747) = ⊥, F(t2) = (707 = 747) = ⊥, F(t3) = (747 = 747) = ⊤, F(t4) = (727 = 747) = ⊥ . Zato, σ [Tipaviona = 747](dozvola) (Pilot# Tipaviona) =================================== P2 747
Prirodno spajanje Neka su zadane relacije r(R) , s(S) . r ∞ s (RS), r ∞ s = { t nad RS t[R] ∈ r i t[S] ∈ s } Definicija prirodnog spoja kaze da se prirodni spoj relacija r i s dobije tako da se spoje oni redovi iz relacija r i s koji se podudaraju na zajedničkim atributima iz relacijskih shema R i S. Primjer 2.8 Izračunati r ∞ s, gdje je r ( A B C ) s ( B C D ) ========= ========= a b b a a a b a a b a b Rješenje: r ∞ s (A B C D) ============= b a a a •
Preimenovanje atributa
Za relaciju r(R) i A1 A2..Am ⊆ R te B1, B2,..Bm ∉ R i Dom(Ai) = Dom(Bi) za i = 1,.m, preimenovanjem atributa A1, A2,..Am redom atributima B1, B2,..,Bm u relaciji r(R) dobivamo relaciju δ [ A1, A2,..,Am ↵ B1, B2,..,Bm](r)(S) , gdje je S = (R − {A1, A2,.., Am}) ∪ {B1,B2,..,Bm}; Slogovi u δ su slogovi iz r .
24
Primjer 2.9 Ako je r (A B) , tada je δ [ A ↵ r.A](r) (r.A B) ====== ================ a a a a b c b c •
Produkt
Neka su zadane relacije r(R) i s(S). Produkt relacija r i s definiramo ovako: (1) Ako je R ∩ S = ∅ , onda je r ⊗ s = r ∞ s . (2) Ako je R ∩ S ≠ ∅ , onda izvršimo preimenovanje atributa u R i S tako da postignemo disjunktnost, a zatim primjenimo (1) . •
Aktivni komplement
Neka je zadana relacija r(A1,.., An) . Aktivni komplement od r je relacija AC(r) definirana jednakošću: AC(r) = [Π A1(r) ∞ .. ∞ Π An(r)] − r •
Kvocijent
Za relacije r(R) i s(S) takve da je S ⊂ R , kvocijent relacija r i s je relacija r ÷ s (T) , gdje je T = R − S ; r ÷ s = Π T(r) − Π T[(Π T(r) ∞ s) − r ]
Propozicija (temeljni operatori) Svaki relacijski izraz može se napisati u ekvivalentnom obliku koji je izgrađen samo od operatora ∪, − , Π , σ , ∞ , δ .
25
KATALOG RO Za bilo koje relacije r(R), s(R) i F primjenjivo na r i s vrijedi: (1) σ F(r ∪ s) = σ F(r) ∪ σ F(s) (2) σ F(r ∩ s) = σ F(r) ∩ σ F(s) (3) σ F(r − s) = σ F(r) − σ F(s) Za bilo koje relacije r(R), s(R) i X ⊆ R vrijedi: (4) Π X(r ∪ s) = Π X(r) ∪ Π X(s) (5) Π X(r ∩ s) = Π X(r) ∩ Π X(s) (6) Π X(r) − Π X(s) ⊆ Π X(r − s) Za bilo koje relacije r(R), s(S) vrijedi: (7) r ∞ s = s ∞ r (8) Π R(r ∞ s) ⊆ r Za bilo koju relaciju r(R) vrijedi (9) r ⊆ Π X(r) ∞ Π Y(r) , gdje je d(R) : X, Y dekompozicija od R . (10) r ∞ Π X(r) = r , gdje je X ⊆ R . Za bilo koje relacije r(R), s(S) vrijedi: (11) σ F(r ∞ s) = σ F(r) ∞ s , gdje je F primjenjivo na r . Za bilo koju relaciju r(R) , X ⊆ R vrijedi: (12) Π X(σ F(r)) = σ F(Π X(r)) , gdje je F primjenjivo na Π X(r) .
26
2.2. ZAVISNOSTI U RELACIJSKIM BAZAMA PODATAKA FUNKCIJSKE ZAVISNOSTI • Neka je R relacijska shema, X, Y ⊆ R . Izraz X → Y je funkcijska zavisnost nad R . FZ(R) = {X → Y X, Y ⊆ R} je skup svih funkcijskih zavisnosti nad R . • Kažemo da X → Y ∈ FZ(R) vrijedi u relaciji r(R) ako ∀t1,t2 ∈ r (t1[X] = t2[X] ⇒ t1[Y] = t2[Y]) Primjer 2.10 Ispitajmo da li zavisnost AC → B vrijedi u relaciji r( A B C D ) ========== 1 2 2 3 2 2 2 2 1 3 2 3 Kako za slogove u1( A B C D ) i u2( A B C D) iz relacije r ============ =========== 1 2 2 3 1 3 2 3 vrijedi u1[AC] = u2[AC] i u1[B] ≠ u2[B] , zaključujemo da funkcijska zavisnost AC → B ne vrijedi u relaciji r . U istoj relaciji r ispitajmo da li vrijedi funkcijska zavisnost A → D . Budući da za bilo koja dva sloga t1, t2 iz relacije r vrijedi: ako se t1 i t2 podudaraju na A, onda se t1 i t2 podudaraju i na D, možemo zaključiti da A → D vrijedi u r . VIŠEZNAČNE ZAVISNOSTI • Neka je X, Y ⊆ R . Višeznačna zavisnost nad R je izraz oblika X →→ Y . • Kažemo da X →→ Y vrijedi u r(R) ako ∀t1,t2 ∈r {t1[X] = t2[X] ⇒ ∃ t3 ∈r (t3[XY] = t1[XY] ∧ t3[R −XY] = t2[R − XY])} Sa VZ(R) označavamo skup svih višeznačnih zavisnosti nad R .
27
Kako su višeznačne zavisnosti posebne zavisnosti spoja (što će se vidjeti kasnije), ispitivanje da li višeznačna zavisnost vrijedi u relaciji bit izvršeno tako da se višeznačna zavisnost pretvori u odgovarajuću zavisnost spoja, a zatim se ispituje dobivena zavisnost spoja u danoj relaciji. ZAVISNOST SPOJA • Neka su R1,.., Rn ⊆ R neprazni skupovi takvi da je R1 ∪..∪ Rn = R . Izraz ∞(R1,.., Rn) zovemo zavisnost spoja nad R . Skup svih zavisnosti spoja nad R označavamo sa ZS(R) . • Kažemo da zavisnost spoja ∞(R1,.., Rn) ∈ZS(R) vrijedi u r(R) ako je r = Π R1(r) ∞ .. ∞ Π Rn(r) . Primjer 2.11 Ispitajmo zavisnost spoja ∞(ABC, CD) u relaciji r( A B C D ) ========== 1 2 2 3 2 2 2 2 1 3 2 3 Rješenje Π [ABC](r)( A B C ) Π [CD](r)( C D ) ================ ============== 1 2 2 2 3 2 2 2 2 2 1 3 2 Π [ABS](r) ∞ Π [CD](r) ( A B C D ) =========================== 1 2 2 3 1 2 2 2 2 2 2 3 2 2 2 2 1 3 2 3 1 3 2 2 Kako je Π [ABS](r) ∞ Π [CD](r) ≠ r , zaključujemo da zavisnost spoja ∞(ABC, CD) ne vrijedi u relaciji r . 28
• Neka je FVS(R) = FZ(R) ∪ VZ(R) ∪ ZS(R) . Za skup zavisnosti F ⊆ FVS(R) kažemo da vrijedi u relaciji r(R) ako svaka zavisnost iz F vrijedi u r(R) . •
Ako F vrijedi u r, onda se r naziva modelom za F .
• Neka je R skup atributa i F skup zavisnosti nad R . Par (R, F) naziva se relacijska shema . F KAO SEMANTIČKO OGRANIČENJE (UVJET INTEGRITETA) Specificirajući (R, F) iskazujemo da će se valjanim (validnim) relacija nad R smatrati samo one relacije nad R koje su modeli za F . r(A1 A2 .. An) r(A1, A2,.., An) F model za F
Relacija r se mijenja tijekom vremena kao posljedica ažuriranja. Dozvoljena su samo ona ažuriranja koja čuvaju valjanost relacije r, tj. ažuriranja trebaju biti u skladu sa zadinim uvjetima integriteta F . Centralni pojam teorije baza podataka je pojam logičke posljedice. Njegova važnost proizlazi iz činjenice da u osnovi gotovo svih temeljnih pojmova (njihovoj karakterizaciji) koristimo pojam logičke posljedice. LOGIČKA POSLJEDICA • Neka je F ⊆ FVS(R) i f ∈ FVS(R) . f je logička posljedica od F ako za svaku relaciju r nad R vrijedi: Ako je r model za F, onda je r model i za f. Oznaka: F ⊨f
29
KATALOG FZ Neka su X, Y, Z, Y1 ⊆ R . Tada vrijedi: 1. X → Y ⊨XZ → YZ (proširenje) 2. X → Y, Y → Z ⊨ X → Z (tranzitivnost) 3. X → Y, X → Y1 ⊨X → YY1 (unija) 4. X → Y ⊨X → Z , ako je Z ⊆ Y (projekcija) 5. F ⊨X → Y , gdje je F bilo koji skup funkcijskih zavisnosti i Y ⊆ X (trivijalnost) Dokaz Kao primjer, dokazat ćemo 1. iz kataloga. Neka je r bilo koja relacija nad R. Pretpostavimo da X → Y vrijedi u r. Trebamo dokazati da XZ → YZ vrijedi u r. Neka su t1, t2 bilo koja dva sloga iz r takva da je t1[XZ] = t2[XZ]. Sada trebamo dokazati t1[YZ] = t2[YZ]. Iz t1[XZ] = t2[XZ] slijedi t1[X] = t2[X] i t1[Z] = t2[Z]; Iz t1[X] = t2[X] i pretpostavke da X → Y vrijedi u r zaključujemo da vrijedi t1[Y] = t2[Y]. Konačno, iz t1[Y] = t2[Y] i t1[Z] = t2[Z] dobivamo t1[YZ] = t2[YZ]. Ostale točke iz kataloga dokazuju se analogno.
30
KATALOG VZ Neka su X, Z, Z ⊆ R . Tada vrijedi: 1. X →→ Y ⊨ X →→ (R − XY) (komplementiranje) 2. X →→ Y ⊨XW →→ YV , gdje je V ⊆ W ⊆ R (proširenje) 3. X →→ Y, Y →→ Z ⊨X →→ (Z − Y) (tranzitivnost) 4. X →→ Y, X →→ Z ⊨X →→ YZ (unija) 5. X →→ Y, X →→ Z ⊨X →→ (Y ∩ Z) X →→ Y, X →→ Z ⊨X →→ (Y − Z) X →→ Y, X →→ Z ⊨X →→ (Z − Y) (projekcija)
31
KATALOG FVS Neka su X, Y ⊆ R . Tada vrijedi: 1. X → Y ⊨ X →→ Y (obrat ne vrijedi) 2. X → Y ⊨∞(XY, X ∪ (R − XY)) 3. X →→ Y ⊨∞(XY, X ∪ (R − XY)) 4. ∞(XY, X ∪ (R − XY)) ⊨X →→ Y Točke 3. i 4. u katalogu FVS kažu da je višeznačna zavisnost X →→ Y ekvivalentna zavisnosti spoja ∞(XY, X ∪ (R − XY)) . Definiramo • F ⊨G ako F ⊨g za svaku zavisnost g iz G; • F ≡ G ako F ⊨G i G ⊨F .
32
PROPOZICIJA (⊨) Neka su F, G, H ⊆ FVS(R) skupovi zavisnosti. Tada 1. F ⊨G , ako je G ⊆ F . 2. F ⊨G i G ⊨H povlači F ⊨H . Dokaz Dokazat ćemo 2. Neka je r bilo koja relacija nad R takva da u njoj vrijedi F. Prepostavka znači da je r model za F. Iz pretpostavke F ⊨G slijedi da je r model za G. Konačno, iz pretpostavke G ⊨H slijedi da je r model za H. Primjer 2.12 R = ABCD, F: A → B, B → C ; G: A → B, B → C, A → C . Ispitati F ≡ G . Rješenje Kako je F ⊆ G, zaključujemo, temeljem 1. iz prethodne propozicije(⊨), da vrijedi G ⊨F . Preostaje ispitati da li vrijedi F ⊨G . Za svaku zavisnost g iz G koja se nalazi i u F znamo da vrijedi F ⊨g . Preostaje ispitati F ⊨A → C . Primjenom pravila tranzitivnosti dobivamo da F ⊨A → C vrijedi. Možemo zaključiti da vrijedi G ⊨F i F ⊨G , što i znači da vrijedi F ≡ G . PROPOZICIJA(≡ ) 1. X →→ Y ≡ ∞(XY, X ∪ (R − XY)) 2. ∞(R1,.., Rk) ≡ ∞(R1,.., Rk, S), gdje je S ⊆ Ri za neki i . Sa V(R, F) označavamo skup svih valjanih relacija nad shemom (R, F). Propozicija (isto semantičko ograničenje) Neka vrijedi F ≡ G . Tada vrijedi V(R, F) = V(R, G) .
33
2.3. FORMALNI SUSTAVI Formalni sustav za zavisnosti sastoji se od pravila koja omogućuju rezoniranje o zavisnostima. • Pravilo zaključivanja (dedukcije) za zavisnosti FVS(R) je izraz oblika f1,.., fk ⊦g , gdje su f1,.., g ∈ FVS(R) . Pravilo ∅ ⊦g pišemo u obliku ⊦g i nazivamo aksiom. Formalni sustav za funkcijske zavisnosti • Formalni sustav za funkcijske zavisnosti je konačan skup pravila oblika f1,.., fk ⊦g , gdje su f1,.., fk, g ∈ FZ(R) . • Korektnost formalnog sustava Formalni sustav FS: P1,.., Pm je korektan ako je svako pravilo Pi iz FS korektno. Pravilo Pi: f1,.., fk ⊦g je korektno ako vrijedi f1,.., fk ⊨ g . Napomena: u definicijama koristimo veznik ako iako mislimo na veznik ako i samo ako. To primjerice znači da ako nije f1,.., fk ⊨g, onda pravilo f1,.., fk ⊦ g nije korektno. Primjer 2.13 Ispitajmo korektnost sljedećih pravila: (a) lp: X → Y ⊦XZ → Y (b) dp: X → Y ⊦X → YZ Rješenje (a) Pravilo lp je korektno ako vrijedi X → Y ⊨XZ → Y. Rezoniranje, temeljem kataloga FZ iz prošlog poglavlja, je kao što slijedi. 1. X → Y zadano 2. XZ → YZ iz 1. uz proširenje sa Z 3. YZ → Y trivijalnost 4. XZ → Y iz 2. i 3. primjenom tranzitivnosti Prema tome, vrijedi X → Y ⊨XZ → Y, tj. pravilo lp je korektno. (b) Pravilo dp je korektno ako X → Y ⊨X → YZ . Neka je R = ABC, X = A, Y = B, Z = C i r(A B C) ======= 1 2 3 1 2 2 34
Lako provjerimo da A → B vrijedi u r , a A → BC ne vrijedi u r. Prema tome, A → B ⊭A → BC, tj. X → Y ⊭X → YZ. Dobiveni rezultat nam kaže da pravilo dp nije korektno. Notacija [FS] f1,.., fk ⊦g indicira da je zavisnost g derivabilna iz zavisnosti f1,.., fk primjenom formalnog sustava FS . Navedeno znači: Postoji niz zavisnosti g1,.., gm sa svojstvima: (a) gm = g (b) Svaki gi je jednak nekom članu u nizu f1,.., fk ili je dobiven iz prethodnih gova u nizu g1,.., gm primjenom nekog pravila iz FS . • Potpunost formalnog sustava Formalni sustav FS je potpun za funkcijske zavisnosti ako (∀F ⊆ FZ(R))(∀g ∈FZ(R)[F ⊨g ⇒ [FS] F ⊦g ] Armstrongov formalni sustav AFS AFS je formalni sustav za funkcijske zavisnosti, a sastoji se od sljedećih pravila: A1: ⊦X → Y , ako je Y ⊆ X (trivijalnost) A2: X → Y ⊦XZ → YZ (proširenje) A3: X → Y, Y → Z ⊦X → Z (tranzitivnost) Propozicija(korektnost i potpunost AFS) Armstrongov formalni sustav AFS je korektan i potpun za funkcijske zavisnosti . dokaz Za dokaz korektnosti AFS trebamo dokazati da je svako od pravila iz AFS korektno, tj. trebamo dokazati da vrijede sljedeće logičke posljedice: A1k: ⊨X → Y , ako je Y ⊆ X (trivijalnost) A2k: X → Y ⊨XZ → YZ (proširenje) A3k: X → Y, Y → Z ⊨X → Z (tranzitivnost) Vidimo da smo logičke posljedice A1k. A2k i A3k dobili redom iz A1, A2 i A3 zamjenom znaka ⊦sa znakom ⊨. Dokaz da dobivene logičke posljedice vrijede analogan je dokazu koji smo dali u razmatranju kataloga FZ u prošlom poglavlju 2 . 35
Za dokaz potpunosti potreban nam je pojam zatvarača skupa atributa. •
Zatvarač skupa atributa
Neka je F ⊆ FZ(R) i X ⊆ R . Zatvarač skupa atributa X s obzirom na skup funkcijskih zavisnosti F , u oznaci XF+ , definiramo ovako: XF+ = {A ∈ R [AFS] F ⊦X → A} Propozicija (logička posljedica pomoću zatvarača) [AFS] F ⊦X → Y ako i samo ako Y ⊆ XF+ Algoritam za računanje XF+ koristi pojam zatvarač primjenjivosti ili zprimjenjivosti. • Zavisnost X1 → Y1 je zprimjenjiva na X ako je X1 ⊆ X i nije Y1 ⊆ X . Algoritam za računanje XF+ Ulaz: F ⊆ FZ(R), X ⊆ R Izlaz: XF+ Postupak: 1. Staviti X0 = X 2. Odrediti zavisnost iz F koja je zprimjenjiva na X0. Ako takva zavisnost ne postoji, onda XF+ = X0 . Ako je V → W izabrana zavisnost iz F , koja je zpromjenjiva na X0, onda izračunati X1 = X0 ∪ W 3. Primijeniti korak 2. na X1 . Navedeni postupak treba ponavljati sve dotle dok ne dobijemo takav skup atributa Xi za koji ne postoji niti jedna zavisnost u F koja je zprimjenjiva na Xi . Dobiveni Xi je XF+ . Prvi dio koraka 2. u navedenom algoritmu prikazujemo grafički u sljedećem obliku: X0
XF+ = X0 36
Graf nam kaže da temeljem X0 i činjenice da u F nema zprimjenjivih zavisnosti na X0 dobivamo X F+ = X0. Drugi dio koraka 2. ima sljedeći grafički prikaz:
X0 V → W
X1 = X0 ∪ W Iz grafa čitamo da temeljem X0 i zavisnosti V → W iz F koja je zprimjenjiva na X0 dobivamo X1 = X0 ∪ W . Primjer 2.14 R = ABCD, F: A → B, BC → D, D → A Izračunajmo (a) A F+ (b) B F+ Rješenje (a) Računamo A F+ X0 = A A → B
X1 = A ∪ B = AB
A F+ = AB (b) računamo B F+ X0 = B
B F+ = B
37
Propozicija (korektnost XF+) Algoritam za računanje XF+ je korektan . Dokaz: Treba dokazati Xi = XF+ Xi ⊆ XF+ Pokazujemo indukcijom po j da ako je A stavljen u Xj, onda je A ∈ XF+ . j = 0 : A ∈ X0 = X . Zato X → A (po A1), te A ∈ XF+ . Pretpostavimo, kada je A ∈Xk , onda je A ∈ XF+ Neka je sada A ∈ Xk+1 . Lako se dokaže da je tada A ∈ XF+ .
XF+ ⊆ Xi
Dokazujemo da [FS] F ⊦ X → Y povlači Y ⊆ Xj , gdje je j ≤ i . Dokaz ‘ide’ indukcijom po dužini dokaza X → Y iz F . d = 1 : gm = g1 = X → Y . Tada X → Y ∈ F ili X → Y slijedi iz F po A1. U prvom slučaju imamo Y ⊆ X1, a u drugom slučaju je Y ⊆ X = X0 . Neka tvrdnja vrijedi za sve dokaze , gdje je d ≤ k . Dokazat ćemo da tvrdnja vrijedi i za sve dokaze , gdje je d = k+1 . Neka je dokaz oblika f1,.., fk, X → Y . Ako X → Y ∈ F ili X → Y slijedi iz F po trivijalnosti (A1), onda zaključak slijedi kao u bazi indukcije. Neka je X → Y dobiveno po tranzitivnosti iz fi: X → Z , fj: Z → Y , gdje je i × [4, 5>, [1, 2> × [4, 5>} Ako upotrijebimo identifikaciju: di = [di, di+1> za i = 1, 2, .., n1 ; dn = [dn, ♣>, dobivamo ∆ ⊆ I(∆ ) . • R = A1,.., An je intervalna relacijska shema ako je Dom(Ai) = I(∆ i) ili Dom(Ai) = ∆ i , ∀i . • Ako je r relacija nad R , onda kažemo da je r intervalna relacija . Kod intervalne relacije, vrijednosti atributa su atomne vrijednosti ili intervali. Intervalna relacija je poopćenje ‘obične’ relacije (obična relacija sadrži samo atomske vrijednosti). 74
4.3. RELACIJSKI OPERATORI ZA TEMPORALNE RELACIJE Opratori ∪ , ∩ , − , Π , ⊗, kao što su definirani za ‘obične’ relacije, imaju nepoželjna svojstva ukoliko se primjene na intervalne relacije. To ćemo vidjeti iz sljedećeg primjera. Primjer 4.3 Neka su zadane relacije r1(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d5> r2(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d5, d10> Tada je r1 ∪ r2 (Radnik# Plaća Vrijeme) =========================== R1 110 Kn [d2, d5> R1 110 Kn [d5, d10>
Kompaktnija reprezentacija informacije iz r1 ∪ r2 je u obliku relacije r1 ∪i r2, gdje smo izvršili uniju intervala [d2, d5 > i [d5, d10 > . r1 ∪i r2 je intervalna unija relacija r1 i r2 . Dobivamo r1 ∪i r2 (Radnik# Plaća Vrijeme) =========================== R1 110 Kn [d2, d10> •
Zatvaranje (fold) Zi
75
Primjer 4.4 Neka imamo relaciju r ( A B C ) =================== [1, 5> [3, 6> [2, 12> [1, 5> [1, 2> [2, 12> [3, 4> [1, 9> [2, 12> [1, 5> [5, 11> [2, 12> [3, 4> [7, 12> [2, 12> Tada je zatvaranje relacije r po atributu B dano relacijom Zi[B](r)( A B C ) ==================== [1, 5> [1, 2> [2, 12> [1, 5> [3, 11> [2, 12> [3, 4> [1, 12> [2, 12> Zi[B](r) je dobiveno sljedećim postupkom. Postupak računanja Zi[B](r) : 1. Naći grupe svih slogova iz r koji se podudaraju na AC i čije unije intervala iz korespondentnog skupa Π[B](r) daju interval. 2. Za svaku grupu {t1,.., tk} staviti slog t1[A] , t1[B] ∪ .. ∪ tk[B], t1[C] u Zi[B](r) . Formalizacija relacijskih operatora zahtijeva definiranje predikata nad intervalima . •
Neka su zadani intervali I1 = [a, b > , I2 = [c, d > . Definirat ćemo 13 predikata kao što slijedi. (1) I1 Prije I2 ako b Tada je Zi[A, B](r)( A B ) Zi[B, A](r)( A B ) ================= ================== [1, 3> [1, 10> [1, 7> [1, 5> [3, 7> [1, 5> [1, 3> [5, 10> [5, 10> [3, 7> [5, 10> [3, 7> Vidimo da je Zi[A, B](r) ≠ Zi[B, A](r) . •
Otvaranje (unfold) Oi
Primjer 4.5 Relacija r i njeno otvoranje po atributu B dano je sljedećim tablicama r( A B ) Oi[B](r)( A B ) =========== ============ a [1, 3> a 1 a [5, 6> a 2 a 5 Primijenili smo sljedeće pravilo: Svaki slog [x, y] ∈ r rezultira skupom slogova {[x, y1]} ⊆ Oi[B](r) , gdje je y1 ∈ y . Slijedi formalizacija otvaranja. •
Formalizacija Oi
Neka je zadana relacija r(A1,.., Ak, B). Otvaranje relacije r po atributu B je relacija Oi[B](r) koja ima sljedeća svojstva: (1) SH(Oi[B](r)) = (A1,, Ak, B) , gdje je Dom(B) = ∆ k+1, (2) [x1,.., xk, b] ∈ Oi[B](r) ako [x1,.., xk, X] ∈ r i b ∈ X 78
Propozicija (Oi, Zi) (1) Oi[B](Zi[B](r)) = Oi[B](r) (2) Zi[B](Oi[B](r)) = Zi[B](r) Propozicija(Oi, Zi) nam kaže: (1) Zatvaranje relacije r, a zatim otvaranje dobivene relacije daje isti rezultat kao otvaranje relacije r; (2) Otvaranje relacije r, a zatim zatvaranje dobivene relacije daje isti rezultat kao zatvaranje relacije r . • Otvaranje, prvo po B, a zatim po A, dano je sa Oi[A, B](r) = Oi[A](Oi[B](r)) Motivacija za uvoðenje operatora ∪ i , −i U ovom odjeljku motiviramo uvođenje operatora intervalne unije i intervalne razlike. Primjer 4.6 Ako su zadane relacije, r1(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d5> r2(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d3, d6> tada je r1 ∪ r2 ( Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d5> R1 110 Kn [d3, d6>
Iz r1 ∪ r2 vidimo da je plaća radnika R1, u vrijeme d3 i d4 zapisana dvaputa (redundancija) . Bolju reprezentaciju dobijemo relacijom Zi[Vrijeme] (Oi[Vrijeme](r1) ∪ Oi[Vrijeme](r2)).
79
Zadatak Izračunajte relaciju Zi[Vrijeme] (Oi[Vrijeme](r1) ∪ Oi[Vrijeme](r2)). Primjer 4.7 Neka je zadana relacija r1(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d8> Eliminirajmo iz r1 podatak da je plaća radnika R1 bila 110 Kn u razdoblju [d4, d7> . Rješenje1: Definirajmo prvo relaciju r2(Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d4, d7> Sada računamo r1 − r2 (Radnik# Plaća Vrijeme) ========================== R1 110 Kn [d2, d8> Rješenje1 nije korektno jer smo dobili polaznu relaciju r1. Dakle, uobičajenom razlikom relacija nismo ostvarili željeni cilj. Korektan rezultat dan je relacijom u rješenju2. Rješenje2: r3 = Zi[Vrijeme] (Oi[Vrijeme](r1) − Oi[Vrijeme](r2)) r3 ( Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d4> R1 110 Kn [d7, d8> •
Formalizacija ∪i , −i
Za relacije r1(R) , r2(R), X ∈ R, gdje je atribut X s intervalnim vrijednostima definiramo intervalnu uniju i razliku kao što slijedi: r1 ∪i r2 = Zi[X]( Oi[X](r1) ∪ Oi[X](r2) ) r1 −i r2 = Zi[X]( Oi[X](r1) − Oi[X](r2) ) 80
Dakle, prvo relacije r1 i r2 otvorimo, a zatim izvršimo ‘običnu’ uniju i razliku, te konačno izvršimo zatvaranje dobivenih rezultata. •
Selekcija σ
σ [ F](r) = {t ∈ r F(t) = T} Definicija formule F uključuje i intervalne operatore (1),.., (13), te operatore koji su definirani na osnovi navedenih operatora. Primjer 4.8 Neka je zadana relacija r ( Radnik# Plaća Vrijeme) ======================== R1 110 Kn [d2, d4> R1 110 Kn [d7, d8> R1 120 Kn [d10, ♣> R2 140 Kn [d9, d12> i formula F = (Radnik# = R1) ∧ (Vrijeme Prije [d8, d12>) Ako primijenimo postupak selekcioniranja po formuli F dobit ćemo sljedeći rezultat σ [ F](r) ( Radnik# Plaća Vrijeme) ========================== R1 110 Kn [d2, d4> Iz dosadašnjih razmatranja jasno je da se implementacija operatora na intervalnim relacijama temelji na implementaciji predikata (1), (2),.., (12), (13) i operatora Zi i Oi . Također, istaknimo da ćemo u poglavlju o poopćenim relacijskim bazama podataka, čiji specijalni slučaj su temporalne baze podataka, karakterizirati i preostale relacijske operatore ∩, Π i ∞ .
81
ZADACI 1. Zadani su ∆ 1 = {0, 1, 2} , ∆ 2 = {4, 6} . Definirajte ♣(∆ 1) = i ♣(∆ 2) , a zatim napišite I(∆ 1) , I(∆ 2), I(T) = I(∆ 1 × ∆ 2) . 2. Neka je ∆ = {0, 1, 2, 3, 4, 5} te neka su zadane relacije r1 ( A B C ) r2 ( A B C ) ============ ============ 1 2 [1, 3> 2 2 [2, 4> 1 2 [2, 5> 1 2 [3, 4> Odredite Zi[C](r1), Zi[C](r2), Oi[C](r1), Oi[C](r2). 3. Neka su ∆ i relacije r1 i r2 kao u zadatku 2. Odredite r1 −i r2, r2 −i r1, r1 ∪i r2 . 4. Za relaciju r2 iz zadatka 2. i formulu F: [(A = 1) ∨ (B = 2)] ∧ (C Lijevo preklapa [3, 5>) odredite σ [ F](r2).
82
5. DEDUKTIVNE BAZE PODATAKA 5.1. UVOD U ovom uvodnom odjeljku karakteriziramo deduktivnu bazu podataka (DBP) kao proširenje relacijske baze podataka deduktivnom komponentom. Na neformalan način uvodimo temeljne pojmove deduktivnih baza podataka (baza znanja) i njihov prikaz pomoću logičkog jezika Dataloga. •
Deduktivna baza podataka DBP sastoji se od tri komponente:
(1) Eksplicitna (ekstenzijska) baza podataka EBP (2) Implicitna (intenzijska) baza podataka IBP (3) Uvjeti integriteta (integritetna ograničenja) UI Primjer 5.1 Neka je zadana deduktivna baza podataka DBP : EBP: r1(A B) r2(B C) ======= ======= 1 0 0 0 2 1 1 1 2 1 IBP: ∅ UI: A → B za R1(A, B) B → C za R2(B, C) Ekstenzijska baza podataka EBP sastoji se od dvije relacije r1 i r2; intenzijska baza podataka IBP je prazna (nema pravila); uvjeti integriteta UI sadrže kao ograničenja funkcijske zavisnosti A → B i B → C nad relacijskim shemama R1(A, B) i R2(B, C), respektivno. •
Deduktivna baza podataka je uređena trojka DBP = (EBP, IBP, UI).
Primjer 5.2 Proširimo deduktivnu bazu podataka DBP, iz prošlog primjera, pogledom v : EBP: r1(A B) r2(B C) ======= ======= 1 0 0 0 2 1 1 1 2 1 83
IBP: v = r1 ∞ r2 UI: A → B za R1(A, B) B → C za R2(B, C) Pogled v je relacija koja je definirana na temelju r1 i r2; zovemo je derivirana ili deducirana relacija.
84
5.2. SINTAKSA I SEMANTIKA DEDUKTIVNE BAZE PODATAKA Prikaz deduktivne baze podataka DBP ćemo prikazati pomoću logičkog jezika Dataloga, koji je nastao integracijom relacijskih baza podataka i logičkog programiranja. Primjer 5.3 DBP iz prošlog primjera reprezentiramo u sljedećem obliku: EBP: R1(A, B) R2(B, C) r1(1, 0) r2(0, 0) r1(2, 1) r2(1, 1) r2(2, 1) Pretpostavljamo da su relacijske sheme R1 i R2 uređene. Činjenicu da je slog (x1, y1) ∈ r pišemo u obliku r(x1, y1); x1 (prva komponenta) je Avrijednost, a y1 (druga komponenta) je Bvrijednost. EBP se sastoji od dvije činjenice za relaciju r1 i tri činjenice za relaciju r2. IBP: p v(x, y, z) ← r1(x, y), r2(y, z) IBP se sastoji od pravila p pomoću kojeg je definirana relacija v nad relacijskom shemom V(A, B, C); v se dobije spajanjem relacija r1 i r2. Čitanje pravila p : (Za svaki x, y, z) [slog (x, y, z) je u relaciji v ako je slog (x, y) u relaciji r1 i slog (y, z) je u relaciji r2]. Ako je slog t = (x1, x2,.., xm), onda ćemo umjesto r(x1, x2,.., xm) pisati r(t). Prema tome, t ∈ r pišemo u obliku r(t); kažemo da je slog (red) t u relaciji r, odnosno da r(t) vrijedi. Drugo čitanje pravila p : (Za svaki x, y, z) [v(x, y, z) vrijedi ako vrijedi r1(x, y) i ako vrijedi r2(y, z)]. U pravilu, p: v(x, y, z) ← r1(x, y), r2(y, z), definiranu relaciju v zovemo glavom pravila, a konjunkciju r1(x, y), r2(y, z) zovemo tijelom pravila. Općenito, svako pravilo p ima oblik p: G ← T , gdje je G glava pravila, a T tijelo pravila. Precizna karakterizacija pravila bit će dana u poglavlju u kojem ćemo govoriti o Datalogu. Preostaje nam još prikaz funkcijskih zavisnosti iz UI. UI: A → B za R1(A, B) 85
Zavisnost A → B znači [ako r1(x, y) i r1(x, z) , onda y = z ]. Prikaz zavisnosti A → B u obliku pravila poprima sljedeći oblik z(A → B) : ← r1(x, y), r1(x, z), y ≠ z Čitanje pravila z(A → B): nije moguće da bude r1(x, z) i r1(x, z) i y ≠ z . Prema tome, simbol čitamo: nije moguće da bude. Pravilo z djeluje kao zabrana (filter); Valjanim relacijama nad R1 smatraju se samo one relacije u kojima vrijedi zavisnost A → B . Analogno, funkcijsku zavisnost B → C nad R2 prikazujemo u obliku z(B → C) : ← r2(x, y), r2(x, z), y ≠ z Čitanje pravila z(A → B): nije moguće da bude r1(x, z) i r1(x, z) i y ≠ z . U daljem ćemo usvojiti sljedeće pojednostavljenje: prilikom prikaza deduktivne baze podataka DBP = (EBP, IBP, UI) pomoću Dataloga, ekstenzijsku bazu podataka EBP predstavljat ćemo kao kod relacijskih baza podataka (pomoću tablica) uz pretpostavku uređenosti relacijskih shema; pojednostavljenje se ogleda u izbjegavanju ponavljanja imena relacije za svaki red relacije. Semantika deduktivne baze podataka Semantika (značenje) deduktivne baze podataka karakterizirana je svojim deklarativnim dijelom (deklarativna semantika) i proceduralnim dijelom (proceduralna semantika). Deklarativna semantika kaže što je model DBPa, a proceduralna semantika govori o postupcima računanja modela DBPa. Primjer 5.4 Razmotrimo DBP: EBP, IBP, UI EBP: r1(A B) r2(B C) UI: A → B za R1(A, B ====== ====== B → C za R2(B, C) 1 0 0 0 2 1 1 1 2 1 IBP: V(A, B, C) p: v(x, y, z) ← r1(x, y), r2(y, z) Model deduktivne baze podataka je takva interpretacija deduktivne baze podataka u kojoj vrijede sve činjenice iz EBP, sva pravila iz IBP, i sva ograničenja iz UI. Lako se može provjeriti da je sljedeća interpretacija M model za našu DBP.
86
M: r1(A B) r2(B C) v(A B C) ====== ======= ======== 1 0 0 0 1 0 0 2 1 1 1 2 1 1 2 1 Provjerite da je interpretacija M1 također model zadane DBP. M1: r1(A B) r2(B C) v(A B C) ====== ======= ======== 1 0 0 0 1 0 0 2 1 1 1 2 1 1 2 1 0 1 2 M1 je dobiveno iz M proširenjem relacije v. Nije teško zaključiti da je svaka interpretacija Mi, koja se dobije iz M proširenjem relacije v , model za DBP. Prošli primjer ukazuje da deduktivna baza podataka može imati više modela. Zadatak Postoji li deduktivna baza podataka koja nema model? Rekli smo da proceduralna semantika karakterizira postupak računanja (dedukcije) modela. Svaki model deduktivne baze podataka DBP = (EBP, IBP, UI) sadrži valjanu EBP, gdje za EBP kažemo da je valjana ako u njoj vrijede sva ograničenja iz UI. Postupci računanja modela reduciraju se na izračunavanje (valjane) IBP. Razlikujemo tri postupka računanja: BUpostupak (bottom up), TDpostupak (top down) i Hpostupak (kombinacija BU i TD). U daljem ćemo isključivo razmatrati temeljne postupke BU i TD. Primjer 5.5 Neka je zadana deduktivna baza podataka DBP = (EBP, IBP, UI) EBP: r1(A B) r2(B C) UI: A → B za R1(A, B ====== ====== B → C za R2(B, C) 1 0 0 0 2 1 1 1 2 1 IBP: V(A, B, C) p: v(x, y, z) ← r1(x, y), r2(y, z) Na primjeru ove DBP pokazat ćemo postupke BU i TD.
87
BUpostupak Krećemo od EBP (činjenice) na koju primjenjujemo pravilo p iz IBP, te tako dobivamo relaciju v , koja je definirana pravilom p. Računanje teče ovako: 1. r1(1, 0) zadano (EBP) 2. r2(0, 0) zadano (EBP) 3. v(1, 0, 0) p , 1. , 2. Sustav traži nova rješenja: 4. r1(2, 1) zadano (EBP) 5. r2(1, 1) zadano (EBP) 6. v(2, 1, 1) p , 4. , 5. Sustav traži nova rješenja: nema novih rješenja! Prema tome, M: r1, r2, v , gdje je v(A B C) ======== 1 0 0 2 1 1 TDpostupak Krećemo od glave pravila p , tj., rješavamo v(x, y, z). Rješavanje v(x, y, z) reducira se na rješavanje relacija r1 i r2 (EBP) iz tijela pravila p. 1. v(x, y, z) ? 2. r1(x, y), r2(y, z) p, 1 3. r1(1, 0) EBP 4. r2(0, z) ? 5. r2(0, 0) EBP 6. v(1, 0, 0) p, 3, 5 7. r2(0, z) ? (ponovno rješavanje uvjeta) 8. nema rješenja EBP 9. r1(x, y) ? (ponovno rješavanje uvjeta) 10. r1(2, 1) EBP 11. r2(1, z) ? 12. r2(1, 1) EBP 13. v(2, 1, 1) p, 10, 12 14. r2(1, z) ? (ponovno rješavanje uvjeta) 15. nema rješenja EBP 16. r1(x, y) ? (ponovno rješavanje uvjeta) 17. nema rješenja EBP
88
Prema tome, M: r1, r2, v , gdje je v(A B C) ======== 1 0 0 2 1 1 Postavljanje upita Primjer 5.6 Neka je zadana DBP iz prethodnog primjera. Riješimo sljedeći upit. U: Naći sve slogove iz v oblika (1, y, z) . Odgovor na upit U označit ćemo sa o(U). Rješenje1 : 1. Odrediti relaciju v ∈ M 2. o(U): σ [ A = 1](v) (A B C) =============== 1 0 0 Rješenje2 : Sustav traži sve slogove (1, y, z) takve da vrijedi v(1, y, z). 1. v(1, y, z) ? 2. r1(1, y), r2(y, z) p, 1 3. r1(1, y) ? 4. r1(1, 0) EBP 5. r2(0, z) ? 6. r2(0, 0) EBP 7. v(1, 0, 0) p, 4, 6 8. r2(o, z) ? (traži se novo rješenje, tj. rješenje različito od rješenja 6.) 9. nema rješenje EBP 10. r1(1, y) ? (traži se novo rješenje, tj. rješenje različito od rješenja 4.) 11. nema rješenja EBP Prema tome, o(U): v (A B C) ========= 1 0 0
89
Primjer 5.7 (rekurzivna pravila) Razmotrimo relaciju r(A B) ====== a b b c c d Tranzitivno zatvorenje relacije r je relacija tz(r) koja ima sljedeća svojstva: (1) r ⊆ tz(r); (2) tz(r) je tranzitivna relacija, tj. ako tz(r)(x, y) i tz(r)(y, z), onda je i tz(r)(x, z); (3) tz(r) je najmanja relacija sa svojstvima (1) i (2) . Karakterizirajmo deduktivnu bazu podataka DBP : r, tz(r) . Rješenje: DBP = (EBP, IBP, UI), gdje je EBP: r IBP: p1 tz(r)(x, y) ← r(x, y) p2 tz(r)(x, y) ← r(x, z), tz(r)(z, y) UI: ∅ . Pravilo p2 je rekurzivno pravilo (tz(r) je rekurzivna relacija); u pravilu p2 tz(r) se pojavljuje u glavi i tijelu pravila. Zadatak Izračunajte relaciju tz(r) iz prošlog primjera i napišite barem jedan model za danu DBP. Na kraju ovog odjeljka istaknimo da se BUpostupak implementira pomoću relacijskih operatora. Zbog rekurzivnih pravila potreban je kontrolni konstrukt (koristi se fiksna točka). Detalji implementacije bit će dani u sljedećim poglavljima. TDpostupak se implementira pomoću rezolucijske procedure (Prologsustavi); navedena implementacija neće biti obuhvaćena u ovoj skripti.
90
5.3. DATALOG U ovom odjeljku opisujemo logički jezik Datalog, koji ćemo koristiti za specifikaciju deduktivne baze podataka. Neformalan uvod u Datalog vidjeli smo u poglavlju 2. •
Sintaksa
Abeceda se sastoji od: 1) Konstanti: a, b, c,.. 2) Varijabli: x, y, z,.. 3) Relacija (predikata): r, r1, r2,.. (obične relacije) 4) (Ugrađene) relacije uspoređivanja: =, , ≥ ,.. 5) Logički veznici: ∨, ∧, ← 6) Zagrade: (, [, {, ), ], } Skupovi 1) 6) su konačni. Pravila Term je konstanta ili varijabla. Atom je izraz oblika r(t1, t2, .., tn), gdje je r nmjesna relacija i t1, t2,.., tn su termi. Izraz (t1, t2,.., tn) je slog. Temeljni atom je atom bez varijabli. Primjer 5.8 a, a1, y, y1, z su termi; (a, b, x) je slog; r(a, b, x) je atom; r(a, b, c) je temeljni atom. Ako je t = (t1, t2,.., tn), onda r(t1, t2,.., tn) pišemo kraće u obliku r(t) . Napomena: U praksi koristimo simbole (imena) koji prirodno odgovaraju opisu aplikacijske domene. Koristeći atome gradimo pravila: Pravilo je izraz oblika r(u) ← r1(u1), r2(u2),.., rn(un), gdje je n ≥ 0, r je obična relacija, ri su relacije, a u, u1, u2,.., un su slogovi odgovarajuće arnosti. Relacija r je glava pravila (zaključak), a r1(u1) ∧ r2(u2) ∧.. ∧ rn(un) je tijelo pravila (pretpostavke). Pravilo r(u) ← r1(u1), r2(u2),.., rn(un) je Hornova klauzula.
91
Primjer 5.9 U ovom primjeru definirat ćemo relacije roditelj i predak. roditelj(x, y) : roditelj od x je y . predak(x, y) : predak od x je y . p1 roditelj(Marko, Ivana) ← p2 predak(x, y) ← roditelj(x, y) p3 predak(x, y) ← roditelj(x, z), predak(z, y) Pravilo p1 (s praznim tijelom) zovemo činjenicom. Relacija predak karakterizirana je pravilima p2 i p3. Čitanje pravila p1: roditelj(Marko Ivana); p2 : ∀x, y [predak(x, y) ako roditelj(x, y)] p3 : (A) ∀x, y, z [predak(x, y) ako roditelj(x, z) i predak(z, y) ili • ∀x, y [predak(x, y) ako ∃ z (roditelj(x, z) i predak(z, y)] Pravilo p3 ukazuje na dvije varijante čitanja pravila: • sve varijable su univerzalno kvantificirane; • varijable iz glave su univerzalno kvantificirane, a varijable koje nisu u glavi kvantificirane su egzistencijalno. Zadatak Pokažite ekvivalentnost čitanja (A) i (B) . • Rekurzivno pravilo Pravilo p je rekurzivno pravilo ako je oblika p: r ← . . r . . Dakle, glava od p pojavljuje se i u tijelu od p . • Datalog program je konačan skup pravila; Deduktivnu bazu podataka DBP: EBP, IBP, UI reprezentiramo pomoću Datalog programa. Postoji mogućnost predstavljanja DBP u obliku: EBP : konvencionalno (relacijska baza podataka); IBP , UI : Datalog pravila. Relacije iz EBP zovemo temeljnim (baznim) relacijama, a relacije definirane u IBP zovemo deriviranim (deduciranim) relacijama.
92
Primjer 5.10 Razmotrimo deduktivnu bazu podataka DBP = (EBP, IBP, ∅), gdje je EBP: roditelj(Ivana, Marko) ← roditelj(Gorana, Ivana) ← IBP: predak(x, y) ← roditelj(x, y) DBP predstavljamo ovako: EBP: roditelj( Di Ro ) =================== Ivana Marko Goran Ivana IBP: predak(x, y) ← roditelj(x, y). U daljem, deduktivnu bazu podataka DBP = (EBP, IBP, ∅) pišemo u obliku DBP = (EBP, IBP). Slično vrijedi ako je neka druga komponenta od DBP prazna. Primjer 5.11 Neka je zadana deduktivna baza podataka DBP EBP: r(A B C) ======== 1 0 1 1 2 0 IBP: s(2, 3) ← s(x, y) ← r(x, 2, y) Ako bi relacija s bila definirana s puno činjenica, onda bismo te činjenice mogli zapisati u obliku temeljne relacije (tablice) s1 , a IBP bi poprimio oblik: IBP: s(x, y) ← s1(x, y) s(x, y) ← r(x, 2, y). •
Semantika
Interpretacija I sastoji se od: (a) Neprazne domene D , gdje je D skup svih konstanti koje se pojavljuju u EBP i IBP. (b) Instanci relacija iz EBP i IBP .
93
Primjer 5.12 Odredimo jednu interepretaciju I za DBP EBP: roditelj( Di Ro ) =================== Ivana Marko Goran Ivana IBP: predak(x, y) ← roditelj(x, y) I : D = {Ivana, Marko, Goran} roditelj( Di Ro ) =================== Ivana Marko Goran Ivana predak( Po Pr ) ================== Ivana Marko I nije model za DBP, jer pravilo iz IBP ne vrijedi u I . Naime, konkretizacijom pravila iz IBP, stavljajući x = Goran , y = Ivana , dobivamo p: predak(Goran, Ivana) ← roditelj(Goran, Ivana) . Procjena konkretiziranog (temeljnog) pravila p daje sljedeći rezultat F ← T , što je jednako F . Ovdje smo koristili pokrate: F za false, te T za true. Dalje, predak(Goran, Ivana) = F, jer red (Goran, Ivana) nije u relaciji predak; roditelj(Goran, Ivana) = T, jer red (Goran, Ivana) je u relaciji roditelj. Primjer 5.13 Dajemo nekoliko modela deduktivne baze podataka iz prošlog primjera. M: roditelj( Di Ro ) ==================== Ivana Marko Goran Ivana predak( Po Pr ) =================== Ivana Marko Goran Ivana
94
M1: roditelj( Di Ro ) ==================== Ivana Marko Goran Ivana predak( Po Pr ) =================== Ivana Marko Goran Ivana Goran Marko M2: roditelj( Di Ro ) ==================== Ivana Marko Goran Ivana predak( Po Pr ) =================== Ivana Marko Goran Ivana Goran Marko Goran Goran Marko Marko Neka su zadani modeli M1 = i M2 = deduktivne baze podataka DBP. Tada definiramo: • •
M1 ≤ M2 akko ∀i ∈ {1, 2,.., k}[ri ⊆ si] M1 = M2 akko M1 ≤ M2 i M2 ≤ M1
• Konzistentnost deduktivne baze podataka Neka je M(DBP) skup svih modela deduktivne baze podataka DBP. Ako je M(DBP) ∅, onda kažemo da je DBP konzistentna. U protivnome, kažemo da je nekonzistentna, tj., kontradiktorna. Minimalni model Pretpostavimo da je DBP konzistentna i neka je Mm ∈ M(DBP). Kažemo da je Mm minimalan model za DBP ako ne postoji model Mi u M(DBP) takav da vrijedi Mi ≤ Mm i Mi Mm . Intendirani (namjeravani) ili kanonski model za DBP je minimalni model za DBP. Vidjet ćemo poslije da minimalni model za DBP nije jedinstven. Postupkom tzv. stratifikacije odredit ćemo 'prirodni' minimalni model kao intendirani model. Za sada možemo reći da je minimalni model deduktivne baze podataka DBP onaj model kojeg čine relacije iz EBP i relacije koje se dobiju temeljem pravila iz IBP, i ništa više. 95
4.4. RAČUNANJE PRAVILA Ovo poglavlje sadrži računanje (implementaciju) pravila primjenom relacijskih operatora. U prvom dijelu opisujemo računanje nerekurzivnih pravila, a u drugom dijelu razmatramo računanje rekurzivnih pravila Nerekurzivna pravila Postupak računanja pokazat ćemo na nizu odgovarajućih primjera. Primjer 5.14 Razmotrimo deduktivnu bazu podataka DBP EBP: r(A, B) IBP: p s(x, y) ← r(x, z), r(y, z), x ≠ y Pretpostavljamo da su relacijske sheme uređene, tj., atributi su određeni svojom pozicijom u shemi. Prema tome, zapis r(2, 4) kaže da je u slogu ispunjeno A = 2 i B = 4. Za računanje su bitne sheme relacija; rezultat će biti odgovarajući relacijski izraz. Izračunajmo pravilo p , tj. odredimo relaciju s . Postupak1: 1. r1 = δ [ X ↵ A, Z ↵ B](r) ; r2 = δ [ Y ↵ A, Z ↵ B](r) 2. s(X, Y) = Π[X,Y]( σ [ X ≠ Y](r1 ∞ r2)) Konkretizacijom (instanciranjem) relacije r , odnosno relacija r1 i r2 dobivamo konkretizaciju (instancu) relacije s Postupak2 : 1. r1(C, D) = σ [ C ↵ A, D ↵ B](r) 2. r2(A, B, C, D) = σ [ B = D](r ∞ r1); r3(A, C) = Π[A, C](r2) • s(X, Y) = δ [ X ↵ A, Y ↵ C](r3). Primjer 5.15 Neka je zadana deduktivna baza podataka DBP EBP: q(A, B), r(B, C, D), s(C, E) IBP: p1 p(x, y) ← q(a, x), r(x, z, x), s(y, z) 96
Izračunajmo relaciju p pravila p1. Postupak: 1. r1(A, X) = δ [ X ↵ B](σ [ A = a](q)) 2. r2(X, Z, X1) = δ [ X ↵ B, Z ↵ C, X1 ↵ D](σ [ B = D](r)) 3. r3(Y, Z) = δ [ Y ↵ C, Z ↵ E](s) 4. p(X, Y) = Π[X,Y](r1 ∞ r2 ∞ r3). Primjer 5.16 Neka je zadana deduktivna baza podataka DBP EBP: q(A, B), r(C, D, E), s(F, G) IBP: p1 p(x, y) ← q(a, x), r(x, z, x), s(y,z) Izračunajmo relaciju p pravila p1. Postupak: 1. r1(A, B) = σ [ A = a](q) 2. r2(C, D, E) = σ [ C = E](r) 3. r3(A, B, C, D, E) = σ [ B = C](r1 ∞ r2) 4. r4(A, B, C, D, E, F) = σ [ D = G](r3 ∞ s) 5. r5(B, F) = Π[B, F](r4) 6. p(X, Y) = δ [ X ↵B, Y ↵ F](r5). Primjer 5.17 Razmotrimo DBP EBP: r1(A, B), r2(B, C) IBP: s(x, y) ← r1(x, z), r2(y, x) Izračunajmo relaciju s . Postupak: 1. r3(A, r1.B, r2.B, C) = σ [ A = C](r1 ⊗ r2 ) 2. r4(A, r2.B) = Π[A, r2.B](r3) 3. s(X, Y) = δ [ X ↵ A, Y ↵ r2.B](r4).
Popravljanje (rektifikacija) pravila Popravljanje pravila je unifikacija shema relacije iz glava pravila koja definiraju danu relaciju.
97
Primjer 5.18 Neka su zadana pravila: p1: p(a, x, y) ← r(x, y) p2: p(x, y, x) ← r(y, x) Pravilima p1 i p2 definirana je relacija p. Pretpostavimo da je cilj preformulacija pravila p1 i p2 tako da glave u danim pravilima imaju oblik p(x1, x2, x3) (glave postaju unijski kompatibilne). Popravljanje p1: 1. p(x1, x2, x3) ← r(x, y), x1 = a, x2 = x, x3 = y 2. p(x1, x2, x3) ← r(x2, x3), x1 = a Popravljanje p2: 3. p(x1, x2, x3) ← r(y, x), x1 = x, x2 = y, x3 = x • p(x1, x2, x3) ← r(x2, x1), x1 = x3 Računanje relacije p iz pravila p1 svodi se na računanje relacije p iz točke 2.; računanje relacije p iz pravila p2 reducira se na računanje relacije p iz točke 4. Unija dobivenih rezultata predstavlja relaciju p definiranu pravilima p1 i p2. Primjer 5.19 Neka je zadana DBP EBP: r(A, B), s(B, C) IBP: p1 p(a, y) ← r(x, y) p2 p(x, y) ← s(x, z), r(z, y) p3 q(x, x) ← p(x, b) p4 q(x, y) ← p(x, z), s(z, y) Izračunajmo relacije definirane pravilima iz IBP. Postupak: 1. Popravljanje pravila p1: 1.1 p(u, v) ← r(x, y), u = a, v = y 1.2 p(u, v) ← r(x, v), u = a 2. Popravljanje pravila p2: 2.1 p(u, v) ← s(x, z), r(z, y), u = x, v = y 2.2 p(u, v) ← s(u, z), r(z, v) 3. Popravljanje pravila p3: 3.1 q(u1, v1) ← p(x, b), u1 = x, v1 = x 3.2 q(u1, v1) ← p(u1, b), u1 = v1 98
4. Popravljanje pravila p4: 4.1 q(u1, v1) ← p(u1, z), s(z, v1) 5. Računamo relaciju p : 5.1 Kako je relacija p definirana pravilima p1 i p2, računamo relacije T(p1), T(p2) za tijela pravila p1 i p2 , respektivno. Tada je p = T(p1) ∪ T(p2) . 5.2 Računamo T(p1): 5.2.1 Polazimo od r(A, B) ; p1: p(u, v) ← r(x, v), u = a 5.2.2 r(X, V) = δ [ X ↵ A, V ↵ B](r) ; r1( U ) ===== a 5.2.3 T(p1)(U, V) = Π[U, V](r1 ∞ r) 5.3 Računamo T(p2): 5.3.1 Polazimo od s(B, C), r(A, B) ; p2: p(u, v) ← s(u, z), r(z, v) 5.3.2 s(U, Z) = δ [ U ↵ B, Z ↵ C](s) ; r(Z, V) = δ [ Z ↵ A, V ↵ B](r) 5.3.3. T(p2)(U, V) = Π[U, V](s ∞ r) 5.4 p(U, V) = T(p1)(U, V) ∪ T(p2)(U, V) 6. Računamo relaciju q , gdje je q(U1, V1) = T(p3)(U1, V1) ∪ T(p4)(U1, V1): 6.1 Računamo T(p3): 6.1.1 Polazimo od p3: q(u1, v1) ← p(u1, b), u1 = v1 ; p(U, V) 6.1.2 r1(U, V) = σ [ V = b](p) 6.1.3 r2(U) = Π[U](r1) ; r3(V1) = δ [ V1 ↵ U](r2) 6.1.4 r4(U, V1) = σ [ U = V1](r2 ∞ r3) 6.1.5 T(p3)(U1, V1) = δ [ U1 ↵ U](r4) 6.2 Računamo T(p4): 6.2.1 Polazimo od p4: q(u1, v1) ← p(u1, z), s(z, v1) ; p(U, V), s(B, C) 6.2.2 r1(U, V, B, C) = σ [ V = B](p ∞ s) 6.2.3 r2(U, C) = Π[U, C](r1) 2. T(p4)(U1, V1) = δ [ U1 ↵ U, V1 ↵ C](r2). 6.3 . Relacija q je dana izrazom: q(U1, V1) = T(p3)(U1, V1) ∪ T(p4)(U1, V1).
99
Rekurzivna pravila U ovom dijelu razmatramo računanje rekurzivnih pravila. Rekli smo da je pravilo p rekurzivno ako ima sljedeći oblik: r ← .. r ..; dakle, glava pravila pojavljuje se i u tijelu pravila. Primjer 5.20 Neka je zadana deduktivna baza podataka DBP EBP : roditelj( Di Ro ) ================= Ana Vlado Ana Marija Vlado Ivo Vlado Eva Ivo Petar Eva Lucija Ante Vlado IBP: p1 predak(x, y) ← roditelj(x, y) p2 predak(x, y) ← roditelj(x, z), predak(z, y) IBP sadrži dva pravila p1 i p2 kojima je definirana relacija predak, gdje predak(x, y) znači da je x predak od y. U definiciji relacije predak koristimo relaciju roditelj (pravilo p1 i p2) i relaciju predak (pravilo p2); relacija predak je rekurzivna relacija, jer u njenoj definiciji imamo i rekurzivno pravilo p2. Odnose između relacija možemo prikazati u obliku grafa zavisnosti Gz, gdje Gz sadrži strelicu iz točke r u točku r1 akko je relacija r participira u definiciji relacije r1. Za našu DBP graf zavisnosti izgleda ovako: Gz:
roditelj predak Ciklus u točki predak indicira rekurzivnost relacije predak. Primjer 5.21 Odredimo model deduktivne baze podataka DBP iz prošlog primjera. Trebamo izračunati relaciju predak definiranu pravilima: p1 predak(x, y) ← roditelj(x, y) p2 predak(x, y) ← roditelj(x, z), predak(z, y)
100
Polazimo od EBP: roditelj(Di, Ro); uvodimo sljedeće pokrate: predak = pr , roditelj = ro. Relacijski izraz (jednadžba) RJ: pr(1, 3) = ro(1, 3) ∪ [Π[1, 3](ro(1, 2) ∞ pr(2, 3))] karakterizira traženu relaciju pr, gdje smo, jednostavnosti radi, atribute odgovarajućih relacijskih shema označili pozicijski: 1, 2 i 3 . Dalje pojednostavljenje (izostavljanje atributa) izraza RJ daje RJ: pr = ro ∪ [Π(ro ∞ pr)] . RJ je rekurzivna jednadžba. Naš zadatak se svodi na računanje takve relacije pr koja zadovoljava rekurzivnu jednadžbu RJ. Jednadžbu RJ možemo pisati u obliku RJ: pr = F(pr). Relacija s je fiksna točka za F ako s = F(s). Prema tome, računanje relacije pr koja zadovoljava jednadžbu RJ reducira se na računanje fiksne točke za F. Postupak rješavanja jednadžbe pr = ro ∪ [Π(r o ∞ pr)] : Novi pr Stari pr 1. Stavljamo Stari pr = ∅ , a zatim računamo Novi pr ; 2. Novi pr postaje Stari pr , te opet računamo Novi pr; 3. Postupak završava kad bude Novi pr = Stari pr , tj. kada pr postane fiksna točka zadane jednadžbe. Uočite da će nakon koraka 1. vrijediti Novi pr = ro. Navedeni postupak rješavanja jednadžbe RJ realiziran je algoritmom:
A: begin pr := ro ∆ pr := pr while ∆ pr ≠ ∅ do pr’:= pr ∪ [Π(ro ∞ pr)] ∆ pr := pr’ − pr pr := pr’ end end
101
Poboljšanje algoritma A dano je algoritmom B: begin pr := ro ∆ pr := pr while ∆ pr ≠ ∅ do pr’:= pr ∪ [Π(ro ∞ ∆ pr)] ∆ pr := pr’ − pr pr := pr’ end end Zadatak • Izračunajte relaciju pr primjenom algoritma A . • Izračunajte relaciju pr primjenom algoritma B . • U čemu se sastoju poboljšanje algoritma A ostvareno u algoritmu B ? • Napišite model M zadane deduktivne baze podataka DBP iz prošlog primjera. Primjer 5.22 Neka je M: ro(Di Ro), pr(Po Pr) model deduktivne baze podataka DBP iz prošlog zadatka. U: Odredimo Antine predke. Rješenje je dano izrazom o(U)(Pr) = Π[Pr](σ [ Po = Ante](pr)). Sigurnost pravila Razmotrimo pravilo p : r(x, y) ← x
View more...
Comments