Professional Documents
Culture Documents
US - Uvod U Baze Podataka
US - Uvod U Baze Podataka
P(X)
(r) = t(X) = {x | xer . P(X)}
Operacija restrikcije kao rezultat moe da da prazan skup C n-torki.
Uslov restrikcije P se sastoji iz lanova koji su povezani sa:
. (and),
v (or),
(not),
a svaki lan je u formi
<atribut> op <atribut> ili <konstanta>
gde je op jedan od: =, , >, , <,
Relaciona algebra 107
P .
Selekcija studenta sa brojem indeksa 125/2004 iz klase studenata:
BrInd=125/2004
(student) = t (BrInd, Ime, Prezime, Adresa, Telefon)
kao rezultat daje podatke samo za studenta sa BrInd=125/2004.
P .
Iz relacije r(A;B;C;D):
A B C D
1 7
5 7
12 3
23 10
nakon operacije
A=B ^ D > 5
(r) dobija se
A B C D
1 7
23 10
12.2. Projekcija -
Projekcija (eng: project) kao rezultat daje relaciju koja se sastoji samo od
odreenih atributa zadate relacije (izdvajanje kolona u tabeli).
Denicija: iz polazne relacije po zadatom skupu atributa formira se nova
relacija kao skup n-torki nad tim atributima. Zadati skup atributa mora biti pod-
skup skupa atributa polazne relacije. Vrednosti atributa u n-torkama nastale rela-
cije odgovaraju onima u polaznoj relaciji.
108 Relaciona algebra
Ako je r relacija nad emom R(X), Y zadati skup atributa, a x i y n-torke nad
X i Y, formalna denicija restrikcije je:
Y
(r) = t(Y) = {t | Y_X . yex}
Primenom operacije projekcije mogue je da vie n-torki polazne relacije
daje iste vrednosti. Poto rezultat operacije mora biti relacija, uzima se samo jedna
rezultantna relacija
P .
Projekcija relacije student po atributima BrInd, Ime i Prezime:
BrInd, Ime, Prezime
(student) = t (BrInd, Ime, Prezime)
kao rezultat daje relaciju koja sadri samo podatke BrInd, Ime i Prezime. Kako je
BrInd primarni klju relacije r ne smanjuje se broj n-torki u novonastaloj relaciji.
Projekcija samo po Imenu ili Prezimenu moe da dovede do smanjenja broja n-
torki u novonastaloj relaciji, kao i do gubitka podataka za studente sa istim ime-
nom ili prezimenom.
P 2.
Iz relacije r(A;B;C;D):
A B C
10 1
20 1
30 1
40 2
Nakon primene operacije projekcije
A,C
(r) dobija se t
1
(A,C)
A C
1
1
1
2
Relaciona algebra 109
a zbog uslova identikacionog integriteta krajnji rezultat je t
2
(A,C)
A C
1
1
2
Za razliku od restrikcije, rezultirajue n-torke nemaju sve atribute koje ima
originalna relacija, ve samo one po kojima se izvodi projekcija.
12.3. Unija -
Rezultat unije dve relacije je relacija koja se sastoji od svih n-torki koje se
nalaze i u jednoj i u drugoj relaciji.
Denicija: Unija je operacija relacione algebre kojom se iz dve polazne rela-
cije formira novu koja sadri sve n-torke iz obe relacije. Ova operacija nije mogua
izmeu bilo koje dve relacije, tj. mora biti zadovoljeno:
eme relacija moraju imati isti broj atributa
Atributi ema relacija redom odgovaraju po znaenju i tipu (ne mora po
nazivu)
Navedeni uslovi se nazivaju unijska kompatibilnost
Ako su r i s relacije nad emom R(X) i S(X), gde X oznaava unijski kompa-
tibilan skup atributa u obe relacije, formalna denicija unije je:
r s = t(X) = {x | xer v xes}.
Svaka n-torka koja je prisutna u obe relacije pojavljuje se samo jednom u
rezultantnoj.
P 1.
Za unijski kompatibilne relacije r i s
110 Relaciona algebra
r s
A B A B
1 2
2 3
1
nakon operacije r s dobija se sledea relacija
A B
1
2
1
3
P 2.
Unijom relacija A i B
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
1772 Maksimovi Ilija 015 723 543
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
2345 Petrovi Petar 023 47 833
Dobija se relacija C = A B
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
1772 Maksimovi Ilija 015 723 543
2345 Petrovi Petar 023 47 833
Relaciona algebra 111
12.4. Razlika - /
Rezultat razlike (eng: dierence) - dve relacije je relacija koja se sastoji od
svih n-torki koje se nalaze u prvoj i ne nalaze u drugoj relaciji, tj. iz prve relacije se
iskljuuju sve n-torke zajednike s drugom relacijom.
Denicija: iz dve polazne relacije formira se nova koja sadri sve n-torke
prve relacije koje se ne nalaze u drugoj. Ova operacija je mogua samo izmeu
unijski kompatibilnih relacija.
Ako su r i s relacije nad emom R(X) i S(X), X oznaava unijski
kompatibilan skup atributa u obe relacije, formalna denicija razlike je:
r - s = t(X) = {x | xer . xes}
P 1.
Za relacije A i B
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
1772 Maksimovi Ilija 015 723 543
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
2345 Petrovi Petar 023 47 833
primenom operacije razlike formira se relacija C = A - B
IFRA# PREZIME IME TEL.BROJ
1772 Maksimovi Ilija 015 723 543
ili relacija C= B- A
IFRA# PREZIME IME TEL.BROJ
2345 Petrovi Petar 023 47 833
112 Relaciona algebra
P 2.
Nad relacijama
kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
racun(IME_EXP, BR_RAC#, IME_KL#, STANJE)
Nai sve klijente koji u ekspozituri IEX imaju raun ali jo uvek nemaju kredit
Ovaj zadatak se reava u koracima. Prvo se selektuju sve n-torke koje se
odnose na ekspozituru IEX, a zatim se ostvari unijska kompatibilnost posmat-
ranih relacija primenom operacije projekcije po eljenom atributu. Na kraju se
primeni operacija razlike novonastalih relacija:
Nai sve klijente koji imaju racun u ekspozituri IEX
IME_KL
(
IME_EXP=IEX
(racun)) t1
Nai sve klijente koji imaju kredit u ekspozituri IEX
IME_KL
(
IME_EXP=IEX
(kredit)) t2
Rezultat je: t1 - t2
12.5. Presek -
Presek (eng. intersect) - rezultat preseka dve relacije je relacija koja se sastoji
od n-torki koje su zajednike za obe relacije, odnosno koja sadri sve n-torke koje
se nalaze i u jednoj i u drugoj relaciji. Ova operacija je mogua samo izmeu unij-
ski kompatibilnih relacija.
Ako su r i s relacije nad emom R(X) i S(X), X oznaava unijski kompatibi-
lan skup atributa u obe relacije, formalna denicija preseka je:
r s = t(X) = {x | x e r . x e s}.
Presek je izvedena operacija, moe se izvesti iz
r s = r (r-s)
P 1.
Za relacije A i B
Relaciona algebra 113
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
1772 Maksimovi Ilija 015 723 543
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
2345 Petrovi Petar 023 47 833
primenom operacije preseka formira se relacija C = A B
IFRA# PREZIME IME TEL.BROJ
3244 Aksentijevi Petar 011 334 952
P 2.
Nad relacijama
kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)
racun(IME_EXP, BR_RAC#, IME_KL#, STANJE)
Nai sve klijente koji u ekspozituri IEX imaju i raun i kredit. Do rezultata
se dolazi u koracima, uz ostvarivanje unijske kompatibilnosti.
Nai sve klijente koji imaju racun u IEX
IME_KL
(
IME_EXP=IEX
(racun)) t1
Nai sve klijente koji imaju kredit u IEX
IME_KL
(
IME_EXP
=IEX(kredit)) t2
Rezultat je: t1 t2
12.6. Dekartov proizvod -
Dekartov proizvod dve relacije je relacija koja se sastoji od svih
moguih kombinacija parova n-torki, pri emu je prva n-torka iz prve, a
druga iz druge relacije.
Denicija: iz dve polazne relacije formira novu sa n-torkama dobijenim tako
to se svaka n-torka prve relacije spaja sa svakom iz druge. ema nastale relacije
sadri sve atribute polaznih relacija.
114 Relaciona algebra
Ako su r i s relacije nad emom R(X) i S(Y), a X i Y su skupovi atri-
buta u emama relacija, formalna denicija Dekartovog proizvoda je:
r s = t(XY) = {xy | x e r . y e s}
Kod oznaavanja za puni naziv atributa se moe koristiti relacija.atribut
(ako je X Y C), da bi se mogli razlikovati atributi iz jedne i druge relacije.
P 1.
Za polazne relacije r i s
r s
A B C D E
1 10 a
2 10 a
20 b
10 b
kao rezultat dekartovog proizvoda rs dobija se
A B C D E
1 10 a
1 10 a
1 20 b
1 10 b
2 10 a
2 10 a
2 20 b
2 10 b
Nakon primene dekartovog proizvoda, u rezultujuoj relaciji samo pojedine
n-torke imaju smisla.
Relaciona algebra 115
P 1.
Nad relacijama
klijent(IME_KL, UL_BR, GRAD),
licni_bankar(IME_KL, IME_SL)
Nai sve klijente sa linim bankarom IS1 i gradove u kojima klijenti ive
Nakon primene dekartovog proizvoda, samo neke od n-torki sadre traene
podatke.
licni_bankar klijent t(LB.IME_KL, LB.IME_SL, K.IME_KL, K.UL_BR, K.GRAD)
Klijent
Zoran Savska Beograd
Milan Nika Novi Sad
Petar Kralja Milana Kruevac
Lini bankar
Zoran Sl1
Milan Sl2
Petar Sl3
Klijent Lini bankar
Zoran Savska Beograd Zoran Sl1
Zoran Savska Beograd Milan Sl2
Zoran Savska Beograd Petar Sl3
Milan Nika Novi Sad Zoran Sl1
Milan Nika Novi Sad Milan Sl2
Milan Nika Novi Sad Petar Sl3
Petar Kralja Milana Kruevac Zoran Sl1
Petar Kralja Milana Kruevac Milan Sl2
Petar Kralja Milana Kruevac Petar Sl3
116 Relaciona algebra
12.3.1. Spajanje - ><
Denicija: iz dve polazne relacije formira novu sa n-torkama dobijenim u
dva koraka:
Svaka n-torka iz prve relacije redom se spaja sa svim n-torkama iz druge
relacije
Iz tako dobijenih n-torki izdvajaju se one koje zadovoljavaju zadati uslov P
Ako su r i s relacije nad emom R(X) i S(Y), X i Y su skupovi atributa u
emama relacija, formalna denicija operacije spajanja je:
r >
P(XY)
< s =
P(XY)
(rs) = {xy | x e r . y e s . P(xy)}
12.6.2. spajanje
Prethodna denicija dozvoljava proizvoljni uslov P, pod uslovom da je izra-
unljiv za svaku n-torku nakon Dekartovog proizvoda
Neka su r i s relacije nad emom R(X) i S(Y). Neka su Xi i Yk atributi za koje
vai da je
XieX i YieY. Pod spajanjem r >
Xi Yi
< s
podrazumeva se spajanje kod koga operator oznaava bilo koji operator poreenja:
(=,,<,>,,)
12.6.3. Ekvi spajanje
Prethodno spajanje ograniava formu uslova spajanja, meutim i dalje
dobijeni rezultat nema praktinu primenu. Specijalni sluaj gde predstavlja jed-
nakost (=) je est sluaj u praksi.
Ekvi spajanje po jednom atributu:
r >
Xi = Yi
< s
Ekvi spajanje po vie atributa oznaava se sa:
r >
(X1,X2,...,Xn) = (Y1,Y2,...,Yn)
< s
Relaciona algebra 117
12.6.4. Prirodno spajanje
Prethodno spajanje daje jedan suvian atribut, zato to su vrednosti atributa
po kojima se vri spajanje uvek iste. Nepotrebni atribut se eliminie dodatnom
operacijom projekcije. Navedeni sluaj je est u praksi, pa je uvedena specijalna
operacija prirodnog spajanja. Podrazumeva sekvencu tri elementarne operacije
Dekartov proizvod relacija
Restrikciju po uslovu jednakosti atributa
Projekcija po razlici unije svih atributa i skupa spojnih atributa iz bilo
koje od relacija
Prirodno spajanje dve relacije po jednom atributu oznaava se sa:
r > Xi,*,Yk < s
Specijalni sluaj oznaavanja: r > * < s podrazumeva prirodno spajanje po
svim atributima koji imaju jednake nazive u obe relacije.
Formalna denicija prirodnog spajanja: Ako su r i s relacije nad emom
R(X) i S(Y), a A_X i B_Y su ureeni podskupovi jednakog broja atributa relacija
r i s, respektivno, prirodno spajanje deniemo kao:
r > (A)*(B) < s =
XY-B
( (
A)=(B)
(rs))=t(XY-B)
Jednakost ureenih podskupova A i B podrazumeva jednakost korespo-
dentnih elemenata. Umesto XY-B sa desne strane moe se navesti XY-A.
P 1.
Za polazne relacije r i s
r s
A B C D E
1 10 a
2 10 a
20 b
10 b
kao rezultat prirodnog spajanja r >
*
< s =
XY-B
(
A
=C(r s)) dobija se
118 Relaciona algebra
r>
*
< s
A B D E
1 10 a
2 10 a
2 20 b
12.7. Deljenje - /
Deljenje je najsloenija operacija relacione algebre.
Deljenje se ne moe izvesti sa proizvoljnim tabelama. Za A/B potrebno je da
se svi atributi relacije B nalaze u relaciji A.
Npr: Mogue je deljenje za: a (X1,X2,...,Xn,Y1,Y2,...,Ym) b (Y1,Y2,...,Ym)
P: Za dve relacije r i s, date sa:
r s
A B C D E D E
a a 1 a 1
a a 1 b 1
a b 1
a a 1
a b 3
a a 1
a b 1
a b 1
nakon operacije deljenja r/s dobija se:
A B C
a
a
S Q L 119
Pogl av l j e 13
SQL
SQL (Stuctiured Query Language) je standardni relacioni upitni jezik (ANSI
- American National Standards Institute - standard). Slui za kreiranje, organizaci-
ju i manipulaciju podacima u relacionim bazama podataka. Sam nastanak jezika se
vezuje za IBM-ovu istraivaku laboratoriju u San Hozeu u Kaliforniji, gde je SQL
razvijen kasnih 70-ih godina, u sklopu projekta System R.
Danas je SQL ugraen u sve vodee SUBP SQL je uspeno primenjen u sis-
temima za upravljanje bazom podataka kao to su MS Access, DB2, Informix, MS
SQL Server, Oracle, Sybase itd. Trenutno u svetu postoji vie standarda SQL jezika,
a najpoznatije su: ANSI-92, ISO, Microsof SQL, itd. IBM je 1987. godine standar-
dizovao sopstvenu verziju SQL-a. Zatim je ANSI 1989. godine objavio proirenu
verziju, poznatu kao SQL-89. Sledea standardizovana verzija je SQL-92, dok je
najnovija verzija publikovana 1999. godine.
13.1. Terminologija SQL-a
U terminologiji SQL-a umesto pojma relacije koristi se pojam tabele. Za
jednu n-torku u relaciji kaemo da predstavlja jedan red tabele, a kolone tabele
odgovaraju atributima. Ova terminologija je nasleena iz prakse koja je pretho-
dila standardizaciji, a rezultat toga je krajnje neobina okolnost da u SQL-u, jezi-
ku za relacione baze podataka, ne postoji ni jedna konstrukcija koja sadri re
RELATION.
120 S Q L
SQL jezik podrava dva reima rada sa bazom podataka:
Interaktivni: Korisnik zadaje jednu po jednu SQL naredbu interaktivno,
preko tastature, a ishod svake se prikazuje preko monitora. Pristup bazi
podataka je ogranien jedino pravima korisnika i
Programski: Korisnik pokree program u kome se nalaze ugraene
SQL naredbe. Pristup bazi podataka ogranien je pravima korisnika i
sadrajem programa. Pri tome, ugraene naredbe mogu biti statike
(ksirane u vreme prevoenja programa) ili dinamike (konstruisane
tokom izvravanja programa).
Baza podataka sadri tabele i druge objekte radi smetanja i obrade podata-
ka. Za kreiranje baze koristi se naredba:
CREATE DATABASE imeBaze
SQL podrava 3 osnovne funkcije BP: denicije, manipulacije i kontrolu.
DDL (Data Denition Language)
SQL DML (Data Manipulation Language)
DCL (Data Conrol Language)
Denicija baze podataka: Pre poetka rada sa bazom podataka neophodno je
denisati njenu strukturu - koje tabele postoje, koji atributi postoje u tabelama i kog
su tipa, koja ogranienja postoje unutar tabela i izmeu njih, koje pomone strukture
(indeksi) za ubrzanje pristupa podacima postoje i za koje tabele. Ova komponenta
jezika odgovara DDL-jeziku baze podataka (od Data Deniton Language).
Manipulacija bazom podataka: Pored upita nad bazom podataka, kojima
dobijamo eljene informacije, neophodno je obezbediti i auriranje baze podata-
ka, odnosno unos, izmenu i brisanje podataka. Ova komponenta je u stvari DML-
jezik baze podataka (od Data Manipulation Language).
Kontrola pristupu podacima: U svakoj bazi podataka neophodno je ostva-
riti kontrolu koji korisnici imaju pristup kojim podacima i ta mogu da rade sa
tim podacima. Ova komponenta predstavlja DCL-jezik baze podataka (od Data
Control Language).
S Q L 121
13.2. PRAVILA SQL-a
13.2.1. Pravila za pisanje imena
Imena tabela, pogleda, atributa i drugih objekata baze podataka moraju da
potuju sledea pravila:
1) Maksimalna duina imena je 30 znakova,
2) Ime ne sme da sadri znak pitanja (?),
3) Nema razlike izmeu malih i velikih slova,
4) Prvi znak mora biti slovo,
5) Dozvoljeni znaci su A-Z, 0-9, _, $ i #,
6) Kao imena se ne smeju koristiti rezervisane rei i
7) Imena se ne smeju ponavljati.
Radi lakeg itanja koda preporuuje se da kljune rei (naredbe) budu
napisane velikim slovima, a svi ostali elementi malim slovima. U nekim bazama
niz znakova (string) mora biti napisan kao to je u bazi.
13.2.2. O naredbama i izrazima
Naredbe mogu sadrati izraze u kojima se pojavljuju:
Logike operacije: AND, OR i NOT,
Operacije uporeivanja: =, <, >, , , < >, kao i IN, ANY, ALL, BETWEEN,
IS NULL, LIKE, ...
Skupovne operacije: unija (UNION), presek (INTERSECT) i razlika
(EXCEPT),
Svodne funkcije na skupovima podataka: broj lanova (COUNT),
zbir lanova (SUM), najmanji i najvei (MIN i MAX), srednja vrednost
(AVG) itd.
Ostale funkcije za rad s podacima.
Izrazi se mogu grupisati pomou zagrada. Mogu sadrati zadate brojeve,
tekstualne podatke i/ili ostale vrste podataka.
122 S Q L
13.2.3. Tipovi podataka
Pri kreiranju tabela odreujemo tip podatka koji e biti korien. Sledea
tabela prikazuje najosnovnije standardne SQL tipove podataka, njihove karakte-
ristike, kao i neke od alternativnih podtipova.
TIP
PODATKA
OPIS
CHAR(n) Podatak tipa niza karaktera ksne duine n
VARCHAR(n) Podatak tipa niza karaktera promenljive duine
NUMBER
Numeriki podaci bilo kog tipa, do 38 cifara. Podtipovi:
DEC
DECIMAL
DOUBLE
DOUBLE_PRECISION
FLOAT
INT
NUMERIC
REAL
SMALLINT
DATE
Koristi se za promenljive i konstante iji je sadraj
informacija o vremenu, npr.: datumi, sati, min. i sec.
BOOLEN
Koristi se za promenljive i konstante koje sadre logike
vrednosti TRUE (istina) i FALSE (la)
13.2.4. Defnicija atributa
Atribut deniemo izrazom od dva ili tri dela:
<ime_atributa> <tip_atributa> <dodatna_svojstva_atributa>
S Q L 123
Dodatna svojstva:
DEFAULT - zadavanje predenisane vrednosti,
NOT NULL - vrednost ne sme biti nepoznata ili ne zadata,
CHECK - provera da je vrednost atributa u zadatim granicama,
UNIQUE - jedinstvenost meu n-torkama unutar relacije,
PRIMARY KEY - primarni klju,
REFERENCES - vrednost mora biti meu vrednostima iz druge relacije,
obino klju iz druge relacije.
13.3. Naredbe SQL-a za defnisanje
Denicija neke baze podataka podrazumeva i mogunost naknadne izme-
ne ili uklanjanja te denicije. U standardnom SQL jeziku se to postie sa svega
tri naredbe:
CREATE: Slui za kreiranje nekog objekta (tabele, indeksa, itd.) u bazi
podataka,
DROP: Slui za uklanjanje denicije nekog objekta iz baze podataka i
ALTER: Slui za izmenu denicije nekog objekta u bazi podataka.
124 S Q L
13.3.1. Rad sa tabelama
Prilikom kreiranja tabele, odnosno denicije njene strukture i osobina
(ema), neophodno je navesti sledee:
Ime tabele, koje mora biti unikatno u bazi podataka,
Ime svake kolone, koja mora biti unikatno unutar tabele,
Tip svake kolone,
Jedno ili vie ogranienja za kolone koje ih imaju i
Jedno ili vie ogranienja za celu tabelu, ako postoje.
P:
JMBG Ime Prezime Ulica i broj Grad
0104983134526 Petar Petrovi Njegoeva 46 Beograd
0505983871231 Ivan Ivanovi Dunavska 55 Novi Sad
0901983987651 Marko Markovi Durmitorska 3 Beograd
Naredba za kreiranje tabele glasi CREATE TABLE ImeTabele.
Sintaksa naredbe kreiranja tabele:
CREATE TABLE ImeTabele
(imeKolone TipKolone OgranienjeKolone ...
{, imeKolone TipKolone OgranienjeKolone ...}
[OgranienjeTabele {, OgranienjeTabele}]);
ImeTabele i ImeKolone - pravila koja vae za veinu varijabli: prvi znak je
slovo, ostali znaci su slova, cifre, posebni znaci, itd.
TipKolone - SQL tip podataka
Uz svaku kolonu mogu se navesti jedno ili vie ogranienja za tu kolonu.
Naredba za uklanjanje tabele je DROP TABLE imeTabele. Tabela koja se
uklanja mora biti prazna. U suprotnom SUBP nee izvriti tu naredbu.
Izmena tabele se vri naredbom ALTER TABLE imeTabele. Naknadna iz-
mena se najee radi jer se kod prvobitnog kreiranja tabele nije uzeto u obzir
S Q L 125
sve ta je bilo potrebno, ili je dolo do zahteva za promenama aplikacije i baze
podataka.
Naredba izmene tabele je neto sloenija, poto treba da obezbedi sledee
mogunosti izmene tabele:
Dodavanje nove kolone,
Izmena postojee kolone,
Uklanjanje postojee kolone,
Dodavanje novog ogranienja tabele i
Uklanjanje postojeeg ogranienja tabele.
Izmena kolone je ograniena samo na mogunost uvoenja nove ili uklan-
janja podrazumevane vrednosti. U tim okolnostima, postojea ogranienja kolo-
ne se ne mogu uklanjati a nova se mogu dodavati samo preko dodavanja novog
ogranienja tabele sa naznaenom jednom kolonom.
Uklanjanje kolone nije mogue ako je navedena kolona jedina u tabeli, kao
i ako je navedena klauzula RESTRICTED, a u bazi podataka postoji bar jedno
referenciranje koje referie kolonu koja se uklanja.
13.4. Pogledi
Pogled (view) predstavlja izvedenu tabelu, ima redove i kolone i nastaje
kao rezultat upita nad osnovnim tabelama i drugim pogledima. Redovi i kolone
pogleda nisu nigde trajno zapisani. Umesto toga, svaki put kada se pristupa pogle-
du izvrava se upit kojim je on denisan.
Prednosti koje imaju pogledi u radu sa RBP:
Pogled predstavlja jednu vrstu podprograma u SQL-u. Jednom kreiran,
moe se koristiti u podupitima u WHERE i HAVING klauzulama,
Komplikovani i esto korieni upiti se mogu formulisati u vidu pogleda
koje e korisnici jednostavno pozivati u upitima tipa SELECT * FROM
imePogleda,
Pogled razreava problem pojavljivanja vika podataka u svodnim upi-
tima (kada u odreenim implementacijama pravila za SELECT naredbu
126 S Q L
nalau da pored traenih podataka u rezultat ukljuimo i nepotrebne po
kojima se grupie)
Pogledi znatno olakavaju kontrolu pristupa bazi podataka.
Naredbe za rad sa pogledima:
CREATE VIEW i
DROP VIEW
Kreiranje pogleda vri se naredbom ija je sintaksna denicija:
CREATE VIEW Pogled [ ( Kolona ,.. ) ] AS Upit ;
gde je znaenje pojedinih djelova ove denicije sledee:
Pogled Unikatni naziv pogleda u bazi podataka, simbol formiran po pravilu za na-
zive varijabli
Kolona Ako se navedu kolone pogled se ponaa kao tabela sa brojem, redosledom
i imenima kolona kako je navedeno, a u suprotnom se preuzimaju imena
Kolona iz osnovnih tabela i pogleda koje su navedene u naredbi upita. U oba
sluaja, pogled nasleuje tipove kolona iz osnovnih tabela i pogleda iz upita
Upit Naredba upita SELECT iji rezultat izvravanja daje tabelu koja
predstavlja pogled
Pogled se uklanja naredbom ija je sintaksna denicija:
DROP VIEW Pogled ;
Uklanjanje pogleda nema nikakvog efekta na osnovne tabele iz upita.
13.5. Indeksi
Indeks je pomona datoteka koja treba da ubrza pristup podacima u nekoj
osnovnoj datoteci. Pored toga, indeks ima jo jednu namenu: zapisi u osnovnoj
datoteci nalaze se u zikom redosledu koji odgovara redosledu unosa podataka.
Kada pristupamo neposredno toj datoteci zapise oitavamo tim redosledom, ali
ako podacima pristupamo posredstvom indeksa, oitavaemo ih redosledom koji
odgovara rastuoj ili opadajuoj vrednosti indeksnog izraza.
S Q L 127
Sintaksa naredbe za kreiranje indeksa je:
CREATE [ UNIQUE ] INDEX ImeIndeksa ON Tabela ( Kolona ,.. );
gde je znaenje pojedinih djelova ove denicije sledee:
UNIQUE Kada se zada ova opcija, indeks mora biti unikatan, odnosno u tabeli
na koju se indeks odnosi ne sme da se vie puta ponovi neka vrednost
Kolona
Ime Indeksa Unikatni naziv indeksa u bazi podataka, simbol formiran po pravilu
za nazive varijabli
Kolona Jedna ili vie kolona po kojima se formira indeks
Nad istom tabelom po potrebi moe biti denisano vie indeksa. To se koris-
ti kada su potrebni razliiti pristupi podacima i razliiti redosledi podataka.
Indeks moe biti kreiran odmah, dok je tabela na koju se odnosi prazna, ili
naknadno. Ako se kreira naknadno, indeks dobija sadraj koji odgovara sadra-
ju svoje tabele. Od tog trenutka, sadraj indeksa i tabele je sinhronizovan: svako
dodavanje ili uklanjanje podataka, kao i izmena vrednosti neke od kolona koja je
u sastavu indeksnog izraza, odraava se na sadraj indeksa.
Indeks se moe bilo kada i bez obzira na sadraj svoje tabele ukloniti nared-
bom ija je sintaksna denicija:
DROP INDEX ImeIndeksa ;
13.6. SELECT upiti
Naredba za upite, odnosno, SELECT naredba, predstavlja najznaajniju i
najee korienu SQL naredbu za manipulaciju podacima.
13.6.1. Prost upit nad jednom tabelom:
Kod svakog upita se zadaje:
Koje podatke traimo kao rezultat,
Iz kojih tabela to traimo,
Koji uslov treba da zadovolje podaci da bi bili ukljueni u rezultat i
Po kom redosledu elimo prikaz rezultata.
128 S Q L
Pod prostim upitom nad jednom tabelom podrazumeva se naredba SELECT
nad jednom tabelom koja kao rezultat daje ni jedan red, jedan red ili niz redova
podataka, od kojih svaki odgovara podacima iz jednog reda tabele koji zadovoljava
eventualno zadati uslov.
Rezultat upita ne mora biti relacija u smislu unikatnosti redova koji ulaze u
rezultat. To se ispoljava kada za rezultat upita biramo samo neke od kolona, kada
moe doi do pojave istovetnih redova u rezultatu. Stoga prilikom formulacije
upita treba da postoji mogunost specikacije da li elimo eliminaciju viestrukog
pojavljivanja istih redova u rezultatu ili ne.
Prost upit nad jednom tabelom ima sledeu sintaksu:
SELECT R-Lista
FROM Tabela
[ WHERE R-Predikat ]
[ ORDER BY { R-Izraz [ ASC | DESC ] } ,.. ] ;
gde je
R-Lista ::= * | { [ ALL | DISTINCT ] R-Izraz ,.. }
Znaenje:
* Specijalni sluaj kada elimo da ukljuimo sve kolone tabele, i to onim
redosledom kojim su navedene u naredbi kreiranja tabele
ALL Traimo da se u rezultatu prikau svi redovi ukljuujui i one koji su
istovetni, podrazumijeva se ako se nita ne navede
DISTINCT Traimo da se iz rezultata eliminiu suvina pojavljivanja (osim jed-
nog) istovetnih redova
R-Izraz Izraz izraunljiv nad svakim pojedinim redom tabele koji pored na-
ziva kolona moe da sadri i operatore i konstante. Najee je u formi
navoenja jedne kolone
R-Predikat Logiki izraz koji je izraunljiv nad svakim pojedinim redom tabele. U
formiranje rezultata upita ulaze samo oni redovi za koje taj izraz daje
istinit rezultat. U najjednostavnijim sluajevima, R-Predikat je u formi
relacionog izraza u kome se sa jedne strane relacionog operatora ( >, <,
=, itd.) javlja ime kolone, a sa druge strane ime kolone ili konstanta
S Q L 129
P 1.
Najjednostavniji mogui SQL upit je u formi:
SELECT * FROM ImeTabele;
Ova naredba prikazuje sve redove tabele ije je ime navedeno iza FROM klauzu-
le. U svakom redu prikazuju se vrednosti svih kolona, onim redom kako je to zapisano
u datoteci (tj. kreirano sa CREATE TABLE). Kod upita se obino trai prikaz samo
odreenih kolona, ili prikaz svih kolona u redosledu koji je drugaije odreen.
13.6.2. Prost upit nad jednom tabelom sa svodnim rezultatom:
Sintaksa za SELECT (prost upit nad jednom T sa izvedenim rezultatom)
SELECT G-Lista
FROM ImeTabele
[WHERE R-Predikat];
G-Izrazi: najee ih ine posebne SQL funkcije (svodne ili agregatne funk-
cije). One mogu biti:
SUM (ImeKolone) Nalazi sumu svih ne-NULL vrednosti zadate kolone
AVG (ImeKolone) Nalazi prosenu vrednost svih ne-NULL vrednosti
zadate kolone
MIN (ImeKolone) Nalazi minimalnu vrednost svih ne-NULL vred
nosti zadate kolone
MAX (ImeKolone) Nalazi maksimalnu vrednost svih ne-NULL vred-
nosti zadate kolone
COUNT(*) Nalazi ukupan broj redova u tabeli
COUNT([ALL|DISTINCT] ListaKolona)
Bez DISTINCT nalazi ukupan broj ne-NULL vrednosti zadate kombina-
cije kolona
Sa DISTINCT nalazi ukupan broj razliitih ne-NULL vrednosti zadate
kombinacije kolona
P:
Uz pretposatvku da su u tabeli Student uneseni svi studenti jednog fakulte-
ta, ukupan broj studenata tog fakulteta se moe dobiti sa:
SELECT COUNT(*) FROM Student;
130 S Q L
13.6.3. WHERE klauzula
WHERE klauzula slui za izbor zapisa na osnovu kriterijuma (ltriranje).
Prilikom denisanja kriterijuma moemo se koristiti logikim (AND, OR, NOT) i
komparativnim (<, >, < =, > =, < >) operatorima. WHERE klauzula nije obavezna,
a moe se koristiti sa SELECT, UPDATE I DELETE komandama.
Koriena u SELECT bloku, WHERE klauzula omoguuje:
Selekciju specinih n-torki relacije (redova tabele),
Selekciju n-torki koje zadovoljavaju viestruke uslove,
Selekciju n-torki koje zadovoljavaju bar jedan od vie uslova,
Selekciju n-torki koje ne zadovoljavaju odreene uslove,
Selekciju n-torki istovremenim korienjem AND i OR logikih operatora,
Selekciju n-torki unutar izvesnog raspona,
Selekciju n-torki koje zadovoljavaju vrednost u listi vrednosti i
Selekciju n-torki koje sadre odreenu kombinaciju karaktera.
13.6.4. ORDER BY klauzula
Korienjem ORDER BY klauzule mogue je sortirati rezultujuu tabelu po
jednom ili vie atributa u rastuem ili opadajuem redosledu.
Za specikaciju rastueg redosleda koristi se klauzula ASC, za specikaci-
ju opadajueg redosleda klauzula DESC. Rastui redosled se podrazumijeva, pa
klauzulu ASC nije neophodno navoditi, za razliku od klauzule DESC koju uvek
treba navesti kada se sortira u opadajuem redosledu.
ORDER BY je uvek poslednja klauzula u SELECT bloku.
13.6.5. GROUP BY klauzula
Klauzula GROUP BY prouzrokuje dobijanje sumarne informacije za svaku
razliitu vrednost kolone po kojoj se vri grupisanje.
GROUP BY klauzula se moe koristiti zajedno sa klauzulom WHERE, pri
emu WHERE klauzula uvek ide pre GROUP BY klauzule. WHERE klauzulom
se najpre izvri selekcija n-torki, zatim se selektovane n-torke grupiu GROUP
BY klauzulom, pa se, eventualno, izvri selekcija formiranih grupa HAVING
klauzulom.
S Q L 131
13.6.6. HAVING klauzula
HAVING klauzula odreuje kriterijume za selekciju grupa, poto su grupe
ve formirane sa GROUP BY klauzulom.
13.6.7. Korienje NULL vrednosti
NULL vrednosti su nedenisane vrednosti. Izmeu NULL vrednosti i vred-
nosti nula postoji znaajna razlika. Bez obzira o kom tipu da se radi NULL vred-
nost odreene kolone moe se testirati samo pomou dve specijalne klauzule: IS
NULL ili IS NOT NULL. Operatori poreenja se ne mogu koristiti kod testiranja
NULL vrednosti.
13.6.8. LIKE klauzula
Klauzula LIKE omoguava pretraivanje na osnovu UZORKA, odnosno,
dobijanje informacija i kada ne znamo potpun naziv (tj. vrednost) odreenog
atributa tipa character. Ona koristi dva specijalna karaktera (%,_) sa sledeim
znaenjem:
% predstavlja string od 0 ili vie karaktera, a
_ predstavlja poziciju jednog karaktera.
Ostali karakteri imaju uobiajeno znaenje.
13.7. Naredbe auriranja
Auriranje u irem smislu znaenja te rei obuhvata dodavanje, izmenu
sadraja i brisanje reda ili redova tabele. Te osnovne operacije realizuju se SQL
naredbama: INSERT, UPDATE i DELETE sa sledeim znaenjem:
INSERT: Dodavanje reda ili redova u tabelu,
UPDATE: Izmena sadraja postojeeg reda ili redova tabele i
DELETE: Brisanje postojeeg reda ili redova tabele.
Posebno treba voditi rauna da su sve tri navedene naredbe - naredbe nad
jednom tabelom, tako da se njihovom primenom ne garantuje ouvanje integri-
teta baze podataka. Direktno korienje ovih naredbi se zato ne preporuuje, jer
132 S Q L
je u tom sluaju procedura za ouvanje integriteta spolja, tj. sam korisnik mora
voditi rauna o njoj. Ove naredbe direktno treba da koristi samo administrator
baze podataka i to za otklanjanje eventualno naruenog integriteta baze.
Normalno auriranje baze podataka vri se aplikacijama za interaktivno
auriranje u koje su ugraene procedure za ouvanje integriteta. Te procedure se
sastoje od naredbi INSERT, UPDATE i DELETE.
13.7.1. INSERT naredba
Postoje 3 sluaja korienja naredbe INSERT, i to kada se vri:
Unos vrednosti SVIH atiributa n-torke,
Unos vrednosti NEKIH atributa n-torke i
Unos podataka iz jedne tabele u drugu.
Unos vrednosti SVIH atributa n-torke:
U ovom sluaju nije potrebno specicirati nazive atributa, pa INSERT nar-
edba ima oblik:
INSERT INTO NazivTabele
VALUES (vrednost_atr1, vrednost_atr2, . . .) ;
Za svaki atribut MORA postojati vrednost, pri emu je NULL dozvoljena
opcija za svaki atribut koji nije NOT NULL.
Unos vrednosti NEKIH atributa n-torke:
Ako elimo da unesemo vrednost za samo neke atribute, nazivi tih atributa
moraju se eksplicitno navesti. U tom sluaju naredba INSERT ima oblik:
INSERT INTO NazivTabele (atri1, atri2.)
VALUES (vrednost_atr1, vrednost_atr2, . . . ) ;
Unos podataka iz jedne tabele u drugu:
Ukoliko obe tabele imaju isti broj atributa i ukoliko su atributi identino
denisani, naredba INSERT je oblika:
S Q L 133
INSERT INTO tabela 1 SELECT * FROM tabela2 ;
inae:
INSERT INTO tabela1 (atribut1, atribut2, ...)
SELECT atribut1, atribut2
FROM tabela2
WHERE kriterijum selekcije ;
13.7.2. UPDATE naredba
Uz ovu naredbu mora se navesti:
U kojoj tabeli se vre izmjene,
Za koje kolone u redu mijenjamo vrednosti,
Pod kojim uslovima mijenjamo vrednosti.
Opti oblik naredbe je:
UPDATE ImeTabele
SET atribut1 =izraz1 [,atribut2=izraz2]
[WHERE kriterijum selekcije n-torki],
odnosno,
UPDATE ImeTabele
SET(alribut1, atribut2,..)=(podupit)
[WHERE kriterijum selekcije n-torki]
Podupit mora vratiti najvie po jednu vrednost za svaki od atributa u listi
atributa iza SET klauzule.
13.7.3. DELETE naredba
Uz ovu naredbu mora se navesti:
Iz koje tabele se vri uklanjanje i
Pod kojim uslovima se uklanja neki red.
Sintaksa naredbe:
DELETE FROM ImeTabele WHERE R-Predikat
134 S Q L
SUBP odbija uklanjanja, ako je to u suprotnosti sa dinamikom specikaci-
jom referencijalnog integriteta.
13.8. Naredbe za kontrolu prava pristupa
Naredbe za kontrolu prava pristupa podacima u bazi podataka su:
GRANT: Naredba za dodeljivanje prava korienja,
REVOKE: Naredba za oduzimanje prava korienja
Ove naredbe ine osnovu dela SQL jezika za kontrolu pristupa bazi podataka.
Sutina kontrole pristupa bazi podataka je u tome da se ostvare sledei vido-
vi kontrole:
Ko uopte moe da pristupa bazi podataka,
emu moe da pristupi u bazi podataka i
ta moe da radi sa onim emu moe da pristupi.
Deo SQL jezika za kontrolu pristupa bazi podataka sve to obezbeuje pu-
tem sledeih funkcija:
Kreiranje i uklanjanje korisnika - naloga za rad za bazom podataka,
Dodela i uklanjanje optih prava za rad sa bazom podataka i
Dodela i uklanjanje posebnih prava za rad sa bazom podataka.
13.8.1. GRANT naredba
Opti oblik naredbe GRANT:
GRANT {ALL | [ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE(atr) ] }
ON [kreator {tabela | pogled}
TO (PUBLIC ! korisnik1,korisnik2, ... }
[ WITH GRANT OPTION] ;
Tabela koju kreira korisnik je njegova tabela. Drugi korisnik je ne moe
koristiti ukoliko mu kreator, vlasnik tabele eksplicitno ne dodeli pravo korienja.
Dodela prava korienja tabele drugim korisnicima se vri naredbom GRANT.
Drugim korisnicima se mogu dati sva prava (ALL) ili samo neka od navedenih
u listi iza GRANT klauzule. Ta prava se daju nad tabelom ili pogledom. Mogu
S Q L 135
se dati svim korisnicima (PUBLIC) ili samo nekim, u kom sluaju se eksplicitno
navode identikatori korisnika kojima se daje pravo korienja. Pravo korienja
se daje drugom korisniku sa ili bez mogunosti da to to je dobio dodeli jo ne-
kom korisniku (WITH GRANT OPTION).
13.8.2. REVOKE naredba
Opti oblik naredbe REVOKE:
REVOKE {ALL[ALTER, DELETE, INDEX, INSERT, SELECT, UPDATE(atr) ] }
ON [kreator.] {tabela | pogled}
FROM {PUBLIC | korisnik1, korisnik2, ... } ;
Data prava korienja se oduzimaju naredbom REVOKE.
Relacije loe strukture 137
Pogl av l j e 14
Relacije loe strukture
Glavni cilj u procesu razvoja baze podataka je da se kreira sistem koji verno
reprezentuje podatke, njihove veze i odnose, kao i ogranienja. Da bi se postigao
ovaj cilj, moraju se pravilno uoiti odgovarajue tabele, a metoda koja se za to
koristi naziva se normalizacija. Normalizacija je tehnika za kreiranje tabela sa
odgovarajuim svojstvima, uzimajui u obzir zahteve okruenja za ije potrebe
se projektuje baza. Normalizacija se esto realizuje tako to se vri serija testova
nad tabelom da bi se utvrdilo da li ona zadovoljava zahteve odreene normalne
forme ili ne. Inicijalno su promovisane tri normalne forme, prva (1NF), druga
(2NF) i trea (3NF) normalna forma. Kasnije su R.Boyce i E.F.Codd promovisa-
li strou deniciju tree normalne forme koja se naziva Boyce-Codd normalna
forma (BCNF). Sve normalne forme se baziraju na funkcionalnim zavisnostima
izmeu atributa tabele. Promovisane su i vie normalne forme koje prevazilaze
BCNF, i to su etvrta (4NF) i peta (5NF) normalna forma. Ipak, ove forme se bave
situacijama koje su vrlo retke.
Normalizacija omoguava projektantu baze da izvri optimalno grupisan-
je atributa po tabelama. Proces normalizacije identikuje tabele na osnovu pri-
marnih kljueva ili kljueva kandidata i na osnovu funkcionalnih zavisnosti koje
postoje izmeu atributa. Normalizacija sadri pravila koja se mogu upotrebiti za
testiranje tabela, tako da baza moe da se normalizuje do bilo kog stepena. Tabela
koja ne ispunjava zahteve normalizacije mora se rastaviti na dve ili vie tabela od
kojih svaka pojedinano ispunjava zahteve normalizacije. Vano je napomenuti
da je za kreiranje tabela u relacionom modelu podataka kritina samo 1NF. Sve
ostale forme su opcione. Ipak, da bi se izbegle anomalije auriranja, preporuuje
se normalizacija najmanje do 3NF.
138 Relacije loe strukture
U najoptijem smislu, normalizacija je postupak kojim se proizvoljna
nenormalizovana relacija transformie u skup manjih normalizovanih relacija.
U okviru normalizacije ne sme doi do gubitaka informacija sadranih u relaci-
ji. Drugim reima, mora biti mogue rekonstruisati prethodne relacija na osno-
vu novodobijenih.
Dekompozicija eme relacije R(A1,A2,...,An) je zamena eme relacije R sa
skupom ema relacija {R1, R2, ... , Rk} za koje vai RicR i R1 R2...Rk=R.
Ako je r relacija zadata na R a relacije r1,r2, ... ,rk su dobijene projekcijama
relacije r na skupove atributa R1, R2, ... , Rk onda se prirodnim spajanjem mora
dobiti relacija r.
14.1. Redundansa (ponavljanje) podataka i
anomalije auriranja
Jedan od najvanijih ciljeva prilikom projektovanja relacione baze podataka
je pravilno grupisanje atributa po tabelama, to rezultuje minimalnim ponavljan-
jem podataka i smanjenjem prostora potrebnog za skladitenje fajlova u kojima
se uvaju podaci. Ponavljanje podataka je pojava da se isti podaci koji se odnose
na neki entitet nepotrebno pojavljuju u dve ili vie tabela. U tabelama koje sadre
podatke koji se ponavljaju mogu da se jave problemi poznati kao anomalije auri-
ranja. Anomalije auriranja mogu biti anomalije unosa, anomalije brisanja ili ano-
malije promene podataka.
14.1.1. Anomalije unosa podataka
Prilikom unosa novih podataka koji se odnose na jedan entitet, u tabelu
koja sadri podatke koji se ponavljaju moraju se uneti i podaci koji se odnose na
druge entitete iji se podaci nalaze u istoj tabeli, to moe dovesti do nekonzis-
tentnosti ako se naini greka prilikom unosa.
14.1.2. Anomalije brisanja podataka
Brisanje poslednjeg zapisa koji se odnosi na jedan entitet iz tabele koja
sadri podatke koji se ponavljaju moe dovesti do kompletnog gubitka podataka
o drugom entitetu iji se podaci nalaze u istoj tabeli, u istom zapisu.
Relacije loe strukture 139
14.1.3. Anomalije promene podataka
Prilikom promene vrednosti atributa koji se odnosi na jedan entitet, u tabeli
koja sadri podatke koji se ponavljaju moraju se promeniti i svi zapisi koji sadre
taj promenjeni atribut, kao i podaci koji se odnose na druge entitete, a koji stoje u
direktnoj vezi sa promenjenim atributom. Ako se ne izvre sve ove promene, baza
postaje nekonzistentna.
14.2. Funkcionalna zavisnost
Funkcionalna zavisnost opisuje odnose izmeu atributa u tabeli i pred-
stavlja jedan od glavnih koncepata vezanih za normalizaciju. Osnovni raz-
log zbog koga se pristupa definisanju funkcionalnih zavisnosti za tabelu je
potreba odreivanja ogranienja za ouvanje integriteta (integrity constraints).
Verovatno najvanije ogranienje za ouvanje integriteta je uoavanje klju-
eva kandidata, od kojih se jedan bira za primarni klju tabele. U procesu
njihovog definisanja, naroito je znaajno pronai one funkcionalne zavisnos-
ti koje vae za sve mogue vrednosti atributa jedne tabele, jer one predstavlja-
ju tipove ogranienja za ouvanje integriteta. Tipovi ogranienja za ouvanje
integriteta definiu vrednosti koje tabela moe legitimno da primi. Takoe je
znaajno ignorisati tzv. trivijalne funkcionalne zavisnosti, jer za njih vai da su
uvek zadovoljene, pa stoga nisu od znaaja.
14.3. Postupak normalizacije
Neka polazna ema relacije nije u odreenoj normalnoj formi ako u
skupu funkcijskih zavisnosti F postoji bar jedna koja naruava definiciju nor-
malne forme.
U svakom koraku normalizacije:
1. Uoava se jedna takva zavisnost (XY)
2. Vri se dekompozicija u cilju uklanjanja takve zavisnosti
3. Ako je u polaznoj vailo XY,dekompozicijom nastaju dve relacije.U
prvoj se gube atributi Y, a druga nastaje nad atributima X i Y.
4. Ne dozvoljava se gubitak podataka
140 Relacije loe strukture
Krajnji je cilj normalizacije najverovatnije trea normalna forma.U vei-
ni sluajeva ona predstavlja najbolji kompromis izmeu ekstrema koji se odnose
na funkcionalnost i lakou implementacije. Nivoi iznad 3FN u praksi mogu da
iskomplikuju dizajn baze podataka do take da smetaju funkcionalnosti. Svi nivoi
normalizacije su kumulativni to znai da baza koja se nalazi u 2NF takoe mora
da ispunjava i sve uslove zadate prvom normalnom formom.
Proces analize eme relacije je proces primene serije testova na emu rela-
cije da bi se proverilo da li ispunjava sva pravila denisana za odreenu normal-
nu formu. Normalne forme pomau projektantu baze podataka da ostvari eljeni
kvalitet relacione baze podataka.
14.4. Prva normalna forma (1NF)
Pre diskusije o 1NF, najpre treba denisati stanje pre 1NF. Tabela koja sadri
podatke koji se ponavljaju nalazi se u nenormalizovanoj formi (NNF) i naziva se
nenormalizovana tabela.
Tabela je u 1NF ako presek svakog njenog reda i kolone sadri jednu i samo
jednu vrednost.
ema relacije R je u prvoj normalnoj formi ako i samo ako domeni relacije R
sadre samo proste (atomic) vrednosti (proste vrednosti su vrednosti koje se ne
mogu dalje deliti ili ako u konkretnoj situaciji nisu rastavljene na komponente).
U 1NF nisu dozvoljeni vievrednosni i kompozitni atributi i njihove kombinacije
tj.nisu doputene relacije u relacijama ili relacije kao atributi n-torki. ema relacije
je u 1NF, ako je svaki njen atribut skalarnog tipa, tj. vrednost svakog atributa je
jednostruka i nedeljiva.
Ako ema relacije R(A1,A2,,An) nije u 1NF, onda postoji takva
dekompozicija sema relacije R u skup ema relacija {R1,Rk} koje su u 1NF,
na nain da se operacijom prirodnog spajanja iz ovih ema relacija moe
ponovo dobiti ema relacije R.
Da bi se nenormalizovana tabela transformisala u 1NF, moraju se identi-
kovati i ukloniti podaci koji se ponavljaju. Postoje dva uobiajena pristupa za
uklanjanje podataka koji se ponavljaju iz nenormalizovanih tabela:
Relacije loe strukture 141
1. Po prvom pristupu, odgovarajui podaci se ubacuju u prazne kolone
redova koji sadre podatke koji se ponavljaju. Drugim reima, tamo gde
je to potrebno, prazna polja se popunjavaju dupliranim podacima koji se
ne ponavljaju. Rezultujua tabela sadri atomine (pojedinane) vred-
nosti u preseku svakog reda i kolone, pa je stoga u 1NF. Dakle, u ovom
postupku se u tabelu namerno unose podaci koji se ponavljaju, a oni se
tokom sledeih, viih faza procesa normalizacije uklanjaju iz tabele.
2. Po drugom pristupu, podaci koji se ponavljaju se, zajedno sa kopijom
originalne vrednosti atributa kljua (ili originalne vrednosti vie atributa
kljueva), izmetaju u posebnu tabelu. Za novu tabelu se denie pri-
marni klju. Ponekad nenormalizovana tabela sadri vie od jedne grupe
podataka koji se ponavljaju ili ak grupe unutar grupe. U takvim sluaje-
vima postupak izmetanja se ponavlja sve dok se ne ukloni i poslednja
grupa podataka koji se ponavljaju. Za grupu tabela se kae da je u 1NF
ako ne sadre podatke koji se ponavljaju.
Oba pristupa su ispravna, mada drugi pristup direktno daje tabele koje
su u najmanje 1NF. I prvi pristup daje tabele koje su u 1NF, ali koje se tek
u kasnijim fazama normalizacije razlau na iste one tabele koje nastaju kao
rezultat primene drugog pristupa. Dakle, moe se zakljuiti da je drugi pristup
direktniji i praktiniji.
Primer: ema relacije RADPROJ(JMBG, Ime, {ifP, Sati}) sadri ugnjede-
nu relaciju PROJEKAT(ifP,Sati). Atribut ifP je parcijalni primarni klju rela-
cije RADPROJ, tj. zajedno sa atributom JMBG ini njegov primarni klju. Da
bi ova ema relacije bila u 1NF nad njom se denie sledea relacija (sa nekim
trenutnim sadrajem):
JMBG Ime ifP Sati
123 Marko P1 3
123 Marko P3 2
123 Marko P5 2
222 Petar P3 4
222 Petar P4 2
333 Janko P1 5
142 Relacije loe strukture
Da bi se relacija RADPROJ prevela u bolju 1NF, potrebno je da se ugnjede-
na relacija formira kao nezavisna relacija. eme relacija sada imaju oblik:
RADNIK(JMBG,Ime) i PROJEKAT(JMBG, ifP, Sati):
RADNIK PROJEKAT
JMBG Ime JMBG ifP Sati
M1 I1 123 P1 3
M2 I2 123 P3 2
M3 I3 123 P5 2
222 P3 4
222 P4 2
333 P1 5
14.5. Druga normalna forma (2NF)
Druga normalna forma se bazira na konceptu potpune funkcionalne zavis-
nosti, koja e najpre biti denisana.
14.5.1. Potpuna funkcionalna zavisnost
Funkcionalna zavisnost AB (ita se B je funkcionalno zavisno od A) je
potpuna funkcionalna zavisnost ako uklanjanje bilo kog atributa iz A rezultuje
time to zavisnost prestaje da vai, pri emu su A i B atributi tabele. Funkcionalna
zavisnost AB je delimino zavisna ako postoje neki atributi koji se mogu uklo-
niti iz A, a zavisnost i dalje vai.
14.5.2. Defnicija druge normalne forme
Druga normalna forma se odnosi na tabele sa sloenim kljuevima, tj. tabe-
le iji se primarni kljuevi sastoje iz dva ili vie atributa. Tabela iji primarni klju
sadri samo jedan atribut je automatski u najmanje 2NF. U tabeli koja nije u 2NF
mogu da se pojave anomalije auriranja.
Tabela je u 2NF ako je u 1NF i ako je svaki atribut koji nije primarni klju
potpuno funkcionalno zavisan od primarnog kljua.
Relacije loe strukture 143
Normalizacija tabele iz 1NF u 2NF se vri uklanjanjem deliminih zavisnos-
ti, tj. funkcionalno zavisni atributi se izmetaju u novu tabelu zajedno sa kopijom
njihovih determinanti (kljueva).
14.6. Trea normalna forma (3NF)
ak iako je u 2NF, u tabeli mogu da se pojave anomalije auriranja zbog
tranzitivnih zavisnosti, koje se moraju ukloniti iz tabele postupkom normalizacije
do 3NF.
14.6.1. Tranzitivna zavisnost
Tranzitivna zavisnost je stanje u kome su A, B i C atributi tabele takvi da,
ako AB (B je funkcionalno zavisno od A) i BC (C je funkcionalno zavisno od
B), onda je C tranzitivno zavisno od A preko B (pod uslovom da A nije funkcional-
no zavisno od B ili C).
14.6.2. Defnicija tree normalne forme
Tabela je u 3NF ako je u 1NF i u 2NF i ako u njoj ne postoje atributi ne-pri-
marni-kljuevi koji su tranzitivno zavisni od primarnog kljua.
Normalizacija tabela iz 2NF u 3NF se vri uklanjanjem tranzitivnih zavis-
nosti, tj. tranzitivno zavisni atributi se izmetaju u novu tabelu zajedno sa kopijom
njihovih determinanti (kljueva).
14.7. Boyce-Codd normalna forma (BCNF)
Druga i trea normalna forma eliminiu delimine i tranzitivne zavisnosti
za primarne kljueve, ali one ne razmatraju da li takve zavisnosti postoje i za klju-
eve kandidate, ako ih ima u tabeli. Dakle, i u 3NF mogu da postoje delimine i
tranzitivne zavisnosti za kljueve kandidate, pa je stoga promovisana stroa nor-
malna forma poznata kao Boyce-Codd normalna forma (BCNF).
BCNF se bazira na funkcionalnim zavisnostima koje uzimaju u obzir sve
kljueve kandidate u tabeli, a sadri i jo neka ogranienja u poreenju sa 3NF.
144 Relacije loe strukture
Tabela je u BCNF ako i samo ako je svaka determinanta klju kandidat.
Da bi se odredilo da li je tabela u BCNF, potrebno je uoiti determi-
nante i proveriti da li su sve one kljuevi kandidati. Podsetiemo se da je
determinanta atribut ili grupa atributa od kojih je neki drugi atribut potpuno
funkcionalno zavisan.
Razlika izmeu 3NF i BCNF je u tome to 3NF dozvoljava funkcionalnu
zavisnost AB (B je funkcionalno zavisno od A) ako je B primarni klju a A nije
klju kandidat, dok BCNF nalae da A mora biti klju kandidat. Dakle, BCNF je
jaa forma od 3NF, pa je svaka tabela koja je u BCNF automatski i u 3NF, a obrat-
no ne vai.
Tabela se transformie u BCNF tako to se vri njena dekompozicija na dve
ili vie novih tabela. Meutim, ponekad nije poeljno normalizovati tabelu do
BCNF. Naime, moe se desiti da se prilikom dekompozicije tabele izgubi jedna ili
vie funkcionalnih zavisnosti zbog toga to se determinanta i od nje zavisni atri-
buti izmeste u razliite tabele. U ovakvoj situaciji treba proceniti da li je bolje stati
kod 3NF, koja uvek uva sve funkcionalne zavisnosti. Odluku da li normalizovati
tabelu do BCNF ili stati kod 3NF treba doneti na osnovu sledee analize:
Da li e znaajni podaci biti izgubljeni u sluaju dekompozicije tabele i
gubitka jedne ili vie funkcionalnih zavisnosti
Kolika e biti koliina redundantnih podataka (podataka koji se ponavlja-
ju) u sluaju da se dekompozicija ne izvri, tj. da se ostane na 3NF.
14.8. etvrta normalna forma (4NF)
Iako BCNF eliminie sve anomalije koje proistiu iz funkcionalnih zavis-
nosti, dalja istraivanja su dovela do uoavanja jo jednog tipa zavisnosti koji se
naziva zavisnost viestruke vrednosti koji takoe moe da prouzrokuje redundat-
nost podataka.
14.8.1. Zavisnost viestruke vrednosti
Pojava zavisnosti viestruke vrednosti u tabeli moe da se desi zbog
1NF koja ne dozvoljava da atribut ima vie vrednosti, tj. da se sastoji iz vie
podataka. Zavisnost viestruke vrednosti bie objanjena na primeru tabele
Relacije loe strukture 145
EkspozituraZaposleniVlasnik iz baze podataka agencije za prodaju i izdavanje
nekretnina.
Tabela: EkspozituraZaposleniVlasnik
IdentBrEkspoziture ImeZaposlenog ImeVlasnikaNekretnine
B003 Zoran Petrovi Jelena Jankovi
B003 Miodrag Aleksi Jelena Jankovi
B003 Zoran Petrovi Predrag Stefanovi
B003 Miodrag Aleksi Predrag Stefanovi
U ovom primeru zaposleni Zoran Petrovi i Miodrag Aleksi rade u ekspozi-
turi B003, a vlasnici nekretnina Jelena Jankovi i Predrag Stefanovi su registrovani
u istoj ekspozituri, dakle B003. Poto ne postoji direktna veza izmeu zaposlenih i
vlasnika u datoj ekspozituri, mora se kreirati zapis za sve kombinacije zaposlenih
i vlasnika da bi se obezbedila konzistentnost. Ova situacija predstavlja zavisnost
viestruke vrednosti u tabeli EkspozituraZaposleniVlasnik. Drugim reima, zavis-
nost postoji zato to su u tabeli predstavljene dve nezavisne 1:* veze.
Zavisnost viestruke vrednosti predstavlja zavisnost izmeu atributa A, B i
C u tabeli, takvu da za svaku vrednost A postoji vie vrednosti B i vie vrednosti
C, pri emu su vrednosti B i C nezavisne jedna od druge.
14.8.2. Defnicija etvrte normalne forme
Tabela je u 4NF ako je u BCNF i ako ne sadri zavisnosti viestruke vrednosti.
4NF je jaa normalna forma od BCNF, jer ne dozvoljava da tabele imaju
zavisnost viestruke vrednosti, a samim tim i redundantne podatke (podatke koji
se ponavljaju). Normalizacija iz BCNF u 4NF se vri dekompozicijom tabele i
izmetanjem atributa zajedno sa njihovim determinantama u novu tabelu. Tabe-
la EkspozituraZaposleniVlasnik iz prethodnog pasusa se dekomponuje na tabele
EkspozituraZaposleni i EkspozituraVlasnik.
IdentBrEkspoziture ImeZaposlenog IdentBrEkspoziture ImeVlasnikaNekretnine
B003 Zoran Petrovi B003 Jelena Jankovi
B003 Miodrag Aleksi B003 Predrag Stefanovi
Tabela: EkspozituraZaposleni Tabela: EkspozituraVlasnik
146 Relacije loe strukture
4NF eliminie redundantnost podataka (podatke koji se ponavljaju) i
mogunost pojave anomalija auriranja.
14.9. Peta normalna forma (5NF)
Uvek kada se vri dekompozicija tabele na dve nove, rezultujue tabele ima-
ju svojstvo poznato kao postojanost spajanja (lossless-join). Ovo svojstvo se odnosi
na injenicu da se tabele nastale dekompozicijom mogu ponovo spojiti u origi-
nalnu tabelu. Meutim, postoje sluajevi kada je potrebno izvriti dekompoziciju
originalne tabele na vie od dve nove tabele. Iako se u praksi prilino retko sreu,
ovakvi sluajevi se reavaju primenom pete normalne forme (5NF).
14.9.1. Postojanost spajanja (lossless-join)
Postojanost spajanja je svojstvo dekompozicije koje omoguava da se, prili-
kom ponovnog spajanja tabela, generiu samo originalni podaci.
Dakle, postojanost spajanja osigurava da se, prilikom ponovnog spajanja
dve tabele u onu ijom su dekompozicijom nastale, generiu samo oni podaci koji
su postojali u originalnoj tabeli pre dekompozicije, to znai da je zagarantovana
potpuna rekonstrukcija originalne tabele.
14.9.2. Defnicija pete normalne forme
Tabela je u 5NF ako nema zavisnosti spajanja.
Normalizacija do 5NF se vri dekompozicijom tabele u kojoj se uoe
zavisnosti spajanja na vie od dve nove tabele. Vano je napomenuti da e
ponovno spajanje bilo koje dve od novonastalih tabela generisati lane
podatke, ali e zato ponovno spajanje svih novonastalih tabela verno rekon-
struisati originalnu tabelu.
Transakcije 147
Pogl av l j e 15
Transakcije
Danas je veoma bitan i znaajan koncept baze podataka po kome je to, u
stvari, zajedniki resurs koga istovremeno (konkurentno) koristi vei broj pro-
grama, jer se pravi efekti baze podataka ispoljavaju kada se radi u mrenom
okruenju. DBMS je upravo tu da upravlja konkurentnim radom vie korisnika,
obezbeuje sinhronizaciju njihovog rada...
Takoe, DBMS ima funkciju da sprei tetne posledice (naruen integritet
baze, nekonzistentno stanje baze...) pri promenama (transakcijama) koje se vre
nad bazom podataka u viekorisnikom okruenju, a za to koristi tehnike zaklju-
avanja podataka. Dalje, u tom smislu posebno je znaajno upravljanje istovreme-
nim (konkurentnim) transakcijama.
Baze podataka kontinuirano skladite informacije koje opisuju trenutno
stanje preduzea. Na primer, baza podataka banke skladiti trenutni bilans na
svakom raunu deponenta. Kada se u stvarnom svetu dogodi neto to men-
ja stanje preduzea, mora da se uradi odgovarajua promena informacija u
bazi podataka. Sa dostupnim DBMS-om, ove promene se deavaju u realnom
vremenu, uz pomo programa koji se nazivaju transakcije koje deluju kada
doe do promena u stvarnom svetu. Na primer, kada klijent stavlja novac u
banku (dogaaj u stvarnom svetu), izvrava se transakcija depozita. Svaka
transakcija mora biti ureena tako da odrava preciznost veze izmeu stanja
baze podataka preduzea koje je kreira i stvarnog sveta. Pored toga to menja
stanje baze podataka, transakcija sama po sebi moe da inicira neke dogaaje
u stvarnom svetu. Na primer, izdvojena transakcija kod bankomata, inicira
dogaaj odliva novca.
148 Transakcije
Odobravanje kreditne kartice je samo jedan primer transakcije koja moe
biti sprovedena za vreme npr. godinjeg odmora u inostranstvu. Pripreme za let
ukljuuju transakciju sa bazom podataka za rezervaciju karata, prolazom kroz
pasoku kontrolu na aerodrom, ukljuujemo i transakciju sa bazom podataka
imigracione slube, a sa prijavljivanjem u hotelu ukljuili smo i transakciju sa
hotelskom bazom podataka za rezervacije soba. ak i telefonski poziv koji se oba-
vi iz telefonske sobe ukljuuje transakciju sa hotelskom bazom podataka zajedno
sa meunarodnim prenosnikom koji uspostavlja vezu. Drugi primeri transakcija
koje se redovno sprovode u svakodnevnom ivotu, ukljuuju i bankomate, skener
sistem u supermarketu, prijave na univerzitetima i sl.
U veini aplikacija baze podataka se koriste kako bi se modelovalo stan-
je nekog stvarnog preduzea. U takvim aplikacijama transakcija predstavlja
program koji posreduje sa bazom podataka, tako da podrava slaganje stanja
preduzea i stanja baze podataka. Praktino reeno, transakcija aurira bazu
podataka tako da prikazuje dogaaje koji su se odrazili na stanje stvarnog pre-
duzea. Jedan primer bi bila transakcija polaganja novca u banku. Klijent daje
blagajniku novac kao depozit. Transakcijom se aurira informacija o raunu
klijenta u BP kako bi se prikazao depozit.
15.1. Defnicija transakcije
Obino se transakcijom naziva niz operacija nad bazom podataka koji
odgovara jednoj logikoj jedinici posla u realnom sistemu. Vano je istai da
ta logika jedinica posla se izvrava do kraja ili se ponitava u celini. Drugim
reima, zahteva se da transakcija bude atomska (nedeljiva) i da sve instrukcije
jedne transakcije moraju biti izvrene ili nijedna. U tom smislu, transakcija
predstavlja osnovnu programsku jedinicu kojom se obezbeuje ouvanje kon-
zistentnosti baze.
Naravno, u jednom trenutku nad bazom podataka se moe izvravati vie
transakcija, i imajui u vidu gore reeno, transakciona obrada oznaava grupi-
sanje izmena sadraja baze podataka u paket koji se potom obrauje kao nera-
skidiva celina. Obrada se uvek odvija tako da se uspeno izvre ili sve transakcije,
ili nijedna od njih.
Transakcije 149
Transakciona obrada je korisna u aplikacijama u kojima jedna akcija mora
da se izvri u vezi sa jednom ili vie drugih akcija. Transakciona obrada je uobi-
ajena u bankarskim, raunovodstvenim i mnogim drugim aplikacijama.
Na primer, kada u nekoj aplikaciji za bankarsko poslovanje premetamo
iznos sa jednog rauna na drugi, ne bismo eleli da stanje na jednom raunu
poveamo, a da ga pri tom na drugom raunu ne smanjimo. Zato emo te dve
izmene grupisati u jednu transakciju.
Transakciona obrada je izuzetno vana u viekorisnikim aplikacijama.
Kada vie korisnika istovremeno unosi izmene u bazu podataka, vie se ne
moemo pouzdati u to da e uvek jedna izmena biti trajno upisana u bazu pre
nego to zapone naredna, osim ako odreenu grupu izmena ne uokvirimo
u transakciju. Zbog toga bi u viekorisnikom okruenju trebalo da koristi-
mo transakcionu obradu.
15.2. Osobine transakcija
Sve transakcije imaju sledee osobine:
atomnost (atomicity),
konzistentnost (consistency),
izolacija (izolation),
trajnost (durability).
Atomnost podrazumeva skup aktivnosti nad bazom podataka po prin-
cipu sve ili nita. Ili su sve aktivnosti uspeno obavljene ili je baza podataka
ostala nepromenjena. DBMS, pored atomnosti transakcija, mora da garantuje
atomnost svake aktivnosti (pojedinane operacije). Primetimo da obini pro-
grami ne moraju imati osobinu atomnosti. Npr. ako je sistem pao u trenutku
dok je program aurirao neki fajl, kada smo podigli sistem, fajl je ostao delimi-
no promenjen. Atomnost izvrenja znai da je svaka transakcija ili potvrena,
ili smo odustali od nje.
Konzistentnost znai da transakcija treba da prevede bazu podataka iz jed-
nog u drugo konzistentno stanje. Za vreme obavljanja transakcije konzistentnost
baze podataka moe da bude naruena. Ukoliko u toku transakcione obrade doe
150 Transakcije
do greke, podaci moraju biti vraeni u stanje pre poetka transakcije. Transakcij-
om se mora pristupati i aurirati BP tako da sva ogranienja integriteta BP ostanu
zatiena. Svaka realna organizacija je organizovano u odnosu na odreena pravi-
la koja ograniavaju mogua stanja organizacije.
Npr. broj studenata prijavljenih za nastavu ne moe prei broj mes-
ta namenjenih za tu nastavu. Kada takvo pravilo postoji, mogua stanja BP su
ograniena na isti nain. Ogranienja integriteta, u odnosu na pomenuta pravila,
potvruju da broj registrovanih studenata koji se unosi u polje BP ne sme da pree
vrednost polja BP koja odgovara veliini sale. Dakle, kada se transakcija registra-
cije zavri, BP mora da zadovolji ovo ogranienje integriteta (pretpostavljajui da
je ogranienje zadovoljeno na poetku transakcije).
Izolacija znai da kada se dve ili vie transakcija izvravaju istovremeno,
njihovi efekti moraju biti meusobno izolovani. Efekti koje izazovu transakci-
je koje se obavljaju istovremeno moraju biti jednaki efektima nekog njihovog
seriskog (jedna posle druge) izvrenja. Zbog poveanja paralelizma u obradi
transakcija dozvoljavaju se razliiti nivoi izolovanosti.
Prilikom rasprave o konzistentnosti BP, usredsredili smo se na efekat jedne
transakcije. Sledee to emo ispitivati je efekat niza transakcija. Rekli smo da
se niz transakcija izvodi sekvencijalno, ili serijski, ako se jedna transakcija niza
izvri pre nego to druga pone. Dobra vest kod serijskog izvravanja je da ako su
sve transakcije konzistentne i baza podataka je inicijalno u konzistentnom stanju.
Serijsko izvravanje uva konzistentnost. Kada prva transakcija niza zapone, BP
je u konzistentnom stanju, a s obzirom da je transakcija konzistentna i nakon nje-
nog izvrenja BP e biti u konzistentnom stanju. Zbog toga to je BP konzistentna
pre poetka druge transakcije, i druga e se obaviti korektno.
Serijsko izvravanje je adekvatno za aplikacije iji su zahtevi skromni.
Meutim, mnoge aplikacije imaju stroge zahteve vremena odziva i pristupa, i
esto jedini nain da se zahtevi zadovolje je konkurentno izvravanje transacija.
Moderni sistemi mogu da istovremeno izvravaju vie od jedne transakcije, a
ovaj metod izvravanja nazivamo konkurentnim. Konkurentno izvravanje je
adekvatno kada se sistemom za obradu transakcija slui vie korisnika. U tom
sluaju bie dosta aktivnih, delimino zavrenih transakcija u svakom trenutku.
Kada se transakcije izvravaju konkurentno, konzistentnost svake od njih nije
dovoljna da obezbedi da baza posle izvrenja obe transakcije u potpunosti prika-
zuje stanje preduzea.
Transakcije 151
Trajnost znai da kada se transakcija zavri (potvrene promene), njeni
efekti ne mogu biti izgubljeni, ak i ako se neposredno po njenom okonanju desi
neki ozbiljan otkaz sistema. Ovaj zahtev sistema za obradu transakcija odnosi se
na to da se informacije ne izgube. Sistem mora da osigura da transakcija, koja je
jednom potvrena, svoj efekat prenese na BP, pa ak i ako kompjuter, ili medijum
na kojem je BP smetena, iznenada prestane da radi.
Npr. ako ste se uspeno prijavili za kurs, oekujete da sistem zapamti vau
registraciju pa ak i ako posle toga prestane da radi. Moemo da primetimo da
obini programi ne moraju imati osobinu trajnosti. Npr. ako se pojave problemi
poto je program izvrio promenu nekog fajla, fajl moe biti vraen u stanje pre
izvrene promene.
15.3. COMMIT i ROLLBACK
Obezbeenje ACID (akronim od rei Atomicity, Consistency, Isolati-
on, Durability) osobina transakcije se radi upotrebom odreenih metoda i
instrukcija:
transakcija poinje sa BEGIN TRANSACTION,
zavrava se sa COMMIT, ime se potvruju promene u bazi podataka
ako su sve instrukcije uspeno izvrene,
zavrava se sa ROLLBACK, ako sve instrukcije nisu uspeno zavrene.
U stvari, postupak transakcije poinje pozivanjem metode BeginTrans, ime
se oznaava poetak niza operacija koje ine jednu logiku jedinicu. Metoda
CommitTrans preuzima sve izmene nainjene od poslednjeg mesta na kome je
bila pozvana metoda BeginTrans i upisuje ih na disk. Metoda RollbackTrans deluje
na suprotan nain od CommitTrans ona ponitava sve izmene i vraa stanje
kakvo je bilo pre poslednjeg poziva metode CommitTrans.
SUBP inicira iz bilo kog razloga ROLLBACK instrukciju, ako doe do
neplaniranog zavretka transakcije.
S obzirom da jedan program moe predstavljati kolekciju transakcija, trans-
akcije mogu biti i ugnjedene. U tom sluaju, COMMIT instrukcija se izvrava
od najnieg do najvieg nivoa, a dovoljno je da se ROLLBACK pojavi samo na
jednom mestu i ponitavaju se promene svih transakcija.
152 Transakcije
SUBP poseduje i odrava dnevnik transakcija (tj. dnevnik aktivnosti,
log file). Za svaku transakciju i za svaki objekat baze podataka koji je ona
aurirala uva se:
vrednost pre auriranja (before-image)
vrednost posle auriranja (afer-image)
Na naredbu Rollback, SUBP koristi vrednosti pre za datu transakciju. Pre
Commit naredbe sistem prvo upisuje vrednosti pre i posle u log fajl. Ako se preki-
ne Commit naredba, mogu se proitati vrednosti posle sa log fajla, to omoguava
ouvanje konzistentnog stanja.
15.4. Konkurentno izvravanje transakcija
Nad modernim bazama podataka transakcije se ne obavljaju u izolovanosti
ve konkurentno. Vie transakcija mogu istovremeno zahtevati iste resurse, isti
zapis baze podataka, itd. U takvim situacijama otvara se mogunost da nekontro-
lisan meusobni uticaj transakcija dovede do nekonzistentnog stanja.
Ve je nagoveteno da je jedan od zahteva SUBP da upravlja konkurentnim
radom vie korisnika, obezbeuje sinhronizaciju njihovog rada... a sve u cilju
spreavanja tetnih posledica pri promenama koje se vre nad bazom podataka u
viekorisnikom okruenju.
Komponente SUBP koje uestvuju u ovom procesu su:
Planer (Scheduler),
Menader transakcija (Transaction manager).
Planer vodi rauna o redosledu akcija kod vie konkurentnih transakcija.
Ako itanje ili upisivanje moe da narui integritet baze podataka, zahtev se ili
vremenski odlae ili se ponitava cela transakcija.
Menader transakcija upravlja celokupnim izvrenjem transakcija.
Idealan sluaj izvravanja transakcija je serijsko izvravanje. Posledica je
korektan rezultat. Serijsko izvravanje transakcija, u stvari, znai da:
nema preplitanja transakcija,
prvo se zavri jedna, zatim druga...
Transakcije 153
Konkurentno izvravanje transakcija je serijabilno (linearno) ako daje isti
rezultat kao i serijsko izvravanje svih transakcija.
Interesantno je da kada se koriste transakcije, poveava se stepen integriteta
izmena koje korisnik unosi, ali se smanjuje konkurentnost, odnosno mogunost
da pomou date aplikacije vei broj korisnika istovremeno menja podatke, jer ima
vie zapisa koji su zakljuani due vreme.
Slika 15.1. Paralelno i serijsko izvravanje transakcija
15.5. Protokol zakljuavanja
Velika je verovatnoa da, ako nema ogranienja, izvravanje transakcija nee
biti serijabilno, a provera serijabilnosti se teko moe obaviti u realnom vremenu.
Zato se vri jedan nain ograniavanja, tj. zakljuavanje i otkljuavanje podataka.
U stvari, mehanizam zakljuavanja (locking) predstavlja upravo nasilno
ostvarivanje serijabilnosti. Transakcija zakljuava objekat baze podataka kome je
pristupila, ime je onemogueno drugim transakcijama da nekorektno operiu.
Postoje dva osnovna nivoa zakljuavanja, na nivou stranice i na nivou
zapisa. Zakljuavanje na nivou stranice je u stvari zakljuavanje itave stra-
nice sa zapisima, a ne zakljuavanje samo pojedinih zapisa, to je sluaj sa
154 Transakcije
zakljuavanjem na nivou zapisa. To znai da, na primer, kada se primenjuje
zakljuavanje na nivou zapisa, vie korisnika moe istovremeno da aurira
zapise u istoj tabeli, nasuprot sluaju kada bi bila zakljuana cela tabela sa
svim zapisima u njoj (na primer, verzije Accessa pre Accessa 2000 nisu omo-
guavale pravo zakljuavanje na nivou zapisa).
Zakljuavanje na nivou zapisa obezbeuje znatno bolje mogunosti vieko-
risnikog pristupa podacima. Meutim, treba voditi rauna da to ne znai uvek i
bolje performanse. Kada se istovremeno aurira veliki broj zapisa, zakljuavanje
na nivou stranice moe da obezbedi bolje performanse. Ipak, u veini sluajeva,
bolje mogunosti viekorisnikog pristupa podacima, nadoknauju neto slabije
performanse.
Postoje dva osnovna pristupa u strategiji zakljuavanja objekata baze
podataka, odakle se izdvajaju dve vrste zakljuavanja:
Ekskluzivno (exclusive lock ili write lock) ili pesimistiko XL
Deljivo (shared lock ili read lock) ili optimistiko SL
Ekskluzivno zakljuavanje znai da u svakom datom trenutku samo jedan
korisnik moe da menja objekat baze podataka. Drugim reima, ako jedna trans-
akcija postavi XL katanac na objekat baze podataka to znai da ne moe ni jedna
druga transakcija da postavi katanac, i ne moe se postaviti ni jedan drugi katanac.
U sluaju ako se primenjuje zakljuavanje na nivou stranice, to je veliki problem,
jer u svakom trenutku samo jedan korisnik moe da aurira bilo koji zapis koji se
nalazi na zakljuanoj stranici.
Deljivo zakljuavanje omoguava da vie korisnika istovremeno aurira iste
zapise uz manji broj sukoba oko zakljuavanja zapisa. Drugim reima, ako jed-
na transakcija postavi SL katanac na objekat baze podataka to znai da druga
transakcija moe da postavi SL katanac na isti objekat, i ni jedna druga ne moe
da postavi XL katanac na taj objekat. Meutim, time se poveava rizik nastajanja
sukoba pri upisivanju podataka. Sukob pri upisivanju nastaje kada:
1. prvi korisnik poinje da aurira objekat baze podataka.
2. drugi korisnik upisuje u bazu podataka izmene objekta koje je on uneo.
3. prvi korisnik pokua da u tom trenutku upie svoje izmene.
Sukob pri upisivanju je tetan, jer on znai da prvi korisnik aurira drugaiji
objekat od onoga sa kojim je poeo da radi.
Transakcije 155
Verovatno je u izboru vrste zakljuavanja prihvatljivije ekskluzivno zaklju-
avanje, da bi se izbegli sukobi pri upisivanju. Meutim, uvek treba imati na umu
korisnike koji due vreme zakljuavaju objekte baze podataka. U tom sluaju bi
bilo dobro razmotriti upotrebu deljivog zakljuavanja. Ovaj problem delimino
moe biti reen i upotrebom ekskluzivnog zakljuavanja sa vremenskim ogra-
niavanjem. Na primer, nekom obrascu se moe dodati mogunost vremenskog
ograniavanja tako da izmene koje korisnik nije snimio posle deset minuta auto-
matski bivaju ponitene.
Protokol zakljuavanja obuhvata sledea pravila:
1. Transakcija koja ita neki objekat baze podataka mora da postavi SL na
taj objekat
2. Transakcija koja eli da aurira neki objekat mora da postavi XL. Ako je
ta transakcija prethodno postavila SL treba da ga promeni u XL
3. Ako transakcija nije postavila katanac, zato to je to pre uradila neka
druga, prelazi u stanje ekanja
4. Transakcija oslobaa XL i SL na kraju, sa COMMIT ili ROLLBACK
naredbom
Oba katanca XL i SL se postavljaju implicitno.
15.6. Oporavak baze podataka
Oporavak baze podataka (RECOVERY) predstavlja proces vraanja baze
podataka u korektno stanje. Sasvim je realno, i deava se, da usled otkaza sistema
mora da se uradi oporavak baze podataka. Uzroci otkaza mogu biti razliiti: gre-
ke u programiranju, greke u operativnom sistemu, nestanak napajanja...
Proces oporavka se zasniva na redudansi podataka, tj. postojanje rezervnih
kopija, koje mogu da se uvaju na disku, traci... Tako, u sluaju otkaza sistema,
oteena baza podataka se rekonstruie u ispravno stanje na osnovu poslednje
kopije, a nekonzistentno stanje se reava tako to se ponitavaju nekonzistentne
promene, a transakcije se ponavljaju.
Trajnost podrazumeva da nijedna promena u bazi podataka koju je napra-
vila zapoeta transakcija, ne sme biti izgubljena. Iz tog razloga, a poto hard disk
156 Transakcije
moe da zakae, baza podataka se mora uvati na razliitim hard diskovima. Jed-
nostavan primer postizanja trajnosti jeste uvanje razliitih kopija baze podataka
na razliitim diskovima (koji se, po mogustvu, napajaju iz razliitih izvora ener-
gije). Poto je istovremeni pad oba diska malo verovatan, velika je verovatnoa
da e barem jedna kopija hard diska biti uvek dostupna. Duplikat, ili disk imid,
podrava ovakav pristup. Slika hard-diska (duplikat mirrored disk) je sistem
uvanja po kome, kad god aplikacija zahteva da disk izvri operaciju upisa, sistem
simultano belei istu informaciju na dva razliita diska. Tako je prvi disk identi-
na kopija, ili disk imid, onog drugog.
U transakcijama koje obrauju aplikacije, sistem disk imida moe da
dostigne izuzetnu dostupnost sistema. Ukoliko jedan disk imid padne, sis-
tem moe da nastavi dalje koristei drugi, bez usporavanja ili zaustavljanja.
Kada se zameni disk koji je zakazao, sistem mora da ponovo sinhronizuje oba.
Nasuprot tome, kada se trajnost postie samo pomou LOG fajla (dnevni-
ka), proces oporavka nakon pada hard diska moe trajati znatno due, a u
toku tog perioda sistem je nedostupan korisnicima. Ipak, treba podsetiti da
ak i kada transakcija u procesu koristi disk imid, i dalje se mora koristiti
dnevnik kako bi se postigla atominost na primer, da bi se ponitila trans-
akcija nakon pada.
Baze podataka i aplikacije 157
Pogl av l j e 16
Baze podataka i aplikacije
Nije redak sluaj da proizvoai savremenih sistema za upravljanje bazama
podataka (u daljem tekstu SUBP), pored serverske aplikacije (koja omoguava
administriranje korisnika, kontrolu pristupa, odravanje referencijalnog integri-
teta i konzistentnost podataka BP), najee nude i klijentske aplikacije (alate).
Primeri ovakvih sistema su Access za Microsof JetDB i MS SQL, Enerprise DB
Designer za MySQL, Oracle, ..
Klijentski programi predstavljaju prijateljska grafika okruenja koja
omoguavaju brzo kreiranje upita (QBE
3
), ugnjedenih procedura, izvetaja
i formi za unos podataka. Prethodno navedene prednosti omoguavaju brzu
izradu uslunih aplikacija.
Slika 16.1. vrsta sprega Access-a i MS JetDB
3
QBE query by example, alat koji omoguava kreiranje SQL upita bez potrebe poznavanja
sintakse SQL jezika. Primer QBE je Access-ov query designer i query wizard
158 Baze podataka i aplikacije
Nedostatak ovako koncipiranih aplikacija je da su vrsto povezane za
razvojno okruenje (high coupling) i da je komunikacija sa okruenjem (ostalim
aplikacijama) obino teko izvodljiva, ili nemogua (slika 16.1). Posledica ovakvog
(jednoslojnog, ili dvoslojnog) modela je da se aplikacije dizajnirane na ovaj nain
teko odravaju (modikacija postojeeg reenja, unapreenje dodavanjem
novih komponenti, auriranje novim verzijama serverskih i klijentskih platformi
i sl.). Drugu manjkavost predstavlja injenica da je dizajn korisnikog interfejsa
i implementacija logike obrade podataka ogranieno na mogunosti klijentske
tehnologije. Na primer, ne mogu se menjati svi parametri ekranskih formi (izgled
kontrola), oteano je ubacivanje kontrola koje eksplicitno nisu ponuene, otea-
na je izrada novih vrsta kontrola. Programiranje je ogranieno mogunostima
programskih jezika ugraenog u klijentski alat (npr. Visual Basic for Access ne
podrava sve koncepte objektno orjentisanog programiranja).
Pojavom objektno orjentisanog programiranja (u daljem tekstu OOP)
omogueno je potpuno razdvajanje podataka od logike njihove obrade i od inter-
fejsa prema korisnicima podataka. Aplikacija se gradi od objekata, od kojih svaki
preuzima odgovornost za obavljanje specinih funkcionalnosti aplikacije. Tako
se izdvajaju grupe objekata prema funkcionalnosti. Na primer, formira se grupa
objekata od kojih se gradi korisniki interfejs, ili, grupa objekata koji ostvaruju
konekciju sa BP, izvravaju upite nad bazom i prihvataju rezultate upita. Objekti
meusobno komuniciraju preko funkcionalnih poziva, pri emu ziki mogu biti
razdvojeni (na razliitim raunarskim platformama), a aplikacija time postaje dis-
tribuirana. Ova pojava grupisanja objekata prema osnovnim funkcionalnostima
je nazvana raslojavanje aplikacije.
16.1. Slojevita struktura aplikacija
Raslojavanje aplikacije predstavlja odvajanje njenih delova prema funkcio-
nalnosti. U OOP, kao to je ve napomenuto, grupiu se objekti srodnih funkcio-
nalnosti (u daljem tekstu slojevi). Grupisanjem je postignuto da se komunikacija
izmeu slojeva (funkcionalni pozivi) svedu na najmanju moguu meru i time
olaka odravanje aplikacije. Promene u funkcionalnosti (programskom kodu)
objekata jednog sloja nee imati posledice na objekte u ostalim slojevima, a imae
sporadine efekte ak i za objekte u istom sloju. Jedno od pravila dobrog dizajna
aplikacija je da se u izmeu objekata (klasa) u istom sloju postigne visoka kohezija
(high cohesion), a slaba sprega izmeu slojeva (low coupling).
Baze podataka i aplikacije 159
16.2. Troslojni model kao osnovni model
Osnovni aplikacioni model je troslojni model, koji namee dizajnerima i
programerima zahtev da aplikacija ima razdvojene tri celine (Slika 16.2):
1. Prezentacioni sloj (presentation layer)
2. Sloj poslovne logike (buisness logic layer)
3. Sloj podataka (data layer)
Nazivi slojeva implicitno otkrivaju njihove funkcionalnosti. Objekti prezen-
tacionog sloja su zapravo objekti korisnikog interfejsa: forme za unos, prome-
nu, brisanje i pregled podataka. Obradu podataka vri sloj poslovne (aplikacione)
logike. Ovaj sloj sadri kljune objekte sistema, koji sinhronizuju procese pre-
zentacionog i sloja podataka. Sloj podataka ine objekti koji komuniciraju sa BP,
preciznije sistemom sa upravljanje BP.
Slika 16.2. Troslojni aplikacioni model
Slojevi komuniciraju funkcionalnim pozivima. Poto su podaci u trosloj-
nom modelu dostupni (korisnicima posredstvom interfejsa prezentacionog sloja)
preko sloja poslovne logike (indirektno), moe se rei da su mogunosti zatite
integriteta podataka mnogo vee nego kod dvoslojnih aplikacionih modela.
16.3. Vieslojni modeli
Aplikacije mogu imati vie od tri sloja (Slika 16.3). Ova pojava je veza-
na za distribuirane poslovne sisteme, kod kojih podaci mogu biti razdvojeni na
160 Baze podataka i aplikacije
vie razliitih mesta, i koji sadre vie nivoa obrade. Najei primer vieslojnih
distribuiranih sistema su Web aplikacije. Kod Web aplikacija, korisniku su vidljive
samo Web stranice, isporuene na klijentski pretraiva od strane Web servera i
komponovane od razliitih sadraja. Komponente stranice mogu biti kontrole za
interakciju sa korisnikom ili veze (linkovi) prema posebnim aplikacijama (modu-
lima). Ove sofverske komponente mogu biti ugnjedene na konkretnom serveru,
ali isto tako mogu biti distribuirane na razliite platforme.
Slika 16.3. etvoroslojni aplikacioni model
Distribuiranjem aplikacija vri se rastereenje hardverskih (server-
skih) platformi i veza (linkova) izmeu korisnika i aplikacija. Poto se razli-
ite grupe funkcionalnosti odvijaju na razliitim mestima, distribuiranjem
je olakano upravljanje i odravanje aplikacija. U primeru na prethodnoj
slici, prezentacioni sloj je Web pretraiva na klijentskoj platformi, a sloj
podataka ine 2 servera BP. Web server je zaduen za isporuivanje zahte-
vanih Web stranica klijentima. Takoe odgovoran je za upravljanje korisni-
kom sesijom. Drugi meusloj ine razliiti aplikacioni serveri (aplikacije):
za servisiranje elektronske pote, za upload i download fajlova, aplikacioni
server koji omoguava dinamiko komponovanje Web stranica i transakci-
onu obradu prema BP, itd.
Baze podataka i aplikacije 161
16.4. Aplikacije servisi (nezavisne softverske komponente)
Iako su Web aplikacije vieslojne i distribuirane, njene softverske kom-
ponente su i dalje uzajamno zavisne i predstavljaju deo jedne celine. Da bi se
omoguilo da softverska komponenta bude dostupna razliitim aplikacija-
ma, bila je potrebna formalizacija interfejsa koja bi omoguila komuniciranje
sa komponentom. Web servisi su zasnovani na tri osnovna standarda: XML
4
(za prikazivanje podataka), SOAP
5
(za razmenu podataka izmeu davala-
ca i korisnika servisa) i, za potrebe opisa servisa, definisan je poseban jezik
WSDL
6
i nain uspostave veze.
Slika 16.4. Arhitektura Web servisa
Za postojanje servisa potrebne su 3 komponente: davalac servisa, korisnik
servisa i provajder.Davalac Web servisa registruje svoj Web servis kod direkto-
rijuma Web servisa (Slika 16.4). Registrovanje bi znailo da se Web servis for-
malno opisuje WSDL-om (naziv servisa, lokacija servisa, nain pristupa servisa),
kako bi korisnici mogli da ga eksploatiu. Registrovanjem Web servisa, davalac
ga zapravo publikuje svoju aplikaciju ini dostupnom za sve zainteresovane
korisnike. U ulogama korisnika Web servisa pojavljuju se druge aplikacije koje
na taj nain proiruju svoje funkcionalnosti koje pruaju krajnjim korisnicima.
to je dokumentacija za API
7
kod konvencionalnih aplikacija, to je WSDL opis
Web servisa kod njihovih davalaca. Najei nain razmene podatka izmeu
4
XML extensible markup language
5
SOAP simple object access protocol
6
WSDL Web Service Denition Language
7
API Application Programmable Interface
162 Baze podataka i aplikacije
davalaca i korisnika Web servisa je korienjem SOAP-a. Format podataka koji
se razmenjuju je u XML formatu.
Web servisi predstavljaju tehnologiju budunosti, jer omoguavaju pove-
zivanje razliitih aplikacija, tehnologija, postavljenih na razliitim platformama.
Formalizacija opisa servisa omoguava njihovu mainsku itljivost tako da apli-
kacije postaju uzajamno kooperativne bez posredovanja oveka. Web servisi uki-
daju i barijere izmeu tzv.desktop i Web aplikacija.
16.5. Specifnosti pristupa BP iz
razliitih aplikacionih slojeva
16.5.1. Pristup podacima iz prezentacionog sloja
Prezentacioni sloj sadri objekte korisnikog interfejsa. Bez obzira da li se
radi o Desktop ili Web aplikacijama, to su uokvireni prozori sa naslovnom linijom
i koji sadre kontrole za interakciju sa korisnikom (Slika 16.5).
Slika 16.5. Izgled korisnikog interfejsa Desktop aplikacije
Svaka kontrola prezentacionog sloja predstavlja poseban objekat, koji se
moe dodati prevlaenjem sa palete tzv. Drag&Drop (ako se koristi vizuelni
Baze podataka i aplikacije 163
alat za dizajn), ili unoenjem programskog koda u datoteku (ako se koristi obian
tekstualni editor). Fiziki gledano, formiraju se fajlovi (datoteke) odreenog tipa,
koji sadre kod koji se kompajlira, linkuje i izvrava, ili se interpretira (od strane
raunara) generiui pritom korisniki interfejs.
Korisniki interfejsi kod Web aplikacija dizajniraju se u skladu sa ograni-
enjima Web itaa koji se koriste na klijentskoj strani (Internet Explorer, Nets-
cape navigator, Modzila i sl). ita interpretira HTML skript koji je primljen od
strane Web servera i otvara Web stranicu koja u sebi moe da sadri formu sa
kontrolama. Ovi interaktivni elementi omoguavaju korisniku unos podataka i
akcije slino kao kod desktop aplikacija.
Slika 16.6. Izgled korisnikog interfejsa Web aplikacije
Izgled i funkcionalnosti interfejsa odreeni su odgovarajuim program-
skim kodom sadran u datotekama aplikacija. U ove datoteke mogu da se doda-
ju i funkcionalnosti za pristup podacima iz BP. Za sluaj kada se direktne funk-
cije za itanje, auriranje i dodavanje podataka iz/u BP deniu u fajlovima u
kojima se denie korisniki interfejs kaemo da predstavlja pristup podacima
iz prezentacionog sloja.
Access-ove datoteke predstavljaju najei primer pristupa podacima
iz prezentacionog sloja. U fajlovima koji imaju mdb ekstenziju integrie se
164 Baze podataka i aplikacije
kompletna BP, sa formama, izvetajima, makroima i modulima - kodiranim
procedurama u VBA
8
jeziku.
1:Private Sub Form_Close()
2:DoCmd.RunSQL UPDATE KolicineSred SET [KOLIC] =
3:Forms![TSredstva]![RecSum] WHERE KolicineSred.ID_BR =
4:Forms![TSredstva]![ID_BR] AND
5:KolicineSred.SifDug=Forms![TSredstva]![SifDug];
6:End Sub
Fragment 1: Pristup tabeli korienjem VBA skripta koji sadri SQL naredbu
Ovakve aplikacije su obino voene dogaajima korisnikog interfejsa
(Event Driven Applications). Prethodni primer (Fragment 1) predstavlja pro-
ceduru koja je vezana za formu (korisn.interfejs) i koja se aktivira na dogaaj
zatvaranja forme. U linijama 2-5 predstavljena je jedna SQL naredba koja aurira
tabelu KolicineSred postavljajui polje KOLIC u zapisu prema uslovima u WHE-
RE klauzuli (id broj i ifra dugovanja) na vrednost sadranu u kontroli RecSum u
formi Tsredstva.
Na slian nain funkcionie pristup podacima iz prezentacionog sloja u
Web aplikacijama. Kao to je reeno, ove aplikacije takoe sadre forme popunje-
ne kontrolama koje omoguavaju unos i pregled podataka.
Fragment 2: Izgled Web stranice Fragment 3: Kod Web stranice iz fragm.2
8
VBA Visual Basic for Access
Baze podataka i aplikacije 165
Forme u Web aplikacijama predstavljene su stranicama koje su kodirane
u HTML jeziku (Fragment 3). Web ita na klijentskoj maini interpretira ovaj
kod i prikazuje stranicu u svom prozoru (Fragment 2). U gornjem primeru pri-
kazane su kontrole za unos teksta (rma, adresa,postkod). Kada korisnik unese
potrebne podatke, pritiskom na dugme dodaj, pokree se akcija u zaglavlju stra-
nice (lin.1 - Fragment 3).
1: <html>
2: <body>
3: <%
4: set conn=Server.CreateObject(ADODB.Connection)
5: conn.Provider=Microsof.Jet.OLEDB.4.0
6: conn.Open d:/webdata/partneri.mdb
7: sql=INSERT INTO kupci (naz_rme, adresa, postbroj)
8: sql=sql & VALUES
9: sql=sql & ( & Request.Form(rma) & ,
10: sql=sql & & Request.Form(adresa) & ,
11: sql=sql & & Request.Form(postkod) & )
12: on error resume next
13: conn.Execute sql,recaected
14: if err<>0 then
15: Response.Write(Nemate prava na dodavanje podataka!)
16: else
17: Response.Write(<h3>Klijent & Request.Form(rma) 18: & je dodat</h3>)
19: end if
20: conn.close
21: %>
22: </body>
23: </html>
Fragment 4: Sadraj demo_add.jsp
Razlika kod Web aplikacija je to se kod za pristup BP izvrava na Web ser-
veru. Podaci koje je korisnik uneo prenose se u vidu HTTP
9
zahteva na server,
gde se koriste pri izvravanju fajla demo_add.asp. Navedena datoteka kreirana je u
ASP
10
tehnologiji i predstavlja samo jednu od velikog broja Web tehnologija koje
omoguavaju dinamiko generisanje sadraja. Ova datoteka (Fragment 4), pored
9
HTTP Hypertext Transfer Protokol protokol koji omoguava transfer podataka izmeu
Web stranica
10
ASP Active Server Pages, Microsoft tehnologija za generisaje dinamikih Web stranica
166 Baze podataka i aplikacije
standardnog HTML koda, sadri i programski kod pisan u nekom od jezika pro-
izvedenih u Microsof-u (C++, C#, VisualBasic), koji je korien za unos podata-
ka u BP. Nakon uspostave konekcije sa Access-ovom BP partneri.mdb (lin.4-6),
komponuje se SQL naredba koja treba da izvri dodavanje podataka u tabeli kupci
koje je korisnik uneo preko prethodne Web stranice (Fragment 2 i 3) (lin.7-11).
Izvrenje stringa SQL naredbe vri se preko objekta konekcije conn (lin.13). Ako
je dodavanje zapisa uspeno, server isporuuje klijentskom itau zahtevanu stra-
nicu s porukom Klijent <naziv> je dodat. Ako dodavanje nije uspelo, prikazae se
poruka Nemate prava na dodavanje podataka.
Osnovna karakteristika skripta koji se koristi u kreiranju Web stranica je da
se isti zasniva na tzv. tag-ovima (npr. <html>, ili </body>). Proizvoai framowork -
ova za razvoj Web aplikacija nude i tag-ove za komunikaciju sa BP. Na primer za
JSP
11
postoji biblioteka tag-ova JSTL
12
, koja sadri sql tag-ove. Korienjem sql tag-
ove, postie se neposrednost i standardni pristup u razmeni podataka aplikacije i
BP. Da bi se sql tag-ovi koristili u Web stranicama, potrebno je ukljuiti biblioteku
tagova i izvriti konekciju prema BP.
1: <sql:query var=upit1>
2: SELECT * FROM moja_tabela
3: </sql:query>
4: <c:forEach var=naziv_polja items=${upit1.columnNames}>
5: <th><c:out value=${naziv_polja}/></th>
6: </c:forEach>
7: <c:forEach var=red items=${upit1.rows}>
8: <tr>
9: <c:forEach var=kolona items=${red}>
10: <td><c:out value=${kolona.value}/></td>
11: </c:forEach>
12: </tr>
13: </c:forEach>
Fragment 5: Korienje SQL tag-ova za generisanje upita
U prethodnom primeru (Fragment 5) predstavljen je upit korienjem sql
tag-a query. Sql tag predstavlja poseban entitet (lin.1-3), koji je imenovan kao
upit1. U ovom tagu je ugnjeden standardni SQL upit (lin.2). Poto je upit izvren,
11
JSP Java Server Pages, Java tehnologija za generisaje dinamikih Web stranica
12
JSTL JSP Standard Tag Library
Baze podataka i aplikacije 167
dalje se predstavljaju rezultati upita. U tu svrhu koriste se c tag-ovi iz JSTL. Najpre
se formira zaglavlje tabele u koje se smetaju nazivi kolona (lin.4-6) koji se dobija-
ju iz sql tag-a pozivom njegove metode columnNames. Nakon toga se pomou
2 for petlje, ugnjedene jedna u drugoj (lin.7-13 spoljnja, lin.9-11- unutran-
ja), formiraju red po red, korienjem sql tag metode rows, a u svakom redu se,
korienjem sql tag metode value, popunjavaju konkretne vrednosti podataka za
svako polje (kolonu).
PHP je Web orijentisan programski jezik, ali i jedna od najmasovnije
korienih tehnologija za kreiranje Web aplikacija. U poetku ist proceduralan
jezik, koji jako podsea na C, prerasta sa verzijama 4 i 5 u objektno orjentisan
jezik koji se moe integrisati sa drugim tehnologijama.
1: mysql_connect(biblioteka.snemanja.net:3617,$username,$password);
2: @mysql_select_db(biblioteka) or die( Nema konekcije sa BP);
3: $result = mysql_query(SELECT * FROM knjige);
4: $num = mysql_numrows($result);
5: mysql_close();
6: $i=0;
7: while ($i < $num) {
8: $naslov = mysql_result($result,$i,naslov);
9: $autor = mysql_result($result,$i,autor);
10: $i++;
11:}
Fragment 6: SQL upit kreiran u PHP-u
U prethodnom kodu (Fragment 6) predstavljen je upit pisan u PHP-u.
Varijable su oznaene preksom $ ($result, $num itd.). PHP jezik sadri iz-
uzetno bogatu podrku za MySQL SUBP. Postoji veliki broj ugraenih funk-
cija koje jako ubrzavaju pisanje koda a time i produktivnost izrade aplikacija:
mysql_connect za konekciju na SUBP (lin.1); @mysql_select_db za izbor
BP (lin.2); mysql_query za izvrenje SQL INSERT/UPDATE/SELECT naredbe
(lin.3); mysql_numrows za dobijanje broja zapisa kao rezultata (lin.4); mys-
ql_close za zatvaranje konekcije sa BP i SUBP (lin.5). Za razliku od ostalih
jezika, PHP omoguava pristup podacima u rezultujuem setu nakon raskida
konekcije (lin.8,9), tako da je konekcija vremenski minimalna.
Prednosti pristupa podacima u BP iz prezentacionog sloja je jednostavnost i
brzina implementacije. On je pogodan za jednostavne aplikacije (sve je na jednom
168 Baze podataka i aplikacije
mestu), kao to su aplikacije za testiranje i isprobavanje. Ovakav pristup je pogo-
dan i u sluajevima kada se izvravaju jednostavne SQL naredbe (naredbe koje ne
sadre ugnjedavanje, ne obuhvataju kombinovane podatke iz vie tabela) i kada
je ciljni SUBP unapred poznat i nepromenjiv.
Za razliite vrste SUBP, pa ek i za razliite verzije SUBP od istih proiz-
voaa, postoje razlike u sintaksi SQL naredbi. U sluaju promene, ili instalacijom
nove verzije SUBP, neretko je potrebno menjati kod SQL naredbi koji se nalazi u
objektima korisnikog inerfejsa. Ovo je jedna od kljunih slabosti pristupa poda-
cima iz prezentacionog sloja.
Poslovne aplikacije su znatno sloenije. Za sloenije
13
aplikacije, ovakav
pristup bi doveo do konfuzije ve u procesu implementacije, jer bi se preklapali
poslovi dizajnera i programera. Odravanje i upravljanje neraslojenim sofverom
je mukotrpno i esto ispod oekivanih rezultata.
16.5.2. Pristup podacima iz sloja poslovne logike
Ovo je najee korien pristup kod vieslojnih aplikacija. U sloju poslovne
logike postoje entiteti (klase ili moduli) koji su zadueni za komunikaciju sa BP.
Preostali delovi aplikacije razmenjuju podatke sa BP iskljuivo preko ovih entite-
ta. U OOP, klase koje omoguavaju interakciju sa BP, obino su ve dizajnirane i
implementirane od strane proizvoaa SUBP, ili proizvoaa sofverskih alata za
razvoj aplikacija. Takve klase su CDatabase, CRecordset klase iz Microsof (MFC)
fondacije klasa, ResultSet, Connection klase u Java-inom paketu java.sql.*. Posao
programera je, ili da koristi navedene klase u originalnom obliku, ili da kreira
nove klase izvoenjem iz ponuenih, modikujui im funkcionalnosti prema
specinim potrebama aplikacije.
U sledeem primeru (Fragment 7), predstavljen je kod pisan u C++ koji
koristi CDatabase klasu u osnovnom obliku da bi ostvario konekciju s BP (lin.4
BP zvana baza) i izvedenu klasu ProizvodiSet iz CRecordset klase za preuziman-
je podataka iz tabele proizvoda. Ako je konekcija s BP uspostavljena, dinamiki
se kreira pSet objekat klase ProizvodiSet (lin.6). Funkcija Open nasleena je iz
CRecordset klase. Ova funkcija ima opcioni broj argumenata. Jedan od argumena-
ta je SQL naredba koja treba da se izvri u BP. Ako nema argumente, podrazume-
va se da se uzima celokupan skup zapisa iz tabele proizvoda.
13
Sloenost aplikacije, izmeu ostalog, predstavljena je brojem razliitih fukcionalnosti
koje aplikacija moe da obavi
Baze podataka i aplikacije 169
Fragment 7: Korienje MFC C++ klasa
u komunikaciji s BP
Fragment 8: Korienje Java klasa iz
paketa java.sql u komunikaciji s BP
Objekat pSet prihvata sve podatke dobijene iz BP. Konkretnim podacima
pojedinanih zapisa se pristupa u ciklinoj strukturi (while petlja, lin.8-12). Poda-
ci se dobijaju posredno, preko pSet objekta, koji sadri podatke koji odgovaraju
poljima odgovarajue tabele. Na primer, podatak m_Naziv u klasi ProizvodiSet
(lin.10) odgovara polju naziv u tabeli proizvodi. Nakon preuzimanja podataka jed-
nog zapisa, poziva se funkcija MoveNext nasleena od klase CRecordset, tako da
se u sledeoj iteraciji preuzimaju podaci sledeeg zapisa iz tabele. Nakon preuzi-
manja podataka, zatvara se i unitava pSet objekat (lin.13,14) i konekcija s bazom
(lin.15). Ostale naredbe (lin.17 do kraja) namenjene su za reavanje greaka to-
kom konekcije s BP.
U sledeem fragmentu (Fragment 8) predstavljeno je korienje Java klasa
iz paketa java.sql. Nakon instanciranja potrebnih objekata (Connection, ResultSet,
ResultSetMetaData, Statement), vri se povezivanje s bazom (lin.7), a zatim izvr-
enje SQL naredbe za dodavanje novog zapisa u tabelu t_mtutor_groups (lin.8).
Nakon toga zatvara se konekcija sa BP, a sve naredbe se obmotavaju u try catch
blok radi kontrole greke.
170 Baze podataka i aplikacije
Slika 16.7. Pristup BP iz klasa poslovne logike
Oba primera (Fragmenti 7 i 8) ukazuju na veoma slinu metodologiju. Naj-
pre se instanciraju potrebni objekti, zatim se uspostavi konekcija s ciljnom BP,
obavi se eljeni transfer podataka. Pri tome, podaci se uzimaju/menjaju/doda-
ju iz/u tabele BP, korienjem objekata u sloju poslovne logike. Pre zavretka
metoda konekcija s BP se zatvara na nain predvien standardnim protokolom,
a cela operacija se nadzire korienjem try catch blokova za kontrolu neeljenih
izuzetaka. Prednost ovakvog pristupa je to se objekti koji razmenjuju podatke
sa BP dizajniraju potpuno nezavisno od prezentacionog sloja (Slika 16.7). Ovi
objekti (tzv. data brokers) preuzimaju ulogu posrednika izmeu entiteta u BP i
ostalih objekata aplikacije.
16.5.3. Pristup iz sloja podataka
(poziv ugnjedenih procedura)
Pristup podacima u BP iz sloja poslovne logike ima nekoliko nedostataka.
Ovi nedostaci proizilaze iz injenice da se SQL naredbe (za upite, brisanja, doda-
vanja i izmene podataka) nalaze direktno u izvornom kodu aplikacije (zapravo u
klasama sloja poslovne logike). Takozvano hardcode-iranje naruava optimizova-
nost koda - time i cele aplikacije. Pristup BP iz sloja podataka poveava obim koda,
Baze podataka i aplikacije 171
ime se oteava njegovo auriranje. Na primer ako se vri promena strukture, ili
naziva jedne tabele u BP, ovo auriranje mora da se izvede u svim SQL naredbama
u izvornom kodu, u kojima se referenciraju podaci te tabele. Tranzijentno, apli-
kacija mora ponovo da se generie, instalira i podeava. Kod aplikacija u velikim
poslovnim sistemima, ovakav pristup moe da stvori mnoge probleme.
Reenje za ovakav problem je izmetanje SQL naredbi iz izvornog koda apli-
kacije u SUBP. SQL naredbe se ugnjedavaju kao procedure (stored procedure) u
ciljnu BP (u jednom SUBP moe biti vie BP). Veina dananjih SUBP omoguava
kreiranje ugnjedenih procedura.
1: CREATE PROCEDURE `spUsedTestSets`(IN u_id INTEGER(11))
2: BEGIN
3: SELECT * FROM `t_mtutor_used_test_sets` WHERE ( user_id = u_id );
4: END;
Fragment 9: Primer denisanja ugnjedene procedure
U prethodnom fragmentu (Fragment 9) prikazana je denicija 1 ugnjede-
ne procedure u SUBP MySQL 5.x. Ugnjedena procedura slina je bilo kojoj funk-
ciji, izuzev to ne vraa vrednosti, ve sadri samo parametre. Parametri mogu
biti ulazni oznaeni slubenom reju IN, i izlazni oznaeni slubenom reju
OUT. Kod procedura koje vraaju vie zapisa, esto se deniu samo ulazni para-
metri. Umesto izlaznih parametara, rezultati (zapisi) se prihvataju korienjem
klase koja enkapsulira skup zapisa (npr. ResultSet, ili CRecordset). Pri denisanju,
procedura se najpre imenuje i deklariu se njeni parametri (lin.1). Implementa-
cija zapoinje slubenom reju BEGIN, a zavrava slubenom reju END. Izmeu
poetka i kraja je telo procedure u vidu SQL izraza koji treba da se izvri (lin.3).
Ulazni prametri procedure se u telu koriste najee kao kriterijumi SQL izraza
(u_id). Denisane procedure se pozivaju iz aplikacije, prosleivanjem argumena-
ta i prihvatanjem rezultata njihovog izvrenja.
U sledeem primeru (Fragment 10) prikazan je nain korienja ugnje-
dene procedure u Java kodu. Najpre se (lin.1) preko objekta konekcije sa BP
(conn) vri njeno pozivanje (naziv procedure je spUsedTestSets) i preuziman-
je od strane objekta aplikacije (cs). Zatim se preko istog objekta prosleuju
parametri (lin.2).
1: cs = conn.prepareCall({call spUsedTestSets(?)});
2: cs.setInt(user_id, u_id);
3: rs = cs.executeQuery();
172 Baze podataka i aplikacije
4: while( rs.next() ){
5: int test_id = rs.getInt(test_set_id);
6: Date test_dat = rs.getDate(date);
7: }
Fragment 10: Primer korienja ugnjedene procedure
Upit se izvrava eksplicitnim pozivanjem (lin.3). Rezultati upita se prihva-
taju u objekat klase Recordset (rs). Kroz ciklinu strukturu (lin.5-7), preuzimaju se
pojedinani podaci iz skupa zapisa dobijenih upitom.
Slika 16.8. Pristup BP preko ugnjedenih procedura
Korienje ugnjedenih procedura smanjuje kompleksnost sloja poslovne
logike (Slika 16.8). S druge strane, poveava se kompleksnost BP i optereuje se
SUBP. Posledica toga je da se deo programerskih poslova prebacuje na adminis-
tratore BP. Ugnjedavanje procedura ima jo jednu znaajnu prednost. Procedure
se prave za ciljnu vrstu i verziju SUBP. One se testiraju bez potrebe povezivan-
ja s bilo kakvom aplikacijom. Na taj nain je olakano odravanje i proirivanje
sloenih sistema na nivou podataka.
Baze podataka i aplikacije 173
16.6. Tehnologije koje omoguavaju razmenu podataka
izmeu BP i aplikacija
ODBC (Object Database Connectivity)
ODBC veznik se ostvaruje korienjem ODBC driver-a. ODBC driver je
sistemski sofverski proizvod specijalne namene. ODBC driver-i su podprogra-
mi koji se sami za sebe ne mogu koristiti. Aplikacije mogu pristupati podacima
u SUBP preko ODBC veznika koji se denie nad specinim ODBC driver-
om. Za svaku verziju sistema za upravljanje BP i operativnog sistema dizajni-
raju se zasebni ODBC driver-i. To znai da se, na primer ne moe koristiti isti
ODBC driver za verziju 3 i za verziju 5 SUBP MySQL. Isto tako, ODBC driver
za istu verziju SUBP (npr.MySQL v5) ne moe se koristiti na razliitim platfor-
mama (Linux, Windows OS).
Slika 16.9. Postojei ODBC veznici u sistemu
174 Baze podataka i aplikacije
Proizvoai OS obino u instalaciji OS nude ve niz veznika za njihove
SUBP. Na primer, Microsof uz Windows OS instalira na sistem ODBC veznike za
njegove SUBP (Access, SQL server, FoxPro). Spisak veznika je dostupan iz admi-
nistratorske konzole Control Panel-a (slika 16.9).
Tehnologija ODBC-a funkcionie na sledei nain. Najpre se bira odgo-
varajui ODBC driver. Nakon toga se bira baza podataka s kojom aplikacija treba
da razmenjuje podatke. Pre kreiranja aplikacije potrebnije izvriti registrovanje
BP kojoj e se pristupati posredstvom ODBC veznika (slike 16.10 i 16.11).
Slika 16.10. Davanje naziva ODBC vezniku
Slika 16.11. Izbor BP
Registracija je obavezna i obuhvata dodelu naziva ODBC vezniku i oznaa-
vanje BP koja e predstavljati izvor podataka u ODBC vezniku. Naziv ODBC
veznika ne mora imati nikakve veze sa stvarnim nazivom BP u SUBP. Nakon ovog
kratkog postupka, ODBC veznik je spreman za korienje.
Baze podataka i aplikacije 175
Slika 16.12. Korienje ODBC veznika iz C++ aplikacije
U aplikaciji (slika 16.12) se poziva izvor podataka (ODBC veznik) po svom
imenu. Dalje se pristupa tabelama u BP preko naziva tabela, poljima u tabelama
preko naziva polja. U primeru sa slike naziv ODBC je baza. Tabela kojoj se pristu-
pa naziva se Zabeleske, a ID, datum, poruka su polja u tabeli. Komunikacija (preg-
ledanje, dodavanje, uklanjanje i editovanje zapisa) vri se korienjem SQL jezika
specinog za SUBP koji sadri BP ije podatke aplikacija koristi.
ADO (ActiveX Data Objects)
ADO ActiveX Data Objects predstavlja tehnologiju koja omoguava
pristup svemu to moe da poseduje podatke (e-mailovi, Excel tabele, dato-
teke). ADO dakle poseduje mnogo veu fleksibilnost (u odnosu na vrstu iz-
vora podataka) nego ODBC veznici. ADO tehnologija je dizajnirana da bol-
je podri savremene zahteve za distribuiranjem razliitih vidova multime-
dijalnih podataka.
176 Baze podataka i aplikacije
ADO sloj predstavlja nadgradnju nad OLE
14
radi uproavanja pristupa
podacima. Podacima kao to su video, audio klipovi, ilustracije, mnogobrojni
razliiti formati dokumenata, mogue je prii iz korisnike aplikacije korienjem
tzv. ActiveX komponenti. Postoji nekoliko vrsta komponenti:
1. Automatizacioni serveri (Automation Servers) i kontroleri kompo-
nente davaoci (serveri) i potraioci servisa (kontroleri); Primer ovakvog
pristupa su aplikacije mail agenti, koje koriste funkcionalnosti Micro-
sof Outlook-a; pristup automatizacionim serverima vri se korienjem
IDispatch interfejsa.
2. ActiveX Kontrole kontrole su ekvivalent OLE Controls (datoteke
sa ekstenzijom OCX); one su najee namenjene proirenju funk-
cionalnosti korisnikih interfejsa, npr. omoguavaju prevlaenje,
premetanje grafikih objekata, tabelarnu prezentaciju podacima iz
BP itd.
3. COM Objekti u Windows operativnim sistemima postoji na stoti-
ne ovih objekata; svaki od njih sadri vie specifinih interfejsa koji-
ma se pristupa iz korisnike aplikacije. COM objekti se proizvode
za vrlo razliite namene, pre svega za korisnike interfejse; najee
spominjani su renderovanje 3D grafike i promena izgleda korisni-
kog interfejsa.
4. ActiveX Dokumenta kreiraju se i edituju u ActiveX serverskim aplika-
cijama (kao to su MSWord, MSExcel), a prikazuju se u ActiveX kontej-
nerskim aplikacijama (npr. Internet Explorer);
5. ActiveX Kontejneri to su najsloenije ActiveX komponente koje u
sebe mogu da prihvate automatizacione servere, kontrole i dokumenta.
Korienjem ADO objekata u aplikacijama smanjuje se kompleksnost apli-
kacije (broj linija koda napisanih radi ostvarivanja neke funkcionalnosti). Time
se smanjuje vreme potrebno za izgradnju aplikacije i poveava produktivnost
programiranja.
14
OLE (Object Linking and Embeding) ova tehnologija je prethodnica ActiveX tehnologiji,
i omoguavala je integraciju podataka razliitih formata i iz raznorodnih dokumenata
u jednom dokument kontejneru. Razlika u odnosu na ActiveX je to je omoguavala
pregled ali ne i editovanje podataka iz drugog izvorita.
Baze podataka i aplikacije 177
DAO (Data Access Objects)
DAO predstavlja komponentu koja obezbeuje zajedniki interfejs izmeu
aplikacija i odreenog skladita podataka (ciljnog SUBP). Mesto koje zauzima
DAO u vieslojnoj arhitekturi aplikacija je na granici sloja poslovne logike i sloja
podataka (Slika 16.13).
Slika 16.13. Aplikacije i DAO
DAO omoguava automatizaciju, odnosno potpunu nezavisnost objeka-
ta aplikacije od prezentacije podataka u ciljnoj BP. DAO tehnologija izbega-
va potrebu registrovanja kao to je to sluaj sa ODBC veznicima. Fokusirana
je iskljuivo na BP kao izvore podataka. Bazi podataka preko DAO objekata
pristupa se direktno. DAO objekti u aplikaciji ponaaju se kao klijenti u odno-
su na SUBP. Omoguava potpuniju kontrolu i jednostavniji pristup svim enti-
tetima u SUBP.
Slika 16.14. Korienje DAO objekata za unos podataka u tabelu u BP
178 Baze podataka i aplikacije
Slika 16.15. Korienje DAO objekata za upit u BP
DAO tehnologija vri obavijanje aplikacionim objektima svih objekata
u SUBP: itav sistem (SUBP), BP, tabele, polja, indeksi, upiti, korisnike grupe,
pojedinani korisniki nalozi itd. Na taj nain izbegava se potreba pristupa nekom
posrednikom entitetu (kao to je to ODBC). Unos podataka u tabelu iziskuje sve-
ga 6 linija koda (slika 16.14), dok preuzimanje podataka po zadatom kriterijumu
zahteva nekoliko linija koda vie (slika 16.15).
JDBC (Java Database Connectivity)
U paleti tehnologija koje se koriste za povezivanje aplikacija sa BP izd-
vajaju se kao posebna grupa Java tehnologije. Ove tehnologije zasnovane su
na specifinim svojstvima Java programskog jezika. Platformska nezavisnost,
orjentisanost prema mrenom programiranju i Interentu, kao i izgradnji dis-
tribuiranih informacionih sistema uinilo je Java-u moda najdominantni-
je korienim jezikom u izgradnji aplikacija u zadnjim godinama prolog
milenijuma i u ovom milenijumu. Java tehnologije su svugde: od aplikacija za
velike poslovne sisteme do mobilnih aplikacija koje same migriraju sa jednog
na drugu raunarsku platformu (mobilni softverski agenti) ili aplikacija za
mobilnu telefoniju.
Dominantna tehnologija za povezivanje Java aplikacija na SUBP je JDBC
(slika 16.16). Postoji velika slinost izmeu ODBC i JDBC konektora. Sutinska
razlika je da JDBC konektor ne treba da se registruje na sistem da bi bio ope-
rativan i da se konektor pravi prema ciljnom SUBP. JDBC konektor ne koristi
resurse OS ve resurse Java virtualne maine (JVM
15
). Isti JDBC konektor koriste
15
JVM Java Virtual Machine predstavlja posrednika izmeu platformskog OS i Java
aplikacija
Baze podataka i aplikacije 179
konkurentski razliite java aplikacije. Na tritu se mogu pronai razliiti JDBC
konektori za iste SUBP. Najpouzdanije reenje je korienje konektora koji za
Java-u nudi proizvoa SUBP.
Slika 16.16. JDBC tehnologija povezivanja aplikacija i SUBP
Enterprise Java Beans
Enterprise Java Beans (EJB) predstavljaju nadgradnju koja koristi JDBC
konektore kombinovane sa drugim Java tehnologijama (npr. RMI, CORBA) u
cilju postizanja visoke produktivnosti u izgradnji distribuiranih IS zasnovanih
na Java tehnologijama. Postoji 2 vrste EJB objekata: EJB sesije i EJB entiteta. EJB
sesije su klijentski orjentisani i traju koliko i sesija izmeu klijentske i server-
ske aplikacije (vidi poglavlje 16.3). EJB entiteta predstavlja posrednika izmeu
aplikacije i SUBP.
EJB entiteta su perzistentni (postojani) objekti koji predstavljaju pogle-
de na eljene podatke iz BP. Oni su smeteni u EJB kontejneru (delu serverske
180 Baze podataka i aplikacije
aplikacije) i postojani su ak i ako doe do pada JVM. Pri ponovnom podizanju
sistema dolazi i do njihovog ponovnog instanciranja sa podacima do momenta
pada. EJB entiteta interaguju posredstvom JDBC sa SUBP na isti nain kao i
Java klase koje ne koriste Eneterprise okruenje.
Slika 16.17. Mesto EJB tehnologije u distribuiranim IS
Baze podataka i aplikacije 181
Motivacija za korienje EJB je u mogunostima kombinovanja razliitih
tehnologija (RMI, messaging, itd) i jednostavnijeg naina obezbeivanja boljih
performansi sistema (transakciona podrka, perzistentnost podataka).
Pristup bazama podataka iz aplikacija moe se reiti na veliki broj
razliitih naina. Mnogobrojne tehnologije imaju za cilj da vreme izgradnje
sloenih poslovnih aplikacija to vie skrate, a s druge strane da poboljaju
kvalitet aplikacija u smislu performansi, pouzdanosti, fleksibilnosti i sigur-
nosti podataka. U jednostavnijim aplikacijama i u radu sa transparentnijim
podacima moe se koristiti pristup podacima iz korisnikog interfejsa. Sloeni
sistemi koji su najee i distribuirani zahtevaju da se podacima pristupa iz
sloja poslovne logike ili pozivanjem ugnjedenih procedura u SUBP. Platform-
ski OS, programski jezik u kome se sistem implementira, korisniki zahtevi u
pogledu funkcionalnosti aplikacije, ograniie dizajnere i programere na izbor
konkretne tehnologije za povezivanje aplikacije sa BP. Svaka od predstavljenih
tehnologija ima razliite prednosti i nedostatke koje implementatori moraju
da razumeju kako bi napravili pravi izbor. Dobar izbor tehnologije predstavlja
osnovu dobrog poetka izgradnje IS.
Dodatak 1. Informacioni sistem kafa 183
Pogl av l j e 17
Dodatak 1.
Informacioni sistem kafa
17.1. Korisniki zahtev
Napraviti informacioni sistem koji e pratiti rad kaa. Potrebno je da IS
vodi evidenciju kataloga, narudbenica, zaliha, otpremnica, narudbi, rauna,
dobavljaa, banaka, naloga za uplatu i potvrda o uplati.
Proizvodi se dobijaju od dobavljaa. Funkcija uvoenja novih dobavljaa
treba da omogui uvoenje u evidenciju novih dobavljaa sa kojima ka posluje,
radi kontakata oko nabavke novih kataloga proizvoda i eventualnih nedoumica
ili problema. Preko kataloga se izdaju narudbenice. Na osnovu narudbenica se
dobijaju otpremnice i fakture.
17.2. SSA Strukturna Sistem Analiza
Pre nego to ponemo da projektujemo informacioni sistem za neki
realni sistem potrebno je da uradimo detaljnu analizu tog sistema. U ovom
sluaju kao metod za analizu koristimo Strukturnu sistemsku analizu (SSA)
koja nam slui da relativno sloen realni sistem prikaemo kao skup jed-
nostavnijih podsistema ije funkcionisanje moemo lake da shvatimo, a
samim tim i implementiramo.
184 Dodatak 1. Informacioni sistem kafa
17.2.1. Dijagram konteksta
17.2.2. Prvi nivo dekompozicije
Dodatak 1. Informacioni sistem kafa 185
17.2.3. Drugi nivo dekompozicije (Nabavka)
17.2.4. Drugi nivo dekompozicije (Prodaja)
186 Dodatak 1. Informacioni sistem kafa
17.2.5. Drugi nivo dekompozicije (Uplata banci)
17.3. Renik Podataka
Polje Domen Uslov
SifraBanke AutoNumber NotNull
NazivBanke Text
Adresa Text
Telefon Text
SifraDobavljaca AutoNumber NotNull
TelefonDobavljaca Text
AdresaDobavljaca Text
ZRDobavljaca Text
NazivDobavljaca Text
SifraFakture AutoNumber NotNull
SifraDobavljaca Number NotNull
RokPlacanja Date/Time
Polje Domen Uslov
IznosFakture Number
DatumFakture Date/Time
SifraOtpremnice Number
BrojKataloga AutoNumber NotNull
SifraDobavljaca Number
Datum Date/Time
SifraNaloga AutoNumber NotNull
Primalac Text
SvrhaUplate Text
Datum Date/Time
Vreme Date/Time
ZRPrimaoca Text
Dodatak 1. Informacioni sistem kafa 187
Polje Domen Uslov
SifraBanke Number
SifraFakture SifraFakture
SifraNarudzbe AutoNumber NotNull
BrojStola Number
SifraNarudzbenice AutoNumber NotNull
Datum Date/Time
Potpisol Text
SifraDobavljaca Number NotNull
SifraOtpremnice AutoNumber NotNull
SifraDobavljaca Number NotNull
ValutaPlacanja Text
Datum Date/Time
UkupnoZaPlacanje Number
Potpisol Text
SifraPotvrde AutoNumber NotNull
SifraBanke Number NotNull
BrojZiroRacuna Text
SvrhaPlacanja Text
SifraNaloga Number
SifraRacuna AutoNumber NotNull
SifraNarudzbe Number NotNull
Vreme Date/Time
Datum Date/Time
BrojStola Number
UkupnaCena Number
RedniBroj AutoNumber NotNull
BrojKataloga Number NotNull
SifraDobavljaca Number NotNull
JedinicaMere Text
Polje Domen Uslov
Cena Number
SifraArtikla Number
RedniBroj AutoNumber NotNull
SifraNarudzbe Number NotNull
SifraArtikla Number
RedniBroj AutoNumber NotNull
SifraNarudzbenice Number NotNull
Kolicina Number
Cena Number
JedinicaMere Text
SifraArtikla Number
RedniBroj AutoNumber NotNull
SifraOtpremnice Number NotNull
SifraDobavljaca Number NotNull
Cena Number
Kolicina Number
JedinicaMere Text
SifraArtikla Number
RedniBroj AutoNumber NotNull
SifraRacuna Number NotNull
Cena Number
Kolicina Number
SifraArtikla Number
SifraArtikla AutoNumber NotNull
KolicinaZaliha Number
NazivArtikla Text
VrstaArtikla Text
OpisArtikla Text
188 Dodatak 1. Informacioni sistem kafa
17.4. MOV Model Objekti-Veze
17.4.1. Nabavka
Dodatak 1. Informacioni sistem kafa 189
17.4.2. Prodaja
17.4.3. Uplata banci
190 Dodatak 1. Informacioni sistem kafa
17.5. Relacioni model
eme relacija su sledee:
17.5.1. Nabavka:
DOBAVLJAC (SifraDobavljaca, TelefonDobavljaca, AdresaDobavljaca,
ZRDobavljaca, NazivDobavljaca)
NARUDZBENICA (SifraNarudzbenice, Datum, Potpisol, SifraDobavljaca)
STAVKA NARUDZBENICE (RedniBroj, SifraNarudzbenice, Kolicina,
Cena, JedinicaMere, SifraArtikla)
ZALIHE (SifraArtikla, KolicinaZaliha, NazivArtikla, VrstaArtikla,
OpisArtikla)
KATALOG (SifraDobavljaca, BrojKataloga, Datum)
STAVKA KATALOGA (SifraDobavljaca, BrojKataloga, RedniBroj, Jedi-
nicaMere, Cena, SifraArtikla)
OTPREMNICA (SifraDobavljaca, SifraOtpremnice, ValutaPlacanja,
Datum, UkupnoZaPlacanje, Potpisol)
STAVKA OTPREMNICE (SifraDobavljaca, SifraOtpremnice, RedniBroj,
Cena, Kolicina, JedinicaMere, SifraArtikla)
FAKTURA (SifraDobavljaca, SifraFakture, RokPlacanja, IznosFakture,
DatumFakture, SifraOtpremnice)
17.5.2. Prodaja:
NARUDZBA (SifraNarudzbe, BrojStola)
STAVKA NARUDZBE (SifraNarudzbe, RedniBroj, SifraArtikla)
RACUN (SifraNarudzbe, SifraRacuna, Vreme, Datum, BrojStola, Ukup-
naCena)
STAVKA RACUNA (RedniBroj, SifraNarudzbe, SifraRacuna, Cena,
Kolicina, SifraArtikla)
17.5.3. Uplata banci:
BANKA (SifraBanke, Ime, Adresa, Telefon)
POTVRDA O UPLATI (SifraPotvrde, SifraBanke, BrojZiroRacuna, Svr-
haPlacanja, SifraNaloga)
NALOG ZA UPLATU (SifraNaloga, Primalac, SvrhaUplate, Datum, Vre-
me, ZRPrimaoca, SifraBanke, SifraFakture)
Dodatak 1. Informacioni sistem kafa 191
192 Dodatak 1. Informacioni sistem kafa
17.6. Access Tabele
Dodatak 1. Informacioni sistem kafa 193
Dodatak 2. Servis za odravanje rada softverskog sistema 195
Pogl av l j e 18
Dodatak 2.
Servis za odravanje rada
softverskog sistema
18.1. Korisniki zahtev
Stranka podnosi zahtev za popravku raunara. Na osnovu razgovora ili ana-
lize raunara isti se prihvata na popravku. Pri prijemu raunara stranci se izdaje
revers ili potvrda o prijemu.
Vri se popravka raunara (opravka sistema, spaavanje podataka, izrada
Back up-a podataka i td.) Po zavrenoj popravci stranci se izdaje raun koji on
plaa i nakon izvrene uplate izdaje se popravljen raunar.
Takoe servis nabavlja odgovarajui softver i vodi rauna o novim pro-
gramima koji se izbacuju na trite. Softver se nabavlja od specijalizovanih
dobavljaa.
Razvojno okruenje izabrano za aplikaciju Servis za odravanje Sofverskog
Sistema je Access 2003. Korieni su tabele, SQL upit i forme.
196 Dodatak 2. Servis za odravanje rada softverskog sistema
18.2. SSA Strukturna Sistem Analiza
18.2.1. Dijagram konteksta
18.2.2. Dekompozicija prvog nivoa
Dodatak 2. Servis za odravanje rada softverskog sistema 197
18.2.1. Dekompozicija procesa
Dekompozicija procesa 1 prijem raunara na popravku
Dekompozicija procesa 2 nabavka sofvera
198 Dodatak 2. Servis za odravanje rada softverskog sistema
18.3. Renik podataka
Dobavljac<SifraDobavljaca,Naziv,Adresa,Telefon,{Program}>
Program<Idprog,naziv,Proizvodjac>
Popravka<IDPopravka,Datum,Opis,{Program},{Uplata},<Stranka>>
Racunar<IDRacunara,Naziv,Opis,{Komponente}>
Komponente<RB,Naziv,Proizvodjac>
Stranka<IDStranke,Ime,Prezime,Adresa,Telefon>
Uplata<IDUplate,datum,Iznos,{Stavkeuplate}>
StavkeUplate<RB,Naziv,Iznos>
Dodatak 2. Servis za odravanje rada softverskog sistema 199
18.4. Specifkacija primitivnog procesa
Postoje 2 primitivna procesa:
1. Popravka raunara
2. Nabavka sofvera
Proces nabavka sofvera se sastoji od sledeih sluajeva korienja
1. Evidentiranje dobavljaa SK1
Naziv: evidentiranje novog dobavljaa
Uesnici: radnik, program
Preduslov: Sistem je ukljuen i radnik je ulogovan pod svojom ifrom
Osnovni scenario SK:
1. Radnik poziva sistem da kreira novog dobavljaa
2. Sistem kreira novog dobavljaa
200 Dodatak 2. Servis za odravanje rada softverskog sistema
3. Sistem prikazuje radniku novog dobavljaa
4. Radnik unosi podatke o novom dobavljau
5. Radnik poziva sistem da uskladiti podatke
6. Sistem skladiti podatke o novom dobavljau
7. Sistem obavetava radnika da je skladitenje bilo uspeno
Alternativni scenariji: 6.1 Ukoliko sistem ne moe da uskladiti dobavlja-
a prikazuje poruku radniku
2. Nabavka sofvera SK1
Naziv: evidentiranje novog programa
Uesnici: radnik, program
Preduslov: Sistem je ukljuen i radnik je ulogovan pod svojom ifrom
Osnovni scenario SK:
1. Radnik poziva sistem da kreira novi program
2. Sistem kreira novi program
3. Sistem prikazuje radniku novi program
4. Radnik unosi podatke o programu
5. Radnik poziva sistem da uskladiti podatke
6. Sistem skladiti podatke o novom programu
7. Sistem obavetava radnika da je skladitenje bilo uspeno
Alternativni scenariji: 6.1 Ukoliko sistem ne moe da uskladiti program
prikazuje poruku radniku
Dodatak 2. Servis za odravanje rada softverskog sistema 201
18.5. Dijagram dekompozicije
202 Dodatak 2. Servis za odravanje rada softverskog sistema
18.6. Model objekti veze
Dodatak 2. Servis za odravanje rada softverskog sistema 203
18.7. Relacioni model
Dobavljac(SifraDobavljaca#,Naziv,Adresa,Telefon)
SeNabavlja(SifraDobavljaca#,IDProg#)
Program(Idprog#,naziv,Proizvodjac)
SeKoristi(Idprog#,IDPopravka#)
Popravka(IDPopravka#,Datum,Opis,IDRacunara#)
Racunar(IDRacunara#,Naziv,Opis,IDStranke#)
Komponente(Idracunara#,RB#,Naziv,Proizvodjac)
Stranka(IDStranke#,Ime,Prezime,Adresa,Telefon)
Uplata(IDUplate#,datum,Iznos,Idstranke#)
StavkeUplate(IDUplate#,RB#,Naziv,Iznos)
18.8. Opis scenarija korienja sistema
1. Evidentiranje dobavljaa SK1
1. Radnik poziva sistem da kreira novog dobavljaa
204 Dodatak 2. Servis za odravanje rada softverskog sistema
2. Sistem kreira novog dobavljaa
3. Sistem prikazuje radniku novog dobavljaa
4. Radnik unosi podatke o novom dobavljau
5. Radnik poziva sistem da uskladiti podatke
Dodatak 2. Servis za odravanje rada softverskog sistema 205
6. Sistem skladiti podatke o novom dobavljau
7. Sistem obavetava radnika da je skladitenje bilo uspeno
- Alternativni scenariji: 6.1 Ukoliko sistem ne moe da uskladiti dobavlja-
a prikazuje poruku radniku
2. Evidentiranje novog programa SK1
1. Radnik poziva sistem da kreira novi program
2. Sistem kreira novi program
3. Sistem prikazuje radniku novi program
206 Dodatak 2. Servis za odravanje rada softverskog sistema
4. Radnik unosi podatke o programu
5. Radnik poziva sistem da uskladiti podatke
6. Sistem skladiti podatke o novom programu
7. Sistem obavetava radnika da je skladitenje bilo uspeno
- Alternativni scenariji: 6.1 Ukoliko sistem ne moe da uskladiti program
prikazuje poruku radniku
Dodatak 2. Servis za odravanje rada softverskog sistema 207
18.9. Fiziko projektovanje modela
podataka Access tabele
208 Dodatak 2. Servis za odravanje rada softverskog sistema
18.10. Strukturna ogranienja i pravila integriteta
Update Dobavljac CASCADES SeNabavlja
Delete Dobavljac CASCADES SeNabavlja
Update Racunar CASCADES Komponente
Delete Racunar CASCADES Komponente
Dodatak 2. Servis za odravanje rada softverskog sistema 209
SELECT Dobavljac.Naziv, Program.Naziv
FROM Program INNER JOIN (Dobavljac INNER JOIN [Se Nabavlja] ON
Dobavljac.[Sifra dobavljaca] = [Se Nabavlja].[Sifra Dobavljaca]) ON Program.[ID
Programa] = [Se Nabavlja].IDPrograma;
210 Dodatak 2. Servis za odravanje rada softverskog sistema
18.11. Forme za unos podataka
Dodatak 2. Servis za odravanje rada softverskog sistema 211
212 Dodatak 2. Servis za odravanje rada softverskog sistema
Dodatak 2. Servis za odravanje rada softverskog sistema 213
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 215
Pogl av l j e 19
Dodatak 3.
Uvoz i distribucija
proizvoda bele tehnike
19.1. Korisniki zahtev
Firma Singidunum Technic nam se obratila sa zahtevom za izradu i imple-
mentaciju sistema za upravljanje bazom podataka vezane za uvoz i distribuciju pro-
izvoda bele tehnike. Uoeno je postojanje funkcija nabavke, prodaje i servisa.
Nabavka prima ponudu stranog dobavljaa, koja sadri spisak artikala i
njihove cene. Po zahtevu, dobavlja alje predraun za odreen broj eljenih arti-
kala, na osnovu kog se pravi narudbenica. Prema raunu koji alje dobavlja vri
se uplata. Uz poiljku naruenih artikala prima se otpremnica, za koju se u odelu
prijema vezuje odgovarajua prijemnica.
Prodaja sastavlja razliite ponude vezane za odreeni broj artikala, koje
alje potencijalnim kupcima. Po prijemu porudbine, kupcu se alje raun, a iz
magacina, prema nalogu, traeni artikli sa otpremnicom. Uplata kupca vri se na
odgovarajui raun u banci.
U sluaju kvara na nekom od artikala, kupac se obraa odeljenju servi-
sa, koji uruuje odgovarajui nalog za rad nekom od ovlaenih servisera. Po
zavrenom radu, serviser uz nalog o zavrenom radu alje i raun na osnovu
kog se vri odgovarajua uplata.
216 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
19.2. Strukturna sistemska analiza
19.2.1. Dijagram konteksta
Spoljni objekti sa svojim tokovima podataka:
Kupac
Ponuda
Porudbina
Raun prodaje
Otpremnica prodaje
Dobavlja
Ponuda dobavljaa
Narudbenica
Uplata dobavljau
Zahtev za predraun
Raun dobavljaa
Predraun
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 217
Servis
Uplata servisu
Raun servisa
Nalog za rad
Nalog o zavrenom radu
19.2.2. DTP- prvi nivo dekompozicije
IS Singidunum Technic-a se sastoji od procesa:
Nabavka (od dobavljaa)
Prodaja (kupcu)
Servis
218 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
Na prvom nivou dekompozicije postoje sledea skladita:
Ponude dobavljaa
Dobavljai
Artikli
Kupci
Serviseri
19.2.3. Drugi nivo dekompozicije - nabavka
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 219
Nabavka se sastoji od sledeih procesa:
Obrada ponude
Naruivanje
Plaanje
Prijem
Na drugom nivou dekompozicije postoje sledea skladita:
Narudbenice
Predrauni
Dobavljai
Ponude dobavljaa
Prijemnice
Rauni
Artikli
19.2.4. Drugi nivo dekompozicije prodaja
Prodaja se sastoji od sledeih procesa:
Obrada porudbine
Otprema
Naplata
Na drugom nivou dekompozicije postoje sledea skladita :
Nalog magacinu
220 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
Kupci
Artikli
Rauni
Uplata kupca
19.2.5. Drugi nivo dekompozicije servis
Servis se sastoji iz sledeih procesa:
Obrada naloga
Obrada rauna
Na drugom nivou dekompozicije postoje sledea skladita :
Nalozi
Serviseri
Kupci
Artikli
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 221
19.3. Dijagram dekompozicije
222 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
19.4. Model objekti-veze
MOV Nabavka - podmodel za tok Ponude i Zahteva za predraun
MOV Nabavka - podmodel za tok za tok Predrauna i Narudbenica
MOV Nabavka - podmodel za tok Rauna i Uplate
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 223
MOV Nabavka - podmodel za tok Otpremnice i Prijemnice
MOV Prodaja - podmodel za tok Ponude
MOV Prodaja - podmodel za tok Porudbine i Rauna
224 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
MOV Prodaja - podmodel za tok Otpremnice i Naloga Magacinu
MOV Servis - podmodel za tok Naloga za rad
PMOV Servis - podmodel za tok Naloga o Zavrenom Radu,
Rauna Servisera, Uplate Serviserima
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 225
19.5. Relacioni model
Nabavka - relacioni model
Dobavljac (#SifDob, ZemljaDob, NazivDob)
Uplata (#SifUpl, DatumUpl, IznosUpl, SifDob, SifRac)
PonudaDob (#SifPon, SifDob)
StavkaPon (#SifPon, #RedniBr, SifArt, NazivArt, CenaArt)
RacunD (#SifRac, SifDob, IznosRac, RokPl, SifUpl)
StavkaRacD (#SifRac, #RedniBr, SifArt, NazivArt, CenaArt, Iznos,
KolArt)
Prijemnica (#SifPrij, DatumPrij, SifOtpr)
StavkaPrij (#SifPrij, #RedniBr, SifArt, NazivArt, KolArt)
Predracun (#SifPred, SifDob, DatumPred)
StavkaPred (#SifPred, #RedniBr, SifArt, NazivArt, CenaArt, Iznos,
KolArt)
Narudzbenica (#SifNar, DatumNar, SifDob)
StavkaNar (#SifNar, #RedniBr, SifArt, NazivArt, KolArt)
Otpremnica (#SifOtpr, DatumOtpr, SifDob, NazivDob, SifPrij)
StavkaOtpr (#SifOtpr, #RedniBr, SifArt, NazivArt, KolArt)
Artikli (#SifArt, NazivArt, CenaArt, KolArt)
ZahtevZaPr (#SifZah, DatumZah, SifDob)
StavkaZahteva(#SifZah, #RedniBr, SifArt, NazivArt, KolArt)
Prodaja - relacioni model
Kupac (#SifKup, NazivKup, SedKup)
Banka (#BrRac, NazivBanke)
RacunP (#SifRP, NazivKup, Iznos, RokUpl, SifPor, BrRac)
StavkaRP (#SifRP, #RedniBr, SifArt, NazivArt, CenaArt, Iznos, KolArt)
OtpremnicaP (#SifOtpr, SifKup, NazivKup, DatumOtpr, SifNal)
StavkaOtprP (#SifOtpr, #RedniBr, SifArt, NazivArt, KolArt)
Porudzbina (#SifPor, SifKup, DatumPor, SifRac)
StavkaPor (#SifPor, #RedniBr, SifArt, NazivArt, KolArt)
NalogMag (#SifNal, SifOtpr)
226 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
StavkaNal (#SifNal, #RedniBr, SifArt, KolArt)
Artikli (#SifArt, NazivArt, CenaArt, KolArt)
Ponuda (#SifPon)
StavkaPonP (#SifPon, #RedniBr, SifArt, NazivArt, CenaArt)
Servis - relacioni model
Servis (#SifSer, NazivSer, SedSer)
Kupac (#SifKup, NazivKup, SedKup)
NalogZaRad (#SifNalog, DatumN, SifSer, NazivSer, SifKup, NazivKup)
StavkaNZR (#SifNalog, #RedniBr, SifArt, NazivArt)
NalogZavR (#SifNZavR, SifSer, NazivSer, DatumNZavR, SifRac)
StavkaNZavR (#SifNZavR, #RedniBr, SifArt, NazivArt, CenaArt)
RacunS (#SifRacS, SifNZavR, NazivSer, Iznos, SifUpl)
UplataS (#SifUpl, SifRac, NazivSer, DatumUpl, IznosUpl)
19.6. Tabele, tipovi podataka
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 227
228 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
19.7. Ekranske forme
Glavni meni:
Dodatak 3. Uvoz i distribucija proizvoda bele tehnike 229
Nabavka:
Artikli:
230 Dodatak 3. Uvoz i distribucija proizvoda bele tehnike
Prodaja:
Servis:
Literatura 231
d
Literatura
[1] James L. Johnson, Database: Models, Languages, Design, Oxford University Press,
1997., London.
[2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems, Pearson, Addison
Wesley, 2004.
[3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison Wesley, Boston, MA
[4] Branislav Lazarevi, Z. Marjanovi, N. Anii, S. Babarogi, Baze podataka, FON,
Beograd, 2003.
[5] Vladimir Blagojevi, Relacione baze podataka, Klub Nikola Tesla, Beograd, 2001.
[6] Phuong Lien, , Systems Analysis and Design, Tutorial, PPAC-VTVCompany, 2000
[7] Denis & Haley Wixom, Systems Analysis and Design, 2
nd
Edition, John Wiley &
Sons, 2003
[8] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern Database Management,
Pearson, Prentice Hall, 2005.
[9] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag, Berlin
[10] Craig S. Mullins, Administracija baza podataka, Kompjuter biblioteka, 2003.
Renik pojmova 233
d
Renik pojmova
Model procesa vodi projektanta kroz redosled aktivnosti vezanih za pro-
jekat i predstavlja ivot ni ciklus projekta. Istorijski posmatrano, neki modeli pro-
cesa su statiki, a neki ne dozvoljavaju postojanje kontrolnih taaka. Dva takva
modela procesa su model vodopada i model spirale
Model vodopada. Ovaj model koristi markere kao prelazne i izvrne take.
Kada koristite model vodopada, treba da obavite svaki skup zadataka u okviru
jedne faze pre nego to predete na sledeu fazu. Najbolje je da ovaj model koristite
za projekte kod kojih se zahtevi projekta mogu jasno denisati i koji u budu-
nosti nee biti podloni izmenama. Poto model vodopada ima ksne prelazne
take izmeu faza, veoma lako moete da nadgledate raspored i dodeljujete jasna
zaduenja i odgovornosti.
Model spirale. Ovaj model se zasniva na stalnoj potrebi za usavravanjem
zahteva i procena projekta. Model spirale je ekasan kada se koristi za aplikacije
koje se brzo razvijaju ili za male projekte. Ovaj pristup moe da dovede do uspe-
ne saradnje izmeu razvojnog tima i korisnika zato to je korisnik ukljuen u sve
faze tako to obezbeuje povratne informacije i daje odobrenja. Meutim, model
spirale nema ugraene jasne kontrolne take. To za posledicu moe imati haoti-
an razvojni proces.
Microsof solution framework - MSF model procesa kombinuje najbolje
principe modela vodopada i modela spirale. MSF kombinuje planiranje zasnova-
no na markerima i predvidljivosti rezultata kod modela vodopada sa Opte pri-
hvaen ciklus razvoja poslovnih reenja sastoji se iz nekoliko faza: prikupljanje
234 Renik pojmova
zahteva, sistemska analiza, projektovanje sistema, kodiranje, testiranje i implemen-
tacija. MSF model procesa se sastoji od pet razliitih faza: predvianje; planiranje,
razvoj; stabilizacija, uvoenje.
Faza predvianja Prva faza procesnog modela MSF. Predvianje se moe
denisati kao pravljenje grubog opisa ciljeva i ogranienja projekta. U ovoj fazi
odreujete radni tim i ono to on treba da postigne za naruioca. Svrha faze
predvianja je da napravi zajedniku viziju projekta za sve vane interesne gru-
pe u projektu.
Faza planiranja (eng planning phase) Druga faza procesnog modela MSF,
tokom koje tim odreuje ta e se razvijati i planira kako da napravi poslovno
reenje. Radni tim priprema funkcionalnu specifikaciju, pravi nacrt reenja
i priprema radne planove, procene trokova i rasporede za razne isporuive
rezultate. Za vreme faze planiranja prave se kolekcije modela i dokumenata sa
zahtevima. Ta kolekcija modela i dokumenata ini funkcionalnu specifikaciju
i nacrt reenja. Za vreme faze planiranja poinjete da se radi na funkcionalnoj
specifikaciji reenja. Tokom faze planiranja postoje tri procesa projektovanja:
konceptualno, logiko i fiziko projektovanje. Ova tri procesa se ne odvijaju
paralelno. Njihove poetne i krajnje take su meusobno povezane. Ovi pro-
cesi zavise jedan od drugog. Logiko projektovanje zavisi od konceptualnog
projektovanja, a fiziko projektovanje zavisi od logikog projektovanja. Svaka
izmena u konceptualnom dizajnu utie na logiki dizajn, to dalje dovodi do
izmena u fizikom dizajnu.
Konceptualno projektovanja Konceptualno projektovanja je proces
sakupljanja, analize i postavljanja prioriteta problema i reenja sa stanovita
posla i korisnika i pravljenje predstave reenja visokog nivoa. Konceptualno
projektovanje se pojavljuje za vreme faze planiranja. Neki od ciljeva pravl-
jenja konceptualnog dizajna su: razumevanje poslovnog problema koji treba
da se rei, razumevanje poslovnih zahteva i zahteva korisnika i opisivanje
ciljnog budueg stanja posla.
Logiko projektovanje se denie kao proces opisivanja reenja u pogledu
njegove organizacije, strukture i interakcije delova reenja sa stanovita projektnog
tima. Logiko projektovanje: denie sastavne delove reenja, obezbeuje radni
okvir koji sve delove reenja dri zajedno, ilustruje nain na koji se reenje sas-
tavlja i nain na koji stupa u interakciju sa korisnicima i drugim reenjima. Kada
Renik pojmova 235
pravi logiki dizajn, radni tim uzima u obzir sve zahteve posla, korisnika, sistema i
operacija koji utvruju potrebu za bezbednou, voenjem dnevnika, beleenjem
dogaaja, skalabilnou, upravljanjem stanjem, rukovanjem grekama, licencira-
njem, globalizacijom, arhitekturom aplikacije i integracijom sa drugim sistemima.
Rezultati logikog projektovanja su: logiki model objekata; dizajn visokog nivoa
za korisniki interfejs; logiki model podataka.
Fiziko projektovanje predstavlja poslednji postupak u okviru faze pla-
niranja u MSF modelu procesa. Projektni tim prelazi na fiziko projektovanje
onda kada se svi lanovi sloe sa tim da imaju dovoljno informacija na osnovu
logikog dizajna da bi mogli da predu na fiziko projektovanje. Tokom fizi-
kog projektovanja, radni tim primenjuje tehnoloka razmatranja i ogranienja
na konceptualni i logiki dizajn. Poto fiziko projektovanje predstavlja nasta-
vak konceptualnog i logikog projektovanja, njegov uspeh zavisi od tanosti
prethodna dva dizajna. Oslanjanje fizikog dizajna na konceptualni i logi-
ki dizajn obezbeuje timu mogunost da zavri fiziki dizajn koji ispunjava
poslovne i korisnike zahteve.
Faza razvoja Trea faza procesnog modela MSF. Za vreme faze razvoja, pro-
jektni tim pravi reenje. Ovaj proces ukljuuje pravljenje programskog kda koji
implementira reenja i pravljenje dokumentacije za programskog kd. Pored razvo-
ja programskog kda, radni tim razvija i infrastrukturu reenja. Proces razvoja pro-
lazi kroz nekoliko faza: pokretanje razvojnog ciklusa, pravljenje prototipa aplikacije,
razvijanje komponenata reenja, izgradnja reenja, zavretak faze razvoja.
Faza stabilizacije etvrta faza procesnog modela MSF. Za vreme faze stabi-
lizacije radni tim obavlja integraciju, uitavanje i beta testiranje poslovnog reen-
ja. Pored toga, tim testira scenarija za uvoenje reenja. Tim usmerava panju na
odreivanje problema, postavljanje prioriteta i reavanje problema tako da reenje
moe biti pripremljeno za izdavanje. Za vreme ove faze, reenje prelazi iz stanja
u kome su sve karakteristike zavrene kao to je denisano u funkcionalnoj spe-
cikaciji za ovu verziju, u stanje u kome se ispunjavaju denisani nivou kvaliteta.
Pored toga, reenje postaje spremno za uvoenje u posao.
Faza uvoenja Peta faza procesnog modela MSF. Za vreme ove faze, tim
uvodi tehnologiju poslovnog reenja i smeta komponente, stabilizuje uvoenje,
prenosi projekat operativcima i podrci i dobija odobrenje projekta od krajnjeg
kupca. Nakon uvoenja, radni tim vodi pregled projekta i nadzire zadovoljstvo
naruioca projektom.
236 Renik pojmova
Sakupljanje i analiza informacija su postupci koje obavljate u okviru
Microsof Solutions Framework (MSF) modela procesa. Postoje razliite katego-
rije informacija koje treba sakupiti, postoje razliiti izvori informacija i razliite
tehnike za njihovo sakupljanje.
Kategorije informacija Organizaciona arhitektura je prikaz projekta -
dinamikog sistema - u jednom trenutku vremena. Organizaciona arhitektura
posla usklauje grupe i procese informacionih tehnologija sa ciljevima posla.
Da bismo sakupili informacije o organizacionoj arhitekturi, potrebno je da se
koriste etiri opisne kategorije modela organizacione arhitekture kako bismo
te informacije vodili i klasikovali. Te kategorije su: posao, aplikacije, opera-
cije i tehnologija.
Tehnike za sakupljanje informacija Postoji est osnovnih tehnika koje
mogu da se koriste za sakupljanje informacija: posmatranje iz senke, intervjuisan-
je; ciljne grupe; ankete; instrukcije korisnika, pravljenje prototipova.
Izvori informacija Postoje razliiti tipovi informacija koje se mogu saku-
pite o nekom poslu. Te informacije se mogu pronai u razliitim oblicima. Broj i
raznovrsnost izvora informacija zavise od veliine posla. Neki izvori informacija
su: artifakti, sistemi, ljudi.
Analiza informacija Procesi sakupljanja i analize informacija su iterativ-
ni. Informacije se najpre sakupljaju a zatim analiziraju. Kod pregleda sakupljenih
informacija, nesumnjivo se otkrivaju dodatna pitanja. Nove informacije pomau
da se nastavi analiza posla. Ovaj oblik saradnje trajae tokom itavog ivotnog ci-
klusa projekta iako se vei deo sakupljanja i analize informacija odvija na poetku
ivotnog ciklusa.
Dokument nacrta zahteva Kada je radni tim sakupio informacije, jedan
od postupaka u okviru analize je pravljenje dokumenta nacrta zahteva. Ovaj
dokument sadri uvodnu listu zahteva, sastavljenu na osnovu informacija koje
je tim sakupio. Osnovna svrha ovog dokumenta je zapisivanje svih moguih
zahteva, ime se obezbeuje da se dragocene informacije nee izgubiti. Infor-
macije koje sakupite iz razliitih izvora sadre zahteve i elje sa poslovnog i
korisnikog aspekta. Zahtevi ukazuju na ono ta poslovno reenje treba da
radi kako bi ispunili poslovnu ponudu, a to se izvodi iz poslovnog i korisni-
kog aspekta.
Renik pojmova 237
Sluaj korienja (eng. Use case) Opis interakcija visokog nivoa izmeu
pojedinca i sistema. Sluaj korienja oznaava redosled koraka koje e korisnik
preduzimati u scenariju upotrebe.
Scenario upotrebe (eng. Usage scenario) Oznaava aktivnosti koje obavlja
odreen tip korisnika i obezbeuje dodatne informacije o aktivnostima i sekven-
cama zadataka koje ine proces.
Interna dokumentacija projektnog tima Nakon sakupljanja informa-
cija, kao deo analize, tim pravi nekoliko internih dokumenata koja se obino
ne dostavljaju kupcima. Ta dokumenta - katalog uesnika; katalog poslovnih
pravila i renik - su aktivna dokumenta i preciznije se deniu tokom ivotnog
ciklusa projekta.
Unied Modeling Language UML je standardni jezik modeliranja koji
koristite za modeliranje sofverskih sistema razliite sloenosti. Ti sistemi mogu
biti od velikih zajednikih informacionih sistema do distribuiranih sistema zasno-
vanih na Web tehnologiji. UML je razvijen da bi korisnicima obezbedio standard-
ni vizuelni jezik modeliranja tako da mogu da razvijaju i razmenjuju znaajne
modele. UML ne zavisi od konkretnih programskih jezika i razvojnih procesa.
UML prikazi UML omoguuje sistemskim inenjerima da naprave stan-
dardni nacrt bilo kog sistema. UML obezbeuje nekoliko grakih alata koje
moete da koristite za vizuelno predstavljanje i razumevanje sistema sa razliitih
taaka gledita. Razliiti UML prikazi opisuju nekoliko aspekata sofverskog siste-
ma. Prikazi koji se obino koriste su: prikaz korisnika. struktuirani prikaz. prikaz
ponaanja. prikaz implementacije. prikaz okruenja.
UML dijagrami Razliiti UML prikazi sadre dijagrame koji obezbeuju
vie aspekata reenja koje se razvija. Nije potrebno razvijati dijagrame za sva-
ki sistem koji se pravi. Slino tome, ne koriste se svi dijagram za modeliranje
sistema. Pomou sledeih UML dijagrama mogu se opisati razliiti prikazi sis-
tema: dijagrami klasa. dijagrami objekata. dijagrami sluajeva korienja. dija-
grami komponenata. dijagrami uvoenja. dijagrami saradnje. dijagrami toka i
dijagrami stanja.
DBMS Baza podataka se denie kao skup podataka koji su organizovani
na odreen nain. DBMS Database Management System je sistem koji upravlja
bazama podataka.
238 Renik pojmova
SQL je skraenica od Structured Query Language. To je najire korieni
programski jezik za komunikaciju sa relacionim bazama podataka. Pomou ovog
programskog jezika mogu da se ureuju, kreiraju, ili briu baze podataka ili poda-
ci u njima. SQL je takoe i ANSI/ISO standard.
Sloj predstavljanja je deo poslovne aplikacije koji obezbeuje mehanizam
za komunikaciju izmeu korisnika i sloja poslovnog servisa sistema. Elementi slo-
ja predstavljanja su komponente korisnikog interfejsa, kao na primer Windows
ili Web interfejs.
Sloj podataka poslovnog reenja se sastoji od skladita podataka i servisa
podataka. Skladite podataka najee je baza podataka u kojoj su podaci organi-
zovani i pohranjeni.
Odlukom Senata Univerziteta Singidunum, Beogrd, broj 636/08 od 12.06.2008,
ovaj udbenik je odobren kao osnovno nastavno sredstvo na studijskim programima koji
se realizuju na integrisanim studijama Univerziteta Singidunum.
CIP -
,
004.65(075.8)
, , 1962-
Uvod u baze podataka / Mladen Veinovi,
Goran imi. - 5. izd. - Beograd :
Univerzitet Singidunum, 2010 (Loznica :
Mladost grup). - VIII, 238 str. : ilustr. ;
24 cm
Na vrhu nasl. str.: Fakultet za informatiku i
menadment. - Tira 870. - Renik pojmova:
str. 233-238. - Bibliograja: str. 231.
ISBN 978-86-7912-252-0
1. , , 1967- []
a)
COBISS.SR-ID 176515596
2010.
Sva prava zadrana. Ni jedan deo ove publikacije ne moe biti reprodukovan u bilo kom
vidu i putem bilo kog medija, u delovima ili celini bez prethodne pismene saglasnosti
izdavaa.