You are on page 1of 180

SVEUĈILIŠTE U MOSTARU

FAKULTET STROJARSTVA I RAĈUNARSTVA

BAZE PODATAKA

Doc.dr.sc. GORAN KRALJEVIĆ

Ak.god. 2014/2015. BAZE PODATAKA 1


Baze podataka

Web:
http://www.fsr.ba/~goran

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: goran.kraljevic@hteronet.ba
goran.kraljevic@sve-mo.ba

Ak.god. 2014/2015. BAZE PODATAKA 2


Baze podataka

Sadrţaj predmeta:
o Uvod u baze podataka;
o Sustav za upravljanje bazom podataka;
o Relacijski model podataka;
o Modeliranje podataka (Model entiteti-veze, UML notacija);
o Normalizacija podataka (Normalne forme);
o Relacijske baze podataka;
o SQL (standardni upitni jezik);
o Korisnici i sigurnost baze podataka;
o Višekorisnički rad i upravljanje transakcijama;
o Zaključavanje podataka;
o Objekti u bazi podataka (tablice, pogledi, indeksi, ...);

SQL (detaljno na vjeţbama)

Ak.god. 2014/2015. BAZE PODATAKA 3


Polaganje ispita (kolokviji ...)

1. kolokvij (Modeliranje + Teorija) 45 bodova


2. kolokvij (SQL) 45 bodova
Aktivno sudjelovanje na nastavi 10 bodova
Ukupno : 100 bodova

 Prolazna ocjena putem kolokvija: min. 50 bodova


50,0 bod. ............ dovoljan (2)
62,5 bod. ............ dobar (3)
75,0 bod. ............ vrlodobar (4)
87,5 bod. ............ izvrstan (5)

Ak.god. 2014/2015. BAZE PODATAKA 4


Polaganje ispita (ispitni rokovi ...)

 Pismeni + Usmeni
 Prolazna ocjena na ispitu: min. 60 bodova
60-69 bod. .......... dovoljan (2)
70-79 bod. .......... dobar (3)
80-89 bod. .......... vrlodobar (4)
90-100 bod. ........ izvrstan (5)

 Napomena:
Studenti koji tijekom semestra (kolokviji ...) osvoje 40-49 bodova
dobit će 10 bodova koji će im se pribrojiti na svim pismenim ispitnim
rokovima do kraja akademske godine.
Studenti koji tijekom semestra (kolokviji ...) osvoje 30-39 bodova
dobit će 5 bodova koji će im se pribrojiti na svim pismenim ispitnim
rokovima do kraja akademske godine.

Ak.god. 2014/2015. BAZE PODATAKA 5


Uvod u baze podataka

Ak.god. 2014/2015. BAZE PODATAKA 6


Baza podataka

• Baza podataka je skup meĎusobno povezanih podataka,


pohranjenih zajedno bez štetne ili nepotrebne (nekontrolirane)
zalihosti (redundancije), s ciljem da ih koriste različite aplikacije.
Podaci su pohranjeni u obliku neovisnom od programa koji ih
koriste. Unos, izmjena i dohvat podataka obavlja se ISKLJUČIVO
kroz zajedničko i kontrolirano sučelje.

Ak.god. 2014/2015. BAZE PODATAKA 7


Zajedniĉke osobine za sve sustave baza podataka (Ullman)

• Apstraktni model podataka


• Visoka razina pristupa ili upitnih jezika
• Upravljanje transakcijama u višekorisničkom okruženju
• Kontrola pristupa i vlasništvo nad podacima
• Validacija podataka i provjera konzistentnosti
• Konzistentni oporavak podataka nakon ispada sustava i/ili
strojne opreme

Ak.god. 2014/2015. BAZE PODATAKA 8


Ciljevi razvoja baza podataka

• Razdvajanje podataka od aplikacija koje ih koriste

• Prezentiranje logičkog pogleda na podatke neovisno od fizičkih


detalja njihove pohrane u bazu podataka

• Omogućavanje različitih pogleda na istu bazu podataka, ovisno


o korisničkim i aplikativnim potrebama

Ak.god. 2014/2015. BAZE PODATAKA 9


Faze razvoja baza podataka

FAZE razvoja Baza podataka Aplikacija


Izrada modela podataka UtvrĎivanje zahtjeva za
Zahtjevi Specificiranje podataka aplikaciju
(analiza) Definiranje ograničenja i
poslovnih pravila
Tablice Forme
Relacije Izvješća (Reports)
Dizajn Indeksi Upiti (Queries)
Ograničenja Kod aplikacije
Pohranjene procedure i okidači
Kreiranje tablica Kreiranje formi
Kreiranje relacija Kreiranje izvješća
Implementiranje Kreiranje ograničenja Kreiranje Upita
Pisanje procedura i okidača Pisanje koda aplikacije
Punjenje baze podataka Testiranje
Testiranje

Ak.god. 2014/2015. BAZE PODATAKA 10


Povijesni razvoj baza podataka

Sustavi bazirani na datoteĉnim sustavima (filesystem)


• podaci su spremljeni u datotekama (files)
• svaka datoteka ima svoj format
̶ programi koji koriste bazu moraju poznavati taj format

• Problemi:
̶ nema standarda
̶ višestruko ponavljanje podataka
̶ meĎuovisnost podataka
̶ teško je vršiti neuobičajena pretraživanja
̶ integritet podataka
̶ sigurnost
̶ istovremeni pristup, ...

Ak.god. 2014/2015. BAZE PODATAKA 11


Modeli podataka

• Model podataka je skup pravila koji odreĎuju kako može


izgledati logička struktura baze
• U 60-tim i 70-tim godinama su bili u upotrebi hijerarhijski i
mrežni model
• Hijerarhijski model
̶ baza je predočena stablom ili skupom stabala
̶ jedan član može imati samo jednog vlasnika
̶ putovi pretraživanja su fiksni
• Mreţni model
̶ opći slučaj hijerarhijskog modela
̶ odnosi definirani eksplicitno
̶ aplikacija mora poznavati interni model baze podataka
• Implementacije u raĉunalu koristile su pokazivaĉe koji izravno
adresiraju mjesto zapisa na disku

Ak.god. 2014/2015. BAZE PODATAKA 12


Hijerarhijski i mreţni model

Hijerarhijski model podataka Mreţni model podataka


Ograniĉenja hijerarhijskih i mreţnih baza:
- Nemaju pokriće u formalnoj teoriji
- Sva pretraživanja se izvode po unaprijed definiranim i točno navedenim putovima
- Svi odnosi izmeĎu objekata se moraju unaprijed i točno definirati
- Optimizacija se provodi ručno - programer sam optimizira kod i odreĎuje metodu
koja će biti korištena pri komunikaciji izmeĎu aplikacije i baze podataka

Ak.god. 2014/2015. BAZE PODATAKA 13


Modeli podataka

• Relacijski model
̶ 1970. dogaĎa se relacijska "revolucija“
̶ E.F.Codd objavljuje članak "A Relational Model
of Data for Large Shared Databanks"
koji postavlja osnove skoro svim današnjim
sustavima baza podataka

• Objektni model
̶ inspiriran objektno orijentiranim programskim jezicima
̶ baza je skup objekata koji se sastoje od podataka i metoda
koje vrše operacija nad njima

Ak.god. 2014/2015. BAZE PODATAKA 14


Sustav za upravljanje bazama podataka

• SUBP (DBMS - Database Management System)


Programski sustav koji omogućava upravljanje bazom podataka je
sustav za upravljanje bazama podataka.

• Korisnički programi ne pristupaju podacima


direktno već preko DBMS-a

• Korisnik ili korisnički program postavlja zahtjev


za obavljanjem neke operacije s podacima, a
SUBP ga analizira, provjerava, optimizira,
transformira u niz operacija koje je potrebno
obaviti na fizičkoj razini, obavlja operacije i
vraća rezultat.

Ak.god. 2014/2015. BAZE PODATAKA 15


Fiziĉka i logiĉka organizacija podataka

• Vaţna posljedica primjene SUBP


jest razdvajanje fiziĉke i logiĉke
organizacije podataka. Dok logička
organizacija podataka predstavlja
organizaciju sa stanovišta korisnika baze
podataka ili programera te je
koncentrirana na vrste podataka i
njihove meĎusobne logičke veze, fizička
organizacija predstavlja organizaciju
fizičke pohrane podataka unutar
računala. Oblik i organizacija
pohranjenih podataka tu su često
potpuno različiti od njihovog logičkog
oblika i organizacije.
• U okviru toga, zadaća je SUBP-a
omogućiti korisniku (programeru)
manipuliranje podacima uz
poznavanje samo logiĉkog opisa
baze podataka, a ne nužno i
poznavanja načina fizičke pohrane
podataka.

Ak.god. 2014/2015. BAZE PODATAKA 16


Sustav za upravljanje bazama podataka

Funkcije SUBP-a:
• Definiranje baze podataka (DDL–Data Definition Language)
• Manipuliranje podacima u bazi (DML–Data Manipulation Language)
• Upravljačke funkcije:
̶ Sigurnost i zaštita od
neovlaštenog pristupa
̶ Očuvanje integriteta
(backup i recovery)
̶ Statističko praćenje
rada baze podataka
̶ Optimizacija rada

Ak.god. 2014/2015. BAZE PODATAKA 17


Sustav za upravljanje bazama podataka

Glavni proizvoĊaĉi SUBP (DBMS):

Ak.god. 2014/2015. BAZE PODATAKA 18


Relacijski model podataka

Ak.god. 2014/2015. BAZE PODATAKA 19


Relacijski model podataka

• Relacijski model je osnovne koncepte preuzeo iz matematičke


teorije skupova, a to su:

̶ Relacija
̶ Atribut
̶ Domena

