Zbirka zadataka iz baza podataka

September 2, 2017 | Author: Markus Schatten | Category: N/A
Share Embed Donate


Short Description

Zadaci i rješenja za baze podataka FOI...

Description

Doc. dr. sc. Markus Schatten

Zbirka rjeˇsenih zadataka iz baza podataka

Sadrˇzaj

1 Relacijska algebra 1.1 Izraˇcun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1 1 11

2 SQL 2.1 Kreiranje tablica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Upiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Transakcije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25 25 31 38

3 Konceptualno oblikovanje baza podataka 3.1 SBVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Medurelacijska ograniˇcenja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43 43 45 50

4 Logiˇ cko oblikovanje baza podataka 4.1 1NF . . . . . . . . . . . . . . . 4.2 2NF . . . . . . . . . . . . . . . 4.3 3NF . . . . . . . . . . . . . . . 4.4 BCNF . . . . . . . . . . . . . . 4.5 4NF . . . . . . . . . . . . . . . 4.6 5NF . . . . . . . . . . . . . . . 4.7 6NF . . . . . . . . . . . . . . . 4.8 Implikacijski problemi . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

51 51 53 54 59 60 60 61 61

5 Napredne baze podataka 5.1 Deduktivne baze podataka 5.2 Poop´cene baze podataka . 5.3 Parcijalne baze podataka . 5.4 Temporalne baze podataka

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

63 63 64 67 68

. . . .

. . . .

. . . .

i

ii

Predgovor

Ova zbirka rjeˇsenih zadataka je pokuˇsaj akumulacije svih razliˇcitih vrsta zadataka koji se mogu pojaviti na ispitima iz kolegija Baze podataka na studiju Primjena informacijske tehnologije u poslovanju, Fakulteta organizacije i informatike u Varaˇzdinu (poglavlja 1., 2. i 3 osim potpoglavlja 3.3), zatim kolegija Teorija baza podataka na studiju Baze podataka i baze znanje, Fakulteta organizacije i informatike u Varaˇzdinu (djelomiˇcno poglavlje 4. te poglavlje 5.), te kolegija Administracija podatkovnih baz na Fakulteti za informacijske ˇstudije u Novom Mestu (poglavlja 3. i djelomiˇcno 4.), kao i drugih vrsta zadataka vezanih uz podruˇcje baza podataka. Zbirka je nedovrˇsena i nerecenzirana te stoga nije mjerodavna literatura za kolegij. To ˇsto je nedovrˇsena znaˇci da je mogu´ce da postoje vrste zadataka koje se u njoj ne obraduju, a mogu se pojaviti na ispitu. To ˇsto je nerecenzirana znaˇci da nije pregledana od struˇcnog povjerenstva i lako moˇze sadrˇzavati pogreˇske. Ako u tekstu uoˇcite pogreˇsku, molim da ju javite na [email protected]. Prijelom zbirke izraden je u LATEX 2ε okruˇzju.Ovaj rad zaˇsti´cen je Creative Commons licencom i to Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)1

1

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

iii

iv

1 Relacijska algebra

1.1

Izraˇ cun upita

Zadatak 1.1 Zadane su relacije i ograniˇcenje: r1 A B C 1 0 2 2 0 2 2 1 3

r2 B C 1 1 0 2 0 2

