mirko malekovic - teorija baza podataka skripta
DESCRIPTION
pomoć studentimaTRANSCRIPT
SVEUČILIŠTE U ZAGREBUFAKULTET ORGANIZACIJE I INFORMATIKE
Dr. sc. Mirko Malekovićredoviti profesor
TEORIJA BAZA PODATAKA
skripta
Varaždin, listopad 2008.
SADRŽAJ1. SIMBOLIČKA (MATEMATIČKA) LOGIKA......................................................................................1
1.1. PROPOZICIJSKA LOGIKA..........................................................................................................11.2. LOGIKA PRVOG REDA...............................................................................................................91.3. O LOGIČKOM REZONIRANJU.................................................................................................14
2. RELACIJSKE BAZE PODATAKA.....................................................................................................162.1. RELACIJSKA ALGEBRA..........................................................................................................182.2. ZAVISNOSTI U RELACIJSKIM BAZAMA PODATAKA........................................................272.3. FORMALNI SUSTAVI................................................................................................................342.4. IMPLIKACIJSKI PROBLEM......................................................................................................402.5. NORMALNE FORME.................................................................................................................50
3. PARCIJALNA INFORMACIJA...........................................................................................................613.1. UVOD...........................................................................................................................................612.2. PARCIJALNA RELACIJA...........................................................................................................623.3. RELACIJSKI OPERATORI ZA PARCIJALNE RELACIJE.......................................................672.4. TIPOVI LOGIČKIH POSLJEDICA............................................................................................70
4. TEMPORALNE BAZE PODATAKA.................................................................................................734.1. UVOD...........................................................................................................................................734.2. TEMPORALNE RELACIJE........................................................................................................734.3. RELACIJSKI OPERATORI ZA TEMPORALNE RELACIJE...................................................75
5. DEDUKTIVNE BAZE PODATAKA..................................................................................................835.1. UVOD...........................................................................................................................................835.2. SINTAKSA I SEMANTIKA DEDUKTIVNE BAZE PODATAKA...........................................855.3. DATALOG....................................................................................................................................914.4. RAČUNANJE PRAVILA.............................................................................................................964.5 PROŠIRENJA DATALOGA......................................................................................................105
6. POOPĆENE RELACIJSKE BAZE PODATAKA (PORBP)............................................................1236.1. UVOD.........................................................................................................................................1236.2. PARTICIJSKA NORMALNA FORMA (PNF).........................................................................1256.3. RELACIJSKI OPERATORI ZA PONF RELACIJE..................................................................126
7. OBJEKTNO ORIJENTIRANE BAZE PODATAKA.........................................................................1367.1. UVOD..........................................................................................................................................1367.2. ODL............................................................................................................................................1437.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čeniceR1: 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.
FORMULAKoristeć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 FORMULEInterpretacija formule F je preslikavanjeI: PR[F] → {0, 1}
Pr. F = P ∧ ¬ RJedna 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, Gvrijedi 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 1Odrediti 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
TAUTOLOGIJAFormula 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.
KONTRADIKCIJAFormula 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 = ¬ QIspitujemo da li niz F, G ima model.
LOGIČKA POSLJEDICAZa formulu G kažemo da je posljedica formula F1,.., Fn ako za svaku interpretaciju I formulaF1,.., 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
PropozicijaF1,.., Fn G ako i samo ako je formula H = (F1 ∧ .. ∧ Fn) ⇒ G tautologija.
(SEMANTIČKA) JEDNAKOST FORMULAFormule F i G su jednake ako vrijediF G i G F ; Pišemo F = G .
Napomena: Jednakost F = G znači jednakost pripadnih istinosnih tablica.
5
KATALOG PLZa bilo koje formule F, G, H vrijedi:1. F = F refleksija2. F ∨ G = G ∨ F; F ∧ G = G ∧ F komutacija3. (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 ∧ ¬G6. 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 ∧ ¬G8. 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 uvjetU: 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.
SINTAKSAFormule LPR grade se od sljedćih simbolaKonstante: a, b, c, a1,...Varijable: x, y, z, x1,...Funkcije: f, g, h, f1,...Predikati (relacije): P, Q, R, P1,...Kvantifikatori: ∃ , ∀
TermKonstante 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 formulaIzraz P(t1,.., tm) je atomska formula ako su t1,.., tmtermi 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 FORMULAFormula 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 SIMBOLIKonstante, funkcije i predikate od kojih je F izgraðeno zovemo slobodnim simbolima od F.
INTERPRETACIJA FORMULEInterpretirati 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) = 1Kako 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 2Računamo I(F):Neka je H = ∃xP(x, a) prva, a H1 = ∀yP(b, f(y)) druga komponenta konjunkcije F. RačunamoI(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 vrijedi5. ∀x∃y(F) ≠ ∃y∀x(F)
Postoje formule F i G za koje vrijedi6. ∀x(F ∨ G) ≠ ∀x(F) ∨ ∀x(G)
Postoje formule F i G za koje vrijedi7. ∃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 akoje I(F) = 1 za svaki x iz D.
(∃x∈D) (F) = ∃x(x ∈ D ∧ F)
Formula (∃x∈D)(F) vrijedi u interpretaciji I akoI(F) = 1 za neki x iz D.
Katalog LPR ostaje na znazi ako ∀x i ∃x zamijenimo sa (∀x∈S) i (∃x∈S).
12
ZADACI1. 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
GProš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 izF1, 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
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
modeliranje
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.1Neka 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 ∪ D2t1: 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.2Neka 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.3Neka 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.6Neka 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.7Neka 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.8Izrač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.9Ako 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 PODATAKAFUNKCIJSKE 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.10Ispitajmo 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 daA → 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.11Ispitajmo 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)
DokazKao 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] dobivamot1[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. Tada1. F ⊨G , ako je G ⊆ F .2. F ⊨G i G ⊨H povlači F ⊨H .
DokazDokazat ć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.12R = ABCD, F: A → B, B → C ; G: A → B, B → C, A → C .Ispitati F ≡ G .RješenjeKako 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.13Ispitajmo 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 zadano2. XZ → YZ iz 1. uz proširenje sa Z3. YZ → Y trivijalnost4. XZ → Y iz 2. i 3. primjenom tranzitivnostiPrema 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 .
dokazZa 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 ⊆ RIzlaz: XF+Postupak:1. Staviti X0 = X2. 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 XF+ = X0.
Drugi dio koraka 2. ima sljedeći grafički prikaz:
X0 V → W
X1 = X0 ∪ WIz grafa čitamo da temeljem X0 i zavisnosti V → W iz F koja je zprimjenjiva na X0 dobivamo X1 =
X0 ∪ W .
Primjer 2.14R = ABCD, F: A → B, BC → D, D → AIzrač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 izfi: X → Z , fj: Z → Y , gdje je i < j ≤ k .fi i fj imaju dokaze čija je dužina d ≤ k . Zato Z ⊆ Xj . Uzimajući Z = X u algoritmu, zbog Z → Y, imamo Y ⊆ Zm. Dalje, iz Z ⊆ Xj slijedi Zm ⊆ Xj+m . Prema tome, Y ⊆ Xj+m .Neka, na kraju, X → Y slijedi iz fj : V → W proširenjem sa skupom Z , tj. X = VZ i Y = WZ .Imamo, W ⊆ Vk ⊆ Xk i Z ⊆ X ⊆ Xk . Zato, Y = WZ ⊆ Xk .
Propozicija (potpunost AS)Formalni sustav AS je potpun za funkcijske zavisnosti.
Dokaz:Treba dokazati da F ⊨X → Y povlači [AFS] F ⊦X → Y . Navedeno je ekvivalentno, po kontrapoziciji, [AFS] F ⊬X → Y povlači F ⊭X → Y .
38
Neka je relacija r(R) definirana ovako:
r ( XF+ R XF
+ )=============== 0 .. 0 0 .. 0 0 0 1 .. 1
Relacija r ima dva reda: prvi red sadrži sve nule, a drugi red ima nule na XF+ i jedinice na preostalim
atributima.Sada nije teško pokazati, koristeći pretpostavku [AFS] F ⊬X → Y i činjenicu [AFS] F ⊦X → Y ako i samo ako Y ⊆ XF
+ (Propozicija(logička posljedica pomoću zatvarača)), da F vrijedi u r, a X → Y ne vrijedi u r. Prema tome, vrijedi F ⊭X → Y .
Formalni sustav za funkcijske i višeznačne zavisnosti
Formalni sustav za funkcijske i višeznačne zavisnosti, FS, sastoji se od sljedećih pravila:
FS:1. A12. A23. A34. X →→ Y ⊦X →→ (R − XY)5. X →→ Y ⊦XW →→ YV , gdje je V ⊆ W6. X →→ Y, Y →→ Z ⊦X →→ (Z − Y)7. X → Y ⊦X →→ Y8. X →→ Y, W → Z ⊦X → Z , gdje je Z ⊆ Y i W ∩ Y = ∅ .
PropozicijaFS je korektan i potpun za funkcijske i višeznačne zavisnosti.
Korektnost znači zamjenu znaka ⊦sa ⊨, a potpunost znači zamjenu ⊨sa ⊦.
39
2.4. IMPLIKACIJSKI PROBLEM
Centralni problem teorije baza podataka je Implikacijski problem ( Iproblem):
Ispitati da li vrijedi F ⊨f , gdje je F ⊆ FVS(R) i f ∈ FVS(R) .
Postupci rješavanja Iproblema:
(Se) Semantički ( ⊨ ‘igra’)(Si) Sintaksni ( ⊦‘igra’ )(Al) Algoritamski (Algoritmi koji koriste XF
+ , Bazu zavisnosti, Chase postupak).
Rješavanje Iproblema za funkcijske zavisnosti
Algoritam (A)Algoritam testira F ⊨f , gdje je F ⊆ FZ(R) i f ∈ FZ(R)Ulaz: F ⊆ FZ(R), f: X → Y ∈ FZ(R)Izlaz: DA ako F ⊨f NE ako F ⊭f
Postupak:
1. Izračunati XF+ .
2. Ako Y ⊆ XF+ , onda F ⊨f .
Ako nije Y ⊆ XF+ , onda F ⊭f
Primjer 2.15R = ABCD, F: A → B, A → CD, B → ARiješimo Iproblem F ⊨ B → AD .Računamo BF
+
40
X0 = B B → A
X1 = BA A → CD
X2 = BACD
BF+ = BACD
Budući je AD ⊆ BF+ , zaključujemo da vrijedi F ⊨B → AD .
Rješavanje Iproblem za funkcijske i višeznačne zavisnosti
Koristi se Baza zavisnosti .
Neka je F ⊆ FVZ(R) , X ⊆ R . Neka je V skup višeznačnih zavisnosti definiran ovako:(a) Svaka višeznačna zavisnost iz F je u V .(b) Za svaku funkcijsku zavisnost X → A1..Ak iz F , u V staviti višeznačne zavisnosti X →→ A1,..,
X →→Ak .
• Baza zavisnosti od X s obzirom na V , BZ(X, V) , je particija od R − X , dobivena sljedećim algoritmom.
Algoritam (baza zavisnosti)
Ulaz: X ⊆ R , V ⊆ VZ(R) .Izlaz: BZ(X, V)
Postupak:1. X0 = R − X2. Izabrati zavisnost V →→ W ∈ V tako da bude V ∩ X0 = ∅ i W ∩ X0 ≠ ∅.. Ako takva zavisnost ne postoji, onda je BZ(X, V) = X0, inače3. X1 = X0 ∩ W , X2 = X0 − W .4. Primijeniti 2. na X1 i X2 .5. Navedeni postupak ponavljati dok ne dođemo do skupova atributa T1,.., Tm koje više
nije moguće dekomponirati.6. BZ(X, V) = {T1,.., Tm}
41
Algoritam (B)Algoritam testira F ⊨f , gdje je F ⊆ FVZ(R), f ∈ FVZ(R) .
Ulaz: F ⊆ FVZ(R), f: X → Y ili f: X →→ Y , gdje su X, Y ⊆ R, X ∩ Y = ∅ .Izlaz: DA ako F ⊨f NE ako F ⊭fPostupak:
1. Transformirati F u V .2. Izračunati BZ(X, V) .3. F ⊨X →→ Y ako i samo ako Y je unija nekih članova iz BZ(X, V) .
F ⊨X → A ako i samo ako (a) A ∈ BZ(X, V) i (b) Postoji Xi → Yi u F takva da A ∩ Xi = ∅ i A ∈ Yi .
Napomena: X → A1...Ak ≡ X→ A1,.., X → Ak
Primjer 2.16 R = ABCD F: A →B, BC → D, B →→ CRiješimo Iprobleme(a) F ⊨A → C (b) F ⊨A →→ C
Rješavamo (a)Računamo BZ(A, V), gdje je V: A →→ B, BC →→ D, B →→ CParticioniramo R A = BCD
BCD A →→ B
BCD ∩ B = B BCD − B = CD
Dalje, dekomponiramo komponentu CD
CD B →→ C
CD ∩ C = C CD − C = D
42
Prema tome, BZ(A, V) : B, C, D
Za F ⊨A → C trebaju biti ispunjena dva uvjeta(a) C ∈ BZ(A, V) i(b) Postoji funkcijska zavisnost X → Y u F tako da bude C ∩ X = ∅ i C ∈ Y.Vidimo da je uvjet (a) ispunjen, ali uvjet (b) nije.Zaključujemo F ⊭A → C .
Rješavamo F ⊨A →→ C .BZ(A, V) : B, C, D (izračunato u postupku (a)).Kako je C unija nekih članova baze, jer je C član baze, slijedi F ⊨A →→ C .
Napomena Rješavajući prošli primjer, koristili smo kratice {A, B, C} = ABC, {A} = A;BZ(A,V) = {{B}, {C}, {D}} pisali smo u oblikuBZ(A, V) : B, C, D .Dalje, kada pišemo B ∈ X, onda je B pojedinačan atribut; kada pišemo B ∩ X = Y, onda B treba shvatiti kao {B}. Eto, to je primjer polimorfne upotrebe zapisa B (može bit ii zbunjujuće, zar ne?)
Algoritam (C)
Algoritam je najopćenitiji; testira F ⊨f , gdje je F ⊆ FVS(R) i f ∈ FVS(R) . Koristi se Chasepostupak.
• Neka je zadano:(F, R), R = A1,.., Am , d(R): R1,.., Rn Definiramo početnu tablicu T0 ovako
T0 (A1 A2...Am)==============R1 aj ako Aj ∈ Ri. Tij Tij = Rn bij ako Aj ∉ Ri
Prema tome, tablica T0 sastoji se od odgovarajućih simbola aj i bij . Simbole aj zovemo istaknuti simboli.Red koji se sastoji samo od istaknutih simbola zovemo ciljni red, tj. red
cr: a1a2...am je ciljni red
43
FZ, VZ, ZS transformacije (modifikacije)
• (A) Transformacija temeljem funkcijske zavisnosti Neka je f: X → Y; Zapis Ti f Ti+1 znači da je tablica Ti+1 dobivena iz Ti transformacijom temeljenoj na funkcijskoj zavisti f . Transformacija
se sprovodi ovako:
Za bilo koja dva reda t1, t2 ∈ Ti takva da je t1[X] = t2[X] izjednačite t1[Y] sa t2[Y] koristeći pravilo (FZ) koje ‘radi’ na sljedeći način:neka je t1[Y]: a3 b57 b59 t2[Y]: b13 b17 a9
Novi t1[Y] i t2[Y] poprimaju oblik
t1[Y]: a3 b17 a9 t2[Y]: a3 b17 a9Dakle, pravilo (FZ) ne mijenja simbol aj, a simbol bij se zamjenjuje sa aj ili sa bkj, gdje je k < i .
• (B) Transformacija temeljem zavisnosti spoja Neka je f: ∞(R1, R2,.., Rm) Zapis Ti f Ti+1 znači da je tablica Ti+1 dobivena iz Ti transformacijom temeljenoj na zavisti spoja f .
Transformaciju sprovodimo koristeći pravilo (ZS):Ti+1 = Π[R1](Ti) ∞ Π[R2](Ti) ∞.. ∞ Π[Rm](Ti)
(C) Transformacija temeljem višeznačne zavisnosti Neka je f: X →→ Y. Kako je f ≡ ∞(XY, X(R −XY)), transformaciju temeljem f sprovodimo primjenom zavisnosti
spoja ∞(XY, X(R −XY)).
Ftransformacija T0 daje tablicu Tf , koja se dobije iz T0 serijskom primjenom svih mogućih transformacija koristeći zavisnosti iz F .( Tf je model za F ) .
44
Algoritam(C)Testiramo F ⊨ ∞(R1,.., Rm) (C1)
Postupak:
1. Napisati T0 za zadani R i d(R) = R1,.., Rm .2. Izračunati Tf .3. F ⊨∞(R1,.., Rm) ako i samo ako cr ∈ Tf .
Testiramo F ⊨ X →→ Y (C2)
Postupak:1. Napisati T0 za zadani R i d(R) = XY, X ∪ (R − XY) 2. Izračunati Tf3. F ⊨ X →→ Y ako i samo ako cr ∈ Tf .
Testiramo F ⊨X → Y (C3)
Postupak:1. Napisati T0 za zadani R i d(R) = X, R .2. Računati Tf .
3. F ⊨ X → Y ako i samo ako su svi Ystupci ciljni, tj. sastoje se samo od odgovarajućih simbola aj .
45
ZADACI
1. Neka je R = ABCD, F: A → C, C →→ B, ∞(AB, C, BD).
Riješite Iprobleme:(a) F ⊨A → B (b) F ⊨ B →→ A (c) F ⊨∞(ABC, BD).
2. Neka sl(Al) znači složenost algoritma Al.Usporedite složenost algoritama (A), (B) i (C).
3. Temeljem rezultata u zadatku 2., definirajte optimalnu kombinaciju predloženih algoritama za rješavanje Iproblema.
46
Svojstva zavisnosti
• X → Y je trivijalna ako Y ⊆ X .
• X →→ Y je trivijalna nad R ako Y ⊆ X ili XY = R .
• R , d(R) : R1,.., RkZavisnost spoja ∞(R1,.., Rk) je trivijalna ako Ri = R za neki
i = 1,.., k
• Neka je zadana je shema (R, F) , F ⊆ FVS(R).
X → Y ∈ FVS(R) je parcijalna s obzirom na F ako ∃Z ⊂ X : F Z → Y
X → Y ∈ FVS(R) je tranzitivna s obzirom na R ako ∃Z ⊆ R : F ⊨X → Z , F ⊨ Z → Y , gdje je Z → Y netrivijalna zavisnost, F ⊭Z → X .
Činjenica da je X → Y tranzitivna zavisnost znači mogućnost konstrukcije sljedećeg tranzitivnog dijagrama: n.z. X Z Y
• Ključ
K ⊆ R je ključ za (R, F) ako
(k1) F ⊨K → R (jedinstvena identifikacija)
(k2) Ne postoji K1 ⊂ K : F ⊨K1 → R (minimalnost)
Atribut A ∈ R je ključni atribut ako je član nekog ključa sheme (R, F); atribut A ∈ R je neključni atribut ako nije član niti jednog ključa sheme (R, F) .
47
ZadatakZadana je relacijska shema (R, F), gdje je R = ABCDE, F: AB → D, C → AD,B → D.• Odredite sve ključeve za (R, F);• Je li zavisnost AB → D parcijalna s obzirom na F ?• Je li zavisnost C → D tranzitivna s obzirom na F ?• Postoji li parcijalna zavisnost neključnog atributa od ključa ?• Postoji li tranzitivna zavisnost neključnog atributa od ključa ?
Čuvanje informacije
(R, F) , d(R1,.., Rk) Dekompozicija d čuva informaciju ako F ⊨ ∞(R1,.., Rk)
Zadatak R = ABCD, F: A → BC, B →→ AD d(R): AC, CD, AB .Ispitati da li dekompozicija d(R) čuva informaciju.
Čuvanje zavisnosti
• (R, F) , d(R): R1,.., Rk
Dekompozicija d čuva zavisnosti F ako za svaku relaciju r nad R vrijedi: Ako je Π R1(r) model za Π R1(F) i ...Π Rk(r) model za Π Rk(F) , onda je r model za F .
Računanje projekcije skupa zavisnosti
1. Projekcija skupa funkcijskih zavisnosti F
Π Ri(F) = {X → Y F ⊨ X → Y i XY ⊆ Ri}
2. Projekcija skupa višeznačnih zavisnosti
Π Ri(F) = {X →→ Y ∃Z ⊆ R: F ⊨X →→ Z , Y = Z ∩ Ri), XY ⊆ Ri}
ZadatakR = ABCDE , R1 = ACD , F : A → BC , B → DE , B →→ C , AC →→ DE
48
Ispitati koje od zavisnosti: A → BC , A → DE , AC →→ DE , AC →→ D , C →→ D pripadaju projekciji Π R1(F) .
Propozicija (čuvanje funkcijskih zavisnosti)Neka je zadana shema (R, F) , gdje je F ⊆ FZ(R) .Dekompozicija d(R): R1,.., Rk čuva zavisnosti F ako i samo ako Π R1(F) ∪ .. ∪ Π Rk(F) ⊨ F
Algoritam za testiranje čuvanja funkcijskih zavisnosti
• Rioperacija na skupu atributa X
Ri(X, F) = X ∪ [(X ∩ Ri)F+ ∩ Ri ]
ZadatakR = ABCD , X = AC , R1 = AB , F : A → B , B → CIzračunati R1(X, F)
Algoritam (čuvanje zavisnosti)
Testiramo G ⊨F , gdje je G = Π R1(F) ∪ .. ∪ Π Rk(F) .G se neće eksplicite računati !!
Ulaz: (R, F) , F ⊆ FZ(R) , d(R): R1,.., RkIzlaz: Da ako d čuva F Ne ako d ne čuva F
Postupak:1. Izabrati zavisnost f: X → Y iz F te ispitati da li d čuva f; Ispitivanje koristi postupakP: (1) X0 = X (2) Xi+1 = Rj(Xi, F) za neki Rj ∈ d(R) (3) Prvi Xk za koji vrijedi Rt(Xk, F) = Xk , za svaki Rt ∈ d(R) , je XG
+
(4) G ⊨ X → Y , tj. d čuva X → Y ako i samo ako Y ⊆ XG+.
2. d čuva F ako i samo ako d čuva svaku zavisnost iz F. ZadatakR = ABCD , d(R) : AB , BC , CD; F: A → B , B → C , C → D , D → AIspitati da li dekompozicija d čuva F .
49
2.5. NORMALNE FORME
Primjer 2.17 (uvodni)
Neka je zadana relacijska shema (R, F), gdje je R = Artikl#, Dobavljač#, Grad; F: Dobavljač# → Grad .
Neka relacija do (dobavljač) nad R u nekom trenutku vremena ima sljedeći oblik
do (Artikl# Dobavljač# Grad) ====================== a1 d1 Zagreb a2 d1 Zagreb a3 d1 Zagreb a2 d3 Sisak a4 d2 Rijeka
Semantika do(a, d, g) znači da dobavljač d lociran u gradu g dobavlja artikl a .Relacija do nema ‘dobru’ strukturu (shemu) za predstavljanje navedenih podataka, jer sadrži redundantno ponavljanje grada dobavljača za svaki artikl.
Karakterizacija redundancije
Zamislimo da, poslije upisivanja reda (a1, d1, Zagreb) u relaciju do , želimo u do upisati (parcijalni) red (a2, d1, ? ). Navedena situacija je prikazana u tablici
do(Artikl# Dobavljač# Grad)========================= a1 d1 Zagreb a2 d1 ?
Postavimo sljedeće pitanje: je li moguće odrediti (deducirati) vrijednost atributa Grad u drugom (parcijalnom) redu na temelju danih podataka u do i svojstava relacijske sheme (R, F). Nije teško zaključiti da treba biti ? = Zagreb, jer u relaciji do mora vrijediti funkcijska zavisnost Dobavljač# → Grad (semantičko ograničenje).Prema tome, upisivanje Grad = Zagreb u drugom redu je suvišno (redundantno), jer ta činjenica slijedi iz danih podataka u do i propisanog semantičkog ograničenja F. No, propisana shema od do zahtijeva ponavljanje lokacije dobavljača za svaki artikl, što samo znači da relacijska dana relacijska shema (R, F) nije dobra. Zaključimo da se redundancija manifestira ponavljanjem podataka (koji inače slijede iz danih podataka), ali da nije svako ponavljanje podataka ujedno i redundantno ponavljanje.
50
Naime, ukoliko pojavljivanje nekog podatka ne slijedi iz danih podataka, tada njegovo ponavljanje nije redundantno (poslije ćemo vidjeti upravo takvu situaciju).Kao posljedicu redundancije imamo poteškoće u ažuriranju baze podataka, što je poznato pod nazivom anomalije ažuriranja, koje ćemo pojasniti na primjeru zadane relacije do .
Anomalije
(AB) Anomalija brisanja:Brisanjem redova za artikle a1, a2, a3 (kada d1 prestane dobavljati artikle), gubimo informaciju o dobavljaču i pripadnom gradu (nepoželjan efekt)
(AU) Anomalija upisivanja:Nemogućnost upisivanja dobavljača i pripadnog grada ako dani dobavljač trenutno ne dobavlja neki artikl.
(AM) Anomalija modifikacije:Nemogućnost nezavisnog ažuriranja vrijednosti atributa Grad .Napomena: (AB) i (AU) ne možemo riješiti pomoću NULL znaka.
ZadatakObjasnite navedenu napomenu.
Uzrok promlema
Postoji parcijalna zavisnost neključnog atributa Grad o ključuK = Artikl#, Dobavljač#. Navedeno znači da (R, F) nije u 2NF. Karakterizacije normalnih formi dat ćemo u preostalom dijelu ovog poglavlja, nakon što opišemo problem oblikovanja sheme relacijske baze podataka.
Nastavimo razmatranje našeg primjera. Problem redundancije, a samim tim i anomalija ažuriranja, možemo riješiti eliminacijom parcijalne zavisnosti neključnog atributa Grad o ključu K = Artikl#, Dobavljač tako da izvršimo 2NF dekompoziciju relacijske sheme (R, F).Dekomponirajući R, koristeći funkcijsku zavisnost Dobavljač# → Grad, dobivamod(R): R1 = Dobavljač#, Grad R2 = Dobavljač#, Atrikl.Shema relacijske baze podataka poprima oblikSRBP: (R1, Π R1(F)) , (R2, Π R2(F) ) . SRBP je u 2NF, tj., svaka relacijska shema iz SRBP je u 2NF.
Umjesto relacije do , baza podataka BP , nad relacijskom shemom SRBP, sastoji se od projekcija do na R1 i R2. Tako dobivamoBP: do1, do2, gdje je do1 = Π Dobavljač# Grad (do) i do2 = Π Dobavljač# Artikl# (do).
51
Relacije do1 i do2 izgledaju ovako:
do1 (Dobavljač# Grad) do2 (Dobavljač# Artikl#)
d1 Zagreb d1 a1 d3 Sisak d1 a2 d2 Rijeka d1 a3 d3 a2 d2 a4
Uočite da u dobivenoj bazi podataka BP = do1, do2 nemamo prije opisane anomalije ažuriranja. Također, primijetite da ponavljanje dobavljača d1 za svaki od artikala koje d1 dobavlja (u relaciji do2) nije redundantno, jer inače ne bismo znali što nam sve dobavlja d1.
Dekompozicija d(R): R1, R2 ima sljedeća svojstva:
(A) d(R) je 2NF dekompozicija(B) d(R) čuva informaciju (do = do1 ∞ do2)(C) d(R) čuva skup zavisnosti F , tj., Π R1(F) ∪ Π R2(F) F .
Problem logičkog oblikovanja sheme relacijske baze podataka
Za danu relacijsku shemu (R, F) treba odrediti dekompozicijud(R): R1, .., Rm , tj., shemu relacijske baze podatakaSRBP: (R1, Π R1(F)), .., (Rm, Π Rm(F)), tako da bude ispunjeno:• SRBP je u željenoj normalnoj formi,• d(R) čuva informaciju,• d(R) čuva zavisnosti F.
Vrijedi istaknuti da se u, ne baš najboljoj, praksi problem oblikovanja reducira na sintezu 3NF. Naime, neki kažu da se više normalne forme (> 3) rijetko koriste u praksi. Moglo bi se reći: to gore po tu i takvu praksu. Dalje, neki kažu da su više normalne forme ‘teške’ za razumijevanje i postizanje. Navedeno govori više o onima, nadam se neinformatičarima, koji, po svemu sudeći, ne znaju ono što rade. Na kraju, ima i onih, nije rijetkost niti među profesionalnim informatičarima, koji kažu: što će nam normalizacija, kada i tako moramo denormalizirati za potrebe skladišta podataka i td.. I u ovom slučaju, može se reći što je već prije kazano, tj. riječ je o neznanju.Prije svega, koristi se pojam denormalizacije, a da o denormalizaciji uopće nije riječ. Drugo, miješaju se dvije razine, tj., dva različita konteksta: riječ je o operativnim bazama podataka (OLTP) i skladištu podataka (DW), koji, naprosto, imaju različite ciljeve u oblikovanju. Zaključimo, da ukoliko je riječ o (operativnim) bazama podataka, treba postići najvišu moguću normalnu formu. Svakako, to zahtijeva suptilno poznavanje principa oblikovanja baze podataka.
52
Normalne forme
Neka je A = {a, b, c,..} skup atomskih objekata .Koristeći konstrukte za skupove, liste i relacije, dobivamo skupove neatomskih (složenih) objekata
Primjer 2.18A = Alf ∪ I ∪ R ∪ Dat ∪ Novac ∪ Graf ;S = {{a, b}, ∅,..}; L = {<a, b, a, c>, <>, ..};R = {r1, r2,..}; K = {<r1, S1, {a}>,..}
A je skup atomskih objekata (sadrži alfanumerički tip, cjelobrojni tip, realne brojeve, datum i td.)S, L, R, i K se sastoje od složenih objekata: S je skup čiji elementi su skupovi, L je skup čiji elementi su liste, R je skup koji se sastoji od relacija, a K je skup koji se sastoji od elemenata koji su izgrađeni kombinacijom elemenata iz skupova S, L i R .
• Atribut A je atomski (jednostavan) atribut ako se Dom(A) sastoji samo od atomskih objekata; u protivnome, A je složen atribut.
• (R, F) je u 1NF ako su svi atributi iz R atomski atributi. (R, F) je u poopćenoj NF ako je svaki atribut iz R jednostavan ili složen.
U daljem pretpostavljamo da je (R, F) je u 1NF , gdje je F ⊆ FVS(R).
• 2NF : (R, F) je u 2NF ako s obzirom na F ne postoji parcijalna zavisnost neključnog atributa od ključa.
• 3NF : (R, F) je u 3NF ako s obzirom na F ne postoji tranzitivna zavisnost neključnog atributa od ključa .
• Zatvarač skupa zavisnosti F : F+ = {f ∈ FVS(R) F f }
• BCNF : (R, F) je u BCNF ako za svaku netrivijalnu funkcijsku zavisnost
X → Y ∈ F+ vrijedi: Lijeva strana X sadrži ključ od (R, F) .
• 4NF : (R, F) je u 4NF ako za svaku netrivijalnu višeznačnu zavisnost X →→ Y ∈ F+ vrijedi: Lijeva strana X sadrži ključ od (R, F) .
53
• 5NF : (R, F) je u 5NF ako za svaku netrivijalnu zavisnost spoja ∞(R1,.., Rk) ∈ F+ vrijedi: svaka komponenta Ri sadrži neki ključ od (R, F) .
Propozicija(odnos normalnih formi)Svaka viša normalna forma povlači nižu normalnu formu.Formalno, Ako je (R, F) u XNF , onda je (R, F) u YNF, gdje je Y < X . (Pretpostavljamo uređaj: 1 < 2 < 3 < BCNF < 4 < 5)
dokazdokazat ćemo dio propozicijeP23: Ako je (R, F) u 3NF, onda je (R, F) u 2NF.Dokaz ‘ide’ po kontrapoziciji: Prepostavimo da (R, F) nije u 2NF. To znači da postoji parcijalna zavisnost neključnog atrubuta od ključa. Neka je ta parcijalna zavisnost oblikaK → A, gdje je K ključ za (R, F) i A je neključni atribut. Iz parcijalnosti zavisnosti K → A možemo zaključiti da postoji Y ⊂ K takav da vrijediF Y → A. Prema tome, imamo sljedeće činjenice:(1) F K → Y(2) F Y → A (Y → A je netrivijalna zavisnost)(3) F Y → KIz (1), (2) i (3) vidimo da je neključni atribut A tranzitivno zavisan od ključa K. Znači da (R, F) nije u 3NF.Ostali odnosi dokazuju se analogno. PropozicijaZa svaku shemu (R, F), gdje je F ⊆ FZ(R), postoji3NF dekompozicija koja čuva informaciju i zavisnosti.Dokaz: (algoritam sinteze 3NF preko kanonskog pokrivača).• Kanonski pokrivač od F , kp(F), dobije se iz F primjenom sljedeća tri koraka u navedenom
redoslijedu: (1) Desna dekompozicija (2) Lijeva redukcija• Izbacivanje redundantnih (suvišnih) zavisnosti
F (1) (2) (3) kp(F)
Računanje kanonskog pokrivača i algoritam sinteze 3NF možete naći u popisu literature ili u predavanjima M. Maleković: Baze podataka.
54
Propozicija (BCNF)Postoji shema (R, F) za koju ne postoji BCNF dekompozicija koja čuva informaciju i zavisnosti.dokazZa dokaz propozicije razmotrite shemu (R, F), gdje je R = ABC iF: AB → C , C → A . Pokažite prvo da (R, F) nije u BCNF, a zatim zaključite da se (R, F) ne može BCNF dekomponirati ukoliko želimo da BCNF dekompozicija čuva informaciju i zavisnosti.
55
ZADACI
Zadataci[relacijska algebra]
1. Zadane su relacije i formula F :r (A B C D) s (B C E) 1 1 0 2 0 1 2 0 0 0 1 0 2 0 2 1 1 0 1 0 2 2 2 1 1 2 0 1
F: [(A < B) ∧ (D = C)] ⇒ [(B ≠ E) ⇔ (A = B)].Izračunajte AC[Π ABD(σ ¬ F(s ∞ r ))].
2. Zadane su relacijer1(A B C D) r2(B C D E) r3(C D) 1 2 2 1 2 2 1 1 2 1 1 1 1 1 1 1 0 0 1 1 1 2 3 3 3 1 2 0
i formula G = (B > E) ⇒ (C ≠ 1) .Izračunajte s = σ G{ΠBCE[(r1 ÷ Π D(r3)) ∞ r2]}.
3. Dokažite jednakosti (1), (5), (10), (11) i (12) iz kataloga RO.
4. Dokažite relacije (6), (8) i (9) iz kataloga RO. Napomena: kažemo da je r(R) ⊆ s(S) ako je R = S i svaki slog koji je u relaciji r jeste i u relaciji
s .
5. Dokažite propoziciju(jednakost slogova na praznom skupu atributa) i propoziciju(temeljni operatori)
56
ZADACI [zavisnosti u relacijskim bazama podataka]
1. Ispitajte svaku od zavisnosti iz skupa F: AB → D, B →→ AC, ∞ (AB, CD),∞ (A, BCD) u relaciji
r ( A B C D)=========== 1 2 2 1 2 1 1 1 1 2 0 0
2. Je li vrijedi X → Y XZ → Y (lijevo proširenje) ?
3. Vrijedi li X → Y X → YZ (desno proširenje) ?
4. Dokažite 3. iz kataloga FZ .
5. Dokažite 1. iz kataloga FVS .
6. Dokažite propoziciju(isto semantičko ograničenje)
57
ZADACI [formalni sustavi]
1. R = ABCDE, F: AB →BC, CE → D, D → ABOdredite B F
+ , AD F+
2. Je li vrijedi[AFS] A → B, A → C A → BC ?Napomena: u zadatku trebate iz A → B i A → C deducirati A → BC primjenom pravila formalnog sustava AFS .
3. Je li vrijedi [AFS] A → B A → BC ?
4. Dokažite potpunost formalnog sustava AFS.
58
ZADACI [implikacijski problem]
1. Zadana je relacijska shema (R, F), gdje je R = ABCDE, F: AB → D, C → AD, B → E. Odredite sve ključeve za (R, F).
2. R = ABCDE, F: AC → D, C → BD, B → E, E → D(a) Je li zavisnost AB → D parcijalna s obzirom na F ?(b) Je li zavisnost C → E tranzitivna s obzirom na F ?
3. R = ABCD, F: AC → D, C → BD, B → A, A → D(a) Postoji li parcijalna zavisnost neključnog atributa od ključa ?(b) Postoji li tranzitivna zavisnost neključnog atributa od ključa ?
4. R = ABCDE , R1 = ABD , F : A → BC , B → D , B →→ A , AC →→ DE
Ispitati koje od zavisnosti: A → B , A → DE , AB →→ D , AC →→ D , B →→ D pripadaju projekciji Π R1(F) .
5. R = ABCDE , d(R) : AB , BCE , CD;F: A → B , B → C , C → DE , D → AIspitati da li dekompozicija d čuva F .
6. Dokazati korektnost algoritma za testiranje čuvanja zavisnosti.
59
ZADACI [normalne forme]
1. R = ABCDE, F: AB → C, CD → A, B → CJe li (R, F) u 2NF?Je li (R, F) u 3NF?
2. R = ABCD, F: A → BC, C → AJe li (R, F) u BCNF?
3. R = ABCD, F: A → C, B →→ AJe li (R, F) u 4NF?
4. R = ABCD, F: A → B, B →→ C, ∞(AB, BCD)Je li (R, F) u 5NF?
5. R = ABCDE, F: AB → C, B → CD, DE → BPrimijenite algoritam sinteze 3NF.
60
3. PARCIJALNA INFORMACIJA
3.1. UVOD
Reprezentacija objekta (pomoću sloga relacije) može biti nepotpuna tj. parcijalna. To je posljedica:(A) Nepoznavanja vrijednosti sloga na nekom od atributa (u trenutku ažuriranja baze podataka),(B) Nedefiniranosti sloga na nekom od atributa (u trenutku ažuriranja baze podataka) .
Primjer 3.1 (A) :Neka je zadana relacija nastavnik (N# Prezime Zvanje Predmet). Neka je, također, za danog nastavnika N1 trenutno nepoznatato njegovo zvanje.Atribut Zvanje je definiran (primjenjiv) za N1, ali je njegova vrijednost nepoznata.
Primjer 3.2 (B) :U istoj relaciji, nastavnik(N# Prezime Zvanje Predmet), za danog nastavnika N2 atribut Predmet nije definiran (natavnik N2 trenutno ne predaje niti jedan predmet) .
Navedenu situaciju iz primjera 2.1(A) i 2.2(B) prikazujemo u relaciji nastavnik ovako:
nastavnik(N# Prezime Zvanje Predmet)============================== N1 Singer ? Fizika I N2 Radić Docent !
Znak ? znači definiranu, ali nepoznatu vrijednost sloga ( u SQLu to je null) ;Znak ! znači nedefiniranu vrijednost sloga .
U nastavku razmatrat ćemo samo parcijalne relacije tipa ?.
61
2.2. PARCIJALNA RELACIJA
• Parcijalna relacija tipa ?
R = A1,.., Am ; Dom(Ai) = Di , i = 1,.., m ; D = D1 ∪ .. ∪ Dm . D? = D ∪ {?} .Parcijalani slog nad R je funkcija t: R → D? takva da vrijedi:
(1) (∀Aj ∈ R)[t(Aj) ∈ Dj ili t(Aj) = ?] i(2) (∃Ak ∈ R)[t(Ak) ∈ Dk] .
Slog t je potpun ako je ∀Ai ∈ R : t(Ai) ∈ Di .Vidimo da je potpun slog specijalizacija (parcijalnog) sloga. Također, funkcijaf: R → D? takva da je (∀Aj ∈ R)[f(Aj) = ?] nije (parcijalni) slog
Potpunost Parcijalnost
Nema pojavljivanja Može postojati znaka ? pojavljivanje znaka ?
Parcijalna relacija nad R je konačan skup parcijalnih slogova nad R .Relacija r(R) je potpuna ako se r sastoji samo od potpunih slogova.
Vidimo da je parcijalna relacija pooćenje potpune (uobičajene) relacije.
Primjer 3.3Neka je zadana relacija
radnik(Radnik# Prezime Odjel# Plaća)============================== R1 Benc O1 1000 R2 Marić ? 1200 R3 Mihalić O2 ?
Semantika: Radnik Marić radi u nepoznatom odjelu, ima šifru R2 i plaću 1200 ; Radnik Mihalić, šifra R3, radi u odjelu O2, a njegova plaća je nepoznata.
62
Napomena:Različita pojavljivanja znaka ? u danom trenutku vremena mogu poprimiti različite vrijednosti.
• Upotpunjenje parcijalne relacije
Upotpunjenje parcijalne relacije r je potpuna relacija koja se dobije zamjenom svih pojavljivanja znaka ? u r vrijednostima iz D; oznaka r*.
Primjer 3.4Napišimo jedno upotpunjenje relacije radnik iz prošlog primjera.
radnik* (Radnik# Prezime Odjel# Plaća)============================== R1 Benc O1 1000 R2 Marić O3 1200 R3 Mihalić O2 1300
Koliko upotpunjenja ima relacija radnik?
Logički operatori (trovalentna logika)
Propozicija p je deklarativna rečenica koja ima jednu od sljedećih istinosnih vrijednosti:v(p) = T (p je istinito)v(p) = F (p je neistinito)v(p) = N (istinitost od p je nepoznata)
Logički operatori negacija (¬), disjunkcija (∨) i konjunkcija (∧) u trovalentnoj logici definirani su u sljedećoj tablici
P Q ¬P P ∨ Q P ∧ Q========================F F T F FF N T N FF T T T FN F N N FN N N N NN T N T NT F F T FT N F T NT T F T T
Implikacija (⇒) i ekvivalencija (⇔) su definirane jednakostima:
63
P ⇒ Q = ¬P ∨ Q P ⇔ Q = (P ⇒ Q) ∧ (Q ⇒ P)
• Aritmetički operatori uspoređivanja i aritmetičke operacije
Neka je op bilo koji operator iz skupa aritmetičkih operatora uspoređivanja{<, >, ≤ , ≥ , =, ≠} . Tada je X op Y = N ako je X = ? ili Y = ?.
Dakle, rezultat uspoređivanja je nepoznat (vrijednost N) čim jedan od operanada poprima znak ?
Neka je Θ bilo koja od aritmetičkih operacija iz skupa {+, −, × , /}. Tada jexΘ y = ? ako je x = ? ili y = ? (pretpostavljamo da nije riječ o dijeljenju sa 0).
Primjer 2.5Odredimo istinosnu vrijednost sljedećih propozicija:(a) 0 < 0(b) ? ≤ 0(c) 1 + ? = 1(d) ? = ?
Rješenje(a) F (b) N (c) N (d) N
• Jednakost parcijalnih slogova
Postoji nekoliko definicija jednakosti parcijalnih slogova. Svaka od definicija je poopćenje jednakosti potpunih slogova, a izbor svake od njih vodi na različitu relacijsku algebru. Navodimo sljedeće tri definicije jednakosti parcijalnih slogova.
(J1) Za parcijalne slogove t1, t2 : R → Dα kažemo da su jednaki ako(A R)[t1(A) = t2(A)].Dakle, jednakost (J1) zahtijeva jednakost na svakom atributu iz R.
(J2) Za parcijalne slogove t1, t2 : R → Dα kažemo da su jednaki ako(A R)[t1(A) i t2(A) su isti simbol].Jednakost (J2) zahtijeva pojavljivanje istog simbola za svaki atribut iz R (simbolička jednakost).
(J3) Za parcijalne slogove t1, t2 : R → Dα kažemo da su jednaki ako(A R)[(t1(A) = t2(A) ako je t1(A), t2(A) ∈ D) ili (t1(Ai) je ? ili t2(Ai) je ?)] i(B R)[ t1(B) = t2(B) i t1(B), t2(B) ∈ D]
64
Primjer 3.6Neka je zadana relacijaradnik(Radnik# Prezime Odjel# Plaća)============================== R1 Benc O1 1000 R2 Marić ? 1200 R3 Mihalić O2 ? R4 Marić ? ? R5 Mihalić ? 1100 R6 ? O3 1000 R7 ? ? 900
Odredimo Π Prezime, Odjel# (radnik) primjenom(a) jednakosti (J1)(b) jednakosti (J2)
(c) jednakosti (J3)(ci)
Rješenje(a) Dobivenu projekciju ćemo označiti sa Π (J1).Prije eliminacije ponavljanja redova i neslogova (sastoje se samo od znakova ?) dobivamo tablicu
r1(Prezime Odjel#)=============== Benc O1 Marić ? Marić ? Mihalić O2 Mihalić ? ? O3 ? ?Konačno, nakon eliminacije zadnjeg reda i budući da nema, temeljem (J1), jednakih redova u r1, dobivamo
Π (J1) Prezime, Odjel# (radnik)(Prezime Odjel#)================================ Benc O1 Marić ? Marić ? Mihalić O2 Mihalić ? ? O3
65
(b) U prvom koraku dobivamo r1 iz dijela (a). Sada izbacujemo neslogove i ponavljanja, temeljem (J2), jednakih slogova. Rezultat je
Π (J2) Prezime, Odjel# (radnik) (Prezime Odjel#)================================ Benc O1 Marić ? Mihalić O2 Mihalić ? ? O3
(c) Nakon eliminacije neslogova i ponavljanja temeljem (J3), dobivamo
Π (J3) Prezime, Odjel# (radnik)(Prezime Odjel#)================================= Benc O1 Marić ? Mihalić O2 ? O3
Kod eliminacije ponavljanja temeljem (J3), iz r1 smo izbacili manje informativan slog (slog s više znakova ?). To je ujedno opće pravilo eliminacije temeljem (J3).Dalje, nije teško vidjeti da su skupovi upotpunjenja relacija Π (J1), Π (J1) i Π (J3) različiti. Zato kažemo da su i operatori projiciranja Π (J1), Π (J2) i Π (J3) različiti. To također znači da su relacijske algebra RA(J1), RA(J2) i RA(J3) različite.
66
3.3. RELACIJSKI OPERATORI ZA PARCIJALNE RELACIJE
U daljnjem razmatranju pretpostavljamo da su relacijski operatori definirani primjenom simboličke jednakosti (J2). Naznaku (J2) u nazivu operatora ispuštamo zbog jednostavnosti.
Uvodimo dva operatora selekcije:
• σ F(r) = {t ∈ r F(t) = T}, σ NF(r) = {t ∈ r F(t) = N}
Dakle, u σ F(r) su oni slogovi iz r koji zadovoljavaju F ;
U σ NF(r) su oni slogovi iz r za koje ne znamo da li zadovoljavaju uvjet F .
Primjer 2.7Zadane su relacije
r1(A B C) r2(A B C) r3(C D)
======== ======== =======
2 2 1 2 2 1 1 1
3 ? 1 1 ? 1 ? 2
Izračunati: r1 ∪ r2 , r1 ∩ r2 , Π BC(r2) , σ A≤ B (r1) , σ N A≤ B (r1), r2 ∞ r3 .
Rješenjer1 ∪ r2 (A B C) r1 ∩ r2 (A B C)============= ============= 2 2 1 2 2 1 3 ? 1 1 ? 1
Π BC(r2) (B C) σ A ≤ B (r1)(A B C)=========== =============== 2 1 2 2 1 ? 1
67
σ N A ≤ B (r1)(A B C) r2 ∞ r3 (A B C D) ================ =============== 3 ? 1 2 2 1 1 1 ? 1 1
Uređenje redova relacije SURBP (sustav za upravljanje relacijskom bazom podataka) ostvaruje koristeći:
Simbolička jednakost: X = X
Simboličko uređenje: x < ? , gdje je x ∈ D .
Tautologije
Formula F je tautologija ako u svakoj svojoj interpretaciji ima vrijednost T. Navedeno znači da je σ F(r) = r za bilo koju relaciju r na koju je F primjenjivo. Prema tome, nema smisla računati selekciju po formuli koja je tautologija.Glede tautologija, Codd predlaže: (a) Korisničku eliminacija tautologija, tj. korisnik ne treba koristiti tautologije u upitima (posao za ‘nenaivnog’ korisnika)(b) Sistemska eliminacija tautologija, tj. SURBP eliminira upite koji sadrže tautologije.Zbog semiodlučivost logike I reda glede tautologija, poželjno rješenje (b) nije moguće kao jedino rješenje. Zapravo, praktično preostaje kao najbolje rješenje kombinacija (a) i (b).
Kod korisničke eliminacije tautologija, korisnik treba voditi računa o činjenici danoj u sljedećoj propoziciji.
PropozicijaPostoji formula koja je tautologija u dvovalentnoj logici, a nije tautologija u trovalentnoj logici.
dokaz
F = P ∨ ⌝P
Poznato je da je F tautologija u dvovalentnoj logici. Da F nije tautologija u trovalentnoj logici slijedi iz činjenice da u interpretaciji I: P = ? vrijedi
F(I) = ? ∨ ⌝? = ? ∨ ? = ?.
Dakle, zaboravimo na navike iz svijeta dvovalentne logike kada smo u svijetu trovalentne logike. Treba priznati da to i nije baš jednostavno kako se može učiniti.
68
Upravo zbog kazanog, neki autori (C. J. Date) smatraju primjenu viševalentnih logika ( > 2) zbunjujućom za krajnje korisnike. Zato, da bi sačuvali ‘jednostavnost’ relacijskog modela, predlažu ostanak u okviru dvovalentne logike uz primjenu odgovarajućih aplikacijskoprogramskih zahvata (difoltna vrijednost) za tretiranje parcijalnih relacijskih baza podataka.
E. F. Codd zastupa upravo suprotnu poziciju: predlaže izgradnju SURBP sa ugrađenom 4valentnom logikom. Racionala je da neće baš ‘naivni’ korisnici koristiti sve sofisticirane mogućnosti relacijske tehnologije. Uostalom, puno toga se može enkapsulirati, zar ne ? (dobra ideja objektne orijentacije).
69
2.4. TIPOVI LOGIČKIH POSLJEDICA
U slučaju konvencionalnih (potpunih) relacijskih baza podataka (nema pojavljivanja znaka ?) definirali smo:
• F vrijedi u r ako u r vrijedi svaka zavisnost iz F. Kažemo da je u navedenom slučaju r model za F.U definiciji smo koristili svojstvo aditivnosti koje je karakterizirano kao što slijedi.
• Aditivnost: Ako F vrijedi u r i G vrijedi u r , onda i F ∪ G vrijedi u r
• Strogo vrijediZavisnost f strogo vrijedi u parcijalnoj relaciji r ako f vrijedi u svakom upotpunjenju relacije r, tj. ako f vrijedi u svakom r*.
• Slabo vrijediZavisnost f slabo vrijedi u parcijalnoj relaciji r ako f vrijedi u nekom upotpunjenju relacije r i f ne vrijedi u nekom drugom upotpunjenju relacije r , tj. ako posoje upotpunjenja r*1 i r*2 takva da f vrijedi u r*1 i f ne vrijedi u r*2.
• Strogo ne vrijediZavisnost f strogo ne vrijedi u parcijalnoj relaciji r ako f ne vrijedi niti u jednom upotpunjenju relacije r, tj. , ako f ne vrijedi niti u jednom r*.
Napomena: Reći ''nije istina da srogo vrijedi'' i ''strogo ne vrijedi'' nije ista stvar.
Sada prelazimo na razmatranje tri tipa logičke posljedice. Pretpostavljamo da jeF: f1, f2,.., fk ⊆ FZ(R); f ∈ FZ(R).
• LP1:f1, f2,.., fk ö f (uobičajeno ''preko potpunih relacija'')
• LP2:f1, f2,.., fk östr f Za svaku relaciju parcijalnu relaciju r:ako f1 strogo vrijedi u r, f2 strogo vrijedi u r,.., fk strogo vrijedi u r , onda f strogo vrijedi u r.
• LP3:f1, f2,.., fk ösl f Za svaku relaciju r:ako f1 slabo vrijedi u r, f2 slabo vrijedi u r,.., fk slabo vrijedi u r , onda f slabo vrijedi u r.
70
Propozicija(odnos tipova logičkih posljedica)(A) LP1 ⇔ LP2 (B) Ne vrijedi ekvivalencija LP1 ⇔ LP3
(A) nam kaže da su rezoniranja temeljem LP1 i LP2 ekvivalentna, a (B) kaže da to ne vrijedi za logičke posljedice LP1 i LP3. Iz (A) i (B) također slijedi da rezoniranja temeljem LP2 i LP3 nisu ekvivalentna.
Da ne vrijedi ekvivalencija LP1 ⇔ LP3, pokazuje nam sljedeći primjer.
Primjer 2.8R = ABC, F: A → B , B → C .Poznato je da u svijetu LP1 vrijedi F ö A → C.Međutim, u svijetu LP3 imamo F sl A → C , kao što pokazuje sljedeći primjer.Neka je zadana parcijalna relacija r(A B C) ======== 1 ? 1 1 ? 2Lako provjerimo da A → B slabo vrijedi u r , B → C slabo vrijedi u r , a A → C ne vrijedi slabo u r .
ProblemDa li vrijedi aditivnost u slučaju slabo vrijedi ?
RješenjeKažemo da F slabo vrijedi u r ako F vrijedi u nekom upotpunjenju od r i F ne vrijedi u nekom upotpunjenju od r . Iz prošlog primjera 6.6 imamo da iako A → B slabo vrijedi u r , B → C slabo vrijedi u r, nije istina da F: A → B, B → C slabo vrijedi u r.
Zaključimo u svijetu LP3 ne vrijedi aditivnost. Dakle, potreban je oprez prilokom prelaska iz jednog svijeta (konteksta) u drugi svijet (kontekst), što predstavlja temeljni princip rezoniranja o znanju.
71
ZADACI
1. Napišite nekoliko upotpunjenja parcijalne relacije
r( A B C)======== a b ? b ? c
2. Neka su zadane relacije
r( A B C ) s( B C D )======== ======== 1 2 2 2 ? 2 2 2 ? 2 2 3
i formula F: (A B) ∨ (C ≠ D).Izračunajte temeljem (J2) sljedeći relacijske izraze:(a) r1 = σ F(Π ACD(r ∞ s) (b) r2 = σ FN(r1)
3. Neka je r kao u zadatku 1. Ispitajte je li(a) A → B strogo vrijedi u r(b) A → B slabo vrijedi u r(c) A → B strogo ne vrijedi u r
4. Napišite relaciju r(A B C) u kojoj B → C slabo vrijedi i u kojoj nije istina daB → C strogo vrijedi.
5. Napišite relaciju r(A B C) u kojoj B → C slabo vrijedi i u kojoj B → C strogo ne vrijedi.
6. Predložite postupak za rješavanje Iproblema u svijetu LP2.
72
4. TEMPORALNE BAZE PODATAKA
4.1. UVOD
Baza podataka sadrži podatke o organizaciji i njenim aktivnostima. Ona je osnova za razne aplikacije od interesa za danu organizaciju. Konvencionalne baze podataka oblikovane su tako da sadrže najnovije podatke, tj. tekuće podatke. Ažuriranjem baze podataka ‘stare’ vrijednosti se eliminiraju iz baze podataka. Prema tome, baza podataka je model tekućeg stanja aplikacijske domene (snapshot of reality). Temporalne baze podataka omogućuju reprezentaciju povijesti objekata.Temporalni relacijski model sastoji se od:• Temporalnih relacija• Temporalne relacijske algebre• Temporalnih uvjeta integriteta
4.2. TEMPORALNE RELACIJE
U ovom odjeljku razmatramo intervalno proširenje relacijskog modela, tj. opisujemo intervalne relacije.
• Intervalne relacije
Primjer 4.1Zadana je relacija
plaća(Radnik# Iznos Vrijeme) ======================== R1 100 Kn [d2, d6> R1 100 Kn [d9, d12> R1 120 Kn [d15, ♣> R2 130 Kn [d9, d12>
SemantikaRadnik R1 imao je plaću 100 Kn u vremenskom razdoblju od d2 do d6;U razdoblju od d9 do d12 njegova plaća je bila isto 100 Kn; U razdoblju od d15 do ♣ (zadnje registrirano vrijeme), plaća od R1 je bila 120 Kn . Plaća od R1 je nepoznata (ili nije definirana) u intervalu [d6, d9> .
• Intervali
Jednodimenzionalni prostor, ∆ = {d1, d2,.., dn}, je neprazan konačan skup, koji je potpuno uređen s obzirom na relaciju < . Pretpostavljamo: d1 < d2 < .. < dn , i di su atomski objekti , ∀i = 1, 2, .., n .
73
Uvodimo skup ∆ * = {d1, d2,.., dn, ♣} , gdje je di < ♣ za svaki di .Definiramo sljedeće funkcije:Red : ∆ * → {1, 2, .., n, n+1} , Red(di) = i , Red(♣) = n+1 ; Ired je inverzna funk od Red ; Sljed(di) = di+1 ; Pret(di+1) = di
Neka su di, dj ∈ ∆ * , di < dj . [di, dj> = {dk ∈ ∆ di ≤ dk < dj } je interval (poluotv.) nad ∆ .I(∆ ) je skup svih intervala nad ∆ .
Propozicija(konačnost skupa intervala)I(∆ ) je konačan skup .dokazKonačnost I(∆ ) slijedi iz konačnosti ∆ .
• Jednakost intervala I1, I2 ∈ I(∆ ), I1 = [a, b > I2 = [c, d > I1 = I2 ako a = c i b = d .
• Višedimenzionalni intervali
Neka su ∆ 1, ∆ 2,.., ∆ n jednodimenzionalni prostori, teI1 ∈ ∆ 1 , I2 ∈ ∆ 2 , .., In ∈ ∆ n.I1 × I2 × .. × In = {(x1, x2, .., xn) xk ∈ Ik } je ndim interval nad T = ∆ 1 × ∆ 2 × .. × ∆ n ; I(T) je skup svih intervala nad T .
Primjer 4.2∆ 1 = {0, 1} , ∆ 2 = {4} .Definiramo ♣(∆ 1) = 2 i ♣(∆ 2) = 5 .I(∆ 1) = {[0, 1> , [0, 2> , [1, 2>} , I(∆ 2) = {[4, 5>}, I(T) = I(∆ 1 × ∆ 2) = {[0, 1> × [4, 5>, [0, 2> × [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.3Neka 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.4Neka imamo relacijur ( 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 < c (2) I2 Dolazi I2 ako b = c (3) I1 Lijevopreklapa I2 ako a < c < b < d (4) I1 Lijevopokriva I2 ako a < c, b = d (5) I1 Pokriva I2 ako a < c, d < b (6) I1 Desnopokriven I2 ako a = c, b < d (7) I1 = I2 ako a = c, b = d (8) I1 Desnopokriva I2 ako a = c, d < b (9) I1 Pokriven I2 ako c < a, b < d (10) I1 Lijevopokriven I2 ako c < a, b = d (11) I1 Desnopreklapa I2 ako c < a, d < b (12) I1 Odlazi I2 ako b = d (13) I1 Poslije I2 ako c < a
76
Definiramo dalje, I1 Ujedinjuje I2 ako (2) ∨ (3) ∨.. ∨ (12) .
Propozicija (ujedinjenje rezultira intervalom)I1 ∪ I2 je interval ako I1 Ujedinjuje I2 .
Propozicija (računanje unije)Neka je I1, I2 ∈ I(∆ ), I1 = [a, b > I2 = [c, d >.Tada je I1 ∪ I2 = [e, f > , gdje je e = Min {a, c}, f = Max {b, d}.
Dokazi navedenih propozicija su jednostavni i ostaju kao zadaci za samostalni rad.
• Formalizacija zatvaranja ZiNeka je r(A1,.., Ak, B) (intervalna) relacija . Zatvaranje od r po atributu B definiramo na sljedeći način:Zi[B](r) = r1 :(1) SH(r1) = (A1,.., Ak, B) , gdje je Dom(B) = I(∆ k+1)(2) Slogovi iz r1 definirani su algoritmom:
begin r1 := r while postoje različiti slogovi t1, t2 ∈ r1 takvi da (∀Aj) (t1(Aj) = t2(Aj)) i (t1[B] Ujedinjuje t2[B] do r1 := (r1 − {t1, t2}) ∪ {[t1[A1 .. Ak], t1[B] ∪ t2[B]]} end
• Zatvaranje, prvo po B, a zatim po A, definiramo jednakošću Zi[A, B](r) = Zi[A](Zi[B](r))
Propozicija(zatvaranje ovisi o poretku)Zi[A, B] ≠ Zi[A, B]
77
DokazNeka je zadana relacija r( A B ) ============ [1, 3> [1, 5> [3, 7> [1, 5> [1, 3> [5, 7> [1, 3> [7, 10> [5, 9> [3, 7> [8, 10> [3, 7>
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.5Relacija 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 jerelacija 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.6Ako 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 relacijomZi[Vrijeme] (Oi[Vrijeme](r1) ∪ Oi[Vrijeme](r2)).
79
ZadatakIzračunajte relaciju Zi[Vrijeme] (Oi[Vrijeme](r1) ∪ Oi[Vrijeme](r2)).
Primjer 4.7Neka 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.8Neka 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.1Neka 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.2Proš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.3DBP 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 oblikz(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 oblikuz(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.4Razmotrimo 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.
ZadatakPostoji 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.5Neka 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
BUpostupakKreć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
TDpostupakKreć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, 13. r1(1, 0) EBP4. r2(0, z) ?5. r2(0, 0) EBP6. v(1, 0, 0) p, 3, 57. r2(0, z) ? (ponovno rješavanje uvjeta)8. nema rješenja EBP9. r1(x, y) ? (ponovno rješavanje uvjeta)10. r1(2, 1) EBP11. r2(1, z) ?12. r2(1, 1) EBP 13. v(2, 1, 1) p, 10, 1214. r2(1, z) ? (ponovno rješavanje uvjeta)15. nema rješenja EBP16. 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.6Neka 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, 13. r1(1, y) ?4. r1(1, 0) EBP5. r2(0, z) ?6. r2(0, 0) EBP7. v(1, 0, 0) p, 4, 68. r2(o, z) ? (traži se novo rješenje, tj. rješenje različito od rješenja 6.)9. nema rješenje EBP10. 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.
ZadatakIzrač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.
PravilaTerm 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.8a, 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).
Pravilor(u) ← r1(u1), r2(u2),.., rn(un) je Hornova klauzula.
91
Primjer 5.9U 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 pravilap1: 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.
ZadatakPokažite ekvivalentnost čitanja (A) i (B) .
• Rekurzivno praviloPravilo 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.10Razmotrimo 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.11Neka 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.12Odredimo 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.13Dajemo 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 = < r1, r2,.., rk > i M2 = < s1, s2,.., sk > 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 podatakaNeka 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 modelPretpostavimo 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.14Razmotrimo 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 < 2, 4 > 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.15Neka 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.16Neka 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.17Razmotrimo 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.18Neka 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 = y2. 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.19Neka 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.20Neka 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.21Odredimo 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.22Neka 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 < y .Relacija r definirana pravilom p je beskonačna ako x ∈ D ili y ∈ D, i D je beskonačan skup.
Neka imamo deduktivnu bazu podataka DBP
EBP: s IBP: p1 : r(x, y) ← s(y) .
Pretpostavljamo da je relacija s iz EBP konačna. Iako je relacija s konačna, relacija r, definirana pravilom p1, je beskonačna ako je x ∈ D i D je beskonačan skup. Sigurnošću pravila želimo izbjeći pravila koja kreiraju beskonačne relacije, neovisno o BP domenama (domene mogu biti i beskonačne). Sigurnost pravila se postiže ograničavanjem varijabli. U daljem pretpostavljamo da su relacije iz EBP konačne (sastoje se od konačno redova).
102
• Ograničenost varijabli
Varijabla x pravila p: G ← T je ograničena ako
1. x se pojavljuje kao argument konačne, nenegirane relacije iz tijela T , ili
2. x se pojavljuje u T u obliku x = a ili a = x , gdje je a konstanta , ili
3. x se pojavljuje u T u obliku x = y ili y = x , gdje je varijabla y ograničena .
Pravilo p je sigurno (safe) ako su sve njegove varijable ograničene.DBP je sigurna ako su sva pravila iz DBP sigurna.
Zaključimo: ako je DBP sigurna, onda pravila iz DBP generiraju (kreiraju) jedino konačne relacije.
Primjer 5.23Pravilo p: r(x, y) ← x < y nije sigurno, jer varijable x, y nisu ograničene. Primjer 5.24Pravilo p1: r(x, y) ← s(y) nije sigurno, jer varijabla x nije ograničena; varijabla y je ograničena ako je relacija s konačna.
Primjer 5.25Razmotrimo pravilo p2: r(x, y) ← x = 2, s(y), x < y. Pretpostavimo da je relacija s konačna.Pravilo p2 je sigurno, jer su sve varijable ograničene.
Primjer 5.26Pravilo p3: r(x, y) ← s(y), z = b, x = z je sigurno, jer su sve varijable ograničene . Pretpostavljamo konačnost relacije s iz tijela pravila.
• Upit U je siguran ako je odgovor o(U) konačna relacija.
Primjer 5.27Neka je zadana DBP
EBP: s( A) ==== a b
IBP: p1: r(x, y) ← s(y)
DBP nije sigurna, jer p1 nije sigurno pravilo (varijabla x nije ograničena).
103
Upit U : r(x, y) nije siguran, jer o(U) može biti beskonačna relacija (to će biti ako x ∈ D i D je beskonačan skup).Upit U1 : x = 2, r(x, y) je siguran, jer je o(U) konačna relacija.
Primjer 5.28Razmotrimo sigurnu deduktivnu bazu podataka DBP
EBP: s( A) ==== a b
Promotrimo upit U: Naći sve x, y tako da vrijedi s(y), x < 1 .U nije siguran upit, jer je o(U) beskonačna relacija.
104
4.5 PROŠIRENJA DATALOGA
Ovaj odjeljak sadrži proširenja Dataloga: negacijom, funkcijama, skupovima, formulama i ažuriranjem.
Proširenje dataloga negacijom ( Datalog[¬] )
Do sada smo razmatrali deduktivne baze podataka koje nisu sadržavale negaciju. U ovom dijelu uvodimo deduktivne
baze podataka čija pravila mogu sadržavati negaciju u tijelu pravila.
Primjer 5.29Razmotrimo deduktivnu bazu podataka DBP
EBP: o1(R# Prezime) o2(R# Prezime) ============== ============= R1 Ivić R1 Ivić R2 Polimac R4 Krešić R3 Trajbar R5 Singer
IBP: p: o1razo2(x, y) ← o1(x, y), ¬o2(x, y)
Pravilo p je sigurno, jer su x, y ograničene varijable .Pravilo p čitamo ovako: ∀ x, y [o1razo2(x, y) ako o1(x, y) i nije o2(x, y)]
Računanje pravila p:
o1razo2 = o1 − o2
¬ o2(x, y) smo interpretirali kao (x, y) ∉ o2 . Primjer 5.30Pravilo p1: s(x, y) ← ¬o2(x, y) nije sigurno, jer x, y nisu ograničeni.Ako postavimo upit U: s(x, y) , dobit ćemo da o(U) nije definiran. To znači da sustav ne može odrediti sve x, y za koje vrijedi s(x, y). Naime, ¬o2(x, y) nije definirano.
Ima nekoliko pristupa (ozbiljnom) problemu negacije u deduktivnim bazama podataka. Ovdje ćemo opisati pristup gdje se negacija relacije računa kao komplement relacije (eksplikacija negacije).
105
• Komplement relacije C(r)
Neka je ADOM = Adom(EBP) ∪ Adom(IBP) , gdje su Adom(EBP) i Adom(IBP) sve konstante iz EBP i IBP, respektivno .
Ako je r(A1, A2,.., Ak), onda je C(r) = (ADOM ⊗ ADOM ⊗ .. ⊗ ADOM) − r.Definiramo ¬r = C(r).
Primjer 5.31Izračunajmo pravilo p deduktivne baze podataka iz prošlog primjera.
DBP: o1(R# Prezime) o2(R# Prezime) ============== ============= R1 Ivić R1 Ivić R2 Polimac R4 Krešić R3 Trajbar R5 Singer
p: o1razo2(x, y) ← o1(x, y), ¬o2(x, y)
Računanje pravila p :1. ¬o2 = C(o2)• o1razo2 = o1 ∞ C(o2) = o1 ∩ C(o2) = o1 − o2
Prema tome, o1razo2 (R# Prezime) =================== R2 Polimac R3 Trajbar
Uočite da smo u ovom primjeru izbjegli računanje C(o2); iskoristili smo jednakosti iz točke 2.
ZadatakIzračunajte C(o2), a zatim odredite o1razo2 koristeći jednakost o1razo2 = o1 ∞ C(o2).
Računanje ¬r pomoću C(r) može dovesti do nekorektnih rezultata. Cilj nam je ograničiti pravila na takav način da ne dođe do takve situacije. Sljedeći primjer ilustrira navedeni problem.Primjer 4.32Neka je zadana deduktivna baza podataka
DBP: muško( M ) bpar( M Ž) ======== ============ R1 R2 R7 R2 R3 R5 R3
106
p: neženja(x) ← muško(x), ¬bpar(x, y)
Čitanje: muško(M) : M je muško;bpar(M, Ž): M i Ž su bračni par;neženja(x): x je neženja.Pravilo p , kojim je definirana relacija neženja , čita se ovako:
p: x je neženja ako je x muško i ne postoji takav y da su x i y u braku.
Intuitivno, pravilo p je korektno. Međutim, nije tako, kao što pokazuje sljedeće računanje.
Računanje relacije neženja :
1. Računamo ¬bpar = C(bpar)
1.1 ADOM( A ) ADOM(A) ⊗ ADOM(B)( A B) ========= ==================== R1 R1 R1 R2 R1 R2 R3 . R5 . R7 R7 R7
1.2 C(bpar) = δ [M ↵ A, Ž ↵ B](ADOM ⊗ ADOM) − bpar (M, Ž). 2. neženja = Π[M](m ∞ C(bpar)).
Ako kompletirate proračune iz točaka 1.2 i 2., vidjet ćete da vrijedi neženja(R2), što nije korektno.Naime, iz muško(R2) i bpar (R2, R7) slijedi da R2 nije neženja.
ZadatakIzvršite kompletiranje prošlog primjera.
Nastavljamo s našim primjerom. Razlog nekorektnosti je činjenica da pravilo p nije sigurno, jer varijabla y nije ograničena.Pravilo p možemo napisati u sigurnom obliku:
p1: muž(x) ← bpar(x, y) p2: neženja(x) ← muško(x), ¬muž(x)
107
Računanje p1, p2 : p1. muž = Π[M](bpar) p2. neženja = muško − muž.
Slijedeći problem je pojavljivanje ¬ u rekurziji .
Primjer 5.33Neka je zadana deduktivna baza podataka
DBP: r( A ) p1: p(x) ← r(x), ¬q(x) ==== p2: q(x) ← r(x), ¬p(x) 1
Iako je DBP je sigurna, postoji problem, koji se ogleda u tome da DBP nema jedinstven, minimalan model . Postavlja se pitanje: što je u ovoj situaciji intendirani model ('što je pjesnik htio reći')? Da bismo pokazali da DBP nema jedinstven, minimalni model, trebamo izračunati pravila p1 i p2, što se reducira na rješavanje jednadžbi
p1: p = r − q p2: q = r − p
Lako možemo provjeriti da je svaka od interpretacija M1 i M2 minimalni model za DBP.
M1: r( A ) p( A ) q( A ) ==== ===== ===== 1 ∅ 1
M2: r( A ) p( A ) q( A ) ==== ===== ===== 1 1 ∅
ZadatakU prošlom primjeru provjerite :(a) M1 i M2 su modeli za DBP, tj., M1 i M2 su rješenja jednadžbi p1 i p2 .(b) M1 i M2 su minimalni modeli.(c) M1 i M2 su neusporedivi, tj., ¬(M1 ≤ M2) i ¬(M2 ≤ M1) .
Nejedinstvenost minimalnog modela posljedica je pojavljivanja negacije u ciklusu grafa zavisnosti. Da bismo to vidjeli, prikažimo graf zavisnosti relacija iz DBP. Graf zavisnosti ima oblik:
108
Gz: : r q
¬ ¬
p Znak ¬ na strelici od p do q znači da je relacija q definirana pomoću ¬p; analogno tumačimo pojavu ¬ na strelici od q do p .
Rješenje problema nejedinstvenosti minimalnog modela
U skupu minimalnih modela, biramo jedan od njih kao prirodni (s obzirom na redosljed računanja propisan stratifikacijom) minimalni model; tako izabran model predstavlja intendirani model.Pojam stratifikacije uvodimo kao što slijedi.
• Negativni ciklus
Neka je zadana deduktivna baza podataka
DBP: EBP IBP: p1,.., pk . Kažemo da DBP nema negativni ciklus ako kad god postoji pravilo pi: p ← .. ¬q .. u IBP, tada se q ne definira preko p , tj. ne postoji put od p do q u pripadnom grafu zavisnosti Gz. Negativni ciklus prepoznajemo po pojavljivanju barem jednog znaka ¬ .
Primjer 5.34Razmotrimo DBP čija su pravila p ← r p ← ¬q q ← ¬s s ← p
109
Odredimo graf zavisnosti Gz. Dobivamo:
Gz: r
s
¬
p q ¬
DBP ima jedan negativni ciklus: ciklus (p s q p) ima dva pojavljivanja znaka negacije ¬.Iz negativnog ciklusa vidimo da p ← ¬q i postoji put od p do q. Također, imamo q ← ¬s ipostoji put od q do s.
ZadatakIspitajte ima li sljedeća DBP negativnih ciklusa.
DBP: r( A ) s( A ) ==== ==== 1 1 2
p1: p(x) ← r(x) p2: p(x) ← p(x) p3: q(x) ← s(x), ¬ p(x)
ZadatakNeka je zadana DBP iz prošlog zadatka. Jednadžbe za rješavanje pravila p1, p2 i p3 glase
p = p ∪ r (dobiveno iz pravila p1 i p2) q = s − p (dobiveno iz p3)
Provjerite da sljedeći M1 i M2 zadovoljavaju zadane jednadžbe i prema tome predstavljaju modele za DBP.
M1: EDB + p( A ) q( A ) ==== ==== 1 2
110
M2: EDB + p( A ) q( A ) ==== ==== 1 ∅ 2
ZadatakDokažite minimalnost za M1 i M2 iz prošlog zadatka.
Slijedi definicija stratificiranosti DBP.
• Stratificiranost DBP
Stratificiranje DBP je grupiranje relacija u stratume (slojeve) S1 < S2 <.. < Sk , gdje su Si najveći skupovi relacija takvih da vrijedi:
(1) Ako p ← .. q .. , onda p nije u manjem sloju od sloja gdje je q (2) Ako p ← .. ¬q .. , onda je q u manjem sloju od sloja gdje je p .
Algoritam* (testiranje ima li DBP negativnih ciklusa i nalaženje stratifikacije)
Ulaz: DBP: EBP, IBP
Izlaz: Odluka ima li DBP negativnih ciklusa. Ako nema, onda algoritam producira stratifikaciju.
Postupak:
1. Staviti sve relacije iz DBP u S1.2. Ponovljeno ispitati pravila: ako p ← .. q .. , te p ∈ Si, q ∈ Sj, i ≤ j, onda staviti p u S j ; ako p ← .. ¬q .. , te p ∈ Si, q ∈ Sj, i ≤ j , onda staviti p u Sj+1 .3. Ako se dobiveni skupovi relacija S1 < S2 <.. < Sk ne mijenjaju pomoću točke 2. , tada DBP nema negativnih ciklusa, a stratifikacija od DBP je
S(DBP) : S1, S2,.., Sk . Ako se ikada dođe do uvjeta da je neka relacija r ∈ Sj, te j > broja relacija u DBP, onda DBP
ima negativni ciklus i ne može se stratificirati.
111
Primjer 5.35 (algoritam*)Primjenimo gore navedeni algoritam na
DBP: r( A ) s( A ) ==== ==== 1 1 2 p1: p(x) ← r(x) p2: p(x) ← p(x) p3: q(x) ← s(x), ¬ p(x)
Postupak:• S1: r, s, p, q• S1: r, s, p (zbog q ← ¬p)
S2: q• Dalje promjene nisu moguće. Zato,
S(DBP): S1 < S2 .
Primjer 5.36Razmotrimo DBP čija su pravila p ← r p ← ¬q q ← ¬s s ← p
Ispitajmo DBP primjenom algoritma*.Postupak:• S1: p, r, q, s
• S1: r, q, s (zbog p ← ¬q)S2: p
3. S1: r, s (zbog q ← ¬s) S2: p, q
4. S1: r, s (zbog p ← ¬q) S2: q S3: p
5. S1: r (zbog s ← p) S2: q S3: p, s
112
6. S1: r (zbog q ← ¬s) S2: ∅ S3: p, s S4: q
7. S1: r (zbog p ← ¬q) S2: ∅ S3: s S4: q S5: p !!!
Dobili smo pet slojeva S1 < S2 < S3 < S4 < S5 , a imamo četiri relacije p, q, r, s . Prema tome, DBP ima negativan ciklus i ne može se stratificirati.
Računanje modela primjenom stratificiranosti
Neka je zadana stratifikacija deduktivne baze podataka DBP
S(DBP): S1 < S2 <.. < Sk
Računanje intendiranog modela vrši se računanjem relacija iz S(DBP). Dakle, prvo računamo relacije iz S1, zatim relacije iz S2, i td. sve dok ne dođemo do relacija iz Sk.
Primjer 5.37Izračunajmo intendirani, minimalni model deduktivne baze podataka
DBP: r( A ) s( A ) ==== ==== 1 1 2
p1: p(x) ← r(x) p2: p(x) ← p(x) p3: q(x) ← s(x), ¬ p(x)
Rješenje:Relacije p i q računamo iz jednadžbi
p = p ∪ r (dobiveno iz pravila p1 i p2) q = s − p (dobiveno iz p3)
Redoslijed računanja određen je stratifikacijom
113
S(DBP): S1: r, s, p S2 : q
koju smo dobili u Primjeru(algoritam*):
• p = p ∪ r• q = s − p
Računamo 1. : Rješavanje 1. se svodi na traženje fiksne točke jednadžbe 1.
2. Stacvljamo p = ∅3. novi p = ∅ ∪ r = r4. kako je r fiksna točka jednadžbe 1., dobivamo da je p = r, tj.,
p (A)==== 1
Računamo 2.:4. q = s − p = q( A)
==== 2 Konačno, traženi model ima oblik M : r, s, p, q , tj.,
M: r( A ) s( A ) ==== ==== 1 1 2
p( A ) q( A ) ==== ====
1 2
Pretpostavka zatvorenog svijeta (closed world assumption CWA)
CWA je metapravilo (pravilo rezoniranja o pravilima koja uključuju negaciju) . Radi se o iplicitnom predstavljanju negacije. Pri tome imamo sljedeću karakterizaciju CWA .
7. CWA pravilo: ¬r(t) vrijedi ako r(t) ne vrijedi (u kontekstu DBP) ¬r(t) ne vrijedi ako r(t) vrijedi (u kontekstu DBP)
114
NotacijaDBP r(t) indicira da r(t) vrijedi u DBP;DBP r(t) indicira da r(t) ne vrijedi u DBP.
Primjer 5.38Razmotrimo deduktivnu bazu podataka DBP = (EBP, IBP, UI), gdje je
EBP : r(A B IBP : ∅ UI : ∅ . =====
1 22 3
¬r(2, 2) vrijedi, jer r(2, 2) ne vrijedi, tj. slog (2, 2) ∉ r .¬r(1, 2) ne vrijedi, jer r(1, 2) vrijedi.
Problemi sa CWA
Primjena CWA može dovesti do problema, koji ilustriramo u sljedećem primjeru.
Primjer 5.39Razmotrimo deduktivnu bazu podataka
DBP : r( A ) p1: p(x) ← r(x) ==== p2: p(0) ∨ p(1) ← 2
DBP je neodređena (indefinite) zbog pravila p2, koje u glavi sadrži disjunkciju.Primjenom CWA dobivamo DBP ¬p(0) i DBP ¬p(1).Ako DBP proširimo sa ¬p(0) i ¬p(1) dobivamo
DBP’ : r( A ) p(x) ← r(x) ==== p(0) ∨ p(1) ← 2 ¬p(0) ← ¬p(1) ←
DBP’ je u kontradiktornom (nekonzistentnom) stanju (nema model).
Propozicija (CWA i Hornova pravila)Ako se DBP sastoji samo od Hornovih pravila, onda primjena CWA ne dovodi do kontradikcije.
115
Proširenje dataloga funkcijama( Datalog[funk] )
Kao argumenti relacija mogu biti bilo koji termi, gdje se term definira ovako:
term je (a) konstanta (b) varijabla (c) f(t1,.., tk) , gdje su t1,.., tk termi i f je kmjesna funkcija
Primjer 5.39Neka je zadana
DBP : r(A B) p: s(x, y +1) ← r(x, y), x < y + 1 ===== 1 2 2 0 3 1
Glava pravila p sastoji se od relacije s , koja kao drugi argument sadrži funkciju + . Umjesto prefiks notacije +(y, 1) pisali smo uobičajeno infiks oblik y + 1 .
Odgovor na upit U : s(x, y) dan je relacijom
o(U)(A B) ======== 1 2
Primjer 5.40Definirajmo skup N = {1, 2, .., n, n + 1,...}.Neka N(x) znači da je x prirodan broj. Razmotrimo deduktivnu bazu podataka
DBP : N(1) ← N(x + 1) ← N(x) ), x ≥ 1 .DBP nije sigurna; upit U: N(2) je siguran, gdje je o(U) = DA.
Primjer 5.41Neka je
DBP : r( A B ) s(x, y) ← r(x, y), N(x ∗ y) ====== 2 1 1 2
DBP je sigurna. Odgovor na upit U : s(x, y) dan je relacijom
116
o(U)( A B ) =========
2 1
Proširenje dataloga sa skupovima ( Datalog[skup] )
U pravila uključujemo skupove; potrebna je stratificiranost, tj. poredak izračunavanja.Prije opracija sa skupovima, skupovi moraju biti izračunati (konkretizirani).
Primjer 5.42DBP : uzgajivač( U# Pas) ================= U1 Bobi U1 Leo U2 Reks U3 Leo
uzskup(x, z) ← uzgajivač(x, y), z = {y uzgajivač(x, y)} U : uzskup(x, z) o(U)(U# PAS* ) ================= U1 {Bobi, Leo} U2 {Reks} U3 {Leo}
Ako je UZ(x, y) ← uzskup(x, z), y ∈ z , onda je UZ = uzgajivač .
U : Naći sve x, y : uz skup(x, z), uzskup(y, z1), z ∩ z1 = ∅
o(U)(U1# U2#)============ U1 U2 U2 U3 U2 U1 U3 U2
117
Proširenje dataloga s formulama u tijelu ( Datalog[F] )
Primjer 5.43Razmotrimo deduktivnu bazu podataka
DBP : S1( A ), S2( A ) ===== ===== a b b a c p: podskup(X, Y) ← ∀x1 [X(x1) ⇒ Y(x1)]
Pravilo p sadrži u tijelu formulu ∀x1 [X(x1) ⇒ Y(x1)]. Navedenim pravilom definirali smo relaciju podskup. Primjena pravila p zahtijeva da skupovi X i Y budu zadani (konkretizirani).Neka je zadan upit U : podskup(X, S2). Što je odgovor na upit U ?
RješenjeOdgovor na upit U nije definiran, jer upit U nije korektan. Uočite da prvi argument upita, X , nije konkretiziran.Neka je zadan upit U1 : podskup(S1, S2) .Upit U1 je korektan, a odgovor na upit je o(U1) : DA .Odgovor na upit U2 : podskup(S2, S1) je o(U2) : NE .
Proširenje dataloga ažuriranjem ( Datalog[až] )
Pretpostavljamo da se ažuriranje deduktivne baze podataka DBP = (EBP, IBP, UI) reducira na ažuriranje njene ekstenzije EBP.Sa DBP[i] = (EBP[i], IBP[i], UI[i]) označavamo stanje deduktivne baze DBP u trenutku i (pretpostavljamo diskretno vrijeme T izomorfno skupu prirodnih brojeva N ). Dalje, α (DBP[i]) = DBP[i + 1] indicira da je DBP[i + 1] rezultat ažuriranja DBP[i].Neka su a1,.., ak konstante. Tada
+ r(a1,.., ak) vrijedi ako i samo ako je slog (a1,.., ak) upisan u r ; r(a1,.., ak) vrijedi ako i samo ako je slog (a1,.., ak) brisan iz r .
Primjer 5.44Razmotrimo
DBP[1] : radnici(R# Prezime Plaća Odjel#) ============================== R1 Malović 2000 Kn O1 R2 Singer 2300 Kn O2
118
Neka su zadana ažuriranjaα 1 : radnici(R1, Malović, 2000 Kn, O1),α 2 : +radnici(R1, Malović, 2500 Kn, O3) .
Tada jeα 1(DBP[1]) = DBP[2] : radnici(R# Prezime Plaća Odjel#) ============================== R2 Singer 2300 Kn O2
α 2(DBP[2]) = DBP[3] : radnici(R# Prezime Plaća Odjel#) ============================== R1 Malović 2500 Kn O3 R2 Singer 2300 Kn O2
Primjer 5.45Neka je DBP : s ( A ) r(x) ← + s(x) . ===== a b
Upit U : r(x) je nekorektant, jer x mora biti konstanta. Upit U : r(a) je korektan, a rezultat upita jeo(U): DA , uz dodavanje sloga ( a ) u relaciju s .
Primjer 5.46RazmotrimoDBP[0] : p( A ) r(A B) p1 : +p(x) ← r(x, y) . ==== ===== 1 2 1 2 3 3
Lako vidimo da DBP[0] nije konzistentna; respektirajući pravilo p1 , relacija p trebala bi sadržavati slog (3 ) . Ažuriranjem DBP[0] pomoću α 1 = p1 dobivamo
α 1(DBP[0]) = DBP[1] : p( A ) r( A B ) p1 : +p(x) ← r(x, y) . ==== ======= 1 2 1 2 3 3 3
DBP[1] je konzistentna baza podataka.
Neka je α 2 : r(2, 1) . Tada je
119
α 2(DBP[1]) = DBP[2] : p( A ) r( A B ) p1 : +p(x) ← r(x, y) . ==== ======= 1 3 3 2 3
Uočite da je DBP[2] konzistentna baza podataka.
Neka je α 3 : +r(4, 4) . Tada je
α 3(DBP[2]) = DBP[3] : p( A ) r( A B ) p1 : +p(x) ← r(x, y) . ==== ======= 1 3 3 2 4 4 3
DBP[3] nije konzistentna.Ako definiramo α 4 = p1 , onda dobivamo konzistentno stanje
α 4(DBP[3]) = DBP[4] : p( A ) r( A B ) p1 : +p(x) ← r(x, y) . ==== ======= 1 3 3 2 4 4 3 4
Prema tome, svako ažuriranje EBP zahtjeva dodatno ažuriranje primjenom ažurirajućeg pravila p1 .
Ovaj primjer imao je za cilj pokazati složenost semantike ažuriranja DBP. Održavanje konzistentnosti DBP postaje još složenije ako dopustimo ažuriranje IBP i UI. Ta razmatranja su izvan sadržaja predviđenih ovom skriptom.
Problem (usporedba ekspresivnosti)
Uvedimo sljedeće oznake:
Datalog ‘čisti’ Datalog (bez negacije);Datalog[¬] Datalog proširen s negacijom;Datalog[¬, fun, skup, F, až] Datalog proširen s negacijom, funkcijama, skupovima, formulama i
ažuriranjem;RA relacijska algebra .
Usporedite ekspresivnost navedenih jezika!
120
ZADACI
1. Zadana je deduktivna baza podataka DBPEBP: r( A B ) s(B C) r1( D ) ====== ===== ===== a b a a b b a b a
UI: r( A, B), B ≤ b ; s(B, C), B → C IBP: p1: p(x, a) ← r(x, y), s(y, z) p2: q(x, c) ← s(x, a), ¬r1(x)(a) Napišite interpretaciju I za DBP, a zatim ispitajte je li I model za DBP.(b) Izračunajte pomoću relacijskih operatora model za BZ.
2. Zadana je DBPEBP: r( A B C) s( B C D) ======== ======== a b a a b c a a c b a b a b aIBP: p1: p(b, y, y) ← r(x, y, z), s(z, y, x1)
(a) Nadopunite I: D = {a,..}, p(E F G), ... ======= b b b a c b b b a tako da I bude interpretacija za DBP, a zatim ispitajte da li je I model za DBP.(b) Izračunajte ¬s(B, C, D) ∞ r(A, B, C).
3. Neka je DBP1 deduktivna baza podatakaEBP: r(A B) ===== a 2 b 2
IBP: p s(x, y) ← r(x, z), r(y, z), x ≠ y
(a) Izračunajte relaciju s pravila p .(b) Napišite minimalni model za DBP1.(c) Napišite dva različita modela za DBP1.(d) Ako su modeli u zadatku 3. (c) M1 i M2, onda ispitajte da li vrijedi M1 ≤ M2. Da li vrijdi M2 ≤ M1?
121
4. DBP2 = (EBP, ∅, ∅), gdje jeEBP:dozvola(Pilot# Tipaviona)=================== P1 707 P1 727 P2 707 P3 747dozvola(x, y) znači: Pilot x ima dozvolu za tip aviona y.(a) Napisati pravilo p koje daje sve pilote iz relacije dozvola.(b) Napisati pravilo p1 koje daje sve pilote koji imaju dozvolu za tip aviona 707 .
5. DBP3 = (EBP, IBP, ∅), gdje su EBP i IBP: p, p1 iz zadatka 3.Napišite model za DBP3.
6. DBP = (EBP, IBP, ∅), gdje je 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)Sadržaj relacija iz EBP nije bitan. Izračunajte pravilo p1 tj. napišite relacijski izraz kojim se izračunava relacija p iz pravila p1. 7. Zadana je DBP1 EBP: r1(A, B), r2(B, C) IBP: p: s(x, y) ← r1(x, z), r2(y, x)Izračunajte pravilo p .
8. Zadana je DBP2 EBP: r(A, B), s(B, C) ===== ===== 1 2 2 1 2 3 2 2 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)Napisati model za DBP2 računajući pravila pomoću relacijske algebre.
9. Je li DBP2 iz zadatka 8. sigurna?10. Napišite DBP koja nije sigurna.11. Napišite DBP koja nije konzistentna.12. Napišite DBP koja u IBP ima barem tri pravila i pojavljivanje negacije u barem jednom pravilu.
Ispitajte da li postoji stratifikacija deduktivne baze podataka DBP.
122
6. POOPĆENE RELACIJSKE BAZE PODATAKA (PORBP)
6.1. UVOD
U konvencionalnom relacijskom modelu pretpostavljamo da su relacijske sheme u 1NF. Navedeno znači da su svi atributi sheme relacijske baze podataka jednostavni, tj. domene atributa se sastoje od atomarnih objekata . Zahtjevom za boljom reprezentacijom dolazimo do relacijskih shema koje su u višim normalnim formama (2NF, 3NF, BCNF, 4NF, 5NF).Aplikacije: (CADsustavi, procesiranje teksta, temporalne baze podataka) zahtijevaju relacije čija se shema sastoji i od složenih atributa; atribut A je složen ako njegova domena, dom(A), sadrži barem jedan složeni objekt (skup, lista, relacija,..).
U nastavku ćemo shemu R = {A1, A2,.., Ak} pisati u obliku R ( A1, A2,.., Ak).
Poopćena normalna forma
• (R, F) je u poopćenoj normalnoj formi (PONF) ako je svaki atribut iz R jednostavan ili složen. (pretpostavljamo da su vrijednosti složenih atributa relacije) . Za relaciju r nad R kažemo da je PONF relacija.
Lako vidimo da je PONF poopćenje 1NF . U daljem ćemo koristiti sljedeću karakterizaciju.
• Ako je (R, F) u X normalnoj formi (XNF), onda za relaciju r nad R kažemo da je XNF relacija.
Primjer 6.1 Neka je zadana relacija r nad shemom R ( Radnik#, Mentor), gdje je R u 1NF.
r (Radnik# Mentor) r je 1NF relacija.=============== R1 Murn R2 Murn R3 Murn R4 Lovrić R5 Lovrić
Informaciju iz r moguće je prikazati kompaktnije koristeći relaciju r1 nad relacijskom shemom R1(Rad(Radnik#), Mentor), gdje je R1 u PONF. Uočite da je atribut Rad složen.
123
r1( Rad (Radnik#), Mentor) r1 je PONF relacija.===================== R1 Murn R2 R3
R4 Lovrić R5
Primjer 6.2 Razmotrimo PONF relaciju
r(A D(B C)) ==========
1 2 2 1 2 t1
3 1 1 t2
SemantikaShema relacije r je SH(r) = R(A, D(B, C)); atribut A je jednostavan, a atribut D je složen; vrijednosti od D su relacije nad (B, C) ; vrijedi:
t1[A] = 1 , t1[D] = (B C) , t1[D] ≠ t2[D]. ===== 2 2 1 2
124
6.2. PARTICIJSKA NORMALNA FORMA (PNF)
Primjer 6.3Neka je zadana relacija
r(S# Prezime Predmet(Pime Ocjena)) ============================ S1 Mrak Mat 3 Fiz 4
S1 Mrak BP 3
U r ne vrijedi funkcijska zavisnost S#, Prezime → Predmet .Intuitivno, bolja reprezentacija je :
r2(S# Prezime Predmet(Pime Ocjena)) =============================
S1 Mrak Mat 3 Fiz 4 BP 3
U r2 vrijedi S#, Prezime → Predmet.
• PNF Neka je zadana PONF relacija r(X Y) , gdje su u X jednostavni atributi, a u Y su složeni atributi . Kažemo da je r u PNF ako X → Y vrijedi u r , i (∀t ∈ R) (∀A ∈ Y)[relacija t[A] je u PNF].
Propozicija(1NF, PNF)Svaka 1NF relacija je u PNF .
DokazNeka je r(R) u 1NF. Navedeno znači da su svi atributi iz relacijske sheme R jednostavni. Dakle, iz definiciji PNF slijedi X = R, Y = ∅. Kako X → ∅ vrijedi u svakoj relaciji, zaključujemo da vrijedi i u relaciji r(R). Prema tome, r je u PNF.
125
6.3. RELACIJSKI OPERATORI ZA PONF RELACIJE
U ovom odjeljku razmotrit ćemo dva nova operatora, grupiranje Gr i rastavljanje Ra, te proširenja konvencionalnih relacijskih operatora na PONF relacije:∪p , ∩p , −p , ∞p , Π p , σ p , δ p.
Kada se PONF reducira na 1NF, proširenja operatora se reduciraju na odgovarajuće operatore ∪ , ∩ , − , ∞ , Π , σ , δ na 1NF relacijama.
• GRUPIRANJE Gr
Neka je zadana relacija r(B1,.., Bk, Bk+1,.., Bn); neka je C atribut koji se ne pojavljuje u SH(r). Grupiranje relacije r po atributima Bk+1,.., Bn agregiranim u C , je relacija Gr[C(Bk+1,.., Bn)](r) :
(a) SH(Gr[C(Bk+1,.., Bn)](r)) = (B1,.., Bk, C(Bk+1,.., Bn))(b) Slogovi u Gr dobiju se iz slogova iz r agregiranjem slogova koji imaju jednake vrijednosti na
B1,.., Bk.Formalno,t ∈ Gr[C(Bk+1,.., Bn)](r) ako i samo ako(1) ∃u ∈ r (t[B1,.., Bk] = u[B1,.., Bk]) , i(2) t[C] = {v[Bk+1,.., Bn] v ∈ r i v[B1,.., Bk] = t[B1,.., Bk]}
Primjer 6.4Neka je zadana relacija
r(A B C) ======== 2 1 1 2 0 1 3 1 2
Tada je
Gr[D(B, C)](r) (A D(B C))======================
2 1 1 0 1
3 1 2
126
• RASTAVLJANJE Ra
Neja je zadana relacija r(B1,.., Bm, B(A1,.., Ak)) , gdje je B složeni atribut . Rastavljanje od r s obzirom na B je relacija Ra[B](r) definirana ovako:
(1) SH(Ra[B](r)) = (B1,.., Bm, A1,.., Ak) (2) t ∈ Ra[B](r) ako i samo ako ∃u ∈ r (t[B1,.., Bm] = u[B1,.., Bm] i t[A1,.., Ak] ∈ u[B])
Primjer 6.5Neka je zadana relacija r(A B C(D E(F G))) ================ 1 2 3 2 2 1 0
1 2 4 2 2 1 1 0 1
Odredimo Ra[E(F, G)](r) .
Ra[E(F, G)](r) (A B C(D F G))==========================
1 2 3 2 2 3 1 0
1 2 4 2 2 4 1 1 4 0 1
Propozicija(Ra inverz Gr)Operator Ra je inverz od Gr , tj. r = Ra[A]( Gr[A(Y)](r) )
127
Propozicija(Nije Gr inverz Ra)Operator Gr nije inverz od Ra , tj. postoji relacija r takva da je r ≠ Gr[A(Y)]( Ra[A(Y)](r) ).
DokazNeka je zadana relacija r(Izlet Posjeta(Grad Dan)) ======================
I1 Split 1
I1 Rijeka 1 Pula 2
I2 Zadar 3
Izračunajmo Gr[Posjeta(Grad Dan)]( Ra[Posjeta](r) ) Dobivamo
Ra[Posjeta(Grad Dan)](r) (Izlet Grad Dan)================================== I1 Split 1 I1 Rijeka 1 I1 Pula 2 I2 Zadar 3
Gr[Posjeta(Grad Dan)](Ra (r)) (Izlet Posjeta(Grad Dan))==========================================
I1 Split 1 Rijeka 1
Pula 2
I2 Zadar 3
Vrijedi Gr(Ra(r)) ≠ r .
128
Propozicija(PNF, Gr, Ra)Neka je r(X A(Y)) u PNF , gdje je X ∩ Y = ∅ i A ∉ XY. Tada, r = Gr[A(Y)]( Ra[A(Y)](r) ).
Propozicija(zatvorenost s obzirom na Ra)Klasa PNF relacija je zatvorena s obzirom na Ra .
Propozicija(nezatvorenost s obzirom na Gr)Klasa PNF nije zatvorena s obzirom na Gr .
DokazRazmotrimo relaciju
r(A B C(D E)) Relacija r je u PNF. ============
1 2 2 2
1 3 1 0
Izračunajmo
Gr[B1(B)](r)(A B1(B) C(D E)) ========================
1 2 2 2
1 3 1 0
Kako A → B1, C ne vrijedi u Gr(r), zaključujemo da Gr(r) nije u PNF .
Propozicija(PNF, Gr)Neka je r(X Y Z) takva relacija gdje su u X jednostavni, a u Y složeni atributi . Tada, Gr[A(Z)](r) je u PNF ako i samo ako X → Y vrijedi u r .
Sada prelazimo na proširenje konvencionalnih relacijskih operatora tako da dobijemo relacijske operatore za PONF relacije id a bude ispunjeno svojstvo da je klasa PNF relacija zatvorena s obzirom na definirana proširenja.
129
• Unija ∪p
Primjer 5.6Neka su zadane relacije r1(R1), r2(R1)
r1(A B(C D)) r2(A B(C D))=========== ===========
1 2 2 1 2 1 1 0 1 0
2 1 1 3 2 2
Uočite da r1 ∪ r2 ne čuva PNF, tj. klasa PNF nije zatvorena s obzirom na operator ∪ . Sada računamo r1 ∪p r2 :
r1 ∪p r2 (A B(C D) =================
1 2 2 1 0 2 1
2 1 1
3 2 2
Pravilo: ∪p ‘putuje’ od jednostavnih prema složenim atributima .
Slijedi definicija ∪p .Neka su zadane relacije r1(X Y) , r2(X Y) , gdje su u X jednostavni, a u Y složeni atributi .(1) SH(r1 ∪p r2) = SH(r1) = SH(r2)(2) t ∈ r1 ∪p r2 ako i samo ako a) t ∈ r1 i (∀t1 ∈ r2)(∃Ai ∈X) (t[Ai] ≠ t1[Ai]) , ili b) t ∈ r2 i (∀t1 ∈ r1)(∃Ai ∈X) (t[Ai] ≠ t1[Ai]) , ili c) (∃ t1 ∈ r1)(∃ t2 ∈ r2) (∀Ai ∈ X)(∀Bj ∈ Y) : t[Ai] = t1[Ai] = t2[Ai] i t[Bj] = t1[Bj] ∪p t2[Bj]
130
• Presjek ∩p
r1(X Y) , r2(X Y) , X = {A ∈ R A je jednostavan atr.}, Y = {B ∈ R B je složen atr.}(1) SH(r1 ∩p r2) = SH(r1) = SH(r2)(2) t ∈ (r1 ∩p r2) ako i samo ako (∃ t1 ∈ r1)(∃ t2 ∈ r2 ) (∀Ai ∈ X)(∀Bj ∈ Y) : t[Ai] = t1[Ai] = t2[Ai] i t[Bj] = t1[Bj] ∩p t2[Bj] i t[Bj] ≠ ∅ .
Dakle, slogovi t1 i t2 daju u presjeku t ako se t1 i t2 podudaraju na svim jednostavnim atributima X , i imaju neprazan prošireni presjek na svakom složenom atributu iz Y .
• Razlika −p
r1(X Y) , r2(X Y) , X = {A ∈ R A je jednostavan atr.}, Y = {B ∈ R B je složen atr.}(1) SH(r1 −p r2) = SH(r1) = SH(r2)(2) t ∈ (r1 −p r2) ako i samo ako a) t ∈ r1 i (∀t1 ∈ r2)(∃Ai ∈ X): t[Ai] ≠ t1[Ai] , ili b) (∃ t1 ∈ r1)(∃ t2 ∈ r2) (∀Ai ∈ X)(∀Bj ∈ Y) : t[Ai] = t1[Ai] = t2[Ai] i t[Bj] = t1[Bj] −p t2[Bj] i t[Bj] ≠ ∅ .
Dakle, u −p su oni slogovi iz r1 koji se ne podudaraju niti s jednim slogom iz r2 na skupu jednostavnih atributa X , ili ako se podudaraju, onda imaju nepraznu, proširenu razliku na svakom složenom atributu iz Y .
• Prirodno spajanje ∞p
Operator ∞p definiramo kao što slijedi.r1(R1), r2(R2) , X = {A ∈ R1 ∩ R2 A je složen atr.}, Y = R1 − X , Z = R2 − X.(1) SH(r1 ∞p r2) = R1 ∪ R2 = (Y X Z)(2) t ∈ (r1 ∞p r2) ako i samo ako (∃u ∈ r1)(∃v ∈ r2) : t[Y] = u[Y] i t[Z] = v[Z] i t[X] = u[X] ∩p v[X] ≠ ∅
131
Primjer 6.7Neka su zadane relacije
s1(A B C(D E)) s2(F B C(D E))=============== ===============
e1 b1 c1 d1 a1 b1 c1 d1 c1 d3 c2 d2 c3 d4 c1 d3
e3 b2 c3 d2 a2 b1 c3 d1 c2 d2 c1 d1 e4 b1 c3 d1 c4 d2 a2 b2 c1 d2 c3 d2
Tada je relacija s1 ∞p s2 dana sljedećom tablicom
s1 ∞p s2 (A B F C(D E))======================== e1 b1 a1 c1 d1 c1 d3
e1 b1 a2 c1 d1
e4 b1 a2 c3 d1
e3 b2 a2 c3 d2
132
• Projekcija Π p
Relacijski operator Π p definiran je ovako: r(R) , V ⊆ R , V ≠ ∅ .(1) SH(Π p[V](r)) = V(2 Π p[V](r) = ∪p (t) , gdje t ∈ Π[V](r) Primjer 5.8Izračunajmo Π p [F, C](s1 ∞p s2), gdje je s1 ∞p s2 iz primjera 5.7. Dobivamo
Π p [F C](s1 ∞p s2) (F C(D E))========================== a1 c1 d1 c1 d3
a2 c1 d1 c3 d1 c3 d2
Definicija produkta ⊗p ostaje nepromijenjena, tj. ⊗p = ⊗, a definicija selekcije σ pF zahtijeva proširenje skupa operatora uspoređivanja operatorima uspoređivanja vrijednosti složenih atributa i sukladno definiranje pojama formule F.
133
ZADACI
1. Neka je zadana relacija
r(A B C) ======== 1 1 1 2 0 1 0 1 2
(a) Izračunajte Gr[D(A, C)](r) .(b) Je li r u PNF?
2. Je li relacija iz zadatka 1. (a) u PNF?
3. Za relaciju
r (A B C(D F G)) ================
1 2 3 2 2 3 1 0
1 2 4 2 2 4 1 1 4 0 1 odredite(a) Ra[C(D, F, G)](r) .(b) Gr[E(C(D, F, G))](r) .
4. Je li relacija r iz zadatka 3. u PNF?
5. Neka su zadane relacije r1(R1), r2(R1)
r1(A B(C D)) r2(A B(C D))=========== ===========
2 2 2 1 2 1 1 0 1 0
1 1 1 2 2 2 2 1 1 0
134
Odredite(a) r1 ∪p r2(b) r1 ∩p r2(c) r1 −p r2(d) r2 −p r1
6. Za relacije r1 i r2 iz zadatka 5. odredite(a) r1 ∞p r2](b) Π p[A](r1)(c) Π p[B](r2)(d) r1 ⊗p r2
7. Neka su zadane relacije r1 (iz zadatka 5.) i relacija
r (C D ) ====== 1 1 2 2 2 1
Za formulu F: B ⊆ r odredite Π p[B](σ pF(r1)).
135
Model podataka
Model procesa
7. OBJEKTNO ORIJENTIRANE BAZE PODATAKA
7.1. UVOD
U uvodu karakteriziramo motivaciju za uvođenje objektno orijentiranih baza podataka (OOBP, OODB) i njihova temeljna svojstva. Osnovni cilj je bio postići veći stupanj sličnosti između BP (model) i aplikacijske domene (dio ‘realnog’ svijeta).
Tradicionalni implementacijski model je dan na sljedećoj slici.
AD
analiza modeliranje dizajn
Semantička ekvivalencija Kodiranje,[manjeviše] generiranje aplikacije
Programi Alati
BP
136
Zaključimo da u tradicionalnom implementacijskom modelu imamo gubljenje semantike.Gubljenje semantike ima za posljedicu da se poslovne aplikacije teško prihvaćaju od strane korisnika, jer je kompjuterska realizacija aplikacije različita od načina kako se posao odvijao (ručno) prije kompjuterizacije.Radi se zapravo o razlici između aplikacijske domene i modela aplikacijske domene.U slučaju modeliranja sve složenijih aplikacijskih domena: (CAD (computeraided design), CASE (computeraided systems)), raskorak između aplikacijske domene i modela postaje sve izrazitiji. Gubljenje semantike u postupku modeliranja (aplikacijska domena → ERmodel → relacijska baza podataka) možemo prikazati ovako:
Gubljenje semantike
AD
ERmodel
Relacijskimodel
137
Prvi korak u smanjenju gubljenja semantike bio je kreiranje aplikacijskihspecifičnih struktura, koje mogu obuhvatiti više semantike.
AD
Aplikacijski programSemantički bogataplikacijskispecifičanmodel podataka[Surogat]
Preslikavanje
RM
Problem je u ograničenosti (jednostavnosti) relacijskog modela (RM):• Tipovi podataka
[modeliranje AD zahtijeva apstraktne tipove podataka, koje definira korisnik]
• Operacije[reprezentacija poslovnih pravila nije moguća u RM i mora biti dana u aplikacijskom programu].
138
Sljedeći (logičan) korak je pokušaj ugrađivanja semantike u sustav za upravljanje bazom podataka (SUBP, DBMS).Time se eliminira preslikavanje (Surogat – SUBP).
kreirana iz
SUOOBP BP
139
Karakteristike sustava za upravljanje objektno orijentiranom bazom podataka (SUOOBP, OODBMS)
• Složeni (apstraktni) tipovi • Učahurenje (enkapsulacija) kojim se postiže nezavisnost od reprezentacije, tj., aplikacije se ne
moraju mijenjati ako se mijenja reprezentacija.Isto možemo reći i tako da kažemo da je specifikacija (sučelje) nezavisna od implementacije.
• Visok stupanja konzistencije;sve aplikacije mogu pozvati samo operacije, koje su definirane i učahurene unutar objekta. Poslovna pravila su, također, dio objekta i ne zavise više o aplikaciji (u protivnome, imamo problem sinkronizacije konzistencije).
Promjene u poslovnim pravilima vrše se u definiciji objekta, a ne u proceduralnom aplikacijskom kodu.
• Redukcija cijene za novi aplikacijski razvoj kroz višekratnu upotrebu objekta (koda). Naime, definicije, koje su registrirane u biblioteci klasa, mogu se ponovo upotrijebiti u razvoju novih aplikacija ili funkcija.
U daljem koristit ćemo sljedeće pokrate:Sustav za upravljanje bazom podataka (SUBP, DBMS),Sustav za upravljanje relacijskom bazom podataka (SURBP, RDBMS),Sustav za upravljanje hibridnom bazom podataka (SUHBP, HDBMS),Sustav za upravljanje objektno orijentiranom bazom podataka (SUOOBP, OODBMS),Sustav za upravljanje proširenom relacijskom bazom podataka (SUPRBP, ERDBMS).
Opis raznih pristupa u razvoju sustava za upravljanje bazom podataka dan je (slikovito) kao što slijedi.
(SUBP, DBMS) – pristupi
(SURBP, RDBMS) [Relacijsko sučelje , Relacijski stroj]
140
(SUHBP, HDBMS) [OO sučelje , Relacijski stroj]
(SUOOBP, OODBMS) [OO sučelje , OO stroj]
141
(SUPRBP, ERDBMS) [Relacijsko sučelje s OO ekstenzijama , Relacijski stroj s OO ekstenzijama]
ZadatakObjasnite prikazane slike. Napomena: Iako se slika može interpretirati na puno načina ('slika vrijedi tisuće riječi', uključujući i pogrešne odnosno nejasne), temeljem karakteriziranih svojstava navedenih sustava, pokušajte 'pogoditi' pravu interpretaciju.
142
7.2. ODL
U ovom odjeljku karakteriziramo jezik ODL (Object Definition Language) za definiciju sheme (strukture) objektno orijentirane baze podataka (OOBP). U sljedećem odjeljku upoznat ćemo se s upitnim jezikom OQL (Object Query Language) pomoću kojeg manipuliramo podacima u OOBP.Prvo definiramo pojam objekta.
• ObjektInstanca klase ili bilo što na što je primjenjiv koncept ili tip.
Koristeći ODL i OQL, upoznat ćemo se sa sljedećim konceptima OOBPa.
OOBP koncepti(1) Identitet objekta (oi)
(2) Atributi
• Veze• Metode• Klase• Hijerarhija klasa i nasljeđivanje
ODL koristimo za specifikaciju sheme (strukture) OO baze podataka. Dobivena specifikacija prevodi se u deklaracije SUOOBP. Kako SUOOBP (obično) koristi C++, Javu ili Smalltalk kao primarni jezik, ODL specifikacija se mora prevesti u deklaracije jednog od ovih jezika. Budući je ODL vrlo sličan ovim jezicima, prevođenje je gotovo direktno. Prevođenje u deklaracije konvencionalnih sustava za upravljanje relacijskom bazom podataka (SURBP) je složenije.Aplikacijska domena (AD) sastoji se od objekata (entiteta), koji imaju jedinstvene identifikatore (oi) pomoću kojih jedan objekt razlikujemo od drugih. Kreiranje oi je stvar SUOOBP .Organizacija informacije provodi se grupiranjem objekata u klase objekata. U klasu se uključuju slični objekti; objekti neke klase imaju ista svojstva, gdje su svojstva klase: atributi, veze i metode.
Deklaracija klase
interface < name > { < list of properties > }
Primjer 7.1 (deklaracija klase Film)1. interface Film { 2. attribute string naslov;3. attribute integer godina:4. attribute integer duljina;5. attribute enum Fil { boja, crnobijeli } tipfilma;
};
143
Komentar(1) deklarira Film kao klasu;(2)–(4) deklariraju atribute atomskih (temeljnih) tipova;(5) deklarira atribut tipfilma čiji je tip enumeracija tj.
lista Fil = {boja, crnobijeli}.
Primjer 7.2 (deklaracija klase Glumac)
1. interface Glumac {2. attribute string ime;3. attribute Struct Addr {string ulica, string grad} adresa;
};
KomentarRed (3) specificira (složeni) atribut adresa čiji je tip slog (record) koji se sastoji od dva atributa (polja) tipa string.
Veze su svojstva objekata koje nam kažu kako je neki objekt povezan s drugim objektima iste ili različite klase.
Primjer 7.3 (deklaracije klasa Film, Glumac, Studio)(f1) interface Film { (f2) attribute string naslov;(f3) attribute integer godina:(f4) attribute integer duljina;(f5) attribute enum Fil { boja, crnobijeli } tipfilma;(f6) relationship Set<Glumac> glumci inverse Glumac :: glumiU;(f7) relationship Studio vlasništvoOd inverse Studio :: vlasnik; };
(g1) interface Glumac {(g2) attribute string ime;(g3) attribute Struct Addr {string ulica, string grad} adresa;(g4) relationship Set<Film> glumiU inverse Film :: glumci; };(s1) interface Studio {(s2) attribute string ime;(s3) attribute string adresa;(s4) relationship Set<Film> vlasnik inverse Film :: vlasništvoOd; };
144
KomentarRed f6 specificira vezu glumci u klasi Film koja svakom filmu pridružuje skup glumaca koji glume u dotičnom filmu; skup glumaca može biti i prazan. Veza glumci ima inverz glumiU u klasi Glumac; glumiU pridružuje svakom glumcu skup filmova u kojima dani glumac glumi.U klasi Film imamo i vezu vlasništvoOd koja svakom filmu pridružuje najviše jedan studio čije vlasnoštvo je dani film; inverz od vlasništvoOd je veza vlasnik u klasi Studio koja svakom studiu pridružuje skup filmova koji su njegovo vlasništvo.Analogno se interpretiraju preostale veze u deklaracijama klasa.
• Mnogostrukost veze
Neka je zadana binarna veza (relacija) v ⊆ K1 × K2 nad klasama K1 i K2. Inverzna veza veze v , inv(v), je veza nad klasama K2 i K1 definirana ovako:
1. inv(v) ⊆ K2 × K1 2. (x, y) ∈ inv(v) ako i samo ako (y, x) ∈ v .
Za vezu v ⊆ K1 × K2 kažemo da je mnogostrukosti 1 – 1ako je vezom v svakom objektu klase K1 pridružen najviše 1 objekt klase K2 i obrnuto vezom inv(v) je svakom objektu klase K2 pridružen najviše jedan objekt klase K1.
Za vezu v ⊆ K1 × K2 kažemo da je mnogostrukosti m – 1 ako je vezom v svakom objektu klase K1 pridružen najviše 1 objekt klase K2 i obrnuto vezom inv(v) je svakom objektu klase K2 pridruženo više (0, 1, 2,..) objekata klase klase K1.
Za vezu v ⊆ K1 × K2 kažemo da je mnogostrukosti m – n ako je vezom v svakom objektu klase K1 pridruženo više objekata klase K2 i obrnuto vezom inv(v) je svakom objektu klase K2 pridruženo više objekata klase klase K1.
NapomenaMnogostrukost m – 1 je poopćenje mnogostrukosti 1 – 1 , a mnogostrukost m – n je poopćenje mnogostrukosti
m – 1 .
Primjer 7.4 (mnogostrukost veze)Veza glumci ⊆ Film × Glumac je mnogostrukosti m – n;veza vlasnik ⊆ Studio × Film je mnogostrukosti 1 – n;veza vlasništvoOd ⊆ Film × Studio je mnogostrukosti m – 1 .
NapomenaU ODLu definiraju se jedino binarne veze; u ER jeziku možemo definirati i veze višeg reda ( 3, 4,..).
145
• Tipovi u ODLu
Skup S : {a, b}; (nema ponavljanja elemenata, uređaj nije bitan) multiskup ili bag B : {a, b, b, c}; (elementi se mogu ponavljati, uređaj nije bitan)lista L : (a, b, b, c). (elementi se mogu ponavljati, uređaj je bitan)
Bazični (temeljni) tipovi u ODLu(B1) Atomski tipovi: integer, float, character, character string, boolean, enumeration;(B2) Interface tipovi; napr. Film, Glumac. Strukturirane tipove gradimo (rekurzivnim) kombiniranjem primjenjujući sljedeće tipske konstrukte:
(T1 ) Skup. Ako je T bilo koji tip, onda je Set<T> tip koji se sastoji od svih konačnih skupova elemenata tipa T.
(T2) Multiskup. Ako je T bilo koji tip, onda je Bag<T> tip koji se sastoji od svih konačnih multiskupova elemenata tipa T.
(T3) Lista. Ako je T bilo koji tip, onda je List<T> tip koji se sastoji od svih konačnih lista elemenata tipa T.
(T4) Niz (Array). Ako je T bilo koji tip, i ∈ N, onda je Array<T, i> tip koji se sastoji od nizova (duljine i) elemenata tipa T.
Pr. Array(char, 5) je karakter niz duljine 5 .
(T5) Strukture. Ako su T1, T2, .., Tn bilo koji tipovi iF1, F2,.., Fn imena polja, onda jeStruct St {T1 F1, T1 F2, .., Tn Fn} tip koji se sastoji od struktura (slogova ili rekorda) sa n polja. Ime tipa je St.Pr. Struct Addr {string ulica, string grad} je tip koji se sastoji od slogova s dva polja čiji tip je string .
Tipove (T1) – (T4) zovemo kolekcijskim tipovima.
ODL ograničenjaO1. Tip atributa ne može biti interface;O2. Tip veze ne može biti: atomski tip, kolekcija atomskih tipova, strukturalni tip;O3. Tip atributa i tip veze ne može uključivati kompoziciju više kolekcijskih tipova. Na primjer,
Set<Array<Glumac>> nije dozvoljen.• Podklasa
Klasa K1 je podklasa klase K2 (klasa K2 je nadklasa klase K1) ako je svaki objekt klase K1 ujedno i objekt klase K2.
146
Notacija : K1 ⊆ K2
Grafički prikaz : K2
K1
Motivacija za uvođenje podklase
Neka klasa K2 može sadržavati objekte koji imaju specijalna svojstva koja nemaju svi članovi klase K2.
Zato te objekte stavljamo u podklasu K1 . Objekti podklase K1 nasljeđuju sva svojstva objekata iz K2, a imaju i svoja specijalna svojstva.
Primjer 6.5 (deklaracija podklase Crtić klase Film)(c1) interface Crtić : Film {(c2) relationship Set<Glumac> glas; };
KomentarCrtić nasljeđuje sva svojstva nadklase Film; svojstvo (c2) ima smisla samo za podklasu Crtić.
Hijerarhija klasa (višekratno nasljeđivanje)
Primjer 7.6 (hijerarhija klasa)Neka je grafički zadana hijerarhija klasa
Film
Romanca Sudnica
RomancaSudnica
147
Podklasa RomancaSudnica ima dvije neposredne nadklase Romancu i Sudnicu od kojih nasljeđuje svojstva; konfliktna situacija je moguća u slučaju da neposredne nadklase sadrže isti atribut A, gdje su tipovi Tip(A) (u klasi Romanca) i Tip(A) (u klasi Sudnica) različiti.
ProblemNeka je A ∈ Romanca i Tip(A) = enum K {sretan, žalostan}; neka je dalje A ∈ Sudnica i Tip(A) = enum E {kriv, nijekriv}.Koji atribut nasljeđuje podklasa RomancaSudnica ?
Rješenje konfliktne situacije
R1. Specificirati koje je od dva svojstva primjenjivo na podklasu (bolje odgovara situaciji). Ako smo više zainteresirani o tome je li film završio sretno ili ne, onda ćemo u definiciji podklase
zahtijevati nasljeđivanje iz nadklase Romanca.
R2. Ako smo zainteresirani za oba svojstva, onda dano svojstvo u jednoj od neposrednih nadklasa preimenujemo.
R3. Zamijeniti konfliktna svojstva iz nadklasa novim svojstvom podklase. Na primjer, umjesto svojstva A = kraj (s odgovarajućim tipovima u nadklasama Romanca i
Sudnica), definiramo za podklasu RomancaSudnica novo svojstvo B = kraj, gdje je Tip(B) = integer (stupanj zadovoljenja krajem filma dobiven anketom gledatelja).
Ograničenja (uvjeti integriteta)
Primjer (ključ)interface Film (key (naslov, godina)){};
• Slaba klasaKlasa K1 je slaba ako je barem jedan atribut njenog ključa dobiven iz druge klase K2.
NapomenaSlabe klase ne postoje u ODLu, jer svaki objekt ima svoj oi , tako da ne postoji potreba za definiranjem ključa.
• Sadržaj klase (extent) je skup objekata dane klase u danom trenutku vremena. To je u stvari relacija u relacijskom modelu.
148
3 Metoda je funkcija pridružena klasi. Funkcija djeluje nad objektima klase (argumenti funkcije); funkcija može imati i druge argumente tj. parametre.
Primjer 7.7 (proširenje klase Film sadržajem i metodama)
(f1) interface Film (extent Filmovi key (naslov, godina)) { (f2) attribute string naslov;(f3) attribute integer godina:(f4) attribute integer duljina;(f5) attribute enum Fil { boja, crnobijeli } tipfilma;(f6) relationship Set<Glumac> glumci inverse Glumac :: glumiU;(f7) relationship Studio vlasništvoOd inverse Studio :: vlasnik;(f8) float duljinaUsatima() raises (no NađenaDuljina);(f9) glumciImena (out Set<string>);(f10) drugiFilmovi (in Glumac, out Set<Film>) raises (no takavGlumac); };
KomentarU klasi Film imamo tri metode tj. njihove signature:
(M1) duljinaUsatima : Film → float ; nema ulaznih i izlazni parametara. Argument (prikriveni) je objekt klase Film; formula kako duljinaUsatima ‘radi’, tj.
implementacija ili kod nije dio ODL deklaracije. Kod se definira koristeći domaćinski jezik (host). Moguća interpretacija metode duljinaUsatima: koristeći svojstva objekta (duljina) dobiva se, pretvaranjem minuta u sate, duljinaUsatima.
Metoda ima jedan izuzetak; u slučaju da atribut duljina objekta iz klase Film nije definiran ili ima nekorektnu vrijednost, onda je rezultat no NađenaDuljina.
(M2) glumciImena : Film → ;
kodomena nije definirana, ali imamo jedan izlazni parametar tipa skup stringova. Pretpostavljamo da se izlazni parametar računa tako da nam daje imena glumaca danog filma.
(M3) drugiFilmovi : Film → ;
kodomena nije definirana, ali imamo jedan ulazni i jedan izlazni parametar Glumac i Set<Film>, respektivno. Moguća implementacija ove funkcije je kao što slijedi.
149
Funkcija drugiFilmovi očekuje da je dani glumac (ulazni parametar) glumac danog filma; ako nije tako, onda se pojavljuje izuzetak no takavGlumac. Ako je dani glumac ujedno glumac danog filma, onda se izlaznom parametar, čiji je tip skup filmova, pridružuje kao njegova vrijednost skup drugih filmova danog glumca.
• Poopćenje (definicija signature metode)
Neka je K klasa, Tip(in) = Ul, Tip(out) = Iz. Signatura metode m za klasu K je izraz
m : K × Ul → Kodomena ∪ Iz .
Skupovi Ul, Kodomena, Iz mogu biti i prazni (ne istovremeno).
150
7.3. OQL OQL (Object Query Language) je jezik za manipulaciju podacima. Notacija je slična SQLnotaciji. Pretpostavlja se da će OQL biti upotrijebljen kao ekstenzija nekog OO domaćinskog (host) jezika (C++, Smalltalk, Java, Python). Manipulacija objektima ostvaruje se kombinacijom OQLupita i iskaza domaćinskog jezika. Ovo miješanje OQLupita i hostiskaza, bez eksplicitnog transformiranja vrijednosti između dva jezika, prednost je u odnosu na SQL ugrađen u domaćinski jezik, gdje se, upravo suprotno, navedena transformacija mora eksplicirati.
Tipovi u OQLu
Tipovi se u OQLu grade slično kao u ODLu. Međutim, nema ograničenja na dubinu ugrađivanja konstruktora.
Varijable u OQLu imaju deklaraciju nasljeđenu iz ODLa.
U OQLu možemo trebati i konstante, koje se ne definiraju u ODLu, jer je ODL jezik za definiciju strukture.
Konstante u OQLu konstruiramo primjenom sljedećih bazičnih (temeljnih) i tipskih konstruktora:
• Bazični tipovi
(B1) Atomski tipovi: integer, float, character, string,
boolean:
(B2) Enumeracije. Vrijednosti u enumeraciji su deklarirane u ODLu. Bilo koja od ovih vrijednosti može biti upotrijebljena kao konstanta.
• Složeni tipovi
Složene tipove gradimo primjenom sljedećih tipskih konstruktora:
(k1) Set(..)
(k2) Bag(..) kolekcijski tipovi
(k3) List(..)
(k4) Array(..)
(k5) Struct(..)
151
Primjer 7.8 (konstante)Sljedeći izrazi su konstante:
2 Set(1, 2)3 Bag(1, 2, 2)4 List(1, 2, 2)5 Array(4; 2, 2, 1, 0)6 Struct(A: Set(1, 2), B: ‘’OK’’, C: List(1, 2, Set(1, 2))).
Reprezentacija putaNeka je o objekt klase K i s neko svojstvo klase K.Tada je o.s rezultat primjene svojstva s na objekt o.Formalno,
vrijednost atributa u o ako je s atribut o.s = kolekcija objekata u vezi sa o ako je s veza rezultat primjene s na o ako je s metoda
Za ilustraciju OQLa koristit ćemo OO bazu podataka OOBP : Film, Glumac, Studio .
Primjer 7.9 (specifikacija puta)Neka je F varijabla tipa Film. (p1) izraz F.naslov predstavlja naslov filma F; ako je F = f1, onda je F.naslov = f1.naslov tj. rezultat predstavlja naslov filma f1. (p2) izrazom F.duljinaUsatima() dana je duljina filma F u satima. (p3) izrazom F.glumci dan je skup glumaca filma F; skup glumaca određen je vezom glumci. (p4) Izraz F.glumciImena(x) predstavlja skup glumaca filma F; dobiveni skup pridružuje se izlaznoj varijabli x . (p5) Izraz F.vlasništvoOd.ime označava ime onog studija koji je vlasnik filma F .
Select – From – Where izrazi u OQLu
Primjer 7.10U: Odrediti godinu filma ABC .
OQL(U): Select f.godina From Filmovi f Where f.naslov = “ABC”
152
RA(U): Π [godina](σ [naslov = ABC(Filmovi)) je rješenje u relacijskoj algebri RA.
Operatori uspoređivanja i logički operatori su isti kao u SQLu; umjesto <> pišemo != .
Primjer 7.11
U: Odrediti imena glumaca filma ABC .
OQL(U): Select g.ime
From Filmovi f , f.glumci g
where f.naslov = “ABC”
Eliminacija ponavljanjaRezultat upita je multiskup tj. relacija s ponavljanjem (kao u SQLu). Eliminaciju ponavljanja ostvarujemo pomoću Distinct . Tada je rezultat upita skup.
Primjer 7.12U: Odrediti imena glumaca u filmovima studija Croatia.
OQL(U): Select Distinct g.ime From Filmovi f , f.glumci g Where f.vlasništvoOd.ime = “Croatia”
Složeni tipovi u izlazuIzrazi u Select klauzuli mogu biti izgrađeni primjenom tipskih konstrukata.
Primjer 7.13U: Odrediti parove glumaca koji imaju istu adresu.
OQL(U): Select Distinct Struct(glumac1 : g1 , glumac2 : g2) From Glumci g1 , Glumci g2 Where g1.adresa = g2.adresa And g1. ime < g2.ime
Tip rezultata upita jeSet<Struct G {Glumac : glumac1 , Glumac : glumac2}>,gdje je tip polja glumac1 i glumac2 nasljeđen od varijabli g1 i g2 ,koje su tipa Glumac .
153
Podupiti
Primjer 7.14Upit u primjeru 6.12 možemo izraziti, koristeći podupit, ovako:
OQL(U) :Select Distinct g.ime From (Select f From Filmovi f Where f.vlasništvoOd.ime = “Croatia”) c , c.glumci g
Uređenje rezultata
Rezultat upita je multiskup ili skup (ako koristimo Distinct). Primjenom Order By dobivamo kao rezultat listu.
Primjer 7.15U: Odrediti listu filmova studija Croatia; lista treba biti uređena po duljini trajanja i naslovima filmova.
OQL(U): Select f From Filmovi f Where f.vlasništvoOd.ime = “Croatia” Order By f.duljina , f naslov
Uređenja: rastuće (ASC), padajuće (DESC); ako ništa ne specificiramo, pretpostavlja se ASC .
Kvantifikatori ∀ i ∃
∀ For All x In S : P(x)Izraz je istinit ako i samo ako za svaki x ∈ S vrijedi svojstvo P(x).
∃Exists x In S : P(x)Izraz je istinit ako i samo ako postoji x ∈ S takav da vrijedi svojstvo P(x).
154
Primjer 7.16 (∀)U: Odrediti glumce koji glume jedino u filmovima studija Croatia.
OQL(U) : Select g From Glumci g Where For All f In g.glumiU : f.vlasništvoOd.ime = “Croatia”
Primjer 7.17 (∃ )U: Odrediti glumce filmova studija Croatia.
OQL(U) : Select g From Glumci g Where Exists f In g.glumiU : f.vlasništvoOd.ime = “Croatia”
ZadatakJe li glumci, koji trenutno ne glume u niti jednom filmu (s obzirom na OOBP), pripadaju rezultatima primjera∀ i primjera∃ ?
Agregacijski operatori
Avg, Count, Sum, Min, Max .
Domene operatora su kolekcije odgovarajućeg tipa.
Count : T → Integer , gdje je T proizvoljan tip;Avg, Sum : A → float , gdje je A aritmetički tip;min, Max : Alf → Alf , gdje je Alf alfanumerički tip tj. bilo koji uređen tip.
Primjer 7.18U: Odrediti prosječnu duljinu svih filmova.
OQL(U): Avg(Select f.duljina From Filmovi f)
155
ZadatakKomentirajte upitOQL(U): Avg(Select Distinct f.duljina From Filmovi f)
Primjer 7.19 U: Odrediti najduži od svih filmova.
OQL(U): Max(Select f.duljina From Filmovi f)
GroupBy operator
Primjer 7.20U: Odrediti ukupnu duljinu filmova za svaki studio i svaku godinu.
OQL(U):Select s, g, sumduljina : Sum(Select p.f.duljina From partition p) From Filmovi f Group By s : f.vlasništvoOd , g : f.godina
KomentarPartition sadrži sve filmove za dani studio i danu godinu.
Having klauzulaPostavlja se uvjet na grupu objekata.
Primjer 7.21U: Odrediti ukupnu duljinu filmova za svaki studio i svaku godinu, ali pod uvjetom da je studio te
godine producirao barem jedan film čija je duljina veća od 120 minuta.
OQL(U): Select s, g, sumduljina : Sum(Select p.f.duljina From partition p) From Filmovi f Group By s : f.vlasništvoOd , g : f.godina Having Max(Select p.f.duljina From partition p) > 120
156
Skupovni operatori
Union, Intersect, Except
Primjer 7.22U: Odrediti sve filmove u kojima glumi R. Bašić, a koji nisu vlasništvo studija Croatia.
OQL(U): (Select distinct f From Filmovi f , f.glumci g Where g.ime = “R. Bašić”) Except (Select Distinct f From Filmovi f Where f.vlasništvoOd.ime = “Croatia”)
• Definicije Union, Intersect, Except na multiskupovimaNeka su M1 i M2 multiskupovi u kojima se objekt o pojavljuje n1, n2 puta respektivno. Tada
• o ima n1 + n2 pojavljivanja u M1 Union M2;• o ima Min{n1, n2} pojavljivanja u M1 Intersect M2;
• o ima n1 – n2 > 0 pojavljivanja u M1 Except M2;ako n1 – n1 < 0, onda o nema pojavljivanja u M1 Except M2.
Pridruženje i kreiranje objekata u OQLu
U ovom odjeljku promatramo vezu OQLa i njegovog domaćinskog jezika. Pretpostavljamo da je domaćinski jezik C++. Varijable domaćinskog jezika zvat ćemo dvarijable.
Pridruženje vrijednosti dvarijablamaU principu moguće je pridružiti bilo kojoj dvarijabli, odgovarajućeg tipa, vrijednost koja je rezultat OQLizraza.
Primjer 7.23• Neka je Tip(noviFilmovi) = Set<filmovi>.
Izrazom noviFilmovi = Select Distinct f From Filmovi f Where f.godina >= 1950;
pridružili smo varijabli noviFilmovi skup svih filmova proizvedenih poslije 1950. godine.
157
• Neka je Tip(y) = Bag<Filmovi>.
Izraz noviFilmovi = Select Distinct f From Filmovi f Where f.godina >= 1950;
nije korektan (type error).
Izdvajanje elemenata kolekcije
Primjer 7.24(a) Neka je Tip(x) = Filmovi.
Izrazom x = Element(Select f From Filmovi f Where f.naslov = “ABC”;
pridružujemo varijabli film ABC .
(b) Izraz x = Select f From Filmovi f Where f.naslov = “ABC”;
nije korektan (type error).
Dobivanje svih elemenata kolekcije
Primjer 7.25• Dobiti listu svih filmova klase Film.
RješenjeNeka je Tip(flista) = List<Filmovi>. Izrazom flista = Select f From Filmovi f Order By f.naslov , f.godina;
pridružili smo listu filmova varijabli flista.
• Napisati C++ funkciju koja tiska naslov, godinu i duljinu svakog filma klase Film.
158
Rješenje(e1) flista = Select f From Filmovi f Order By f.naslov , f.godina;(e2) brojfilmova = Count(Filmovi);
(e3) for (i = 0 ; i < brojfilmova; i++) {
(e4) film = flista[i];
(e5) print << film.naslov << “” “” << film.godina <<
“” “” << film.duljina << “” /n “”;
}.
Kreiranje novih objekata
Primjenom OQLizraza kreirali smo nove objekte (rezultat) temeljem postojećih objekata. Objekte možemo kreirati i na eksplicitan način tako da postavljamo konstante i druge izraze u kolekcije i strukture.
Primjer 7.26
• Neka je Tip(x) = Struct(A : integer , B : integer)
Izrazom x = Struct(A : 3 , B : 5) kreiran je objekt
(slog) (A : 3, B : 5) i pridružen varijabli x .
• Neka je Tip(y) = Bag(T(x)).
Izrazom y = Bag(x, Struct(A : 0 , B : 1)) kreiran je
objekt (multiskup)
Bag(Struct(A : 3 , B : 5), Struct(A : 0 , B : 1)), koji
je pridružen varijabli y .
Primjer 7.27
Kreirajmo objekt (film) [“”A””, 1960, 220, Croatia], koji treba dodati klasi Film i pridružiti varijabli x .
159
Rješenje
Neka je Tip(x) = Film, Tip(y) = string, y = “”Croatia””.
Rješenje je dano izrazom
x = Film(naslov : “”A””, godina : 1960, duljina : 220,
vlasništvoOd : y)
160
ZADACI
1. Napišite sadržaj klasa objektno orijentirane baze podataka, koju smo razmatrali u primjerima iz odjeljka 6.3, OOBP : Film, Glumac, Studio .
2. Neka je OOBP iz zadatka 1. Napišite sadržaje odgovora na upite iz primjera 6.10, 6.11,.., 6.22.
3. Napišite niz upita koji su strukturalno slični upitima iz primjera 6.10, 6.11,.., 6.22, a zatim odredite sadržaje odgovora zadanih upita.
161
LITERATURA
[JDU] J. D. Ullman : Principles of Database and Knowledge Base Systems, vol. I, Computer Science Press, 88.
[GMUW] H. GarciaMolina, J. D. Ullman, J. Widom, Database Systems: The Complete Book, Prentice Hall, 2002.
[AHV] S. Abiteboul, R. Hull, V.Vianu: Foundations of Databases, AddisonWesley, 2002.
[ACPT] P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone: Database systems: Concepts, Language and Architectures, Mc Graw Hill, 1999.
[CJD] C. J. Date: An Introduction to Database Systems, AddisonWesley, 2004.
[DD] C. J. Date, H. Darwen: Foundation for Future Databases Systems: The Third Manifesto, AddisonWesley, 2000.
[DDL] C. J. Date, H. Darwen, N. A. Lorentzos: Temporal Data and the Relational Model, Morgan Kaufman, 2003.
[TC] R. A. MataToledo, P. K. Cushman: Fundamentals of Relational Databases, Schaum’s Outline Series, McGrawHill, 2000.
Izvori na internetu:
http://www.rational.com/uml , http://www.dbpd.com , http://www.BRCommunity.com , http://www.dbdebunk.com , http://www.multiagent.com
Časopisi
• Journal of the Association for Computing Machinery (ACM)[Database Theory, Deductive System, Artificial Intelligence, Logic in Computer Science, ...]
• ACM Transactions on Database Systems (TODS)
• Information Systems [Data Bases: Their Creation, Management, and Utilization ]
• The Journal of Logic Programming [Logic Programming, Deductive Databases, Reasoning, ..]
• Journal of Automated Reasoning [Automated Reasoning, Deductive Databases, Database theory,...]
162
• Data Mining and Knowledge Discovery [Data and Knowledge Representation, Data Modeling, Data Warehousing, OLAP,..]
• Journal of Intelligent Information Systems [Integrating Artificial Intelligence and Database Technologies]
163