Ak.god. 2014/2015. BAZE PODATAKA 20


Relacijski model podataka

• Relacijski model podataka se temelji na matematičkoj teoriji relacija


• Većina suvremenih DBMS je bazirana na relacijskom modelu
• Informacije su pohranjene kao zapisi ili slogovi (records) u
relacijama (tablicama)
• Baza podataka je skup relacija (tablica)

̶ Podaci su u n-torkama (redovima)


̶ Zaglavlje definira atribute (stupce) relacije

Ak.god. 2014/2015. BAZE PODATAKA 21


Kljuĉevi u relacijskoj bazi podataka

• Super kljuĉ (superkey) – atribut ili skup atributa koji


jedinstveno odreĎuje n-torku unutar relacije.

• Kandidat kljuĉ (candidate key) – super ključ takav da nema


nijedan odgovarajući podskup koji bi bio super ključ unutar relacije.

• Primarni kljuĉ (primary key) – kandidat ključ koji je odabran


da jedinstveno odredi n-torku unutar relacije.

• Jedinstveni kljuĉ (unique key) – kandidat ključ koji nije


odabran da bude primarni ključ.

Ak.god. 2014/2015. BAZE PODATAKA 22


Kljuĉevi u relacijskoj bazi podataka

Primjer:

• Super kljuĉ: npr. {Matbr, Prezime}


• Kandidat kljuĉ: {Matbr}, {JMBG}
• Primarni kljuĉ: {Matbr}
• Jedinstveni kljuĉ: {JMBG}

Ak.god. 2014/2015. BAZE PODATAKA 23


Kljuĉevi u relacijskoj bazi podataka

Kandidat (za PRIMARNI) kljuĉ mora zadovoljiti 2 uvjeta:

• Jedinstvenost … na relacijskoj shemi niti u jednom trenutku


ne mogu postojati dvije n-torke s jednakim vrijednostima
skupa atributa K.
• Minimalnost … niti jedan pravi podskup od skupa atributa K
nema svojstvo jednoznačnosti.

̵ I primarni i jedinstveni kljuĉ moraju ispuniti uvjete


jedinstvenosti i minimalnosti, ali relacija moţe imati
samo jedan primarni kljuĉ, dok jedinstvenih kljuĉeva
moţe imati više.

Ak.god. 2014/2015. BAZE PODATAKA 24


Kljuĉevi u relacijskoj bazi podataka

• Vanjski ili strani kljuĉ (foreign key) – atribut ili skup


atributa unutar jedne relacije koji odgovara kandidat ključu neke
(moguće i iste) relacije.

• Vanjski kljuĉevi omogućuju povezivanje n-torki iz razliĉitih tablica.

Primjer:

Ak.god. 2014/2015. BAZE PODATAKA 25


Ograniĉenja u relacijskom modelu podataka

Dva opća ograniĉenja:

• Entitetski integritet
- povezan sa primarnim ključem

• Referencijalni integritet
- povezan sa stranim ključem

Ak.god. 2014/2015. BAZE PODATAKA 26


Entitetski integritet

• Vrijednost primarnog kljuĉa kao cjeline, ne smije biti


jednaka NULL vrijednosti.
Ako je primarni ključ relacije složen, niti jedna njegova komponenta
ne smije poprimiti NULL vrijednost.

Primjeri:
NASTAVNIK = {SifNas, PrezNas}
PK (NASTAVNIK) = {SifNas} → SifNas ne smije biti NULL
ISPIT = {Matbr, SifPred, DatIsp}
PK (ISPIT) = {Matbr, SifPred, DatIsp} → Matbr, SifPred, DatIsp ne smiju biti NULL

• Integritet ključa:
U relaciji ne smiju postojati dvije n-torke s jednakim
vrijednostima kljuĉa (vrijedi za sve moguće kljuĉeve).

Ak.god. 2014/2015. BAZE PODATAKA 27


Referencijalni integritet

• Ako u relacijskoj shemi R postoji strani kljuĉ (foreign key)


koji odgovara primarnom kljuĉu (primary key) relacijske
sheme S, tada svaka vrijednost stranog kljuĉa u relaciji r(R)
mora biti ili jednaka vrijednosti primarnog kljuĉa neke n-
torke iz relacije s(S) ili jednaka NULL vrijednosti.

Primjer:

Relacije OSOBA i MJESTO ne zadovoljavaju pravilo referencijalnog integriteta jer u


relaciji OSOBA postoji vrijednost stranog ključa (77000) za koju ne postoji
odgovarajuća n-torka u relaciji MJESTO.

Ak.god. 2014/2015. BAZE PODATAKA 28


Ograniĉenja u relacijskom modelu podataka

Domenski integritet
• Kako svaki atribut ima pridruženu domenu, postoje ograničenja
(engl. domain constraints) koja čine restrikcije nad skupom
dozvoljenih vrijednosti atributa relacije.

NULL / NOT NULL


• NULL – predstavlja vrijednost atributa koja je trenutno
nepoznata ili nije primjenjiva za konkretnu n-torku.
• NULL je način rada s nepotpunim podacima ili izuzetcima.
• NULL nije nula (0) za numeričke vrijednosti ili “spaces” za tekst.
• NULL znači ODSUSTVO (nepostojanje) vrijednosti.

Ak.god. 2014/2015. BAZE PODATAKA 29


Operacije u relacijskom modelu

Osnovne operacije u relacijskom modelu:

• Unija

• Razlika

• Presjek

• Kartezijev produkt

• Projekcija

• Selekcija

• Spajanje (join)

Ak.god. 2014/2015. BAZE PODATAKA 30


Operacije u relacijskom modelu

• Unija … relacija koju čine sve n-torke prve i druge relacije

Ak.god. 2014/2015. BAZE PODATAKA 31


Operacije u relacijskom modelu

• Razlika … relacija koju čine sve n-torke koje se nalaze u prvoj,


ali se ne nalaze u drugoj relaciji

Ak.god. 2014/2015. BAZE PODATAKA 32


Operacije u relacijskom modelu

• Presjek … relacija koju čine n-torke zajedničke za obje relacije

Ak.god. 2014/2015. BAZE PODATAKA 33


Operacije u relacijskom modelu

• Kartezijev produkt … relacija koju čine sve moguće kombinacije


parova n-torki s tim da je prva n-torka iz prve, a druga iz druge
relacije

Ak.god. 2014/2015. BAZE PODATAKA 34


Operacije u relacijskom modelu

• Projekcija … rezultat je izbor odreĎenih atributa polazne relacije

Ak.god. 2014/2015. BAZE PODATAKA 35


Operacije u relacijskom modelu

• Selekcija (ograničenje, restrikcija, izbor) … rezultat su samo


one n-torke koje zadovoljavaju postavljene uvjete

Ak.god. 2014/2015. BAZE PODATAKA 36


Operacije u relacijskom modelu

• Spajanje … iz dvije relacije stvara novu relaciju od svih


kombinacija parova n-torki koji zadovoljavaju postavljene uvjete
• U svakoj se tablici (relaciji) bira stupac (polje) preko čijih se
vrijednosti uspostavlja veza

Ak.god. 2014/2015. BAZE PODATAKA 37


Operacije u relacijskom modelu

• Opisane operacije relacijske algebre primjenjuju se uvijek u


kombinaciji:
̶ iz više tablica selektiramo samo one zapise koji udovoljavaju
uvjetima
̶ napravimo spajanje (join)
̶ projekcijom odaberemo željena polja

• Na taj se način iz vrlo malog broja osnovnih operacija relacijske


algebre može izvesti veliki broj kombinacija za obradu i analizu
podataka.

• Prijevod operacija relacijske algebre u jezik za definiciju i


manipulaciju podacima koji danas predstavlja osnovni standard
za relacijske baze podataka: SQL.

Ak.god. 2014/2015. BAZE PODATAKA 38


Modeliranje podataka

Ak.god. 2014/2015. BAZE PODATAKA 39


Modeliranje podataka

Ak.god. 2014/2015. BAZE PODATAKA 40


ER modeliranje

Model entiteti - veze (entity-relationship model)


• ili bolje: model entiteti - veze - atributi

ER modeliranje:
• je sastavljeno iz entiteta, veza i atributa
• je slikovni prikaz sustava baze podataka
• je neovisno o DBMS i hardveru
• predstavlja konceptualni model visokog nivoa
• podržava korisnikovu percepciju podataka
• je alat za projektiranje

Ak.god. 2014/2015. BAZE PODATAKA 41


ER modeliranje

• ER modeliranje je iterativan postupak – realno je


očekivati više “razvojnih” verzija modela
̶ Entiteti
̶ Atributi
̶ Veze

• Postoji više rješenja problema – neka su optimalnija


od drugih

Ak.god. 2014/2015. BAZE PODATAKA 42


Entitet

• Entitet je bilo koji objekt u sustavu koji ţelimo modelirati i


o kojem ţelimo saĉuvati informaciju

̶ Pojedinačni objekti zovu se entiteti


̶ Skupine objekata istog tipa zovu se tipovi entiteta ili skupovi
entiteta
̶ Moguća su dva tipa entiteta: jaki i slabi

Ak.god. 2014/2015. BAZE PODATAKA 43


Jaki i slabi tip entiteta

• JAKI entitet
Tip entiteta čija egzistencija nije vezana za postojanje nekog
drugog tipa entiteta.

• SLABI entitet
Tip entiteta čija egzistencija ovisi o postojanju nekog drugog
tipa entiteta, tj. onaj tip entiteta koji ne može postojati u bazi
podataka ukoliko neki drugi tip entiteta takoĎer ne postoji u
bazi.

Ak.god. 2014/2015. BAZE PODATAKA 44


Atribut

• Atribut je svaki detalj koji sluţi da pobliţe odredi,


