Doc. dr. sc. Markus Schatten
Zbirka rjesenih zadataka iz baza podataka
Sadrzaj
1 Relacijska algebra 11.1 Izracun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 SQL 9
i
ii
Predgovor
iii
iv
1 Relacijska algebra
1.1 Izracun upita
Zadatak 1.1 Zadane su relacije i ogranicenje:
r1 A B C
1 0 22 0 22 1 3
r2 B C D
1 1 20 2 20 2 3
F = (A = D)
Neka je zadan upit RA(U):
σF (ΠAD(r1 oo r2))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat cemo medurezultate.
s1 =
r1 oo r2 A B C D
1 0 2 21 0 2 32 0 2 22 0 2 3
s2 =
ΠAD(s1) A D
1 21 32 22 3
t1 : (1 = 2) ≡ ⊥
t2 : (1 = 3) ≡ ⊥
t3 : (2 = 2) ≡ >
1
t4 : (2 = 3) ≡ ⊥
σF (s2) A D
2 2
Zadatak 1.2 Zadane su relacije i ogranicenje:
r1 A B C
1 3 12 0 2
r2 A B C
1 1 22 0 23 2 3
F = (A > B) ∨ (C 6= 2)
Neka je zadan upit RA(U):
ΠAB(σF (r1 ∪ r2))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat cemo medurezultate.
s1 =
r1 ∪ r2 A B C
1 3 12 0 21 1 23 2 3
t1 : (1 > 3) ∨ (1 6= 2) ≡ ⊥ ∨> ≡ >
t2 : (2 > 0) ∨ (2 6= 2) ≡ > ∨⊥ ≡ >
t3 : (1 > 1) ∨ (2 6= 2) ≡ ⊥ ∨⊥ ≡ ⊥
t4 : (3 > 2) ∨ (3 6= 2) ≡ > ∨> ≡ >
s2 =
σF (s1) A B C
1 3 12 0 23 2 3
ΠAB(s2) A B
1 32 03 2
Zadatak 1.3 Zadane su relacije i ogranicenje
r A B C
1 3 12 0 2
s B C D
1 1 23 2 3
H = [(A 6 s.C ) ∨ (r .B > s.B)]⇒ (A < s.C )
Izracunajte AC (Πr .C ,s.B(σH(r ⊗ s))).
2
Rjesenje Sa ri oznacavat cemo medurezultate.
r1 =
r ⊗ s A r .B r .C s.B s.C D
1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3
t1 : [(1 6 1) ∨ (3 > 1)]⇒ (1 < 1) ≡ [> ∨>]⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥
t2 : [(1 6 2) ∨ (3 > 3)]⇒ (1 < 2) ≡ [> ∨⊥]⇒ > ≡ > ⇒ > ≡ >
t3 : [(2 6 1) ∨ (0 > 1)]⇒ (2 < 1) ≡ [⊥ ∨⊥]⇒ ⊥ ≡ ⊥ ⇒ ⊥ ≡ >
t4 : [(2 6 2) ∨ (0 > 3)]⇒ (2 < 2) ≡ [> ∨⊥]⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥
r2 =
σH(r1) A r .B r .C s.B s.C D
1 3 1 3 2 32 0 2 1 1 2
r3 =
Πr .C ,s.B(r2) r .C s.B
1 32 1
AC (r3) =
Πr .C (r3) r .C
12
oo
Πs.B(r3) s.B
31
− r3
=
Πr .C (r3) oo Πs.B(r3) r .C s.B
1 31 12 32 1
− r3
=
AC (r3) r .C s.B
1 12 3
Zadatak 1.4 Zadane su relacije i ogranicenje
r1 A B C
2 2 11 1 03 1 1
r2 B C D
2 1 01 1 21 0 2
F = [(A < B)(B 6= 2)]⇒ (B 6= C )
Potrebno je izracunati upit RA(U) : AC (ΠAD(σF (r1 oo r2)))
Rjesenje Sa si cemo oznacavati medurezultate.
s1 =
r1 oo r2 A B C D
2 2 1 01 1 0 23 1 1 2
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 D
2 2 1 01 1 0 2
s3 =
ΠAD(s2) A D
2 01 2
AC (s3) =
ΠA(s3) A
21
oo
ΠD(s3) D
02
− s3
=
ΠA(s3) oo ΠD(s3) A D
2 02 21 01 2
− s3
=
AC (s3) A D
2 21 0
Zadatak 1.5 Zadane su relacije i ogranicenje:
r1 A B C
4 2 32 0 21 1 2
r2 A B C
1 1 22 0 23 2 3
F = [(A > B) ∨ (C 6= 2)]⇒ (A > 2)
Neka je zadan upit RA(U):
AC (ΠAB(σF (r1 ∩ r2)))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat cemo medurezultate.
s1 =
r1 ∩ r2 A B C
1 1 22 0 2
[(1 > 1) ∨ (2 6= 2)]⇒ (1 > 2) ≡ [⊥ ∨⊥]⇒ ⊥ ≡ ⊥ ⇒ ⊥ ≡ >
[(2 > 0) ∨ (2 6= 2)]⇒ (2 > 2) ≡ [> ∨⊥]⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥
s2 =σF (s1) A B C
1 1 2
s3 =ΠAB(s2) A B
1 1
4
AC (s3) =
(ΠA(s3) A
1oo
ΠB(s3) B
1
)− s3
=ΠA(s3) oo ΠB(s3) A B
1 1− s3
=AC (s3) A B
∅
Zadatak 1.6 Zadane su relacije i ogranicenja:
r1 A B C D
2 2 b 31 4 b 25 1 a 2
r2 A B D
1 1 22 2 33 2 3
F = (A 6 B)⇔ (D 6= 2)
G = (C 6= a)
Neka je zadan upit RA(U):
AC (ΠABD(σG (r1)) ∪ σF (r2))
Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Sa si oznacavat cemo medurezultate.
s1 =
σG (r1) A B C D
2 2 b 31 4 b 2
(b 6= a) ≡ >
(b 6= a) ≡ >
(a 6= a) ≡ ⊥
s2 =
ΠABD(s1) A B D
2 2 31 4 2
s3 =σF (r2) A B D
2 2 3
(1 6 1)⇔ (2 6= 2) ≡ > ⇔ ⊥ ≡ ⊥
(2 6 2)⇔ (3 6= 2) ≡ > ⇔ > ≡ >
(3 6 2)⇔ (4 6= 2) ≡ ⊥ ⇔ > ≡ ⊥
s4 =
s2 ∪ s3 A B D
2 2 31 4 2
5
AC (s4) =
ΠA(s4) A
21
oo
ΠB(s4) B
24
oo
ΠD(s4) D
32
− s4
=
ΠA(s4) oo ΠB(s4) oo ΠD(s4) A B D
2 2 32 2 22 4 32 4 21 2 31 2 21 4 31 4 2
− s4
=
AC (s4) A B D
2 2 22 4 32 4 21 2 31 2 21 4 3
1.2 Relacijska algebra i SQL
Zadatak 1.7 Zadane su relacije:
r A B C
1 3 12 0 2
s B C D
1 1 23 2 3
Neka je zadan upit SQL(U):
SELECT r . A, r . B, s .DFROM r , sWHERE r . C = s . CAND A > 1
(a) Iskazite upit u relacijskoj algebri (RA(U))
(b) Izracunajte odgovor na upit koristeci relacijsku algebru.
Rjesenje Rjesavamo (a). Iz SELECT klauzule iscitavamo elemente u konacnoj projekciji. Sa rioznacavat cemo relacije koje jos valja izracunati:
ΠA r .B D(r1)
Iz WHERE klauzule iscitavamo formulu za selekciju:
F = (r .C = s.C ) ∧ (A > 1)
Sada imamo
r1 = σF (r2)
odnosno:
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 s.B s.C D
1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3
t1 : (1 = 1) ∧ (1 > 1) ≡ > ∧⊥ ≡ ⊥
t2 : (1 = 2) ∧ (1 > 1) ≡ ⊥ ∧⊥ ≡ ⊥
t3 : (2 = 1) ∧ (2 > 1) ≡ ⊥ ∧> ≡ ⊥
t4 : (2 = 2) ∧ (2 > 1) ≡ > ∧> ≡ >
σ(r .C=s.C)∧(A>1)(r ⊗ s) A r .B r .C s.B s.C D
2 0 2 3 2 3
Π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 ogranicenje:
r1 A B C D
1 a 1 α2 b 2 β2 c 2 α
r2 A B E
1 a 22 c 23 a 3
F = (A > C ) ∧ (D 6= β)
Neka je zadan upit RA(U):
ΠAC (σF (r1 oo r2))
(a) Izracunajte odgovor na upit koristeci relacijsku algebru.
(b) Pretvorite RA(U) u SQL(U)
Rjesenje Rjesavamo (a):
S si oznacavat cemo medurezultate.
s1 =
r1 oo r2 A B C D E
1 a 1 α 22 c 2 α 2
7
t1 : (1 > 1) ∧ (α 6= β) ≡ ⊥ ∧> ≡ ⊥
t2 : (2 > 2) ∧ (α 6= β) ≡ ⊥ ∧> ≡ ⊥
s2 =σF (s1) A B C D E
∅
s3 = ΠAC (σF (r1 oo r2)) =ΠAC (s2) A C
∅
Rjesavamo (b):Pocinjemo sa SELECT klauzulom koja je ekvivalentna konacnoj projekciji:
SELECT A, C
U FROM klauzuli moraju se pojaviti sve relacije iz RA(U):
FROM r1, r2
U WHERE klauzuli moramo uvrstiti ogranicenje F :
WHERE A > C AND D <> β
Prirodni spoj je samo dodatno ogranicenje u WHERE klauzuli:
r1.A = r2.A AND r1.B = r2.B
Dakle ukupni upit je:
SELECT A, CFROM r1, r2WHERE A > C AND D <> β AND r1.A = r2.A AND r1.B = r2.B
Ovaj rezultat nije u potpunosti tocan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji seatribut A misli (A iz r1 ili A iz r2). SQL stroj u pravilu ne zakljucuje o jednakosti atributa temeljemimena, vec temeljem imena i relacije u kojoj se oni nalaze, zbog cega je potrebno koristiti notacijunaziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacijeizjednacava atributom u drugoj relaciji (uvjet prirodnog spoja), u nasem slucaju mozemo proizvoljnoodabrati relaciju:
SELECT r1.A, CFROM r1, r2WHERE r1.A > C AND D <> β AND r1.A = r2.A AND r1.B = r2.B
8
2 SQL
Zadatak 2.1 Zadana je relacija
artikl Sifra Naziv Jedinicna cijena
1 Kava 82 Rakija 43 Klipic 2
Zadana su ogranicenja:
� Sifra je primarni kljuc relacije
� Svaki artikl mora imati jedinstven naziv
� Jedinicna cijena ne smije biti negativna
(a) Kreirajte u SQL-u strukturu tablice artikl s odgovarajucim ogranicenjima.
(b) Neka je zadan upit U : odrediti sve one sifre i nazive artikala cija je cijena veca od 3. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.
Rjesenje Rjesavamo (a):
CREATE TABLE a r t i k l(
s i f r a INT PRIMARY KEY,n a z i v VARCHAR UNIQUE ,” j e d i n i c n a c i j e n a ” FLOAT CHECK( ” j e d i n i c n a c i j e n a ” > 0 )
)
Rjesavamo (b):
SQL(U):
SELECT s i f r a , n a z i vFROM a r t i k lWHERE ” j e d i n i c n a c i j e n a ” > 3
9
RA(U) : Πsifra, cijena(σjedinicna cijena>3(artikl))
Sa ri oznacavat cemo medurezultate:
t1 : (8 > 3) ≡ >
t2 : (4 > 3) ≡ >
t3 : (2 > 3) ≡ ⊥
r1 =
σjedinicna cijena>3(artikl) sifra naziv jedinicna cijena
1 Kava 82 Rakija 4
Πsifra, cijena(r1) sifra jedinicna cijena
1 82 4
Zadatak 2.2 Zadana je relacija
pr N P
n1 bpn1 uzn2 bpn3 bpn3 uzn3 fm
Semantika: pr(n, p) znaci da nastavnik n predaje predmet p.
(a) Kreirajte u SQL-u strukturu tablice pr
(b) Iskazite rijecima entitetski integritet za tablicu pr
(c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmetfm. Napisite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U).
Rjesenje Rjesavamo (a):
CREATE TABLE pr(
N VARCHAR( 2 ) ,P VARCHAR( 2 ) ,PRIMARY KEY( N, P )
)
Rjesavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost null
jer su dio primarnog kljuca.
Rjesavamo (c).
SELECT NFROM prWHERE P = ’ uz ’AND N NOT IN(
10
SELECT NFROM prWHERE P = ’ fm ’
)
o(SQL(U)) N
n1
Zadatak 2.3 Zadana je relacija i ogranicenja
knjiga ISBN Naslov Godina
1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009
� Svaka knjiga mora imati naslov i godinu izdanja
� Godina izdanja mora biti veca od 1900
(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.
(b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine.Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.
Rjesenje Rjesavamo (a).
CREATE TABLE k n j i g a(
ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER NOT NULL CHECK( Godina > 1900 )
)
Rjesavamo (b).SQL(U):
SELECT Nas lovFROM k n j i g aWHERE Godina > 2000
RA(U) : ΠNaslov (σGodina>2000(knjiga))
t1 : 1992 > 2000 ≡ ⊥
t2 : 2005 > 2000 ≡ >
t3 : 2009 > 2000 ≡ >
r1 =
σGodina>2000(knjiga) ISBN Naslov Godina
2 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009
ΠNaslov (r1) Naslov
Arhitektura suvremenih organizacijaTeorija baza podataka
11
Zadatak 2.4 Zadana je relacija
knjiga ISBN Naslov Godina
1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009
Zadana su ogranicenja:
� Svaka knjiga mora imati naslov
� Ako se ne specificira godina izdanja upisuje se 2011
(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.
(b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.
Rjesenje Rjesavamo (a).
CREATE TABLE k n j i g a(
ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER DEFAULT 2011
)
Rjesavamo (b).SQL(U):
SELECT Nas lovFROM k n j i g aWHERE Godina < 2008
RA(U) : ΠNaslov (σGodina<2008(knjiga))
t1 : 1992 < 2008 ≡ >
t2 : 2005 < 2008 ≡ >
t3 : 2009 < 2008 ≡ ⊥
r1 =
σGodina>2000(knjiga) ISBN Naslov Godina
1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 2005
ΠNaslov (r1) Naslov
Programiranje u ProloguArhitektura suvremenih organizacija
Zadatak 2.5 Zadana je relacija
racun broj racuna klijent saldo
1 k1 2134, 562 k2 444, 093 k3 −234, 434 k1 −342.51
Zadana su ogranicenja (poslovna pravila):
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 negativnimsaldom. Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor naupit U.
Rjesenje Rjesavamo (a).
CREATE TABLE racun(
” b r o j racuna ” INTEGER PRIMARY KEY,k l i j e n t TEXT NOT NULL ,s a l d o DECIMAL NOT NULL CHECK( s a l d o > −2000 )
)
Rjesavamo (b).SQL(U):
SELECT k l i j e n tFROM racunWHERE s a l d o < 0
RA(U) : Πklijent(σ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, 432 k1 −342.51
Πklijent(r1) klijent
k3k1
Zadatak 2.6 Zadana je baza podataka
tvprogram vrijeme emisija
26.06.2011. 10:00 126.06.2011. 10:30 226.06.2011. 11:45 2
emisija sifra naziv opis zanr
1 e1 o1 z12 e2 o2 z13 e3 o3 z2
Zadana su ogranicenja:
� Primarni kljuc relacije tvprogram je vrijeme
� Primarni kljuc relacije emisija je sifra
� Naziv emisije je jedinstven u relaciji emisija
13
� Atribut emisija u relaciji tvprogram vanjski je kljuc koji se referencira na primarni kljuc relacijeemisija
Kreirajte u SQL-u strukturu tablica tvprogram i emisija s odgovarajucim ogranicenjima.
Rjesenje Rjesenje za tablicu emisija:
CREATE TABLE e m i s i j a(
s i f r a INTEGER PRIMARY KEY,n a z i v TEXT UNIQUE ,o p i s TEXT,z a n r TEXT,
)
Rjesenje za tablicu tvprogram:
CREATE TABLE tvprogram(
v r i j e m e DATETIME PRIMARY KEY,e m i s i j a INTEGER FOREIGN KEY REFERENCES e m i s i j a ( s i f r a )
)
14