73
Doc. dr. sc. Ma rkus Schatten Zbirka rje ˇ senih zadataka iz baza po dataka

Zbirka zadataka iz baza podataka

Embed Size (px)

DESCRIPTION

Zadaci i rješenja za baze podataka FOI

Citation preview

  • Doc. dr. sc. Markus Schatten

    Zbirka rjesenih zadataka iz baza podataka

  • Sadrzaj

    1 Relacijska algebra 11.1 Izracun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2 SQL 252.1 Kreiranje tablica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2 Upiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.3 Transakcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    3 Konceptualno oblikovanje baza podataka 433.1 SBVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.3 Medurelacijska ogranicenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    4 Logicko oblikovanje baza podataka 514.1 1NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514.2 2NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.3 3NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.4 BCNF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.5 4NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.6 5NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.7 6NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.8 Implikacijski problemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    5 Napredne baze podataka 635.1 Deduktivne baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.2 Poopcene baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.3 Parcijalne baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.4 Temporalne baze podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    i

  • ii

  • Predgovor

    Ova zbirka rjesenih zadataka je pokusaj akumulacije svih razlicitih vrsta zadataka koji se mogu pojav-iti na ispitima iz kolegija Baze podataka na studiju Primjena informacijske tehnologije u poslovanju,Fakulteta organizacije i informatike u Varazdinu (poglavlja 1., 2. i 3 osim potpoglavlja 3.3), zatimkolegija Teorija baza podataka na studiju Baze podataka i baze znanje, Fakulteta organizacije i infor-matike u Varazdinu (djelomicno poglavlje 4. te poglavlje 5.), te kolegija Administracija podatkovnihbaz na Fakulteti za informacijske studije u Novom Mestu (poglavlja 3. i djelomicno 4.), kao i drugihvrsta zadataka vezanih uz podrucje baza podataka. Zbirka je nedovrsena i nerecenzirana te stoganije mjerodavna literatura za kolegij. To sto je nedovrsena znaci da je moguce da postoje vrstezadataka koje se u njoj ne obraduju, a mogu se pojaviti na ispitu. To sto je nerecenzirana znacida nije pregledana od strucnog povjerenstva i lako moze sadrzavati pogreske. Ako u tekstu uocitepogresku, molim da ju javite na [email protected]. Prijelom zbirke izraden je u LATEX 2okruzju.Ovaj rad zasticen je Creative Commons licencom i to Attribution-NonCommercial-ShareAlike3.0 Unported (CC BY-NC-SA 3.0)1

    1http://creativecommons.org/licenses/by-nc-sa/3.0/

    iii

  • iv

  • 1 Relacijska algebra

    1.1 Izracun upita

    Zadatak 1.1 Zadane su relacije i ogranicenje:

    r1 A B C

    1 0 22 0 22 1 3

    r2 B C D

    1 1 20 2 20 2 3

    F = (A = D)

    Neka je zadan upit RA(U):

    F (AD(r1 oo r2))

    Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si oznacavat cemo medurezultate.

    s1 =

    r1 oo r2 A B C D

    1 0 2 21 0 2 32 0 2 22 0 2 3

    s2 =

    AD(s1) A D

    1 21 32 22 3

    t1 : (1 = 2) t2 : (1 = 3)

    1

  • t3 : (2 = 2) >t4 : (2 = 3)

    F (s2) A D

    2 2

    Zadatak 1.2 Zadane su relacije i ogranicenje:

    r1 A B C

    1 3 12 0 2

    r2 A B C

    1 1 22 0 23 2 3

    F = (A > B) (C 6= 2)Neka je zadan upit RA(U):

    AB(F (r1 r2))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si oznacavat cemo medurezultate.

    s1 =

    r1 r2 A B C1 3 12 0 21 1 23 2 3

    t1 : (1 > 3) (1 6= 2) > >t2 : (2 > 0) (2 6= 2) > >t3 : (1 > 1) (2 6= 2) t4 : (3 > 2) (3 6= 2) > > >

    s2 =

    F (s1) A B C

    1 3 12 0 23 2 3

    AB(s2) A B

    1 32 03 2

    Zadatak 1.3 Zadane su relacije i ogranicenje

    r A B C

    1 3 12 0 2

    s B C D

    1 1 23 2 3

    H = [(A 6 s.C ) (r .B > s.B)] (A < s.C )Izracunajte AC (r .C ,s.B(H(r s))).

    2

  • Rjesenje Sa ri oznacavat cemo medurezultate.

    r1 =

    r s A r .B r .C s.B s.C D1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3

    t1 : [(1 6 1) (3 > 1)] (1 < 1) [> >] > t2 : [(1 6 2) (3 > 3)] (1 < 2) [> ] > > > >t3 : [(2 6 1) (0 > 1)] (2 < 1) [ ] >t4 : [(2 6 2) (0 > 3)] (2 < 2) [> ] >

    r2 =

    H(r1) A r .B r .C s.B s.C D

    1 3 1 3 2 32 0 2 1 1 2

    r3 =

    r .C ,s.B(r2) r .C s.B

    1 32 1

    AC (r3) =

    r .C (r3) r .C12

    oo

    s.B(r3) s.B

    31

    r3

    =

    r .C (r3) oo s.B(r3) r .C s.B

    1 31 12 32 1

    r3

    =

    AC (r3) r .C s.B

    1 12 3

    Zadatak 1.4 Zadane su relacije i ogranicenje

    r1 A B C

    2 2 11 1 03 1 1

    r2 B C D

    2 1 01 1 21 0 2

    F = [(A < B)(B 6= 2)] (B 6= C )Potrebno je izracunati upit RA(U) : AC (AD(F (r1 oo r2)))

    Rjesenje Sa si cemo oznacavati medurezultate.

    s1 =

    r1 oo r2 A B C D

    2 2 1 01 1 0 23 1 1 2

    3

  • t1 : [(2 < 2) (2 6= 2)] (2 6= 1) [ ] > > >t1 : [(1 < 1) (1 6= 2)] (1 6= 0) [ >] > > > >t1 : [(3 < 1) (1 6= 2)] (1 6= 1) [ >] >

    s2 =

    F (s1) A B C D

    2 2 1 01 1 0 2

    s3 =

    AD(s2) A D

    2 01 2

    AC (s3) =

    A(s3) A21

    oo

    D(s3) D

    02

    s3

    =

    A(s3) oo D(s3) A D

    2 02 21 01 2

    s3

    =

    AC (s3) A D

    2 21 0

    Zadatak 1.5 Zadane su relacije i ogranicenje:

    r1 A B C

    4 2 32 0 21 1 2

    r2 A B C

    1 1 22 0 23 2 3

    F = [(A > B) (C 6= 2)] (A > 2)Neka je zadan upit RA(U):

    AC (AB(F (r1 r2)))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si oznacavat cemo medurezultate.

    s1 =

    r1 r2 A B C1 1 22 0 2

    [(1 > 1) (2 6= 2)] (1 > 2) [ ] >[(2 > 0) (2 6= 2)] (2 > 2) [> ] >

    s2 =F (s1) A B C

    1 1 2

    4

  • s3 =AB(s2) A B

    1 1

    AC (s3) =

    (A(s3) A

    1oo

    B(s3) B

    1

    ) s3

    =A(s3) oo B(s3) A B

    1 1 s3

    =AC (s3) A B

    Zadatak 1.6 Zadane su relacije i ogranicenja:

    r1 A B C D

    2 2 b 31 4 b 25 1 a 2

    r2 A B D

    1 1 22 2 33 2 3

    F = (A 6 B) (D 6= 2)G = (C 6= a)

    Neka je zadan upit RA(U):

    AC (ABD(G (r1)) F (r2))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si oznacavat cemo medurezultate.

    s1 =

    G (r1) A B C D

    2 2 b 31 4 b 2

    (b 6= a) >(b 6= a) >(a 6= a)

    s2 =

    ABD(s1) A B D

    2 2 31 4 2

    s3 =F (r2) A B D

    2 2 3

    (1 6 1) (2 6= 2) > (2 6 2) (3 6= 2) > > >(3 6 2) (4 6= 2) >

    5

  • s4 =

    s2 s3 A B D2 2 31 4 2

    AC (s4) =

    A(s4) A21

    oo

    B(s4) B

    24

    oo

    D(s4) D

    32

    s4

    =

    A(s4) oo B(s4) oo D(s4) A B D

    2 2 32 2 22 4 32 4 21 2 31 2 21 4 31 4 2

    s4

    =

    AC (s4) A B D

    2 2 22 4 32 4 21 2 31 2 21 4 3

    Zadatak 1.7 Zadane su relacije i ogranicenja:

    r1 A B C

    f 5 ff 3 gf 3 f

    r2 A B C D

    f 1 f bg 5 f af 3 f b

    F (A 6= C ) (B > 2)G (C = f )

    Neka je zadan upit RA(U):

    AC (G (r1) ABC (F (r2)))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si cemo oznacavati medurezultate.

    t1 : (f = f ) >t2 : (f = g) t3 : (f = f ) >

    s1 =

    G (r1) A B C

    f 5 ff 3 f

    6

  • t1 : (f 6= f ) (1 > 2) >t2 : (g 6= f ) (5 > 2) > > >t3 : (f 6= f ) (3 > 2) > >

    s2 =

    F (r2) A B C D

    f 1 f bg 5 f af 3 f b

    s3 =

    ABC (s2) A B C

    f 1 fg 5 ff 3 f

    s4 =s1 s3 A B C

    f 5 f

    s5 = AC (G (r1) ABC (F (r2))) = AC (s4) A B Cf 5 fZadatak 1.8 Zadana je baza podataka BP i uvjet F :

    nastavnik n# prezime zvanje

    n1 Kim profn2 Kam docn3 Kam izprof

    predmet p# broj-sati-tj sem-pred

    uz 2 4bp2 2 5mpp 2 6

    predaje n# p#

    n1 uzn2 bp2n2 mpp

    F [(prezime = Kim) (p# = uz)] (n# 6= n2)Izracunajte RA(U) = p#, zvanje(F (nastavnik oo predaje)).

    Rjesenje Sa ri cemo oznacavati medurezultate.

    r1 =

    nastavnik oo predaje n# prezime zvanje p#

    n1 Kim prof uzn2 Kam doc bp2n2 Kam doc mpp

    t1 : [(Kim = Kim) (uz = uz)] (n1 6= n2) [> >] > > > >t2 : [(Kam = Kim) (bp2 = uz)] (n2 6= n2) [ ] t3 : [(Kam = Kim) (mpp = uz)] (n2 6= n2) [ ]

    r2 =F (r1) n# prezime zvanje p#

    n1 Kim prof uz

    p#, zvanje(F (nastavnik oo predaje)) = r3 =p#, zvanje(r2) p# zvanje

    uz prof

    7

  • Zadatak 1.9 Zadane su relacije i ogranicenje:

    r1 A B C

    a b 1b b 1c a 1

    r2 A B C D

    b a 3 bb c 2 bb b 1 a

    F (D 6= a) (C 6 2)

    Neka je zadan upit RA(U):

    AC (r1) ABC (F (r2))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si cemo oznacavati medurezultate. Prvo cemo izracunati aktivni komplement relacijer1:

    s1 = AC (r1) =

    A(r1) A

    abc

    oo

    B(r1) B

    ba

    ooC (r1) C

    1 r1

    =

    A(r1) oo B(r1) oo C (r1) A B C

    a b 1a a 1b b 1b a 1c b 1c a 1

    r1 A B C

    a b 1b b 1c a 1

    =

    AC (r1) A B C

    a a 1b a 1c b 1

    Rjesavamo drugi dio izraza:

    t1 : (b 6= a) (3 6 2) > t2 : (b 6= a) (2 6 2) > > >t3 : (a 6= a) (1 6 2) > >

    s2 =

    F (r2) A B C D

    b c 2 bb b 1 a

    s3 =

    ABC (s2) A B C

    b c 2b b 1

    Konacni je rezultat stoga:

    8

  • s1 s3 =AC (r1) ABC (F (r2)) A B C

    a a 1b a 1c b 1

    Zadatak 1.10 Zadana je relacija r :

    r A B C

    a b da c db c e

    Neka je DOM(A) = DOM(B) = DOM(C ) = DOM(D).

    Izracunajte RA(U) = DA(A(r)) DB(B(r)) DC (C (r)).Rjesenje Sa s1 cemo oznacavati medurezultate.

    s1 =

    A(r) A

    ab

    s2 =

    DA(s1) Dab

    s3 =

    B(r) B

    bc

    s4 =

    DB(s3) Dbc

    s5 =

    C (r) C

    de

    s6 =

    DC (s5) Dde

    s7 = s2 s4 s6 =

    DA(A(r)) DB(B(r)) DC (C (r)) Dabcde

    Zadatak 1.11 Zadane su relacije:

    r1 A B C

    2 2 11 1 13 1 1

    r2 A B C

    2 1 03 1 11 0 2

    9

  • Potrebno je izracunati upit RA(U) : AC (r1 r2)

    Rjesenje Sa si cemo oznacavati medurezultate.

    s1 =

    r1 r2 A B C2 2 11 1 1

    s2 =

    A(s1) A

    21

    oo

    B(s1) B

    21

    ooC (s1) C

    1 s1

    s2 =

    A(s1) oo B(s1) oo C (s1) A B C

    2 2 12 1 11 2 11 1 1

    s1 =AC (r1 r2) A B C

    2 1 11 2 1

    Zadatak 1.12 Zadane su relacije i ogranicenje:

    r1 A B C

    a b 2b b 3c a 1

    r2 A B D

    b a bb c bb b a

    F (A 6= B) (C 6 2)

    Neka je zadan upit RA(U):

    AB(AC (r2)) AB(F (r1))Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Sa si cemo oznacavati medurezultate.

    s1 =A(r2) A

    boo

    B(r2) B

    abc

    oo

    D(r2) D

    ba r2 =

    AC (r2) A B D

    b a ab b bb c a

    t1 : (a 6= b) (2 6 2) > > >t2 : (b 6= b) (3 6 2) >t3 : (c 6= a) (1 6 2) > > >

    s2 =

    F (r2) A B C

    a b 2b b 3c a 1

    10

  • s3 =

    AB(s1) A B

    b ab bb c

    s4 =

    AB(s2) A B

    a bb bc a

    s5 = AB(AC (r2)) AB(F (r1)) =

    s3 s4 A Bb ab bb ca bc a

    1.2 Relacijska algebra i SQL

    Zadatak 1.13 Zadane su relacije:

    r A B C

    1 3 12 0 2

    s B C D

    1 1 23 2 3

    Neka je zadan upit SQL(U):

    SELECT r . A, r . B, s .DFROM r , sWHERE r . C = s . CAND A > 1

    (a) Iskazite upit u relacijskoj algebri (RA(U))

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo (a). Iz SELECT klauzule iscitavamo elemente u konacnoj projekciji. Sa rioznacavat cemo relacije koje jos valja izracunati:

    A r .B D(r1)

    Iz WHERE klauzule iscitavamo formulu za selekciju:

    F = (r .C = s.C ) (A > 1)Sada imamo

    r1 = F (r2)

    odnosno:

    r1 = (r .C=s.C)(A>1)(r2)

    Iz FROM klauzule iscitavamo relacije koje valja staviti u produkt. Stoga imamo:

    11

  • r2 = r sKonacno rjesenje je stoga:

    A r .B D((r .C=s.C)(A>1)(r s))Rjesavamo (b).

    r s A r .B r .C s.B s.C D1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3

    t1 : (1 = 1) (1 > 1) > t2 : (1 = 2) (1 > 1) t3 : (2 = 1) (2 > 1) > t4 : (2 = 2) (2 > 1) > > >

    (r .C=s.C)(A>1)(r s) A r .B r .C s.B s.C D2 0 2 3 2 3

    A r .B D((r .C=s.C)(A>1)(r s)) A r .B D2 0 3

    Zadatak 1.14 Zadane su relacije i ogranicenje:

    r1 A B C D

    1 a 1 2 b 2 2 c 2

    r2 A B E

    1 a 22 c 23 a 3

    F = (A > C ) (D 6= )Neka je zadan upit RA(U):

    AC (F (r1 oo r2))

    (a) Izracunajte odgovor na upit koristeci relacijsku algebru.

    (b) Pretvorite RA(U) u SQL(U)

    Rjesenje Rjesavamo (a):

    S si oznacavat cemo medurezultate.

    s1 =

    r1 oo r2 A B C D E

    1 a 1 22 c 2 2

    t1 : (1 > 1) ( 6= ) >

    12

  • t2 : (2 > 2) ( 6= ) >

    s2 =F (s1) A B C D E

    s3 = AC (F (r1 oo r2)) =AC (s2) A C

    Rjesavamo (b):Pocinjemo sa SELECT klauzulom koja je ekvivalentna konacnoj projekciji:

    SELECT A, C

    U FROM klauzuli moraju se pojaviti sve relacije iz RA(U):

    FROM r1, r2

    U WHERE klauzuli moramo uvrstiti ogranicenje F :

    WHERE A > C AND D

    Prirodni spoj je samo dodatno ogranicenje u WHERE klauzuli:

    r1.A = r2.A AND r1.B = r2.B

    Dakle ukupni upit je:

    SELECT A, CFROM r1, r2WHERE A > C AND D AND r1.A = r2.A AND r1.B = r2.B

    Ovaj rezultat nije u potpunosti tocan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji seatribut A misli (A iz r1 ili A iz r2). SQL stroj u pravilu ne zakljucuje o jednakosti atributa temeljemimena, vec temeljem imena i relacije u kojoj se oni nalaze, zbog cega je potrebno koristiti notacijunaziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacijeizjednacava atributom u drugoj relaciji (uvjet prirodnog spoja), u nasem slucaju mozemo proizvoljnoodabrati relaciju:

    SELECT r1.A, CFROM r1, r2WHERE r1.A > C AND D AND r1.A = r2.A AND r1.B = r2.B

    Zadatak 1.15 Zadane su relacije i upit SQL(U):

    r1 A B C

    3 2 31 2 22 1 1

    r2 A B E

    1 2 22 2 23 2 3

    SELECT r1 . A, r2 . EFROM r1 , r2WHERE r1 . B = r2 . BAND r2 . E 3

    13

  • (a) Pretvorite SQL(U) u RA(U)

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo (a). Iz SELECT klauzule iscitavamo elemente u konacnoj projekciji. Sa sioznacavat cemo relacije koje jos valja izracunati:

    r1.A r2.E (s1)

    Iz WHERE klauzule iscitavamo formulu za selekciju:

    F (r1.B = r2.B) (r2.E 6= 3)Sada imamo

    s1 = F (s2)

    odnosno:

    s1 = (r1.B=r2.B)(r2.E 6=3)(s2)

    Iz FROM klauzule iscitavamo relacije koje valja staviti u produkt. Stoga imamo:

    s2 = r1 r2Konacno rjesenje je stoga:

    r1.A r2.E ((r1.B=r2.B)(r2.E 6=3)(r1 r2))Rjesavamo (b). Sa si oznacavat cemo medurezultate.

    s1 =

    r1 r2 r1.A r1.B C r2.A r2.B E3 2 3 1 2 23 2 3 2 2 23 2 3 3 2 31 2 2 1 2 21 2 2 2 2 21 2 2 3 2 32 1 1 1 2 22 1 1 2 2 22 1 1 3 2 3

    t1 : (2 = 2) (2 6= 3) > > >t2 : (2 = 2) (2 6= 3) > > >t3 : (2 = 2) (3 6= 3) > t4 : (2 = 2) (2 6= 3) > > >t5 : (2 = 2) (2 6= 3) > > >t6 : (2 = 2) (3 6= 3) > t7 : (1 = 2) (2 6= 3) > t8 : (1 = 2) (2 6= 3) > t9 : (1 = 2) (3 6= 3)

    14

  • s2 =

    (r1.B=r2.B)(r2.E 6=3)(s1) r1.A r1.B C r2.A r2.B E3 2 3 1 2 23 2 3 2 2 21 2 2 1 2 21 2 2 2 2 2

    s3 = r1.A r2.E ((r1.B=r2.B)(r2.E 6=3)(r1 r2)) =r1.A r2.E (s2) A E

    3 21 2

    Zadatak 1.16 Zadane su relacije i ogranicenja:

    r1 A B C

    f 5 ff 3 gf 1 f

    r2 A B C D

    f 5 f bg 5 d bf 3 f a

    F (A 6= C ) (B > 2)G (D 6= a)

    Neka je zadan upit RA(U):

    F (r1) ABC (G (r2))

    (a) Izracunajte odgovor na upit koristeci relacijsku algebru.

    (b) Pretvorite RA(U) u SQL(U).

    Rjesenje Rjesavamo pod (a). Sa si oznacavat cemo medurezultate.

    t1 : (f 6= f ) (5 > 2) > >t2 : (f 6= g) (3 > 2) > > >t3 : (f 6= f ) (1 > 2)

    s1 =

    F (r1) A B C

    f 5 ff 3 g

    t1 : (b 6= a) >t2 : (b 6= a) >t3 : (a 6= a)

    s2 =

    G (r2) A B C D

    f 5 f bg 5 d b

    s3 =

    ABC (s2) A B C

    f 5 fg 5 d

    15

  • s4 = F (r1) ABC (G (r2)) =s1 s3 A B C

    f 5 ff 3 gg 5 d

    Rjesavamo (b). Obzirom da imamo uniju izraza posebno rjesavamo svaki od izraza u uniji. Prvi izraz(F (r1)) pretvoren u SQL jest:

    SELECT *FROM r 1WHERE A C OR B > 2

    Drugi izraz (ABC (G (r2))) pretvoren u SQL jest:

    SELECT A, B, CFROM r 2WHERE D a

    Konacno rjesenje je unija ovih dvaju izraza:

    SELECT *FROM r 1WHERE A C OR B > 2UNIONSELECT A, B, CFROM r 2WHERE D a

    Zadatak 1.17 Zadane su relacije i upit SQL(U):

    r1 A B C

    a b 5c b 2a c 2

    r2 A B D

    a b 2c b 3a a 4

    SELECT A, BFROM r 1WHERE C > 2INTERSECTSELECT A, BFROM r 2WHERE D

  • s1 = AB(s3)

    Iz WHERE klauzule prvog upita citamo uvjet selekcije:

    s3 = C>2(r1)

    Iz SELECT klauzule drugog upita citamo atribute selekcije:

    s2 = AB(s4)

    Iz WHERE klauzule drugog upita citamo uvjet selekcije:

    s4 = D3(r2)

    Stoga je konacno rjesenje:

    AB(C>2(r1)) AB(D3(r2))Rjesavamo pod (b). Sa qi cemo oznacavati medurezultate.

    q1 =C>2(r1) A B C

    a b 5

    q2 =AB(q1) A B

    a b

    q3 =

    D3(r2) A B Da b 2c b 3

    q4 =

    AB(q3) A B

    a bc b

    q5 = q2 q4 = AB(C>2(r1)) AB(D3(r2)) A Ba b

    Zadatak 1.18 Zadane su relacije i upit SQL(U):

    r1 A B C

    a b 5c b 2a a 4

    r2 A B D

    a b 2a b 3a a 4

    SELECT r1 . A, DFROM r1 , r2WHERE C > 2AND r1 . A = r2 . AAND r2 . B = r1 . B

    (a) Pretvorite SQL(U) u RA(U)

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    17

  • Rjesenje Rjesavamo pod (a). Sa si cemo oznacavati relacijske izraze koje jos treba odrediti. IzSELECT klauzule citamo konacnu projekciju:

    r1.A,D(s1)

    Iz WHERE klauzule citamo formulu selekcije:

    F = (C > 2) (r1.A = r2.A) (r2.B = r1.B)Stoga je selekcija:

    s1 = F (s2)

    Iz FROM klauzule citamo relacije koje valja pomnoziti:

    s2 = r1 r2Stoga je konacni izraz RA(U):

    r1.A,D(F (r1 r2))Rjesavamo pod (b). Sa qi cemo oznacavati medurezultate.

    q1 =

    r1 r2 r1.A r1.B C r2.A r2.B Da b 5 a b 2a b 5 a b 3a b 5 a a 4c b 2 a b 2c b 2 a b 3c b 2 a a 4a a 4 a b 2a a 4 a b 3a a 4 a a 4

    t1 : (5 > 2) (a = a) (b = b) > > > >t2 : (5 > 2) (a = a) (b = b) > > > >t3 : (5 > 2) (a = a) (a = b) > > t4 : (2 > 2) (c = a) (b = b) > t5 : (2 > 2) (c = a) (b = b) > t6 : (2 > 2) (c = a) (a = b) t7 : (4 > 2) (a = a) (b = a) > > t8 : (4 > 2) (a = a) (b = a) > > t9 : (4 > 2) (a = a) (a = a) > > > >

    q2 =

    F (q1) r1.A r1.B C r2.A r2.B D

    a b 5 a b 2a b 5 a b 3a a 4 a a 4

    18

  • q3 = r1.A,D(q2) =

    r1.A,D(F (r1 r2)) r1.A Da 2a 3a 4

    Zadatak 1.19 Zadane su relacije i upit SQL(U):

    r1 A B C

    1 2 52 3 44 3 2

    r2 A B D

    2 1 22 2 52 3 1

    SELECT r1 . A, r2 . BFROM r1 , r2WHERE r2 .D > 1

    (a) Pretvorite SQL(U) u RA(U)

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo pod (a). Sa si cemo oznacavati relacijske izraze koje jos treba odrediti. IzSELECT klauzule citamo konacnu projekciju:

    r1.A,r2.B(s1)

    Iz WHERE klauzule citamo formulu selekcije:

    F = (r2.D > 1)

    Stoga je selekcija:

    s1 = F (s2)

    Iz FROM klauzule citamo relacije koje valja pomnoziti:

    s2 = r1 r2Stoga je konacni izraz RA(U):

    r1.A,r2.B(F (r1 r2))Rjesavamo pod (b). Sa qi cemo oznacavati medurezultate.

    q1 =

    r1 r2 r1.A r1.B C r2.A r2.B D1 2 5 2 1 21 2 5 2 2 51 2 5 2 3 12 3 4 2 1 22 3 4 2 2 52 3 4 2 3 14 3 2 2 1 24 3 2 2 2 54 3 2 2 3 1

    19

  • t1 : (2 > 1) >t2 : (5 > 1) >t3 : (1 > 1) t4 : (2 > 1) >t5 : (5 > 1) >t6 : (1 > 1) t7 : (2 > 1) >t8 : (5 > 1) >t9 : (1 > 1)

    q2 =

    F (q1) r1.A r1.B C r2.A r2.B D

    1 2 5 2 1 21 2 5 2 2 52 3 4 2 1 22 3 4 2 2 54 3 2 2 1 24 3 2 2 2 5

    q3 = r1.A,r2.B(F (r1 r2)) =

    r1.A,r2.B(q2) r1.A r2.B

    1 11 22 12 24 14 2

    Zadatak 1.20 Zadana je relacija r i upit RA(U):

    r A B C

    a b 5c b 2a a 4

    A(B=b(r))

    (a) Pretvorite RA(U) u SQL(U)

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo pod (a). Pri pretvaranju relacijskog izraza u SQL prvo pojednostavljujemoizraz, no obzirom da u ovom slucaju nemamo slozenih operatora (AC , ) niti prirodnog spajanja( oo ), pojednostavljivanje nije potrebno. Atributi konacne projekcije idu u SELECT klauzulu, uvjetselekcije ide u WHERE klauzulu, a relacija nad kojom se provode operacije u FROM klauzulu. Stogaje rjesenje:

    SELECT AFROM rWHERE B = b

    20

  • Rjesavamo pod (b). Sa si oznacavat cemo medurezultate.

    t1 : b = b >t2 : b = b >t3 : a = b

    s1 =

    B=b(r) A B C

    a b 5c b 2

    s2 = A(B=b(r)) =

    A(r) A

    ac

    Zadatak 1.21 Zadane su relacije r1 i r2 te upit SQL(U):

    r1 A B C

    1 1 31 4 44 2 5

    r2 B C D

    1 3 24 4 12 5 5

    SELECT B, CFROM r 1WHERE A = 1 OR B 4INTERSECTSELECT B, CFROM r 2WHERE D > 1

    (a) Pretvorite SQL(U) u RA(U).

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo pod (a). S si cemo oznacavati medurezultate. Obzirom da je rijec o izrazupresjeka skupova (INTERSECT), konacni izraz imat ce oblik:

    s1 s2U oba dijela izraza imamo projekcije (SELECT klauzula):

    s1 = BC (s3)

    s2 = BC (s4)

    Preostali izrazi su formule (WHERE klauzule):

    F1 (A = 1) (B 6= 4)

    F2 (D > 1)Stoga ce s3 imati sljedeci oblik selekcije:

    s3 = F1(r1)

    Slicno je i sa s4:

    s4 = F2(r2)

    21

  • Stoga je konacni izraz:

    RA(U) = BC (F1(r1)) BC (F2(r2))Rjesavamo pod (b). Sa si cemo oznacavati medurezultate.

    t1 : (1 = 1) (1 6= 4) > > >t2 : (1 = 1) (4 6= 4) > >t3 : (4 = 1) (2 6= 4) > >

    s1 =

    F1(r1) A B C

    1 1 31 4 44 2 5

    t1 : (2 > 1) >t2 : (1 > 1) t3 : (5 > 1) >

    s2 =

    F2(r2) B C D

    1 3 22 5 5

    s3 =

    BC (s1) B C

    1 34 42 5

    s4 =

    BC (s2) B C

    1 32 5

    s5 = BC (F1(r1)) BC (F2(r2)) =s3 s4 B C

    1 32 5

    Zadatak 1.22 Zadane su relacije r1 i r2 te upit SQL(U):

    r1 A B C

    1 1 11 4 24 2 1

    r2 B C D

    1 3 24 2 12 5 5

    SELECT B, CFROM r 1WHERE A IN ( 1 , 4 )UNIONSELECT B, CFROM r 2WHERE D < 5

    (a) Pretvorite SQL(U) u RA(U).

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    22

  • Rjesenje Rjesavamo pod (a). S si cemo oznacavati medurezultate. Obzirom da je rijec o izrazuunija skupova (UNION), konacni izraz imat ce oblik:

    s1 s2U oba dijela izraza imamo projekcije (SELECT klauzula):

    s1 = BC (s3)

    s2 = BC (s4)

    Zatim rjesavamo selekcije (WHERE klauzula), pri cemu imamo formule:

    F1 = (A {1, 4})F2 = (D < 5)

    Alternativno F1 smo mogli zapisati kao (A = 1) (A = 4). Selekcije su onda:

    s3 = F1(r1)

    s4 = F1(r2)

    Stoga je konacan izraz:

    RA(U) = BC (F1(r1)) BC (F1(r2))Rjesavamo pod (b). Sa s1 cemo oznacavati medurezultate.

    t1 : (1 {1, 4}) >t2 : (1 {1, 4}) >t3 : (4 {1, 4}) >

    s1 =

    F1(r1) A B C

    1 1 11 4 24 2 1

    t1 : (2 < 5) >t2 : (1 < 5) >t3 : (5 < 5)

    s2 =

    F2(r2) B C D

    1 3 24 2 1

    s3 =

    BC (s1) B C

    1 14 22 1

    s4 =

    BC (s2) B C

    1 34 2

    23

  • s5 = BC (F1(r1)) BC (F1(r2)) =

    s3 s4 B C1 14 22 11 3

    24

  • 2 SQL

    2.1 Kreiranje tablica

    Zadatak 2.1 Zadana je relacija

    artikl Sifra Naziv Jedinicna cijena

    1 Kava 82 Rakija 43 Klipic 2

    Zadana su ogranicenja:

    Sifra je primarni kljuc relacije

    Svaki artikl mora imati jedinstven naziv

    Jedinicna cijena ne smije biti negativna

    (a) Kreirajte u SQL-u strukturu tablice artikl s odgovarajucim ogranicenjima.

    (b) Neka je zadan upit U : odrediti sve one sifre i nazive artikala cija je cijena veca od 3. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.

    Rjesenje Rjesavamo (a):

    CREATE TABLE a r t i k l(

    s i f r a INT PRIMARY KEY,n a z i v VARCHAR UNIQUE , j e d i n i c n a c i j e n a FLOAT CHECK( j e d i n i c n a c i j e n a > 0 )

    )

    Rjesavamo (b):SQL(U):

    SELECT s i f r a , n a z i vFROM a r t i k lWHERE j e d i n i c n a c i j e n a > 3

    25

  • RA(U) : sifra, cijena(jedinicna cijena>3(artikl))

    Sa ri oznacavat cemo medurezultate:

    t1 : (8 > 3) >

    t2 : (4 > 3) >

    t3 : (2 > 3)

    r1 =

    jedinicna cijena>3(artikl) sifra naziv jedinicna cijena

    1 Kava 82 Rakija 4

    sifra, cijena(r1) sifra jedinicna cijena

    1 82 4

    Zadatak 2.2 Zadana je relacija

    pr N P

    n1 bpn1 uzn2 bpn3 bpn3 uzn3 fm

    Semantika: pr(n, p) znaci da nastavnik n predaje predmet p.

    (a) Kreirajte u SQL-u strukturu tablice pr

    (b) Iskazite rijecima entitetski integritet za tablicu pr

    (c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmetfm. Napisite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U).

    Rjesenje Rjesavamo (a):

    CREATE TABLE pr(

    N VARCHAR( 2 ) ,P VARCHAR( 2 ) ,PRIMARY KEY( N, P )

    )

    Rjesavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost nulljer su dio primarnog kljuca.

    Rjesavamo (c).

    26

  • SELECT NFROM prWHERE P = uz AND N NOT IN(

    SELECT NFROM prWHERE P = fm

    )

    o(SQL(U)) N

    n1

    Zadatak 2.3 Zadana je relacija i ogranicenja

    knjiga ISBN Naslov Godina

    1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009

    Svaka knjiga mora imati naslov i godinu izdanja

    Godina izdanja mora biti veca od 1900

    (a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.

    (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine.Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.

    Rjesenje Rjesavamo (a).

    CREATE TABLE k n j i g a(

    ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER NOT NULL CHECK( Godina > 1900 )

    )

    Rjesavamo (b).SQL(U):

    SELECT Nas lovFROM k n j i g aWHERE Godina > 2000

    RA(U) : Naslov (Godina>2000(knjiga))

    t1 : 1992 > 2000 t2 : 2005 > 2000 >t3 : 2009 > 2000 >

    r1 =

    Godina>2000(knjiga) ISBN Naslov Godina

    2 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009

    27

  • Naslov (r1) Naslov

    Arhitektura suvremenih organizacijaTeorija baza podataka

    Zadatak 2.4 Zadana je relacija

    knjiga ISBN Naslov Godina

    1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009

    Zadana su ogranicenja:

    Svaka knjiga mora imati naslov

    Ako se ne specificira godina izdanja upisuje se 2011

    (a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.

    (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.

    Rjesenje Rjesavamo (a).

    CREATE TABLE k n j i g a(

    ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER DEFAULT 2011

    )

    Rjesavamo (b).

    SQL(U):

    SELECT Nas lovFROM k n j i g aWHERE Godina < 2008

    RA(U) : Naslov (Godinat2 : 2005 < 2008 >t3 : 2009 < 2008

    r1 =

    Godina>2000(knjiga) ISBN Naslov Godina

    1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 2005

    Naslov (r1) Naslov

    Programiranje u ProloguArhitektura suvremenih organizacija

    28

  • Zadatak 2.5 Zadana je relacija

    racun broj racuna klijent saldo

    1 k1 2134, 562 k2 444, 093 k3 234, 434 k1 342.51

    Zadana su ogranicenja (poslovna pravila):

    Svaki baknovni racun mora imati broj racuna, klijenta i saldo

    Dopusten negativni saldo moze biti 2000

    (a) Kreirajte u SQL-u strukturu tablice racun s odgovarajucim ogranicenjima.

    (b) Neka je zadan upit U : odrediti sve one klijente koji imaju barem jedan racun s negativnimsaldom. Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor naupit U.

    Rjesenje Rjesavamo (a).

    CREATE TABLE racun(

    b r o j racuna INTEGER PRIMARY KEY,k l i j e n t TEXT NOT NULL ,s a l d o DECIMAL NOT NULL CHECK( s a l d o > 2000 )

    )

    Rjesavamo (b).

    SQL(U):

    SELECT k l i j e n tFROM racunWHERE s a l d o < 0

    RA(U) : klijent(saldot4 : 342.51 < 0 >

    r1 =

    saldo

  • Zadatak 2.6 Zadana je baza podataka

    tvprogram vrijeme emisija

    26.06.2011. 10:00 126.06.2011. 10:30 226.06.2011. 11:45 2

    emisija sifra naziv opis zanr

    1 e1 o1 z12 e2 o2 z13 e3 o3 z2

    Zadana su ogranicenja:

    Primarni kljuc relacije tvprogram je vrijeme

    Primarni kljuc relacije emisija je sifra

    Naziv emisije je jedinstven u relaciji emisija

    Atribut emisija u relaciji tvprogram vanjski je kljuc koji se referencira na primarni kljuc relacijeemisija

    Kreirajte u SQL-u strukturu tablica tvprogram i emisija s odgovarajucim ogranicenjima.

    Rjesenje Rjesenje za tablicu emisija:

    CREATE TABLE e m i s i j a(

    s i f r a INTEGER PRIMARY KEY,n a z i v TEXT UNIQUE ,o p i s TEXT,z a n r TEXT,

    )

    Rjesenje za tablicu tvprogram:

    CREATE TABLE tvprogram(

    v r i j e m e DATETIME PRIMARY KEY,e m i s i j a INTEGER FOREIGN KEY REFERENCES e m i s i j a ( s i f r a )

    )

    Zadatak 2.7 Zadana je baza podataka

    stan sifra kvadratura adresa vlasnik

    1 80 a1 32 105 a2 13 55 a1 24 150 a3 3

    vlasnik oib ime prezime

    1 i1 p12 i2 p23 i3 p3

    Zadana su ogranicenja (poslovna pravila):

    Primarni kljuc relacije stan je sifra

    Primarni kljuc relacije vlasnik je oib

    Kvadratura stana ne smije biti negativan broj

    Atribut vlasnik u relaciji stan vanjski je kljuc koji se referencira na primarni kljuc relacije vlasnik

    Svaki stan mora imati definiranu adresu

    30

  • Kreirajte u SQL-u strukturu tablica stan i vlasnik s odgovarajucim ogranicenjima.

    Rjesenje Rjesavamo relaciju vlasnik.

    CREATE TABLE v l a s n i k(

    o i b INTEGER PRIMARY KEY,ime VARCHAR( 2 ) ,p r e z i m e VARCHAR( 2 )

    )

    Rjesavamo relaciju stan.

    CREATE TABLE s t a n(

    s i f r a INTEGER PRIMARY KEY,k v a d r a t u r a INTEGER CHECK( k v a d r a t u r a >= 0 ) ,a d r e s a NOT NULL ,v l a s n i k INTEGER REFERENCES v l a s n i k ( o i b )

    )

    Zadatak 2.8 Zadana je baza podataka BP s ogranicenjima:

    proizvod sifra naziv

    1 Kutija XXL2 Kutija XL3 Limenka 0.5

    sirovina sifra naziv

    1 Karton2 Lim

    sastavnica proizvod sirovina kolicina

    1 1 175.002 1 120.00

    Ogranicenja: Atribut sifra se koristi kao primarni kljuc u relacijama proizvod i sirovina. Atributproizvod u relaciji sastavnica je vanjski kljuc koji se referencira na primarni kljuc u relaciji sastavnica.Atribut sirovina u relaciji sastavnica je vanjski kljuc koji se referencira na primarni kljuc u relaciji sirov-ina. Primarni kljuc relacije sastavnica je kombinacija atributa proizvod i sirovina. Atribut kolicina urelaciji sastavnica ne smije biti negativan.

    Neka su zadani tipovi podataka kao sto slijedi.

    sifra/proizvod/sirovina cjelobrojna vrijednost

    naziv varijabilni znakovni niz do 20 znakova

    kolicina decimalni broj

    Kreirajte BP (tablice, unos) koristeci odgovarajuce SQL naredbe.

    2.2 Upiti

    Zadatak 2.9 Zadana je baza podataka BP:

    nastavnik n# prezime zvanje

    n1 Kim profn2 Kam docn3 Kam izprof

    predmet p# broj-sati-tj sem-pred

    uz 2 4bp2 2 5mpp 2 6

    31

  • predaje n# p#

    n1 uzn2 bp2n2 mpp

    Neka je zadan upit U : Odredite sifre predmeta i odgovarajuce semestre predavanja predmeta kojepredaju nastavnici n1 i n2.

    (a) Napisite SQL(U)

    (b) Napisite tablicu koja je je odgovor na SQL(U)

    Rjesenje Rjesavamo pod (a). Da bismo dobili sifru i semenstar predavanja nekog predmeta zaodredenog nastavnika potrebno je spojiti sve tri tablice. To cinimo prirodnim spojem, odnosno uSQL-u povezivanjem odgovarajucih vanjskih kljuceva. Da bismo dobili predmete dvaju nastavnika,potrebno je da slogovi tablice zadovoljavaju uvjet: Sifra nastavnika je n1 ili n2. Ovaj je upit mogucerjesiti na nekoliko nacina:Prvi nacin SQL1(U) (OR ogranicenje):

    SELECT p . p#, p . sempred FROM n a s t a v n i k n , predmet p , p r e d a j e prWHERE n . n# = pr . n#

    AND pr . p# = p . p#AND ( n . n# = n1 OR n . n# = n2 )

    Drugi nacin SQL2(U) (IN ogranicenje):

    SELECT p . p#, p . sempred FROM n a s t a v n i k n , predmet p , p r e d a j e prWHERE n . n# = pr . n#

    AND pr . p# = p . p#AND n . n# IN ( n1 , n2 )

    Treci nacin SQL3(U) (unija):

    SELECT p . p#, p . sempred FROM n a s t a v n i k n , predmet p , p r e d a j e prWHERE n . n# = pr . n#

    AND pr . p# = p . p#AND n . n# = n1

    UNIONSELECT p . p#, p . sempred FROM n a s t a v n i k n , predmet p , p r e d a j e prWHERE n . n# = pr . n#

    AND pr . p# = p . p#AND n . n# = n2

    Jasno je da je drugi nacin najjednostavniji.

    Rjesavamo pod (b). Pretvorimo svaki od upita u relacijsku algebru.

    RA1(U) : p#, sem-pred((n#=n1)(n#=n2)(nastavnik oo predaje oo predmet))RA2(U) : p#, sem-pred((n#{n1,n2})(nastavnik oo predaje oo predmet))RA3(U) : p#, sem-pred(n#=n1(nastavnik oo predaje oo predmet))

    p#, sem-pred(n#=n2(nastavnik oo predaje oo predmet))

    32

  • Pri tome smo se okoristili prirodnim spajanjem umjesto produktom obzirom da su svi vanjski kljucevivaljano spojeni. U nastavku cemo pri rjesavanju visestrukog prirodnog spoja koristiti konvencijuspajanja s lijeva na desno, tj. r1 oo r2 oo r3 rjesavat cemo kao (r1 oo r2) oo r3.Racunamo o(RA1(U)). Medurezultate oznacavat cemo s r1i .

    r11 =

    nastavnik oo predaje oo predmet n# prezime zvanje p# broj-sati-tj sem-pred

    n1 Kim prof uz 2 4n2 Kam doc bp2 2 5n2 Kam doc mpp 2 6

    t1 : (n1 = n1) (n1 = n2) > >t2 : (n2 = n1) (n2 = n2) > >t3 : (n2 = n1) (n2 = n2) > >

    r12 =

    (n#=n1)(n#=n2)(r11) n# prezime zvanje p# broj-sati-tj sem-predn1 Kim prof uz 2 4n2 Kam doc bp2 2 5n2 Kam doc mpp 2 6

    r13 = o(RA1(U)) =

    p#, sem-pred(r12) p# sem-pred

    uz 4bp2 5mpp 6

    Racunamo o(RA2(U)). Medurezultate oznacavat cemo s r2i .Vrijedi da je r21 = nastavnik oo predaje oo predmet = r11.

    t1 : n1 {n1, n2} >t2 : n2 {n1, n2} >t3 : n2 {n1, n2} >

    Stoga je i r22 = (n#{n1,n2})(r21) = r12. Iz toga slijedi da je r23 = o(RA2(U))) = o(RA1(U))).

    Racunamo o(RA3(U)). Medurezultate oznacavat cemo s r3i .Vrijedi da je r31 = nastavnik oo predaje oo predmet = r11.

    t1 : n1 = n1 >t2 : n2 = n1 t3 : n2 = n1

    r32 =(n#=n1)(r31) n# prezime zvanje p# broj-sati-tj sem-pred

    n1 Kim prof uz 2 4

    33

  • r33 =p#, sem-pred(r12) p# sem-pred

    uz 4

    Vrijedi da je r34 = nastavnik oo predaje oo predmet = r11.

    t1 : n1 = n2 t2 : n2 = n2 >t3 : n2 = n2 >

    r35 =

    (n#=n2)(r34) n# prezime zvanje p# broj-sati-tj sem-pred

    n2 Kam doc bp2 2 5n2 Kam doc mpp 2 6

    r36 =

    p#, sem-pred(r35) p# sem-pred

    bp2 5mpp 6

    r37 = o(RA3(U)) =

    r33 r36 p# sem-preduz 4

    bp2 5mpp 6

    Dakle, dobili smo ocekivani rezultat, tj. o(RA1(U)) = o(RA2(U)) = o(RA3(U)).

    Zadatak 2.10 Zadana je baza podataka BP s ogranicenjima:

    klijent oib prezime

    1 Prekratki2 Presvetli3 Jambrek

    savjetnik oib prezime

    1 Maric2 Sanjic

    savjetuje savjetnik klijent

    1 11 3

    Ogranicenja: Atribut oib se koristi kao primarni kljuc u relacijama klijent i savjetnik. Atribut savjetniku relaciji savjetuje je vanjski kljuc koji se referencira na primarni kljuc u relaciji savjetnik. Atributklijent u relaciji savjetuje je vanjski kljuc koji se referencira na primarni kljuc u relaciji klijent.

    Neka je zadan upit U: Pronaci sva prezimena klijenata koje savjetuje savjetnik s prezimenom Maric.

    (a) Napisite SQL(U)

    (b) Napisite tablicu koja je odgovor na SQL(U)

    Rjesenje Rjesavamo pod (a). Prema specifikaciji upita U vidimo da je potrebno spojiti tabliceklijent, savjetuje i savjetnik. Stoga njih stavljamo u FROM klauzulu. Jasno je da bismo ih pravilnospojili, potrebno je izjednaciti vanjske kljuceve sto cinimo u WHERE klauzuli. Konacno, upit trebavratiti samo imena i prezimena klijenata, sto navodimo u SELECT klauzuli. Stoga je rjesenje:

    34

  • SELECT k l i j e n t . p r e z i m eFROM s a v j e t n i k , s a v j e t u j e , k l i j e n tWHERE s a v j e t n i k . o i b = s a v j e t u j e . s a v j e t n i k

    AND s a v j e t u j e . k l i j e n t = k l i j e n t . o i b

    Rjesavamo pod (b). Pretvaramo upit u relacijsku algebru, pri cemu koristimo alijase za prefiksek = klijent, sa = savjetuje i s = savjetnik:

    k.prezime(s.oib=sa.savjetniksa.klijent=k.oib(savjetnik savjetuje klijent))Racunamo odgovor na upit, pri emu cemo s ri oznacavati medurezultate.

    r1 =

    savjetnik savjetuje klijent s.oib s.prezime sa.savjetnik sa.klijent k.oib k.prezime1 Maric 1 1 1 Prekratki1 Maric 1 3 2 Presvetli1 Maric 1 1 3 Jambrek1 Maric 1 3 1 Prekratki1 Maric 1 1 2 Presvetli1 Maric 1 3 3 Jambrek2 Sanjic 1 1 1 Prekratki2 Sanjic 1 3 2 Presvetli2 Sanjic 1 1 3 Jambrek2 Sanjic 1 3 1 Prekratki2 Sanjic 1 1 2 Presvetli2 Sanjic 1 3 3 Jambrek

    t1 : 1 = 1 1 = 1 > > >t2 : 1 = 1 3 = 2 > t3 : 1 = 1 1 = 3 > t4 : 1 = 1 3 = 1 > t5 : 1 = 1 1 = 2 > t6 : 1 = 1 3 = 3 > > >t7 : 2 = 1 1 = 1 > t8 : 2 = 1 3 = 2 t9 : 2 = 1 1 = 3 t10 : 2 = 1 3 = 1 t11 : 2 = 1 1 = 2 t12 : 2 = 1 3 = 3 >

    r2 =

    s.oib=sa.savjetniksa.klijent=k.oib(r1) s.oib s.prezime sa.savjetnik sa.klijent k.oib k.prezime1 Maric 1 1 1 Prekratki1 Maric 1 3 3 Jambrek

    r3 = k.prezime(s.oib=sa.savjetniksa.klijent=k.oib(savjetniksavjetujeklijent)) =k.prezime(r2) k.prezime

    PrekratkiJambrek

    35

  • Zadatak 2.11 Zadana je baza podataka BP te upit U:

    vozilo reg. oznaka marka stanje brojila

    SI-245-AS Fiat 12362VZ-743-CV Fiat 32198RI-144-HT Skoda 32123

    vozac oib prezime

    1 Prikratki2 Presvetli

    upravlja vozac vozilo

    1 SI-245-AS2 SI-245-AS2 RI-144-HT

    U : Odredite prezimena i odgovarajuce marke vozila onih vozaca koji su zaduzeni za vozila cija jemarka Skoda.

    (a) Napisite SQL(U) te ga pretvorite u RA(U).

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje Rjesavamo pod (a). Iz specifikacije upita vidimo da je potrebno spojiti sve tri tablice stocemo uciniti spajajuci odgovarajuce vanjske kljuceve.

    SELECT voza c . prez ime , v o z i l o . markaFROM v o z i l o , voza c , u p r a v l j aWHERE voza c . o i b = u p r a v l j a . voza c

    AND v o z i l o . r e g . oznaka = u p r a v l j a . v o z i l o

    AND v o z i l o . marka = Skoda

    Za pretvaranje u relacijsku algebru, koristit cemo si za oznacavanje medurezultata. Iz FROM klauzulecitamo produkt tablica koje ce se spajati.

    s1 = vozilo vozac upravlja

    Iz WHERE klauzule citamo formulu selekcije.

    F = (oib = vozac) (reg. oznaka = vozilo) (marka = Skoda)

    Stoga je selekcija:

    s2 = F (s1)

    Iz SELECT klauzule citamo konacnu projekciju:

    s3 = prezime, marka(s2)

    Stoga je konacni izraz:

    RA(U) = prezime, marka(F (vozilo vozac upravlja))

    Rjesavamo pod (b). Sa ri cemo oznacavati medurezultate.

    36

  • r1 =

    vozilo vozac upravlja reg. oznaka marka stanje brojila oib prezime vozac voziloSI-245-AS Fiat 12362 1 Prikratki 1 SI-245-ASSI-245-AS Fiat 12362 2 Presvetli 2 SI-245-ASSI-245-AS Fiat 12362 1 Prikratki 2 RI-144-HTSI-245-AS Fiat 12362 2 Presvetli 1 SI-245-ASSI-245-AS Fiat 12362 1 Prikratki 2 SI-245-ASSI-245-AS Fiat 12362 2 Presvetli 2 RI-144-HT

    VZ-743-CV Fiat 32198 1 Prikratki 1 SI-245-ASVZ-743-CV Fiat 32198 2 Presvetli 2 SI-245-ASVZ-743-CV Fiat 32198 1 Prikratki 2 RI-144-HTVZ-743-CV Fiat 32198 2 Presvetli 1 SI-245-ASVZ-743-CV Fiat 32198 1 Prikratki 2 SI-245-ASVZ-743-CV Fiat 32198 2 Presvetli 2 RI-144-HTRI-144-HT Skoda 32123 1 Prikratki 1 SI-245-ASRI-144-HT Skoda 32123 2 Presvetli 2 SI-245-ASRI-144-HT Skoda 32123 1 Prikratki 2 RI-144-HTRI-144-HT Skoda 32123 2 Presvetli 1 SI-245-ASRI-144-HT Skoda 32123 1 Prikratki 2 SI-245-ASRI-144-HT Skoda 32123 2 Presvetli 2 RI-144-HT

    t1 : (1 = 1) (SI-245-AS = SI-245-AS) (Fiat = Skoda) > > t2 : (2 = 2) (SI-245-AS = SI-245-AS) (Fiat = Skoda) > > t3 : (1 = 2) (SI-245-AS = RI-144-HT) (Fiat = Skoda) t4 : (2 = 1) (SI-245-AS = SI-245-AS) (Fiat = Skoda) > t5 : (1 = 2) (SI-245-AS = SI-245-AS) (Fiat = Skoda) > t6 : (2 = 2) (SI-245-AS = RI-144-HT) (Fiat = Skoda) > t7 : (1 = 1) (VZ-743-CV = SI-245-AS) (Fiat = Skoda) > t8 : (2 = 2) (VZ-743-CV = SI-245-AS) (Fiat = Skoda) > t9 : (1 = 2) (VZ-743-CV = RI-144-HT) (Fiat = Skoda) t10 : (2 = 1) (VZ-743-CV = SI-245-AS) (Fiat = Skoda) t11 : (1 = 2) (VZ-743-CV = SI-245-AS) (Fiat = Skoda) t12 : (2 = 2) (VZ-743-CV = RI-144-HT) (Fiat = Skoda) > t13 : (1 = 1) (RI-144-HT = SI-245-AS) (Skoda = Skoda) > > t14 : (2 = 2) (RI-144-HT = SI-245-AS) (Skoda = Skoda) > > t15 : (1 = 2) (RI-144-HT = RI-144-HT) (Skoda = Skoda) > > t16 : (2 = 1) (RI-144-HT = SI-245-AS) (Skoda = Skoda) > t17 : (1 = 2) (RI-144-HT = SI-245-AS) (Skoda = Skoda) > t18 : (2 = 2) (RI-144-HT = RI-144-HT) (Skoda = Skoda) > > > >

    r2 =F (r1) reg. oznaka marka stanje brojila oib prezime vozac vozilo

    RI-144-HT Skoda 32123 2 Presvetli 2 RI-144-HT

    r3 = prezime, marka(F (vozilo vozac upravlja)) = prezime, marka(r2) prezime markaPresvetli Skoda

    Zadatak 2.12 Zadana je baza podataka BP te upit U:

    37

  • vozilo reg. oznaka stanje brojila

    SI-245-AS 12362VZ-743-CV 32198RI-144-HT 32123

    vozac oib prezime ime

    1 Prikratki Joza2 Presvetli Ivek

    upravlja vozac vozilo

    1 SI-245-AS2 SI-245-AS1 VZ-743-CV2 RI-144-HT

    U : Odredite imena i prezimena vozaca koji upravljaju vozilima cije je stanje brojila vece od 30000.

    (a) Napisite SQL(U) te ga pretvorite u RA(U).

    (b) Izracunajte odgovor na upit koristeci relacijsku algebru.

    Rjesenje

    2.3 Transakcije

    Zadatak 2.13 Zadana je tablica s ogranicenjem i transakcije:

    konto broj saldo

    1 89.302 102.053 15.35

    Ogranicenje: Nije dopusten negativan saldo.

    BEGIN TRANSACTION T1 ;INSERT INTO s a l d o VALUES( 5 , 0 . 0 0 ) ;DELETE FROM s a l d o WHERE b r o j = 3 ;COMMIT;

    BEGIN TRANSACTION T2 ;UPDATE konto SET s a l d o = s a l d o + 100 WHERE b r o j = 2 ;UPDATE konto SET s a l d o = s a l d o 100 WHERE b r o j = 1 ;COMMIT;

    (a) Odredite stanje tablice konto nakon izvrsenja transakcije T1.

    (b) Odredite stanje tablice konto nakon izvrsenja transakcije T2.

    Rjesenje Rjesavamo (a). Prva naredba transakcije T1 dodaje slog (5, 0.00) u tablicu konto. Stogaje medustanje:

    konto broj saldo

    1 89.302 102.053 15.355 0.00

    Druga naredba transakcije T1 brise sve slogove iz tablice konto ciji je broj konta 3. Stoga jemedustanje (koje je ujedno i konacno stanje nakon izvrsavanja transakcije T1):

    konto broj saldo

    1 89.302 102.055 0.00

    38

  • Rjesavamo (b). Prva naredba transakcije T2 azurira tablicu konto tako da povecava stanje salda za100 tamo gdje je broj konta 2. Stoga je medustanje:

    konto broj saldo

    1 89.302 202.055 0.00

    Druga naredba transakcije T2 azurira tablicu konto tako da smanjuje stanje salda za 100 tamo gdjeje broj konta 1. Stoga je medustanje:

    konto broj saldo

    1 10.702 202.055 0.00

    Obzirom da je zadano ogranicenje koje zabranjuje negativan saldo, doslo je do narusavanja integritetabaze podataka te se stoga transakcija T2 prekida. Zbog toga vrijedi stanje baze podataka koje jevrijedilo prije pocetka transakcije T2, to jest konacno stanje je:

    konto broj saldo

    1 89.302 102.055 0.00

    Zadatak 2.14 Zadana je tablica s ogranicenjem i transakcija:

    autor sifra ime prezime

    1 Ivana Brlic-Mazuranic2 Miroslav Krleza3 August Senoa

    Ogranicenje: Svaki autor mora imati prezime.

    BEGIN TRANSACTION T1 ;DELETE FROM a u t o r WHERE s i f r a = 3 ;INSERT INTO a u t o r ( s i f r a , ime ) VALUES( 4 , Ivan ) ;COMMIT;

    Odredite stanje tablice autor nakon izvrsenja transakcije T1.

    Rjesenje Medustanje nakon prvog izraza transakcije je:

    autor sifra ime prezime

    1 Ivana Brlic-Mazuranic2 Miroslav Krleza

    Nakon izvrsavanja drugog izraza medustanje je:

    autor sifra ime prezime

    1 Ivana Brlic-Mazuranic2 Miroslav Krleza4 Ivan null

    Obzirom da je doslo do nedozvoljenog stanja tablice (prezime autora je nepoznato), dolazi do prekidatransakcije. Stoga je konacno stanje ono stanje koje je vrijedilo prije pocetka transakcije T1:

    39

  • autor sifra ime prezime

    1 Ivana Brlic-Mazuranic2 Miroslav Krleza3 August Senoa

    Zadatak 2.15 Zadana je tablica s ogranicenjem i transakcija:

    osoba oib ime prezime

    1 Ivek Presvetli2 Joza Prekratki3 Barica Prekratki

    Ogranicenje: oib je primarni kljuc relacije osoba.

    BEGIN TRANSACTION T1 ;UPDATE osoba

    SET ime = S t e f i c a , p r e z i m e = Jambrescak WHERE o i b = 3 ;

    INSERT INTO osoba ( prez ime , ime , o i b )VALUES( Lacko , Edmund , 4 ) ;

    COMMIT;

    Odredite stanje tablice osoba nakon izvrsenja transakcije T1.

    Rjesenje Medustanje nakon prvog izraza transakcije je:

    osoba oib ime prezime

    1 Ivek Presvetli2 Joza Prekratki3 Stefica Jambrescak

    Stanje nakon drugog izraza je:

    osoba oib ime prezime

    1 Ivek Presvetli2 Joza Prekratki3 Stefica Jambrescak4 Edmund Lacko

    Obzirom da nije doslo do narusavanja inetgritetnog ogranicenja, ovo je ujedno i konacno stanjetablice.

    Zadatak 2.16 Zadana je tablica s ogranicenjem i transakcija:

    zaposlenik oib ime prezime

    1 Stefica Ivanovic2 Ivek Marjanovic3 Joza Stojanovic

    Ogranicenje: oib je primarni kljuc relacije zaposlenik.

    BEGIN TRANSACTION T1 ;UPDATE osoba SET ime = Bar i ca WHERE ime LIKE % a n o v i % ;INSERT INTO z a p o s l e n i k VALUES( 2 , Bar i ca , P r i k r a t k i ) ;COMMIT;

    Odredite stanje tablice zaposlenik nakon izvrsenja transakcije T1.

    40

  • Rjesenje Medustanje nakon prvog izraza transakcije je:

    zaposlenik oib ime prezime

    1 Barica Ivanovic2 Barica Marjanovic3 Barica Stojanovic

    Nakon drugog izraza, medustanje je:

    zaposlenik oib ime prezime

    1 Barica Ivanovic2 Barica Marjanovic3 Barica Stojanovic2 Barica Prikratki

    Obzirom da je doslo do narusavanja integritetnog ogranicenja (ponavljanje vrijednosti primarnogkljuca), transakcija se prekida i vrijedi stanje koje je vrijedilo prije pocetka transakcije T 1, tj.:

    zaposlenik oib ime prezime

    1 Stefica Ivanovic2 Ivek Marjanovic3 Joza Stojanovic

    Zadatak 2.17 Zadana je tablica s ogranicenjem i transakcija:

    student jmbag ime prezime status

    1 Slavek Presvetli null2 Joza Jambrek upisan3 Barica Presvetli null

    Ogranicenje: jmbag je primarni kljuc relacije student.

    BEGIN TRANSACTION T1 ;UPDATE s t u d e n t SET s t a t u s = up i san WHERE s t a t u s I S NULL ;INSERT INTO osoba ( prez ime , ime , jmbag ) VALUES( P r e k r a t k i , I v e k , 4 ) ;COMMIT;

    Odredite stanje tablice student nakon izvrsenja transakcije T1.

    Rjesenje Prva naredba postavlja sve nepoznate statuse na upisan, zbog cega je stanje nakon prvenaredbe:

    student jmbag ime prezime status

    1 Slavek Presvetli upisan2 Joza Jambrek upisan3 Barica Presvetli upisan

    Druga naredba dodaje red u tablicu (obzirom da atribut status nije navedn upisuje se null vrijednost):

    student jmbag ime prezime status

    1 Slavek Presvetli upisan2 Joza Jambrek upisan3 Barica Presvetli upisan4 Ivek Prekratki null

    Obzirom da nije doslo do narusavanja integriteta, ovo je i konacno stanje tablice.

    41

  • 42

  • 3 Konceptualno oblikovanje baza podataka

    3.1 SBVR

    Zadatak 3.1 Zadan je sljedeci opis korisnickih zahtjeva:Svaki stol posluzuje samo jedan konobar. Konobar se raspoznaje prema svojoj sifri te ima svojeime i prezime. Stol se raspoznaje prema broju stola. Konobar moze posluziti vise stolova. Zasvaku narudzbu na nekom stolu konobar izdaje racun, pri cemu moze izdati i vise racuna. Racun seraspoznaje po broju racuna, a sadrzi datum i vrijeme posluzivanja, te stavke narudzbe kojih mozebiti vise, ali barem jedna. Svaka stavka se sastoji od proizvoda i narucene kolicine. Proizvod seraspoznaje po sifri te ima svoj naziv i jedinicnu cijenu.

    (a) Oblikujte SBVR opis ovih korisnickih zahjteva.

    (b) Nacrtajte odgovarajuci konceptualni (UML) dijagram.

    Rjesenje Rjesavamo pod (a). Ovaj je zadatak moguce rjesiti na vise nacina, pri cemu cemo se drzatipravila da idemo redom prema korisnickim zahtjevima (sto u praksi ne mora biti tako) te s ciljemda cemo iz ovog opisa kasnije oblikovati konceptualni model baze podataka. U nastavku je jednovalidno rjesenje:

    Svaki stol posluzuje barem jedan konobar.Svaki konobar ima tocno jednu sifru.Svaki konobar ima ime.Svaki konobar ima prezime.Svaki stol ima tocno jedan broj stola.Konobar moze posluziti vise stolova.Konobar za svaki stol izdaje vise racuna.Svaki racun ima tocno jedan broj racuna.Svaki racun sadrzi datum i vrijeme.Svaki racun sadrzi jednu ili vise stavki.Svaka stavka sadrzi proizvod.Svaka stavka sadrzi narucenu kolicinu.Svaki proizvod ima tocno jednu sifru.Svaki proizvod ima naziv.

    43

  • Svaki proizvod ima jedinicnu cijenu.

    Pri rjesenju smo se drzali konvencije da smo koncepte (entitete, atribute) oznacavali podebljanimslovima, predikate (veze, relacije) podvucenim slovima, a modalne operatore i kvantifikatore (multi-plicitet veza, ogranicenja) obicnim slovima.

    Rjesavamo pod (b). Iz SBVR specifikacije koncepte pretvaramo u entitete ako su slozeni (vezani uzpredikate ima, sadrzi, sastoji se od i sl.), odnosno atribute ako su jednostavni. Stoga su entiteti sodgovarajucim atributima:

    stol( broj stola )konobar( sifra, ime, prezime )racun( broj racuna, datum i vrijeme )stavka( proizvod, narucena kolicina )proizvod( sifra, naziv, jedinicna cijena )

    Pri cemu su podvuceni atributi dio primarnog kljuca. Obzirom da su koncepti stavka i proizvodslozeni, a istovremeno s desne strane predikata sadrzavanja, te veze se pretvaraju u agregacije.Takoder, veza izmedu stola, konobara i racuna je 3-arna jer se jedno posluzivanje uvijek veze uzjednog konobara, jedan stol i vise racuna. Stoga je UML Class dijagram ove SBVR specifikacije:

    Zadatak 3.2 Zadan je sljedeci opis korisnickih zahtjeva:

    Svako motorno vozilo jedinstveno je odredeno brojem sasije. Motorna vozila imaju marku, tip teodredenu vrstu goriva koju koriste. Vlasnik vozila u nekom trenutku moze biti samo jedna fizicka ilipravna osoba. Ako je vozilo registrirano dobiva jedinstvenu registarsku oznaku na razdoblje od godinudana. Svaka registarska oznaka za sobom povlaci odgovarajuci broj obavezne police osiguranja.Vozacka dozvola izdaje se za upravljanje motornim vozilima koja su svrstana u AM, A1, A2, A, B,B E, C1, C1 E, C, C E, D1, D1 E, D, D E, F, G i H kategorije vozila. Samo fizicka osoba koja imaodgovarajucu vozacku dozvolu smije upravljati odredenom kategorijom motornih vozila.

    (a) Oblikujte SBVR opis ovih korisnickih zahjteva.

    (b) Nacrtajte odgovarajuci konceptualni (UML) dijagram.

    Rjesenje

    44

  • 3.2 UML

    Zadatak 3.3 Neka je zadano poslovno pravilo u SBVR notaciji:

    PP: Svaki menadzer koordinira barem tri radnika.

    (a) Oblikujte UML dijagram.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Analizmo PP utvrdujemo da se radi o binarnoj relaciji izmedumenadzera i radnika, arnosti 3 ili vise. Stoga je UML dijagram:

    Rjesavamo pod (b). Jedna valjana konkretizacija je:

    koordinira menadzer radnik

    m1 r1m1 r2m1 r3

    Zadatak 3.4 Neka je zadano poslovno pravilo u SBVR notaciji:

    PP: Svaki taksista vozi s tocno jednog polazista na tocno jedno odrediste po tocno jednoj cijeni.

    (a) Oblikujte UML dijagram.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Analizom PP utvrdujemo da se radi o 4-arnoj relaciji vozi( taksista,polaziste, odrediste, cijena ). Stoga je UML dijagram:

    Rjesavamo pod (b). Jedna valjana konkretizacija je sljedeca:

    45

  • vozi taksista polaziste odrediste cijena

    t1 p1 o1 100t1 p1 o2 200t2 p2 o1 150

    Iz UML dijagrama je jasno da svaki taksista moze imati vise voznji, dok se jedna voznja (kombinacijapolazista, odredista i cijene) odnosi na tocno jednog taksistu.

    Zadatak 3.5 Neka su zadana poslovna pravila u SBVR notaciji:

    PP1: Svaki korisnik ima barem jednu e-mail adresu.PP2: Korisnici su prijatelji s drugim korisnicima.

    (a) Oblikujte UML dijagram.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Obzirom da je e-mail adresa jednostavni entitet (ne razlaze se dalje nadruge entitete), te obzirom da je dio relacije ima koja ukazuje na sadrzavanje, njega cemo prikazatikao atribut entiteta korisnik. Relacija je prijatelj s je rekurzivna jer spaja korisnike s korisnicima.Obzirom da je entitet korisnik s obje strane relacije u mnozini, kardinalnost veze je vise napremavise.

    Rjesavamo pod (b). Obzirom da je relacija je prijatelj s i multiplicitet veze je vise naprema vise,potrebno ju je predstaviti zasebnom tablicom. Jedna valjana konkretizacija je:

    ima korisnik e-mail adresa

    k1 e1k2 e2

    je prijatelj s korisnik korisnik

    k1 k2

    Zadatak 3.6 Neka je zadano poslovno pravilo u SBVR notaciji:

    PP: Svaki avion sadrzi barem dva krila.

    (a) Oblikujte UML dijagram.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Obzirom da je rijec o relaciji sadrzavanja, dijagram ce najbolje bitipredstavljen agregacijom ili tocnije kompozicijom (jer avion bez krila nije avion). Sljedeci dijagramje jedno moguce rjesenje:

    46

  • Rjesavamo pod (b). Sljedeca relacija je jedna valjana konkretizacija:

    sadrzi avion krilo

    a1 k1a1 k2

    Zadatak 3.7 Neka su zadana poslovna pravila u SBVR notaciji:

    PP1: Svaka knjiga ima jedan naslov.PP2: Svaka knjiga napisana je od jednog ili vise autora.PP3: Svaki autor napisao je jednu ili vise knjiga.

    (a) Oblikujte UML dijagram klasa koji je u skladu s navedenim poslovnim pravilima.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Obzirom da je naslov jednostavni entitet, prikazat cemo ga kaoatribut entiteta knjiga. Jedno moguce rjesenje prikazano je na sljedecoj slici.

    Rjesavamo pod (b). Obzirom da imamo specificnu situaciju (veza s obje strane ima multiplicitetvise), potrebno je uvesti slabi entitet na toj vezi ciji ce se primarni kljuc sastojati od primarnihkljuceva dvaju povezanih entiteta.

    ima knjiga naslov

    k1 n1k2 n2

    napisao knjiga autor

    k1 a1k1 a2k2 a1

    Zadatak 3.8 Neka su zadana poslovna pravila u SBVR notaciji:

    PP1: Svako vozilo ima tocno jedan broj sasije.PP2: Svaki vozac je zaduzen za jedno ili vise vozila.PP3: Svaki vozac je vlasnik tocno jednu vozacku dozvolu.

    (a) Oblikujte UML dijagram klasa koji je u skladu s navedenim poslovnim pravilima.

    (b) Napisite jednu valjanu konktretizaciju (tablicno).

    Rjesenje Rjesavamo pod (a). Analizom poslovnih pravila uvidamo da su entiteti broj sasije ivozacka dozvola jednostavni (ili su dio relacije ima ili se ne razlazu se dalje) zbog cega cemo ihprikazati kao atribute odgovarajucih entiteta.

    47

  • Rjesavamo pod (b). Jedna valjana konkretizacija je sljedeca:

    ima vozilo broj sasije

    a1 b1a2 b2a3 b3

    je vlasnik vozac vozacka dozvola

    v1 vd1v2 vd2

    zaduzen vozac vozilo

    v1 a1v2 a2v2 a3

    Zadatak 3.9 Neka je zadan UML dijagram kao sto slijedi:

    NAPOMENA: Znak * predstavlja vezu 0 ili vise (0:N), a 1 je kardinalnost 1 i samo 1 (1:1).

    (a) Pretvorite dijagram u relacijski model.

    (b) Implementirajte model koristeci SQL.

    Rjesenje Rjesavamo pod (a). Obzirom da je rijec o ternarnoj vezi potrebno ju je predstaviti zaseb-nom relacijom. Relacijski model je tada:

    stol( broj stola )racun( broj racuna, datum i vrijeme, iznos )konobar( sifra, ime, prezime )izdaje( stol, konobar, racun )

    Pri cemu atributi podvuceni crtkasto predstavljaju vanjske kljuceve iz drugih relacija.Rjesavamo pod (b). Implementacija je sljedeca:

    CREATE TABLE s t o l ( b r o j s t o l a INTEGER PRIMARY KEY

    )

    CREATE TABLE r a c un ( b r o j r a c una INTEGER PRIMARY KEY,datum i v r i j e m e DATETIME,i z n o s DECIMAL

    )

    CREATE TABLE konobar (

    48

  • s i f r a BIGINT PRIMARY KEY,ime VARCHAR( 2 0 ) ,p r e z i m e VARCHAR( 2 5 )

    )

    CREATE TABLE i z d a j e (s t o l INTEGER REFERENCES s t o l ( b r o j s t o l a ) ,konobar BIGINT REFERENCES konobar ( s i f r a ) , r a c un INTEGER REFERENCES r a c un ( b r o j r a c una ) ,PRIMARY KEY( s t o l , konobar , r a c un )

    )

    Zadatak 3.10 Neka je zadan UML dijagram kao sto slijedi:

    NAPOMENA: Znak * predstavlja vezu 0 ili vise (0:N), a 1 je kardinalnost 1 i samo 1 (1:1).

    (a) Pretvorite dijagram u relacijski model.

    (b) Implementirajte model koristeci SQL.

    Rjesenje Rjesavamo pod (a). Obzirom na vezu jedan naprema vise potrebno je u relaciju igracuvrstiti vanjski kljuc iz relacije klub. Stoga je relacijski model kao sto slijedi:

    klub( sifra, naziv, adresa, telefonski broj )igrac( oib, ime, prezime, pozicija, klub )

    Rjesavamo pod (b). SQL implementacija je kao sto slijedi:

    CREATE TABLE k l u b ( s i f r a INTEGER PRIMARY KEY,n a z i v VARCHAR( 3 0 ) ,a d r e s a TEXT, t e l e f o n s k i b r o j VARCHAR( 1 5 )

    )

    CREATE TABLE i g r a c (o i b BIGINT PRIMARY KEY,ime VARCHAR( 2 0 ) ,p r e z i m e VARCHAR( 2 5 ) ,p o z i c i j a VARCHAR( 1 0 ) ,k l u b INTEGER REFERENCES k l u b ( s i f r a )

    )

    49

  • 3.3 Medurelacijska ogranicenja

    Zadatak 3.11 Zadane su relacije (predikati) sljedecim tablicama:

    r A B C

    1 2 12 2 13 4 3

    s B C D

    2 3 11 1 12 2 4

    Neka je zadano medurelacijsko ogranicenje:

    H = (t r)[(t(B) < 3 t(A) = 3) (u s)(u(CD) = t(AC ))]

    Ispitati je li H vrijedi za relacije r i s.

    Rjesenje

    Zadatak 3.12 Zadane su relacije (predikati) sljedecim tablicama:

    r A B C

    a a cc b ab b c

    s B C D

    a b cb a cc b d

    Neka je zadano medurelacijsko ogranicenje:

    H = (t r)[(t(B) = b t(B) = c) (u s)(u(BC ) = t(BC ))]

    Ispitati je li H vrijedi za relacije r i s .

    Rjesenje

    50

  • 4 Logicko oblikovanje baza podataka

    4.1 1NF

    Zadatak 4.1 Zadana je relacijska shema R = ABC pri cemu je

    Dom(A) = {1, 2, 3}Dom(B) = {{1, 2, 3}, {1, 2}}Dom(C ) = {a, b, c}

    (a) Napisite jednu valjanu relaciju r(R)

    (b) Provjerite je li R u 1NF, te ukoliko nije predlozite rjesenje.

    (c) Prikazite sada relaciju r koristeci svoje rjesenje.

    Rjesenje Rjesavamo pod (a). Relacija r(R) pod vrijednostima odgovarajucih atributa smije imatisamo vrijednosti odredene njihovom domenom. Stoga je jedna moguca valjana relacija:

    r A B C

    1 {1, 2} a3 {1, 2, 3} a1 {1, 2} c

    Rjesavamo pod (b). Vidimo da domena atributa B sadrzi slozene vrijednosti (skupove) zbog cega Rnije u 1NF. Jedno moguce rjesenje je uvodenje identiteta svakog skupa iz Dom(B) i uvodenje novogatributa koji se dobiva rastavljanjem atributa B. Neka je atribut identiteta oznacen s I (B), a noviatribut s B . R sada postaje R = A I (B) B C , a domene novih atributa:

    Dom(A) = {1, 2, 3}Dom(I (B)) = {o1, o2}

    Dom(B ) = {1, 2, 3}Dom(C ) = {a, b, c}

    51

  • Uocite da smo za svaki skup u Dom(B) uveli po jedan identitet objekta (oi , i = 1, 2), te da smodomenu atributa B dobili kao uniju svih skupova iz Dom(B).

    Rjesavamo pod (c). Relaciju r(R ) sada mozemo prikazati kao:

    r A I (B) B C1 o2 1 a1 o2 2 a3 o1 1 a3 o1 2 a3 o1 3 a1 o2 1 c1 o2 2 c

    Zadatak 4.2 Zadana je relacijska shema R = ABC pri cemu je

    Dom(A) = {x , y , z}Dom(B) = {1, 2, 3, 4, 5}Dom(C ) = {(1, 1), (1, 2), (2, 1), (2, 2)}

    Pri cemu je (X , Y ) uredeni par X i Y .

    (a) Napisite jednu valjanu relaciju r(R)

    (b) Provjerite je li R u 1NF, te ukoliko nije predlozite rjesenje.

    (c) Prikazite sada relaciju r koristeci svoje rjesenje.

    Rjesenje Rjesavamo pod (a). Sljedeca relacija r je valjana:

    r A B C

    x 4 (1, 2)x 2 (1, 1)y 1 (1, 2)

    Rjesavamo pod (b). Relacijska shema nije u 1NF zbog toga sto je atribut C slozen. Stoga uvodimoDom(C ) = {o1, o2, o3, o4} pri cemu je o1 = (1, 1), o2 = (1, 2), o3 = (2, 1) i o4 = (2, 2). Obzirom daje rijec o uredenim parovima tj. n-torkama, mozemo ih izdvojiti u posebnu relaciju kako bi ocuvaliporedak. Da smo primjenili rjesenje kao u zadatku 4.1, izgubili bismo informaciju o tome koji jeelement prvi, a koji drugi u uredenom paru.

    Rjesavamo pod (c). Sljedece dvije relacije daju siru1 informaciju kao i relacija r iz podzadatka (a).Oznake atributa P1 i P2 su proizvoljne.

    r A B Cx 4 o2x 2 o1x 1 o2

    r C P1 P2o1 1 1o2 1 2o3 2 1o4 2 2

    1U relaciji r iz podzadatka a nismo imali informaciju o svim mogucim vrijednostima koje moze poprimit atribut C ,iako je to zadano njegovom domenom.

    52

  • 4.2 2NF

    Zadatak 4.3 Zadana je relacijska shema (R, F ), R = ABCD i

    F : A CAB D

    Provjerite je li (R, F ) u 2NF, te ako nije napravite 2NF dekompoziciju koja cuva informaciju izavisnosti.

    Rjesenje Prvo trazimo kljuc. Prema kljucnom triku, atributi A i B moraju biti dio svakog kljuca(AB K ). Provjeravamo prvo je li AB kljuc, racunanjem zatvaraca:

    (AB)+F = ABCD

    Zakljucujemo da je K = AB jedini kljuc. Provjeravamo postoji li parcijalna zavisnost nekljucnogatributa od kljuca (uvjet 2NF). Kljucni atributi su AB, a nekljucni CD. Uocavamo da vrijedi z1 :AB C i z2 : A C , zbog cega je z1 parcijalna zavisnost. Stoga, zakljucujemo da (R, F ) nije u2NF. Radimo dekompoziciju preko z2, obzirom da ona narusava 2NF:

    ABCD

    A C

    AC ABD

    Stoga je dekompozicija d(R) : AC , ABD. Dalje, provjeravamo svaku od komponenti je li u 2NF.Komponenta AC je u 2NF jer (obzirom da ne vrijede nestandardne zavisnosti) ne postoji dvokompo-nentna relacijska shema koja nije u 2NF. Za komponentu ABD vrijedi AB D i ne vrijede nikakvedruge netrivijalne funkcijske zavisnosti sto lako mozemo provjeriti racunanjem projekcije skupa zav-isnosti na ABD:

    Provjeravamo redom moguce netrivijalne zavisnosti:

    A B A+F = AC B * ACA D D * ACB A B+F = B A * BB D D * BD A D+F = D A * DD B B * D

    AB D (AB)+F = ABCD D ABCDXAD B (AD)+F = ACD B * ACDBD A (BD)+F = BD A * BD

    Shodno tome provjeravamo je li (ABD, {AB D}) u 2NF. Obzirom da je skup atributa AB biokljuc u (R, F ), tj. na visoj razini, on se naslijeduje u dekompoziciji, stoga je K = AB. Provjeravamo,postoji li parcijalna zavisnost nekljucnog atributa od kljuca. Kljucni atributi su AB, a nekljucni D.Moguci uzrocnici parcijalne zavisnosti su A D i B D, no niti jedna od njih ne vrijedi, stomozemo iscitati iz prethodne projekcije skupa zavisnosti. Stoga zakljucujemo da je komponentaABD u 2NF. Konacno zakljucujemo da je dekompozicija d(R) : AC , ABD 2NF dekompozicija kojacuva informaciju i zavisnosti. Kljucevi ove dekompozicije A za komponentu AC (jer je A C ) i ABza komponentu ABD.

    53

  • Zadatak 4.4 Zadana je relacijska shema (R, F ), R = ABCD i

    F : B CB AD

    Provjerite je li (R, F ) u 2NF, te ako nije napravite 2NF dekompoziciju koja cuva informaciju izavisnosti.

    Rjesenje Trazimo kljuc. Prema kljucnom triku:

    B+F = BCAD

    Stoga je K = B jedini kljuc. Obzirom da je K jednokomponentni kljuc (a ne postoje nestandardnezavisnosti oblika X ), zakljucujemo da nije moguce pronaci parcijalnu zavisnost nekljucnogatributa od kljuca. Stoga je zadani (R, F ) u 2NF.

    4.3 3NF

    Zadatak 4.5 Zadana je relacijska shema (R, F ), R = ABCDEF i

    F : AE CA DEC BD

    AC BEProvjerite je li (R, F ) u 3NF, te ako nije, napravite dekompoziciju pomocu algoritma 3NF sinteze.

    Rjesenje Prvo trazimo kljuc. Prema kljucnom triku AF mora biti komponenta svakog kljuca. Prov-jeravamo je li AF kljuc:

    (AF )+F = AFDECB

    Zakljucujemo da je K = AF jedini kljuc. Stoga su kljucni atributi AF , a nekljucni BCDE . Pokusavamokonstruirati tranzitivni dijagram:

    Dijagram vrijedi jer:

    AF C (AF )+F = AFDECB CC D C+F = CBD DC 9 AF C+F = CDB + AF

    I zato jer je C D netrivijalna funkcijska zavisnost. Zakljucujemo da (R, F ) nije u 3NF jer postojitranzitivna zavisnost nekljucnog atributa od kljuca.Primjenjujemo algoritam 3NF sinteze. Prvo racunamo kanonski pokrivac kp(F ). Prvi korak je desnorazbijanje:

    F = draz(F ) : AE CA DA EC BC D

    AC BAC E

    54

  • Sljedeci korak je lijeva redukcija. Provjeravamo one zavisnosti koje s lijeve strane imaju vise odjednog skupa atributa.Provjeravamo AE C :

    A C A+F = ADECB C XE C E+F = E + C

    Zavisnost A C vrijedi, tj. mozemo izbaciti komponentu E odnosno reducirati zavisnost AE Cu A C .Provjeravamo AC B:

    A C A+F = ADECB B XC C C+F = CBD + B X

    Obje zavisnosti vrijede, tj. mozemo izbaciti proizvoljnu komponentu. Ovdje cemo se odluciti zaA B (moguce je uzeti i drugu zavisnost).Provjeravamo AC E :

    A C A+F = ADECB E XC C C+F = CBD + E

    Zavisnost A E vrijedi, tj. mozemo izbaciti komponentu C odnosno reducirati zavisnost AC Eu A E . Obzirom da je ta zavisnost vec u F mozemo ju izbaciti.Stoga je lijeva redukcija:

    F = lred(F ) : A CA DA EC BC DA B

    Slijedi treci korak, a to je izbacivanje redundantnih zavisnosti. Za svaku zavisnost iz F provjeravamoje li proizlazi iz preostalih zavisnosti.Provjeravamo A C :

    A+F ost = ADEB + C

    Zavisnost ne mozemo izbaciti.Provjeravamo A D:

    A+F ost = ACEBD D XZavisnost izbacujemo.Provjeravamo A E :

    A+F ost = ACB + E

    Zavisnost ne mozemo izbaciti.Provjeravamo C B:

    C+F ost = CD + B

    Zavisnost ne mozemo izbaciti.Provjeravamo C D:

    55

  • C+F ost = CB + D

    Zavisnost ne mozemo izbaciti.Provjeravamo A B:

    A+F ost = ACEB B XZavisnost izbacujemo.Iz navedenog proizlazi da je kanonski pokrivac:

    kp(F ) : A CA EC BC D

    Sljedeci korak 3NF sinteze je sinteza komponenti. Nju dobivamo tako da od svake zavisnosti spajamolijevu i desnu stranu, tj.:

    d(R) : AC , AE , CB, CD

    Sljedeci korak je dodavanje globalnog kljuca, ako on nije sadrzan u niti jednoj od komponenti.Obzirom da je to ovdje slucaj, dodajemo komponentu AF , tj.

    d(R) : AC , AE , CB, CD, AF

    Sljedeci korak je smanjivanje broja komponenti dekompozicije iz kanonskog pokrivaca uz eliminacijupodskupova, tj.:

    d(R) : ACE , CBD, AF

    U ovom slucaj nismo imali podskupova. Konacno, 3NF dekompozicija dobivena 3NF sintezom jed(R): ACE, CBD, AF sto je i rjesenje zadatka. Kljucevi u komponentama su podvuceni, a proizlazeiz kp(F ) i globalnog kljuca.

    Zadatak 4.6 Zadana je relacijska shema (R, F ), R = ABCDE i

    F : B CA DC BD

    AB EProvjerite je li (R, F ) u 3NF, te ako nije, napravite dekompoziciju pomocu algoritma 3NF sinteze.

    Rjesenje Trazimo kljuc. Prema kljucnom triku:

    A+F = AD

    Stoga A nije kljuc, pa ga je potrebno prosirivati dok ne dobijemo kljuc.

    (AB)+F = ABCDE X(AC )+F = ACDBE X(AD)+F = AD

    (AE )+F = AED

    56

  • Stoga su kljucevi K1 = AB i K2 = AC . Kljucni su atributi A, B i C , a nekljucni D i E . Provjeravamoje li postoji tranzitivna zavisnost nekljucnog atributa od kljuca i nalazimo sljedeci tranzitivno dijagram:

    Dijagram vrijedi jer:

    AB C (AB)+F = ABCDE CC D C+F = CBD DC 9 AB C+F = CDB + AB

    Primjenjujemo algoritam 3NF sinteze. Racunamo kp(F ) tj. prvi korak desno razbijanje:

    draz(F ) : B CA DC BC D

    AB ESljedeci korak je lijeva redukcija. Pokusati lijevo reducirati mozemo samo zavisnost AB E :

    A E A+F = AD + EB E B+F = BCD + E

    Stoga nije moguce lijevo reducirati ovu zavisnost. Prelazimo na korak izbacivanja redundantnihzavisnosti.

    Provjeravamo B C :

    B+F ost = B + C

    Zavisnost ne mozemo izbaciti.

    Provjeravamo A D:

    A+F ost = A + D

    Zavisnost ne mozemo izbaciti.

    Provjeravamo C B:

    C+F ost = C + B

    Zavisnost ne mozemo izbaciti.

    Provjeravamo C D:

    C+F ost = C + D

    Zavisnost ne mozemo izbaciti.

    Provjeravamo AB E :

    (AB)+F ost = ABCD + E

    Zavisnost ne mozemo izbaciti.

    Iz toga slijedi, da ne mozemo izbaciti niti jednu od zavisnosti, sto znaci da je kanonski pokrivac:

    57

  • kp(F ) : B CA DC BC D

    AB EPrelazimo na sintezu komponenti:

    d(R) : AD, CB, CD, ABE

    Smanjujemo broj komponenti (nema podskupova):

    d(R) : AD, CBD, ABE

    U ovom slucaju nije potrebno dodavati globalni kljuc, obzirom da je jedan ok kljuceva sadrzan ukomponenti ABE . Stoga je konacno rjesenje d(R): AD, CBD, ABE.

    Zadatak 4.7 Zadani su R = ABCD i F F (R):

    F : A CA BD

    Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju i zavisnostikoristeci algoritam 3NF sinteze.

    Rjesenje Trazimo kljuc. Primjernom kljucnog trika A je dio svakog kljuca.

    A+F = ACBD RCime zakljucujemo da je A jedini kljuc. Stoga je kljucni atribut A, a nekljucni BCD. Obzirom dane postoji niti jedna funkcijska zavisnost u F koja s lijeve strane ne sadrzi kljuc (sto je budi recenoujedno i uvjet za BCNF ), nije moguce konstruirati tranzitivni dijagram. Samim time jasno je da je(R, F ) u 3NF i nije potrebna daljnja normalizacija.

    Zadatak 4.8 Zadani su R = ABCDE i F F (R):

    F : A BCD BC ADB D

    Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju i zavisnostikoristeci algoritam 3NF sinteze.

    Rjesenje

    Zadatak 4.9 Zadani su R = ABCDE i F F (R):

    F : A BCE BC ADB D

    Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju i zavisnostipomocu algoritma 3NF sinteze.

    Rjesenje

    58

  • 4.4 BCNF

    Zadatak 4.10 Zadana je relacijska shema (R, F ), R = ABCDE i

    F : C ABD A

    BE CE B

    Provjerite je li (R, F ) u BCNF, te ako nije napravite BCNF dekompoziciju.

    Rjesenje Prvo trazimo kljuc. Prema kljucnom triku DE je dio svakog kljuca. Provjeravamo je li DEkljuc:

    (DE )+F = DEABC

    Zakljucujemo da je DE jedini kljuc. Obzirom da postoji netrivijalna funkcijska zavisnost koja s lijevestrane ne sadrzi kljuc u F+ (u ovom slucaju sve zavisnosti iz F imaju to svojstvo), zakljucujemo da(R, F ) nije u BCNF. Odabiremo zavisnot C AB za dekompoziciju (ovjde je bilo moguce odabratibilo koju drugu zavisnost iz F , pa su stoga moguca i druga rjesenja).Obavljamo dekompoziciju:

    ABCDE

    C AB

    CAB CDE

    Dobivamo dekompoziciju d(R): CAB, CDE.Provjeravamo za svaku od komponenti je li u BCNF.Racunamo projekciju skupa zavisnosti na CAB:

    A B A+F = A B * AA C C * AB A B+F = B A * BB C C * BC A C+F = CAB A ABCXC B B ABCX

    AB C (AB)+F = AB C * ABAC B (AC )+F = ACB B ABCXBC A (BC )+F = BCA A ABCX

    Vidimo da svaka od zavisnosti C A, C B, AC B i BC A koje vrijede u CAB sadrze kljucC sa svoje lijeve strane. Stoga zakljucujemo da je komponenta CAB u BCNF.Racunamo projekciju skupa zavisnosti na CDE :

    C D C+F = CAB D * ABCC E E * ABCD C D+F = DA C * ADD E E * ADE C E+F = EBCA C ABCEXE D D * ABCE

    CD E (CD)+F = CDAB E * ABCDCE D (CE )+F = CEAB D * ABCDE C (DE )+F = DEABC C ABCDEX

    59

  • Vidimo da zavisnost E C s lijeve strane ne sadrzi kljuc DE , sto znaci da komponenta CDE nijeu BCNF. Stoga obavljamo dekompoziciju po zavisnosti koja narusava BCNF.

    CDE

    E C

    EC ED

    Obzirom da smo dobili samo dvokomponentne sheme, zakljucujemo da su obje u BCNF i da nijepotrebna daljnja provjera. Stoga je konacna BCNF dekompozicija d(R): CAB, CE, DE .

    4.5 4NF

    Zadatak 4.11 Zadani su R = ABCDE i F FVS(R):

    F : AC DEAB C

    Provjerite je li (R, F ) u 4NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju.

    Rjesenje

    4.6 5NF

    Zadatak 4.12 Zadani su R = ABCD i F FVS(R):

    F : A CDB A

    oo(AB, CD)

    Provjerite je li (R, F ) u 5NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju.

    Rjesenje

    Zadatak 4.13 Zadani su R = ABCD i F FVS(R):

    F : A BDB D

    B ACA C

    B Aoo(AB, ACD)

    Provjerite je li (R, F ) u 5NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju.

    Rjesenje

    60

  • 4.7 6NF

    Zadatak 4.14 Zadani su R = ABCD i F FVS(R):

    F : A BAD B

    oo(A, B)

    Provjerite je li (R, F ) u 6NF , te ukoliko nije napravite dekompoziciju koja cuva informaciju.

    Rjesenje

    4.8 Implikacijski problemi

    Zadatak 4.15 Zadani su R = ABCD i F FVSZ (R):

    F : A BCC D

    C ARjesite implikacijski problem:

    F |= oo (AD, ABC )Rjesenje Obzirom da se zavisnost spoja oo (AD, ABC ) prema pravilu pretvaranja funkcijskih iviseznacnih zavisnosti u zavisnosti spoja, moze zapisati i kao A D dovoljno je primjeniti zatvarac:

    A+F : ABCD Diz cega slijedi da je F |= oo (AD, ABC ).

    Rjesenje chase postupkom takoder je valjano: konstruiramo tablicu T0 i redom primjenjujemo trans-formacije preko zavisnosti u F u potrazi za ciljnim retkom:

    T0 A B C D

    AD a1 b12 b13 a4ABC a1 a2 a3 b24

    ABCT1 A B C D

    a1 a2 a3 a4a1 a2 a3 b24

    Vidimo da vec u prvoj iteraciji dobivamo ciljni redak cime smo dokazali da F |= oo (AD, ABC ).Zadatak 4.16 Zadani su R = ABCD i F FVSZ (R):

    F : B BCBC Doo (AD, ABC )

    Rjesite implikacijski problem:

    F |= A DRjesenje Obzirom da zelimo dokazati viseznacnu zavisnost, moramo ju prvo pretvoriti u zavisnostspoja kako bi (eventualno) primjenili chase postupak.

    A D = oo (AD, ABC )Pretvorbom vidimo da smo dobili zavisnost spoja koja se nalazi u F zbog cega zakljucujemo da vrijediF |= A D.

    61

  • Zadatak 4.17 Zadani su R = ABCD i F FVSZ (R):

    F : A BCC D

    C ARjesite implikacijski problem:

    F |= oo (AD, ABC )

    Rjesenje Problem mozemo rjesiti na vise nacina. Ovdje cemo se posluziti saznanjem, da vrijedi AD |= oo (AD, ABC ), uz napomenu da obrat ne vrijedi. Stoga mozemo rjesiti (strozi) implikacijskiproblem:

    F |= A DIz zavisnosti A BC proizlazi da vrijede zavisnosti A B i A C , prema pravilu desnog razbijanja.Stoga, obzirom na pravilo tranzitivnosti (A C i C D) vrijedi A D, sto smo htjeli i dokazati.Prema tome, vrijedi i:

    F |= oo (AD, ABC )

    Zadatak 4.18 Zadani su R = ABCD i F FVSZ (R):

    F : B ACC D

    C ARjesite implikacijski problem:

    F |= oo (BD, ABC )

    Rjesenje

    62

  • 5 Napredne baze podataka

    5.1 Deduktivne baze podataka

    Zadatak 5.1 Neka je zadana deduktivna baza podataka DBP = (EBP, IBP,):

    EBP :

    r A B

    a bb cc a

    s B C

    b ac bb b

    IBP :p1 : p(x , y) r(x , y)p2 : p(x , y) s(x , y),r(y , x)

    (a) Pod pretpostavkom da je domena D = {a, b, c} izracunajte model za DBP pomocu relacijskihoperatora.

    (b) Izracunajte upit U : AB(A=a(r oo s)) p (pod pretpostavkom da su relacijske sheme od r ip ekvivalentne).

    Rjesenje

    Zadatak 5.2 Neka je zadana deduktivna baza podataka DBP = (EBP, IBP,):

    EBP :

    r A B

    a bc ca a

    s B C

    b ac bc b

    IBP :p1 : p(x , y) r(a, y), s(c, x)p2 : p(x , y) s(x , y),r(y , x)

    (a) Pod pretpostavkom da je domena svih atributa D = {a, b, c} izracunajte model za DBP pomocurelacijskih operatora.

    63

  • (b) Izracunajte upit U : AB(A=a(r oo s)) p (pod pretpostavkom da su relacijske sheme od r ip ekvivalentne).

    Rjesenje

    Zadatak 5.3 Zadana je DBP

    EBP :

    r A B

    1 22 32 43 5

    IBP :p1 : p(x , y) r(x , y)p2 : p(x , y) r(x , z), p(z , y)p3 : p(x , y) p(y , x)

    Napisati model za DBP racunajuci pravila pomocu relacijske algebre.

    Rjesenje

    Zadatak 5.4 Neka je zadana deduktivna baza podataka DBP = (EBP, IBP,):

    EBP :

    r A B

    a bb cc a

    s B C

    b ac bb b

    IBP :p1 : p(x , y) r(x , z), r(z , y)p2 : p(x , y) s(x , y),r(y , x)

    (a) Pod pretpostavkom da je domena D = {a, b, c} izracunajte model za DBP pomocu relacijskihoperatora.

    (b) Izracunajte upit U : AC (r oo s) p (pod pretpostavkom da su relacijske sheme od r i pekvivalentne).

    Rjesenje

    5.2 Poopcene baze podataka

    Zadatak 5.5 Neka je zadana relacija

    64

  • r A B C (D E (F G )))

    1 2 32 21 0

    1 2 42 21 10 1

    Izracunajte GrH(A B)(ABFG (RaC(D F G)(RaE(F G)(r))))

    Rjesenje

    Zadatak 5.6 Neka je zadana relacija

    r A B C (D E (F G )))

    1 2 32 21 0

    1 2 32 21 10 1

    Izracunajte GrH(A B)(ABFG (F=2(RaC(D F G)(RaE(F G)(r))))

    Rjesenje

    Zadatak 5.7 Neka je zadana relacija

    r A B C (D E (F G )))

    1 2 32 21 0

    1 2 42 23 10 1

    65

  • Izracunajte GrH(A B)(ABF (RaC(D F G)(RaE(F G)(r))))

    Rjesenje

    Zadatak 5.8 Neka su zadane relacije r1(R1), r2(R2)

    r1 A B(C D)

    12 11 0

    22 21 11 0

    r2 D E B(C D)

    2 11 01 1

    0 1 2 1

    Izracunajte pr2.B(pF (r1 r2)), gdje je F : (r2.B r1.B) (A > 1)

    Rjesenje

    Zadatak 5.9 Neka je zadana relacija

    r A B C (D E (F G )))

    1 2 32 21 0

    1 2 32 23 11 0

    Izracunajte GrH(B F )(ABF (RaC(D F G)(RaE(F G)(r)))

    Rjesenje

    Zadatak 5.10 Neka je zadana poopcena relacija r .

    r A B C (D E (F G )))

    1 2 32 21 0

    1 2 42 21 10 1

    66

  • Izracunajte GrH(B F G)(ABFG (RaC(D F G)(RaE(F G)(r))))

    Rjesenje

    5.3 Parcijalne baze podataka

    Zadatak 5.11 Neka je zadana parcijalna relacija r :

    r A B C

    a b ?b ? c

    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

    Rjesenje

    Zadatak 5.12 Neka su zadane parcijalne relacije r i s:

    r A B C

    1 ? 21 3 ?

    s B D E

    ? 1 23 2 ?? 4 ?

    Temeljem simbolicke jednakosti (J2) izracunajte:

    (a) ADE (r oo s)

    (b) NB>C (AC oo B(s))

    Rjesenje

    Zadatak 5.13 Zadane su relacije r i s te formula F :

    r A B C

    1 2 12 2 ?

    s B C D

    2 ? 22 1 32 1 ?

    F : (A 6 D) (D 6=?)Izracunajte temeljem apsolutne jednakosti (J1), sljedeci relacijski izraz:

    r1 = F (ABD(AC (r) oo s)

    Rjesenje

    67

  • Zadatak 5.14 Zadane su relacije:

    r A B C

    1 2 12 2 ?

    s B C D

    2 ? 22 1 32 1 ?

    i formula F : (A 6 D) (D 6=?).

    (a) izracunajte temeljem J1, sljedeci relacijski izraz:

    r1 = F (ABD(r oo s)

    (b) ispitajte u relaciji r je li A C slabo vrijedi(c) ispitajte u relaciji s jea li C BD strogo ne vrijedi (strogo ne vrijedi i ne vrijedi strogo ne

    znaci isto!)

    Rjesenje

    5.4 Temporalne baze podataka

    Zadatak 5.15 Neka je zadana temporalna relacija r i formula F :

    r A B C

    1 2 [1, 31 2 [3, 52 3 [1, 31 3 [2, 4

    F : [(A < 2) (B > 2)] (C prije [4, 5)

    IzracunajteiZC (F (r))

    Rjesenje

    Zadatak 5.16 Neka je zadana temporalna relacija r i formula F :

    r A B C

    1 2 [1, 31 2 [3, 52 3 [1, 31 3 [2, 4

    F : [(A < 2) (B > 2)] (C prije [4, 5)Izracunajte:

    (a)i

    OC (BC (r))

    (b)iZC (F (r))

    Rjesenje

    68

    1 Relacijska algebra1.1 Izracun upita1.2 Relacijska algebra i SQL

    2 SQL2.1 Kreiranje tablica2.2 Upiti2.3 Transakcije

    3 Konceptualno oblikovanje baza podataka3.1 SBVR3.2 UML3.3 Meurelacijska ogranicenja

    4 Logicko oblikovanje baza podataka4.1 1NF4.2 2NF4.3 3NF4.4 BCNF4.5 4NF4.6 5NF4.7 6NF4.8 Implikacijski problemi

    5 Napredne baze podataka5.1 Deduktivne baze podataka5.2 Poopcene baze podataka5.3 Parcijalne baze podataka5.4 Temporalne baze podataka