identificira, klasificira, kvantificira ili izrazi stanje entiteta.
• Predstavlja opis entiteta

Ak.god. 2014/2015. BAZE PODATAKA 45


Veze

• Entiteti se mogu povezivati jedan s drugim u veze (relacije).


• Broj entiteta u vezi predstavlja STUPANJ VEZE.

Binarna veza
veza 2 entiteta

Ternarna veza
veza 3 entiteta

Unarna veza
isti entitet više puta
egzistira u različitim
ulogama

Ak.god. 2014/2015. BAZE PODATAKA 46


Kardinalnost veze

• Odnos omjera meĊu povezanim entitetima nazivamo


kardinalnost veze

- Jedan na jedan (1:1)

- Jedan na više (1:m)

- Više na jedan (m:1)

- Više na više (m:n)

Ak.god. 2014/2015. BAZE PODATAKA 47


Grafiĉki prikaz veze

Ak.god. 2014/2015. BAZE PODATAKA 48


Razbijanje M:N veza

• Veza m:n u ER modelu se moţe razbiti uvoĊenjem novog


posredniĉkog entiteta.

Primjer:

• Vezu više na više možemo razbiti uvoĎenjem entiteta najam, koji sadrži
atribut datum_najma

Ak.god. 2014/2015. BAZE PODATAKA 49


Preslikavanje ER modela u relacije

VEZA JEDAN:VIŠE
• Primarni ključ entiteta sa strane veze JEDAN doda se kao
strani ključ u entitet sa strane veze VIŠE.

VEZA VIŠE:VIŠE
• Doda se novi entitet, koji sadrži primarne ključeve obaju
rubnih entiteta.
• Ti atributi zajedno tvore složeni primarni ključ novonastalog
entiteta.

Ak.god. 2014/2015. BAZE PODATAKA 50


Usporedne i povratne veze

Usporedne veze – dvije usporedne veze izmeĎu dva entiteta ...

Povratne veze – veza entiteta “na samog sebe” ...

Ak.god. 2014/2015. BAZE PODATAKA 51


Preslikavanje ER modela u relacije

Usporedne veze
• Svaku vezu zamijenimo s po jednim stranim ključem u relaciji
na strani veze VIŠE (usporedne veze se preslikaju u jednu, ali
s uvoĎenjem dodatnog stranog ključa).
• Da bi razlikovali veze meĎu entitetima stranim ključevima
damo različite nazive.

Povratne veze
• Doda se strani ključ jednak primarnom ključu relacije.
• Za povratne veze vrijedi da je strani ključ jednak primarnom
ključu relacije, ali pod drugim imenom.

Ak.god. 2014/2015. BAZE PODATAKA 52


UML (Unified Modeling Language)

Zašto UML (odnosno korištenje jedne notacije)?


• Korištenje jednog jezika i notacije bitno olakšava komunikaciju
izmeĎu članova različitih timova (projektanti baze podataka,
analitičari, programeri aplikacije) i time doprinosi da se svi
sudionici koji participaraju u projektu osjećaju dijelom jedne
cjeline.

Ak.god. 2014/2015. BAZE PODATAKA 53


Relacije u UML-u

 ZAVISNOST (dependency)

 ASOCIJACIJA (association) 1 1..*

 AGREGACIJA (aggregation)

 GENERALIZACIJA (generalization)

 REALIZACIJA (realization)

Ak.god. 2014/2015. BAZE PODATAKA 54


UML notacija ...

Ak.god. 2014/2015. BAZE PODATAKA 55


Normalizacija podataka

Ak.god. 2014/2015. BAZE PODATAKA 56


Normalizacija podataka

• Normalizacija je proces kojime se nastoji eliminirati


redundancija, ali tako da se sačuva integritet podataka u bazi
• Redundancija se izražava kroz pojam funkcijske zavisnosti

• Definiraju se normalne forme (NF)

̶ prva NF, druga NF, treća NF, itd.


̶ svaka normalna forma garantira da nema odreĎenog tipa
zavisnosti
̶ svaka viša NF uključuje prethodnu NF te dodatno ureĎuje
model, tj. eliminira dodatne redundantnosti

Ak.god. 2014/2015. BAZE PODATAKA 57


Normalne forme

• 1. NF – Prva normalna forma


• 2. NF – Druga normalna forma
• 3. NF – Treća normalna forma
• BCNF – Boyce-Coddova normalna forma
1 NF, 2 NF, 3 NF i BCNF se temelje na funkcijskim zavisnostima.

• 4. NF – Četvrta normalna forma


Temelji se na višeznaĉnim zavisnostima.

• PJNF – Projekcijsko-spojna normalna forma


Temelji se na spojnim zavisnostima.

Ak.god. 2014/2015. BAZE PODATAKA 58


Definicije funkcijskih ovisnosti

Funkcijska ovisnost atributa

• Ako promatramo tablicu R sa atributima X i Y koji mogu biti


kompozitni tj. složeni: za atribut Y tablice R kaže se da je
funkcijski ovisan o atributu X iste tablice
R.X->R.Y
ako je svaka pojedina vrijednost atributa X povezana sa samo
jednom vrijednošću atributa Y.

Ak.god. 2014/2015. BAZE PODATAKA 59


Definicije funkcijskih ovisnosti

Potpuna funkcijska ovisnost atributa

• U tablici R s atributima X i Y koji mogu biti kompozitni tj. složeni,


Y je potpuno funkcijski ovisan o X ako vrijedi da je Y funkcijski
ovisan o X i nije funkcijski ovisan niti o jednom manjem podskupu
atributa X.
Odnosno, ako vrijedi X->Y tada ne smije postojati niti jedan
podskup Z koji sadrži samo dio atributa od kojih se sastoji atribut
X, za koji bi vrijedilo da je Z->Y.

Ak.god. 2014/2015. BAZE PODATAKA 60


Definicije funkcijskih ovisnosti

Tranzitivna funkcijska ovisnost atributa

• Ako vrijedi X->Y i Y-/->X (Y je funkcijski ovisan o X, a X nije


funkcijski ovisan o Y), i ako Y->A (A je funkcijski ovisan o Y) tada
vrijedi da je A funkcijski ovisan i o X (X->A).
Ako vrijedi A-/->Y tada je A striktno tranzitivno ovisan o X.

Ak.god. 2014/2015. BAZE PODATAKA 61


1NF

Prva normalna forma (1NF)

Tablica se nalazi u prvoj normalnoj formi ako su svi


nekljuĉni atributi funkcijski ovisni o kljuĉu.

 Uklanjanje ponavljajućih atributa ili grupa atributa

Ak.god. 2014/2015. BAZE PODATAKA 62


2NF

Druga normalna forma (2NF)

Tablica je u drugoj normalnoj formi ako i samo ako je


u 1NF i ako su svi nekljuĉni atributi potpuno funkcijski
ovisni o kljuĉu.

Uklanjanje atributa ovisnih samo o dijelu jedinstvenog


identifikatora.

Ak.god. 2014/2015. BAZE PODATAKA 63


3NF

Treća normalna forma (3NF)

Tablica je u trećoj normalnoj formi ako i samo ako je u


2NF i ako niti jedan nekljuĉni atribut nije tranzitivno
ovisan o kljuĉu.

Uklanjanje atributa ovisnih o atributima koji nisu dio


jedinstvenog identifikatora.

Ak.god. 2014/2015. BAZE PODATAKA 64


Primjer normalizacije podataka

• Na slici je dana denormalizirana tablica s nazivima stupaca i


vrijednostima redaka.

Napraviti normalizirani model podataka s pripadajućim


entitetima, atributima i vezama izmeĊu njih.

Ak.god. 2014/2015. BAZE PODATAKA 65


Normalizacija podataka (1NF)

– Postoji funkcijska zavisnost :


Matbr → Prezime, Ime

– Ne postoji funkcijska zavisnost : Matbr → SifPred Matbr → NazPred


Matbr → DatIsp Matbr → Ocjena
Matbr → SifNas Matbr → PrezNas

Ak.god. 2014/2015. BAZE PODATAKA 66


Normalizacija podataka (1NF)

Rješenje:

 PK (STUDENT) = {Matbr}
 PK (ISPIT) = {Matbr, SifPred, DatIsp}

Ak.god. 2014/2015. BAZE PODATAKA 67


Normalizacija podataka (2NF)

 {Matbr, SifPred, DatIsp} → {NazPred}


 {SifPred} → {NazPred} dakle, ne postoji potpuna funkcijska ovisnost
neključnih atributa o ključu

ISPIT ne zadovoljava 2 NF !

Rješenje:

Ak.god. 2014/2015. BAZE PODATAKA 68


Normalizacija podataka (3NF)

 {Matbr, SifPred, DatIsp} → {SifNas}


 {SifNas} → {PrezNas} dakle, postoji tranzitivna funkcijska ovisnost
(koju je potrebno eliminirati)

ISPIT ne zadovoljava 3 NF !

Rješenje:

Ak.god. 2014/2015. BAZE PODATAKA 69


Normalizacija podataka

Sve tablice zadovoljavaju 3 NF !

 STUDENT (Matbr, Prezime, Ime)


 PREDMET (SifPred, NazPred)
 NASTAVNIK (SifNas, PrezNas)
 ISPIT (Matbr, SifPred, DatIsp, Ocjena, SifNas)

Vaţno:
- Baza podataka treba biti barem u 3 NF !
- Osim 1NF, 2NF, 3NF postoje i BCNF (Boyce-Coddova normalna forma),
4NF i 5NF.

Ak.god. 2014/2015. BAZE PODATAKA 70


Relacijski model (UML notacija)

Ak.god. 2014/2015. BAZE PODATAKA 71


Modeliranje podataka
Primjeri

