Professional Documents
Culture Documents
Predavanja
ožujak 2019.
2. Relacijski model
podataka
Relacijski model podataka
D1 D2 D3
(Iva, Novak, 1987)
Iva Novak 1987 (Iva, Novak, 1989)
Hrvoje Kolar 1989 (Iva, Kolar, 1987)
Ivan (Iva, Kolar, 1989)
(Hrvoje, Novak, 1987)
(Hrvoje, Novak, 1989)
R (Hrvoje, Kolar, 1987)
(Hrvoje, Kolar, 1989)
(Ivan, Novak, 1987)
(Iva, Novak, 1989) (Ivan, Novak, 1989)
(Hrvoje, Novak, 1987) (Ivan, Kolar, 1987)
(Ivan, Kolar, 1989) (Ivan, Kolar, 1989)
▪ Relacijska shema
MJESTO = { pbr, nazMjesto, sifZup }
identična je relacijskoj shemi
MJESTO = { sifZup, pbr, nazMjesto }
mjesto
pbr nazMjesto sifZup
42000 Varaždin 7
51000 Rijeka 2
52100 Pula 4 kardinalnost = 5
51300 Delnice 2
42230 Ludbreg 7
stupanj = 3 Oznake:
deg(mjesto) = 3
card(mjesto) = 5
Kratki pogled
SUBP
Baza podataka Rječnik
CREATE DATABASE knjiznica; knjiznica podataka
...
▪ Rječnik podataka sadrži opise relacijskih shema, integritetskih ograničenja, ...
mjesto
DELETE FROM mjesto pbr nazMjesto sifZup
WHERE sifZup = 7; 52100 Pula 4
▪ Unarne operacije
• projekcija, selekcija, preimenovanje
• agregacija, grupiranje
▪ Binarne operacije
• skupovske operacije (set operations)
▪ temelje se na relacijama kao skupovima n-torki
▪ unija, presjek, razlika
zrakoplov pecivo
oznaka naziv oznaka naziv
B-747 Boeing 747 ZE Žemlja
A-360 Airbus 360 PR Perec
r "međurezultat"
A B C D B C s
izdvajanje eliminacija
vertikalnog duplikata B C
s = pB, C(r)
podskupa
tenor grad
P. Domingo London
"međurezultat"
student predmet
mbr ime prez sifra naziv
100 Ivan Kolar 1 Programiranje
102 Ana Novak 2 Matematika
103 Tea Ban
▪ drugačija sintaksa:
▪ SELECT SELECT List
FROM table [CROSS JOIN table]...
[WHERE Condition]
SELECT *
FROM student CROSS JOIN predmet;
SELECT *
FROM r1 CROSS JOIN r2 CROSS JOIN r3;
NIJE RELACIJA!
p = r s(B2, C)(s) p A B B2 C
1 a c
r A B s B C 1 a d
1 a c 2 b c
2 b d 2 b d
3 c 3 c c
3 c d
© FER - Zagreb Baze podataka 2018/2019 55
SQL - Preimenovanje atributa
A B B2 C
1 a c
SELECT A, r.B, s.B AS B2, C 1 a d
FROM r, s; 2 b c
2 b d
3 c c
3 c d
▪ ili:
▪ ili:
linija zrakoplov
let udaljenost tip dolet
CA-825 700 B747 13000
LH-412 4800 A320 5400
BA-722 15000 DC-9 3100
CA-311 13000
SELECT *
FROM linija, zrakoplov Kartezijev produkt
WHERE dolet >= udaljenost; Selekcija
▪ drugačija sintaksa:
▪ SELECT SELECT List
FROM table [JOIN table ON joinCondition]...
[WHERE Condition]
SELECT *
FROM linija JOIN zrakoplov
ON dolet >= udaljenost;
▪ Kako pronaći linije i zrakoplove koji na tim linijama mogu letjeti, ali
samo za one linije na kojima je udaljenost veća od 4000 km
SELECT *
FROM linija, zrakoplov
WHERE dolet >= udaljenost
let udaljenost tip dolet
AND udaljenost > 4000;
LH-412 4800 B747 13000
LH-412 4800 A320 5400
SELECT * CA-311 13000 B747 13000
FROM linija
ili JOIN zrakoplov
ON dolet >= udaljenost
WHERE udaljenost > 4000;
▪ Koristi se ekvivalencija
s
r >< s = F (r s) mjesto pbr nazMjesto sifZup
F 42000 Varaždin 7
52100 Pula 4
42230 Ludbreg 7
mjesto >< zupanija zupanija
sifZup = sifZupanija sifZupanija nazZup
7 Varaždinska
4 Istarska
SELECT *
FROM mjesto, zupanija
WHERE sifZup = sifZupanija;
SELECT *
FROM mjesto
ili JOIN zupanija
ON sifZup = sifZupanija;
prosjOcj
SELECT AVG(ocjena) AS prosjOcj
3.625
FROM ispit;
rez2(broj2)(GSUM(tezina)(osoba))
101 62 170
rez2 broj2
103 94 186
105 74 181 292
107 62 165
rez3(broj3)(GAVG(visina)(osoba)) rez3 broj3
175.5
broj1
SELECT COUNT(sifra) AS broj1 FROM osoba;
4
broj2
SELECT SUM(tezina) AS broj2 FROM osoba;
292
broj3
SELECT AVG(visina) AS broj3 FROM osoba;
175.5
▪ Loše rješenje:
• Za svaki predmet napisati po jedan upit
prosjek(prosjOcjMat)(GAVG(ocjena)(snazPred= 'Matematika'(ispit)))
SELECT AVG(ocjena) AS prosjOcjMat
FROM ispit prosjOcjMat
WHERE nazPred = 'Matematika'; 3.25
prosjek(prosjOcjFiz)(GAVG(ocjena)(snazPred= 'Fizika'(ispit)))
SELECT AVG(ocjena) AS prosjOcjFiz
FROM ispit prosjOcjFiz
WHERE nazPred = 'Fizika'; 4
▪ Zadana je relacija r(R). Neka su atributi A1, A2, ..., Am, B1, B2, ...,
Bn atributi sheme R. Opći oblik operacije grupiranja je sljedeći:
SELECT nazPred
nazPred akGod prosjOcj maxOcj
, akGod
Matematika 2005 3.333 5
, AVG(ocjena) AS prosjOcj
Matematika 2006 3 3
, MAX(ocjena) AS maxOcj
Fizika 2004 5 5
FROM ispit
Fizika 2006 3.5 5
GROUP BY nazPred, akGod; Vjerojatnost 2005 4 4