Upload
zelda-prozek
View
78
Download
20
Embed Size (px)
Citation preview
veljaa 2012.
Baze podataka
Predavanja
Mirta BaranoviSlaven Zakoek
FER - Zagreb Baze podataka 2011/2012 2
Sadraj
1. Uvod
2. Relacijski model podataka 3. Nepotpune informacije i NULL vrijednosti 4. SQL (1.dio) 5. SQL (2. dio)6. Oblikovanje sheme relacijske baze podataka (1. dio)7. Oblikovanje sheme relacijske baze podataka (2. dio)8. Oblikovanje sheme relacijske baze podataka (3. dio - primjeri)9. Fizika organizacija podataka10. Integritet baze podataka
............................................................................................................ 4
........................................................................ 62
.............................................. 145
.............................................................................................. 185
............................................................................................. 288
............................ 354
............................ 394
.............. 438
................................................................ 481
......................................................................... 553
FER - Zagreb Baze podataka 2011/2012 3
Sadraj
11. Privremene i virtualne relacije12. Pohranjene procedure i okidai13. ER model baze podataka (1. dio)14. ER model baze podataka (2. dio)15. ER model baze podataka (3. dio - primjeri)16. Transakcije i obnova baze podataka u sluaju razruenja17. Kontrola istodobnog pristupa18. Sigurnost baze podataka19. Distribuirane i NoSQL baze podataka20. Literatura
................................................................. 596
.............................................................. 623
........................................................... 674
........................................................... 742
............................................. 775
...................... 802
................................................................... 841
........................................................................ 875
..................................................... 909
................................................................................................. 941
1. Uvod
FER - Zagreb Baze podataka 2011/2012 5
"Nain na koji prikupljate informacije, upravljate njima i koristite ih, odredit e hoete li pobijediti ili izgubiti."
Bill Gates
Stvarni svijet
Informacije
Podaci
FER - Zagreb Baze podataka 2011/2012 7
Obrada podataka sveuilite, knjinica
Knjinica podaci o korisniku knjinice podaci o knjigama traenje knjiga i asopisa posuivanje knjiga
Sveuilite podaci o studentima podaci o nastavnicima uspjeh na ispitu
ISVU - Informacijski sustav visokih uilita RH
FER - Zagreb Baze podataka 2011/2012 8
Obrada podataka - bankarstvo
otvaranje rauna novane transakcije praenje stanja na raunu praenje kupnji ostvarenih putem
kreditnih kartica
FER - Zagreb Baze podataka 2011/2012 9
Obrada podataka - telekomunikacije
podaci o pozivima telefonski rauni podaci o mrei podaci o kvarovima
FER - Zagreb Baze podataka 2011/2012 10
Obrada podataka - znanost
podaci prikupljeni tijekom istraivanja u fizici, biologiji, kemiji...
FER - Zagreb Baze podataka 2011/2012 11
Obrada podataka - istraivanje i zatita okolia
morski sustavi(plimna dinamika, temperatura, slanost, irenje tvari u moru)
rezultati mjerenja satelitski podaci raunalne simulacije
informatika o okoliu satelitska oceanografija
ekoloko modeliranje
FER - Zagreb Baze podataka 2011/2012 12
Obrada podataka - medicina
podaci o pacijentu povijest bolesti rezultati testova podaci s bolnikih
instrumenata i senzora
FER - Zagreb Baze podataka 2011/2012 13
Obrada podataka sport
podaci o natjecateljima rezultati utakmica i utrka statistika
FER - Zagreb Baze podataka 2011/2012 14
Obrada podataka putovanja
vozni red / red letenja rezervacija karata kupnja karata slobodna i zauzeta mjesta
FER - Zagreb Baze podataka 2011/2012 15
Obrada podataka (elektronika) trgovina
Trgovina rauni koliina prodanih proizvoda zarada
Elektronika trgovina narudbe i prodaja putem Interneta
FER - Zagreb Baze podataka 2011/2012 16
Obrada podataka portali
prikaz podataka iz razliitih izvora
FER - Zagreb Baze podataka 2011/2012 17
Obrada podataka drutvene mree
Velik broj korisnika, konstantna aktivnost Facebook 60 milijuna upita i 4 mil. promjena u sekundi
FER - Zagreb Baze podataka 2011/2012 18
Obrada podataka potpora odluivanju integracija podataka iz
razliitih izvora
razliiti izvori podataka
izvjetaji viedimenzionalni pogled na podatke dubinska analiza (data mining) vizualizacija podataka
FER - Zagreb Baze podataka 2011/2012 19
Uvod u baze podataka
FER - Zagreb Baze podataka 2011/2012 20
Organizacijski sustav ORGANIZACIJSKI SUSTAV je sloeni sustav koji sadri
tehnike i humane podsustave poduzee, ustanova, djelatnost, drutvena organizacija,
tehniki sustav kao npr. telekomunikacijska mrea i sl. esto se organizacijski sustav naziva i POSLOVNIM
SUSTAVOM, iako pojam organizacijski sustav ima neto ire znaenje.
Primjeri organizacijskih sustava: Knjinica Sveuilite Zrana luka
FER - Zagreb Baze podataka 2011/2012 21
Informacija, podatak (Information, Data) INFORMACIJA je sadraj koji primatelju opisuje nove injenice.
Taj sadraj se materijalizira u obliku PODATAKA koji slue za prikaz informacija u svrhu spremanja, prijenosa i obrade.
Podatak je skup simbola (znakova). Informacija je i obraeni podatak koji za primatelja ima
karakter novosti, otklanja neizvjesnost i slui kao podloga za odluivanje. Podatak izvan konteksta nema znaenja
podatak: 4.62 Podatak koji interpretiramo i primjereno poveemo
predstavlja informaciju informacija: prosjek svih ocjena studenta Marka Horvata na
studiju na FER-u u ovom trenutku je 4.62
FER - Zagreb Baze podataka 2011/2012 22
Informacijski sustav (Information System)Definicija: Ukupna infrastruktura, organizacija, osoblje i komponente
koje slue za prikupljanje, obradu, pohranu, prijenos, prikaz, irenje i raspolaganje informacijama
The entire infrastructure, organization, personnel, and components for the collection, processing, storage, transmission, display, dissemination, and disposition of information [INFOSEC-99].
FER - Zagreb Baze podataka 2011/2012 23
Informacijski sustav (Information System) Informacijski sustav je dio svakog
organizacijskog sustava Svrha mu je prikupljanje, obrada,
pohranjivanje i distribucija informacija, koje su potrebne za praenje rada i upravljanje organizacijskim sustavom ili nekim njegovim podsustavom. Informacijski sustav je aktivni sustav
koji moe (ali ne mora) koristiti suvremenu informacijsku tehnologiju
Sredinji dio informacijskog sustava je BAZA PODATAKA
Informacijski sustav, 1868.
FER - Zagreb Baze podataka 2011/2012 24
Baza podataka (Database) BAZA PODATAKA je skup podataka koji su pohranjeni i
organizirani tako da mogu zadovoljiti zahtjeve korisnika.(M. Vetter, 1981.)
BAZA PODATAKA je skup meusobno povezanih podataka, pohranjenih zajedno, uz iskljuenje bespotrebne zalihosti (redundancije), koji mogu zadovoljiti razliite primjene.Podaci su pohranjeni na nain neovisan o programima koji ih koriste. Prilikom dodavanja novih podataka, mijenjanja i pretraivanja postojeih podataka primjenjuje se zajedniki i kontrolirani pristup. Podaci su strukturirani tako da slue kao osnova za razvoj buduih primjena.
(J. Martin, 1979.).
FER - Zagreb Baze podataka 2011/2012 25
Entitet (Entity) bilo to, to ima sutinu ili bit i posjeduje znaajke s pomou
kojih se moe razluiti od svoje okoline osobe: studenti, radnici, graani, ...
student Horvat Ivan (0036123456) ostala bia
Bijeli bor, pas Lajka objekti: vozila, strojevi, ureaji, ulice, zgrade, mjesta, ...
Eiffelov toranj, cepelin Hindenburg apstraktni pojmovi: boje, predmeti nastavnog programa, ...
predmet Baze podataka u nastavnom programu FER-2 dogaaji (neto se desilo, deava se ili se planira da e se desiti)
dana 24.11.2006. odrava se proslava Dana Fakulteta na FER-u povezanost meu objektima, osobama, dogaajima, ...
student Horvat Ivan (0036123456) stanuje u Zagrebu neto o emu elimo prikupljati i pohranjivati podatke
FER - Zagreb Baze podataka 2011/2012 26
Atribut (Attribute) Entitet posjeduje neka SVOJSTVA ili ATRIBUTE koji ga
karakteriziraju. Za Informacijski sustav visokih uilita (ISVU) vana svojstva
studenta Horvat Ivana su: Matini broj studenta (JMBAG) Ime Prezime Datum roenja, ...
Izbor svojstava (atributa) koje emo pratiti ovisi o namjeni informacijskog sustava Horvat Ivan u informacijskom sustavu MUP-a bit e
karakteriziran i atributima: Boja kose Boja oiju Otisak prsta, ...
FER - Zagreb Baze podataka 2011/2012 27
Skup entiteta (Entity Set) Slini entiteti se svrstavaju u skupove entiteta Slini su oni entiteti kojima se promatraju ista svojstva Svi entiteti koji su lanovi istog skupa entiteta imaju iste
atribute "atributi entiteta" "atributi skupa entiteta
atributi skupa entiteta PREDMET sifPred nazPred ectsBod nastProg
atributi skupa entiteta STUDENT jmbag ime prezime datRod
FER - Zagreb Baze podataka 2011/2012 28
USTANOVA
STUDENTPREDMET
RADNIK
ZGRADA
Skupovi entiteta - primjer
FER - Zagreb Baze podataka 2011/2012 29
Domena i vrijednost atributa (Domain, Attribute Value)
Za svaki entitet, atribut poprima vrijednosti iz odreenog skupa vrijednosti koji predstavlja domenu tog atributa domene atributa za skup entiteta PREDMET
sifPred: skup ifara predmeta - cijelih brojeva iz intervala [1,999999] nazPred: skup naziva predmeta - nizova znakova duljine do 80
znakova ectsBod: skup vrijednosti ECTS bodova - realnih brojeva iz intervala
[0.5, 30.0] (s jednom znamenkom iza decimalne toke) nastProg: skup oznaka nastavnih programa - nizova znakova
duljine do 5 znakova vrijednosti atributa za entitet Baze podataka (31503)
sifPred: 31503 nazPred: Baze podataka ectsBod: 6.0 nastProg: FER-2
FER - Zagreb Baze podataka 2011/2012 30
Skup entiteta - prikaz u obliku tablice
sifPred nazPred ectsBod nastProg31503 Baze podataka 6.0 FER-21228 Baze podataka 5.0 FER-1
19670 Matematika 1 7.0 FER-221006 Fizika 1 6.0 FER-2
90 Baze podataka 5.0 ETF-4
entiteti
atributi
vrijednosti atributa
Skup entiteta PREDMET
FER - Zagreb Baze podataka 2011/2012 31
Identifikatori entiteta, kljuevi Skupove atributa ije vrijednosti jednoznano odreuju
entitet u promatranom skupu entiteta (dakle ne postoje dva entiteta s posve istim vrijednostima tih atributa) nazivamo IDENTIFIKATORIMA ili KLJUEVIMA SKUPA ENTITETA.
sifPred nazPred ectsBod nastProg31503 Baze podataka 6.0 FER-2
1228 Baze podataka 5.0 FER-119670 Matematika 1 7.0 FER-221006 Fizika 1 6.0 FER-2
90 Baze podataka 5.0 ETF-4
Primjer: u skupu entiteta PREDMET prikazanom na slici:
skup atributa { sifPred } jest klju skupa entiteta skup atributa { nazPred } nije klju skupa entiteta skup atributa { nazPred, nastProg } jest klju skupa entiteta
FER - Zagreb Baze podataka 2011/2012 32
Modeliranje stvarnog svijeta
Modeliranje stvarnog svijeta predstavlja preslikavanje stvarnog svijeta u oblik pogodan za raunalnu obradu;
Baza podataka nekog informacijskog sustava predstavlja sliku stvarnog organizacijskog sustava;
Stvarni svijet, zbog njegove sloenosti, ne moemo prikazati sa svim detaljima;
Stvarni svijet predstavlja se pojednostavnjenim, nadomjesnim modelom;
Model stvarnog svijeta predstavlja se uz pomo nekog formalnog sustava;
Model podataka je formalni sustav koji koristimo kod modeliranja baza podataka
FER - Zagreb Baze podataka 2011/2012 33
Model podataka (Data Model) Model podataka je formalni sustav koji se sastoji od:
skupa objekata - osnovnih elemenata (koncepata) baze podataka
skupa operacija koje se provode nad objektima skupa integritetskih ogranienja (integrity constraints)
implicitno ili eksplicitno definiraju skup konzistentnih stanja podataka, promjena stanja, ili oboje
Povijesni razvoj modela podataka: Hijerarhijski model Mreni model Relacijski model ER model Objektni model Objektno-relacijski model
FER - Zagreb Baze podataka 2011/2012 34
Relacijski model podataka objekti elementi skupa objekata u relacijskom modelu podataka su relacije relacija je skup n-torki
sifPred nazPred ectsBod nastProg31503 Baze podataka 6.0 FER-2
1228 Baze podataka 5.0 FER-119670 Matematika 1 7.0 FER-221006 Fizika 1 6.0 FER-2
90 Baze podataka 5.0 ETF-4
shema relacije obuhvaa naziv relacijske sheme (PREDMET) i skup atributa: ( sifPred, nazPred, ectsBod, nastProg )
n-torke: opisuju pojedinane entitete
elementarni podatak
atributi
PREDMET
FER - Zagreb Baze podataka 2011/2012 35
Relacijski model podataka operacije operacija "selekcija" u relacijskom modelu podataka:
sifPred nazPred ectsBod nastProg31503 Baze podataka 6.0 FER-2
1228 Baze podataka 5.0 FER-119670 Matematika 1 7.0 FER-221006 Fizika 1 6.0 FER-2
90 Baze podataka 5.0 ETF-4
predmet
ectsBod=6.0 (predmet) sifPred nazPred ectsBod nastProg31503 Baze podataka 6.0 FER-221006 Fizika 1 6.0 FER-2
ostale operacije u relacijskom modelu podataka unija, razlika, presjek, projekcija, ...
FER - Zagreb Baze podataka 2011/2012 36
Relacijski model podataka integritetska ogranienja
pravilo domenskog integriteta u relacijskom modelu podataka: sifPred nazPred ectsBod nastProg
31503 Baze podataka 6.0 FER-21228 Baze podataka 5.0 FER-1
19670 Matematika 1 7.0 FER-221006 Fizika 1 6.0 FER-2
90 Baze podataka 5.0 ETF-4
predmet
domenski integritet: vrijednost atributa sifPred mora biti iz intervala [1, 999999] vrijednost atributa ectsBod mora biti iz intervala [0.5, 30.0] ...
ostala integritetska ogranienja u relacijskom modelu podataka: entitetski, referencijski, ...
FER - Zagreb Baze podataka 2011/2012 37
ER model podataka
Model entiteti-vezeEntity-Relationship Model
Postrelacijski model Zadrava dobra svojstva relacijskog modela Objekti ER modela su entiteti i njihove meusobne veze
DJELAT
MbrDjelat PrezDjelat
ImeDjelat
ODJEL
SifOdjel
NazOdjelRadi
FER - Zagreb Baze podataka 2011/2012 38
FER - Zagreb Baze podataka 2011/2012 39
Arhitektura baze podataka
FER - Zagreb Baze podataka 2011/2012 40
Fizika i logika organizacija podataka
aplikacijski programer
logiki opis
fiziki opis
SUBP
FER - Zagreb Baze podataka 2011/2012 41
aplikacijski programer
A
C
Fizika i logika organizacija podataka
B
FER - Zagreb Baze podataka 2011/2012 42
Arhitektura baze podataka
Unutarnja razina
Konceptualna razina
Vanjska razina
KONCEPTUALNA SHEMA
INTERNA SHEMA
preslikavanja: konceptualna eksterne sheme
preslikavanje: konceptualna interna shema
Fizika pohrana podataka
korisnici / aplikacije
...
...
EKSTERNA SHEMA 3
EKSTERNA SHEMA 2
EKSTERNA SHEMA 1
FER - Zagreb Baze podataka 2011/2012 43
Arhitektura baze podataka
Shema (struktura) baze podataka se opisuje na tri razine apstrakcije: Na konceptualnoj razini opisuje se
KONCEPTUALNA SHEMA Na unutarnjoj razini opisuje se
INTERNA SHEMA Na vanjskoj razini opisuju se
EKSTERNE SHEME
Jedna baza podataka ima jednu konceptualnu, jednu internu i (najee) vie eksternih shema
Shema baze podataka se relativno rijetko mijenja Sadraj ili instanca baze podataka (skup svih podataka baze
podataka u odreenom trenutku) se ESTO mijenja
FER - Zagreb Baze podataka 2011/2012 44
Konceptualna shema
esto se koristi i naziv LOGIKA SHEMA sadri opis svih entiteta i veza, atributa, domena i
integritetska ogranienja konceptualna shema se moe opisati koritenjem
modela podataka, npr. relacijskog ili ER modela
RAUNKLIJENT
prezKlijent
mbrKlijent
imeKlijentadrKlijent brRac stanjeRac
FER - Zagreb Baze podataka 2011/2012 45
Interna shema
opisuje detalje fizike strukture pohrane i metode pristupa podacima: kako su podaci pohranjeni i koje se metode koriste za pristup podacima
RAUNKLIJENT
prezKlijent
mbrKlijent
imeKlijentadrKlijent brRac stanjeRac
konceptualna interna shema
INTERNA SHEMA
Fizika pohrana podataka
FER - Zagreb Baze podataka 2011/2012 46
Fizika nezavisnost podataka
izmjena interne sheme ne utjee na konceptualnu shemu
RAUNKLIJENT
prezKlijent
mbrKlijent
imeKlijentadrKlijent brRac stanjeRac
INTERNA SHEMA
Fizika pohrana podataka
konceptualna interna shema
FER - Zagreb Baze podataka 2011/2012 47
Eksterna shema
eksterna shema opisuje "pogled" na dio baze podataka koji je namijenjen specifinoj grupi korisnika
osnova za opis eksternih shema je konceptualna shema
RAUNKLIJENT
prezKlijent
mbrKlijent
imeKlijentadrKlijent brRac stanjeRac
konceptualna eksterna shema
imeKlijentprezKlijentadrKlijent
mbrKlijentimeKlijentprezKlijent
mbrKlijentbrRacstanjeRac
konceptualna eksterna shema
FER - Zagreb Baze podataka 2011/2012 48
Logika nezavisnost podataka
izmjena konceptualne sheme ne mora izazvati izmjenu eksternih shema izmjena konceptualne sheme ne utjee na korisnike i aplikacijske programe koji ih koriste
imeKlijentprezKlijentadrKlijent
mbrKlijentimeKlijentprezKlijent
mbrKlijentbrRacstanjeRac
RAUNKLIJENT
prezKlijent
mbrKlijent
imeKlijentadrKlijent brRac datOtvRac
UPL_ISPL
vrijeme iznos
konceptualna eksterna shema konceptualna eksterna shema
FER - Zagreb Baze podataka 2011/2012 49
Sustav za upravljanje bazom podataka - SUBP
Database Management System - DBMS
FER - Zagreb Baze podataka 2011/2012 50
Sustav za upravljanje bazom podataka - SUBP (Database Management System - DBMS) je programski sustav koji omoguava upravljanje podacima u bazi podataka.SUBP se temelji na odabranom modelu podataka.Prema modelu podataka na kojem se temelje, SUBP-ove dijelimo na:
hijerarhijske, mrene, relacijske, objektno-relacijske, objektno-orijentirane.
Sustav za upravljanje bazom podataka
FER - Zagreb Baze podataka 2011/2012 51
sakriva od korisnika detalje fizike pohrane podataka osigurava logiku i fiziku nezavisnost podataka
omoguuje definiciju i rukovanje podacima DDL - Data Definition Language DML - Data Manipulation Language
obavlja funkciju zatite podataka integritet podataka pristup podacima - autorizacija, sigurnost kontrola paralelnog pristupa obnova u sluaju razruenja
obavlja optimiranje upita
Sustav za upravljanje bazom podataka
FER - Zagreb Baze podataka 2011/2012 52
Jezici baze podataka
DDL (Data Definition Language) omoguava imenovanje i opis entiteta, atributa, veza i
pripadnih ogranienja integriteta i pravila sigurnosti koristi se za definiranje nove sheme baze podataka ili
modificiranje postojee obavljanje DDL operacija rezultira izmjenom sadraja rjenika
podataka (metapodataka) DML (Data Manipulation Language)
omoguava koritenje skupa operacija za rukovanje podacima u bazi podataka
upitni jezik (query language) ne sasvim korektno, pojam se koristi ne samo za operacije
dohvata podataka, ve i za operacije izmjene, brisanja i unosa podataka
proceduralni jezici, neproceduralni jezici
FER - Zagreb Baze podataka 2011/2012 53
Zato koristimo sustave za upravljanje bazama podataka?
Zato ne bismo koristili samo datotene sustave?
FER - Zagreb Baze podataka 2011/2012 54
1. Jednostavan pristup podacimaDatoteni sustav - podaci su raspreni po datotekama koje mogu biti u razliitim formatima. Za dobivanje odgovora na netipina pitanja potrebno je ili dotjerivati stare ili pisati nove programe. Primjer:
Zato SUBP, a ne samo datoteke?
Potrebno je nai sve korisnike banke koji ive u podruju s odreenim potanskim brojem. Pretpostavimo da ne postoji gotovi program koji moe izdvojiti traene korisnike, ali postoji program koji vraa sve korisnike. Dva su mogua rjeenja:
a) slubenik e iz popisa svih korisnika runo izdvojiti one s odreenim potanskim brojem;
b) trait e se od programera da napie odgovarajui program.
Niti jedno od ova dva rjeenja nije zadovoljavajue. Svaki put kad se pojavi nova vrsta upita, opet e se morati ponoviti postupak
SUBP omoguuje fleksibilniji dohvat i izmjenu podataka.
FER - Zagreb Baze podataka 2011/2012 55
2. Upravljanje zalihostima i nekonzistentnouIsti podaci mogu biti pohranjeni u vie datoteka, to moe voditi ka nekonzistentnosti.
Zato SUBP, a ne samo datoteke?
Pretpostavimo da se adrese korisnika bankovnog rauna pohranjuju u dvije datoteke (jedna za tekui, a druga za devizni raun). Nakon to je korisnik A promijenio adresu stanovanja, bankovni slubenik promijenio je podatak o adresi u jednoj datoteci, ali je zaboravio promijeniti adresu u drugoj.
Ako se mjeseni izvjetaji o stanju rauna alju na kunu adresu korisnika na temelju adrese pohranjene u drugoj datoteci, korisnik A nee dobiti izvjetaj na svoju novu adresu.
SUBP omoguuje bolju kontrolu zalihosti od datotenog sustava.
FER - Zagreb Baze podataka 2011/2012 56
3. Transakcijska obrada
Zato SUBP, a ne samo datoteke?
Treba prebaciti 1000 kuna s rauna A na raun B (to je jedna transakcija).
Ako se dogodi hardverska ili softverska pogreka za vrijeme izvoenja programa, mogue je da se 1000 kuna skine s rauna A, ali se ne uspije prebaciti na raun B, to dovodi do nekonzistentnosti u bazi podataka. Prebacivanje se mora obaviti u potpunosti.
SUBP obino ima ugraenu podrku za transakcijsku obradu, to je vrlo teko ostvariti u datotenom sustavu.
4 . Sloeni odnosi meu podacima SUBP omoguuje predstavljanje razliitih odnosa meu
podacima, definiranje novih odnosa kad se oni pojave te jednostavan dohvat i izmjenu meusobno povezanih podataka
FER - Zagreb Baze podataka 2011/2012 57
5. Istovremeni pristup vie korisnikaSUBP omoguuje veem broju korisnika pristup bazi podataka u isto vrijeme. Pri tome treba osigurati da u sluaju kad vie korisnika koji nastoje promijeniti isti podatak, to se ini na kontrolirani nain tako da rezultat izmjene bude toan i jednoznaan.
Zato SUBP, a ne samo datoteke?
Pretpostavimo da slubenici dvije turistike agencije nastoje istovremeno rezervirati isto sjedalo u zrakoplovu. SUBP mora osigurati da rezervaciju odreenog sjedala u odreenom trenutku moe obavljati najvie jedan slubenik.
U datotenom sustavu je kontrolu istovremenog pristupa daleko tee provesti.
FER - Zagreb Baze podataka 2011/2012 58
6. Autorizirani pristup Kad vie korisnika koristi veu bazu podataka, obino nee
svim korisnicima biti omoguen pristup svim podacima u bazi.
Na primjer, kako su podaci o financijama povjerljivi, samo e se autoriziranim osobama omoguiti pristup tim podacima.
Neki korisnici e moi samo pregledavati podatke, dok e ih drugi moi i pregledavati i mijenjati.
SUBP omoguava odreivanje naina na koji e razliiti korisnici pristupati podacima.
U datotenom sustavu je jednostavno odrediti je li neka datoteka namijenjena za itanje, pisanje ili oboje, no nije jednostavno definirati razliit nain pristupa podacima za razliite korisnike.
Zato SUBP, a ne samo datoteke?
FER - Zagreb Baze podataka 2011/2012 59
Uloge osoba u ivotnom ciklusu baze podataka
FER - Zagreb Baze podataka 2011/2012 60
Baze podataka - uloge
1. Projektanti baze podataka razgovaraju s korisnicima da bi saznali njihove zahtjeve oblikuju bazu podataka prema zahtjevima korisnika definirajui
strukturu za pohranu podataka (tj. model baze podataka)
2. Analitiari sustava i programeri aplikacija Analitiari sustava prikupljaju zahtjeve korisnika (npr.
bankovnih slubenika) i piu specifikacije za razvoj aplikacija za pristup bazi podataka
Programeri na temelju tih specifikacija izrauju programe te ih testiraju, dokumentiraju i odravaju; moraju biti upoznati sa svojstvima i mogunostima SUBP-a
FER - Zagreb Baze podataka 2011/2012 61
Baze podataka - uloge
3. Administratori baze podataka instaliraju i nadograuju SUBP odgovorni su za autorizaciju pristupa bazi podataka organiziraju, nadziru i optimiziraju koritenje baze
4. Korisnici Pristupaju bazi tako da postavljaju upite, mijenjaju podatke i
izrauju izvjetajeRazlikujemo nekoliko skupina korisnika: korisnici koji povremeno pristupaju bazi koristei upitni jezik korisnici koji esto koriste bazu postavljajui standardne upite i
radei standardne promjene koristei programirana suelja (npr. slubenici u banci, turistikim agencijama...)
sofisticirani korisnici koji su dobro upoznati s bazom podataka i koriste je na sloeniji nain (npr. inenjeri, znanstvenici, poslovni analitiari)
2. Relacijski model podataka
FER - Zagreb Baze podataka 2011/2012 63
Relacijski model podataka E. F. Codd: "A Relational Model of Data for Large Shared
Data Banks", Comm. ACM 13, No. 6, June 1970.
Ciljevi relacijskog modela podataka: osigurati visoki stupanj
nezavisnosti podataka postaviti temelje za rjeavanje
problema semantike, konzistentnosti i redundancije podataka (normalizacija)
omoguiti razvoj DML jezika temeljenih na operacijama nad skupovima
Dr. Edgar Frank Codd (1923-2003)
FER - Zagreb Baze podataka 2011/2012 64
Relacijski model podataka Vani projekti u ranim 70-tim: jezik ISBL temeljen na relacijskoj algebri,
jezici SQUARE i SEQUEL (DBMS System R) temeljeni na relacijskoj algebri i predikatnom raunu te Query-By-Example temeljen na predikatnom raunu nad domenama razvojem prototipova dokazuje se praktina upotrebljivost relacijskog
modela postavljaju se temelji za rjeavanje problema implementacije u
podrujima upravljanja transakcijama, paralelnog pristupa, obnove, optimizacije upita, sigurnosti i konzistentnosti podataka
Projekti su potaknuli: razvoj strukturiranog upitnog jezika (SQL) razvoj komercijalnih relacijskih sustava za upravljanje bazama
podataka (RDBMS) Ingres, Oracle, IBM DB2, Informix, ... danas: u upotrebi je nekoliko stotina razliitih RDBMS sustava
FER - Zagreb Baze podataka 2011/2012 65
Relacijski model podataka objekti u relacijskom modelu podataka su RELACIJE
pbr nazMjesto sifZup42000 Varadin 751000 Rijeka 252100 Pula 451300 Delnice 242230 Ludbreg 7
sifZup nazZup2 Primorsko-goranska7 Varadinska4 Istarska
mjesto zupanija
neformalna definicija: relacija je imenovana dvodimenzionalna tablica atribut je imenovani stupac relacije domena je skup doputenih vrijednosti atributa
nad istom domenom moe biti definiran jedan ili vie atributa n-torka (tuple) je redak relacije
FER - Zagreb Baze podataka 2011/2012 66
Matematika relacija Relacija R definirana nad skupovima D1, D2, ..., Dn je
podskup Kartezijevog produkta skupova D1, D2, ..., DnR D1 D2 ... Dn
IvaHrvojeIvan
D1NovakKolar
D219871989
D3 (Iva, Novak, 1987)(Iva, Novak, 1989)(Iva, Kolar, 1987)(Iva, Kolar, 1989)
(Hrvoje, Novak, 1987)(Hrvoje, Novak, 1989)(Hrvoje, Kolar, 1987)(Hrvoje, Kolar, 1989)(Ivan, Novak, 1987)(Ivan, Novak, 1989)(Ivan, Kolar, 1987)(Ivan, Kolar, 1989)
D1 D2 D3
(Iva, Novak, 1989)(Hrvoje, Novak, 1987)
(Ivan, Kolar, 1989)
R
FER - Zagreb Baze podataka 2011/2012 67
Relacijska shema (formalna definicija) Neka su zadani atributi A1, A2, ..., An. Relacijska shema R
(intenzija) je imenovani skup atributaR = { A1, A2, ..., An }
radi pojednostavljenja, koristit e se i sljedea notacija: R = A1 A2 ... An
uoite: poredak atributa u shemi relacije je nebitanR = { A1, A2, A3 } { A3, A1, A2 }
Primjer: relacijska shema MJESTOMJESTO = { pbr, nazMjesto, sifZup }
FER - Zagreb Baze podataka 2011/2012 68
Relacijska shema (primjer) Zadani su atributi pbr, nazMjesto, sifZup
Relacijska shema MJESTO = { pbr, nazMjesto, sifZup }
identina je relacijskoj shemiMJESTO = { sifZup, pbr, nazMjesto }
FER - Zagreb Baze podataka 2011/2012 69
n-torka (formalna definicija) Neka je R = { A1, A2, ..., An } relacijska shema;
neka su D1, D2, ..., Dn domene atributa A1, A2, ..., An;n-torka t definirana na relacijskoj shemi R je skup parova oblika atribut :vrijednostAtributa
t = { A1:v1, A2:v2, ..., An:vn },pri emu je v1 D1, v2 D2, ..., vn Dn
Uoite: poredak elemenata n-torke nije bitan{ A1:v1, A2:v2, A3:v3 } { A3:v3, A1:v1, A2:v2 }
Ponekad e se koristiti pojednostavljena notacija: pretpostavi li se da poredak vrijednosti atributa odgovara "poretku atributa" u relacijskoj shemi, n-torka se moe prikazati na sljedei nain:
t = >
FER - Zagreb Baze podataka 2011/2012 70
n-torka (primjer) Zadana je relacijska shema OSOBA = { matBr, ime, prez }, pri emu su domene atributa:
dom (matBr) = {1234, 1235, 1236, 1237 }dom (ime) = { Iva, Hrvoje, Ivan }dom (prez) = { Novak, Kolar }t1 = { matBr:1234, ime:Iva, prez:Novak }t2 = { matBr:1236, ime:Hrvoje, prez:Novak }t3 = { matBr:1237, ime:Ivan, prez:Kolar }
n-torka t1 se jednako ispravno moe napisati na sljedei nain (poredak elemenata n-torke je nebitan)
t1 = { ime:Iva, prez:Novak, matBr:1234 } pojednostavljena notacija:
t1 = >
FER - Zagreb Baze podataka 2011/2012 71
Relacija (formalna definicija) Neka je R = { A1, A2, ..., An } relacijska shema;
neka su D1, D2, ..., Dn domene atributa A1, A2, ..., An;relacija r (instanca relacije) definirana na shemi relacije R je skup n-torki koje su definirane na relacijskoj shemi R
kad se eli naglasiti da je relacija r definirana na shemi relacije R, kao oznaka za relaciju koristi se
r(R) ili r( { A1, A2, ..., An } ) ili r( A1 A2 ... An )
relacijska shema R: mijenja se relativno rijetko instanca relacije r: predstavlja trenutnu vrijednost relacije i esto se mijenja (pri unosu/brisanju/izmjeni podataka)
FER - Zagreb Baze podataka 2011/2012 72
Relacija (primjer) Zadana je relacijska shema STUDENT = { matBr, prez, slika }, pri emu
su domene atributa: dom (matBr) = { 100, 102, 107, 111, 135 } dom (prez) = { Novak, Kolar, Horvat, Ban } dom (slika) = { , , }
student(STUDENT) = { { matBr:102, prez:Novak, slika: },{ matBr:135, prez:Ban, slika: } }
IDENTINA RELACIJA (poredak n-torki i lanova n-torki je nebitan):student(STUDENT) = { { prez:Ban, matBr:135, slika: },
{ slika: , matBr:102, prez:Novak } }
FER - Zagreb Baze podataka 2011/2012 73
Svojstva relacija relacija posjeduje ime koje je jedinstveno unutar sheme
baze podataka atributi unutar relacije imaju jedinstvena imena (zato?) jedan atribut moe poprimiti vrijednost iz samo jedne
domene u jednoj relaciji ne postoje dvije jednake n-torke (zato?) redoslijed atributa unutar relacije je nebitan (zato?) redoslijed n-torki unutar relacije je nebitan (zato?)
sifZup nazZup2 Primorsko-goranska7 Varadinska4 Istarska
zupanijanazZup sifZupVaradinska 7Istarska 4Primorsko-goranska 2
zupanija
FER - Zagreb Baze podataka 2011/2012 74
Relacija (primjer)
student(STUDENT) = { { prez:Ban, matBr:135, slika: },{ slika: , matBr:102, prez:Novak } }
pojednostavljenje prikaza relacije (vizualizacija relacije tablicom)
matBr prez slika102 Novak135 Ban
student (STUDENT)
FER - Zagreb Baze podataka 2011/2012 75
A-vrijednost n-torke, X-vrijednost n-torke Oznaka t(A) predstavlja vrijednost koju atribut A poprima u
n-torki t. t(A) se naziva A-vrijednost n-torke t. Primjer:
t = { matBr:102, prez:Novak, slika: }t (prez) = Novak
Neka je X R. n-torka t reducirana na skup atributa Xnaziva se X-vrijednost n-torke t i oznaava s t(X)
Primjer:t = { matBr:102, prez:Novak, slika: }X = { matBr, prez } X Rt(X) = t( { matBr, prez } ) = { matBr:102, prez:Novak }
FER - Zagreb Baze podataka 2011/2012 76
Stupanj i kardinalnost relacije stupanj relacije: broj atributa (stupaca) - degree kardinalnost relacije: broj n-torki (redaka) - cardinality
pbr nazMjesto sifZup42000 Varadin 751000 Rijeka 252100 Pula 451300 Delnice 242230 Ludbreg 7
mjesto
kardinalnost = 5
stupanj = 3 Oznake:deg(mjesto) = 3card(mjesto) = 5
FER - Zagreb Baze podataka 2011/2012 77
Shema i instanca baze podataka
Shema baze podataka je skup relacijskih shemaRRRR = { R1, R2, ..., Rn }
oito, relacijske sheme u jednoj shemi baze podataka moraju imati razliita imena
Instanca baze podataka definirana na shemi baze podataka RRRR = { R1, R2, ..., Rn } je skup instanci relacija
rrrr = { r1(R1), r2(R2), ..., rn(Rn) }
shema baze podataka se relativno rijetko mijenja instanca baze podataka se esto mijenja
FER - Zagreb Baze podataka 2011/2012
Operacije u relacijskom modelu podataka
FER - Zagreb Baze podataka 2011/2012 79
Relacijska algebra Operacije relacijske algebre su:
unija (union) presjek (intersection)\ razlika (set difference) dijeljenje (division)pipipipi projekcija (projection) selekcija (selection) Kartezijev produkt (Cartesian product) preimenovanje (renaming)>< spajanje (join)
agregacija, grupiranjePrimjer: r4 = A=x B=y (r1 (r2 r3))
Karakteristika relacijske algebre - proceduralnost - navodi se redoslijed operacija koje se provode nad relacijama
FER - Zagreb Baze podataka 2011/2012 80
Predikatni raun
Operacije se specificiraju navoenjem predikatar = { t | F(t) }
t je varijabla koja predstavlja: n-torke - n-torski raun
rezultat r je skup n-torki t za koje je vrijednost predikata F istina domene - domenski raun
rezultat je skup domena t za koje je vrijednost predikata F istina Primjer:
r4 = { t | (r1(t) ((r2(t) r3(t))) t(A)=x t(B)=y } Predikatni raun je neproceduralan
ne navodi se redoslijed operacija navode se predikati koje n-torke (domene) moraju zadovoljavati
FER - Zagreb Baze podataka 2011/2012 81
SQL
Kratki pogled
FER - Zagreb Baze podataka 2011/2012 82
SQL - Kratki pogled
SQL (Structured Query Language) je temeljen na relacijskom modelu podataka.
nastao je na temelju jezika SEQUEL temelji se na predikatnom raunu i relacijskoj algebri proglaen standardnim jezikom za relacijske sustave objekti u SQL-u su tablice, a ne (formalno definirane)
relacije poredak atributa (stupaca) u nekim je sluajevima znaajan u tablici ili rezultatu operacija nad tablicama mogua je pojava
dvije ili vie istih n-torki ipak, postoje naini kako se to moe sprijeiti
FER - Zagreb Baze podataka 2011/2012 83
SQL - Kratki pogled
kreiranje nove instance baze podataka (kreiranje baze podataka) jedan SUBP moe istovremeno upravljati s vie baza podataka
CREATE DATABASE studAdmin;
CREATE DATABASE knjiznica;
SUB
P
Rjenik podataka sadri opise relacijskih shema, integritetskih ogranienja, ...
...
Baza podatakastudAdmin
Rjenikpodataka
Baza podatakaknjiznica Rjenikpodataka
DROP DATABASE knjiznica;
FER - Zagreb Baze podataka 2011/2012 84
SQL - Kratki pogled
opisivanje relacijske sheme (kreiranje relacije) kreira praznu relaciju ujedno je mogue definirati i integritetska ogranienja
CREATE TABLE mjesto (pbr INTEGER
, nazMjesto CHAR(30), sifZup SMALLINT);
pbr nazMjesto sifZupmjesto
DROP TABLE mjesto;
FER - Zagreb Baze podataka 2011/2012 85
SQL - Kratki pogled
upisivanje novih n-torki u relaciju
pbr nazMjesto sifZup42230 Ludbreg 742000 Varadin 752100 Pula 4
mjestoINSERT INTO mjesto
VALUES (42000, 'Varadin', 7);
INSERT INTO mjestoVALUES (52100, 'Pula', 4);
INSERT INTO mjestoVALUES (42230, 'Ludbreg', 7);
Treba li poredak n-torki u relaciji biti u skladu s redoslijedom upisa?
pbr nazMjesto sifZupmjesto
FER - Zagreb Baze podataka 2011/2012 86
SQL - Kratki pogled
dohvat podataka iz relacijepbr nazMjesto sifZup42230 Ludbreg 742000 Varadin 752100 Pula 4
mjesto
SELECT * FROM mjestoWHERE sifZup = 7;
dohvat podataka o mjestima ija ifra upanije ima vrijednost 7
pbr nazMjesto sifZup42000 Varadin 742230 Ludbreg 7
FER - Zagreb Baze podataka 2011/2012 87
SQL - Kratki pogled
izmjena vrijednosti atributa u relaciji
UPDATE mjestoSET nazMjesto = 'VARADIN'WHERE pbr = 42000;
naziv mjesta s potanskim brojem 42000 promijeniti u VARADIN
pbr nazMjesto sifZup42230 Ludbreg 742000 VARADIN 752100 Pula 4
mjesto
pbr nazMjesto sifZup42230 Ludbreg 742000 Varadin 752100 Pula 4
mjesto
FER - Zagreb Baze podataka 2011/2012 88
SQL - Kratki pogled
brisanje n-torki iz relacije
DELETE FROM mjestoWHERE sifZup = 7;
obrisati mjesta za koje ifra upanije ima vrijednost 7
pbr nazMjesto sifZup52100 Pula 4
mjesto
pbr nazMjesto sifZup42230 Ludbreg 742000 VARADIN 752100 Pula 4
mjesto
FER - Zagreb Baze podataka 2011/2012 89
Relacijska algebra
FER - Zagreb Baze podataka 2011/2012 90
Relacijska algebra Unarne operacije
projekcija, selekcija, preimenovanje agregacija, grupiranje
Binarne operacije skupovske operacije (set operations)
temelje se na relacijama kao skupovima n-torki unija, presjek, razlika
ostale binarne operacije Kartezijev produkt, dijeljenje, spajanje
FER - Zagreb Baze podataka 2011/2012 91
Relacijska algebra obavljanje operacije ne utjee na operande, npr.
r3 = r1 r2 obavljanjem prethodne operacije nastaje nova relacija r3,
a relacije r1 i r2 se pri tome ne mijenjaju operandi su relacije, a rezultat obavljanja operacije je uvijek
relacija. To znai: skup relacija je zatvoren s obzirom na operacije
relacijske algebre ta injenica omoguava da se rezultat jedne operacije
upotrijebi kao operand u sljedeoj operaciji, to omoguava formiranje sloenih izraza
r5 = (r1 r2) (r3 >< r4)
FER - Zagreb Baze podataka 2011/2012 92
Unijska kompatibilnost Dvije relacije su unijski kompatibilne ukoliko vrijedi:
relacije su istog stupnja i
korespondentni atributi su definirani nad istim domenama
matBr ime prez12345 Ivo Kolar13254 Ana Horvat
polozioMatemmbr prezSt imeSt92632 Ban Jura67234 Novak Iva
polozioProgr relacije su istog stupnja dom (matBr) = dom(mbr) dom (ime) = dom(imeSt) dom (prez) = dom(prezSt)
kod ocjene jesu li relacije unijski kompatibilne poredak atributa nije bitan imena atributa nisu bitna
relacije su unijski kompatibilne
FER - Zagreb Baze podataka 2011/2012 93
Unijska kompatibilnost dvije relacije koje imaju jednak broj atributa i jednaka imena
atributa ne moraju ujedno biti unijski kompatibilne
oznaka nazivB-747 Boeing 747A-360 Airbus 360
zrakoplovoznaka nazivZE emljaPR Perec
pecivo
relacije su istog stupnja dom (zrakoplov.oznaka) dom(pecivo.oznaka) dom (zrakoplov.naziv) dom(pecivo.naziv)
notacija imeRelacije.imeAtributa se esto koristi kada je potrebno razlikovati istoimene atribute razliitih relacija
relacije NISU unijski kompatibilne
FER - Zagreb Baze podataka 2011/2012 94
Skupovske operacije: unija, presjek, razlika
Skupovske operacije (unija, presjek, razlika) mogu se obavljati iskljuivo nad UNIJSKI KOMPATIBILNIM relacijama
FER - Zagreb Baze podataka 2011/2012 95
Unija Rezultat operacije r1 r2 je relacija ije su n-torke elementi
relacije r1 ili elementi relacije r2 ili elementi obje relacije. n-torke koje su elementi obje relacije u rezultatu se pojavljuju
samo jednom (jer relacija je SKUP n-torki)
mbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban107 Jura Horvat
polozioMatem
polozioProgr
polozioBaremJedan
polozioBaremJedan = polozioMatem polozioProgr
studenti koji su poloili iliMatematiku iliProgramiranje ilioba predmeta
r1 r2 r2 r1
mbr ime prez102 Ana Novak105 Rudi Kolar107 Jura Horvat
mbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban105 Rudi Kolar107 Jura Horvat
FER - Zagreb Baze podataka 2011/2012 96
Presjek Rezultat operacije r1 r2 je relacija ije su n-torke elementi
relacije r1 i elementi relacije r2
polozioObastudenti koji su poloili i Matematiku i Programiranje
polozioOba = polozioMatem polozioProgr
r1 r2 r2 r1
mbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban107 Jura Horvat
polozioMatem
polozioProgrmbr ime prez102 Ana Novak105 Rudi Kolar107 Jura Horvat
mbr ime prez102 Ana Novak107 Jura Horvat
FER - Zagreb Baze podataka 2011/2012 97
Razlika
Rezultat operacije r1 \ r2 je relacija ije su n-torke elementi relacije r1 i nisu elementi relacije r2
studenti koji su poloili Matematiku, ali nisu poloili Programiranje
polozioSamoMatem
polozioSamoMatem = polozioMatem \ polozioProgr
r1 \ r2 r2 \ r1
mbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban107 Jura Horvat
polozioMatem
polozioProgrmbr ime prez102 Ana Novak105 Rudi Kolar107 Jura Horvat
mbr ime prez100 Ivan Kolar103 Tea Ban
polozioSamoProgrmbr ime prez105 Rudi Kolar
polozioSamoProgr = polozioProgr \ polozioMatem
FER - Zagreb Baze podataka 2011/2012 98
TO AKO SE IMENA KORESPONDENTNIH ATRIBUTA RAZLIKUJU Unija, presjek, razlika: u sluajevima kada su relacije unijski
kompatibilne, ali se u relacijama koriste razliita imena korespondentnih atributa, primjenjuje se sljedei dogovor(konvencija): kao imena atributa u rezultantnoj relaciji koriste se imena atributa prvog operanda
mbr imeSt prezSt100 Ivan Kolar102 Ana Novak103 Tea Ban107 Jura Horvat
polozioMatem
polozioProgrmbr ime prez102 Ana Novak105 Rudi Kolar107 Jura Horvat
polozioOba
polozioOba = polozioMatem polozioProgr
mbr imeSt prezSt102 Ana Novak107 Jura Horvat
FER - Zagreb Baze podataka 2011/2012 99
Zadaci za vjebu zadane su unijski kompatibilne relacije
m (mbr ime prez) studenti koji su poloili Matematiku d (mbr ime prez) studenti koji su poloili Dig. logiku p (mbr ime prez) studenti koji su poloili Programiranje
napisati izraze relacijske algebre koji odreuju relacije koje sadre studente (tonije reeno n-torke):a) koji su poloili sva tri predmetab) koji su poloili ili Matematiku ili Digitalnu logiku, ali ne oba
predmeta (ekskluzivni ili)c) koji su poloili tono jedan (bilo koji) od ta tri predmetad) koji su poloili bilo koja dva predmeta (ali nisu poloili trei)
FER - Zagreb Baze podataka 2011/2012 100
Dijeljenje (division) Zadane su relacije r(R) i s(S). Neka je S R. Rezultat operacije
r s je relacija sa shemom P = R \ S. n-torka tr(P) se pojavljuje u rezultatu ako i samo ako za n-torku trr vrijedi da se tr(P) u relaciji r pojavljuje u kombinaciji sa svakom n-torkom tsspolozenmbrSt sifPred
100 1100 2101 1101 2101 3102 2102 3103 1103 2103 3104 3
predmetsifPred
123
poloziliSve = polozen predmetpoloziliSvembrSt
101103
studenti koji su poloili sve predmete sa iframa u relaciji predmet
FER - Zagreb Baze podataka 2011/2012 101
Projekcija Zadana je relacija r(R). Neka je skup atributa { A1, A2, ..., Ak } R Obavljanjem operacije pipipipiA1, A2, ..., Ak(r) dobiva se relacija s sa
shemom { A1, A2, ..., Ak } koja sadri vertikalni podskup relacije r deg(s) = k card(s) card(r) (jer se eliminiraju duplikati)
A B C D
s = pipipipiB, C(r)
r
izdvajanje vertikalnog podskupa
eliminacija duplikata
B C
B Cs
"meurezultat"
FER - Zagreb Baze podataka 2011/2012 102
Projekcija (primjer)tenor grad datumP. Domingo London 15.2.1976P. Domingo New York 27.3.1981P. Domingo London 11.4.1987J. Carreras New York 11.4.1987L. Pavarotti Sydney 22.6.1992L. Pavarotti London 15.2.1976L. Pavarotti Sydney 19.1.1993L. Pavarotti London 14.7.1993
nastup
Trai se: u kojim gradovima su nastupali koji tenori
tenor gradP. Domingo LondonP. Domingo New YorkJ. Carreras New YorkL. Pavarotti SydneyL. Pavarotti London
tenorGrad
Relacija nastup: u kojim gradovima su nastupali koji tenori kojeg datuma
tenorGrad = pipipipitenor,grad(nastup)tenor gradP. Domingo LondonP. Domingo New YorkP. Domingo LondonJ. Carreras New YorkL. Pavarotti SydneyL. Pavarotti LondonL. Pavarotti SydneyL. Pavarotti London
"me
ure
zultat"
FER - Zagreb Baze podataka 2011/2012 103
SQL - Lista za selekciju
SELECT SELECT List FROM table
SELECT * FROM mjesto;
SELECT List je lista za selekciju: dio SELECT naredbe koji odreuje koji e se "stupci" pojaviti u rezultatu
SELECT mjesto.pbr, mjesto.nazMjesto, mjesto.sifZup
FROM mjesto; uz ime atributa moe se navesti ime relacije (radi izbjegavanja
dvosmislenosti u sluajevima kada se podaci dohvaaju istovremeno iz vie relacija ija se imena atributa podudaraju)
imeRelacije.imeAtributa u sluajevima kada takva dvosmislenost ne postoji, ime relacije
se moe (ali ne mora) ispustiti
pbr nazMjesto sifZup42000 Varadin 752100 Pula 4
mjesto
FER - Zagreb Baze podataka 2011/2012 104
SQL - Lista za selekciju
SELECT nazMjesto, pbr
FROM mjesto;
nazMjesto pbrVaradin 42000Pula 52100
pbr nazMjesto sifZup42000 Varadin 752100 Pula 4
mjesto
u listi za selekciju se ne moraju navesti svi atributi relacije navedene u FROM dijelu naredbe:
sifZupanija nazZup7 Varadinska4 Istarska
zupanija
u listi za selekciju se mogu navesti samo oni atributi koji se nalaze u dosegu SELECT naredbe, tj. atributi relacije koja je navedena u FROM dijelu naredbe:
SELECT nazMjesto, pbr, nazZup
FROM mjesto;
Neispravna naredba
FER - Zagreb Baze podataka 2011/2012 105
SQL - Projekcija za ispravno obavljanje projekcije nije dovoljno u listi za selekciju
samo navesti imena atributa prema kojima se obavlja projekcija:SELECT tenor
, gradFROM nastup;
primjer koji ujedno pokazuje kako rezultat SQL naredbe ne mora uvijek biti relacija
tenor gradP. Domingo LondonP. Domingo New YorkP. Domingo LondonJ. Carreras New YorkL. Pavarotti SydneyL. Pavarotti LondonL. Pavarotti SydneyL. Pavarotti London
SELECT DISTINCT tenor, grad
FROM nastup;
tenor gradP. Domingo LondonP. Domingo New YorkJ. Carreras New YorkL. Pavarotti SydneyL. Pavarotti London
pipipipitenor,grad(nastup)
Neispravna projekcija
Ispravna projekcija
FER - Zagreb Baze podataka 2011/2012 106
Selekcija Zadana je relacija r(R). Neka je F predikat (formula, uvjet,
condition) koji se sastoji od operanada i operatora operandi su:
imena atributa iz R konstante
operatori su: operatori usporedbe: > logiki operatori:
Obavljanjem operacije F(r) dobiva se relacija sa shemom R koja sadri one n-torke relacije r za koje je vrijednost predikata F istina (true)
FER - Zagreb Baze podataka 2011/2012 107
Selekcija (primjer)
Za svaku pojedinu n-torku relacije: vrijednosti atributa uvrtavaju se u predikat - uvrtavanjem
vrijednosti u predikat dobiva se sud onda i samo onda kada je vrijednost dobivenog suda
istina (true), n-torka se pojavljuje u rezultatu selekcije
matBr ime prez postBr100 Ivan Kolar 52000102 Ana Horvat 10000105 Jura Novak 21000107 Ana Ban 51000
student
rezultat = ime = 'Ana' postBr >>>> 31000 (student)
matBr ime prez postBr100 Ivan Kolar 52000102 Ana Horvat 10000107 Ana Ban 51000
'Ivan' = 'Ana' 52000 > 31000 true'Ana' = 'Ana' 10000 > 31000 true'Jura' = 'Ana' 21000 > 31000 false'Ana' = 'Ana' 51000 > 31000 true
rezultat
FER - Zagreb Baze podataka 2011/2012 108
SQL - Selekcija SELECT SELECT List FROM table
[WHERE Condition]
Uvjet (Condition) se sastoji od operanada i operatora operandi su:
imena atributa iz relacije table konstante
operatori su: operatori usporedbe: < >= logiki operatori: AND OR NOT
Vrijednosti svake n-torke iz relacije table se uvrtavaju u Condition (a to je u stvari predikat). Ako je dobiveni sud istinit(true), n-torka se pojavljuje u rezultatu.
FER - Zagreb Baze podataka 2011/2012 109
SQL - Selekcija
matBr ime prez postBr100 Ivan Kolar 52000102 Ana Horvat 10000105 Jura Novak 21000107 Ana Ban 51000
student
ime = 'Ana' postBr >>>> 31000 (student)SELECT * FROM studentWHERE ime = 'Ana'
OR postBr > 31000;
matBr ime prez postBr100 Ivan Kolar 52000102 Ana Horvat 10000107 Ana Ban 51000
FER - Zagreb Baze podataka 2011/2012 110
SQL - Projekcija i selekcijamatBr ime prez postBr
100 Ivan Kolar 52000102 Ana Horvat 10000105 Jura Novak 21000107 Ana Ban 51000
student
pipipipiime( ime = 'Ana' postBr >>>> 31000 (student))
SELECT DISTINCT imeFROM studentWHERE ime = 'Ana'
OR postBr > 31000;
matBr ime prez postBr100 Ivan Kolar 52000102 Ana Horvat 10000107 Ana Ban 51000
imeIvanAna
"meurezultat"
FER - Zagreb Baze podataka 2011/2012 111
Kartezijev produkt Zadana je relacija r(R) i relacija s(S), pri emu je R S = . Obavljanjem operacije r s dobiva se relacija p(P), P = R S.
n-torke relacije p se dobivaju spajanjem (ulanavanjem) svake n-torke iz relacije r sa svakom n-torkom iz relacije s
deg(p) = deg(r) + deg(s) card(p) = card(r) card(s)
FER - Zagreb Baze podataka 2011/2012 112
Kartezijev produkt (primjer)
studentmbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban
predmetsifra naziv
1 Programiranje2 Matematika
upismbr ime prez sifra naziv100 Ivan Kolar 1 Programiranje100 Ivan Kolar 2 Matematika102 Ana Novak 1 Programiranje102 Ana Novak 2 Matematika103 Tea Ban 1 Programiranje103 Tea Ban 2 Matematika
upis = student predmet
FER - Zagreb Baze podataka 2011/2012 113
SQL - Kartezijev produkt SELECT SELECT List
FROM table [, table]...[WHERE Condition]
navede li se u FROM dijelu naredbe vie od jedne relacije, obavlja se operacija Kartezijevog produkta navedenih relacija
studentmbr ime prez100 Ivan Kolar102 Ana Novak103 Tea Ban
predmetsifra naziv
1 Programiranje2 Matematika
SELECT *FROM student, predmet;
SELECT student.*, predmet.*FROM student, predmet;
mbr ime prez sifra naziv100 Ivan Kolar 1 Programiranje100 Ivan Kolar 2 Matematika102 Ana Novak 1 Programiranje102 Ana Novak 2 Matematika103 Tea Ban 1 Programiranje103 Tea Ban 2 Matematika
student predmet
FER - Zagreb Baze podataka 2011/2012 114
SQL - Kartezijev produkt
SELECT SELECT ListFROM table [CROSS JOIN table]...[WHERE Condition]
drugaija sintaksa:
SELECT *FROM student CROSS JOIN predmet;
Kartezijev produkt triju relacija:
SELECT *FROM r1 CROSS JOIN r2 CROSS JOIN r3;
FER - Zagreb Baze podataka 2011/2012 115
Kartezijev produkt to uiniti ukoliko je potrebno obaviti operaciju Kartezijevog
produkta nad relacijama r(R) i s(S), u sluaju kada R S
Potrebno je koristiti operaciju preimenovanja
A B1 a2 b3 c
r
B Cc d
s
A B B C1 a c 1 a d 2 b c 2 b d 3 c c 3 c d
NIJE RELACIJA!
FER - Zagreb Baze podataka 2011/2012 116
Preimenovanje (relacije, atributa) Zadana je relacija r({ A1, A2, ..., An })
preimenovanje relacije: operacijom preimenovanja s(r) dobiva se relacija s koja ima jednaku shemu i sadraj kao relacija r
preimenovanje relacije i atributa: operacijom preimenovanja s(B1, B2, ..., Bn)(r) dobiva se relacija s ija shema umjesto atributa A1, A2, ..., An sadri atribute B1, B2, ..., Bn, a sadraj relacije s je jednak sadraju relacije r
A B1 a2 b3 c
r B Cc d
s
p = r s(B2, C)(s) A B B2 C1 a c 1 a d 2 b c 2 b d 3 c c 3 c d
p
FER - Zagreb Baze podataka 2011/2012 117
SQL - Preimenovanje atributa ukoliko se drugaije ne navede, imena stupaca u rezultatu
odgovaraju imenima atributa iz liste za selekciju implicitna imena stupaca rezultata se mogu promijeniti
koritenjem operatora za preimenovanje AS
sifZupanija nazZup7 Varadinska4 Istarska
zupanija
SELECT sifZupanija AS sifraZ, nazZup AS nazZ
FROM zupanija;
sifraZ nazZ7 Varadinska4 Istarska
SELECT sifZupanija sifraZ, nazZup nazZ
FROM zupanija; rezervirana rije AS
smije se ispustiti
FER - Zagreb Baze podataka 2011/2012 118
SQL - Preimenovanje atributa Primjer u kojem je potrebno koristiti preimenovanje atributa
SQL naredba bi bila ispravna i bez preimenovanja, ali tada kao rezultat ne bismo dobili relaciju (jer bi u shemi rezultata postojala dva atributa istog imena)
A B1 a2 b3 c
r B Cc d
s
A B B2 C1 a c 1 a d 2 b c 2 b d 3 c c 3 c d
SELECT A, r.B, s.B AS B2, CFROM r, s;
r s(B2, C)(s)
FER - Zagreb Baze podataka 2011/2012 119
Spajanje uz uvjet ili - spajanje ( - join) Zadane su relacije r(R) i s(S) pri emu je R S = . Neka je F
predikat oblika r.Ai s.Bj, pri emu je AiR, BjS, a je operator usporedbe iz skupa operatora { , }
Obavljanjem operacije r >< s dobiva se relacija koja sadri n-torke iz r s za koje je vrijednost predikata F istina (true), odnosno:
r >< s = F (r s) Umjesto jednostavnog predikata r.Ai s.Bj, moe se koristiti
sloeni predikat dobiven primjenom logikih operatora nadjednostavnim predikatima oblika r.Ai s.Bj
Problem spajanja uz uvjet relacija r(R) i s(S) kod kojih je R S , rjeava se na jednak nain kao kod Kartezijevog produkta (koritenjem operatora preimenovanja)
to moemo rei o stupnju i kardinalnosti rezultata?
F
F
FER - Zagreb Baze podataka 2011/2012 120
Spajanje uz uvjet (primjer)linijalet udaljenostCA-825 700LH-412 4800BA-722 15000CA-311 13000
zrakoplovtip doletB747 13000A320 5400DC-9 3100
mogunostlet udaljenost tip doletCA-825 700 B747 13000CA-825 700 A320 5400CA-825 700 DC-9 3100LH-412 4800 B747 13000LH-412 4800 A320 5400CA-311 13000 B747 13000
Linije i zrakoplovi koji na tim linijama mogu letjeti
mogunost = linija >< zrakoplovdolet udaljenost
FER - Zagreb Baze podataka 2011/2012 121
SQL - Spajanje uz uvjet Koristi se ekvivalencija
r >< s = F (r s)
SELECT *FROM linija, zrakoplovWHERE dolet >= udaljenost;
linijalet udaljenostCA-825 700LH-412 4800BA-722 15000CA-311 13000
zrakoplovtip doletB747 13000A320 5400DC-9 3100
let udaljenost tip doletCA-825 700 B747 13000CA-825 700 A320 5400CA-825 700 DC-9 3100LH-412 4800 B747 13000LH-412 4800 A320 5400CA-311 13000 B747 13000
Kartezijev produktSelekcija
Linije i zrakoplovi koji na tim linijama mogu letjeti
F
linija >< zrakoplovdolet udaljenost
FER - Zagreb Baze podataka 2011/2012 122
SQL - Spajanje uz uvjet drugaija sintaksa: SELECT SELECT List
FROM table [JOIN table ON joinCondition]...[WHERE Condition]
SELECT *FROM linija JOIN zrakoplov
ON dolet >= udaljenost;
Spajanje uz uvjet triju relacija:SELECT *FROM r1
JOIN r2 ON joinCondition
JOIN r3ON joinCondition;
FER - Zagreb Baze podataka 2011/2012 123
SQL - Spajanje uz uvjet i selekcija
Kako pronai linije i zrakoplove koji na tim linijama mogu letjeti, ali samo za one linije na kojima je udaljenost vea od 4000 km
udaljenost > 4000(linija >< >< >< >< zrakoplov)
SELECT *FROM linija, zrakoplovWHERE dolet >= udaljenostAND udaljenost > 4000;
SELECT *FROM linija
JOIN zrakoplovON dolet >= udaljenost
WHERE udaljenost > 4000;
ili
let udaljenost tip doletLH-412 4800 B747 13000LH-412 4800 A320 5400CA-311 13000 B747 13000
dolet udaljenost
FER - Zagreb Baze podataka 2011/2012 124
SQL - Spajanje uz uvjet i projekcija
Kako pronai tipove zrakoplova koji se mogu iskoristiti za letove na postojeim linijama
pipipipi tip(linija >< zrakoplov)
SELECT DISTINCT tipFROM linija, zrakoplovWHERE dolet >= udaljenost;
SELECT DISTINCT tipFROM linija
JOIN zrakoplovON dolet >= udaljenost;
ili
tipB747A320DC-9
dolet udaljenost
FER - Zagreb Baze podataka 2011/2012 125
Spajanje s izjednaavanjem (Equi-join) Spajanje relacija s izjednaavanjem je poseban oblik spajanja uz
uvjet u kojem se kao operator koristi iskljuivo operator jednakosti (=)
Problem spajanja s izjednaavanjem relacija r(R) i s(S) kod kojih je R S , rjeava se na jednak nain kao kod Kartezijevog produkta (koritenjem operatora preimenovanja)
pbr nazMjesto sifZup42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZupanija nazZup7 Varadinska4 Istarska
mjesto zupanija
pbr nazMjesto sifZup sifZupanija nazZup42000 Varadin 7 7 Varadinska52100 Pula 4 4 Istarska42230 Ludbreg 7 7 Varadinska
mjestouZupaniji
mjestouZupaniji = mjesto >< >< >< >< zupanijasifZup = sifZupanija
FER - Zagreb Baze podataka 2011/2012 126
SQL - Spajanje s izjednaavanjem
Koristi se ekvivalencijar >< s = F (r s) pbr nazMjesto sifZup
42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZupanija nazZup7 Varadinska4 Istarska
mjesto
zupanijamjesto >< >< >< >< zupanijasifZup = sifZupanija
SELECT *FROM mjesto, zupanijaWHERE sifZup = sifZupanija;
SELECT *FROM mjesto
JOIN zupanijaON sifZup = sifZupanija;
ili
F
FER - Zagreb Baze podataka 2011/2012 127
SQL - Spajanje s izjednaavanjem U sluaju kada u relacijama postoje istoimeni atributi
pbr nazMjesto sifZup42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZup nazZup7 Varadinska4 Istarska
mjesto zupanija
mjesto >< >< >< >< zupanija(sifZup2, nazZup) zupanijasifZup = sifZup2
SELECT mjesto.*, zupanija.sifZup AS sifZup2, zupanija.nazZup
FROM mjesto, zupanijaWHERE mjesto.sifZup = zupanija.sifZup;
slino i u sluaju koritenja drugaije sintakse (ANSI join)
Za razliku od relacijske algebre, u SQL-u nije nuno preimenovati atribut prije spajanja:
FER - Zagreb Baze podataka 2011/2012 128
Prirodno spajanje (Natural Join) Prirodno spajanje obavlja se na temelju jednakih vrijednosti
istoimenih atributa. Zadane su relacije r(R) i s(S). Neka je R S = { A1, A2, ..., An }.
Obavljanjem operacije r >< s dobiva se relacija sa shemom R S koja sadri n-torke nastale spajanjem n-torki tr r, ts s, za koje vrijedi tr(A1) = ts(A1) tr(A2) = ts(A2) ... tr(An) = ts(An).
pbr nazMjesto sifZup42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZup nazZup7 Varadinska4 Istarska
mjesto zupanija
mjestouZupaniji = mjesto >< zupanijapbr nazMjesto sifZup nazZup42000 Varadin 7 Varadinska52100 Pula 4 Istarska42230 Ludbreg 7 Varadinska
mjestouZupanijito moemo rei o stupnju rezultata?
FER - Zagreb Baze podataka 2011/2012 129
Prirodno spajanje Rezultat prirodnog spajanje relacija r(R) i s(S) za koje vrijedi da je
je R S = identian je rezultatu obavljanja operacijeKartezijevog produkta r s
pbr nazMjesto sifZup42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZupanija nazZup7 Varadinska4 Istarska
mjesto zupanija
pbr nazMjesto sifZup sifZupanija nazZup42000 Varadin 7 7 Varadinska42000 Varadin 7 4 Istarska52100 Pula 4 7 Varadinska52100 Pula 4 4 Istarska42230 Ludbreg 7 7 Varadinska42230 Ludbreg 7 4 Istarska
mjestouZupaniji
mjestouZupaniji = mjesto >< zupanija
FER - Zagreb Baze podataka 2011/2012 130
SQL - Prirodno spajanje prirodno spajanje se razlikuje od spajanja s izjednaavanjem po
tome to se istoimeni atributi iz dviju relacija izbacuju (tako da od svakog ostane samo po jedan)
pbr nazMjesto sifZup42000 Varadin 752100 Pula 442230 Ludbreg 7
sifZup nazZup7 Varadinska4 Istarska
mjesto zupanija
SELECT mjesto.*, zupanija.nazZupFROM mjesto, zupanijaWHERE mjesto.sifZup = zupanija.sifZup;
pbr nazMjesto sifZup nazZup42000 Varadin 7 Varadinska52100 Pula 4 Istarska42230 Ludbreg 7 Varadinska
FER - Zagreb Baze podataka 2011/2012 131
SQL - Prirodno spajanje
drugaija sintaksa:
SELECT mjesto.*, zupanija.nazZupFROM mjesto JOIN zupanija
ON mjesto.sifZup = zupanija.sifZup;
FER - Zagreb Baze podataka 2011/2012 132
Agregacija (aggregation)
Kako izraunati prosjek ocjena na svim ispitima?prosjOcj
3.625prosjek
mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
FER - Zagreb Baze podataka 2011/2012 133
Agregacija Zadana je relacija r(R). Neka je atribut AR. Neka je AF
agregatna funkcija. Rezultat operacije agregacije GAF(A)(r) je relacija stupnja 1 i kardinalnosti 1, pri emu je vrijednost atributa odreena primjenom funkcije AF nad vrijednostima atributa A u svim n-torkama relacije r. Funkcija AF moe biti jedna od:
COUNT odreuje broj pojava (broji sve, eventualni duplikati se takoer broje) SUM izraunava sumu vrijednosti AVG izraunava aritmetiku sredinu vrijednosti MIN izraunava najmanju vrijednost MAX izraunava najveu vrijednost
naziv rezultantne relacije i atributa nije definiran operacijom, stoga se najee koristi u kombinaciji s operacijom preimenovanja
takoer se koriste agregatne funkcije COUNT-DISTINCT, SUM-DISTINCT, AVG-DISTINCT
FER - Zagreb Baze podataka 2011/2012 134
Agregacija
prosjek(prosjOcj)(GAVG(ocjena)(ispit))
SELECT AVG(ocjena) AS prosjOcjFROM ispit;
Prosjek ocjena na svim ispitima (rjeenje):
prosjOcj3.625
prosjOcj3.625
prosjek
mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
FER - Zagreb Baze podataka 2011/2012 135
Agregacija (primjeri ostalih agregatnih funkcija)rez1(broj1)(GCOUNT(sifra)(osoba))
rez2(broj2)(GSUM(tezina)(osoba))
rez3(broj3)(GAVG(visina)(osoba))
rez4(broj4)(GMAX(visina)(osoba))
rez5(broj5)(GMIN(tezina)(osoba))
broj14
rez1
broj2292
rez2
broj3175.5
rez3
broj4186
rez4
broj562
rez5
sifra tezina visina101 62 170103 94 186105 74 181107 62 165
osoba
Mogue je odjednom izraunati vie agregatnih vrijednosti:rez6(broj6, broj7, broj8)(GMIN(tezina), AVG(visina), MAX(visina)(osoba))
broj6 broj7 broj862 175.5 186
rez6
FER - Zagreb Baze podataka 2011/2012 136
SQL - Agregatne funkcije
naziv rezultantnog atributa nije definiran operacijom, stoga se koristi AS operator za preimenovanje
sifra tezina visina101 62 170103 94 186105 74 181107 62 165
osoba
broj14
broj2292
broj3175.5
broj4 broj5186 62
SELECT COUNT(sifra) AS broj1 FROM osoba;
SELECT SUM(tezina) AS broj2 FROM osoba;
SELECT AVG(visina) AS broj3 FROM osoba;
SELECT MAX(visina) AS broj4,MIN(tezina) AS broj5
FROM osoba;
FER - Zagreb Baze podataka 2011/2012 137
SQL - Agregatne funkcije
agregatne funkcije s DISTINCT
sifra tezina visina101 62 170103 94 190105 74 170107 62 170
osoba
broj12
broj2230
broj3180
SELECT COUNT(DISTINCT visina) AS broj1FROM osoba;
SELECT SUM(DISTINCT tezina) AS broj2FROM osoba;
SELECT AVG(DISTINCT visina) AS broj3FROM osoba;
FER - Zagreb Baze podataka 2011/2012 138
Agregacija i grupiranje
Zadatak: izraunati prosjenu ocjenu za svaki pojedini predmet prosjek za Matematiku prosjek za Fiziku ... i za sve ostale predmete iji se naziv pojavljuje u relaciji
mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
FER - Zagreb Baze podataka 2011/2012 139
Agregacija i grupiranje
prosjek(prosjOcjMat)(GAVG(ocjena)(nazPred= 'Matematika'(ispit)))SELECT AVG(ocjena) AS prosjOcjMat
FROM ispitWHERE nazPred = 'Matematika';
prosjOcjMat3.25
Loe rjeenje: Za svaki predmet napisati po jedan upit
postoji li bolje rjeenje?
prosjek(prosjOcjFiz)(GAVG(ocjena)(nazPred= 'Fizika'(ispit)))SELECT AVG(ocjena) AS prosjOcjFiz
FROM ispitWHERE nazPred = 'Fizika';
prosjOcjFiz4
itd. (za svaki naziv predmeta)
FER - Zagreb Baze podataka 2011/2012 140
Grupiranje (grouping) Zadana je relacija r(R). Neka su atributi A1, A2, ..., Am, B1, B2, ...,
Bn atributi sheme R. Opi oblik operacije grupiranja je sljedei:A1, A2, ..., AmGAF1(B1), AF2(B2), ..., AFn(Bn) (r)
a) odreuju se grupe n-torki: u svakoj grupi se nalaze n-torke koje imaju jednake vrijednosti atributa A1, A2, ..., Am
b) za svaku grupu n-torki izraunavaju se vrijednosti agregatnih funkcija AF1(B1), AF2(B2), ..., AFn(Bn)
c) za svaku grupu formira se n-torka s vrijednostima atributa A1, A2, ..., Am i izraunatim vrijednostima agregatnih funkcija
FER - Zagreb Baze podataka 2011/2012 141
Agregacija i grupiranje
prosjek(nazPred, prosjOcj)(nazPredGAVG(ocjena)(ispit)) Za svaki predmet ispisati prosjenu ocjenu (ispravno rjeenje):
nazPred prosjOcjMatematika 3.25Fizika 4Vjerojatnost 4
prosjek
mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
grupirati po nazPred za svaku grupu izraunati AVG(ocjena) za svaku grupu formirati po jednu n-torku s
vrijednou atributa nazPred i izraunatim prosjekom
obaviti operaciju preimenovanja
FER - Zagreb Baze podataka 2011/2012 142
Agregacija i grupiranje Ispisati prosjenu i najveu ocjenu za svaki predmet i akademsku godinu:
nazPred akGod prosjOcj maxOcjMatematika 2005 3.333 5Matematika 2006 3 3Fizika 2004 5 5Fizika 2006 3.5 5Vjerojatnost 2005 4 4
prosjek1
mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
u istu grupu ulaze n-torke koje imaju jednake vrijednosti atributa nazPred i akGod
prosjek1(nazPred, akGod, prosjOcj, maxOcj)(nazPred, akGodGAVG(ocjena), MAX(ocjena)(ispit))
FER - Zagreb Baze podataka 2011/2012 143
SQL - Grupiranje SELECT SELECT List
FROM ...[WHERE Condition][GROUP BY column [, column]...]
SELECT nazPred, akGod, AVG(ocjena) AS prosjOcj, MAX(ocjena) AS maxOcj
FROM ispitGROUP BY nazPred, akGod;
prosjek1(nazPred, akGod, prosjOcj, maxOcj)(nazPred, akGodGAVG(ocjena), MAX(ocjena)(ispit))
nazPred akGod prosjOcj maxOcjMatematika 2005 3.333 5Matematika 2006 3 3Fizika 2004 5 5Fizika 2006 3.5 5Vjerojatnost 2005 4 4
FER - Zagreb Baze podataka 2011/2012 144
SQL - Grupiranje svi atributi koji se nalaze u listi za selekciju, a koji nisu argumenti
agregatnih funkcija, moraju biti navedeni u GROUP BY dijelu naredbe
Zato je to neispravno?Za svaku grupu se formira samo po jedna n-torka: to s onim grupama u kojima postoji vie vrijednosti atributa mbrStud?
SELECT nazPred, akGod, mbrStud, AVG(ocjena) AS prosjOcj, MAX(ocjena) AS maxOcj
FROM ispitGROUP BY nazPred, akGod;
NEISPRAVNO! mbrStud akGod nazPred ocjena100 2005 Matematika 3101 2005 Matematika 5102 2005 Matematika 2103 2006 Matematika 3100 2004 Fizika 5101 2006 Fizika 5102 2006 Fizika 2100 2005 Vjerojatnost 4
ispit
nazPred akGod mbrStud prosjOcj maxOcjMatematika 2005 100, 101, 102 ? 3.333 5Matematika 2006 ? 3 3Fizika 2004 ? 5 5Fizika 2006 ? 3.5 5Vjerojatnost 2005 ? 4 4
3. Nepotpune informacije iNULL vrijednosti
FER - Zagreb Baze podataka 2011/2012 146
NULL vrijednosti Ponekad se deava da informacije koje treba unijeti u bazu
podataka nisu potpune neke informacije trenutno nisu poznate neke informacije uope ne postoje (nisu primjenjive) neke informacije postoje, ali do njih nije mogue doi
Informacije koje nedostaju prikazuju se kao poseban oblik podatka: NULL vrijednost
mbr ime prez pbr datRodj adresa zanimanje100 Maja Novak 10000 01.5.2001 Ilica 1 NULL105 Ivo Kolar 21000 12.3.1973 NULL odvjetnik107 James Bond NULL NULL NULL tajni agent
clanoviKnjiznice
nije primjenjivo(vidi datum roenja)
trenutno nepoznatonedostupno
FER - Zagreb Baze podataka 2011/2012 147
SQL - Interna pohrana NULL vrijednosti NULL vrijednost se interno pohranjuje drugaije od bilo koje druge
doputene vrijednosti (nije 0, nije 0.0, nije prazan niz, ...) Nain interne pohrane NULL vrijednosti je nebitan - NULL
vrijednost je neovisna od tipa podatka kojeg predstavlja. U SQL naredbama, bez obzira na tip podatka, koristi se "konstanta" NULL
INSERT INTO mjesto VALUES (10000, 'Zagreb', NULL);INSERT INTO mjesto VALUES (10001, NULL, 1);UPDATE mjesto SET sifZupanija = NULL
WHERE pbr = 10001;
CREATE TABLE mjesto (pbr INTEGER
, nazMjesto CHAR(30), sifZupanija SMALLINT
);
FER - Zagreb Baze podataka 2011/2012 148
SQL - prikaz NULL vrijednosti
Nain na koji se NULL vrijednostprikazuje korisniku ovisi o programskom alatu koji se koristi:
AGS Server Studio SQL Client
SQuirreL SQL Client
FER - Zagreb Baze podataka 2011/2012 149
SQL - Izrazi
Izraz (Expression) se sastoji od imena atributa konstanti operatora + - * / unarni + - zagrada ( )
Izrazi se mogu koristiti u listi za selekciju u uvjetu u WHERE dijelu naredbe i drugdje ...
FER - Zagreb Baze podataka 2011/2012 150
SQL - Izrazi
iznosi plaa za svaku osobu su navedeni u kunama
ispisati matini broj, prezime i plau izraenu u dolarima, za one osobe ija je plaa vea od 1000 eura
1 USD = 5.6 KN, 1 KN = 0.136 EUR
mbr prez placa100 Novak 7500102 Horvat 5600105 Kolar 9000107 Ban 4200
dohodak
SELECT mbr, prez, placa/5.6
FROM dohodakWHERE placa*0.136 > 1000;
mbr prez (expression)100 Novak 1339.28571429105 Kolar 1607.14285714
SELECT mbr, prez, placa/5.6 AS placaUSD
FROM dohodakWHERE placa*0.136 > 1000;
mbr prez placaUSD100 Novak 1339.28571429105 Kolar 1607.14285714
?
FER - Zagreb Baze podataka 2011/2012 151
NULL vrijednost u izrazima Neka je binarni operator { +, -, *, / }, a X i Y su izrazi
ako jedan ili oba operanda X, Y poprimaju NULL vrijednost, tada je rezultat izraza X Y takoer NULL vrijednost
5 + NULL NULLNULL - NULL NULLNULL * 0 NULL
Neka je unarni operator { +, - }, a X je izraz ako operand X poprima NULL vrijednost, tada je rezultat
izraza X takoer NULL vrijednost
- NULL NULL
FER - Zagreb Baze podataka 2011/2012 152
SQL - NULL vrijednost u izrazimambr prez bodLab bodMI101 Novak 12 NULL103 Ban NULL NULL107 Horvat 21 66.3109 Kolar NULL 54.3
bodovi
SELECT mbr, prez, bodLab + bodMI AS ukupBodova, - bodLab AS negBodLab
FROM bodovi;
mbr prez ukupBodova negBodLab101 Novak NULL -12103 Ban NULL NULL107 Horvat 87.3 -21109 Kolar NULL NULL
FER - Zagreb Baze podataka 2011/2012 153
NULL vrijednost u uvjetima usporedbe Neka su X i Y izrazi, a je operator usporedbe
{ , } ako niti jedan od operanada X, Y nije NULL vrijednost, tada je
rezultat izraza X Y logika vrijednost istina (true) ili logika vrijednost la (false)
ako jedan ili oba operanda X, Y jesu NULL vrijednosti, tada je rezultat izraza X Y logika vrijednost nepoznato (unknown)
7 5 true'atlas' >>>> 'zvuk' false-17.8 NULL unknownNULL ==== NULL unknownNULL NULL unknown
FER - Zagreb Baze podataka 2011/2012 154
Operacija selekcije - NULL vrijednosti
A B1 202 NULL3 60
r s = B50 (r)
Obavljanjem operacije selekcije F(r) dobiva se relacija koja sadri samo one n-torke relacije r za koje je vrijednost predikata F istina (true). To znai da se n-torke za koje je vrijednost predikata F la (false) ili nepoznato (unknown) ne pojavljuju u rezultatu
20 50NULL 5060 50
true unknown false
A B1 20
s
A B1 202 NULL3 60
r s = B20 (r)20 20NULL 2060 20
false unknown true
A B3 60
s
FER - Zagreb Baze podataka 2011/2012 155
SQL - Selekcija i NULL vrijednosti
postBr 10000
gdje je Novak ?
matBr prez postBr100 Kolar 52000102 Horvat 10000105 Novak NULL107 Ban 10000
student
SELECT * FROM studentWHERE postBr = 10000;
SELECT * FROM studentWHERE postBr 10000;
postBr = 10000matBr prez postBr
102 Horvat 10000107 Ban 10000
matBr prez postBr100 Kolar 52000
FER - Zagreb Baze podataka 2011/2012 156
SQL - operatori usporedbe IS NULL, IS NOT NULL
U SQL-u nije doputeno operatore usporedbe , koristiti u kombinaciji s "konstantom" NULL (npr. =NULL, NULL, ...)
matBr prez postBr100 Kolar 52000102 Horvat 10000105 Novak NULL107 Ban 10000
student
SELECT * FROM studentWHERE postBr IS NULL;
SELECT * FROM studentWHERE postBr IS NOT NULL;
matBr prez postBr105 Novak NULL
matBr prez postBr100 Kolar 52000102 Horvat 10000107 Ban 10000
SELECT * FROM studentWHERE postBr = NULL;
Neispravna naredba
Rezultat logikog izraza X IS NULL ili logikog izraza X IS NOT NULLje uvijek ili true ili false
FER - Zagreb Baze podataka 2011/2012 157
Trovalentna logika
Osnovne logike operacije - tablice istinitosti u prisustvu logike vrijednosti unknown
AND true unknown falsetrue true unknown false
unknown unknown unknown falsefalse false false false
OR true unknown falsetrue true true true
unknown true unknown unknownfalse true unknown false
true falseunknown unknown
false true
NOT
FER - Zagreb Baze podataka 2011/2012 158
Selekcija, logiki operatori i NULL vrijednosti
A B C1 NULL 1002 20 2003 30 3004 40 NULL5 50 5006 60 NULL
r
s = B50 C300(r)
NULL 50 100 30020 50 200 30030 50 300 30040 50 NULL 30050 50 500 30060 50 NULL 300
unknown (*) true false unknown true false (**)
A B C2 20 2005 50 500
s
* NULL 50 unknown; 100 300 true; unknown true unknown** 60 50 false; NULL 300 unknown; false unknown false
FER - Zagreb Baze podataka 2011/2012 159
SQL - Logiki operatori i NULL vrijednostimbr prez bodLab bodMI101 Novak 6 NULL103 Ban NULL NULL105 Horvat 12 44.0107 Kolar NULL 85.0109 Pevec 20 15.0
bodovi
SELECT * FROM bodoviWHERE bodLab < 10
OR bodMI + bodLab < 50;
mbr prez bodLab bodMI101 Novak 6 NULL109 Pevec 20 15.0
SELECT * FROM bodoviWHERE bodLab IS NULL
OR bodMI IS NULLOR bodLab < 10OR bodLab + bodMI < 50;
mbr prez bodLab bodMI101 Novak 6 NULL103 Ban NULL NULL107 Kolar NULL 85.0109 Pevec 20 15.0
Za prolaz je potrebno barem 10 bodova iz labosa i barem 50 bodova ukupno. Studentima koji nisu dolazili na labos ili izlazili na meuispite upisana je NULL vrijednost. Ispisati studente koji nisu poloili ispit.
Ovaj upit ne daje zadovoljavajui rezultat
FER - Zagreb Baze podataka 2011/2012 160
NULL vrijednosti i skupovi Neka skup S sadri vrijednosti: S = {1, 2, 3, NULL} NULL vrijednost je nepoznata, ali moe poprimiti i neku od
vrijednosti 1, 2 ili 3 kardinalnost skupa S je neodreena (moe biti 3 ili 4) naruena je definicija skupa (u skupu nije dozvoljena pojava
dviju ili vie jednakih vrijednosti) to je logika vrijednost suda NULLS unknown to je logika vrijednost suda 4S unknown
FER - Zagreb Baze podataka 2011/2012 161
NULL vrijednosti i skupovi Sustavi za upravljanje bazama podataka nisu u stanju
meusobno razlikovati NULL vrijednosti, stoga se kao konvencija koristi sljedei model rukovanja s NULL vrijednostima u skupovima: doputena je pojava jedne i samo jedne NULL vrijednosti u
skupu element e je kopija jednog od elemenata u skupu:
ako vrijednost elementa e nije NULL, a u skupu postoji element s jednakom vrijednou
ili ako vrijednost elementa e jest NULL, a u skupu S ve postoji
element s NULL vrijednou
FER - Zagreb Baze podataka 2011/2012 162
Kopija n-torke elementi relacije su n-torke
Definicija kopije n-torke: neka su t1 i t2 n-torke definirane na shemi { A1, A2, ..., An } t1 = , t2 = n-torka t1 je kopija n-torke t2 ako i samo ako i, 1 i n, vrijedi: (di = ei) (di jest NULL ei jest NULL)
neformalno: ako su vrijednosti korespondentnih atributa n-torki ili jednake ili su obje NULL
FER - Zagreb Baze podataka 2011/2012 163
Kopija n-torke Primjer:
osobambr ime prez postBr100 Ivan Novak 10000
102 Ana Horvat 21000
103 Tea Ban 52000
105 NULL Kolar NULL
studentmbr ime prez postBr100 Ivan Novak NULL
102 Ana Horvat 21000
103 Tea Ban 21000
105 NULL Kolar NULL
nije kopijajest kopijanije kopijajest kopija
FER - Zagreb Baze podataka 2011/2012 164
Unija, razlika i presjek - NULL vrijednosti unija, razlika i presjek su skupovske operacije: pri usporedbi
elemenata (n-torki) treba voditi rauna o definiciji kopije n-torkeA B C1 a 2 b NULL3 NULL 4 NULL NULL
r A B C1 a 2 b NULL3 c 4 NULL NULL
s
A B C1 a 2 b NULL3 NULL 3 c 4 NULL NULL
r s
A B C1 a 2 b NULL4 NULL NULL
r s
A B C3 NULL
r \ s
A B C3 c
s \ r
FER - Zagreb Baze podataka 2011/2012 165
Projekcija - NULL vrijednosti pri obavljanju operacije projekcije potrebno je u fazi eliminacije
duplikata voditi rauna o definiciji kopije n-torke
A B C1 a 2 b NULL3 NULL 4 a 5 NULL NULL6 NULL 7 NULL NULL
r
s = pipipipiB, C(r)
B Ca b NULL
NULL a
NULL NULLNULL NULL NULL
B Ca b NULL
NULL NULL NULL
s
izdvajanje vertikalnog podskupa
eliminacija duplikata
"me
ure
zultat"
FER - Zagreb Baze podataka 2011/2012 166
Kartezijev produkt - NULL vrijednosti pri obavljanju operacije Kartezijevog produkta NULL vrijednosti
nemaju utjecaja
A B C1 a 2 b NULL3 NULL NULL
r
E F1 NULL
NULL f
s
A B C E F1 a 1 NULL2 b NULL 1 NULL3 NULL NULL 1 NULL1 a NULL f2 b NULL NULL f3 NULL NULL NULL f
r s
FER - Zagreb Baze podataka 2011/2012 167
Spajanje uz uvjet i spajanje s izjednaavanjem - NULL vrijednosti
pri obavljanju operacija spajanja uz uvjet i spajanja s izjednaavanjem potrebno je voditi rauna o tome da se spajaju samo one n-torke za koje uvjet spajanja ima logiku vrijednost istina (true)
linijalet udaljenostCA-825 700LH-412 NULLBA-722 4100CA-311 13000
zrakoplovtip doletB747 NULLA320 5400DC-9 3100
mogunostlet udaljenost tip doletCA-825 700 A320 5400CA-825 700 DC-9 3100BA-722 4100 A320 5400
mogunost = linija >< zrakoplovdolet udaljenost
?
FER - Zagreb Baze podataka 2011/2012 168
Prirodno spajanje - NULL vrijednosti slino, pri obavljanju operacije prirodnog spajanja potrebno je
voditi rauna o tome da se spajaju samo one n-torke za koje uvjet spajanja ima logiku vrijednost istina (true)
pbr nazMjesto sifZup42000 Varadin 742230 Ludbreg NULL42220 Novi Marof 7
sifZup nazZup7 Varadinska
NULL Istarska
mjesto zupanija
mjestouZupaniji = mjesto >< zupanijapbr nazMjesto sifZup nazZup42000 Varadin 7 Varadinska42220 Novi Marof 7 Varadinska
mjestouZupaniji
n-torka nee se spojiti s n-torkom jer je rezultat usporedbe NULL=NULL unknown
FER - Zagreb Baze podataka 2011/2012 169
Agregacija - NULL vrijednosti ako su sve vrijednosti za koje se izraunava agregatna
funkcija NULL vrijednosti, ili ako se agregatna funkcija izraunava za prazan skup vrijednosti rezultat agregatne funkcije COUNT je nula rezultat ostalih agregatnih funkcija je NULL
ako meu vrijednostima za koje se izraunava agregatna funkcija postoje vrijednosti koje nisu NULL vrijednosti agregatna funkcija se izraunava tako da se NULL vrijednosti
zanemaruju (ne uzimaju se u obzir pri izraunavanju)
FER - Zagreb Baze podataka 2011/2012 170
SELECT COUNT(mbrStud) AS broj1FROM ispit;
Agregacija - NULL vrijednostimbrStud nazPred ocjena
100 Matematika NULL101 Matematika 4102 Matematika 3103 Matematika 3100 Fizika NULL101 Fizika 3
ispit
broj16
broj30
SELECT COUNT(ocjena) AS broj3 FROM ispitWHERE mbrStud = 100;
broj53.25SELECT AVG(ocjena) AS broj5 FROM ispit;
SELECT COUNT(ocjena) AS broj2FROM ispit; broj2
4
broj40
SELECT COUNT(ocjena) AS broj4 FROM ispitWHERE mbrStud = 200;
broj6NULL
SELECT AVG(ocjena) AS broj6 FROM ispitWHERE mbrStud = 100;
broj7NULL
SELECT AVG(ocjena) AS broj7 FROM ispitWHERE mbrStud = 200;
FER - Zagreb Baze podataka 2011/2012 171
Agregatna funkcija COUNT(*) Agregatna funkcija COUNT(imeAtributa)
broji n-torke u kojima vrijednost atributa imeAtributa nije NULL vrijednost
Agregatna funkcija COUNT(*) broji n-torke zanemarujui njihov sadraj
SELECT COUNT(ocjena) AS brojOcj, COUNT(*) AS brojRedaka
FROM ispit;
brojOcj brojRedaka4 6
Ne postoji agregatna funkcija COUNT(DISTINCT *)
mbrStud nazPred ocjena100 Matematika NULL101 Matematika 4102 Matematika 3103 Matematika 3100 Fizika NULL101 Fizika 3
ispit
FER - Zagreb Baze podataka 2011/2012 172
Grupiranje - NULL vrijednosti pri obavljanju operacije grupiranja, grupiranje n-torki se
obavlja tako da se vodi rauna o definiciji kopije n-torki ako se grupiranje obavlja prema atributima iz skupa X, tada u
istu grupu ulaze one n-torke ije su X-vrijednosti meusobne kopije
mbrStud akGod nazPred ocjena100 2005 NULL 3101 NULL NULL 5102 2005 NULL 2103 2006 Fizika 3100 NULL NULL 5101 2006 Fizika 5102 2005 NULL 2
ispit
t1t2t3t4t5t6t7
SELECT akGod, nazPred, AVG(ocjena) AS prosjFROM ispitGROUP BY akGod, nazPred;
X = { akGod, nazPred }t1(X),t3(X) i t7(X) su meusobne kopijet2(X) i t5(X) su meusobne kopijet4(X) i t6(X) su meusobne kopije
akGod nazPred prosj2005 NULL 2.3333
NULL NULL 52006 Fizika 4
FER - Zagreb Baze podataka 2011/2012 173
Vanjsko spajanje - uvod
n-torka nee se pojaviti u rezultatu jer u relaciji upisanPred ne postoji niti jedna n-torka koja zadovoljava uvjet spajanja s tom n-torkom
matBr prez101 Kolar102 Horvat103 Novak
student matBr nazPred101 Matematika101 Fizika101 Programiranje102 Fizika
upisanPred
upisani = student >< upisanPred
matBr prez nazPred101 Kolar Matematika101 Kolar Fizika101 Kolar Programiranje102 Horvat Fizika
upisani
FER - Zagreb Baze podataka 2011/2012 174
Vanjsko spajanje - uvod
n-torka nee se pojaviti u rezultatu jer u relaciji zupanija ne postoji niti jedna n-torka koja zadovoljava uvjet spajanja (a ne moe je niti biti, jer sifZup ima NULL vrijednost)
pbr nazMjesto sifZup42000 Varadin 742230 Ludbreg NULL42220 Novi Marof 7
sifZup nazZup7 Varadinska
NULL Istarska
mjesto zupanija
mjestouZupaniji = mjesto >< zupanijapbr nazMjesto sifZup nazZup42000 Varadin 7 Varadinska42220 Novi Marof 7 Varadinska
mjestouZupaniji
FER - Zagreb Baze podataka 2011/2012 175
Lijevo vanjsko spajanje (Left outer join)
sve n-torke relacije student e se pojaviti u rezultatu spajanja ako se primijeni operacija lijevog vanjskog spajanja
matBr prez101 Kolar102 Horvat103 Novak
student matBrSt nazPred101 Matematika101 Fizika101 Programiranje102 Fizika
upisanPred
upisano = student *>< upisanPred
matBr prez matBrSt nazPred101 Kolar 101 Matematika101 Kolar 101 Fizika101 Kolar 101 Programiranje102 Horvat 102 Fizika103 Novak NULL NULL
upisano n-torkama "lijeve" relacije za koje ne postoje odgovarajue n-torke u "desnoj" relaciji se kao vrijednosti atributa iz "desne" relacije postavljaju NULL vrijednosti
matBr = matBrSt
FER - Zagreb Baze podataka 2011/2012 176
Lijevo vanjsko spajanje (Left outer join)pbr nazMjesto sifZupMj42000 Varadin 742230 Ludbreg NULL42220 Novi Marof 7
sifZup nazZup7 Varadinska
NULL Istarska
mjesto zupanija
mjestouZupaniji = mjesto *>< zupanija
pbr nazMjesto sifZupMj sifZup nazZup42000 Varadin 7 7 Varadinska42230 Ludbreg NULL NULL NULL42220 Novi Marof 7 7 Varadinska
mjestouZupaniji
sifZupMj = sifZup
FER - Zagreb Baze podataka 2011/2012 177
SQL - Lijevo vanjsko spajanje (Left outer join)pbr nazMjesto sifZupMj42000 Varadin 742230 Ludbreg NULL42220 Novi Marof 7
sifZup nazZup7 Varadinska
NULL Istarska
mjesto zupanija
mjesto *>< zupanija
pbr nazMjesto sifZupMj sifZup nazZup42000 Varadin 7 7 Varadinska42230 Ludbreg NULL NULL NULL42220 Novi Marof 7 7 Varadinska
SELECT mjesto.*, zupanija.*FROM mjesto LEFT OUTER JOIN zupanija
ON sifZupMj = sifZup;
ili SELECT *
sifZupMj = sifZup
FER - Zagreb Baze podataka 2011/2012 178
Desno vanjsko spajanje (Right outer join) sve n-torke relacije nastavnik e se pojaviti u rezultatu spajanja
ako se primijeni operacija desnog vanjskog spajanja
n-torkama "desne" relacije za koje ne postoje odgovarajue n-torke u "lijevoj" relaciji se kao vrijednosti atributa iz "lijeve" relacije postavljaju NULL vrijednosti
mbrSt prezSt temaSt101 Horvat Tranzistori103 Novak Teslini izumi105 Kolar Teorija kaosa
sifNast prezNast temaNast202 Ban Teslini izumi204 Toplek Elektrane206 Oreb Teslini izumi