Ak.god. 2014/2015. BAZE PODATAKA 72


Primjer 1.

• Profesionalni programer Ivo Ivić odlučio je napraviti program za


evidentiranje svih programa koje je uradio, korisnika kod kojih ti
programi rade, kao i ostvarene zarade po svakom programu.

Za svaki program se evidentira vrijeme utrošeno za njegovu izradu,


kao i vrijeme utrošeno kod korisnika za prilagodbu programa
korisničkim zahtjevima, kad je program pušten u rad kod korisnika,
kao i koliko je od korisnika naplaćeno za taj program. TakoĎer se
evidentira da li je program u uporabi tj. aktivan ili ne.

Ak.god. 2014/2015. BAZE PODATAKA 73


Primjer 1. ( ER model )

Ak.god. 2014/2015. BAZE PODATAKA 74


Primjer 1. ( Relacijski model )

Ak.god. 2014/2015. BAZE PODATAKA 75


Primjer 2.

• Faktura je dokument koji se šalje kupcu kako bi mogao izvršiti plaćanje


kupljene robe. Da bi se napravila faktura moraju postojati osnovni
podaci o kupcu (naziv, adresa, telefon i sl.), podaci o fakturi (broj
fakture, datum izdavanja, broj narudžbe prema kojoj je raĎena, rok
plaćanja, iznos za plaćanje i sl.), kao i podaci o kupljenim artiklima
(naziv, jedinica mjere, kupljena količina, cijena i sl.).

Faktura se sastoji od 2 osnovna dijela:


- Zaglavlje fakture koje sadrži zajedničke, opće podatke
- Stavke fakture s pojedinačnim artiklima, količinama i cijenama.

Definirati sve entitete, atribute i veze za proces Fakturiranja kupcima.

Ak.god. 2014/2015. BAZE PODATAKA 76


Primjer 2. ( ER model )

Ak.god. 2014/2015. BAZE PODATAKA 77


Primjer 2. ( Relacijski model )

Ak.god. 2014/2015. BAZE PODATAKA 78


Primjer 3.

• Na Fakultetu strojarstva i računarstva u Mostaru evidentirani su podaci o


kandidatima koji su se prijavili na razradbeni ispit i njihovim rezultatima.
Evidentiraju se podaci o:
- kandidatu: JMBG, ime, prezime, mjesto roĎenja, završena srednja
škola (šifra, naziv, adresa, poštanski broj mjesta, mjesto, šifra općine i
naziv općine u kojoj se škola nalazi)
- za svakog kandidata ocjena iz pojedinih predmeta iz srednje škole –
šifra i naziv predmeta, razred i ocjena. Šifra odreĎuje predmet u nekom
razredu (godini), npr. Matematika u 1.razredu i Matematika u 2.razredu
imaju različite šifre. Isti predmeti u različitim školama imaju istu šifru
npr. Matematika iz 1.razreda ima istu šifru za sve škole
- podaci o zadacima na razradbenom ispitu – redni broj zadatka, tekst
zadatka, točan odgovor (A, B, C, D ili E)
- za svakog kandidata odgovori koje je dao na zadatke (odgovor za svaki
pojedini zadatak mogu biti A, B, C, D, E ili ništa)

Ak.god. 2014/2015. BAZE PODATAKA 79


Primjer 3. ( ER model )

Ak.god. 2014/2015. BAZE PODATAKA 80


Primjer 3. ( Relacijski model )

Ak.god. 2014/2015. BAZE PODATAKA 81


Primjer 4.

• U bazi podataka potrebno je evidentirati podatke o zrakoplovima,


aerodromima i letovima.
Zrakoplov je identificiran svojim jedinstvenim registracijskim brojem (npr.
N6061U). Za zrakoplov se evidentiraju godina proizvodnje i tip zrakoplova.
Za svaki tip zrakoplova evidentira se šifra tipa i naziv tipa zrakoplova (npr.
šifra: 123, naziv tipa: "Airbus-A319") te najveća ukupna dozvoljena težina
pri polijetanju. Za svaki aerodrom se evidentira šifra i naziv aerodroma.
Zrakoplov prema namjeni može biti ili putnički ili teretni (jedno isključuje
drugo). Za svaki pojedini zrakoplov, ovisno o njegovoj namjeni, evidentira
se je li u zrakoplov ugraĎena dodatna oprema: za svaki pojedini putnički
zrakoplov evidentira se ima li ugraĎenu internu televiziju, ima li ureĎaj za
satelitsku komunikaciju, a za svaki pojedini teretni zrakoplov broj dodatno
ugraĎenih klimatiziranih kontejnera za prijevoz životinja i je li ugraĎen
katapult za izbacivanje tereta padobranom.

Ak.god. 2014/2015. BAZE PODATAKA 82


Primjer 4.
(nastavak zadatka ...)

...
Evidentiraju se letovi samo putničkih zrakoplova. Let je identificiran šifrom
i datumom leta (npr. "OU763", 1.6.2010), a za let se evidentira s kojeg
aerodroma zrakoplov polijeće, na koji aerodrom slijeće te vrijeme
polijetanja i vrijeme slijetanja. Evidentira se koji zrakoplov leti na kojem
letu.
Evidentiraju se kategorije cijena karata. Svaka kategorija cijena ima svoju
šifru (jedinstveno identificira kategoriju) i naziv (npr. "poslovna",
"ekonomska", "s popustom za zaposlenika kompanije", "s popustom za
osobe mlaĎe od 27 godina", itd). Putnik kupuje kartu točno odreĎene
kategorije cijene za odreĎeni let. Putnik ne može za jedan let kupiti više
od jedne karte. Za svakog putnika se evidentira jmbg (jedinstveno
odreĎuje putnika), prezime i ime.

Ak.god. 2014/2015. BAZE PODATAKA 83


Primjer 4. ( ER model )

Ak.god. 2014/2015. BAZE PODATAKA 84


Primjer 4. ( Relacijski model )

Ak.god. 2014/2015. BAZE PODATAKA 85


Modeliranje podataka
Primjeri za vjeţbu

Ak.god. 2014/2015. BAZE PODATAKA 86


Primjer 1. (Evidentiranje objavljenih radova)

• Profesor programiranja Ivo Ivić odlučio je napraviti program za


evidentiranje svojih objavljenih radova.
To podrazumijeva evidentiranje svih do sada objavljenih radova,
naslova radova, koautora koji su s njim učestvovali u pisanju radova,
godina objavljivanja kao i časopisa u kojima je objavljivano.
TakoĎer treba uspostaviti klasifikaciju radova po principu: znanstveni,
stručni ili pregledni rad, te da li je rad objavljen u meĎunarodnom ili
domaćem časopisu.
Za svaki rad unose se podaci o naslovu rada, klasifikacijama,
koautorima i časopisu u kojem je rad objavljen.

Ak.god. 2014/2015. BAZE PODATAKA 87


Primjer 2. (Ugovori)

• Na slici je dana denormalizirana tablica UGOVORI s nazivima stupaca i


vrijednostima redaka. Napraviti normalizirani model podataka s
pripadajućim entitetima, atributima i vezama izmeĎu njih.

Ak.god. 2014/2015. BAZE PODATAKA 88


Primjer 3. (Filmovi)

• U bazi podataka su evidentirani podaci o filmovima. Za svaki film


evidentira se žanr (šifra, naziv) i država (šifra, naziv).
Uz svaki film evidentiraju se različiti izvoĎači (šifra, ime, prezime) i
funkcije koje su obavljali u filmu.
Funkcije su predstavljene kraticom i nazivom, a mogu biti npr.
GL-glumac, RED-redatelj, SC-scenarist, SKL-skladatelj, itd.
Obratite pozornost na tip veze izmeĎu entiteta funkcija, izvoĎač i film:

Ak.god. 2014/2015. BAZE PODATAKA 89


Primjer 4. (Multipleks kino)

• Napraviti normalizirani model podataka s pripadajućim entitetima,


atributima i vezama izmeĎu entiteta koji će podržavati proces
rezervacije karata za multipleks kino.
U bazi podataka je potrebno evidentirati sljedeće podatke o filmovima:
šifra, naziv, naziv originala, godina proizvodnje, trajanje filma, šifru i
naziv žanra, glumce u filmu (šifra, ime, prezime).
Baza podataka takoĎer treba sadržavati popis dvorana u multipleks
kinu (sifra, naziv, broj mjesta) kao i raspored svih projekcija filmova
po dvoranama (datum i vrijeme projekcije, cijena karte za projekciju).

Ak.god. 2014/2015. BAZE PODATAKA 90


Primjer 5. (Tvrtka informatiĉke opreme)

• Tvrtka koja se bavi prodajom informatičke opreme prilikom prodaje


iste sa svojim kupcima dogovara uvjete servisiranja opreme. U tvrtki
radi više servisera i pri kupnji se ugovara koji je serviser zadužen za
kojeg kupca s tim da na jednog servisera doĎe više kupaca. Jednim
ugovorom se definira točno razdoblje servisiranja (od kojeg do kojeg
datuma), a podrazumijeva više izlazaka servisera na teren unutar
definiranog vremenskog razdoblja. Naravno, intervencija servisera nije
nužna. Prilikom izlaska na teren potrebno je zabilježiti točno vrijeme
odlaska i povratka, vrijeme provedenu na terenu izraženo u satima, te
na kojoj je komponenti, ili više njih, vršena popravka.
Napraviti normalizirani model podataka s pripadajućim entitetima,
atributima i vezama izmeĎu entiteta.

Ak.god. 2014/2015. BAZE PODATAKA 91


Primjer 6. (Tehniĉki biro)

• Napraviti normalizirani model podataka s pripadajućim entitetima, atributima i


vezama izmeĎu entiteta koji bi osigurao evidentiranje projekata, rokova i
izvršitelja u jednom tehničkom birou.
Osnovni način poslovanja tehničkog biroa jeste rad na izradi odreĎenih projekata,
što znači da se za svaki projekt trebaju evidentirati osnovni podaci o naručitelju
projekta (šifra, naziv, adresa, telefon, mail). Za svaki projekt postoji samo jedan
glavni naručitelj s kojim se sklapa ugovor o poslu. O projektu se vode slijedeći
podaci: naziv projekta, opis projekta, planirani datum početka rada na projektu,
planirani svršetak rada na projektu, stvarni početak rada na projektu, stvarni
svršetak rada na projektu, vrijednost projekta, ugovoreni penali za kašnjenje,
dodatna napomena. Na svakom projektu radi više djelatnika iz biroa (šifra, ime,
prezime, zanimanje, titula, adresa, telefon, mail) koji rade na odreĎenom
radnom mjestu u birou (šifra, naziv radnog mjesta, opis). Projekt se razlaže na
više različitih poslova (zadataka). Svakom članu projektnog tima dodjeljuje se
točno odreĎeni posao (zadatak) što se posebno i evidentira. Uz svaki posao
(zadatak) evidentira se i naziv zadatka, kratak opis, planirani početak, planirani
svršetak, stvarni početak, stvarni svršetak, vrijednost i napomena.

Ak.god. 2014/2015. BAZE PODATAKA 92


Uvod u SQL

Ak.god. 2014/2015. BAZE PODATAKA 93


SQL

• SQL = Structured Query Language


• SQL je upitni jezik temeljen na relacijskoj algebri i predikatnom
računu.
• SQL se koristi kao programski jezik i interaktivni upitni jezik.
Kao programski jezik može se ugraĎivati u jezike treće i četvrte
generacije.
• Zadaća SQL-a je omogućiti definiciju podataka, upravljanje podacima
i provoĎenje kontrole nad podacima u relacijskoj bazi podataka.
• ProizvoĎači komercijalnih sustava takoĎer ugraĎuju i svoje, uglavnom
nestandardne, DDL i DML naredbe.
Ti su nestandardni dijelovi problematični jer programski kod postaje
neprenosiv izmeĎu različitih SQL sustava, a takoĎer se bitno otežava
usaglašavanje oko budućih standarda.

Ak.god. 2014/2015. BAZE PODATAKA 94


SQL

• DDL (Data Definition Language)


= izrazi za definiranje podataka
̶ CREATE, ALTER, DROP, GRANT, REVOKE ...

• DML (Data Manipulation Language)


= izrazi za upravljanje podacima

̶ SELECT, INSERT, UPDATE, DELETE ...

Ak.god. 2014/2015. BAZE PODATAKA 95


SQL

• Primjer SQL naredbe iz DDL dijela jezika (kreiranje tablice mjesto):


CREATE TABLE mjesto
( pbr_mjesta VARCHAR2(5) NOT NULL ,
naziv_mjesta VARCHAR2(30) NOT NULL ,
sifra_opcine NUMBER(4)
);

• Primjer SQL naredbe iz DML dijela jezika (iz tablice mjesto dohvaća sve
n-torke kojima je vrijednost atributa poštanski broj jednaka 88000):

SELECT *
FROM mjesto
WHERE pbr = 88000;

Ak.god. 2014/2015. BAZE PODATAKA 96


Izvršavanje SQL iskaza (ORACLE server)

Ak.god. 2014/2015. BAZE PODATAKA 97


DDL naredbe
Kreiranje tablica

Ak.god. 2014/2015. BAZE PODATAKA 98


Kreiranje tablica

Ak.god. 2014/2015. BAZE PODATAKA 99


SQL – Kreiranje i brisanje tablica

Kreiranje tablice:

CREATE TABLE ime_tablice


(ime_stupca tip (veličina) (ograničenje),
ime_stupca tip (veličina) (ograničenje),
ime_stupca tip (veličina) (ograničenje),
...);

Brisanje tablice:

DROP TABLE ime_tablice;

Ak.god. 2014/2015. BAZE PODATAKA 100


Ograniĉenja nad stupcima tablice i nad tablicama ...

• NULL/NOT NULL

• UNIQUE

• PRIMARY KEY

• FOREIGN KEY

• CHECK

Ak.god. 2014/2015. BAZE PODATAKA 101


Tipovi podataka (ORACLE)

• VARCHAR2(size)

• CHAR[(size)]

• NUMBER[(p,s)]

• DATE

Ak.god. 2014/2015. BAZE PODATAKA 102


Tipovi podataka
Veliki objekti

Ak.god. 2014/2015. BAZE PODATAKA 103


PRIMJER – Relacijski model

Ak.god. 2014/2015. BAZE PODATAKA 104


SQL – Kreiranje tablica

CREATE TABLE MJESTO


( PBR NUMBER(10) NOT NULL,
NAZIV VARCHAR2(40) NOT NULL,
CONSTRAINT mjesto_pk PRIMARY KEY(PBR)
);

Ak.god. 2014/2015. BAZE PODATAKA 105


SQL – Kreiranje tablica

CREATE TABLE OSOBA


( MBR NUMBER(10) NOT NULL,
IME VARCHAR2(25) NOT NULL,
PREZIME VARCHAR2(25) NOT NULL,
EMAIL VARCHAR2(40),
PBR NUMBER(10) NOT NULL,
CONSTRAINT osoba_pk PRIMARY KEY(MBR),
CONSTRAINT osoba_mjesto_fk FOREIGN KEY(PBR)
REFERENCES MJESTO(PBR)
);

Ak.god. 2014/2015. BAZE PODATAKA 106


SQL – Izmjena definicije tablice

ALTER TABLE
 dodavanje novih atributa
 modificiranje postojećih atributa
 definiranje default-ne vrijednosti za novi atribut
 brisanje atributa

Ak.god. 2014/2015. BAZE PODATAKA 107


SQL – ALTER TABLE

Primjeri:

 ALTER TABLE osoba


DROP COLUMN email;

 ALTER TABLE osoba


ADD (email VARCHAR2(25));

 ALTER TABLE mjesto


MODIFY (naziv VARCHAR2(50));

Ak.god. 2014/2015. BAZE PODATAKA 108


DML naredbe
SELECT, INSERT, UPDATE, DELETE

Ak.god. 2014/2015. BAZE PODATAKA 109


Najĉešće korišteni DML izrazi

 SELECT - Pretraţivanje podataka

 INSERT - Upisivanje novih podataka

 UPDATE - Promjena vrijednosti podataka

 DELETE - Brisanje postojećih podataka

Ak.god. 2014/2015. BAZE PODATAKA 110


INSERT – Unos podataka u tablicu

• INSERT INTO ime_tablice (stupac, stupac,…)


VALUES (vrijednost, vrijednost, …);

Primjeri:

• INSERT INTO osoba (mbr, ime, prezime, email)


VALUES (1, 'Ivo', 'Ivic', 'ivo@yahoo.com');

• INSERT INTO osoba


VALUES (1, 'Ivo', 'Ivic', 'ivo@yahoo.com');

Ak.god. 2014/2015. BAZE PODATAKA 111


INSERT – Unos podataka u tablicu

• INSERT se može koristiti i za kopiranje podataka


iz druge tablice.

Primjer:

• INSERT INTO osoba_2 (mbr, ime, prezime, email)


SELECT mbr, ime, prezime, email
FROM osoba;

Ak.god. 2014/2015. BAZE PODATAKA 112


UPDATE – Aţuriranje podataka u tablici

• UPDATE ime_tablice [alias] SET


stupac [,stupac…] = {iskaz, podupit}
[WHERE uvjet];

Primjer:

• UPDATE osoba SET email='ivo_ivic@net.hr'


WHERE mbr=1;

Ak.god. 2014/2015. BAZE PODATAKA 113


DELETE – Brisanje podataka u tablici

• DELETE FROM ime_tablice


[WHERE uvjet];

Primjer:

• DELETE FROM osoba


WHERE mbr=2;

Ak.god. 2014/2015. BAZE PODATAKA 114


SELECT – Selektiranje podataka iz tablice

• SELECT stupac, stupac, stupac, …


FROM ime_tablice
[WHERE uvjet];

Primjeri:

• SELECT mbr, ime, prezime, email


FROM osoba;

• SELECT * FROM osoba;

Ak.god. 2014/2015. BAZE PODATAKA 115


INSERT – Primjeri

• INSERT INTO mjesto (pbr, naziv)


VALUES (88000, 'Mostar');

• INSERT INTO mjesto (pbr, naziv)


VALUES (88220, 'Široki Brijeg');

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)


VALUES (1, 'Ivo', 'Ivic', 'ivo@net.hr', 88000);

• INSERT INTO osoba (mbr, ime, prezime, pbr)


VALUES (2, 'Mate', 'Matic', 88220);

Ak.god. 2014/2015. BAZE PODATAKA 116


INSERT – Primjeri

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)


VALUES (2, 'Pero', 'Peric', 'pero@yahoo.com', 88000);
→ ORA-00001: unique constraint (PC-1.OSOBA_PK) violated

• INSERT INTO osoba (mbr, ime, prezime, email, pbr)


VALUES (3, 'Pero', 'Peric', 'pero@yahoo.com', 90000);
→ ORA-02291: integrity constraint (PC-1.OSOBA_MJESTO_FK)
violated - parent key not found

• INSERT INTO osoba (mbr, ime, email, pbr)


VALUES (3, 'Pero', 'pero@yahoo.com', 88000);
→ ORA-01400: cannot insert NULL into ("OSOBA"."PREZIME")

Ak.god. 2014/2015. BAZE PODATAKA 117


UPDATE – Primjeri