F = (A = D) Neka je zadan upit RA(U): σF (ΠAD (r1 oo r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 oo r2 A B C 1 0 2 s1 = 1 0 2 2 0 2 2 0 2 ΠAD (s1 ) A D 1 2 s2 = 1 3 2 2 2 3 t1 : (1 = 2) ≡ ⊥ t2 : (1 = 3) ≡ ⊥ 1

D 2 3 2 3

D 2 2 3

t3 : (2 = 2) ≡ > t4 : (2 = 3) ≡ ⊥ σF (s2 ) A D 2 2 Zadatak 1.2 Zadane su relacije i ograniˇcenje: r2 A B C 1 1 2 2 0 2 3 2 3

r1 A B C 1 3 1 2 0 2

F = (A > B) ∨ (C 6= 2) Neka je zadan upit RA(U): ΠAB (σF (r1 ∪ r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 ∪ r2 A B C 1 3 1 s1 = 2 0 2 1 1 2 3 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) ≡ > ∨ > ≡ > σF (s1 ) A B C 1 3 1 s2 = 2 0 2 3 2 3 ΠAB (s2 ) A B 1 3 2 0 3 2 Zadatak 1.3 Zadane su relacije i ograniˇcenje r

A B C 1 3 1 2 0 2

s B C 1 1 3 2

D 2 3

H = [(A 6 s.C ) ∨ (r .B > s.B)] ⇒ (A < s.C ) Izraˇcunajte AC (Πr .C ,s.B (σH (r ⊗ s))). 2

Rjeˇsenje Sa ri oznaˇcavat ´cemo medurezultate. r ⊗ s A r .B r .C 1 3 1 r1 = 1 3 1 2 0 2 2 0 2

s.B s.C 1 1 3 2 1 1 3 2

D 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 1 3 1 2 0 2

s.B s.C 3 2 1 1

Πr .C ,s.B (r2 ) r .C r3 = 1 2

D 3 2

s.B 3 1



 Πr .C (r3 ) r .C Πs.B (r3 ) s.B AC (r3 ) =  1 oo 3  − r3 2 1

=

Πr .C (r3 ) oo Πs.B (r3 ) r .C 1 1 2 2

=

AC (r3 ) r .C 1 2

s.B 3 1 − r3 3 1

s.B 1 3

Zadatak 1.4 Zadane su relacije i ograniˇcenje r2 B C 2 1 1 1 1 0

r1 A B C 2 2 1 1 1 0 3 1 1

D 0 2 2

F = [(A < B)(B 6= 2)] ⇒ (B 6= C ) Potrebno je izraˇcunati upit RA(U) : AC (ΠAD (σF (r1 oo r2 ))) Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate. r1 oo r2 A B C 2 2 1 s1 = 1 1 0 3 1 1 3

D 0 2 2

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 2 2 1 1 1 0

D 0 2

ΠAD (s2 ) A D s3 = 2 0 1 2 

 ΠA (s3 ) A ΠD (s3 ) D AC (s3 ) =  2 oo 0  − s3 1 2

=

ΠA (s3 ) oo ΠD (s3 ) A D 2 0 2 2 − s3 1 0 1 2

=

AC (s3 ) A D 2 2 1 0

Zadatak 1.5 Zadane su relacije i ograniˇcenje: r1 A B C 4 2 3 2 0 2 1 1 2

r2 A B C 1 1 2 2 0 2 3 2 3

F = [(A > B) ∨ (C 6= 2)] ⇒ (A > 2) Neka je zadan upit RA(U): AC (ΠAB (σF (r1 ∩ r2 ))) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 ∩ r2 A B C s1 = 1 1 2 2 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

ΠAB (s2 ) A B 1 1

s3 =



ΠA (s3 ) A ΠB (s3 ) B oo 1 1

AC (s3 ) =



=

ΠA (s3 ) oo ΠB (s3 ) A B − s3 1 1

=

AC (s3 ) A B ∅

Zadatak 1.6 Zadane su relacije i ograniˇcenja: r1 A B C 2 2 b 1 4 b 5 1 a

D 3 2 2

r2 A B D 1 1 2 2 2 3 3 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 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate.

s1 =

σG (r1 ) A B C 2 2 b 1 4 b

D 3 2

(b 6= a) ≡ > (b 6= a) ≡ > (a 6= a) ≡ ⊥

s2 =

s3 =

ΠABD (s1 ) A B D 2 2 3 1 4 2 σ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

− s3

s4 =

s2 ∪ s3 A B D 2 2 3 1 4 2



 ΠA (s4 ) A ΠB (s4 ) B ΠD (s4 ) D AC (s4 ) =  2 oo 2 oo 3  − s4 1 4 2

=

ΠA (s4 ) oo ΠB (s4 ) oo ΠD (s4 ) A B D 2 2 3 2 2 2 2 4 3 2 4 2 − s4 1 2 3 1 2 2 1 4 3 1 4 2

=

AC (s4 ) A B D 2 2 2 2 4 3 2 4 2 1 2 3 1 2 2 1 4 3

Zadatak 1.7 Zadane su relacije i ograniˇcenja: r1 A B C f 5 f f 3 g f 3 f

r2 A B C f 1 f g 5 f f 3 f

F

≡ (A 6= C ) ⇒ (B > 2)

G

≡ (C = f )

Neka je zadan upit RA(U): AC (σG (r1 ) − ΠABC (σF (r2 ))) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate. t1 : (f = f ) ≡ > t2 : (f = g ) ≡ ⊥ t3 : (f = f ) ≡ > σG (r1 ) A B C s1 = f 5 f f 3 f 6

D b a b

t1 : (f 6= f ) ⇒ (1 > 2) ≡ ⊥ ⇒ ⊥ ≡ > t2 : (g 6= f ) ⇒ (5 > 2) ≡ > ⇒ > ≡ > t3 : (f 6= f ) ⇒ (3 > 2) ≡ ⊥ ⇒ > ≡ > σF (r2 ) A B C f 1 f s2 = g 5 f f 3 f

D b a b

ΠABC (s2 ) A B C f 1 f s3 = g 5 f f 3 f s4 =

s1 − s3 A B C f 5 f

s5 = AC (σG (r1 ) − ΠABC (σF (r2 ))) =

AC (s4 ) A B C f 5 f

Zadatak 1.8 Zadana je baza podataka BP i uvjet F : nastavnik n# prezime zvanje n1 Kim prof n2 Kam doc n3 Kam izprof

predmet

p# broj-sati-tj sem-pred uz 2 4 bp2 2 5 mpp 2 6

predaje n# p# n1 uz n2 bp2 n2 mpp F

≡ [(prezime = Kim) ∨ (p# = uz)] ∧ (n# 6= n2 )

Izraˇcunajte RA(U) = Πp#, zvanje (σF (nastavnik oo predaje)). Rjeˇsenje Sa ri ´cemo oznaˇcavati medurezultate. nastavnik oo predaje n# prezime zvanje p# n1 Kim prof uz r1 = n2 Kam doc bp2 n2 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 =

7

Πp#, zvanje (r2 ) p# zvanje uz prof

Zadatak 1.9 Zadane su relacije i ograniˇcenje: r1 A B C a b 1 b b 1 c a 1

r2 A B C b a 3 b c 2 b b 1

D b b a

≡ (D 6= a) ⇒ (C 6 2)

F

Neka je zadan upit RA(U): AC (r1 ) − ΠABC (σF (r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate. Prvo ´cemo izraˇcunati aktivni komplement relacije r1 :

s1

ΠA (r1 ) A ΠB (r1 ) B ΠC (r1 ) C a − r1 = AC (r1 ) = oo b oo b 1 a c

=

ΠA (r1 ) oo ΠB (r1 ) oo ΠC (r1 ) A B C a b 1 r1 A B C a a 1 a b 1 b b 1 − b b 1 b a 1 c a 1 c b 1 c a 1

=

AC (r1 ) A B C a a 1 b a 1 c b 1

Rjeˇsavamo 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 b c 2 b b 1

D b a

ΠABC (s2 ) A B C s3 = b c 2 b b 1 Konaˇcni je rezultat stoga: 8

AC (r1 ) − ΠABC (σF (r2 )) A B C a a 1 s1 − s3 = b a 1 c b 1 Zadatak 1.10 Zadana je relacija r : r

A B C a b d a c d b c e

Neka je DOM(A) = DOM(B) = DOM(C ) = DOM(D). Izraˇcunajte RA(U) = δDA (ΠA (r )) ∪ δDB (ΠB (r )) ∪ δDC (ΠC (r )). Rjeˇsenje Sa s1 ´cemo oznaˇcavati medurezultate. ΠA (r ) A s1 = a b δDA (s1 ) D s2 = a b ΠB (r ) B s3 = b c δDB (s3 ) D s4 = b c ΠC (r ) C s5 = d e δDC (s5 ) D s6 = d e δDA (ΠA (r )) ∪ δDB (ΠB (r )) ∪ δDC (ΠC (r )) D a b s7 = s2 ∪ s4 ∪ s6 = c d e Zadatak 1.11 Zadane su relacije: r1 A B C 2 2 1 1 1 1 3 1 1

r2 A B C 2 1 0 3 1 1 1 0 2 9

Potrebno je izraˇcunati upit RA(U) : AC (r1 − r2 ) Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate.

s1 =

s2 =

r1 − r2 A B C 2 2 1 1 1 1

ΠA (s1 ) A ΠB (s1 ) B ΠC (s1 ) C − s1 2 oo 2 oo 1 1 1

ΠA (s1 ) oo ΠB (s1 ) oo ΠC (s1 ) A B C AC (r1 − r2 ) A B C 2 2 1 s2 = 2 1 1 − s1 = 2 1 1 1 2 1 1 2 1 1 1 1 Zadatak 1.12 Zadane su relacije i ograniˇcenje: r1 A B C a b 2 b b 3 c a 1

F

r2 A B D b a b b c b b b a

≡ (A 6= B) ⇔ (C 6 2)

Neka je zadan upit RA(U): ΠAB (AC (r2 )) ∪ ΠAB (σF (r1 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate. ΠB (r2 ) B AC (r2 ) ΠD (r2 ) D Π (r ) A a s1 = A 2 oo oo b − r2 = b b a c t1 : (a 6= b) ⇔ (2 6 2) ≡ > ⇔ > ≡ > t2 : (b 6= b) ⇔ (3 6 2) ≡ ⊥ ⇔ ⊥ ≡ > t3 : (c 6= a) ⇔ (1 6 2) ≡ > ⇔ > ≡ > σF (r2 ) A B C a b 2 s2 = b b 3 c a 1 10

A B D b a a b b b b c a

ΠAB (s1 ) A B b a s3 = b b b c ΠAB (s2 ) A B a b s4 = b b c a s3 ∪ s4 A B b a b b s5 = ΠAB (AC (r2 )) ∪ ΠAB (σF (r1 )) = b c a b c a

1.2

Relacijska algebra i SQL

Zadatak 1.13 Zadane su relacije: r

A B C 1 3 1 2 0 2

s B C 1 1 3 2

D 2 3

Neka je zadan upit SQL(U): SELECT r . A , r . B , s . D FROM r , s WHERE r . C = s . C AND A > 1 (a) Iskaˇzite upit u relacijskoj algebri (RA(U)) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo (a). Iz SELECT klauzule isˇcitavamo elemente u konaˇcnoj projekciji. Sa ri oznaˇcavat ´cemo relacije koje joˇs valja izraˇcunati: ΠA

r .B D (r1 )

Iz WHERE klauzule isˇcitavamo 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 isˇcitavamo relacije koje valja staviti u produkt. Stoga imamo: 11

r2 = r ⊗ s Konaˇcno rjeˇsenje je stoga: ΠA

r .B D (σ(r .C =s.C )∧(A>1) (r

⊗ s))

Rjeˇsavamo (b). r ⊗ s A r .B r .C 1 3 1 1 3 1 2 0 2 2 0 2

s.B s.C 1 1 3 2 1 1 3 2

D 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 2 0 2 ΠA

r .B D (σ(r .C =s.C )∧(A>1) (r

s.B s.C 3 2

⊗ s)) A r .B D 2 0 3

Zadatak 1.14 Zadane su relacije i ograniˇcenje: r1 A B C 1 a 1 2 b 2 2 c 2

D α β α

r2 A B E 1 a 2 2 c 2 3 a 3

F = (A > C ) ∧ (D 6= β) Neka je zadan upit RA(U): ΠAC (σF (r1 oo r2 )) (a) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. (b) Pretvorite RA(U) u SQL(U) Rjeˇsenje Rjeˇsavamo (a): S si oznaˇcavat ´cemo medurezultate. r1 oo r2 A B C s1 = 1 a 1 2 c 2

D E α 2 α 2

t1 : (1 > 1) ∧ (α 6= β) ≡ ⊥ ∧ > ≡ ⊥ 12

D 3

t2 : (2 > 2) ∧ (α 6= β) ≡ ⊥ ∧ > ≡ ⊥ s2 =

σF (s1 ) A B

s3 = ΠAC (σF (r1 oo r2 )) =

C D E ∅

ΠAC (s2 ) A

C ∅

Rjeˇsavamo (b): Poˇcinjemo sa SELECT klauzulom koja je ekvivalentna konaˇcnoj projekciji: SELECT A , C U FROM klauzuli moraju se pojaviti sve relacije iz RA(U): FROM r1 , r2 U WHERE klauzuli moramo uvrstiti ograniˇcenje F : WHERE A > C AND D β Prirodni spoj je samo dodatno ograniˇcenje u WHERE klauzuli: r1 .A = r2 .A AND r1 .B = r2 .B Dakle ukupni upit je: SELECT A, C FROM r1 , r2 WHERE A > C AND D β AND r1 .A = r2 .A AND r1 .B = r2 .B Ovaj rezultat nije u potpunosti toˇcan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji se atribut A misli (A iz r1 ili A iz r2 ). SQL stroj u pravilu ne zakljuˇcuje o jednakosti atributa temeljem imena, ve´c temeljem imena i relacije u kojoj se oni nalaze, zbog ˇcega je potrebno koristiti notaciju naziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacije izjednaˇcava atributom u drugoj relaciji (uvjet prirodnog spoja), u naˇsem sluˇcaju moˇzemo proizvoljno odabrati relaciju: SELECT r1 .A, C FROM r1 , r2 WHERE 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 3 1 2 2 2 1 1

r2 A B E 1 2 2 2 2 2 3 2 3

SELECT r 1 . A , r 2 . E FROM r1 , r 2 WHERE r 1 . B = r 2 . B AND r 2 . E 3 13

(a) Pretvorite SQL(U) u RA(U) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo (a). Iz SELECT klauzule isˇcitavamo elemente u konaˇcnoj projekciji. Sa si oznaˇcavat ´cemo relacije koje joˇs valja izraˇcunati: Πr1 .A

r2 .E (s1 )

Iz WHERE klauzule isˇcitavamo 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 isˇcitavamo relacije koje valja staviti u produkt. Stoga imamo: s 2 = r1 ⊗ r2 Konaˇcno rjeˇsenje je stoga: Πr1 .A

r2 .E (σ(r1 .B=r2 .B)∧(r2 .E 6=3) (r1

⊗ r2 ))

Rjeˇsavamo (b). Sa si oznaˇcavat ´cemo medurezultate. r1 ⊗ r2 r1 .A r1 .B C 3 2 3 3 2 3 3 2 3 1 2 2 s1 = 1 2 2 1 2 2 2 1 1 2 1 1 2 1 1

r2 .A r2 .B E 1 2 2 2 2 2 3 2 3 1 2 2 2 2 2 3 2 3 1 2 2 2 2 2 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

σ(r1 .B=r2 .B)∧(r2 .E 6=3) (s1 ) r1 .A r1 .B C 3 2 3 s2 = 3 2 3 1 2 2 1 2 2

r2 .A r2 .B E 1 2 2 2 2 2 1 2 2 2 2 2

Πr1 .A s3 = Πr1 .A

r2 .E (σ(r1 .B=r2 .B)∧(r2 .E 6=3) (r1

r2 .E (s2 )

⊗ r2 )) =

Zadatak 1.16 Zadane su relacije i ograniˇcenja: r1 A B C f 5 f f 3 g f 1 f

r2 A B C f 5 f g 5 d f 3 f

F

≡ (A 6= C ) ∨ (B > 2)

G

≡ (D 6= a)

D b b a

Neka je zadan upit RA(U): σF (r1 ) ∪ ΠABC (σG (r2 )) (a) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. (b) Pretvorite RA(U) u SQL(U). Rjeˇsenje Rjeˇsavamo pod (a). Sa si oznaˇcavat ´cemo medurezultate. t1 : (f 6= f ) ∨ (5 > 2) ≡ ⊥ ∨ > ≡ > t2 : (f 6= g ) ∨ (3 > 2) ≡ > ∨ > ≡ > t3 : (f 6= f ) ∨ (1 > 2) ≡ ⊥ ∨ ⊥ ≡ ⊥ σF (r1 ) A B C s1 = f 5 f f 3 g t1 : (b 6= a) ≡ > t2 : (b 6= a) ≡ > t3 : (a 6= a) ≡ ⊥

s2 =

σG (r2 ) A B C f 5 f g 5 d

D b b

ΠABC (s2 ) A B C s3 = f 5 f g 5 d 15

A E 3 2 1 2

s1 ∪ s3 A B C f 5 f s4 = σF (r1 ) ∪ ΠABC (σG (r2 )) = f 3 g g 5 d Rjeˇsavamo (b). Obzirom da imamo uniju izraza posebno rjeˇsavamo svaki od izraza u uniji. Prvi izraz (σF (r1 )) pretvoren u SQL jest: SELECT * FROM r 1 WHERE A C OR B > 2 Drugi izraz (ΠABC (σG (r2 ))) pretvoren u SQL jest: SELECT A , B , C FROM r 2 WHERE D ’ a ’ Konaˇcno rjeˇsenje je unija ovih dvaju izraza: SELECT * FROM r 1 WHERE A C OR B > 2 UNION SELECT A , B , C FROM r 2 WHERE D ’ a ’ Zadatak 1.17 Zadane su relacije i upit SQL(U): r1 A B C a b 5 c b 2 a c 2

r2 A B D a b 2 c b 3 a a 4

SELECT A , B FROM r 1 WHERE C > 2 INTERSECT SELECT A , B FROM r 2 WHERE D 2 (r1 ) Iz SELECT klauzule drugog upita ˇcitamo atribute selekcije: s2 = ΠAB (s4 ) Iz WHERE klauzule drugog upita ˇcitamo uvjet selekcije: s4 = σD≤3 (r2 ) Stoga je konaˇcno rjeˇsenje: ΠAB (σC >2 (r1 )) ∩ ΠAB (σD≤3 (r2 )) Rjeˇsavamo pod (b). Sa qi ´cemo oznaˇcavati medurezultate. q1 =

σC >2 (r1 ) A B C a b 5

q2 =

ΠAB (q1 ) A B a b

σD≤3 (r2 ) A B D q3 = a b 2 c b 3 q4 =

q5 = q2 ∩ q4 =

ΠAB (q3 ) A B a b c b

ΠAB (σC >2 (r1 )) ∩ ΠAB (σD≤3 (r2 )) A B a b

Zadatak 1.18 Zadane su relacije i upit SQL(U): r1 A B C a b 5 c b 2 a a 4

r2 A B D a b 2 a b 3 a a 4

SELECT r 1 . A , D FROM r1 , r 2 WHERE C > 2 AND r 1 . A = r 2 . A AND r 2 . B = r 1 . B (a) Pretvorite SQL(U) u RA(U) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. 17

Rjeˇsenje Rjeˇsavamo pod (a). Sa si ´cemo oznaˇcavati relacijske izraze koje joˇs treba odrediti. Iz SELECT klauzule ˇcitamo konaˇcnu 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 pomnoˇziti: s2 = r1 ⊗ r2 Stoga je konaˇcni izraz RA(U): Πr1 .A,D (σF (r1 ⊗ r2 )) Rjeˇsavamo pod (b). Sa qi ´cemo oznaˇcavati medurezultate. r1 ⊗ r2 r1 .A r1 .B C a b 5 a b 5 a b 5 c b 2 q1 = c b 2 c b 2 a a 4 a a 4 a a 4

r2 .A r2 .B D a b 2 a b 3 a a 4 a b 2 a b 3 a a 4 a b 2 a b 3 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) ≡ > ∧ > ∧ > ≡ > σF (q1 ) r1 .A r1 .B C a b 5 q2 = a b 5 a a 4 18

r2 .A r2 .B D a b 2 a b 3 a a 4

Πr1 .A,D (σF (r1 ⊗ r2 )) r1 .A D a 2 q3 = Πr1 .A,D (q2 ) = a 3 a 4 Zadatak 1.19 Zadane su relacije i upit SQL(U): r1 A B C 1 2 5 2 3 4 4 3 2

r2 A B D 2 1 2 2 2 5 2 3 1

SELECT r 1 . A , r 2 . B FROM r1 , r 2 WHERE r 2 . D > 1 (a) Pretvorite SQL(U) u RA(U) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo pod (a). Sa si ´cemo oznaˇcavati relacijske izraze koje joˇs treba odrediti. Iz SELECT klauzule ˇcitamo konaˇcnu 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 pomnoˇziti: s2 = r1 ⊗ r2 Stoga je konaˇcni izraz RA(U): Πr1 .A,r2 .B (σF (r1 ⊗ r2 )) Rjeˇsavamo pod (b). Sa qi ´cemo oznaˇcavati medurezultate. r1 ⊗ r2 r1 .A r1 .B C 1 2 5 1 2 5 1 2 5 2 3 4 q1 = 2 3 4 2 3 4 4 3 2 4 3 2 4 3 2 19

r2 .A r2 .B D 2 1 2 2 2 5 2 3 1 2 1 2 2 2 5 2 3 1 2 1 2 2 2 5 2 3 1

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) ≡ ⊥ σF (q1 ) r1 .A r1 .B C 1 2 5 1 2 5 q2 = 2 3 4 2 3 4 4 3 2 4 3 2

r2 .A r2 .B D 2 1 2 2 2 5 2 1 2 2 2 5 2 1 2 2 2 5

Πr1 .A,r2 .B (q2 ) r1 .A r2 .B 1 1 1 2 q3 = Πr1 .A,r2 .B (σF (r1 ⊗ r2 )) = 2 1 2 2 4 1 4 2 Zadatak 1.20 Zadana je relacija r i upit RA(U): r

A B C a b 5 c b 2 a a 4

ΠA (σB=b (r )) (a) Pretvorite RA(U) u SQL(U) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo pod (a). Pri pretvaranju relacijskog izraza u SQL prvo pojednostavljujemo izraz, no obzirom da u ovom sluˇcaju nemamo sloˇzenih operatora (AC , ÷) niti prirodnog spajanja ( oo ), pojednostavljivanje nije potrebno. Atributi konaˇcne projekcije idu u SELECT klauzulu, uvjet selekcije ide u WHERE klauzulu, a relacija nad kojom se provode operacije u FROM klauzulu. Stoga je rjeˇsenje: SELECT A FROM r WHERE B = ’ b ’ 20

Rjeˇsavamo pod (b). Sa si oznaˇcavat ´cemo medurezultate. t1 : b = b ≡ > t2 : b = b ≡ > t3 : a = b ≡ ⊥

s1 =

σB=b (r ) A B C a b 5 c b 2

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

ΠA (r ) A a c

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

r1 A B C 1 1 3 1 4 4 4 2 5

r2 B C 1 3 4 4 2 5

SELECT B , FROM r 1 WHERE A = INTERSECT SELECT B , FROM r 2 WHERE D >

D 2 1 5

C 1 OR B 4 C 1

(a) Pretvorite SQL(U) u RA(U). (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo pod (a). S si ´cemo oznaˇcavati medurezultate. Obzirom da je rijeˇc o izrazu presjeka skupova (INTERSECT), konaˇcni izraz imat ´ce oblik: s1 ∩ s2 U 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 sljede´ci oblik selekcije: s3 = σF1 (r1 ) Sliˇcno je i sa s4 : s4 = σF2 (r2 ) 21

Stoga je konaˇcni izraz: RA(U) = ΠBC (σF1 (r1 )) ∩ ΠBC (σF2 (r2 )) Rjeˇsavamo pod (b). Sa si ´cemo oznaˇcavati medurezultate. t1 : (1 = 1) ∨ (1 6= 4) ≡ > ∨ > ≡ > t2 : (1 = 1) ∨ (4 6= 4) ≡ > ∨ ⊥ ≡ > t3 : (4 = 1) ∨ (2 6= 4) ≡ ⊥ ∨ > ≡ > σF1 (r1 ) A B C 1 1 3 s1 = 1 4 4 4 2 5 t1 : (2 > 1) ≡ > t2 : (1 > 1) ≡ ⊥ t3 : (5 > 1) ≡ >

s2 =

σF2 (r2 ) B C 1 3 2 5

D 2 5

ΠBC (s1 ) B C 1 3 s3 = 4 4 2 5 ΠBC (s2 ) B C s4 = 1 3 2 5 s3 ∩ s4 B C s5 = ΠBC (σF1 (r1 )) ∩ ΠBC (σF2 (r2 )) = 1 3 2 5 Zadatak 1.22 Zadane su relacije r1 i r2 te upit SQL(U):

r1 A B C 1 1 1 1 4 2 4 2 1

r2 B C 1 3 4 2 2 5

SELECT B , C FROM r 1 WHERE A IN ( 1 , 4 ) UNION SELECT B , C FROM r 2 WHERE D < 5

D 2 1 5

(a) Pretvorite SQL(U) u RA(U). (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. 22

Rjeˇsenje Rjeˇsavamo pod (a). S si ´cemo oznaˇcavati medurezultate. Obzirom da je rijeˇc o izrazu unija skupova (UNION), konaˇcni izraz imat ´ce oblik: s1 ∪ s2 U oba dijela izraza imamo projekcije (SELECT klauzula): s1 = ΠBC (s3 ) s2 = ΠBC (s4 ) Zatim rjeˇsavamo 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 konaˇcan izraz: RA(U) = ΠBC (σF1 (r1 )) ∪ ΠBC (σF1 (r2 )) Rjeˇsavamo pod (b). Sa s1 ´cemo oznaˇcavati medurezultate. t1 : (1 ∈ {1, 4}) ≡ > t2 : (1 ∈ {1, 4}) ≡ > t3 : (4 ∈ {1, 4}) ≡ > σF1 (r1 ) A B C 1 1 1 s1 = 1 4 2 4 2 1 t1 : (2 < 5) ≡ > t2 : (1 < 5) ≡ > t3 : (5 < 5) ≡ ⊥

s2 =

σF2 (r2 ) B C 1 3 4 2

D 2 1

ΠBC (s1 ) B C 1 1 s3 = 4 2 2 1 ΠBC (s2 ) B C s4 = 1 3 4 2 23

s3 ∪ s4 B C 1 1 s5 = ΠBC (σF1 (r1 )) ∪ ΠBC (σF1 (r2 )) = 4 2 2 1 1 3

24

2 SQL

2.1

Kreiranje tablica

Zadatak 2.1 Zadana je relacija artikl

ˇ Sifra 1 2 3

Naziv Jediniˇcna cijena Kava 8 Rakija 4 Klipi´c 2

Zadana su ograniˇcenja: ˇ ˆ Sifra je primarni kljuˇc relacije ˆ Svaki artikl mora imati jedinstven naziv ˆ Jediniˇcna cijena ne smije biti negativna

(a) Kreirajte u SQL-u strukturu tablice artikl s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one ˇsifre i nazive artikala ˇcija je cijena ve´ca od 3. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (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 ) ) Rjeˇsavamo (b): SQL(U): SELECT s i f r a , n a z i v FROM a r t i k l WHERE ” 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 oznaˇcavat ´cemo medurezultate: t1 : (8 > 3) ≡ > t2 : (4 > 3) ≡ > t3 : (2 > 3) ≡ ⊥ σjedinicna cijena>3 (artikl) sifra naziv jediniˇcna cijena r1 = 1 Kava 8 2 Rakija 4 Πsifra, cijena (r1 ) sifra jediniˇcna cijena 1 8 2 4 Zadatak 2.2 Zadana je relacija pr

N n1 n1 n2 n3 n3 n3

P bp uz bp bp uz fm

Semantika: pr (n, p) znaˇci da nastavnik n predaje predmet p. (a) Kreirajte u SQL-u strukturu tablice pr (b) Iskaˇzite rijeˇcima entitetski integritet za tablicu pr (c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmet fm. Napiˇsite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U). Rjeˇsenje Rjeˇsavamo (a): CREATE TABLE p r ( N VARCHAR( 2 ) , P VARCHAR( 2 ) , PRIMARY KEY( N, P ) ) Rjeˇsavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost null jer su dio primarnog kljuˇca. Rjeˇsavamo (c). 26

SELECT N FROM p r WHERE P = ’ uz ’ AND N NOT IN ( SELECT N FROM p r WHERE P = ’ fm ’ ) o(SQL(U)) N n1 Zadatak 2.3 Zadana je relacija i ograniˇcenja knjiga ISBN 1 2 3

Naslov Godina Programiranje u Prologu 1992 Arhitektura suvremenih organizacija 2005 Teorija baza podataka 2009

ˆ Svaka knjiga mora imati naslov i godinu izdanja ˆ Godina izdanja mora biti ve´ca od 1900

(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE k n j i g a ( ISBN INTEGER PRIMARY KEY, N a s l o v TEXT NOT NULL , Godina INTEGER NOT NULL CHECK( Godina > 1900 ) ) Rjeˇsavamo (b). SQL(U): SELECT N a s l o v FROM k n j i g a WHERE Godina > 2000 RA(U) : ΠNaslov (σGodina>2000 (knjiga)) t1 : 1992 > 2000 ≡ ⊥ t2 : 2005 > 2000 ≡ > t3 : 2009 > 2000 ≡ > σGodina>2000 (knjiga) ISBN Naslov Godina r1 = 2 Arhitektura suvremenih organizacija 2005 3 Teorija baza podataka 2009 27

ΠNaslov (r1 ) Naslov Arhitektura suvremenih organizacija Teorija baza podataka Zadatak 2.4 Zadana je relacija knjiga ISBN 1 2 3

Naslov Godina Programiranje u Prologu 1992 Arhitektura suvremenih organizacija 2005 Teorija baza podataka 2009

Zadana su ograniˇcenja: ˆ Svaka knjiga mora imati naslov ˆ Ako se ne specificira godina izdanja upisuje se 2011

(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE k n j i g a ( ISBN INTEGER PRIMARY KEY, N a s l o v TEXT NOT NULL , Godina INTEGER DEFAULT 2011 ) Rjeˇsavamo (b). SQL(U): SELECT N a s l o v FROM k n j i g a WHERE Godina < 2008 RA(U) : ΠNaslov (σGodina t2 : 2005 < 2008 ≡ > t3 : 2009 < 2008 ≡ ⊥

r1 =

σGodina>2000 (knjiga) ISBN Naslov Godina 1 Programiranje u Prologu 1992 2 Arhitektura suvremenih organizacija 2005 ΠNaslov (r1 ) Naslov Programiranje u Prologu Arhitektura suvremenih organizacija 28

Zadatak 2.5 Zadana je relacija raˇcun broj raˇcuna klijent saldo 1 k1 2134, 56 2 k2 444, 09 3 k3 −234, 43 4 k1 −342.51 Zadana su ograniˇcenja (poslovna pravila): ˆ Svaki baknovni raˇcun mora imati broj raˇcuna, klijenta i saldo ˆ Dopuˇsten negativni saldo moˇze biti −2000

(a) Kreirajte u SQL-u strukturu tablice raˇcun s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one klijente koji imaju barem jedan raˇcun s negativnim saldom. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE r a c u n ( ” b r o j r a c u n a ” 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 )

)

Rjeˇsavamo (b). SQL(U): SELECT k l i j e n t FROM r a c u n WHERE s a l d o < 0 RA(U) : Πklijent (σsaldo t4 : −342.51 < 0 ≡ >

σsaldo= 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 ograniˇcenjima: proizvod ˇsifra naziv 1 Kutija XXL 2 Kutija XL 3 Limenka 0.5

sirovina ˇsifra naziv 1 Karton 2 Lim

sastavnica proizvod sirovina koliˇcina 1 1 175.00 2 1 120.00

Ograniˇcenja: Atribut ˇsifra se koristi kao primarni kljuˇc u relacijama proizvod i sirovina. Atribut proizvod u relaciji sastavnica je vanjski kljuˇc koji se referencira na primarni kljuˇc u relaciji sastavnica. Atribut sirovina u relaciji sastavnica je vanjski kljuˇc koji se referencira na primarni kljuˇc u relaciji sirovina. Primarni kljuˇc relacije sastavnica je kombinacija atributa proizvod i sirovina. Atribut koliˇcina u relaciji 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 koliˇ cina decimalni broj Kreirajte BP (tablice, unos) koriste´ci odgovaraju´ce SQL naredbe.

2.2

Upiti

Zadatak 2.9 Zadana je baza podataka BP: nastavnik n# prezime zvanje n1 Kim prof n2 Kam doc n3 Kam izprof

predmet

31

p# broj-sati-tj sem-pred uz 2 4 bp2 2 5 mpp 2 6

predaje n# p# n1 uz n2 bp2 n2 mpp Neka je zadan upit U : Odredite ˇsifre predmeta i odgovaraju´ce semestre predavanja predmeta koje predaju nastavnici n1 i n2 . (a) Napiˇsite SQL(U) (b) Napiˇsite tablicu koja je je odgovor na SQL(U) Rjeˇsenje Rjeˇsavamo pod (a). Da bismo dobili ˇsifru i semenstar predavanja nekog predmeta za odredenog nastavnika potrebno je spojiti sve tri tablice. To ˇcinimo prirodnim spojem, odnosno u SQL-u povezivanjem odgovaraju´cih vanjskih kljuˇceva. Da bismo dobili predmete dvaju nastavnika, ˇ potrebno je da slogovi tablice zadovoljavaju uvjet: Sifra nastavnika je n1 ili n2 . Ovaj je upit mogu´ce rjeˇsiti na nekoliko naˇcina: Prvi naˇcin SQL1 (U) (OR ograniˇcenje): SELECT p . ” p#”, p . ” sem−p r e d ” FROM n a s t a v n i k n , predmet p , p r e d a j e p r WHERE n . ” n#” = p r . ” n#” AND p r . ” p#” = p . ” p#” AND ( n . ” n#” = n1 OR n . ” n#” = n2 ) Drugi naˇcin SQL2 (U) (IN ograniˇcenje): SELECT p . ” p#”, p . ” sem−p r e d ” FROM n a s t a v n i k n , predmet p , p r e d a j e p r WHERE n . ” n#” = p r . ” n#” AND p r . ” p#” = p . ” p#” AND n . ” n#” IN ( n1 , n2 ) Tre´ci naˇcin SQL3 (U) (unija): SELECT p . ” p#”, p . ” sem−p r e d ” FROM n a s t a v n i k n , predmet p , p r e d a j e p r WHERE n . ” n#” = p r . ” n#” AND p r . ” p#” = p . ” p#” AND n . ” n#” = n1 UNION SELECT p . ” p#”, p . ” sem−p r e d ” FROM n a s t a v n i k n , predmet p , p r e d a j e p r WHERE n . ” n#” = p r . ” n#” AND p r . ” p#” = p . ” p#” AND n . ” n#” = n2 Jasno je da je drugi naˇcin najjednostavniji. Rjeˇsavamo 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 kljuˇcevi valjano spojeni. U nastavku ´cemo pri rjeˇsavanju viˇsestrukog prirodnog spoja koristiti konvenciju spajanja s lijeva na desno, tj. r1 oo r2 oo r3 rjeˇsavat ´cemo kao (r1 oo r2 ) oo r3 . Raˇcunamo o(RA1 (U)). Medurezultate oznaˇcavat ´cemo s r1i .

r11

nastavnik oo predaje oo predmet n# prezime zvanje p# broj-sati-tj sem-pred n1 Kim prof uz 2 4 = n2 Kam doc bp2 2 5 n2 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-pred n1 Kim prof uz 2 4 = n2 Kam doc bp2 2 5 n2 Kam doc mpp 2 6 Πp#, sem-pred (r12 ) r13 = o(RA1 (U)) =

p# sem-pred uz 4 bp2 5 mpp 6

Raˇcunamo o(RA2 (U)). Medurezultate oznaˇcavat ´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))).

Raˇcunamo o(RA3 (U)). Medurezultate oznaˇcavat ´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 5 n2 Kam doc mpp 2 6 Πp#, sem-pred (r35 ) r36 =

p# sem-pred bp2 5 mpp 6

r33 ∪ r36 r37 = o(RA3 (U)) =

p# sem-pred uz 4 bp2 5 mpp 6

Dakle, dobili smo oˇcekivani rezultat, tj. o(RA1 (U)) = o(RA2 (U)) = o(RA3 (U)). Zadatak 2.10 Zadana je baza podataka BP s ograniˇcenjima: klijent oib prezime 1 Prekratki 2 Presvetli 3 Jambrek

savjetnik oib prezime 1 Mari´c 2 Sanji´c

savjetuje savjetnik klijent 1 1 1 3 Ograniˇcenja: Atribut oib se koristi kao primarni kljuˇc u relacijama klijent i savjetnik. Atribut savjetnik u relaciji savjetuje je vanjski kljuˇc koji se referencira na primarni kljuˇc u relaciji savjetnik. Atribut klijent u relaciji savjetuje je vanjski kljuˇc koji se referencira na primarni kljuˇc u relaciji klijent. Neka je zadan upit U: Prona´ci sva prezimena klijenata koje savjetuje savjetnik s prezimenom Mari´c. (a) Napiˇsite SQL(U) (b) Napiˇsite tablicu koja je odgovor na SQL(U) Rjeˇsenje Rjeˇsavamo pod (a). Prema specifikaciji upita U vidimo da je potrebno spojiti tablice klijent, savjetuje i savjetnik. Stoga njih stavljamo u FROM klauzulu. Jasno je da bismo ih pravilno spojili, potrebno je izjednaˇciti vanjske kljuˇceve ˇsto ˇcinimo u WHERE klauzuli. Konaˇcno, upit treba vratiti samo imena i prezimena klijenata, ˇsto navodimo u SELECT klauzuli. Stoga je rjeˇsenje: 34

SELECT k l i j e n t . p r e z i m e FROM s a v j e t n i k , s a v j e t u j e , k l i j e n t WHERE 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 Rjeˇsavamo pod (b). Pretvaramo upit u relacijsku algebru, pri ˇcemu koristimo alijase za prefikse k = klijent, sa = savjetuje i s = savjetnik: Πk.prezime (σs.oib=sa.savjetnik∧sa.klijent=k.oib (savjetnik ⊗ savjetuje ⊗ klijent)) Raˇcunamo odgovor na upit, pri emu ´cemo s ri oznaˇcavati medurezultate. savjetnik ⊗ savjetuje ⊗ klijent s.oib s.prezime sa.savjetnik sa.klijent k.oib k.prezime 1 Mari´c 1 1 1 Prekratki 1 Mari´c 1 3 2 Presvetli 1 Mari´c 1 1 3 Jambrek 1 Mari´c 1 3 1 Prekratki 1 Mari´c 1 1 2 Presvetli r1 = 1 Mari´c 1 3 3 Jambrek 2 Sanji´c 1 1 1 Prekratki 2 Sanji´c 1 3 2 Presvetli 2 Sanji´c 1 1 3 Jambrek 2 Sanji´c 1 3 1 Prekratki 2 Sanji´c 1 1 2 Presvetli 2 Sanji´c 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.savjetnik∧sa.klijent=k.oib (r1 ) s.oib s.prezime sa.savjetnik sa.klijent k.oib k.prezime 1 Mari´c 1 1 1 Prekratki 1 Mari´c 1 3 3 Jambrek

r3 = Πk.prezime (σs.oib=sa.savjetnik∧sa.klijent=k.oib (savjetnik⊗savjetuje⊗klijent)) =

35

Πk.prezime (r2 ) k.prezime Prekratki Jambrek

Zadatak 2.11 Zadana je baza podataka BP te upit U:

vozilo reg. oznaka marka stanje brojila SI-245-AS Fiat 12362 ˇ VZ-743-CV Fiat 32198 ˇ RI-144-HT Skoda 32123

vozaˇc oib prezime 1 Prikratki 2 Presvetli

upravlja vozaˇc vozilo 1 SI-245-AS 2 SI-245-AS 2 RI-144-HT

U : Odredite prezimena i odgovaraju´ce marke vozila onih vozaˇca koji su zaduˇzeni za vozila ˇcija je ˇ marka “Skoda”. (a) Napiˇsite SQL(U) te ga pretvorite u RA(U). (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo pod (a). Iz specifikacije upita vidimo da je potrebno spojiti sve tri tablice ˇsto ´cemo uˇciniti spajaju´ci odgovaraju´ce vanjske kljuˇceve. SELECT ” v o z a ˇc ” . p r e z i m e , v o z i l o . marka FROM v o z i l o , ” v o z a ˇc ” , u p r a v l j a WHERE ” v o z a ˇc ” . o i b = u p r a v l j a . ” v o z a ˇc ” AND v o z i l o . ” r e g . o zn a k a ” = 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 oznaˇcavanje medurezultata. Iz FROM klauzule ˇcitamo produkt tablica koje ´ce se spajati. s1 = vozilo ⊗ vozaˇc ⊗ upravlja Iz WHERE klauzule ˇcitamo formulu selekcije. ˇ F = (oib = vozaˇc) ∧ (reg. oznaka = vozilo) ∧ (marka = Skoda) Stoga je selekcija: s2 = σF (s1 ) Iz SELECT klauzule ˇcitamo konaˇcnu projekciju: s3 = Πprezime, marka (s2 ) Stoga je konaˇcni izraz: RA(U) = Πprezime, marka (σF (vozilo ⊗ vozaˇc ⊗ upravlja)) Rjeˇsavamo pod (b). Sa ri ´cemo oznaˇcavati medurezultate. 36

vozilo ⊗ vozaˇc ⊗ upravlja reg. oznaka marka stanje brojila oib prezime vozaˇc vozilo SI-245-AS Fiat 12362 1 Prikratki 1 SI-245-AS SI-245-AS Fiat 12362 2 Presvetli 2 SI-245-AS SI-245-AS Fiat 12362 1 Prikratki 2 RI-144-HT SI-245-AS Fiat 12362 2 Presvetli 1 SI-245-AS SI-245-AS Fiat 12362 1 Prikratki 2 SI-245-AS SI-245-AS Fiat 12362 2 Presvetli 2 RI-144-HT ˇ VZ-743-CV Fiat 32198 1 Prikratki 1 SI-245-AS ˇ VZ-743-CV Fiat 32198 2 Presvetli 2 SI-245-AS ˇ VZ-743-CV Fiat 32198 1 Prikratki 2 RI-144-HT r1 = ˇ VZ-743-CV Fiat 32198 2 Presvetli 1 SI-245-AS ˇ VZ-743-CV Fiat 32198 1 Prikratki 2 SI-245-AS ˇ VZ-743-CV Fiat 32198 2 Presvetli 2 RI-144-HT ˇ RI-144-HT Skoda 32123 1 Prikratki 1 SI-245-AS ˇ RI-144-HT Skoda 32123 2 Presvetli 2 SI-245-AS ˇ RI-144-HT Skoda 32123 1 Prikratki 2 RI-144-HT ˇ RI-144-HT Skoda 32123 2 Presvetli 1 SI-245-AS ˇ RI-144-HT Skoda 32123 1 Prikratki 2 SI-245-AS ˇ RI-144-HT Skoda 32123 2 Presvetli 2 RI-144-HT

t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 t17 t18

: : : : : : : : : : : : : : : : : :

(1 = 1) (2 = 2) (1 = 2) (2 = 1) (1 = 2) (2 = 2) (1 = 1) (2 = 2) (1 = 2) (2 = 1) (1 = 2) (2 = 2) (1 = 1) (2 = 2) (1 = 2) (2 = 1) (1 = 2) (2 = 2)

r2 =

ˇ ∧ (SI-245-AS = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ∧ (SI-245-AS = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ∧ (SI-245-AS = RI-144-HT) ∧ (Fiat = Skoda) ≡ ˇ ∧ (SI-245-AS = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ∧ (SI-245-AS = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ∧ (SI-245-AS = RI-144-HT) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = RI-144-HT) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = SI-245-AS) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (VZ-743-CV = RI-144-HT) ∧ (Fiat = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = SI-245-AS) ∧ (Skoda = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = SI-245-AS) ∧ (Skoda = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = RI-144-HT) ∧ (Skoda = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = SI-245-AS) ∧ (Skoda = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = SI-245-AS) ∧ (Skoda = Skoda) ≡ ˇ ˇ ∧ (RI-144-HT = RI-144-HT) ∧ (Skoda = Skoda) ≡

>∧>∧⊥ >∧>∧⊥ ⊥∧⊥∧⊥ ⊥∧>∧⊥ ⊥∧>∧⊥ >∧⊥∧⊥ >∧⊥∧⊥ >∧⊥∧⊥ ⊥∧⊥∧⊥ ⊥∧⊥∧⊥ ⊥∧⊥∧⊥ >∧⊥∧⊥ >∧⊥∧> >∧⊥∧> ⊥∧>∧> ⊥∧⊥∧> ⊥∧⊥∧> >∧>∧>

≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡ ≡

σF (r1 ) reg. oznaka marka stanje brojila oib prezime vozaˇc vozilo ˇ RI-144-HT Skoda 32123 2 Presvetli 2 RI-144-HT

r3 = Πprezime, marka (σF (vozilo ⊗ vozaˇc ⊗ upravlja)) = Zadatak 2.12 Zadana je baza podataka BP te upit U: 37

Πprezime, marka (r2 )

prezime marka ˇ Presvetli Skoda

⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ ⊥ >

vozilo reg. oznaka stanje brojila SI-245-AS 12362 ˇ VZ-743-CV 32198 RI-144-HT 32123

vozaˇc oib prezime ime 1 Prikratki Joˇza 2 Presvetli Ivek

upravlja vozaˇc vozilo 1 SI-245-AS 2 SI-245-AS ˇ 1 VZ-743-CV 2 RI-144-HT

U : Odredite imena i prezimena vozaˇca koji upravljaju vozilima ˇcije je stanje brojila ve´ce od 30000. (a) Napiˇsite SQL(U) te ga pretvorite u RA(U). (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje

2.3

Transakcije

Zadatak 2.13 Zadana je tablica s ograniˇcenjem i transakcije: konto broj saldo 1 89.30 2 102.05 3 15.35

Ograniˇcenje: Nije dopuˇsten 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 k o n t o SET s a l d o = s a l d o + 100 WHERE b r o j = 2 ; UPDATE k o n t o 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 izvrˇsenja transakcije T1. (b) Odredite stanje tablice konto nakon izvrˇsenja transakcije T2. Rjeˇsenje Rjeˇsavamo (a). Prva naredba transakcije T1 dodaje slog (5, 0.00) u tablicu konto. Stoga je medustanje: konto broj saldo 1 89.30 2 102.05 3 15.35 5 0.00 Druga naredba transakcije T1 briˇse sve slogove iz tablice konto ˇciji je broj konta 3. Stoga je medustanje (koje je ujedno i konaˇcno stanje nakon izvrˇsavanja transakcije T1): konto broj saldo 1 89.30 2 102.05 5 0.00 38

Rjeˇsavamo (b). Prva naredba transakcije T2 aˇzurira tablicu konto tako da pove´cava stanje salda za 100 tamo gdje je broj konta 2. Stoga je medustanje: konto broj saldo 1 89.30 2 202.05 5 0.00 Druga naredba transakcije T2 aˇzurira tablicu konto tako da smanjuje stanje salda za 100 tamo gdje je broj konta 1. Stoga je medustanje: konto broj saldo 1 −10.70 2 202.05 5 0.00 Obzirom da je zadano ograniˇcenje koje zabranjuje negativan saldo, doˇslo je do naruˇsavanja integriteta baze podataka te se stoga transakcija T2 prekida. Zbog toga vrijedi stanje baze podataka koje je vrijedilo prije poˇcetka transakcije T2, to jest konaˇcno stanje je: konto broj saldo 1 89.30 2 102.05 5 0.00 Zadatak 2.14 Zadana je tablica s ograniˇcenjem i transakcija: autor ˇsifra 1 2 3

ime Ivana Miroslav August

prezime Brli´c-Maˇzurani´c Krleˇza ˇ Senoa

Ograniˇcenje: 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 , ’ I v a n ’ ) ; COMMIT; Odredite stanje tablice autor nakon izvrˇsenja transakcije T1. Rjeˇsenje Medustanje nakon prvog izraza transakcije je: autor ˇsifra ime prezime 1 Ivana Brli´c-Maˇzurani´c 2 Miroslav Krleˇza Nakon izvrˇsavanja drugog izraza medustanje je: autor ˇsifra 1 2 4

ime Ivana Miroslav Ivan

prezime Brli´c-Maˇzurani´c Krleˇza null

Obzirom da je doˇslo do nedozvoljenog stanja tablice (prezime autora je nepoznato), dolazi do prekida transakcije. Stoga je konaˇcno stanje ono stanje koje je vrijedilo prije poˇcetka transakcije T1: 39

autor ˇsifra 1 2 3

ime Ivana Miroslav August

prezime Brli´c-Maˇzurani´c Krleˇza ˇ Senoa

Zadatak 2.15 Zadana je tablica s ograniˇcenjem i transakcija: osoba oib 1 2 3

ime Ivek Joˇza Barica

prezime Presvetli Prekratki Prekratki

Ograniˇcenje: oib je primarni kljuˇc relacije osoba.

BEGIN TRANSACTION T1 ; UPDATE o s o b a SET ime = ’ S t e f i c a ’ , p r e z i m e = ’ Jambrescak ’ WHERE o i b = 3 ; INSERT INTO o s o b a ( p r e z i m e , ime , o i b ) VALUES( ’ Lacko ’ , ’ Edmund ’ , 4 ) ; COMMIT; Odredite stanje tablice osoba nakon izvrˇsenja transakcije T1. Rjeˇsenje Medustanje nakon prvog izraza transakcije je: osoba oib 1 2 3

ime Ivek Joˇza Stefica

prezime Presvetli Prekratki Jambrescak

Stanje nakon drugog izraza je: osoba oib 1 2 3 4

ime Ivek Joˇza Stefica Edmund

prezime Presvetli Prekratki Jambrescak Lacko

Obzirom da nije doˇslo do naruˇsavanja inetgritetnog ograniˇcenja, ovo je ujedno i konaˇcno stanje tablice. Zadatak 2.16 Zadana je tablica s ograniˇcenjem i transakcija: zaposlenik oib 1 2 3

ime ˇ Stefica Ivek Joˇza

prezime Ivanovi´c Marjanovi´c Stojanovi´c

Ograniˇcenje: oib je primarni kljuˇc relacije zaposlenik.

BEGIN TRANSACTION T1 ; UPDATE o s o b a SET ime = ’ B a r i c a ’ WHERE ime LIKE ’% a n o v i % ’; INSERT INTO z a p o s l e n i k VALUES( 2 , ’ B a r i c a ’ , ’ P r i k r a t k i ’ ) ; COMMIT; Odredite stanje tablice zaposlenik nakon izvrˇsenja transakcije T1. 40

Rjeˇsenje Medustanje nakon prvog izraza transakcije je: zaposlenik oib 1 2 3

ime Barica Barica Barica

prezime Ivanovi´c Marjanovi´c Stojanovi´c

ime Barica Barica Barica Barica

prezime Ivanovi´c Marjanovi´c Stojanovi´c Prikratki

Nakon drugog izraza, medustanje je: zaposlenik oib 1 2 3 2

Obzirom da je doˇslo do naruˇsavanja integritetnog ograniˇcenja (ponavljanje vrijednosti primarnog kljuˇca), transakcija se prekida i vrijedi stanje koje je vrijedilo prije poˇcetka transakcije T 1, tj.: zaposlenik oib 1 2 3

ime ˇ Stefica Ivek Joˇza

prezime Ivanovi´c Marjanovi´c Stojanovi´c

Zadatak 2.17 Zadana je tablica s ograniˇcenjem i transakcija: student jmbag 1 2 3

ime Slavek Joˇza Barica

prezime Presvetli Jambrek Presvetli

status null upisan null

Ograniˇcenje: jmbag je primarni kljuˇc relacije student.

BEGIN TRANSACTION T1 ; UPDATE s t u d e n t SET s t a t u s = ’ u p i s a n ’ WHERE s t a t u s I S NULL ; INSERT INTO o s o b a ( p r e z i m e , ime , jmbag ) VALUES( ’ P r e k r a t k i ’ , ’ I v e k ’ , 4 ) ; COMMIT; Odredite stanje tablice student nakon izvrˇsenja transakcije T1. Rjeˇsenje Prva naredba postavlja sve nepoznate statuse na ’upisan’, zbog ˇcega je stanje nakon prve naredbe: student jmbag 1 2 3

ime Slavek Joˇza Barica

prezime Presvetli Jambrek Presvetli

status upisan upisan upisan

Druga naredba dodaje red u tablicu (obzirom da atribut status nije navedn upisuje se null vrijednost): student jmbag 1 2 3 4

ime Slavek Joˇza Barica Ivek

prezime Presvetli Jambrek Presvetli Prekratki

status upisan upisan upisan null

Obzirom da nije doˇslo do naruˇsavanja integriteta, ovo je i konaˇcno stanje tablice.

41

42

3 Konceptualno oblikovanje baza podataka

3.1

SBVR

Zadatak 3.1 Zadan je sljede´ci opis korisniˇckih zahtjeva: Svaki stol posluˇzuje samo jedan konobar. Konobar se raspoznaje prema svojoj ˇsifri te ima svoje ime i prezime. Stol se raspoznaje prema broju stola. Konobar moˇze posluˇziti viˇse stolova. Za svaku narudˇzbu na nekom stolu konobar izdaje raˇcun, pri ˇcemu moˇze izdati i viˇse raˇcuna. Raˇcun se raspoznaje po broju raˇcuna, a sadrˇzi datum i vrijeme posluˇzivanja, te stavke narudˇzbe kojih moˇze biti viˇse, ali barem jedna. Svaka stavka se sastoji od proizvoda i naruˇcene koliˇcine. Proizvod se raspoznaje po ˇsifri te ima svoj naziv i jediniˇcnu cijenu. (a) Oblikujte SBVR opis ovih korisniˇckih zahjteva. (b) Nacrtajte odgovaraju´ci konceptualni (UML) dijagram. Rjeˇsenje Rjeˇsavamo pod (a). Ovaj je zadatak mogu´ce rjeˇsiti na viˇse naˇcina, pri ˇcemu ´cemo se drˇzati pravila da idemo redom prema korisniˇckim zahtjevima (ˇsto u praksi ne mora biti tako) te s ciljem da ´cemo iz ovog opisa kasnije oblikovati konceptualni model baze podataka. U nastavku je jedno validno rjeˇsenje: Svaki stol posluˇzuje barem jedan konobar. Svaki konobar ima toˇcno jednu ˇsifru. Svaki konobar ima ime. Svaki konobar ima prezime. Svaki stol ima toˇcno jedan broj stola. Konobar moˇze posluˇziti viˇse stolova. Konobar za svaki stol izdaje viˇse raˇ cuna. Svaki raˇ cun ima toˇcno jedan broj raˇ cuna. Svaki raˇ cun sadrˇzi datum i vrijeme. Svaki raˇ cun sadrˇzi jednu ili viˇse stavki. Svaka stavka sadrˇzi proizvod. Svaka stavka sadrˇzi naruˇ cenu koliˇ cinu. Svaki proizvod ima toˇcno jednu ˇsifru. Svaki proizvod ima naziv. 43

Svaki proizvod ima jediniˇ cnu cijenu. Pri rjeˇsenju smo se drˇzali konvencije da smo koncepte (entitete, atribute) oznaˇcavali podebljanim slovima, predikate (veze, relacije) podvuˇcenim slovima, a modalne operatore i kvantifikatore (multiplicitet veza, ograniˇcenja) obiˇcnim slovima. Rjeˇsavamo pod (b). Iz SBVR specifikacije koncepte pretvaramo u entitete ako su sloˇzeni (vezani uz predikate ima, sadrˇzi, sastoji se od i sl.), odnosno atribute ako su jednostavni. Stoga su entiteti s odgovaraju´cim atributima: stol( broj stola ) konobar( ˇsifra, ime, prezime ) raˇcun( broj raˇcuna, datum i vrijeme ) stavka( proizvod, naruˇcena koliˇcina ) proizvod( ˇsifra, naziv, jediniˇcna cijena ) Pri ˇcemu su podvuˇceni atributi dio primarnog kljuˇca. Obzirom da su koncepti stavka i proizvod sloˇzeni, a istovremeno s desne strane predikata sadrˇzavanja, te veze se pretvaraju u agregacije. Takoder, veza izmedu stola, konobara i raˇcuna je 3-arna jer se jedno posluˇzivanje uvijek veˇze uz jednog konobara, jedan stol i viˇse raˇcuna. Stoga je UML Class dijagram ove SBVR specifikacije:

Zadatak 3.2 Zadan je sljede´ci opis korisniˇckih zahtjeva: Svako motorno vozilo jedinstveno je odredeno brojem ˇsasije. Motorna vozila imaju marku, tip te odredenu vrstu goriva koju koriste. Vlasnik vozila u nekom trenutku moˇze biti samo jedna fiziˇcka ili pravna osoba. Ako je vozilo registrirano dobiva jedinstvenu registarsku oznaku na razdoblje od godinu dana. Svaka registarska oznaka za sobom povlaˇci odgovaraju´ci broj obavezne police osiguranja. Vozaˇcka 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 fiziˇcka osoba koja ima odgovaraju´cu vozaˇcku dozvolu smije upravljati odredenom kategorijom motornih vozila. (a) Oblikujte SBVR opis ovih korisniˇckih zahjteva. (b) Nacrtajte odgovaraju´ci konceptualni (UML) dijagram. Rjeˇsenje 44

3.2

UML

Zadatak 3.3 Neka je zadano poslovno pravilo u SBVR notaciji:

PP: Svaki menadˇ zer koordinira barem tri radnika. (a) Oblikujte UML dijagram. (b) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Analizmo PP utvrdujemo da se radi o binarnoj relaciji izmedu menadˇzera i radnika, arnosti 3 ili viˇse. Stoga je UML dijagram:

Rjeˇsavamo pod (b). Jedna valjana konkretizacija je: koordinira menadˇzer radnik m1 r1 m1 r2 m1 r3 Zadatak 3.4 Neka je zadano poslovno pravilo u SBVR notaciji: PP: Svaki taksista vozi s toˇcno jednog polaziˇsta na toˇcno jedno odrediˇste po toˇcno jednoj cijeni. (a) Oblikujte UML dijagram. (b) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Analizom PP utvrdujemo da se radi o 4-arnoj relaciji vozi( taksista, polaziˇste, odrediˇste, cijena ). Stoga je UML dijagram:

Rjeˇsavamo pod (b). Jedna valjana konkretizacija je sljede´ca: 45

vozi taksista polaziˇste odrediˇste cijena t1 p1 o1 100 t1 p1 o2 200 t2 p2 o1 150 Iz UML dijagrama je jasno da svaki taksista moˇze imati viˇse voˇznji, dok se jedna voˇznja (kombinacija polaziˇsta, odrediˇsta i cijene) odnosi na toˇcno 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) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Obzirom da je e-mail adresa jednostavni entitet (ne razlaˇze se dalje na druge entitete), te obzirom da je dio relacije ima koja ukazuje na sadrˇzavanje, njega ´cemo prikazati kao atribut entiteta korisnik. Relacija je prijatelj s je rekurzivna jer spaja korisnike s korisnicima. Obzirom da je entitet korisnik s obje strane relacije u mnoˇzini, kardinalnost veze je viˇse naprema viˇse.

Rjeˇsavamo pod (b). Obzirom da je relacija je prijatelj s i multiplicitet veze je viˇse naprema viˇse, potrebno ju je predstaviti zasebnom tablicom. Jedna valjana konkretizacija je: ima korisnik e-mail adresa k1 e1 k2 e2

je prijatelj s korisnik korisnik k1 k2

Zadatak 3.6 Neka je zadano poslovno pravilo u SBVR notaciji:

PP: Svaki avion sadrˇzi barem dva krila. (a) Oblikujte UML dijagram. (b) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Obzirom da je rijeˇc o relaciji sadrˇzavanja, dijagram ´ce najbolje biti predstavljen agregacijom ili toˇcnije kompozicijom (jer avion bez krila nije avion). Sljede´ci dijagram je jedno mogu´ce rjeˇsenje: 46

Rjeˇsavamo pod (b). Sljede´ca relacija je jedna valjana konkretizacija: sadrˇzi avion krilo a1 k1 a1 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 viˇse autora. PP3 : Svaki autor napisao je jednu ili viˇse knjiga. (a) Oblikujte UML dijagram klasa koji je u skladu s navedenim poslovnim pravilima. (b) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Obzirom da je naslov jednostavni entitet, prikazat ´cemo ga kao atribut entiteta knjiga. Jedno mogu´ce rjeˇsenje prikazano je na sljede´coj slici.

Rjeˇsavamo pod (b). Obzirom da imamo specifiˇcnu situaciju (veza s obje strane ima multiplicitet viˇse), potrebno je uvesti slabi entitet na toj vezi ˇciji ´ce se primarni kljuˇc sastojati od primarnih kljuˇceva dvaju povezanih entiteta. napisao knjiga autor k1 a1 k1 a2 k2 a1

ima knjiga naslov k1 n1 k2 n2

Zadatak 3.8 Neka su zadana poslovna pravila u SBVR notaciji:

PP1 : Svako vozilo ima toˇcno jedan broj ˇsasije. PP2 : Svaki vozaˇ c je zaduˇzen za jedno ili viˇse vozila. cku dozvolu. PP3 : Svaki vozaˇ c je vlasnik toˇcno jednu vozaˇ (a) Oblikujte UML dijagram klasa koji je u skladu s navedenim poslovnim pravilima. (b) Napiˇsite jednu valjanu konktretizaciju (tabliˇcno). Rjeˇsenje Rjeˇsavamo pod (a). Analizom poslovnih pravila uvidamo da su entiteti broj ˇsasije i vozaˇ cka dozvola jednostavni (ili su dio relacije ima ili se ne razlaˇzu se dalje) zbog ˇcega ´cemo ih prikazati kao atribute odgovaraju´cih entiteta. 47

Rjeˇsavamo pod (b). Jedna valjana konkretizacija je sljede´ca: ima vozilo broj ˇsasije a1 b1 a2 b2 a3 b3

je vlasnik vozaˇc vozaˇcka dozvola v1 vd1 v2 vd2

zaduˇzen vozaˇc vozilo v1 a1 v2 a2 v2 a3

Zadatak 3.9 Neka je zadan UML dijagram kao ˇsto slijedi:

NAPOMENA: Znak * predstavlja vezu 0 ili viˇse (0:N), a 1 je kardinalnost 1 i samo 1 (1:1). (a) Pretvorite dijagram u relacijski model. (b) Implementirajte model koriste´ci SQL. Rjeˇsenje Rjeˇsavamo pod (a). Obzirom da je rijeˇc o ternarnoj vezi potrebno ju je predstaviti zasebnom relacijom. Relacijski model je tada: stol( broj stola ) raˇcun( broj raˇcuna, datum i vrijeme, iznos ) konobar( ˇsifra, ime, prezime ) izdaje( stol, konobar, raˇcun ) Pri ˇcemu atributi podvuˇceni crtkasto predstavljaju vanjske kljuˇceve iz drugih relacija. Rjeˇsavamo pod (b). Implementacija je sljede´ca: 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 k o n o b a r ( 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 ” ) , k o n o b a r BIGINT REFERENCES k o n o b a r ( ” ˇ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 viˇse (0:N), a 1 je kardinalnost 1 i samo 1 (1:1). (a) Pretvorite dijagram u relacijski model. (b) Implementirajte model koriste´ci SQL. Rjeˇsenje Rjeˇsavamo pod (a). Obzirom na vezu jedan naprema viˇse potrebno je u relaciju igraˇc uvrstiti vanjski kljuˇc iz relacije klub. Stoga je relacijski model kao ˇsto slijedi: klub( ˇsifra, naziv, adresa, telefonski broj ) igraˇc( oib, ime, prezime, pozicija, klub ) Rjeˇsavamo 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 ograniˇ cenja

Zadatak 3.11 Zadane su relacije (predikati) sljede´cim tablicama: r

A B C 1 2 1 2 2 1 3 4 3

s B C 2 3 1 1 2 2

D 1 1 4

Neka je zadano medurelacijsko ograniˇcenje: 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. Rjeˇsenje Zadatak 3.12 Zadane su relacije (predikati) sljede´cim tablicama: r

A B C a a c c b a b b c

s B C a b b a c b

D c c d

Neka je zadano medurelacijsko ograniˇcenje: 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 . Rjeˇsenje

50

4 Logiˇcko 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) Napiˇsite jednu valjanu relaciju r (R) (b) Provjerite je li R u 1NF, te ukoliko nije predloˇzite rjeˇsenje. (c) Prikaˇzite sada relaciju r koriste´ci svoje rjeˇsenje. Rjeˇsenje Rjeˇsavamo pod (a). Relacija r (R) pod vrijednostima odgovaraju´cih atributa smije imati samo vrijednosti odredene njihovom domenom. Stoga je jedna mogu´ca valjana relacija: r

A B C 1 {1, 2} a 3 {1, 2, 3} a 1 {1, 2} c

Rjeˇsavamo pod (b). Vidimo da domena atributa B sadrˇzi sloˇzene vrijednosti (skupove) zbog ˇcega R nije u 1NF. Jedno mogu´ce rjeˇsenje je uvodenje identiteta svakog skupa iz Dom(B) i uvodenje novog atributa koji se dobiva rastavljanjem atributa B. Neka je atribut identiteta oznaˇcen s I (B), a novi atribut s B 0 . R sada postaje R 0 = A ∪ I (B) ∪ B 0 ∪ C , a domene novih atributa:

Dom(A) = {1, 2, 3} Dom(I (B)) = {o1 , o2 } Dom(B 0 ) = {1, 2, 3} Dom(C ) = {a, b, c} 51

Uoˇcite da smo za svaki skup u Dom(B) uveli po jedan identitet objekta (oi , i = 1, 2), te da smo domenu atributa B 0 dobili kao uniju svih skupova iz Dom(B). Rjeˇsavamo pod (c). Relaciju r (R 0 ) sada moˇzemo prikazati kao: A I (B) B 0 C 1 o2 1 a 1 o2 2 a 3 o1 1 a 3 o1 2 a 3 o1 3 a 1 o2 1 c 1 o2 2 c

r

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) Napiˇsite jednu valjanu relaciju r (R) (b) Provjerite je li R u 1NF, te ukoliko nije predloˇzite rjeˇsenje. (c) Prikaˇzite sada relaciju r koriste´ci svoje rjeˇsenje. Rjeˇsenje Rjeˇsavamo pod (a). Sljede´ca relacija r je valjana: r

A B C x 4 (1, 2) x 2 (1, 1) y 1 (1, 2)

Rjeˇsavamo pod (b). Relacijska shema nije u 1NF zbog toga ˇsto je atribut C sloˇzen. Stoga uvodimo Dom(C ) = {o1 , o2 , o3 , o4 } pri ˇcemu je o1 = (1, 1), o2 = (1, 2), o3 = (2, 1) i o4 = (2, 2). Obzirom da je rijeˇc o uredenim parovima tj. n-torkama, moˇzemo ih izdvojiti u posebnu relaciju kako bi oˇcuvali poredak. Da smo primjenili rjeˇsenje kao u zadatku 4.1, izgubili bismo informaciju o tome koji je element prvi, a koji drugi u uredenom paru. Rjeˇsavamo pod (c). Sljede´ce dvije relacije daju ˇsiru1 informaciju kao i relacija r iz podzadatka (a). Oznake atributa P1 i P2 su proizvoljne. r 00

r0 A B C x 4 o2 x 2 o1 x 1 o2 1

C P1 P2 o1 1 1 o2 1 2 o3 2 1 o4 2 2

U relaciji r iz podzadatka a nismo imali informaciju o svim mogu´cim vrijednostima koje moˇze 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 → C AB → D

Provjerite je li (R, F ) u 2NF, te ako nije napravite 2NF dekompoziciju koja ˇcuva informaciju i zavisnosti. Rjeˇsenje Prvo traˇzimo kljuˇc. Prema kljuˇcnom triku, atributi A i B moraju biti dio svakog kljuˇca (AB ⊆ K ). Provjeravamo prvo je li AB kljuˇc, raˇcunanjem zatvaraˇca: (AB)+ F = ABCD Zakljuˇcujemo da je K = AB jedini kljuˇc. Provjeravamo postoji li parcijalna zavisnost nekljuˇcnog atributa od kljuˇca (uvjet 2NF). Kljuˇcni atributi su AB, a nekljuˇcni CD. Uoˇcavamo da vrijedi z1 : AB → C i z2 : A → C , zbog ˇcega je z1 parcijalna zavisnost. Stoga, zakljuˇcujemo da (R, F ) nije u 2NF. Radimo dekompoziciju preko z2 , obzirom da ona naruˇsava 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 dvokomponentna relacijska shema koja nije u 2NF. Za komponentu ABD vrijedi AB → D i ne vrijede nikakve druge netrivijalne funkcijske zavisnosti ˇsto lako moˇzemo provjeriti raˇcunanjem projekcije skupa zavisnosti na ABD: Provjeravamo redom mogu´ce netrivijalne zavisnosti: A A B B D D AB AD BD

→ → → → → → → → →

B A+ F D A BF+ D A DF+ B D (AB)+ F B (AD)+ F A (BD)+ F

= AC

B D = B A D = D A B = ABCD D = ACD B = BD A

* * * * * * ⊆ * *

AC AC B B D D ABCDX ACD BD

Shodno tome provjeravamo je li (ABD, {AB → D}) u 2NF. Obzirom da je skup atributa AB bio kljuˇc u (R, F ), tj. na viˇsoj razini, on se naslijeduje u dekompoziciji, stoga je K 0 = AB. Provjeravamo, postoji li parcijalna zavisnost nekljuˇcnog atributa od kljuˇca. Kljuˇcni atributi su AB, a nekljuˇcni D. Mogu´ci uzroˇcnici parcijalne zavisnosti su A → D i B → D, no niti jedna od njih ne vrijedi, ˇsto moˇzemo isˇcitati iz prethodne projekcije skupa zavisnosti. Stoga zakljuˇcujemo da je komponenta ABD u 2NF. Konaˇcno zakljuˇcujemo da je dekompozicija d(R) : AC , ABD 2NF dekompozicija koja ˇcuva informaciju i zavisnosti. Kljuˇcevi ove dekompozicije A za komponentu AC (jer je A → C ) i AB za komponentu ABD. 53

Zadatak 4.4 Zadana je relacijska shema (R, F ), R = ABCD i F : B → C B → AD Provjerite je li (R, F ) u 2NF, te ako nije napravite 2NF dekompoziciju koja ˇcuva informaciju i zavisnosti. Rjeˇsenje Traˇzimo kljuˇc. Prema kljuˇcnom triku: BF+ = BCAD Stoga je K = B jedini kljuˇc. Obzirom da je K jednokomponentni kljuˇc (a ne postoje nestandardne zavisnosti oblika ∅ → X ), zakljuˇcujemo da nije mogu´ce prona´ci parcijalnu zavisnost nekljuˇcnog atributa od kljuˇca. Stoga je zadani (R, F ) u 2NF.

4.3

3NF

Zadatak 4.5 Zadana je relacijska shema (R, F ), R = ABCDEF i F : AE A C AC

→ C → DE → BD → BE

Provjerite je li (R, F ) u 3NF, te ako nije, napravite dekompoziciju pomo´cu algoritma 3NF sinteze. Rjeˇsenje Prvo traˇzimo kljuˇc. Prema kljuˇcnom triku AF mora biti komponenta svakog kljuˇca. Provjeravamo je li AF kljuˇc: (AF )+ F = AFDECB Zakljuˇcujemo da je K = AF jedini kljuˇc. Stoga su kljuˇcni atributi AF , a nekljuˇcni BCDE . Pokuˇsavamo konstruirati tranzitivni dijagram:

Dijagram vrijedi jer: AF C C

→ C → D 9 AF

(AF )+ = AFDECB ⊇ C F ⊇ D CF+ = CBD CF+ = CDB + AF

I zato jer je C → D netrivijalna funkcijska zavisnost. Zakljuˇcujemo da (R, F ) nije u 3NF jer postoji tranzitivna zavisnost nekljuˇcnog atributa od kljuˇca. Primjenjujemo algoritam 3NF sinteze. Prvo raˇcunamo kanonski pokrivaˇc kp(F ). Prvi korak je desno razbijanje: F 0 = draz(F ) : AE A A C C AC AC 54

→ → → → → → →

C D E B D B E

Sljede´ci korak je lijeva redukcija. Provjeravamo one zavisnosti koje s lijeve strane imaju viˇse od jednog skupa atributa. Provjeravamo AE → C : A → C E → C

A+ = ADECB ⊇ C X F + EF = E + C

Zavisnost A → C vrijedi, tj. moˇzemo izbaciti komponentu E odnosno reducirati zavisnost AE → C u A → C. Provjeravamo AC → B: A → C C → C

A+ = ADECB ⊇ B X F CF+ = CBD + B X

Obje zavisnosti vrijede, tj. moˇzemo izbaciti proizvoljnu komponentu. Ovdje ´cemo se odluˇciti za A → B (mogu´ce je uzeti i drugu zavisnost). Provjeravamo AC → E : A → C C → C

A+ = ADECB ⊇ E X F + CF = CBD + E

Zavisnost A → E vrijedi, tj. moˇzemo izbaciti komponentu C odnosno reducirati zavisnost AC → E u A → E . Obzirom da je ta zavisnost ve´c u F 0 moˇzemo ju izbaciti. Stoga je lijeva redukcija: F 00 = lred(F 0 ) : A A A C C A

→ → → → → →

C D E B D B

Slijedi tre´ci korak, a to je izbacivanje redundantnih zavisnosti. Za svaku zavisnost iz F 00 provjeravamo je li proizlazi iz preostalih zavisnosti. Provjeravamo A → C : A+ F ost = ADEB + C Zavisnost ne moˇzemo izbaciti. Provjeravamo A → D: A+ F ost = ACEBD ⊇ D X Zavisnost izbacujemo. Provjeravamo A → E : A+ F ost = ACB + E Zavisnost ne moˇzemo izbaciti. Provjeravamo C → B: CF+ost = CD + B Zavisnost ne moˇzemo izbaciti. Provjeravamo C → D: 55

CF+ost = CB + D Zavisnost ne moˇzemo izbaciti. Provjeravamo A → B: A+ F ost = ACEB ⊇ B X Zavisnost izbacujemo. Iz navedenog proizlazi da je kanonski pokrivaˇc: kp(F ) : A A C C

→ → → →

C E B D

Sljede´ci korak 3NF sinteze je sinteza komponenti. Nju dobivamo tako da od svake zavisnosti spajamo lijevu i desnu stranu, tj.: d(R) : AC , AE , CB, CD Sljede´ci korak je dodavanje globalnog kljuˇca, ako on nije sadrˇzan u niti jednoj od komponenti. Obzirom da je to ovdje sluˇcaj, dodajemo komponentu AF , tj. d(R) : AC , AE , CB, CD, AF Sljede´ci korak je smanjivanje broja komponenti dekompozicije iz kanonskog pokrivaˇca uz eliminaciju podskupova, tj.: d(R) : ACE , CBD, AF U ovom sluˇcaj nismo imali podskupova. Konaˇcno, 3NF dekompozicija dobivena 3NF sintezom je d(R): ACE, CBD, AF ˇsto je i rjeˇsenje zadatka. Kljuˇcevi u komponentama su podvuˇceni, a proizlaze iz kp(F ) i globalnog kljuˇca. Zadatak 4.6 Zadana je relacijska shema (R, F ), R = ABCDE i F :

B A C AB

→ C → D → BD → E

Provjerite je li (R, F ) u 3NF, te ako nije, napravite dekompoziciju pomo´cu algoritma 3NF sinteze. Rjeˇsenje Traˇzimo kljuˇc. Prema kljuˇcnom triku: A+ F = AD Stoga A nije kljuˇc, pa ga je potrebno proˇsirivati dok ne dobijemo kljuˇc. (AB)+ = ABCDE X F (AC )+ = ACDBE X F (AD)+ = AD F (AE )+ = AED F

56

Stoga su kljuˇcevi K1 = AB i K2 = AC . Kljuˇcni su atributi A, B i C , a nekljuˇcni D i E . Provjeravamo je li postoji tranzitivna zavisnost nekljuˇcnog atributa od kljuˇca i nalazimo sljede´ci tranzitivno dijagram:

Dijagram vrijedi jer: AB → C (AB)+ = ABCDE F C → D CF+ = CBD C 9 AB CF+ = CDB

⊇ C ⊇ D + AB

Primjenjujemo algoritam 3NF sinteze. Raˇcunamo kp(F ) tj. prvi korak desno razbijanje: draz(F ) :

B A C C AB

→ → → → →

C D B D E

Sljede´ci korak je lijeva redukcija. Pokuˇsati lijevo reducirati moˇzemo samo zavisnost AB → E : A → E B → E

A+ = AD + E F BF+ = BCD + E

Stoga nije mogu´ce lijevo reducirati ovu zavisnost. Prelazimo na korak izbacivanja redundantnih zavisnosti. Provjeravamo B → C : BF+ost = B + C Zavisnost ne moˇzemo izbaciti. Provjeravamo A → D: A+ F ost = A + D Zavisnost ne moˇzemo izbaciti. Provjeravamo C → B: CF+ost = C + B Zavisnost ne moˇzemo izbaciti. Provjeravamo C → D: CF+ost = C + D Zavisnost ne moˇzemo izbaciti. Provjeravamo AB → E : (AB)+ F ost = ABCD + E Zavisnost ne moˇzemo izbaciti. Iz toga slijedi, da ne moˇzemo izbaciti niti jednu od zavisnosti, ˇsto znaˇci da je kanonski pokrivaˇc: 57

kp(F ) :

B A C C AB

→ → → → →

C D B D E

Prelazimo na sintezu komponenti: d(R) : AD, CB, CD, ABE Smanjujemo broj komponenti (nema podskupova): d(R) : AD, CBD, ABE U ovom sluˇcaju nije potrebno dodavati globalni kljuˇc, obzirom da je jedan ok kljuˇceva sadrˇzan u komponenti ABE . Stoga je konaˇcno rjeˇsenje d(R): AD, CBD, ABE. Zadatak 4.7 Zadani su R = ABCD i F ⊆ F (R): F :

A→C A → BD

Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja ˇcuva informaciju i zavisnosti koriste´ci algoritam 3NF sinteze. Rjeˇsenje Traˇzimo kljuˇc. Primjernom kljuˇcnog trika A je dio svakog kljuˇca. A+ F = ACBD ⊇ R ˇ Cime zakljuˇcujemo da je A jedini kljuˇc. Stoga je kljuˇcni atribut A, a nekljuˇcni BCD. Obzirom da ne postoji niti jedna funkcijska zavisnost u F koja s lijeve strane ne sadrˇzi kljuˇc (ˇsto je budi reˇceno ujedno i uvjet za BCNF ), nije mogu´ce 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→B CD → B C → AD B→D

Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja ˇcuva informaciju i zavisnosti koriste´ci algoritam 3NF sinteze. Rjeˇsenje Zadatak 4.9 Zadani su R = ABCDE i F ⊆ F (R): F :

A→B CE → B C → AD B→D

Provjerite je li (R, F ) u 3NF , te ukoliko nije napravite dekompoziciju koja ˇcuva informaciju i zavisnosti pomo´cu algoritma 3NF sinteze. Rjeˇsenje 58

4.4

BCNF

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

C D BE E

→ AB → A → C → B

Provjerite je li (R, F ) u BCNF, te ako nije napravite BCNF dekompoziciju. Rjeˇsenje Prvo traˇzimo kljuˇc. Prema kljuˇcnom triku DE je dio svakog kljuˇca. Provjeravamo je li DE kljuˇc: (DE )+ F = DEABC Zakljuˇcujemo da je DE jedini kljuˇc. Obzirom da postoji netrivijalna funkcijska zavisnost koja s lijeve strane ne sadrˇzi kljuˇc u F + (u ovom sluˇcaju sve zavisnosti iz F imaju to svojstvo), zakljuˇcujemo da (R, F ) nije u BCNF. Odabiremo zavisnot C → AB za dekompoziciju (ovjde je bilo mogu´ce odabrati bilo koju drugu zavisnost iz F , pa su stoga mogu´ca i druga rjeˇsenja). Obavljamo dekompoziciju: ABCDE ↓ C → AB .

&

CAB

CDE

Dobivamo dekompoziciju d(R): CAB, CDE. Provjeravamo za svaku od komponenti je li u BCNF. Raˇcunamo projekciju skupa zavisnosti na CAB: A A B B C C AB AC BC

→ → → → → → → → →

B C A C A B C B A

A+ = A F BF+ CF+ (AB)+ F (AC )+ F (BC )+ F

B C = B A C = CAB A B = AB C = ACB B = BCA A

* * * * ⊆ ⊆ * ⊆ ⊆

A A B B ABC X ABC X AB ABC X ABC X

Vidimo da svaka od zavisnosti C → A, C → B, AC → B i BC → A koje vrijede u CAB sadrˇze kljuˇc C sa svoje lijeve strane. Stoga zakljuˇcujemo da je komponenta CAB u BCNF. Raˇcunamo projekciju skupa zavisnosti na CDE : C C D D E E CD CE DE

→ → → → → → → → →

D CF+ E C DF+ E C EF+ D E (CD)+ F D (CE )+ F C (DE )+ F

= CAB = DA = EBCA = CDAB = CEAB = DEABC 59

D E C E C D E D C

* * * * ⊆ * * * ⊆

ABC ABC AD AD ABCE X ABCE ABCD ABC ABCDE X

Vidimo da zavisnost E → C s lijeve strane ne sadrˇzi kljuˇc DE , ˇsto znaˇci da komponenta CDE nije u BCNF. Stoga obavljamo dekompoziciju po zavisnosti koja naruˇsava BCNF. CDE ↓ E →C .

&

EC

ED

Obzirom da smo dobili samo dvokomponentne sheme, zakljuˇcujemo da su obje u BCNF i da nije potrebna daljnja provjera. Stoga je konaˇcna BCNF dekompozicija d(R): CAB, CE, DE .

4.5

4NF

Zadatak 4.11 Zadani su R = ABCDE i F ⊆ FVS(R): F : AC → DE AB → C Provjerite je li (R, F ) u 4NF , te ukoliko nije napravite dekompoziciju koja ˇcuva informaciju. Rjeˇsenje

4.6

5NF

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

A → CD B →→ A oo(AB, CD)

Provjerite je li (R, F ) u 5NF , te ukoliko nije napravite dekompoziciju koja ˇcuva informaciju. Rjeˇsenje Zadatak 4.13 Zadani su R = ABCD i F ⊆ FVS(R): F :

A → BD B→D B → AC A→C B →→ A oo(AB, ACD)

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

4.7

6NF

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

A→B AD →→ B oo(A, B)

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

4.8

Implikacijski problemi

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

A → BC C →D C →→ A

Rjeˇsite implikacijski problem: F |= oo (AD, ABC ) Rjeˇsenje Obzirom da se zavisnost spoja oo (AD, ABC ) prema pravilu pretvaranja funkcijskih i viˇseznaˇcnih zavisnosti u zavisnosti spoja, moˇze zapisati i kao A → D dovoljno je primjeniti zatvaraˇc: A+ F : ABCD ⊇ D iz ˇcega slijedi da je F |= oo (AD, ABC ). Rjeˇsenje chase postupkom takoder je valjano: konstruiramo tablicu T0 i redom primjenjujemo transformacije preko zavisnosti u F u potrazi za ciljnim retkom: T0 AD ABC

A B C D a1 b12 b13 a4 a1 a2 a3 b24

A→BC

T1

−−−−→

A B C D a1 a2 a3 a4 a1 a2 a3 b24

Vidimo da ve´c 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 → BC BC →→ D oo (AD, ABC )

Rjeˇsite implikacijski problem: F |= A →→ D Rjeˇsenje Obzirom da ˇzelimo dokazati viˇseznaˇcnu zavisnost, moramo ju prvo pretvoriti u zavisnost spoja 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 zakljuˇcujemo da vrijedi F |= A →→ D. 61

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

A → BC C →D C →→ A

Rjeˇsite implikacijski problem: F |= oo (AD, ABC ) Rjeˇsenje Problem moˇzemo rjeˇsiti na viˇse naˇcina. Ovdje ´cemo se posluˇziti saznanjem, da vrijedi A → D |= oo (AD, ABC ), uz napomenu da obrat ne vrijedi. Stoga moˇzemo rjeˇsiti (stroˇzi) implikacijski problem: F |= A → D Iz 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 → AC C →D C →→ A

Rjeˇsite implikacijski problem: F |= oo (BD, ABC ) Rjeˇsenje

62

5 Napredne baze podataka

5.1

Deduktivne baze podataka

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

IBP :

A B a b b c c a

s B C b a c b b b

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} izraˇcunajte model za DBP pomo´cu relacijskih operatora. (b) Izraˇcunajte upit U : ΠAB (σA=a (r oo s)) ∩ p (pod pretpostavkom da su relacijske sheme od r i p ekvivalentne). Rjeˇsenje Zadatak 5.2 Neka je zadana deduktivna baza podataka DBP = (EBP, IBP, ∅): r EBP :

IBP :

A B a b c c a a

s B C b a c b c b

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} izraˇcunajte model za DBP pomo´cu relacijskih operatora. 63

(b) Izraˇcunajte upit U : ΠAB (σA=a (r oo s)) ∩ p (pod pretpostavkom da su relacijske sheme od r i p ekvivalentne).

Rjeˇsenje

Zadatak 5.3 Zadana je DBP r EBP :

IBP :

A B 1 2 2 3 2 4 3 5

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 raˇcunaju´ci pravila pomo´cu relacijske algebre.

Rjeˇsenje

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

IBP :

A B a b b c c a

s B C b a c b b b

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} izraˇcunajte model za DBP pomo´cu relacijskih operatora. (b) Izraˇcunajte upit U : AC (r oo s) − p (pod pretpostavkom da su relacijske sheme od r i p ekvivalentne).

Rjeˇsenje

5.2

Poop´ cene baze podataka

Zadatak 5.5 Neka je zadana relacija 64

r

Izraˇcunajte GrH(A

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

1

2

3

2 2 1 0

1

2

4

2 2 1 1 0 1

B) (ΠABFG (RaC (D F G ) (RaE (F G ) (r ))))

Rjeˇsenje Zadatak 5.6 Neka je zadana relacija r

Izraˇcunajte GrH(A

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

1

2

3

2 2 1 0

1

2

3

2 2 1 1 0 1

B) (ΠABFG (σF =2 (RaC (D F G ) (RaE (F G ) (r ))))

Rjeˇsenje Zadatak 5.7 Neka je zadana relacija r

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

1

1

2

2

3

2 2 1 0

4

2 2 3 1 0 1

65

Izraˇcunajte GrH(A

B) (ΠABF (RaC (D F G ) (RaE (F G ) (r ))))

Rjeˇsenje Zadatak 5.8 Neka su zadane relacije r1 (R1 ), r2 (R2 ) r1 A B(C D) r2 D E

B(C D)

2

1

1 0 1 1

0

1

2 1

2 1 1 0

1

2 2 1 1 1 0

2

Izraˇcunajte Πpr2 .B (σFp (r1 ⊗ r2 )), gdje je F : (r2 .B ⊆ r1 .B) ∧ (A > 1) Rjeˇsenje Zadatak 5.9 Neka je zadana relacija r

Izraˇcunajte GrH(B

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

1

2

3

2 2 1 0

1

2

3

2 2 3 1 1 0

F ) (ΠABF (RaC (D F G ) (RaE (F G ) (r )))

Rjeˇsenje Zadatak 5.10 Neka je zadana poop´cena relacija r . r

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

1

1

2

2

3

2 2 1 0

4

2 2 1 1 0 1

66

Izraˇcunajte GrH(B

F G ) (ΠABFG (RaC (D F G ) (RaE (F G ) (r ))))

Rjeˇsenje

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 Rjeˇsenje Zadatak 5.12 Neka su zadane parcijalne relacije r i s: r

s B D E ? 1 2 3 2 ? ? 4 ?

A B C 1 ? 2 1 3 ?

Temeljem simboliˇcke jednakosti (J2 ) izraˇcunajte: (a) ΠADE (r oo s) N (ΠAC oo ΠB (s)) (b) σB>C

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

s B C 2 ? 2 1 2 1

A B C 1 2 1 2 2 ?

D 2 3 ?

F : (A 6 D) ⇒ (D 6=?) Izraˇcunajte temeljem apsolutne jednakosti (J1 ), sljede´ci relacijski izraz: r1 = σF (ΠABD (AC (r ) oo s) Rjeˇsenje 67

Zadatak 5.14 Zadane su relacije: r

s B C 2 ? 2 1 2 1

A B C 1 2 1 2 2 ?

D 2 3 ?

i formula F : (A 6 D) ∨ (D 6=?). (a) izraˇcunajte temeljem J1, sljede´ci 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 znaˇci isto!) Rjeˇsenje

5.4

Temporalne baze podataka

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

A B C 1 2 [1, 3i 1 2 [3, 5i 2 3 [1, 3i 1 3 [2, 4i

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

Izraˇcunajte ZC (σF (r )) Rjeˇsenje Zadatak 5.16 Neka je zadana temporalna relacija r i formula F : r

A B C 1 2 [1, 3i 1 2 [3, 5i 2 3 [1, 3i 1 3 [2, 4i

F : [(A < 2) ⇒ (B > 2)] ∧ (C prije [4, 5i) Izraˇcunajte: i

(a) OC (ΠBC (r )) i

(b) ZC (σF (r )) Rjeˇsenje

68

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF