Mirko Malekovic - Teorija Baza Podataka Skripta

February 7, 2017 | Author: MiroslavMesarov | Category: N/A
Share Embed Donate


Short Description

Download Mirko Malekovic - Teorija Baza Podataka Skripta...

Description

SVEUČILIŠTE U ZAGREBU FAKULTET ORGANIZACIJE I INFORMATIKE

Dr. sc. Mirko Maleković redoviti profesor

TEORIJA BAZA PODATAKA ­ skripta ­

Varaždin, listopad 2008.

SADRŽAJ 1. SIMBOLIČKA (MATEMATIČKA) LOGIKA......................................................................................1 1.1. PROPOZICIJSKA LOGIKA..........................................................................................................1 1.2. LOGIKA PRVOG REDA...............................................................................................................9 1.3. O LOGIČKOM REZONIRANJU.................................................................................................14 2. RELACIJSKE BAZE PODATAKA.....................................................................................................16 2.1.  RELACIJSKA ALGEBRA..........................................................................................................18 2.2. ZAVISNOSTI U RELACIJSKIM BAZAMA PODATAKA........................................................27 2.3. FORMALNI SUSTAVI................................................................................................................34 2.4. IMPLIKACIJSKI PROBLEM......................................................................................................40 2.5. NORMALNE FORME.................................................................................................................50 3. PARCIJALNA INFORMACIJA...........................................................................................................61 3.1. UVOD...........................................................................................................................................61 2.2. PARCIJALNA RELACIJA...........................................................................................................62 3.3. RELACIJSKI OPERATORI ZA PARCIJALNE RELACIJE.......................................................67 2.4. TIPOVI LOGIČKIH POSLJEDICA............................................................................................70 4. TEMPORALNE BAZE PODATAKA.................................................................................................73 4.1. UVOD...........................................................................................................................................73 4.2. TEMPORALNE RELACIJE........................................................................................................73 4.3. RELACIJSKI OPERATORI ZA TEMPORALNE RELACIJE...................................................75 5. DEDUKTIVNE BAZE PODATAKA..................................................................................................83 5.1. UVOD...........................................................................................................................................83 5.2. SINTAKSA I SEMANTIKA DEDUKTIVNE BAZE PODATAKA...........................................85 5.3. DATALOG....................................................................................................................................91 4.4. RAČUNANJE PRAVILA.............................................................................................................96 4.5  PROŠIRENJA DATALOGA......................................................................................................105 6. POOPĆENE RELACIJSKE BAZE PODATAKA  (PORBP)............................................................123 6.1. UVOD.........................................................................................................................................123 6.2. PARTICIJSKA NORMALNA FORMA (PNF).........................................................................125 6.3. RELACIJSKI OPERATORI ZA PONF RELACIJE..................................................................126 7. OBJEKTNO ORIJENTIRANE BAZE PODATAKA.........................................................................136 7.1. UVOD..........................................................................................................................................136 7.2. ODL............................................................................................................................................143 7.3. OQL............................................................................................................................................151 LITERATURA.......................................................................................................................................162

1. SIMBOLIČKA (MATEMATIČKA) LOGIKA Simboličku logiku koristimo kao formalni alat za simboliziranje rezoniranja u raznim problemskim ili  aplikacijskim domenama. (A)  PROPOZICIJSKA LOGIKA  (PL) (B)  LOGIKA PRVOG REDA (PREDIKATSKA LOGIKA)    (LPR)

1.1. PROPOZICIJSKA LOGIKA Temeljni element propozicijske logike je propozicija. Propozicija je deklarativna rečenica koja je istinita ili neistinita (ali ne oboje, tj. propozicija ne može  biti istovremeno istinita i neistinita). Pr.  Zadane su rečenice R1:  Zagreb je glavni grad Hrvatske. R2:  Split je glavni grad Hrvatske. R3:  X  je glavni grad Hrvatske. R1  je istinita propozicija;  R2  je neistinita ili lažna propozicija;  R3  nije propozicija, jer bez  konkretizacije varijable  X  ne možemo odrediti istinosnu vrijednost od  R3. Propozicije ćemo označavati slovima  P, Q, R, S  uz moguće indeksiranje. Pomoću propozicija iskazujemo činjenice (svojstva) problemske domene. Zato ćemo propozicije  imenovati i drugim simbolima osim prije spomenitih. FORMULA Koristeći propozicije i logičke veznike: ¬ (negacija), ∧ (konjunkcija),  ∨ (disjunkcija),  ⇒ (implikacija)  i ⇔ (ekvivalencija)  gradimo izraze koji se nazivaju formule. Formule ćemo označavati slovima  F, G, H  uz moguće indeksiranje. Formule se definiraju rekurzivno kao što slijedi: (a)  Svaka propozicija je formula. (b)  (¬F), (F ∧ G), (F ∨ G), (F ⇒ G), i  (F ⇔ G)  su         formule ako su  F  i  G  formule. (c)  Formule se grade jedino konačnim brojem primjena pravila (a)  i  (b)  . Pr.  Izraz  F:  ((P ∨ Q) ⇒ R)  je formula;          Izraz  G:  P ¬ Q  nije formula.

1

