Professional Documents
Culture Documents
Zbirka
Zbirka
Markus Schatten
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
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
s.B s.C
1
1
3
2
1
1
3
2
D
2
3
2
3
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
AC (r3 ) r .C
1
2
s.B
3
1 r3
3
1
s.B
1
3
r2 B C
2 1
1 1
1 0
D
0
2
2
D
0
2
2
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
r2 A B C
1 1 2
2 0 2
3 2 3
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
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)
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
AC (s4 ) A B D
2 2 2
2 4 3
2 4 2
1 2 3
1 2 2
1 4 3
A B C
1 3 1
2 0 2
s B C
1 1
3 2
D
2
3
r .B D (r1 )
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
s.B s.C
3
2
s)) A r .B D
2 0
3
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
Sifra
1
2
3
Zadana su ogranicenja:
Sifra
je primarni kljuc relacije
Svaki artikl mora imati jedinstven naziv
Jedinicna cijena ne smije biti negativna
N
n1
n1
n2
n3
n3
n3
P
bp
uz
bp
bp
uz
fm
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
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
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
r1 =
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
Atribut emisija u relaciji tvprogram vanjski je kljuc koji se referencira na primarni kljuc relacije
emisija
14