• UPDATE mjesto SET pbr=10000


WHERE naziv='Mostar';
→ ORA-02292: integrity constraint (PC-1.OSOBA_MJESTO_FK)
violated - child record found

• UPDATE mjesto SET naziv='Š.Brijeg'


WHERE pbr=88220;

• UPDATE osoba SET email='mate.matic@tel.net.ba'


WHERE mbr=2;

Ak.god. 2014/2015. BAZE PODATAKA 118


DELETE – Primjeri

• DELETE FROM mjesto


WHERE pbr=88000;
→ ORA-02292: integrity constraint (PC-1.OSOBA_MJESTO_FK)
violated - child record found

• DELETE FROM osoba


WHERE mbr=1;

• DELETE FROM mjesto


WHERE pbr=88000;

Ak.god. 2014/2015. BAZE PODATAKA 119


Sigurnost baze podataka

Ak.god. 2014/2015. BAZE PODATAKA 120


Sigurnost i integritet

• Sigurnost baze podataka se brine da samo ovlašteni korisnici


pristupaju podacima

• Integritet baze podataka se brine da ovlašteni korisnici


koriste podatke na ispravan način

Integritet:
̶ korektnost (dopuštene zdravorazumske vrijednosti podataka)
̶ konzistencija (meĎusobna suglasnost podataka)

Ak.god. 2014/2015. BAZE PODATAKA 121


Korisnici i sigurnost

Ak.god. 2014/2015. BAZE PODATAKA 122


Korisnici i sigurnost

• CREATE USER pero IDENTIFIED BY pero;

• CONNECT pero/pero;

• ALTER USER pero IDENTIFIED BY pero1;

Ak.god. 2014/2015. BAZE PODATAKA 123


Sistemske privilegije

• više od 100 sistemskih privilegija

• Tipiĉne DBA privilegije:


– CREATE USER
– DROP USER
– DROP ANY TABLE
– BACKUP ANY TABLE
– SELECT ANY TABLE
– CREATE ANY TABLE

Ak.god. 2014/2015. BAZE PODATAKA 124


Sistemske privilegije

• Osnovna sintaksa za dodjeljivanje sistemskih privilegija:

GRANT sistemske_privilegije
TO korisnik | uloga | PUBLIC
[WITH ADMIN OPTION]

• Osnovna sintaksa za ukidanje sistemskih privilegija:

REVOKE sistemske_privilegije
FROM korisnik | uloga | PUBLIC

Ak.god. 2014/2015. BAZE PODATAKA 125


Sistemske privilegije

Primjeri:

• GRANT create session, create table,


create sequence, create view
TO pero;

• REVOKE create view


FROM pero;

Ak.god. 2014/2015. BAZE PODATAKA 126


Uloga (Role)

Korisnici

Uloga

Privilegije

Dodjeljivanje privilegija korisnicima Dodjeljivanje privilegija korisnicima


bez definirane uloge nakon definiranja uloge

Ak.god. 2014/2015. BAZE PODATAKA 127


Uloga (Role)

• CREATE ROLE uloga_1 IDENTIFIED BY uloga_1;

• GRANT create session, create table, create view


TO uloga_1;

• GRANT uloga_1
TO pero;

Ak.god. 2014/2015. BAZE PODATAKA 128


Objektne privilegije

Najčešće korištene objektne privilegije su:

• SELECT – tablice, pogledi, sekvence


• INSERT, UPDATE, DELETE – tablice, pogledi
• INDEX, REFERENCES – tablice
• ALTER – tablice, sekvence
• EXECUTE – procedure
• ALL, ALL PRIVILEGES

Ak.god. 2014/2015. BAZE PODATAKA 129


Objektne privilegije

• Osnovna sintaksa za dodjeljivanje objektnih privilegija:


GRANT objektne_privilegije
ON ime_objekta
TO korisnik | uloga | PUBLIC
[WITH GRANT OPTION]

• Osnovna sintaksa za ukidanje objektnih privilegija:


REVOKE objektne_privilegije
ON ime_objekta
FROM korisnik | uloga | PUBLIC

Ak.god. 2014/2015. BAZE PODATAKA 130


Objektne privilegije

Primjer:

• GRANT select, insert


ON osoba
TO pero, mate
WITH GRANT OPTION;

• GRANT select
ON mjesto
TO PUBLIC;

Ak.god. 2014/2015. BAZE PODATAKA 131


Upravljanje transakcijama

Ak.god. 2014/2015. BAZE PODATAKA 132


Upravljanje transakcijama

• Pod transakcijom se podrazumijeva aktivnost ili niz


aktivnosti koje izvršava jedan korisnik ili aplikacijski
program, a koja ĉita ili aţurira sadrţaj baze podataka.

• To je logička radna jedinica baze podataka

• Transakcija se logički mora provesti kao nedjeljiva cjelina


̶ svaka transakcija unosi promjenu u bazi
̶ pojedinačne operacije unutar transakcije nisu bitne same za
sebe

Ak.god. 2014/2015. BAZE PODATAKA 133


Upravljanje transakcijama

500 KM

Raĉun 1 Raĉun 2

5.000 KM 1.000 KM

1) UPDATE racun SET saldo=saldo-500


WHERE id_racuna=1;
2) UPDATE racun SET saldo=saldo+500
WHERE id_racuna=2;

Transakcija se mora izvršiti u potpunosti (u gornjem sluĉaju obe


UPDATE naredbe) ili nikako – “SVE ili NIŠTA”

Ak.god. 2014/2015. BAZE PODATAKA 134


Osobine transakcija

Tzv. ACID osobine transakcija:

• Atomicity – „sve ili ništa‟ (transakcije nije moguće samo


djelomično izvršiti)

• Consistency – transakcija mora transformirati bazu iz jednog


konzistentnog stanja u drugo

• Isolation – učinak transakcije postaje vidljiv drugim transakcijama


tek nakon završetka transakcije promatrajući izvana transakcija može
biti ili izvedena ili ne

• Durability – rezultat uspješno završenih (potvrĎenih) transakcija


se trajno bilježi u bazu podataka i ne smije se izgubiti zbog
naknadnih grešaka (čak ni u slučaju pada sustava)

Ak.god. 2014/2015. BAZE PODATAKA 135


Upravljanje transakcijama (ORACLE)

• 2 tipa transakcija:
o DDL – sadrži jedan DDL iskaz
o DML – sadrži jedan ili više DML iskaza

• Transakcija zapoĉinje kada je:


o DDL naredba izdana
o Pokrenut prvi DML iskaz nakon COMMIT-a

• Transakcija se moţe završiti na sljedeći naĉin:


o COMMIT iskazom – potvrdi sve izmjene
o ROLLBACK iskazom – poništi sve izmjene
o DDL iskazom → automatski COMMIT
o Padom sustava → automatski ROLLBACK

Ak.god. 2014/2015. BAZE PODATAKA 136


Upravljanje transakcijama
Primjer

Vrijeme Sesija 1 Sesija 2

SELECT placa FROM djelatnik


t1 WHERE id_djelatnika=1;
UPDATE djelatnik
2000 SET placa=placa+1000
t2 WHERE id_djelatnika=1;

t3 SELECT placa FROM djelatnik SELECT placa FROM djelatnik


WHERE id_djelatnika=1; WHERE id_djelatnika=1;
2000 3000
t4 COMMIT;

t5 SELECT placa FROM djelatnik SELECT placa FROM djelatnik


WHERE id_djelatnika=1; WHERE id_djelatnika=1;
3000 3000

Ak.god. 2014/2015. BAZE PODATAKA 137


Upravljanje transakcijama
Primjer

Vrijeme Sesija 1 Sesija 2

SELECT placa FROM djelatnik


t1 WHERE id_djelatnika=1;
UPDATE djelatnik
2000 SET placa=placa+1000
t2 WHERE id_djelatnika=1;

t3 SELECT placa FROM djelatnik SELECT placa FROM djelatnik


WHERE id_djelatnika=1; WHERE id_djelatnika=1;
2000 3000
t4 ROLLBACK;

t5 SELECT placa FROM djelatnik SELECT placa FROM djelatnik


WHERE id_djelatnika=1; WHERE id_djelatnika=1;
2000 2000

Ak.god. 2014/2015. BAZE PODATAKA 138


Tehnike kontrole konkurentnosti

Konzervativne (pesimistiĉne) tehnike


• uzrokuju odgaĎanje transakcija u slučaju da će biti u konfliktu
s drugim transakcijama u budućnosti

-> Zakljuĉavanje (locking)

Optimistiĉne tehnike
• bazirane na pretpostavci da su konflikti rijetki tako da
dozvoljavaju transakcijama da nastave i nesinkronizirane
• provjeravaju konflikt na kraju (kada se transakcija potvrĎuje)

Ak.god. 2014/2015. BAZE PODATAKA 139


Zakljuĉavanje (locking)

Dijeljeno zakljuĉavanje (shared lock, read lock)


̶ Kljuĉ za ĉitanje – npr. transakcija SQL naredbom SELECT zaključa
objekt za čitanje.
̶ Bilo koja druga transakcija taj objekt moţe zakljuĉati za ĉitanje,
ali ga niti jedna transakcija ne moţe zakljuĉati za pisanje.

Ekskluzivno zakljuĉavanje (exclusive lock, write lock)


̶ Kljuĉ za pisanje – npr. transakcija SQL naredbom (INSERT,
UPDATE ili DELETE) zaključa objekt za pisanje.
̶ Niti jedna transakcija taj objekt ne moţe zakljuĉati niti za
ĉitanje niti za pisanje, dok ga transakcija u kojoj je izvršeno
zaključavanje ne otključa.

Ak.god. 2014/2015. BAZE PODATAKA 140


Zakljuĉavanje (locking)

Proces1 – postavio ključ na objekt

Proces2 – pokušava postaviti ključ na isti objekt kao i Proces1

Ak.god. 2014/2015. BAZE PODATAKA 141


Zakljuĉavanje (locking)

Protokol dvofaznog zakljuĉavanja


Two-phase locking protocol (2PL)
1) prije obavljanja operacije nad objektom (npr. n-torkom iz baze),
transakcija mora za taj objekt zatražiti ključ
2) nakon otpuštanja ključa, transakcija ne smije više zatražiti
nikakav ključ

Transakcije koje poštuju 2PL protokol imaju 2 faze:

1) fazu pribavljanja ključeva (faza rasta - growing phase)


2) fazu otpuštanja ključeva (fazu suţavanja - shrinking phase)
-> COMMIT ili ROLLBACK na kraju transakcije

Ak.god. 2014/2015. BAZE PODATAKA 142


Zakljuĉavanje (locking)

• Svojstvo nesmetanog konkurentnog (višekorisničkog) izvoĎenja


transakcija naziva se serijalizabilnost.

• Serijalizabilnost (serializability) redoslijeda izvršavanja


transakcija je osigurana ako sve transakcije poštuju protokol
dvofaznog zaključavanja (2PL).

Ak.god. 2014/2015. BAZE PODATAKA 143


Razine izolacije (isolation levels)

• Kod zapisivanja se uvijek traži ekskluzivno zaključavanje koje se


zadržava do kraja transakcije.

• Kod ĉitanja možemo imati različite načine zaključavanja:

o read uncommitted
čitanje bez zaključavanja;
o read committed
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
otključava zapise odmah nakon što su pročitani;
o repeatable read
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
podaci ostaju zaključani do kraja transakcije;

Ak.god. 2014/2015. BAZE PODATAKA 144


Granulacija zakljuĉavanja

• Granulacija je odreĎena veličinom objekta koji se zaključava:


o n-torka, stranica (fizički blok na kojem su zapisi pohranjeni),
tablica ili baza podataka.

Ak.god. 2014/2015. BAZE PODATAKA 145


Mrtva toĉka (deadlock)

• Mrtva toĉka (deadlock) nastaje kada dvije (ili više)


transakcija, obje (sve) čekaju da se otpusti zaključavanje koje
drži druga transakcija.

Ak.god. 2014/2015. BAZE PODATAKA 146


Deadlock
Primjer

Vrijeme Sesija 1 Sesija 2

UPDATE djelatnik
t1 SET placa=placa+1000
WHERE id_djelatnika=1; UPDATE djelatnik
t2 SET placa=placa-500
WHERE id_djelatnika=2;
UPDATE djelatnik
t3 SET placa=placa-500
WHERE id_djelatnika=2;
UPDATE djelatnik
t4 SET placa=placa+1000
WHERE id_djelatnika=1;
t5 → ORA-00060: deadlock detected while waiting for resource

Ak.god. 2014/2015. BAZE PODATAKA 147


Upravljanje transakcijama i zakljuĉavanje

• Stanje sustava prije COMMIT ili ROLLBACK naredbe:


– moguće je vratiti sustav u stanje prije izvršavanja naredbi iz
transakcije
– korisnik koji radi izmjene podataka kroz transakciju može
vidjeti efekte tih izmjena (npr. izvršavanjem SELECT iskaza)
– ostali korisnici ne mogu vidjeti efekte navedenih izmjena

Zakljuĉavanje:
– n-torke nad kojima se rade izmjene kroz transakciju (INSERT,
UPDATE, DELETE) automatski se zaključavaju i ostali korisnici
ih ne mogu mijenjati
Napomena: Npr. u Oracle sustavu implicitno zakljuĉavanje
će se desiti za sve SQL iskaze osim SELECT-a

Ak.god. 2014/2015. BAZE PODATAKA 148


Upravljanje transakcijama i zakljuĉavanje

• Stanje sustava nakon izvršavanja COMMIT naredbe:


– izmjene podataka u bazi postaju trajne
– sustav se više ne može vratiti u stanje prije izvršavanja
naredbi iz transakcije
– svi korisnici mogu vidjeti efekte izmjena učinjenih kroz
transakciju

Zakljuĉavanje:
– n-torke nad kojima su vršene izmjene kroz transakciju
nisu više zaključane i navedene n-torke postaju dostupne
za izmjenu i drugim korisnicima

Ak.god. 2014/2015. BAZE PODATAKA 149


Upravljanje transakcijama i zakljuĉavanje

• Stanje sustava nakon izvršavanja ROLLBACK naredbe:


– izmjene podataka u bazi se poništavaju
– sustav se vraća u stanje prije izvršavanja naredbi iz
transakcije

Zakljuĉavanje:
– n-torke koje su bile implicitno zaključane kroz transakciju
nisu više zaključane te postaju dostupne za izmjenu i drugim
korisnicima

Ak.god. 2014/2015. BAZE PODATAKA 150


Objekti u bazi podataka
TABLE, VIEW, INDEX, SEQUENCE, SYNONYM,
STORED PROCEDURE, TRIGGER

Ak.god. 2014/2015. BAZE PODATAKA 151


Objekti u bazi podataka

• TABLE – Tablica
• VIEW – Pogled
• INDEX – Indeks
• SEQUENCE – Sekvenca
(Oracle)

• SYNONYM – Sinonim
• STORED PROCEDURE – Pohranjena procedura
• TRIGGER – Okidač

Ak.god. 2014/2015. BAZE PODATAKA 152


Pogled (VIEW)

Što je pogled?
o “prozor” u podatke
o podaci se izvode, ne posjeduju
o pohranjuje se kao SELECT izraz u rječnik podataka

Uporaba pogleda
o za ograničenje pristupa podacima
o za pojednostavljenje složenih upita
o za omogućavanje neovisnosti podataka
o za prikaz različitih pogleda na iste podatke

Ak.god. 2014/2015. BAZE PODATAKA 153


Pogled (VIEW)

Ak.god. 2014/2015. BAZE PODATAKA 154


Pogled (VIEW)

Jednostavni pogled
o podaci su iz jedne tablice
o ne sadrži funkcije ili grupe
o može izvršiti DML

Sloţeni pogled
o podaci su iz više tablica
o sadrži funkcije ili grupe
o ne može izvršiti DML

Ak.god. 2014/2015. BAZE PODATAKA 155


Kreiranje pogleda (VIEW)

CREATE OR REPLACE VIEW djelatnik_imenik


AS
SELECT id_djelatnika, ime, prezime, email, telefon
FROM djelatnik;

CREATE VIEW radno_mj_stat (radmj,minplac,maxplac,prosjek)


AS
SELECT rm.naziv_radmj, min(placa), max(placa), avg(placa)
FROM djelatnik d, radno_mjesto rm
WHERE d.sifra_radmj=rm.sifra_radmj
GROUP BY rm.naziv_radmj;

Ak.god. 2014/2015. BAZE PODATAKA 156


Brisanje pogleda (VIEW)

• Pogled možete izbrisati bez ikakvog gubitka podataka


jer je pogled (view) baziran na tablicama u bazi.
• Brisanje pogleda nema nikakvog utjecaja na te tablice i
podatke u njima.

DROP VIEW ime_pogleda

Ak.god. 2014/2015. BAZE PODATAKA 157


Indeks (INDEX)

o Brzina pristupa podacima u relaciji je važno svojstvo sustava za


upravljanje podacima. Najjednostavniji način pristupa,
sekvencijalna pretraga, u većini slučajeva ne zadovoljava.

o Kreiranjem indeksa formira se struktura B-stabla koja omogućava


nesekvencijalni pristup do n-torke u relaciji. Nesekvencijalni
pristup moguć je prema vrijednostima onih atributa nad kojima je
izgraĎena indeksna struktura.

o Nad jednom relacijom može biti izgraĎeno više indeksa, od kojih


svaki može sadržavati jedan ili više atributa.

o Osim radi poboljšanja performansi sustava, indeksi se kreiraju i


radi osiguranja jedinstvenosti vrijednosti atributa u relaciji.

Ak.god. 2014/2015. BAZE PODATAKA 158


Kreiranje indeksa (INDEX)

AUTOMATSKI
• UNIQUE INDEX se automatski kreira kada se definira
PRIMARY KEY ili UNIQUE CONSTRAINT u definiciji
tablice.

RUĈNO
• Korisnik može ručno dodati indeks na neki drugi atribut
(radi ubrzanja pristupa podacima).

Primjer:
• CREATE INDEX djelatnik_prez_idx
ON djelatnik(prezime);

Ak.god. 2014/2015. BAZE PODATAKA 159


Indeks (INDEX)

Indekse bi u principu trebalo primjenjivati u


sljedećim sluĉajevima:

• za atribute prema kojima se obavlja spajanje relacija


• za atribute koji se često koriste za postavljanje uvjeta
selekcije
• za atribute prema kojima se često obavlja grupiranje
ili sortiranje

Ak.god. 2014/2015. BAZE PODATAKA 160


Indeks (INDEX)

Prilikom kreiranja indeksa treba voditi raĉuna i o


nekim njihovim negativnim aspektima, te ih treba
koristiti samo tamo gdje je njihova uporaba
opravdana.

• Indeksi zauzimaju značajan prostor


• Ažuriranje vrijednosti atributa nad kojima je izgraĎen
indeks traje znatno dulje nego ažuriranje vrijednosti nad
kojima nema indeksa (ovdje treba razlikovati atribute
prema kojima se pronalaze n-torke koje treba ažurirati,
od atributa čije se vrijednosti ažuriraju)

Ak.god. 2014/2015. BAZE PODATAKA 161


Indeks (INDEX)

Indekse ne bi trebalo primjenjivati ukoliko:

• vrijednosti atributa za kojeg se gradi indeks imaju relativno


mali broj različitih vrijednosti (npr. spol_osobe s dopuštenim
vrijednostima M, Ţ, u relaciji s 30 000 n-torki)
• u relaciji predstoji velik broj upisa, izmjena ili brisanja n-torki.
Preporučljivo je u takvim slučajevima postojeće indekse
izbrisati, te ih ponovo izgraditi tek nakon obavljenih promjena
na podacima.
• relacija sadrži vrlo mali broj n-torki (npr. do stotinu). U takvim
slučajevima sustav lakše pristupa sekvencijalnom pretragom,
nego prolaskom kroz strukturu B-stabla.

Ak.god. 2014/2015. BAZE PODATAKA 162


Primarni kljuĉ (PK) – Automatsko generiranje vrijednosti

• Oracle –> SEQUENCE, IDENTITY (od v.12c)

• MS SQL Server –> IDENTITY

• MS Access –> AUTONUMBER

• MySQL –> AUTO_INCREMENT

• PostgreSQL –> SERIAL, BIGSERIAL

• ...

Ak.god. 2014/2015. BAZE PODATAKA 163


Sekvenca (SEQUENCE)

Primjer:

Sekvenca (Oracle)

o automatski generira jedinstveni broj


o najčešće se koristi za dodijeljivanje vrijednosti PK
(PRIMARNOM KLJUČU)
o sekvenci može pristupati više korisnika

Ak.god. 2014/2015. BAZE PODATAKA 164


Sekvenca (SEQUENCE)

• CREATE SEQUENCE odjel_sifra_seq


INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCACHE
NOCYCLE;

Ak.god. 2014/2015. BAZE PODATAKA 165


Sekvenca (SEQUENCE)

• INSERT INTO odjel (sifra_odjela, naziv_odjela)


VALUES (odjel_sifra_seq.NEXTVAL, 'Strategija i razvoj');

• SELECT odjel_sifra_seq.CURRVAL
FROM dual;

Ak.god. 2014/2015. BAZE PODATAKA 166


Sinonim (SYNONYM)

Sinonim (Synonym) je drugi naziv za objekt


koristan kod referenciranja na objekte drugih korisnika.

Primjer:
CREATE [PUBLIC] SYNONYM ime_sinonima
FOR [vlasnik.]ime_objekta;

CREATE SYNONYM djelatnik


FOR fsr.djelatnik;

Ak.god. 2014/2015. BAZE PODATAKA 167


Pohranjena procedura (STORED PROCEDURE)

• Pohranjena procedura ili pohranjena funkcija je


potprogram koji je pohranjen u rječniku podataka i koji se
izvršava u kontekstu sustava za upravljanje bazama podataka.
• Može se promatrati kao procedura ili funkcija kojom se proširuje
skup SQL funkcija ugraĎenih u SUBP.

o Pohranjena procedura je potprogram koji u pozivajući


program ne vraća rezultat.

o Funkcija je potprogram koji u pozivajući program vraća


rezultat.

Ak.god. 2014/2015. BAZE PODATAKA 168


Pohranjena procedura (STORED PROCEDURE)

• ProizvoĎači SUBP koriste vlastite inačice jezika za definiranje


pohranjenih procedura (standard postoji, ali je rijetko gdje
implementiran)
o Oracle: PL/SQL
PL/SQL (Procedural Language / Structured Query Language)
o Microsoft SQL Server: T-SQL
T-SQL (Transact-SQL)

• Navedeni jezici proširuju mogućnosti SQL jezika proceduralnim


elementima koji se koriste u strukturiranim jezicima (C, Java, ...).
Osim SQL naredbi, pohranjene procedure omogućuju korištenje:
o varijabli
o naredbi za kontrolu toka programa (if, for, while, ...)
o naredbi za rukovanje iznimkama (exception handling)

Ak.god. 2014/2015. BAZE PODATAKA 169


Pohranjena procedura (STORED PROCEDURE)

• Upotrebom pohranjenih procedura omogućena je zaštita


podataka na razini funkcije (a ne samo objekta).
• Osnovna sintaksa za dodjeljivanje dozvole za izvršavanje procedure:
GRANT EXECUTE
ON { ime_procedure | ime_funkcije }
TO { korisnici | uloge | PUBLIC }
[ WITH GRANT OPTION ]

• Osnovna sintaksa za ukidanje dozvole za izvršavanje procedure:

REVOKE EXECUTE
ON { ime_procedure | ime_funkcije }
FROM { korisnici | uloge | PUBLIC }
[ CASCADE | RESTRICT ]

Ak.god. 2014/2015. BAZE PODATAKA 170


Pohranjena procedura (STORED PROCEDURE)

• Upotrebom pohranjenih procedura omogućena je


upotreba klijent-server arhitekture oslonjene na server.

o postiže se veća učinkovitost (efikasnost) SUBP


(SUBP ne mora ponavljati prevoĎenje i optimiranje SQL upita)

o postiže se veća produktivnost programera i smanjuje se


mogućnost pogreške
(Programski kôd potreban za obavljanje nekog postupka koji
čini logičku cjelinu implementira se i testira na samo jednom
mjestu)

Ak.god. 2014/2015. BAZE PODATAKA 171


Primjer (klijent-server arhitektura oslonjena na klijenta)

Primjer: Prebacivanje iznosa s jednog raĉuna na drugi


Prvo se provjerava postoje li zadani brojevi računa i ako postoje, prebacuje se iznos
(od 500 KM) s jednog računa na drugi.

1) SELECT COUNT (*) FROM racun


WHERE id_racuna=1;
2) SELECT COUNT (*) FROM racun
WHERE id_racuna=2;
3) UPDATE racun SET saldo=saldo-500
WHERE id_racuna=1;
4) UPDATE racun SET saldo=saldo+500
WHERE id_racuna=2;

Ak.god. 2014/2015. BAZE PODATAKA 172


Primjer (klijent-server arhitektura oslonjena na server)

Primjer: Prebacivanje iznosa s jednog raĉuna na drugi


Prvo se provjerava postoje li zadani brojevi računa i ako postoje, prebacuje se iznos
(od 500 KM) s jednog računa na drugi (rješenje s korištenjem pohranjene procedure).

EXECUTE PROCEDURE
prebaci (1, 2, 500);

CREATE PROCEDURE prebaci (...)


DEFINE ...
SELECT ...
SELECT ...
UPDATE ...
UPDATE ...
END PROCEDURE;

Ak.god. 2014/2015. BAZE PODATAKA 173


Primjer (klijent-server arhitektura oslonjena na klijent / server)

Ak.god. 2014/2015. BAZE PODATAKA 174


Okidaĉ (TRIGGER)

“Pasivni” SUBP
• konvencionalni SUBP je pasivan
• operacije nad podacima se izvršavaju isključivo na temelju
eksplicitnog zahtjeva korisnika / aplikacije

“Aktivni” SUBP i “aktivne” baze podataka


• aktivni SUBP autonomno reagira na odreĎene dogaĎaje (events)
• u aktivnim bazama podataka neke operacije nad podacima se
izvršavaju automatski, reakcijom na odreĎeni dogaĎaj ili stanje

Ak.god. 2014/2015. BAZE PODATAKA 175


Okidaĉ (TRIGGER)

• SUBP – definiranje aktivnih pravila (active rules)


• DogaĊaj-Uvjet-Akcija (ECA: Event-Condition-Action)
→ Okidaĉi (triggers)

ON event IF condition THEN action

o dogaĊaj (event): ako se dogodi, izračunava se uvjet


(npr. unos - INSERT, izmjena - UPDATE ili brisanje - DELETE podataka)
o uvjet (condition): ako je rezultat izračunavanja uvjeta istina,
obavljaju se akcije
o akcije (action): niz operacija, najčešće operacije nad
podacima

Ak.god. 2014/2015. BAZE PODATAKA 176


Okidaĉ (TRIGGER)

• Okidaĉi (trigeri) se izvršavaju automatski kod izvršavanja akcijskih


SQL upita (INSERT, UPDATE, DELETE) nad pojedinim tablicama u
bazi podataka.

Ak.god. 2014/2015. BAZE PODATAKA 177


Okidaĉ (TRIGGER)

• Pri definiciji okidača moguće je specificirati koje akcije (operacije)


aktiviraju okidač (triger):
INSERT, UPDATE, DELETE
• TakoĎer, pri definiciji okidača moguće je specificirati da li se akcije
navedene u samom okidaču obavljaju:
o nakon što se obavi operacija koja je aktivirala okidač
AFTER INSERT, AFTER UPDATE, AFTER DELETE
o prije nego se obavi operacija koja je aktivirala okidač
BEFORE INSERT, BEFORE UPDATE, BEFORE DELETE
o te da li se akcije u okidaču obavljaju jednom za svaku n-torku
na koju je djelovala operacija koja je aktivirala okidač
FOR EACH ROW

Ak.god. 2014/2015. BAZE PODATAKA 178


Okidaĉ (TRIGGER)

• Primjeri primjene okidaĉa (trigera):

o evidentiranje (logiranje) promjena nad podacima,


o implementacija integritetskih ograničenja,
o ažuriranje izvedenih atributa (npr. saldo računa),
o praćenje rada korisnika (logiranje pristupa bazi ...),
o sustavi obavještavanja,
o itd.

Ak.god. 2014/2015. BAZE PODATAKA 179


Baze podataka

Web:
http://www.fsr.ba/~goran

Pitanja, primjedbe, dogovor za konzultacije ...

o E-mail: goran.kraljevic@hteronet.ba
goran.kraljevic@sve-mo.ba

Ak.god. 2014/2015. BAZE PODATAKA 180

You might also like