You are on page 1of 19

Doc. dr. sc.

Markus Schatten

Zbirka rjeenih zadataka iz baza podataka s

Sadraj z

1 Relacijska algebra 1.1 Izraun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c 1.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 SQL

1 1 6 9

ii

Predgovor

iii

iv

1 Relacijska algebra

1.1

Izraun upita c

Zadatak 1.1 Zadane su relacije i ogranienje: c r1 A B C 1 0 2 2 0 2 2 1 3 r2 B C 1 1 0 2 0 2 D 2 2 3

F = (A = D) Neka je zadan upit RA(U): F (AD (r1 oo r2 )) Izraunajte odgovor na upit koristei relacijsku algebru. c c Rjeenje Sa si oznaavat emo medurezultate. s c c 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) t3 : (2 = 2) 1 D 2 3 2 3

t4 : (2 = 3) F (s2 ) A D 2 2 Zadatak 1.2 Zadane su relacije i ogranienje: c r1 A B C 1 3 1 2 0 2 r2 A B C 1 1 2 2 0 2 3 2 3

F = (A > B) (C = 2) Neka je zadan upit RA(U): AB (F (r1 r2 )) Izraunajte odgovor na upit koristei relacijsku algebru. c c Rjeenje Sa si oznaavat emo medurezultate. s c c r1 r2 A B C 1 3 1 s1 = 2 0 2 1 1 2 3 2 3 t1 : (1 > 3) (1 = 2) t2 : (2 > 0) (2 = 2)

t3 : (1 > 1) (2 = 2) t4 : (3 > 2) (3 = 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 ogranienje c r A B C 1 3 1 2 0 2 s B C 1 1 3 2 D 2 3

H = [(A Izraunajte AC (r .C ,s.B (H (r s))). c

s.C ) (r .B > s.B)] (A < s.C )

Rjeenje Sa ri oznaavat emo medurezultate. s c c r s A r .B r .C 1 3 1 r1 = 1 3 1 2 0 2 2 0 2 t1 : [(1 t2 : [(1 t3 : [(2 t4 : [(2 s.B s.C 1 1 3 2 1 1 3 2 D 2 3 2 3

1) (3 > 1)] (1 < 1) [

2) (3 > 3)] (1 < 2) [ ]

1) (0 > 1)] (2 < 1) [ ] 2) (0 > 3)] (2 < 2) [ ] H (r1 ) A r .B r .C r2 = 1 3 1 2 0 2 s.B s.C 3 2 1 1 s.B 3 1 D 3 2

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

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 1 3 s.B 3 1 r3 3 1

Zadatak 1.4 Zadane su relacije i ogranienje c r1 A B C 2 2 1 1 1 0 3 1 1 r2 B C 2 1 1 1 1 0 D 0 2 2

F = [(A < B)(B = 2)] (B = C ) Potrebno je izraunati upit RA(U) : AC (AD (F (r1 oo r2 ))) c Rjeenje Sa si emo oznaavati medurezultate. s c c r1 oo r2 A B C 2 2 1 s1 = 1 1 0 3 1 1 D 0 2 2

t1 : [(2 < 2) (2 = 2)] (2 = 1) [ ] 3

t1 : [(1 < 1) (1 = 2)] (1 = 0) [ t1 : [(3 < 1) (1 = 2)] (1 = 1) [ F (s1 ) A B C 2 2 1 1 1 0

] D 0 2

s2 =

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 ogranienje: c 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 = 2)] (A > 2) Neka je zadan upit RA(U): AC (AB (F (r1 r2 ))) Izraunajte odgovor na upit koristei relacijsku algebru. c c Rjeenje Sa si oznaavat emo medurezultate. s c c r1 r2 A B C s1 = 1 1 2 2 0 2 [(1 > 1) (2 = 2)] (1 > 2) [ ] [(2 > 0) (2 = 2)] (2 > 2) [ ] F (s1 ) A B C 1 1 2 AB (s2 ) A B 1 1 4

s2 = s3 =

AC (s3 ) = = =

A (s3 ) A B (s3 ) B oo 1 1 A (s3 ) oo B (s3 ) A B s3 1 1 AC (s3 ) A B

s3

Zadatak 1.6 Zadane su relacije i ogranienja: c 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 B) (D = 2)

F G Neka je zadan upit RA(U):

= (A

= (C = a)

AC (ABD (G (r1 )) F (r2 )) Izraunajte odgovor na upit koristei relacijsku algebru. c c Rjeenje Sa si oznaavat emo medurezultate. s c c G (r1 ) A B C 2 2 b 1 4 b (b = a) (b = a) (a = a) ABD (s1 ) A B D 2 2 3 1 4 2 F (r2 ) A B D 2 2 3 D 3 2

s1 =

s2 =

s3 = (1 (2 (3

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

2) (4 = 2) s2 s3 A B D s4 = 2 2 3 1 4 2 5

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

1.2

Relacijska algebra i SQL

Zadatak 1.7 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) Iskaite upit u relacijskoj algebri (RA(U)) z (b) Izraunajte odgovor na upit koristei relacijsku algebru. c c Rjeenje Rjeavamo (a). Iz SELECT klauzule isitavamo elemente u konanoj projekciji. Sa ri s s c c oznaavat emo relacije koje jo valja izraunati: c c s c A
r .B D (r1 )

Iz WHERE klauzule isitavamo formulu za selekciju: c F = (r .C = s.C ) (A > 1) Sada imamo r1 = F (r2 ) odnosno: 6

r1 = (r .C =s.C )(A>1) (r2 ) Iz FROM klauzule isitavamo relacije koje valja staviti u produkt. Stoga imamo: c r2 = r s Konano rjeenje je stoga: c s A Rjeavamo (b). s 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
r .B D ((r .C =s.C )(A>1) (r

s))

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

t2 : (1 = 2) (1 > 1) t3 : (2 = 1) (2 > 1) t4 : (2 = 2) (2 > 1) s.B s.C 3 2 D 3

(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)) A r .B D 2 0 3

Zadatak 1.8 Zadane su relacije i ogranienje: c 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 = ) Neka je zadan upit RA(U): AC (F (r1 oo r2 )) (a) Izraunajte odgovor na upit koristei relacijsku algebru. c c (b) Pretvorite RA(U) u SQL(U) Rjeenje Rjeavamo (a): s s S si oznaavat emo medurezultate. c c r1 oo r2 A B C s1 = 1 a 1 2 c 2 7 D E 2 2

t1 : (1 > 1) ( = ) t2 : (2 > 2) ( = ) s2 = F (s1 ) A B

C D E C

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

AC (s2 ) A

Rjeavamo (b): s Poinjemo sa SELECT klauzulom koja je ekvivalentna konanoj projekciji: c c SELECT A , C U FROM klauzuli moraju se pojaviti sve relacije iz RA(U): FROM r1 , r2 U WHERE klauzuli moramo uvrstiti ogranienje F : c WHERE A > C AND D <> Prirodni spoj je samo dodatno ogranienje u WHERE klauzuli: c 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 toan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji se c atribut A misli (A iz r1 ili A iz r2 ). SQL stroj u pravilu ne zakljuuje o jednakosti atributa temeljem c imena, ve temeljem imena i relacije u kojoj se oni nalaze, zbog ega je potrebno koristiti notaciju c c naziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacije izjednaava atributom u drugoj relaciji (uvjet prirodnog spoja), u naem sluaju moemo proizvoljno c s c z 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

2 SQL

Zadatak 2.1 Zadana je relacija artikl Sifra 1 2 3 Naziv Jedinina cijena c Kava 8 Rakija 4 Klipi c 2

Zadana su ogranienja: c Sifra je primarni klju relacije c


Svaki artikl mora imati jedinstven naziv Jedinina cijena ne smije biti negativna c

(a) Kreirajte u SQL-u strukturu tablice artikl s odgovarajuim ogranienjima. c c (b) Neka je zadan upit U : odrediti sve one ifre i nazive artikala ija je cijena vea od 3. Napiite s c c s SQL(U) i RA(U). Zatim izraunajte relaciju o(RA(U)) koja je odgovor na upit U. c Rjeenje Rjeavamo (a): s s 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 ) ) Rjeavamo (b): s 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 9

RA(U) : sifra, cijena (jedinicna cijena>3 (artikl)) Sa ri oznaavat emo medurezultate: c c t1 : (8 > 3) t2 : (4 > 3) t3 : (2 > 3) jedinicna cijena>3 (artikl) sifra naziv jedinina cijena c r1 = 1 Kava 8 2 Rakija 4 c sifra, cijena (r1 ) sifra jedinina 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) znai da nastavnik n predaje predmet p. c (a) Kreirajte u SQL-u strukturu tablice pr (b) Iskaite rijeima entitetski integritet za tablicu pr z c (c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmet fm. Napiite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U). s Rjeenje Rjeavamo (a): s s CREATE TABLE p r ( N VARCHAR( 2 ) , P VARCHAR( 2 ) , PRIMARY KEY( N, P ) ) Rjeavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost null s jer su dio primarnog kljua. c Rjeavamo (c). s SELECT N FROM p r WHERE P = uz AND N NOT IN ( 10

SELECT N FROM p r WHERE P = fm ) o(SQL(U)) N n1 Zadatak 2.3 Zadana je relacija i ogranienja c 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 vea od 1900 c

(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajuim ogranienjima. c c (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine. Napiite SQL(U) i RA(U). Zatim izraunajte relaciju o(RA(U)) koja je odgovor na upit U. s c Rjeenje Rjeavamo (a). s s 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 ) ) Rjeavamo (b). s 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 Naslov (r1 ) Naslov Arhitektura suvremenih organizacija Teorija baza podataka 11

Zadatak 2.4 Zadana je relacija knjiga ISBN 1 2 3 Zadana su ogranienja: c


Svaka knjiga mora imati naslov Ako se ne specicira godina izdanja upisuje se 2011

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

(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajuim ogranienjima. c c (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. Napiite s SQL(U) i RA(U). Zatim izraunajte relaciju o(RA(U)) koja je odgovor na upit U. c Rjeenje Rjeavamo (a). s s 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 ) Rjeavamo (b). s SQL(U): SELECT N a s l o v FROM k n j i g a WHERE Godina < 2008 RA(U) : Naslov (Godina<2008 (knjiga)) t1 : 1992 < 2008 t2 : 2005 < 2008 t3 : 2009 < 2008 Godina>2000 (knjiga) ISBN Naslov Godina r1 = 1 Programiranje u Prologu 1992 2 Arhitektura suvremenih organizacija 2005 Naslov (r1 ) Naslov Programiranje u Prologu Arhitektura suvremenih organizacija Zadatak 2.5 Zadana je relacija raun broj rauna klijent c c saldo 1 k1 2134, 56 2 k2 444, 09 3 k3 234, 43 4 k1 342.51 Zadana su ogranienja (poslovna pravila): c 12

Svaki baknovni raun mora imati broj rauna, klijenta i saldo c c Doputen negativni saldo moe biti 2000 s z

(a) Kreirajte u SQL-u strukturu tablice raun s odgovarajuim ogranienjima. c c c (b) Neka je zadan upit U : odrediti sve one klijente koji imaju barem jedan raun s negativnim c saldom. Napiite SQL(U) i RA(U). Zatim izraunajte relaciju o(RA(U)) koja je odgovor na s c upit U. Rjeenje Rjeavamo (a). s s 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 ) Rjeavamo (b). s 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<0 (racun))

t1 : t2 :

2134, 56 < 0 444, 09 < 0

t3 : 234, 43 < 0 t4 : 342.51 < 0 saldo<0 (racun) broj racuna klijent saldo 1 k3 234, 43 2 k1 342.51 klijent (r1 ) klijent k3 k1 Zadatak 2.6 Zadana je baza podataka tvprogram vrijeme emisija 26.06.2011. 10:00 1 26.06.2011. 10:30 2 26.06.2011. 11:45 2 s z emisija ifra naziv opis anr 1 e1 o1 z1 2 e2 o2 z1 3 e3 o3 z2

r1 =

Zadana su ogranienja: c
Primarni klju relacije tvprogram je vrijeme c Primarni klju relacije emisija je ifra c s Naziv emisije je jedinstven u relaciji emisija

13

Atribut emisija u relaciji tvprogram vanjski je klju koji se referencira na primarni klju relacije c c emisija

Kreirajte u SQL-u strukturu tablica tvprogram i emisija s odgovarajuim ogranienjima. c c Rjeenje Rjeenje za tablicu emisija: s s 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, ) Rjeenje za tablicu tvprogram: s CREATE TABLE t v p r o g r a m ( 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 ) )

14

You might also like