You are on page 1of 19

Doc. dr. sc.

Markus Schatten

Zbirka rjesenih zadataka iz baza podataka

Sadrzaj

1 Relacijska algebra
1.1 Izracun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1
6

2 SQL

ii

Predgovor

iii

iv

1 Relacijska algebra

1.1

Izra
cun upita

Zadatak 1.1 Zadane su relacije i ogranicenje:


r2 B C
1 1
0 2
0 2

r1 A B C
1 0 2
2 0 2
2 1 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.
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

D
2
2
3

t4 : (2 = 3)
F (s2 ) A D
2 2
Zadatak 1.2 Zadane su relacije i ogranicenje:
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 ))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat 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 ogranicenje
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 )


Izracunajte AC (r .C ,s.B (H (r s))).
2

Rjesenje Sa ri oznacavat 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) [> ] >
H (r1 ) A r .B r .C
r2 =
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 ogranicenje


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 6= 2)] (B 6= C )


Potrebno je izracunati upit RA(U) : AC (AD (F (r1 oo r2 )))
Rjesenje Sa si cemo oznacavati medurezultate.
r1 oo r2 A B C
2 2 1
s1 =
1 1 0
3 1 1

D
0
2
2

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


3

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 ogranicenje:


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 )))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat 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 =
s3 =

F (s1 ) A B C
1 1 2
AB (s2 ) A B
1 1
4

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 ogranicenja:


r1 A B C
2 2 b
1 4 b
5 1 a

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

D
3
2
2

= (A 6 B) (D 6= 2)

= (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
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) >
s2 s3 A B D
s4 =
2 2 3
1 4 2
5

s3

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

1.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

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) 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 ri
oznacavat 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:
6

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


Iz FROM klauzule iscitavamo relacije koje valja staviti u produkt. Stoga imamo:
r2 = r s
Konacno rjesenje je stoga:
A

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

s))

Rjesavamo (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.8 Zadane su relacije i ogranicenje:


r1 A B C
1 a 1
2 b 2
2 c 2

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) Izracunajte odgovor na upit koristeci relacijsku algebru.
(b) Pretvorite RA(U) u SQL(U)
Rjesenje Rjesavamo (a):
S si oznacavat cemo medurezultate.
r1 oo r2 A B C
s1 =
1 a 1
2 c 2
7

D E
2
2

D
3

t1 : (1 > 1) ( 6= ) >
t2 : (2 > 2) ( 6= ) >
s2 =

F (s1 ) A B

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

C D E

AC (s2 ) A

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, C
FROM r1 , r2
WHERE 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 se
atribut A misli (A iz r1 ili A iz r2 ). SQL stroj u pravilu ne zakljucuje o jednakosti atributa temeljem
imena, vec 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
izjednacava atributom u drugoj relaciji (uvjet prirodnog spoja), u nasem slucaju mozemo 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

2 SQL

Zadatak 2.1 Zadana je relacija


artikl

Sifra
1
2
3

Naziv Jedinicna cijena


Kava
8
Rakija
4
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. Napisite
SQL(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 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 oznacavat cemo medurezultate:
t1 : (8 > 3) >
t2 : (4 > 3) >
t3 : (2 > 3)
jedinicna cijena>3 (artikl) sifra naziv jedinicna cijena
r1 =
1
Kava
8
2
Rakija
4
sifra, cijena (r1 ) sifra jedinicna 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) 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 predmet
fm. Napisite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U).
Rjesenje Rjesavamo (a):
CREATE TABLE p r
(
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 null
jer su dio primarnog kljuca.
Rjesavamo (c).
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 ogranicenja
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 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,
N a s l o v TEXT NOT NULL ,
Godina INTEGER NOT NULL CHECK( Godina > 1900 )
)
Rjesavamo (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
Naslov (r1 ) Naslov
Arhitektura suvremenih organizacija
Teorija baza podataka
11

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 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. 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,
N a s l o v TEXT NOT NULL ,
Godina INTEGER DEFAULT 2011
)
Rjesavamo (b).
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
racun broj racuna klijent
saldo
1
k1
2134, 56
2
k2
444, 09
3
k3
234, 43
4
k1
342.51
Zadana su ogranicenja (poslovna pravila):
12

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 negativnim
saldom. Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na
upit U.
Rjesenje Rjesavamo (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
)

Rjesavamo (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<0 (racun))

t1 :

2134, 56 < 0

t2 :

444, 09 < 0

t3 : 234, 43 < 0 >


t4 : 342.51 < 0 >

r1 =

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

Zadana su ogranicenja:
Primarni kljuc relacije tvprogram je vrijeme
Primarni kljuc relacije emisija je sifra
Naziv emisije je jedinstven u relaciji emisija

13

emisija sifra naziv opis zanr


1
e1
o1
z1
2
e2
o2
z1
3
e3
o3
z2

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

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 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