Konvencija o ispuštanju zagrada: 1.  Formulu  (F # G)  pišemo bez (vanjskih) zagrada;      Ovdje je  #  bilo koji logički veznik. 2.  Koristimo jačinu vezanja logičkih veznika:       ¬ ,  ∧ ,  ∨ ,  ⇒ ,  ⇔      U navedenom nizu jače veže onaj veznik koji je       više lijevo. Pr.  F:  (( P ∨ Q) ⇒ R)  možemo pisati u obliku        F:  P ∨ Q ⇒ R ;        G:  ((¬P) ∧ (R ∨ S))  možemo pisati u obliku        G:  ¬P ∧ (R ∨ S) Prije navedenim pravilima definirali smo sintaksu propozicijske logike, tj. rekli smo kako se grade  formule u PL.  Značenje formula, tj. semantika formula, je postupak odreðivanja istinosne vrijednosti formula.  Sa  PR[F]  označavamo skup svih propozicija od kojih je izgraðena formula F . INTERPRETACIJA FORMULE Interpretacija formule  F  je preslikavanje I:  PR[F]  →  {0, 1} Pr.  F = P ∧ ¬ R Jedna interpretacija od  F  je    I:  P   R                                                      ====                                                       1   0  Iz tablice čitamo:  I(P) = 1 ,  I(R) = 0 . Kažemo da je  P  u interpretaciji  I  istinito (P u  I  vrijedi), a  R  je u  I  neistinito (R  u  I  ne vrijedi). U zadavanju interpretacije korist se i simboli  F, T  umjesto  0, 1  respektivno. Tvrdnja (propozicija) Neka je broj elemenata u skupu  PR[F],   PR[F]  ,jednak  k .  Tada formula  F  ima  2k  različitih  interpretacija. SEMANTIČKA PRAVILA Semantička pravila za negaciju definiramo tablicom:

2

   F     ¬F    ======                 Ako  je  I(F) = 0, onda je  I(¬F) = 1    0        1                  Ako je  I(F) = 1, onda je  I(¬F) = 0    1        0  Semantička pravila za  ∨, ∧, ⇒, i ⇔  dana su u tablici:    F  G     F ∨ G       F ∧ G     F ⇒G     F ⇔ G    0   0         0               0             1              1    0   1         1               0             1              0    1   0         1               0             0              0    1   1         1               1             1              1       Iz tablice čitamo: F ∨ G  vrijedi u  I  ako barem jedna od formula  F, G vrijedi u  I;  F ∨ G  ne vrijedi u  I  ako obe formule F, G  ne vrijede u  I . F ∧ G  vrijedi u  I  ako obe formule F, G  vrijede u  I; F ∧ G  ne vrijedi u  I  ako barem jedna od formula  F, G  ne vrijedi u  I . Implikacija  F ⇒ G  vrijedi u  I  u svim slučajevima osim kada  F  vrijedi u  I   i   G  ne vrijedi u  I . Ekvivalencija  F ⇔ G  vrijedi u  I  samo onda kada  F  i  G  imaju istu istinosnu vrijednost u  I . Pr.  F = P ∨ Q ⇒ R ,   I:    P  Q  R      I1:  P  R                                          ======      ======                                           1   1   0             1  1 Odrediti  I(F),  I1(F). I(F):  1 ∨ 1 ⇒ 0 = 1 ⇒ 0 = 0  ; prema tome, I(F) = 0, tj., F u interpretaciji  I  ne vrijedi. I1(F)  nije definirano, jer  I1  nije interpretacija za F. Kada je  I(F) = 1, onda kažemo da je  F  istinito u  I  ili  da  F  vrijedi u  I; Kada je  I(F) = 0, onda kažemo da je  F  neistinito u  I  ili da  F  ne vrijedi u  I. Istinosna tablica od  F  sadrži vrijednosti formule F  u svakoj njenoj interpretaciji.  Pr.  F = ¬ P ∧ Q                 P  Q     ¬P      F                                            ============                                             0   0        1      0                                             0   1        1      1                                             1   0        0      0                                             1   1        0      0

3

TAUTOLOGIJA Formula  F  je tautologija ili validna formula ako  F  vrijedi u svakoj svojoj interpretaciji, tj. I(F) = 1  za svaku interpretaciju  I  od  F. Pr.  F = P ∨ ¬ P  je tautologija. KONTRADIKCIJA Formula  F  je kontradikcija ako  F  ne vrijedi u svakoj svojoj interpretaciji, tj. I(F) = 0   za svaku interpretaciju  I  od  F. Pr.  G = P ∧ ¬ P   je kontradikcija. Sa  F = ⊤   označavamo da je  F  tautologija; Sa  F = ⊥  označavamo da je  F  kontradikcija. Interpretacija niza formula  F1, .., Fn  je preslikavanje  I:  PR[F1] ∪ .. ∪ PR[Fn]  → {0, 1} I(Fi)  računamo tako da u formulu  Fi  uvrstimo vrijednosti propozicija iz  Fi  koje su definirane  interpretacijom  I. Interpretacija  I  formule  F  je model za F  ako  F  vrijedi u  I. Interpretacija  I  niza formula  F1,.., Fn  je model danog niza formula ako svaka od formula F1,.., Fn  vrijedi u I. Za niz formula  F1,.., Fn  kažemo da je konzistentan ako ima model; u protivnome, kažemo da je dani  niz kontradiktoran. Pr.  Ispitati konzistentnost formula  F = P ⇒ Q ,        G = ¬ Q Ispitujemo da li niz  F, G  ima model. LOGIČKA POSLJEDICA Za formulu  G  kažemo da je posljedica formula  F1,.., Fn  ako za svaku interpretaciju  I  formula F1,.., Fn, G  vrijedi: Ako je  I  model za  F1,.., Fn ,  onda je  I  model i za G Notacija:   F1,.., Fn   G Da  G  nije logička posljedica od  F1,.., Fn  pišemo ovako:   F1,.., Fn    G Pr.  Ispitati da li vrijedi    ¬(P ∨ Q)    ¬P ∧ ¬Q .

4

Propozicija F1,.., Fn     G   ako i samo ako je formula                          H = (F1 ∧ .. ∧ Fn) ⇒ G   tautologija. (SEMANTIČKA) JEDNAKOST FORMULA Formule  F  i  G  su jednake ako vrijedi F   G   i   G  F ;   Pišemo  F = G . Napomena:  Jednakost  F = G  znači jednakost pripadnih istinosnih tablica.

5

KATALOG  PL Za bilo koje formule  F, G, H  vrijedi: 1.  F = F      refleksija 2.  F ∨ G = G ∨ F;   F ∧ G = G ∧ F      komutacija 3.  (F $ G) $ H = F $ (G $ H)    asocijacija za                                               $ ∈ {∨, ∧, ⇔} 4.  F ∨ (G ∧ H) = (F ∨ G) ∧ (F ∨ H)   distribucija      F ∧ (G ∨ H) = (F ∧ G) ∨ (F ∧ H)   6. ¬(¬F) = F           ¬(F ∨ G) = ¬F ∧ ¬G           ¬(F ∧ G) = ¬F ∨ ¬G          ¬(F ⇒ G = F ∧ ¬G 6.  F ⇒ G = ¬F ∨ G                              F ⇔ G  = (F ⇒ G) ∧ (G ⇒ F)          7.  F ⇒ G = ¬G ⇒ ¬F       kontrapozicija 8.    Jednakosti sa  ⊥  i  ⊤          ¬⊥ = ⊤      ¬⊤ = ⊥    F ∨ ⊥ = F    F ∨ ⊤  = ⊤        F ∧ ⊥ = ⊥    F ∧ ⊤  = F                     F ∨ ¬F = ⊤      F ∧ ¬ F = ⊥

6

ZADACI 1.  F = (P ∨ Q) ∧ P ⇒ R      Napišite interpretaciju  I  za  F , a zatim odredite      I(F). 2.  Napišite istinosnu tablicu za  F (iz  1.) . 3.  Ispitajte da li je formula F = P ⇒ (¬P)  tautolo­      gija. 4.  Da li je  G = ¬(P ∨ Q) ⇒ Q   kontradikcija? 5.  Riješite implikacijski problem      P ⇒ R, P ⇒ ¬R       ¬P    6.  Dokažite jednakost   ¬(P ∧ R) = ¬P ∨ ¬R   7.  Dokažite    ¬(F ⇒ G) = F ∧ ¬G 8.  Literal je izraz oblika  F  ili  ¬F, gdje je F        propozicijski simbol; Klauzula je disjunkcija      literala. Napišite nekoliko klauzula. 9. Dokažite   P ∨ M, ¬P ∨ N   M ∨ N    (rezolucijski   princip) 10.  Konjukcija klauzula je konjunktivna normalna        forma. KNF[F]  je konjunktivna normalna forma        od  F. Odredite  KNF[G]  ako je  G = P ∧ Q ⇒ R. 11.  Osoba  A  nudi osobi  B  nagrade  n1  i  n2  uz         sljedeći uvjet U:  Osoba  B  treba reći  izjavu  F. Ako  F  vrijedi, onda  B  dobiva  n1  ili  n2; Ako  F  ne vrijedi, onda  B  ne dobiva niti jednu nagradu. Koju izjavu  F  treba reći  B  da bi dobio  n1? Rj.  N1:  Dobit ću  n1;  N2:  Dobit ću  n2. F = ¬N2  ,  tj.  neću dobiti  n2. 12.  Ponuda A:        Reći P;        Ako  P = 1, onda dobivate  100Kn        Ako  P = 0, onda dobivate  S Kn,  S ≠  100        Ponuda  B:        Reći  P;        Bez obzira na istinitost od  P, dobivate  S Kn,  S >100        Koja je ponuda bolja? Rj.  Ponuda  A  osigurava proizvoljan dobitak        D Kn.        P = Neću dobiti 100 Kn i neću dobiti  D Kn.

7

 13.  Svaki stanovnik države  X  je sretan (uvijek govori istinu)  ili nesretan (uvijek govori neistinu),          ali ne oboje. Psiholog  Ps  testira bračni par         (B1, B2)  tako da pita osobu B1 o stanju para.         Osoba  B1  je odgovorila:         Ako sam ja sretan, onda je  B2  sretan.         Ps  je na osnovi odgovora osobe  B1  točno zaklj­         učio o stanju osoba  B1  i  B2. Objasnite rješenje 

 

8

1.2. LOGIKA PRVOG REDA Logika prvog reda ili predikatna logika proširuje propozicijsku logiku omogućujući iskaze o svojstvima  objekata ili relacijama izmeðu objekata. SINTAKSA Formule LPR  grade se od sljedćih simbola Konstante:  a, b, c, a1,... Varijable:  x, y, z, x1,... Funkcije:  f, g, h, f1,... Predikati (relacije):  P, Q, R, P1,... Kvantifikatori:  ∃  ,  ∀ Term Konstante i varijable su termi; f(t1,.., tk)   je term ako su  t1,.., tk  termi i   f  je funkcija od  k  argumenata. Termi označavaju objekte, a predikati su relacije nad objektima. Atomska formula Izraz  P(t1,.., tm)  je atomska formula ako su  t1,.., tm termi i  P  je predikat od  m  argumenata. Pr.  R(a, g(y), z)   je  atomska formula. Koristeći atomske formule i logičke veznike  ¬, ∧, ∨, ⇒, ⇔, te kvantifikatore  ∃ , ∀  gradimo formule: 1.  Svaka atomska formula je formula. 2.  ¬F, F ∧ G, F ∨ G, F ⇒ G, F ⇔ G  su formule ako          F  i  G  formule. 3.  ∃ x(F) ,  ∀x(F)  su formule ako je  F  formula  i  x         varijabla. Kažemo da je F i sva pojavljivanja varijable x  u  F  pod djelovanjem navedenih kvantifikatora ∃ x i ∀x . Zagradama naznačujemo prioritet operacija. ZATVORENA FORMULA Formula  F  je zatvorena ako su sva pojavljivanja varijabli u  F  pod djelovanjem nekog od  kvantifikatora. Pr.  F = ∀x(P(x, a) ∧ ∃ y(R(f(y)))  je zatvorena         G = ∀x(P(x, a)) ∨ R(b, f(x)  nije zatvorena.         G  je otvorena formula. U daljem pretpostavljamo da je riječ o zatvorenim formulama. 9

SLOBODNI SIMBOLI Konstante, funkcije i predikate od kojih je  F  izgraðeno zovemo slobodnim simbolima od  F. INTERPRETACIJA FORMULE Interpretirati formulu znači dati značenje njenih slobodnih simbola na nepraznoj domeni objekata D. Pr.  F = ∃ y(R(a, f(y)) I:  D = {3, 5},  a = 5,                        f:D → D             T     3     5                                                                                    =========                                                                                       f(T)   5     5      R:  D ×  D  →  {0, 1}      (U, V)     (3, 3)   (3, 5)  (5, 3)  (5, 5)      ==========================      R(U, V)      0          1        0         1  Predikat (relaciju)  kraće pišemo u obliku R( U   V ) ========      3    5              Napisali smo u relaciji  R  samo one      5    5              parove  (U, V)  za koje  R  vrijedi. Procijenimo  F  u  I, tj. izračunajmo  I(F): Formulom  F  se tvrdi da postoji  y  u  D  tako da  R(a, f(y))  vrijedi  za dani  a  i  f . y = 3 :  I(F) = R(5, f(3)) = R(5, 5) = 1 Kako za  y = 3  R(5, f(y))  vrijedi, imamo  I(F) = 1. Prema tome, F vrijedi u interpretaciji  I .

SEMANTIČKA PRAVILA Formulu  F  procijenjujemo u njenoj interpretaciji  I  pomoću pravila: (S1)  Neka  F  nema varijabli i kvantifikatora.          I(F)  računamo tako da u F  uvrstimo vrijed­          nosti konstanti, funkcija i predikata zadanih          u  I. (S2)  Ako  je  F = ∀xG,  onda je  I(F) = 1  ako je I(G) = 1  za svaki  x ∈ D;          U protivnome, tj. ako je  I(G) = 0  za neki x ∈ D ,  onda je i  I(F) = 0:          Ako je  F = ∃ xG,  onda je  I(F) = 1 ako je I(G) = 1  za neki  x ∈ D;          U protivnome, tj. ako je  I(G) = 0  za svaki x ∈ D, onda je I(F) = 0. 10

U oba slučaja, I(G)  za  x = d  računamo tako da svako pojavljivanje  x  u  G  zamjenjujemo sa  d, a  konstante, funkcije, i predikate iz  G  zamjenjujemo vrijednostima danim u  I . Pr.  F = ∃ x(P(x, a)) ∧ ∀y(P(b, f(y)) I:  D = {2, 3},  a = 2,  b = 3, f: D  →  D          T    2     3                         =========                          f(T)  2     2 P: D ×  D  →  {0, 1}                  P ( U    V )                                                   ========                                                         2     2                                                         3     2 Računamo  I(F): Neka je  H = ∃ xP(x, a) prva, a  H1 = ∀yP(b, f(y)) druga komponenta konjunkcije  F.  Računamo I(H)  i  I(H1), te  I(F) = I(H) ∧ I(H1). Pojmovi:  tautologija, kontradikcija, logička posljedica, jednakost formula  definiraju se na isti način  kao u PL. Umjesto  K1(K2(F))  pisat ćemo kraće  K1K2(F), gdje su  K1  i  K2  kvantifikatori.

11

KATALOG  LPR Za bilo koje formule  F  i  G  vrijedi: 1. ∀x∀y(F) = ∀y∀x(F),   ∃ x∃ y(F) = ∃ y∃ x(F) 2. ¬(∀x(F)) = ∃ x(¬(F)),  ¬(∃ x(F)) = ∀x(¬(F)) 3. ∀x(F ∧ G) = ∀x(F) ∧ ∀x(G) 4. ∃ x(F ∨ G) = ∃ x(F) ∨ ∃ x(G) Postoje formula  F  za koju vrijedi 5. ∀x∃ y(F) ≠  ∃ y∀x(F) Postoje formule  F  i  G  za koje vrijedi 6. ∀x(F ∨ G) ≠  ∀x(F) ∨ ∀x(G) Postoje formule  F  i  G  za koje vrijedi 7. ∃ x(F ∧ G) ≠  ∃ x(F) ∧ ∃ x(G) KVANTIFIKATORI OGRANIČENOG OPSEGA (∀x∈D) (F) = ∀x(x ∈ D ⇒ F) Formula  (∀x∈D) (F)  vrijedi u interpretaciji  I  ako je  I(F) = 1  za svaki  x  iz  D. (∃ x∈D) (F) = ∃ x(x ∈ D  ∧ F) Formula  (∃ x∈D)(F)  vrijedi u interpretaciji  I  ako I(F) = 1  za neki  x  iz  D. Katalog  LPR  ostaje na znazi ako  ∀x  i  ∃ x  zamijenimo sa  (∀x∈S)  i  (∃ x∈S).

12

ZADACI 1.  F = ∀x[P(a, x) ∧ R(x, f(x))]      Napišite  I  za  F, a zatim odredite  I(F). 2.  Da li vrijedi  ∀x(F)    ∃ x(F) ? 3.  Da li vrijedi  (∀x∈S)(F)   (∃ x∈S)(F) ? 4.  Negirajte formulu        F = ∀x∃ y(P(y) ∧ R(x) ⇒ P1(x)) 5.  Napišite formulu LPR koja je tautologija;      Napišite formulu  LPR  koja je kontradikcija. 6.  Da li vrijedi  ∃ x∀y(F)   ∀y∃ x(F) ?  7.  Reèenicu  R1:  Za svaki prirodan broj, osim       jedinice, postoji manji prorodan broj,  izrazite      pomoću formule LPR. 8.  Rečenici  R2:  Sve zavisnosti iz skupa  S  su       trivijalne,  izrazite pomoću  LPR­formule. 9.  Rečenicu R3:  Postoji zavisnost u skupu  S  koja       nije tranzitivna,  izrazite pomoću  LPR­formule. 10.  Koliko interpretacija ima formula F = ∀x(P(x))?  

13

1.3. O LOGIČKOM REZONIRANJU 1. Monotonost logike Ako    F1, F2,.., F4   ,  tada        F1, F2,.., Fk, H                      G                                         G 2. Logika nemonotonog rezoniranja Ne mora vrijediti  monotonost iz  1. (Uvode se odgovarajuća pravila dedukcije) Difoltna logika (default logic)  DL Pravilo:         F :  G               Ako F i ako je konzisten­                                                tno pretpostaviti G, onda                         H                   vrijedi H .      Pr. F1:   Ptica(Ari) F2:   ∀x[Ptica(x)   ⇒  Leti(x)] G:  Leti(Ari) Imamo     F1, F2 : G                          G Proširimo  F1, F2  sa  F3:  Pingvin(Ari) Shema    F1, F2, F3  : G             nije primjenjiva!                         G Prema tome,  G  slijedi iz  F1, F2 ,  a ne slijedi iz F1, F2, F3 .

14

Abdukcija (forma  default rezoniranja)    F  ⇒  G,  G   :  F                 F Pr. R1:   Ako je pacijent uplašen, onda je njgov tlak             visok. R2:   Tlak pacijenta je visok. Zaključak:   Pacijent je uplašen.

 

Navedeni zaključak može biti pogrešan.

15

2. RELACIJSKE BAZE PODATAKA U ovom odjeljku karakteriziramo pojmove baze podataka (Data Base) i sustava za upravljanje bazom  podataka (Database Management System). Po potrebi koristit ćemo sljedeće kratice: Baza   podataka   (BP),   Sustav   za   upravljanje   bazom   podataka   (SUBP).   Neformalno,   bazu   podataka  možemo karakterizirati na sljedeći način. •

Baza   podataka  je   kolekcija   podataka,   ograničenja   i   operacija   koja   reprezentira   neke   aspekte  realnog svijeta .

Modeliranjem aplikacijske domene AD dolazimo do baze podataka BP. Prema tome, BP je model za  AD.                          AD                                                                               BP    

modeliranje

Svaka baza podataka temelji se na odgovarajućem modelu podataka. Tako imamo hijerarhijske baze  podataka   (temeljene   na   hijerarhijskom   modelu   podataka),   mrežne   baze   podataka   (temeljene   na  mrežnom   modelu   podataka,   relacijske   baze   podataka   (temeljene   na   relacijskom   modelu   podataka),  deduktivne   baze   podataka   (temeljene   na   deduktivnom   modelu   podata),   temporalne   baze   podataka  (temeljene   na   temporalnom   modelu   podataka),   objektno/relacijske   baze   podataka   (temeljene   na  poopćenom   relacijskom   modelu   podataka)   i   objektno   orijentirane   baze   podataka   (temeljene   na  objektnom modelu podataka). U ovom prvom poglavlju opisujemo teoriju relacijskih baza podataka.  Dva su razloga za to. Prvo, relacijske baze podataka su najzastupljenije baze podataka u komercijalnom  smislu.   Drugo,   one   su   osnova   za   izgradnju   naprednijih   baza   podataka   (deduktivne   baze   podataka,  temporalne   baze   podataka,   objektno/orijentirane   baze   podataka).   Za   kreiranje   (ostvarenje)   baze  podataka koristi se poseban softver tzv. sustav za upravljanje bazom podataka (Access, Oracle, DB2,..).  Sustav za upravljanje relacijskom bazom podataka nazivamo, kraće, relacijskim sustavom. Analogno  vrijedi za ostale sustave. Dakle, na primjer,  objektno/relacijski sustav je sustav za upravljanje objektno/ relacijskom bazom podataka.

16

MODEL PODATAKA Svaki model podataka, MP, sastoji se od tri komponente, tj., MP = (S, UI, O), gdje je S  strukturalna  komponenta (kaže u kojem obliku su prikazani podaci), UI  je integritetna komponenta (ograničenja na  dozvoljena stanja strukture) i  O  je operativna komponenta (operacije nad strukturama). Za relacijski  model podataka, RMP, imamo sljedeće: S   je skup relacija (tablica), UI je skup ograničenja stanja  relacija i   O   je skup relacijskih operatora. Već smo istakli da se relacijske baze podataka temelje na  relacijskom modelu podataka. To znači da će podaci u relacijskoj bazi podataka biti prikazani u obliku  relacija (tablica) dok će uvjeti integriteta  UI  predstavljati ograničenja koja trebaju biti zadovoljena u  relacijama da bi se dana baza podataka mogla smatrati valjanom. U daljnjem izlaganju, prvo ćemo  opisati   strukturalnu   komponentu   relacijskog  modela   (pojam   relacije),   zatim   ćemo  opisati   relacijsku  algebra   (relacijske   operatore),   a   onda   ćemo   razmotriti   zavisnosti   u   relacijskim   bazama   podataka  (specijalna klasa uvjeta integriteta). Pravila rezoniranja o zavisnostima u relacijskim bazama podataka i  primjena zavisnosti u oblikovanju sheme relacijske baze podataka bit će dana u preostalim odjeljcima  ovog poglavlja.U području baza podataka postoje terminološke razlike između teorije baza podataka i  njene primjene (sustavi za upravljanje bazom podataka). Veza između pojmova je kao što slijedi: veza (    Teorija                        Primjena  ) ===============================              relacija                        tablica              slog                             red              atribut                         stupac

Prema tome, umjesto relacija možemo reći tablica, umjesto sloga  red, te umjesto atribut možemo reći  stupac. Iako će kasnija razmatranja pokazati da je relaciju moguće prikazati na više tabličnih načina, mi  ćemo   relaciju   identificirati   s   tablicom   (zapisom)   kojom   smo   zadali   danu   relaciju.   U   daljnjem  razmatranju koristit ćemo, ovisno o kontekstu,  prvi ili drugi tip naziva.

17

2.1.  RELACIJSKA ALGEBRA •

Relacijska algebra sastoji se od temeljnih relacijskih operatora: unija  ∪  , razlika   − , selekcija  σ  ,  projekcija  Π  , preimenovanje  δ  , prirodno spoj  ∞   i izvedenih (deriviranih) operatoratora, koji  se definiraju primjenom nekih od temeljnih operatora. 

U daljnjem, indekse ćemo pisati u nespuštenom obliku; dakle, primjerice umjesto  Ai   pisat ćemo  Ai. Relacija Konačan, neprazan skup atributa, R = {A1,.., Ak},  nazivamo relacijskom shemom. Neka je  D = D1 ∪ D2 ∪..∪ Dk, gdje je Dom(Ai) = Di  za  i = 1,.., k . Slog nad  R  je funkcija   t : R → D , gdje je  t(Ai) ∈ Di ,  i = 1,.., k . Relacija nad  R  je konačan skup slogova nad  R . Notacija  r(R)  znači da je  r  relacija nad relacijskom shemom R . Kažemo još da je shema relacije r  jednaka  R i pišemo  sh(r) = R.

Neka je zadana relacija  r  nad  R , r = {t1,.., tm} , gdje je slog  ti  zadan tablično x        A1  A2 .. Ak ==============  ,   i = 1,.., k . ti(x)   ai1   ai2 .. aik Kraći zapisi sloga ti su:       ti        A1  A2 .. Ak                                                        ==============                                                        ai1   ai2 .. aik ili samo  ti (ai1, ai2,.., aik)  kada je iz konteksta jasno što znači svaka komponenta sloga (za svaku od  komponenti sloga zna se atrubut čija vrijednost je dana komponenta). Relaciju  r  reprezentiramo u obliku tablice r (A1    A2 . . Ak) ============    a11  a12 .. a1k    a21  a22 .. a2k    ......................    am1 am2 .. amk

18

Ako je  r1  prazna relacija nad  R , onda je pripadna tablica oblika r1 (A1   A2 .. Ak) =============             ∅ Primjer 2.1 Neka je zadana relacija   dozvola = {t1, t2, t3, t4}, gdje su slogovi   t1, t2, t3 i t4   definirani kao što  slijedi. R = {Pilot#, Tip­aviona},  D1 = dom(Pilot#) = varchar(2),  D2 = dom(Tip­aviona) = int,  D = D1 ∪ D2 t1: R → D     x       Pilot#   Tip­aviona                      ================                      t1(x)   P1           707           t2: R → D     x       Pilot#   Tip­aviona                      ================                      t2(x)   P2           707  t3: R → D     x       Pilot#   Tip­aviona                      ================                      t3(x)   P2           747 t4: R → D     x       Pilot#   Tip­aviona                      ================                      t4(x)   P3           727  Relaciju dozvola predstavljamo u obliku tablice dozvola(Pilot#   Tip­aviona)                                 ===================                                           P1             707                                                     P2             707                                                     .                P2             747                P3             727  Prema tome, ime relacije postaje ime tablice, relacijska shema je dana u zaglavlju tablice, a slogovi su  predstavljeni   redovima   tablice.   Činjenicu   da   je   red     (P1,   707)   u   tablici   dozvola   pišemo   ovako  dozvola(P1, 707). Općenito, ako je red  t = (x1, x2,.., xn)  u tablici  r, onda to naznačujemo zapisom  r(x1, x2, .., xn). U daljnjem ćemo relaciju zadavati tablično, a domene atributa ćemo navoditi samo u slučaju kada je  razmatranje domenski ovisno. Također, kada semantika relacije nije jasna iz njenog tabličnog prikaza,  upotrijebit ćemo dodatni komentar za njenu potpunu karakterizaciju. 19

Primjer 2.2 Neka je zadana relacija dozvola iz prošlog primjera. dozvola(Pilot#   Tip­aviona)                                 ===================                                           P1             707                                                     P2             707                                                     .                P2             747                P3             727  Možemo   se   upitati   o   semantici   relacije   dozvola,   tj.,   možemo   postaviti   pitanje   koja   je   informacija  tabelirana u tablici dozvola. Semantika je sljedeća. Semantika (relacije dozvola) dozvola(x, y)  znači da pilot x ima dozvolu za tip aviona y. Prema tome, zadnji red u tablici dozvola nam kaže da vrijedi  dozvola(P3, 727), a to znači da  pilot P3  ima dozvolu za tip aviona 727.   U daljnjem pisanju koristit ćemo sljedeće oznake.                 •

Oznake

Atributi :  A, B, C, D, E, F, A1, B1,... Skupovi atributa :  X, Y, Z, R, S, X1, Y1,.. Relacije :  r, s, r1, s1,.. Slogovi :  t, u, v, t1, u1,.. Kratice: {A1, A2,.., Ak} = A1, A2,.., Ak = A1 A2..Ak . X ∪ Y = XY . •

Jednakost relacija

Relacije   r(R)  i  s(S)  su jednake ako vrijedi: (1)  R = S, tj. sh(r) = sh(s) (2) r  i  s   se sastoje od istih slogova . (3)

20

Primjer 2.3 Neka su zadane relacije         r(A   B)          r1(A     B)           r2 (B   A)         ======        ========          =======            1    2                 2     2                   2    2            2    2                 1     2                   2    1 Vrijedi:   r =  r1 = r2 , jer je ispunjeno: (1)  sh(r) = sh(r1) = sh(r2)  i (2)  relacije r, r1 i r2 imaju iste slogove . Iz Primjera 1.3  vidimo da kod tabličnog predstavljanja (zadavanja) relacije poredak atributa u zaglavlju  tablice i poredak redova u tablici nisu bitni. Dakle, sve tablice koje imaju isto zaglavlje i iste redove  predstavljaju   istu   relaciju.   Također,   budući   je   relacija   skup   (nema   ponavljanja   elemenata   skupa),  pripadna tablica ne sadrži ponavljanje redova. Primjer 2.4    r(A   B   C)                       s(A   B)         ========                   ======                ∅                                ∅ Za relacije  r  i  s  vrijedi   r ≠  s, jer relacije r  i  s  nemaju iste sheme . •

Restrikcija sloga

Neka je  X ⊆ R ;   t[X]  je restrikcija sloga  t  na skup atributa  X . Primjer 2.5          r(A   B   C)                                                        =========                                                                            1   0    0                           1   0    1               Ako sa  t1  označimo prvi slog (red) u  relaciji  r, onda je restrikcija od  t1  na atribute BC dana sa      x                B     C      ==============     t1[B, C](x)  0     0    Dalje, za slogove  t1  i  t2  iz relacije  r  vrijedi       t1[A, B] = t2[A, B] . 21

Propozicija (jednakost slogova na praznom skupu atributa) Za bilo koje slogove ti, tj nad relacijskom shemom R vrijedi   ti[∅] = tj[∅] .



Relacijski operatori :  ∪  , ∩  , −

Slijede definicije relacijskih operatora operatora  ∪  , ∩  , −  .    Neka su zadane relacije  r(R) , s(R) .       r ∪ s (R),  r ∪ s = {t nad R  t ∈ r ili t   ∈ s }      r ∩ s (R),  r ∩ s = {t  nad R   t ∈ r  i  t ∈ s }      r − s (R),  r − s = {t  nad R   t ∈ r  i  t ∉ s } •

Projekcija

    Za relaciju  r(R)  i  X ⊆ R , X ≠  ∅  imamo:     Π [X](r) (X),  Π [X](r) = {t[X]   t ∈ r }     Umjesto  Π [X](r)  možemo pisati Π X(r). Prema tome, projekciju relacije r  na skup atributa X, u oznaci Π [X](r), dobijemo tako da odredimo  skup koji se sastoji od  restrikcija svih slogova iz  r  na skup atributa X. Primjer 2.6 Neka je zadana relacija r( A  B  C ) ========     1   2   3     2   2   3     3   1   2 Tada je   Π [BC](r) ( B  C )                ============                                 2   3                                 1   2

22

• Selekcija    Za relaciju  r(R)  i  uvjet (formulu)  F,  selekcija relacije  r  po uvjetu  F  je    relacija nad R  koja se  sastoji od svih slogova iz  r  koji zadovoljavaju  F.      σ [F](r) (R),  σ [F](r) = {t ∈ r   F(t) = T};  sa  F(t) = T  naznačili smo da slog  t  zadovoljava   uvjet  F, tj., F(t)  vrijedi. Sa  F(t) = ⊥ označavamo da slog  t  ne zadovoljava uvjet F.    Slično kao kod projekcije, umjesto  σ [F](r)  možemo pisati σ F(r).      Neka je Atr(F) skup svih atributa od kojih je izgrađena formula F. Kažemo da je F primjenjivo na  relaciju  r(R)  ako je Atr(F) ⊆ R .    U slučaju kada F nije primjenjivo na r(R), onda σ [F](r) nije definirano.



Formula  je definirana rekurzivno :

(1)   Atom je izraz oblika  At  op  k , k  op  At , At  op  Bt ,  gdje su   At  i  Bt  bilo koji atributi i  op ∈ {= ,  , ≤  , ≥  , ≠  }  je aritmetički operator .        Svaki atom je formula .  (2)   Formula je svaki izraz oblika  ¬F , F ∨ G, F ∧ G ,  F ⇒ G , F ⇔ G,         gdje su  F  i  G  formule . Primjer 2.7 Neka su zadani relacija dozvola i upit U: dozvola(Pilot#   Tip­aviona)                                 ===================                                           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: Tip­aviona = 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,  σ [Tip­aviona = 747](dozvola) (Pilot#  Tip­aviona)           ===================================                                                                P2          747

Prirodno spajanje Neka su zadane relacije  r(R) , s(S) .    r ∞ s (RS),  r ∞ s = { t  nad RS   t[R] ∈ r  i  t[S] ∈ s } Definicija prirodnog spoja kaze da se prirodni spoj relacija r  i  s  dobije tako da se spoje oni redovi iz  relacija  r  i  s  koji se podudaraju na zajedničkim atributima iz relacijskih shema R  i  S. Primjer 2.8 Izračunati  r ∞ s, gdje je   r ( A  B  C )    s ( B  C  D )                                         =========   =========                                             a    b   b          a     a  a                                             b    a   a          b     a  b Rješenje:   r ∞ s (A  B  C  D)                  =============                            b   a   a   a •

Preimenovanje atributa

Za relaciju  r(R)  i   A1 A2..Am ⊆  R   te  B1, B2,..Bm ∉ R  i  Dom(Ai) = Dom(Bi)  za i = 1,.m,  preimenovanjem atributa  A1, A2,..Am   redom atributima  B1, B2,..,Bm  u  relaciji  r(R)  dobivamo  relaciju    δ [ A1, A2,..,Am  ↵ B1, B2,..,Bm](r)(S) , gdje   je    S = (R − {A1, A2,.., Am}) ∪  {B1,B2,..,Bm};    Slogovi u  δ    su slogovi iz  r .

24

Primjer 2.9 Ako  je  r (A  B)  , tada je δ [ A ↵ r.A](r) (r.A  B)              ======              ================                  a   a                                         a     a                  b   c                                         b    c  •

Produkt

Neka su zadane relacije  r(R)  i  s(S). Produkt relacija  r  i  s  definiramo ovako: (1)  Ako je  R ∩ S = ∅ , onda je  r ⊗ s = r ∞ s . (2) Ako je  R ∩ S ≠  ∅ , onda izvršimo preimenovanje atributa u  R  i  S  tako   da postignemo  disjunktnost, a zatim primjenimo  (1) . •

Aktivni komplement

Neka je zadana relacija  r(A1,.., An) . Aktivni komplement od  r  je relacija  AC(r) definirana  jednakošću:    AC(r) = [Π A1(r) ∞ .. ∞ Π An(r)] − r •

Kvocijent

Za relacije  r(R)  i  s(S)  takve da je  S ⊂ R , kvocijent relacija  r  i  s  je relacija     r ÷  s (T) , gdje je  T = R − S ;     r ÷  s = Π T(r) − Π T[(Π T(r) ∞ s) − r ]

Propozicija (temeljni operatori) Svaki relacijski izraz može se napisati u ekvivalentnom obliku koji je izgrađen samo od operatora  ∪,  − , Π , σ  , ∞ , δ  .

25

KATALOG RO Za bilo koje relacije r(R), s(R)  i  F  primjenjivo na  r  i  s  vrijedi: (1)   σ F(r ∪ s) = σ F(r) ∪ σ F(s) (2)   σ F(r ∩ s) = σ F(r) ∩ σ F(s) (3)   σ F(r − s) =  σ F(r) − σ F(s) Za bilo koje relacije r(R), s(R)  i  X ⊆ R  vrijedi: (4)  Π X(r ∪ s) = Π X(r) ∪ Π X(s) (5)  Π X(r ∩ s) = Π X(r) ∩ Π X(s) (6)  Π X(r) − Π X(s) ⊆ Π X(r − s) Za bilo koje relacije  r(R), s(S)  vrijedi: (7)    r ∞ s = s ∞ r (8)    Π R(r ∞ s) ⊆ r Za bilo koju relaciju  r(R)  vrijedi (9)   r ⊆ Π X(r) ∞ Π Y(r) , gdje je  d(R) : X, Y   dekompozicija od R . (10)  r ∞ Π X(r) = r , gdje je  X ⊆ R . Za bilo koje relacije  r(R), s(S)  vrijedi: (11)   σ F(r ∞ s) = σ F(r) ∞ s ,  gdje je  F  primjenjivo na  r . Za bilo koju relaciju  r(R) , X ⊆ R   vrijedi: (12)   Π X(σ F(r)) = σ F(Π X(r)) ,  gdje je  F  primjenjivo na  Π X(r) .

26

2.2. ZAVISNOSTI U RELACIJSKIM BAZAMA PODATAKA FUNKCIJSKE ZAVISNOSTI • Neka je  R  relacijska shema,  X, Y ⊆ R . Izraz  X → Y  je funkcijska zavisnost nad  R .      FZ(R) = {X → Y   X, Y ⊆ R} je skup svih funkcijskih zavisnosti nad  R . • Kažemo da  X → Y  ∈ FZ(R)  vrijedi u relaciji  r(R)  ako      ∀t1,t2 ∈ r (t1[X] = t2[X] ⇒ t1[Y] = t2[Y]) Primjer 2.10 Ispitajmo da li zavisnost  AC → B  vrijedi u relaciji r( A  B  C  D ) ==========    1    2   2  3    2    2   2  2    1    3   2  3 Kako za slogove  u1( A  B  C  D )     i    u2( A  B  C  D)    iz relacije  r                            ============        ===========                                  1   2   2   3                  1   3   2   3 vrijedi  u1[AC] = u2[AC]  i  u1[B] ≠  u2[B] ,  zaključujemo da funkcijska zavisnost  AC → B  ne vrijedi  u relaciji  r . U istoj relaciji r ispitajmo da li vrijedi funkcijska zavisnost  A → D . Budući da za bilo koja dva sloga t1, t2 iz relacije  r  vrijedi: ako se t1 i  t2  podudaraju na A, onda se t1 i  t2 podudaraju i na D, možemo zaključiti da A → D vrijedi u  r . VIŠEZNAČNE ZAVISNOSTI • Neka je  X, Y ⊆ R . Višeznačna zavisnost nad  R  je izraz oblika       X →→ Y . • Kažemo da  X →→ Y  vrijedi u  r(R) ako      ∀t1,t2 ∈r {t1[X] = t2[X] ⇒  ∃ t3 ∈r (t3[XY] = t1[XY] ∧                                                      t3[R −XY] = t2[R − XY])}      Sa  VZ(R)  označavamo skup svih višeznačnih zavisnosti nad  R .

27

Kako su višeznačne zavisnosti posebne zavisnosti spoja (što će se vidjeti kasnije), ispitivanje da li  višeznačna   zavisnost   vrijedi   u   relaciji   bit   izvršeno   tako   da   se   višeznačna   zavisnost   pretvori   u  odgovarajuću zavisnost spoja, a zatim se ispituje dobivena zavisnost spoja u danoj relaciji. ZAVISNOST SPOJA • Neka su   R1,.., Rn  ⊆  R   neprazni skupovi takvi da je R1  ∪..∪  Rn = R .   Izraz     ∞(R1,.., Rn)  zovemo zavisnost spoja nad  R .      Skup svih zavisnosti spoja nad  R  označavamo sa  ZS(R) . • Kažemo da zavisnost spoja  ∞(R1,.., Rn) ∈ZS(R)  vrijedi u  r(R) ako je        r = Π R1(r) ∞ .. ∞ Π Rn(r) . Primjer 2.11 Ispitajmo zavisnost spoja ∞(ABC, CD) u relaciji r( A  B  C  D ) ==========    1    2   2  3    2    2   2  2    1    3   2  3 Rješenje Π [ABC](r)( A  B  C )    Π [CD](r)( C  D ) ================   ==============                     1   2   2                        2   3                     2   2   2                        2   2                     1   3   2        Π [ABS](r) ∞  Π [CD](r) ( A  B  C D ) ===========================                                          1   2   2  3                                          1   2   2  2                                          2   2   2  3                                          2   2   2  2                                          1   3   2  3                                          1   3   2  2 Kako je  Π [ABS](r) ∞  Π [CD](r) ≠   r , zaključujemo da zavisnost spoja ∞(ABC, CD) ne vrijedi u relaciji r .     28

   • Neka je  FVS(R) = FZ(R) ∪ VZ(R) ∪ ZS(R) .      Za skup zavisnosti   F ⊆ FVS(R)   kažemo da vrijedi u relaciji   r(R)   ako    svaka zavisnost iz  F  vrijedi u  r(R) . •

Ako  F  vrijedi u  r, onda se  r  naziva modelom za  F .

• Neka je  R  skup atributa i  F  skup zavisnosti nad  R .      Par  (R, F)  naziva se relacijska shema . F     KAO SEMANTIČKO OGRANIČENJE (UVJET INTEGRITETA) Specificirajući   (R, F)   iskazujemo da će se valjanim (validnim) relacija nad  R  smatrati samo one  relacije nad  R  koje su modeli za  F .                                                                                                                           r(A1 A2 ..  An)  r(A1, A2,.., An)                                 F                                                                                                                                                                                                      model za  F

Relacija r   se mijenja tijekom vremena kao posljedica ažuriranja. Dozvoljena su samo ona ažuriranja  koja čuvaju valjanost relacije r, tj. ažuriranja trebaju biti u skladu sa zadinim uvjetima integriteta  F . Centralni   pojam   teorije   baza   podataka   je   pojam   logičke   posljedice.   Njegova   važnost   proizlazi   iz  činjenice da u osnovi gotovo svih temeljnih pojmova (njihovoj karakterizaciji) koristimo pojam logičke  posljedice. LOGIČKA POSLJEDICA • Neka je  F ⊆ FVS(R)  i  f ∈ FVS(R) .      f   je logička posljedica od  F  ako za svaku relaciju  r  nad  R  vrijedi:      Ako je r model za  F, onda je r model i za f.       Oznaka:          F ⊨f   

                                 

29

KATALOG  FZ Neka su  X, Y, Z, Y1 ⊆ R .  Tada vrijedi: 1.  X → Y  ⊨XZ → YZ    (proširenje) 2.  X → Y, Y → Z  ⊨ X → Z     (tranzitivnost) 3.  X → Y, X → Y1 ⊨X → YY1     (unija) 4.  X → Y ⊨X → Z , ako je  Z ⊆ Y   (projekcija) 5.   F ⊨X → Y ,  gdje je  F  bilo koji skup funkcijskih zavisnosti i  Y ⊆ X                                                                                                     (trivijalnost) Dokaz Kao primjer, dokazat ćemo 1. iz kataloga. Neka je  r  bilo koja relacija nad R. Pretpostavimo da X → Y  vrijedi u r. Trebamo dokazati da XZ → YZ vrijedi u r. Neka su  t1, t2 bilo koja dva sloga iz r  takva da je t1[XZ] = t2[XZ]. Sada trebamo dokazati t1[YZ] =  t2[YZ]. Iz  t1[XZ] = t2[XZ]  slijedi  t1[X] = t2[X]  i  t1[Z] = t2[Z]; Iz t1[X] = t2[X]  i pretpostavke da  X → Y vrijedi u r  zaključujemo da vrijedi t1[Y] = t2[Y]. Konačno,  iz  t1[Y] = t2[Y]  i  t1[Z] = t2[Z] dobivamo t1[YZ] = t2[YZ]. Ostale točke iz kataloga dokazuju se analogno.

30

KATALOG  VZ Neka su   X, Z, Z  ⊆  R . Tada vrijedi: 1.   X →→ Y  ⊨ X →→ (R − XY)       (komplementiranje) 2.   X →→ Y ⊨XW →→ YV ,  gdje je V ⊆ W ⊆ R    (proširenje) 3.   X →→ Y, Y →→ Z ⊨X →→ (Z − Y)     (tranzitivnost) 4.   X →→ Y, X →→ Z ⊨X →→ YZ     (unija) 5.   X →→ Y, X →→ Z ⊨X →→ (Y ∩ Z)       X →→ Y, X →→ Z  ⊨X →→ (Y − Z)       X →→ Y, X →→ Z ⊨X →→ (Z − Y)     (projekcija)

31

KATALOG  FVS Neka su  X, Y ⊆ R .  Tada vrijedi: 1.   X → Y ⊨  X →→ Y      (obrat ne vrijedi) 2.   X → Y ⊨∞(XY, X ∪ (R − XY)) 3.   X →→ Y  ⊨∞(XY, X ∪ (R − XY))      4.   ∞(XY, X ∪ (R − XY))  ⊨X →→ Y Točke 3. i 4. u katalogu FVS kažu da je višeznačna zavisnost X →→ Y ekvivalentna zavisnosti spoja  ∞(XY, X ∪ (R − XY)) .  Definiramo •   F  ⊨G    ako   F ⊨g     za svaku zavisnost  g iz G;        •   F ≡  G   ako   F ⊨G   i   G ⊨F  .

32

PROPOZICIJA (⊨) Neka su  F, G, H ⊆ FVS(R)   skupovi zavisnosti.  Tada 1.   F ⊨G , ako je  G ⊆ F  . 2.   F ⊨G   i   G ⊨H    povlači   F ⊨H . Dokaz Dokazat ćemo 2.  Neka je  r  bilo koja relacija nad R  takva da u njoj vrijedi F. Prepostavka znači da je r   model za F. Iz pretpostavke F ⊨G slijedi da je r model za G. Konačno, iz pretpostavke G ⊨H slijedi da  je r model za H. Primjer 2.12 R = ABCD,   F: A → B, B → C ;    G:  A → B, B → C, A → C . Ispitati   F ≡  G . Rješenje Kako je  F ⊆ G, zaključujemo, temeljem 1. iz prethodne propozicije(⊨), da vrijedi G ⊨F . Preostaje  ispitati da li vrijedi  F  ⊨G . Za svaku zavisnost g iz G koja se nalazi i u F znamo da vrijedi F ⊨g  . Preostaje ispitati  F ⊨A → C .  Primjenom pravila tranzitivnosti dobivamo da F ⊨A → C vrijedi. Možemo zaključiti da vrijedi  G ⊨F  i F ⊨G , što i znači da vrijedi F ≡  G .    PROPOZICIJA(≡ ) 1.   X →→ Y  ≡  ∞(XY, X ∪ (R − XY)) 2.   ∞(R1,.., Rk) ≡  ∞(R1,.., Rk, S), gdje je  S ⊆ Ri   za neki  i . Sa   V(R, F)   označavamo skup svih valjanih relacija nad shemom  (R, F). Propozicija (isto semantičko ograničenje) Neka vrijedi  F ≡  G . Tada vrijedi   V(R, F) = V(R, G) .

33

2.3. FORMALNI SUSTAVI Formalni sustav za zavisnosti sastoji se od pravila koja omogućuju rezoniranje o zavisnostima. • Pravilo zaključivanja (dedukcije) za zavisnosti FVS(R)  je izraz oblika     f1,.., fk ⊦g  , gdje su  f1,.., g ∈ FVS(R) . Pravilo   ∅ ⊦g     pišemo u obliku     ⊦g      i nazivamo aksiom. Formalni sustav za funkcijske zavisnosti • Formalni sustav za funkcijske zavisnosti je konačan skup pravila oblika       f1,.., fk ⊦g  , gdje su   f1,.., fk, g ∈ FZ(R) . • Korektnost formalnog sustava      Formalni sustav  FS:  P1,.., Pm   je korektan ako je svako pravilo  Pi  iz  FS    korektno.       Pravilo   Pi:  f1,.., fk  ⊦g    je korektno ako vrijedi      f1,.., fk ⊨ g . Napomena: u definicijama koristimo veznik ako iako mislimo na veznik ako i samo ako. To primjerice  znači da ako nije f1,.., fk ⊨g, onda pravilo f1,.., fk ⊦ g  nije korektno. Primjer 2.13 Ispitajmo korektnost sljedećih pravila: (a)  lp:  X → Y  ⊦XZ → Y         (b)  dp: X → Y  ⊦X → YZ Rješenje (a)  Pravilo lp je korektno ako vrijedi X → Y ⊨XZ → Y.  Rezoniranje, temeljem kataloga FZ iz prošlog poglavlja, je kao što slijedi. 1.  X → Y     zadano 2.  XZ → YZ   iz 1. uz proširenje sa Z 3.  YZ → Y     trivijalnost 4.  XZ → Y     iz 2. i 3. primjenom tranzitivnosti Prema tome, vrijedi X → Y ⊨XZ → Y, tj. pravilo  lp  je korektno. (b)  Pravilo dp je korektno ako X → Y ⊨X → YZ . Neka je R = ABC, X = A, Y = B, Z = C  i  r(A B C)                                                                    =======                                                                       1  2  3                                                                       1  2  2 34

Lako provjerimo da A → B  vrijedi u  r , a  A → BC  ne vrijedi u r. Prema tome, A → B ⊭A → BC, tj. X → Y ⊭X → YZ. Dobiveni rezultat nam kaže da pravilo  dp  nije korektno.      Notacija   [FS]  f1,.., fk ⊦g    indicira da je zavisnost  g   derivabilna iz zavisnosti  f1,.., fk   primjenom  formalnog sustava  FS .  Navedeno znači: Postoji niz zavisnosti   g1,.., gm  sa svojstvima: (a)   gm = g (b)   Svaki  gi  je jednak nekom članu u nizu  f1,.., fk   ili je dobiven iz    prethodnih  g­ova u nizu  g1,..,  gm  primjenom nekog pravila iz  FS . • Potpunost formalnog sustava      Formalni sustav  FS  je potpun za funkcijske zavisnosti ako      (∀F ⊆ FZ(R))(∀g ∈FZ(R)[F ⊨g  ⇒  [FS] F ⊦g ] Armstrongov formalni sustav  AFS AFS  je formalni sustav za funkcijske zavisnosti, a sastoji  se od sljedećih pravila: A1:   ⊦X → Y , ako je  Y ⊆ X    (trivijalnost) A2:     X  → Y  ⊦XZ → YZ      (proširenje) A3:     X → Y, Y → Z  ⊦X → Z       (tranzitivnost) Propozicija(korektnost i potpunost AFS) Armstrongov formalni sustav  AFS  je korektan i potpun za funkcijske zavisnosti . dokaz Za   dokaz   korektnosti   AFS   trebamo   dokazati   da   je   svako   od   pravila   iz   AFS   korektno,   tj.   trebamo  dokazati da vrijede sljedeće logičke posljedice: A1k:   ⊨X → Y , ako je  Y ⊆ X          (trivijalnost) A2k:     X  → Y ⊨XZ → YZ              (proširenje) A3k:     X → Y, Y → Z ⊨X → Z       (tranzitivnost)  Vidimo da smo logičke posljedice A1k. A2k i A3k dobili redom iz A1, A2 i A3 zamjenom znaka ⊦sa  znakom ⊨. Dokaz da dobivene logičke posljedice vrijede analogan je dokazu koji smo dali u razmatranju kataloga  FZ u prošlom poglavlju 2 . 35

Za dokaz potpunosti potreban nam je pojam zatvarača skupa atributa. •

Zatvarač skupa atributa

    Neka je  F ⊆ FZ(R)  i  X ⊆ R . Zatvarač skupa atributa  X  s obzirom na skup   funkcijskih zavisnosti  F , u oznaci  XF+ , definiramo ovako:      XF+  = {A ∈ R  [AFS] F ⊦X → A} Propozicija (logička posljedica pomoću zatvarača) [AFS] F ⊦X → Y   ako i samo ako   Y ⊆ XF+  Algoritam za računanje   XF+ koristi pojam zatvarač­ primjenjivosti ili z­primjenjivosti. • Zavisnost  X1 → Y1  je z­primjenjiva na  X  ako je      X1 ⊆ X  i nije  Y1 ⊆ X . Algoritam za računanje   XF+ Ulaz:   F ⊆ FZ(R),  X ⊆ R Izlaz:      XF+ Postupak: 1.   Staviti   X0 = X 2.   Odrediti zavisnost iz  F  koja je z­primjenjiva  na X0.       Ako takva zavisnost ne postoji, onda XF+ = X0 .       Ako je  V → W  izabrana zavisnost iz  F , koja je z­promjenjiva 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     z­primjenjiva 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 z­primjenjivih zavisnosti na X0 dobivamo X F+  = X0. Drugi dio koraka 2. ima sljedeći grafički prikaz:

X0                   V → W

X1 = X0 ∪ W Iz grafa čitamo da temeljem X0  i zavisnosti V → W iz F koja je z­primjenjiva na X0 dobivamo X1 =  X0 ∪ W . Primjer 2.14 R = ABCD,  F:  A → B, BC → D, D → A Izračunajmo (a)  A F+   (b) B F+ Rješenje (a)  Računamo  A F+    X0 = A                          A → B

X1 = A ∪ B = AB           

A F+ = AB (b)  računamo  B F+ X0 = B                

  B F+ = B

37

Propozicija (korektnost XF+) Algoritam za računanje XF+  je korektan  . Dokaz: Treba dokazati   Xi = XF+   Xi ⊆ XF+     Pokazujemo indukcijom po  j  da ako je  A  stavljen u  Xj, onda je  A ∈ XF+    .   j = 0  :   A ∈ X0 = X . Zato  X → A (po A1), te  A ∈ XF+    . Pretpostavimo, kada je  A ∈Xk , onda je A ∈ XF+   Neka je sada  A ∈ Xk+1 . Lako se dokaže da je tada  A ∈ XF+ .  

XF+  ⊆ Xi 

Dokazujemo da   [FS] F ⊦ X → Y  povlači  Y ⊆ Xj , gdje je  j ≤  i . Dokaz ‘ide’ indukcijom po dužini dokaza  X → Y  iz  F . d = 1 :   gm = g1 = X → Y .  Tada  X → Y ∈ F  ili  X → Y  slijedi iz  F  po  A1.  U prvom slučaju imamo  Y ⊆ X1, a u drugom slučaju je Y ⊆ X = X0 . Neka tvrdnja vrijedi za sve dokaze , gdje je  d ≤  k . Dokazat ćemo da tvrdnja vrijedi i za  sve dokaze , gdje je  d = k+1 . Neka je dokaz oblika   f1,.., fk, X → Y . Ako   X  →  Y   ∈  F   ili   X  →  Y   slijedi iz   F   po trivijalnosti (A1), onda zaključak slijedi kao u bazi  indukcije. Neka je  X → Y  dobiveno po tranzitivnosti iz fi: X → Z ,  fj: Z → Y , gdje je  i  × [4, 5>,  [1, 2> ×  [4, 5>} Ako upotrijebimo identifikaciju: di = [di, di+1>   za  i = 1, 2, .., n­1 ; dn = [dn, ♣>,  dobivamo  ∆  ⊆ I(∆ ) . • R = A1,.., An   je intervalna relacijska shema ako je       Dom(Ai) = I(∆ i)  ili  Dom(Ai) = ∆ i , ∀i . • Ako je  r  relacija nad  R , onda kažemo da je  r  intervalna relacija .      Kod intervalne relacije, vrijednosti atributa su atomne vrijednosti ili intervali.      Intervalna relacija je poopćenje ‘obične’ relacije (obična relacija sadrži samo atomske vrijednosti). 74

4.3. RELACIJSKI OPERATORI ZA TEMPORALNE RELACIJE Opratori  ∪ , ∩ , − , Π  , ⊗, kao što su definirani za ‘obične’ relacije, imaju nepoželjna svojstva ukoliko  se primjene na intervalne relacije. To ćemo vidjeti iz sljedećeg primjera. Primjer 4.3 Neka su zadane relacije   r1(Radnik#    Plaća     Vrijeme)   ========================            R1         110 Kn    [d2, d5> r2(Radnik#     Plaća      Vrijeme) ========================         R1            110 Kn     [d5, d10> Tada je    r1 ∪ r2 (Radnik#     Plaća      Vrijeme)    ===========================                    R1           110 Kn     [d2, d5>                    R1           110 Kn     [d5, d10>

Kompaktnija reprezentacija informacije iz   r1  ∪  r2   je u obliku relacije   r1  ∪i   r2, gdje smo izvršili  uniju intervala [d2, d5 > i [d5, d10 > . r1 ∪i  r2 je intervalna unija relacija r1 i r2 . Dobivamo     r1  ∪i  r2 (Radnik#      Plaća    Vrijeme)      ===========================                      R1             110 Kn   [d2, d10>   •

Zatvaranje (fold)    Zi

75

Primjer 4.4 Neka imamo relaciju r (   A        B            C      ) ===================    [1, 5>  [3, 6>    [2, 12>    [1, 5>  [1, 2>    [2, 12>    [3, 4>  [1, 9>    [2, 12>    [1, 5>  [5, 11>  [2, 12>    [3, 4>  [7, 12>  [2, 12> Tada je zatvaranje relacije  r  po atributu  B  dano relacijom     Zi[B](r)(  A       B         C     )      ====================               [1, 5>  [1, 2>  [2, 12>               [1, 5>  [3, 11> [2, 12>               [3, 4>  [1, 12> [2, 12> Zi[B](r) je dobiveno sljedećim postupkom. Postupak računanja   Zi[B](r) : 1.   Naći grupe svih slogova iz  r  koji se  podudaraju na  AC  i čije unije  intervala iz korespondentnog  skupa  Π[B](r) daju interval. 2.   Za svaku grupu {t1,.., tk} staviti slog         t1[A] ,  t1[B] ∪ .. ∪ tk[B],  t1[C]      u   Zi[B](r) . Formalizacija relacijskih operatora zahtijeva definiranje predikata nad intervalima . •

Neka su zadani intervali  I1 = [a, b > ,  I2 = [c, d > .      Definirat ćemo  13  predikata kao što slijedi.      (1)  I1  Prije  I2   ako  b  Tada je Zi[A, B](r)(   A            B )                 Zi[B, A](r)(   A            B ) =================                    ==================                    [1, 3>    [1, 10>                                [1, 7>    [1, 5>                               [3, 7>    [1, 5>                                  [1, 3>    [5, 10>                     [5, 10>  [3, 7>                                  [5, 10>  [3, 7> Vidimo da je   Zi[A, B](r) ≠  Zi[B, A](r) . •

Otvaranje (unfold)   Oi

Primjer 4.5 Relacija  r  i njeno otvoranje po atributu  B  dano je sljedećim tablicama                     r( A         B   )                 Oi[B](r)( A   B )                    ===========               ============                         a     [1, 3>                                   a    1                         a     [5, 6>                                   a    2                                                                            a    5 Primijenili smo sljedeće pravilo: Svaki slog  [x, y] ∈ r   rezultira skupom slogova  {[x, y1]} ⊆ Oi[B](r) , gdje je   y1 ∈ y  . Slijedi formalizacija otvaranja. •

Formalizacija  Oi

Neka je zadana relacija  r(A1,.., Ak, B). Otvaranje relacije  r  po atributu  B  je relacija  Oi[B](r)  koja ima sljedeća svojstva: (1)   SH(Oi[B](r)) =  (A1,, Ak, B)  , gdje je   Dom(B) = ∆ k+1, (2)   [x1,.., xk, b] ∈ Oi[B](r)   ako  [x1,.., xk, X] ∈ r   i   b ∈ X 78

Propozicija (Oi, Zi) (1)      Oi[B](Zi[B](r)) = Oi[B](r) (2)      Zi[B](Oi[B](r)) = Zi[B](r) Propozicija(Oi, Zi)  nam kaže: (1)  Zatvaranje relacije r, a zatim otvaranje dobivene relacije daje isti rezultat kao otvaranje relacije r; (2)  Otvaranje relacije r, a zatim zatvaranje dobivene relacije daje isti rezultat kao zatvaranje relacije r . • Otvaranje, prvo po B, a zatim po A, dano je sa      Oi[A, B](r)  =  Oi[A](Oi[B](r)) Motivacija za uvoðenje operatora    ∪ i ,   −i U ovom odjeljku motiviramo uvođenje operatora intervalne unije i intervalne razlike.  Primjer 4.6 Ako su zadane relacije,                   r1(Radnik#    Plaća     Vrijeme)                  ========================                           R1         110 Kn    [d2, d5>                   r2(Radnik#    Plaća     Vrijeme)                  ========================                           R1         110 Kn    [d3, d6> tada je        r1 ∪ r2 ( Radnik#     Plaća      Vrijeme)                  ========================                           R1         110 Kn    [d2, d5>                           R1         110 Kn    [d3, d6>

Iz  r1 ∪  r2  vidimo da je plaća radnika  R1, u vrijeme  d3  i  d4  zapisana dvaputa (redundancija) . Bolju reprezentaciju dobijemo relacijom Zi[Vrijeme] (Oi[Vrijeme](r1)  ∪  Oi[Vrijeme](r2)).

79

Zadatak Izračunajte relaciju   Zi[Vrijeme] (Oi[Vrijeme](r1)  ∪  Oi[Vrijeme](r2)). Primjer 4.7 Neka je zadana relacija                    r1(Radnik#    Plaća     Vrijeme)                  ========================                           R1         110 Kn    [d2, d8> Eliminirajmo iz   r1   podatak da je plaća radnika  R1  bila  110 Kn  u razdoblju  [d4, d7> . Rješenje1:  Definirajmo prvo relaciju                   r2(Radnik#    Plaća      Vrijeme)                  ========================                           R1         110 Kn    [d4, d7> Sada računamo r1 − r2 (Radnik#   Plaća      Vrijeme) ==========================                R1         110 Kn    [d2, d8>          Rješenje1 nije korektno jer smo dobili polaznu relaciju r1. Dakle, uobičajenom razlikom relacija nismo  ostvarili željeni cilj. Korektan rezultat dan je relacijom u rješenju2.                   Rješenje2: r3 = Zi[Vrijeme] (Oi[Vrijeme](r1)  − Oi[Vrijeme](r2))                  r3 ( Radnik#     Plaća     Vrijeme)                  ========================                           R1         110 Kn    [d2, d4>                           R1         110 Kn    [d7, d8> •

Formalizacija   ∪i  ,  −i

Za relacije r1(R) ,   r2(R), X ∈ R, gdje je atribut X  s intervalnim vrijednostima definiramo intervalnu  uniju i razliku kao što slijedi: r1  ∪i  r2   =   Zi[X]( Oi[X](r1)  ∪  Oi[X](r2) )  r1  −i  r2   =   Zi[X]( Oi[X](r1)  −  Oi[X](r2) ) 80

Dakle, prvo relacije r1 i r2 otvorimo, a zatim izvršimo ‘običnu’ uniju i razliku, te konačno izvršimo  zatvaranje dobivenih rezultata. •

Selekcija   σ

σ [ F](r)  =  {t ∈ r   F(t) = T} Definicija formule   F   uključuje i intervalne operatore (1),.., (13), te operatore koji su definirani na  osnovi navedenih operatora. Primjer 4.8 Neka je zadana relacija                  r ( Radnik#     Plaća      Vrijeme)                  ========================                           R1         110 Kn    [d2, d4>                           R1         110 Kn    [d7, d8>                           R1         120 Kn   [d10, ♣>                           R2         140 Kn   [d9, d12>                            i formula F = (Radnik# = R1) ∧ (Vrijeme  Prije  [d8, d12>)   Ako primijenimo postupak selekcioniranja  po formuli  F dobit ćemo sljedeći rezultat         σ [ F](r) ( Radnik#      Plaća      Vrijeme)       ==========================                         R1          110 Kn   [d2, d4> Iz dosadašnjih razmatranja jasno je da se implementacija operatora na intervalnim relacijama temelji na  implementaciji predikata (1), (2),.., (12), (13) i operatora Zi   i   Oi .  Također, istaknimo da ćemo u  poglavlju o poopćenim relacijskim bazama podataka, čiji specijalni slučaj su temporalne baze podataka,  karakterizirati i preostale relacijske operatore  ∩, Π  i ∞ .

81

ZADACI 1.  Zadani su ∆ 1 = {0, 1, 2} ,  ∆ 2 = {4, 6} . Definirajte  ♣(∆ 1) =  i ♣(∆ 2) , a zatim napišite  I(∆ 1) , I(∆ 2),  I(T) = I(∆ 1 ×  ∆ 2) . 2.  Neka je ∆  = {0, 1, 2, 3, 4, 5} te neka su zadane relacije r1 ( A  B       C )           r2 ( A   B      C ) ============          ============       1   2     [1, 3>                2   2      [2, 4>       1   2     [2, 5>                1   2      [3, 4> Odredite  Zi[C](r1), Zi[C](r2), Oi[C](r1), Oi[C](r2). 3.  Neka su  ∆  i relacije r1 i r2 kao u zadatku 2. Odredite r1 −i r2, r2 −i r1, r1 ∪i r2 . 4.  Za relaciju  r2 iz zadatka 2. i formulu F: [(A = 1) ∨ (B = 2)] ∧ (C Lijevo preklapa [3, 5>) odredite  σ [ F](r2).

82

5. DEDUKTIVNE BAZE PODATAKA 5.1. UVOD U ovom uvodnom odjeljku karakteriziramo deduktivnu bazu podataka (DBP) kao proširenje relacijske  baze   podataka   deduktivnom   komponentom.   Na   neformalan   način   uvodimo   temeljne   pojmove  deduktivnih baza podataka (baza znanja) i njihov prikaz pomoću logičkog jezika Dataloga. •

Deduktivna baza podataka  DBP  sastoji se od tri komponente:

(1)   Eksplicitna (ekstenzijska) baza podataka   EBP (2)   Implicitna (intenzijska) baza podataka   IBP (3)   Uvjeti integriteta (integritetna ograničenja)   UI Primjer 5.1 Neka je zadana deduktivna baza podataka  DBP : EBP:    r1(A    B)          r2(B    C)              =======          =======                  1     0                 0    0                  2     1                 1    1                                            2    1 IBP:  ∅                           UI:  A → B   za   R1(A, B)                                                B → C   za   R2(B, C)      Ekstenzijska baza podataka EBP sastoji se od dvije relacije  r1  i  r2; intenzijska baza podataka  IBP  je  prazna (nema pravila); uvjeti integriteta  UI  sadrže kao ograničenja funkcijske zavisnosti  A → B  i  B  → C  nad relacijskim shemama  R1(A, B)  i  R2(B, C), respektivno.    •

Deduktivna baza podataka je uređena trojka   DBP = (EBP, IBP, UI).

Primjer 5.2 Proširimo deduktivnu bazu podataka  DBP, iz prošlog primjera, pogledom  v : EBP:    r1(A    B)          r2(B    C)              =======          =======                  1     0                 0    0                  2     1                 1    1                                            2    1 83

IBP:  v = r1 ∞ r2 UI:  A → B   za   R1(A, B)        B → C   za   R2(B, C) Pogled  v  je relacija koja je definirana na temelju  r1  i  r2; zovemo je derivirana ili deducirana relacija. 

84

5.2. SINTAKSA I SEMANTIKA DEDUKTIVNE BAZE PODATAKA Prikaz deduktivne baze podataka DBP ćemo  prikazati pomoću logičkog jezika Dataloga, koji je nastao integracijom relacijskih baza  podataka i logičkog programiranja. Primjer 5.3 DBP  iz prošlog primjera reprezentiramo u sljedećem obliku: EBP:    R1(A, B)        R2(B, C)               r1(1, 0)          r2(0, 0)               r1(2, 1)          r2(1, 1)                                     r2(2, 1) Pretpostavljamo da su relacijske sheme  R1  i  R2  uređene. Činjenicu da je slog (x1, y1) ∈ r  pišemo u obliku r(x1, y1);   x1 (prva komponenta) je  A­vrijednost, a  y1 (druga komponenta) je B­vrijednost. EBP  se sastoji od dvije činjenice za relaciju  r1  i  tri činjenice  za relaciju  r2. IBP:  p    v(x, y, z) ← r1(x, y), r2(y, z) IBP  se sastoji od pravila  p  pomoću kojeg je definirana relacija  v  nad relacijskom shemom V(A, B,  C); v  se dobije spajanjem relacija  r1  i  r2. Čitanje pravila  p  : (Za svaki x, y, z) [slog  (x, y, z)  je u relaciji  v  ako je                             slog  (x, y)  u relaciji  r1  i   slog  (y, z)  je u  relaciji  r2]. Ako je slog  t = (x1, x2,.., xm), onda ćemo umjesto  r(x1, x2,.., xm)  pisati  r(t). Prema tome,   t  ∈ r  pišemo u obliku  r(t); kažemo da je slog (red)  t  u relaciji  r,  odnosno da   r(t)  vrijedi. Drugo čitanje pravila  p :  (Za svaki x, y, z) [v(x, y, z) vrijedi ako vrijedi  r1(x, y) i ako vrijedi  r2(y, z)].  U pravilu, p: v(x, y, z) ← r1(x, y), r2(y, z), definiranu relaciju  v  zovemo glavom pravila, a konjunkciju  r1(x, y), r2(y, z)  zovemo tijelom pravila. Općenito, svako pravilo p ima oblik   p:   G ← T , gdje je  G  glava pravila, a  T  tijelo pravila. Precizna karakterizacija pravila bit će dana u poglavlju u kojem ćemo govoriti o Datalogu. Preostaje nam još prikaz funkcijskih zavisnosti iz  UI. UI:   A → B  za  R1(A, B) 85

Zavisnost  A → B  znači  [ako  r1(x, y)   i  r1(x, z) , onda  y = z ]. Prikaz zavisnosti  A → B u obliku pravila poprima sljedeći oblik z(A → B) :    ← r1(x, y), r1(x, z), y ≠  z Čitanje pravila  z(A → B):  nije moguće da bude r1(x, z) i r1(x, z) i y ≠  z . Prema tome, simbol     čitamo: nije moguće da bude.  Pravilo z   djeluje kao zabrana (filter); Valjanim relacijama nad   R1   smatraju se samo one relacije u  kojima vrijedi zavisnost  A → B . Analogno, funkcijsku zavisnost  B → C  nad  R2  prikazujemo u obliku z(B → C) :     ← r2(x, y), r2(x, z), y ≠  z Čitanje pravila  z(A → B):  nije moguće da bude r1(x, z) i r1(x, z) i y ≠  z .   U daljem ćemo usvojiti sljedeće pojednostavljenje: prilikom prikaza deduktivne baze podataka  DBP =  (EBP,   IBP,   UI)   pomoću   Dataloga,   ekstenzijsku   bazu   podataka     EBP     predstavljat   ćemo   kao   kod  relacijskih   baza   podataka   (pomoću   tablica)   uz   pretpostavku   uređenosti   relacijskih   shema;  pojednostavljenje se ogleda u izbjegavanju ponavljanja imena relacije za svaki red relacije.  Semantika  deduktivne baze podataka Semantika   (značenje)   deduktivne   baze   podataka   karakterizirana   je   svojim   deklarativnim   dijelom  (deklarativna semantika) i proceduralnim dijelom (proceduralna semantika). Deklarativna semantika  kaže što je model DBP­a, a proceduralna semantika govori o postupcima računanja modela DBP­a. Primjer 5.4 Razmotrimo  DBP:  EBP, IBP, UI EBP:   r1(A  B)    r2(B  C)               UI:   A → B  za  R1(A, B             ======   ======                        B → C  za  R2(B, C)                 1   0          0   0                 2   1          1   1                                  2   1    IBP:    V(A, B, C)    p:      v(x, y, z) ← r1(x, y), r2(y, z) Model  deduktivne baze podataka je takva interpretacija deduktivne baze podataka u kojoj vrijede sve  činjenice iz  EBP, sva pravila iz IBP, i sva ograničenja iz UI. Lako se može provjeriti da je sljedeća interpretacija  M  model za našu  DBP.

86

M:   r1(A  B)    r2(B  C)    v(A  B  C)         ======    =======   ========              1   0           0   0         1   0  0              2   1           1   1         2   1  1                                2   1  Provjerite da je interpretacija  M1  također model zadane DBP.          M1: r1(A  B)    r2(B  C)     v(A  B  C)         ======    =======    ========              1   0            0   0          1   0  0              2   1            1   1          2   1  1                                 2   1          0   1  2 M1  je dobiveno iz  M  proširenjem relacije  v. Nije teško zaključiti da je svaka interpretacija  Mi,  koja  se dobije iz  M  proširenjem relacije  v , model za  DBP.   Prošli primjer ukazuje da deduktivna baza podataka može imati više modela. Zadatak Postoji li deduktivna baza podataka koja nema model? Rekli smo da proceduralna semantika karakterizira postupak računanja (dedukcije) modela. Svaki model deduktivne baze podataka   DBP = (EBP, IBP, UI)   sadrži valjanu   EBP, gdje za   EBP  kažemo da je valjana ako u njoj vrijede sva ograničenja iz  UI. Postupci računanja modela reduciraju se  na izračunavanje (valjane)  IBP. Razlikujemo tri postupka računanja: BU­postupak (bottom up), TD­postupak (top down) i  H­postupak (kombinacija BU i TD). U daljem  ćemo isključivo razmatrati temeljne postupke  BU  i  TD. Primjer 5.5 Neka je zadana deduktivna baza podataka  DBP = (EBP, IBP, UI) EBP:   r1(A  B)    r2(B  C)               UI:   A → B  za  R1(A, B             ======   ======                        B → C  za  R2(B, C)                 1   0          0   0                 2   1          1   1                                  2   1    IBP:    V(A, B, C)    p:      v(x, y, z) ← r1(x, y), r2(y, z) Na primjeru ove  DBP  pokazat ćemo postupke  BU  i  TD.

87

BU­postupak Krećemo od  EBP (činjenice) na koju primjenjujemo pravilo  p  iz  IBP, te tako dobivamo relaciju  v ,  koja je definirana pravilom  p. Računanje teče ovako:  1. r1(1, 0)                   zadano   (EBP) 2. r2(0, 0)                   zadano   (EBP) 3. v(1, 0, 0)                p ,  1. ,  2. Sustav traži nova rješenja: 4.   r1(2, 1)                  zadano   (EBP) 5.   r2(1, 1)                  zadano   (EBP) 6.    v(2, 1, 1)              p ,  4. ,  5. Sustav traži nova rješenja: nema novih rješenja! Prema tome,  M:  r1, r2, v , gdje je          v(A  B  C)                                             ========                                               1   0   0                                               2   1   1 TD­postupak Krećemo od glave pravila  p , tj., rješavamo  v(x, y, z). Rješavanje  v(x, y, z)  reducira se na rješavanje  relacija  r1  i  r2  (EBP)  iz tijela pravila  p.     1. v(x, y, z)  ? 2. r1(x, y), r2(y, z)        p, 1 3. r1(1, 0)                     EBP 4. r2(0, z)  ? 5. r2(0, 0)        EBP 6. v(1, 0, 0)      p, 3, 5 7. r2(0, z)  ?  (ponovno rješavanje uvjeta) 8. nema rješenja     EBP 9. r1(x, y)  ?    (ponovno rješavanje uvjeta) 10. r1(2, 1)     EBP 11. r2(1, z)  ? 12. r2(1, 1)    EBP  13. v(2, 1, 1)    p, 10, 12 14. r2(1, z)  ?    (ponovno rješavanje uvjeta) 15. nema rješenja    EBP 16. r1(x, y)  ?    (ponovno rješavanje uvjeta) 17. nema rješenja    EBP

88

Prema tome, M:  r1, r2, v , gdje je          v(A  B  C)                                             ========                                               1   0   0                                               2   1   1           Postavljanje upita Primjer 5.6 Neka je zadana  DBP  iz prethodnog primjera. Riješimo sljedeći upit. U:  Naći sve slogove iz  v  oblika  (1, y, z) . Odgovor na upit  U  označit ćemo sa  o(U). Rješenje1 : 1.   Odrediti relaciju  v ∈ M  2.   o(U):    σ [ A = 1](v) (A  B  C)                     ===============                                          1   0   0 Rješenje2 : Sustav traži sve slogove  (1, y, z)  takve da vrijedi  v(1, y, z). 1. v(1, y, z)  ? 2. r1(1, y), r2(y, z)     p, 1 3. r1(1, y)  ? 4. r1(1, 0)        EBP 5. r2(0, z)  ? 6. r2(0, 0)        EBP 7. v(1, 0, 0)      p, 4, 6 8. r2(o, z)  ?     (traži se novo rješenje, tj. rješenje različito od rješenja  6.) 9. nema rješenje    EBP 10. r1(1, y)  ?    (traži se novo rješenje, tj. rješenje različito od rješenja  4.) 11. nema rješenja    EBP Prema tome, o(U):           v (A  B  C)                     =========                          1   0   0               

89

Primjer 5.7 (rekurzivna pravila) Razmotrimo relaciju  r(A  B)                                     ======      a   b                                       b   c                                        c   d                               Tranzitivno zatvorenje relacije  r  je relacija  tz(r) koja ima sljedeća svojstva: (1)  r ⊆ tz(r); (2)  tz(r)  je tranzitivna relacija, tj. ako  tz(r)(x, y)  i  tz(r)(y, z), onda je i  tz(r)(x, z); (3)  tz(r)  je najmanja relacija sa svojstvima  (1) i (2) . Karakterizirajmo deduktivnu bazu podataka  DBP :  r,  tz(r) . Rješenje:  DBP = (EBP, IBP, UI), gdje je                    EBP:   r               IBP:    p1       tz(r)(x, y) ← r(x, y)                          p2       tz(r)(x, y) ← r(x, z), tz(r)(z, y)               UI:  ∅ . Pravilo p2  je rekurzivno pravilo (tz(r)  je rekurzivna relacija); u pravilu  p2  tz(r)  se pojavljuje u glavi i  tijelu pravila.   Zadatak Izračunajte relaciju  tz(r)  iz prošlog primjera i napišite barem jedan model za danu  DBP.       Na kraju ovog odjeljka istaknimo da se  BU­postupak 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. TD­postupak   se   implementira   pomoću   rezolucijske   procedure   (Prolog­sustavi);   navedena  implementacija neće biti obuhvaćena u ovoj skripti.

90

5.3. DATALOG U ovom odjeljku opisujemo logički jezik  Datalog, koji ćemo koristiti za specifikaciju deduktivne baze  podataka. Neformalan uvod u Datalog vidjeli smo u poglavlju 2.   •

Sintaksa

 Abeceda se sastoji od: 1)   Konstanti: a, b, c,.. 2)   Varijabli:  x, y, z,.. 3)    Relacija (predikata):  r, r1, r2,..            (obične relacije) 4)    (Ugrađene) relacije uspoređivanja:  =, , ≥ ,.. 5)    Logički veznici:  ∨, ∧, ← 6)    Zagrade:  (, [, {, ), ], } Skupovi  1) ­ 6)  su konačni. Pravila Term je konstanta ili varijabla. Atom je izraz oblika  r(t1, t2, .., tn), gdje je  r  n­mjesna relacija i  t1, t2,.., tn  su termi. Izraz   (t1, t2,.., tn)   je slog. Temeljni atom je atom bez varijabli. Primjer 5.8 a, a1, y, y1, z    su termi; (a, b, x)   je slog; r(a, b, x)   je atom;   r(a, b, c)   je temeljni atom.    Ako je  t = (t1, t2,.., tn), onda  r(t1, t2,.., tn)  pišemo kraće u obliku  r(t) . Napomena:  U praksi koristimo simbole (imena) koji prirodno odgovaraju opisu aplikacijske domene. Koristeći atome gradimo pravila: Pravilo   je izraz oblika   r(u)  ←  r1(u1), r2(u2),.., rn(un), gdje je  n ≥   0,  r  je obična relacija,   ri   su  relacije, a  u, u1, u2,.., un  su slogovi odgovarajuće arnosti. Relacija  r  je glava pravila (zaključak), a  r1(u1) ∧ r2(u2) ∧.. ∧ rn(un)  je tijelo pravila (pretpostavke). Pravilo r(u) ← r1(u1), r2(u2),.., rn(un)   je Hornova klauzula.

91

Primjer 5.9 U ovom primjeru definirat ćemo relacije  roditelj  i  predak. roditelj(x, y)  :   roditelj od  x  je  y . predak(x, y)  :  predak od  x  je  y . p1       roditelj(Marko, Ivana) ← p2       predak(x, y) ← roditelj(x, y) p3       predak(x, y) ← roditelj(x, z), predak(z, y) Pravilo  p1 (s praznim tijelom)  zovemo činjenicom. Relacija predak karakterizirana je pravilima  p2  i  p3. Čitanje pravila p1:  roditelj(Marko Ivana); p2 :   ∀x, y [predak(x, y) ako roditelj(x, y)] p3 :   (A)  ∀x, y, z [predak(x, y) ako roditelj(x, z) i predak(z, y)           ili • ∀x, y [predak(x, y) ako ∃ z (roditelj(x, z) i predak(z, y)] Pravilo  p3  ukazuje na dvije varijante čitanja pravila: • sve varijable su univerzalno kvantificirane; • varijable iz glave su univerzalno kvantificirane, a varijable koje nisu u glavi kvantificirane su egzistencijalno.    Zadatak Pokažite ekvivalentnost čitanja  (A)  i  (B) .   • Rekurzivno pravilo Pravilo   p   je rekurzivno pravilo ako je  oblika   p:    r ← . .  r  . .     Dakle, glava od  p  pojavljuje se i u tijelu od  p .  • Datalog program je konačan skup pravila; Deduktivnu bazu podataka  DBP:  EBP, IBP, UI  reprezentiramo pomoću Datalog programa. Postoji mogućnost predstavljanja  DBP  u obliku: EBP :   konvencionalno (relacijska baza podataka);  IBP ,  UI  :   Datalog pravila. Relacije   iz     EBP     zovemo   temeljnim   (baznim)   relacijama,   a   relacije   definirane   u     IBP     zovemo  deriviranim (deduciranim) relacijama.

92

Primjer 5.10 Razmotrimo deduktivnu bazu podataka  DBP = (EBP, IBP, ∅), gdje je   EBP:    roditelj(Ivana, Marko) ←               roditelj(Gorana, Ivana) ←   IBP:     predak(x, y) ← roditelj(x, y)                DBP  predstavljamo ovako: EBP:         roditelj(  Di             Ro    )                  ===================                                 Ivana       Marko                                 Goran      Ivana    IBP:       predak(x, y) ← roditelj(x, y).    U daljem, deduktivnu bazu podataka  DBP = (EBP, IBP, ∅)  pišemo u obliku  DBP = (EBP, IBP). Slično vrijedi ako je neka druga komponenta od  DBP  prazna.                     Primjer 5.11 Neka je zadana deduktivna baza podataka  DBP    EBP:      r(A  B  C)                 ========                      1   0   1                      1   2   0    IBP:       s(2, 3) ←                  s(x, y) ← r(x, 2, y)          Ako bi relacija  s   bila definirana  s puno činjenica, onda bismo te činjenice mogli zapisati u obliku  temeljne relacije (tablice)  s1  , a  IBP  bi poprimio oblik:            IBP:      s(x, y) ← s1(x, y)                 s(x, y) ← r(x, 2, y).    •

Semantika

Interpretacija  I  sastoji se od: (a)   Neprazne domene  D , gdje je  D  skup svih konstanti koje se pojavljuju u  EBP  i  IBP.  (b)   Instanci relacija iz  EBP  i  IBP .

93

Primjer 5.12 Odredimo jednu interepretaciju  I  za  DBP      EBP:        roditelj(  Di             Ro    )                     ===================                                  Ivana       Marko                                  Goran      Ivana         IBP:         predak(x, y) ← roditelj(x, y)          I  :        D = {Ivana, Marko, Goran}             roditelj(  Di             Ro    )             ===================                          Ivana       Marko                          Goran      Ivana                                     predak(  Po              Pr  )              ==================                           Ivana     Marko I   nije model za   DBP, jer pravilo iz   IBP   ne vrijedi u   I .  Naime, konkretizacijom pravila iz   IBP,  stavljajući  x = Goran ,  y = Ivana , dobivamo   p:      predak(Goran, Ivana) ← roditelj(Goran, Ivana) . Procjena konkretiziranog (temeljnog) pravila  p  daje sljedeći rezultat  F   ←    T , što je jednako   F .  Ovdje smo koristili pokrate:  F  za false, te  T  za true. Dalje,  predak(Goran, Ivana) = F, jer red  (Goran,  Ivana) nije u relaciji  predak; roditelj(Goran, Ivana) = T, jer red  (Goran, Ivana) je u relaciji  roditelj.  Primjer 5.13 Dajemo nekoliko modela deduktivne baze podataka iz prošlog primjera. M:      roditelj(  Di                 Ro  )            ====================                          Ivana        Marko                          Goran       Ivana               predak(  Po                 Pr  )            ===================                          Ivana        Marko                                                                      Goran       Ivana

94

     M1:     roditelj(  Di                 Ro  )                  ====================                               Ivana        Marko                               Goran       Ivana                      predak(  Po                 Pr  )                   ===================                                Ivana        Marko                                                                            Goran       Ivana                                Goran       Marko   M2:       roditelj(  Di                 Ro  )              ====================                             Ivana        Marko                             Goran       Ivana                   predak(  Po                 Pr  )                ===================                             Ivana        Marko                                                                         Goran       Ivana                             Goran       Marko                             Goran       Goran                             Marko       Marko                       Neka su zadani modeli  M1 =   i  M2 =   deduktivne baze podataka  DBP.   Tada definiramo: • •

M1 ≤   M2  akko  ∀i ∈ {1, 2,.., k}[ri ⊆ si] M1 = M2  akko  M1 ≤   M2  i  M2  ≤   M1

• Konzistentnost deduktivne baze podataka Neka je   M(DBP)   skup svih modela deduktivne baze podataka   DBP. Ako je   M(DBP)    ∅, onda  kažemo da je  DBP  konzistentna. U protivnome, kažemo da je nekonzistentna, tj., kontradiktorna. Minimalni model Pretpostavimo da je   DBP   konzistentna i neka je   Mm  ∈  M(DBP). Kažemo da je   Mm   minimalan  model za  DBP  ako ne postoji model  Mi  u  M(DBP)  takav da vrijedi Mi  ≤   Mm  i  Mi  Mm . Intendirani (namjeravani) ili kanonski model za   DBP   je   minimalni model   za   DBP. Vidjet ćemo  poslije   da   minimalni   model   za     DBP     nije   jedinstven.   Postupkom   tzv.   stratifikacije   odredit   ćemo  'prirodni' minimalni model kao intendirani model. Za sada možemo reći da je minimalni model deduktivne baze podataka  DBP  onaj model kojeg čine  relacije iz  EBP  i relacije koje se dobiju temeljem pravila iz  IBP, i ništa više. 95

4.4. RAČUNANJE PRAVILA Ovo   poglavlje sadrži računanje (implementaciju) pravila primjenom relacijskih operatora. U  prvom  dijelu opisujemo računanje nerekurzivnih pravila, a u drugom dijelu razmatramo računanje rekurzivnih  pravila  Nerekurzivna pravila Postupak računanja pokazat ćemo na nizu odgovarajućih primjera. Primjer 5.14 Razmotrimo deduktivnu bazu podataka  DBP      EBP:      r(A, B)      IBP:       p    s(x, y) ← r(x, z), r(y, z), x ≠  y Pretpostavljamo da su relacijske sheme uređene, tj., atributi su određeni svojom pozicijom u shemi.  Prema tome, zapis  r(2, 4) kaže da je u slogu    ispunjeno  A = 2  i  B = 4. Za računanje su bitne  sheme relacija; rezultat će biti odgovarajući relacijski izraz.  Izračunajmo pravilo  p , tj. odredimo relaciju  s . Postupak1:                                        1.   r1 = δ [ X ↵ A, Z ↵ B](r) ;  r2 = δ [ Y ↵ A, Z ↵ B](r)                     2.   s(X, Y) = Π[X,Y]( σ [ X ≠  Y](r1 ∞ r2)) Konkretizacijom (instanciranjem) relacije   r , odnosno relacija   r1   i   r2   dobivamo konkretizaciju  (instancu) relacije  s Postupak2 :           1.   r1(C, D) = σ [ C ↵ A, D ↵ B](r)       2.   r2(A, B, C, D) = σ [ B = D](r ∞ r1);  r3(A, C) = Π[A, C](r2) • s(X, Y) = δ [ X ↵ A, Y ↵ C](r3).    Primjer 5.15 Neka je zadana deduktivna baza podataka  DBP     EBP:      q(A, B), r(B, C, D), s(C, E)                   IBP:      p1     p(x, y) ← q(a, x), r(x, z, x), s(y, z)               96

Izračunajmo relaciju  p pravila  p1. Postupak: 1.   r1(A, X) = δ [ X ↵ B](σ [ A = a](q))  2.   r2(X, Z, X1) = δ [ X ↵ B, Z ↵ C, X1 ↵ D](σ [ B = D](r)) 3.   r3(Y, Z) = δ [ Y ↵ C, Z ↵ E](s) 4.   p(X, Y) = Π[X,Y](r1 ∞ r2 ∞ r3).  Primjer 5.16 Neka je zadana deduktivna baza podataka  DBP     EBP:     q(A, B), r(C, D, E), s(F, G)        IBP:     p1      p(x, y) ← q(a, x), r(x, z, x), s(y,z) Izračunajmo relaciju  p  pravila  p1. Postupak: 1.   r1(A, B) = σ [ A = a](q) 2.   r2(C, D, E) = σ [ C = E](r) 3.   r3(A, B, C, D, E) = σ [ B = C](r1 ∞ r2) 4.   r4(A, B, C, D, E, F) = σ [ D = G](r3 ∞ s) 5.   r5(B, F) = Π[B, F](r4) 6.   p(X, Y) = δ [ X ↵B, Y ↵ F](r5).  Primjer 5.17 Razmotrimo  DBP     EBP:        r1(A, B), r2(B, C)     IBP:         s(x, y) ← r1(x, z), r2(y, x) Izračunajmo relaciju   s . Postupak: 1.  r3(A, r1.B, r2.B, C) = σ [ A = C](r1 ⊗ r2 ) 2.  r4(A, r2.B) = Π[A, r2.B](r3) 3.  s(X, Y) = δ [ X ↵ A, Y ↵ r2.B](r4).

Popravljanje (rektifikacija) pravila Popravljanje pravila je unifikacija shema relacije iz glava pravila koja definiraju danu relaciju.

97

Primjer 5.18 Neka su zadana pravila: p1:          p(a, x, y) ← r(x, y) p2:          p(x, y, x) ← r(y, x) Pravilima  p1 i  p2  definirana je relacija  p. Pretpostavimo da je cilj preformulacija pravila  p1  i  p2  tako da glave u danim pravilima imaju oblik  p(x1, x2, x3) (glave postaju unijski kompatibilne). Popravljanje  p1: 1.  p(x1, x2, x3) ← r(x, y), x1 = a, x2 = x, x3 = y 2.  p(x1, x2, x3) ← r(x2, x3), x1 = a  Popravljanje  p2: 3.  p(x1, x2, x3) ← r(y, x), x1 = x, x2 = y, x3 = x • p(x1, x2, x3) ← r(x2, x1), x1 = x3 Računanje relacije  p  iz pravila  p1  svodi se na računanje relacije  p  iz točke 2.; računanje relacije  p  iz pravila   p2   reducira se na računanje relacije   p   iz točke   4.  Unija dobivenih rezultata predstavlja  relaciju  p  definiranu pravilima  p1  i  p2.  Primjer 5.19 Neka je zadana  DBP   EBP:    r(A, B), s(B, C)   IBP:    p1       p(a, y) ← r(x, y)              p2       p(x, y) ← s(x, z), r(z, y)              p3       q(x, x) ← p(x, b)              p4       q(x, y) ← p(x, z), s(z, y) Izračunajmo relacije definirane pravilima iz  IBP. Postupak: 1.   Popravljanje pravila  p1:     1.1   p(u, v) ← r(x, y), u = a, v = y     1.2   p(u, v) ← r(x, v), u = a 2.   Popravljanje pravila  p2:       2.1   p(u, v) ← s(x, z), r(z, y), u = x, v = y      2.2   p(u, v) ← s(u, z), r(z, v) 3.   Popravljanje pravila  p3:     3.1    q(u1, v1) ← p(x, b), u1 = x, v1 = x     3.2    q(u1, v1) ← p(u1, b), u1 = v1    98

4.   Popravljanje pravila  p4:                      4.1   q(u1, v1) ← p(u1, z), s(z, v1) 5.   Računamo relaciju   p :     5.1    Kako je relacija  p  definirana pravilima  p1  i  p2,              računamo relacije  T(p1), T(p2)  za tijela pravila              p1  i  p2 , respektivno. Tada je  p = T(p1) ∪ T(p2) .     5.2   Računamo  T(p1):         5.2.1  Polazimo od   r(A, B) ;   p1:    p(u, v) ← r(x, v), u = a         5.2.2   r(X, V) = δ [ X ↵ A, V ↵ B](r) ;   r1( U )                                                                      =====                                                                              a         5.2.3    T(p1)(U, V) = Π[U, V](r1 ∞ r)     5.3    Računamo  T(p2):          5.3.1  Polazimo od   s(B, C), r(A, B) ;   p2:   p(u, v) ← s(u, z), r(z, v)          5.3.2   s(U, Z) =  δ [ U ↵ B, Z ↵ C](s) ;   r(Z, V) =  δ [ Z ↵ A, V ↵ B](r)          5.3.3.  T(p2)(U, V) = Π[U, V](s ∞ r)     5.4    p(U, V) = T(p1)(U, V) ∪ T(p2)(U, V) 6.   Računamo relaciju   q , gdje je  q(U1, V1) = T(p3)(U1, V1) ∪ T(p4)(U1, V1):   6.1  Računamo  T(p3):   6.1.1   Polazimo od  p3:    q(u1, v1) ← p(u1, b), u1 = v1 ;  p(U, V)     6.1.2   r1(U, V) = σ [ V = b](p)   6.1.3   r2(U) = Π[U](r1) ;      r3(V1) = δ [ V1 ↵ U](r2)   6.1.4   r4(U, V1) = σ [ U = V1](r2 ∞ r3)   6.1.5   T(p3)(U1, V1) = δ [ U1 ↵ U](r4)                6.2   Računamo  T(p4):   6.2.1  Polazimo od  p4:      q(u1, v1) ← p(u1, z), s(z, v1) ;   p(U, V),  s(B, C)   6.2.2   r1(U, V, B, C) = σ [ V = B](p ∞ s)   6.2.3   r2(U, C) = Π[U, C](r1) 2. T(p4)(U1, V1) = δ [ U1 ↵ U, V1 ↵ C](r2).   6.3 .  Relacija  q  je dana izrazom:          q(U1, V1) = T(p3)(U1, V1) ∪ T(p4)(U1, V1).     

99

Rekurzivna pravila U ovom dijelu razmatramo računanje rekurzivnih pravila. Rekli smo da je pravilo  p  rekurzivno ako  ima sljedeći oblik:   r ← .. r ..; dakle, glava pravila pojavljuje se i u tijelu pravila. Primjer 5.20 Neka je zadana deduktivna baza podataka  DBP   EBP :      roditelj(   Di       Ro   )                 =================                                Ana     Vlado                                Ana      Marija                                Vlado   Ivo                                Vlado   Eva                                  Ivo       Petar                                 Eva      Lucija                                 Ante     Vlado  IBP:     p1        predak(x, y) ← roditelj(x, y)              p2        predak(x, y) ← roditelj(x, z), predak(z, y) IBP sadrži dva pravila  p1  i  p2  kojima je definirana relacija  predak, gdje  predak(x, y)  znači da je  x  predak od  y. U definiciji relacije predak koristimo relaciju  roditelj (pravilo  p1 i  p2) i relaciju  predak  (pravilo  p2); relacija  predak je rekurzivna relacija, jer u njenoj definiciji imamo i rekurzivno pravilo  p2.  Odnose između relacija možemo prikazati u obliku grafa zavisnosti   Gz, gdje   Gz   sadrži strelicu iz  točke  r  u točku  r1  akko je relacija  r  participira u definiciji relacije  r1. Za našu  DBP  graf zavisnosti  izgleda ovako:      Gz:

                        roditelj                                                  predak Ciklus u točki  predak  indicira rekurzivnost relacije  predak.    Primjer 5.21 Odredimo model deduktivne baze podataka  DBP  iz prošlog primjera. Trebamo izračunati relaciju  predak  definiranu pravilima: p1        predak(x, y) ← roditelj(x, y) p2        predak(x, y) ← roditelj(x, z), predak(z, y)

100

Polazimo od  EBP:  roditelj(Di, Ro); uvodimo sljedeće pokrate:  predak = pr ,  roditelj = ro. Relacijski izraz (jednadžba)   RJ:     pr(1, 3) = ro(1, 3)  ∪  [Π[1, 3](ro(1, 2)  ∞  pr(2, 3))]   karakterizira  traženu relaciju   pr, gdje smo, jednostavnosti radi, atribute odgovarajućih relacijskih shema označili  pozicijski: 1, 2  i  3 .   Dalje pojednostavljenje (izostavljanje atributa) izraza  RJ daje     RJ:  pr = ro ∪ [Π(ro ∞ pr)] . RJ   je rekurzivna jednadžba. Naš zadatak se svodi na računanje takve relacije   pr   koja zadovoljava  rekurzivnu jednadžbu  RJ. Jednadžbu  RJ  možemo pisati u obliku  RJ:   pr = F(pr). Relacija  s  je fiksna točka za  F  ako  s = F(s).  Prema tome, računanje relacije  pr  koja zadovoljava  jednadžbu  RJ  reducira se na računanje fiksne točke za  F.   Postupak rješavanja jednadžbe  pr = ro ∪ [Π(r o ∞ pr)] :                                                Novi  pr                  Stari  pr    1.  Stavljamo  Stari  pr  =  ∅ ,  a zatim računamo  Novi  pr ;  2.  Novi  pr   postaje   Stari  pr , te opet računamo  Novi  pr;  3.  Postupak završava kad bude  Novi  pr  =  Stari  pr , tj.       kada  pr  postane fiksna točka  zadane jednadžbe. Uočite da će nakon koraka  1.  vrijediti  Novi pr = ro.  Navedeni postupak rješavanja jednadžbe  RJ  realiziran je algoritmom:

   A:      begin                pr := ro                ∆  pr := pr               while  ∆  pr ≠  ∅     do                  pr’:= pr  ∪  [Π(ro ∞ pr)]                 ∆  pr := pr’ − pr                  pr := pr’                 end               end

101

Poboljšanje algoritma  A  dano je algoritmom   B:    begin           pr := ro           ∆  pr := pr             while  ∆  pr ≠  ∅     do                 pr’:= pr  ∪  [Π(ro ∞ ∆  pr)]                 ∆  pr := pr’ − pr                 pr := pr’              end         end                                                                                   Zadatak • Izračunajte relaciju  pr  primjenom algoritma  A . • Izračunajte relaciju  pr  primjenom algoritma  B . • U čemu se sastoju poboljšanje algoritma  A  ostvareno u algoritmu  B ? • Napišite model  M  zadane deduktivne baze podataka  DBP  iz prošlog primjera. Primjer 5.22 Neka je  M:  ro(Di  Ro), pr(Po  Pr)  model deduktivne baze podataka  DBP  iz prošlog zadatka. U:  Odredimo Antine predke. Rješenje je dano izrazom   o(U)(Pr) = Π[Pr](σ [ Po = Ante](pr)). Sigurnost pravila Razmotrimo pravilo   p :    r(x, y) ← x 
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF