You are on page 1of 159

FAKULTET ZA POSLOVNU INFORMATIKU

Prof. dr Mladen Veinović


Igor Franc
Aleksandar Jevremović

BAZE PODATAKA
- PRAKTIKUM -
Prvo izdanje

Beograd 2006.
Autori:
Prof. dr Mladen Veinović
Igor Franc
Aleksandar Jevremović

Recenzent:
Prof. dr Milan Milosavljević

Izdavač:
UNIVERZITET SINGIDUNUM
FAKULTET ZA POSLOVNU INFORMATIKU

Za izdavača:
Prof. dr Milovan Stanišić

Dizajn korica:
Aleksandar Mihajlović
Goran Latinović

Godina izdanja:
2006.

Tiraž:
250 primeraka

Štampa:
CICERO-print
Beograd
SADRŽAJ:

1. UVOD U BAZE PODATAKA .............................................. - 1 -


1.1. Uvod .............................................................................................. - 1 -

1.2. Osnovni koncepti i definicije ...................................................... - 3 -


1.2.1. Podatak ......................................................................................................... - 5 -
1.2.2. Informacija.................................................................................................... - 6 -
1.2.3. Metapodaci - podaci o podacima (metadata) ................................................ - 9 -
1.2.4. Sistem za upravljanje bazama podataka...................................................... - 10 -

1.3. Klasičan sistem zasnovan na datotekama ............................... - 12 -


1.3.1. Nedostaci sistema zasnovanog na datotekama............................................ - 14 -

1.4. Pristup zasnovan na bazama podataka ................................... - 16 -


1.4.1. Prednosti pristupa zasnovanog na bazama podataka .................................. - 17 -
1.4.2. Troškovi i rizici pristupa zasnovanog na bazama podataka ........................ - 19 -

1.5. Primene baza podataka............................................................. - 21 -


1.5.1. Lične baze podataka ................................................................................... - 21 -
1.5.2. Baze podataka za radne grupe..................................................................... - 22 -
1.5.3. Baze podataka odeljenja ............................................................................. - 23 -
1.5.4. Baze podataka organizacija ........................................................................ - 24 -
1.5.5. Internet, Intranet i Extranet baze podataka ................................................. - 25 -

1.6. Tipično okruženje baze podataka ............................................ - 28 -

1.7. Istorija razvoja baza podataka................................................. - 30 -

1.8. Modelovanje ............................................................................... - 35 -


1.8.1. Razvoj konceptualnih modela ..................................................................... - 36 -
1.8.2. Entiteti ........................................................................................................ - 37 -
1.8.3. Veze između entiteta................................................................................... - 38 -
1.8.4. Troslojna arhitektura baze podataka ........................................................... - 40 -

1.9. Modeli baza podataka ............................................................... - 42 -


1.9.1. Hijerarhijski model ..................................................................................... - 43 -
1.9.2. Mrežni model .............................................................................................. - 44 -
1.9.3. Relacioni model .......................................................................................... - 45 -
1.9.4. Objektni model ........................................................................................... - 50 -

1.10. Transakcije............................................................................... - 52 -
1.10.1. Osobine transakcija ................................................................................... - 53 -
1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 -
1.10.3. Konkurentno izvršavanje transakcija ........................................................ - 55 -

1.11. Oporavak baze podataka ........................................................ - 56 -

1.12. Osnovne karaketristike savremenih baza podataka ............ - 56 -

1.13. Zaključak ................................................................................. - 59 -

1.14. Literatura ................................................................................. - 60 -

2. O SQL-U ............................................................................... - 61 -

3. INSTALACIJA, KONFIGURISANJE I POKRETANJE


MYSQL-A ................................................................................ - 63 -
3.1. Proces isntalacije ....................................................................... - 63 -

3.2. Konfigurisanje MySQL servera ............................................... - 68 -

3.3. Pokretanje MySQL-a ................................................................ - 73 -

4. SQL TIPOVI PODATAKA ................................................ - 75 -


4.1. Numerički tipovi podataka ....................................................... - 75 -

4.2. Tipovi podataka vezani za datum i vreme .............................. - 76 -

4.3. Binarni i tekstualni tipovi podataka ........................................ - 77 -

4.4. Zahtevi pri skladištenju ............................................................ - 79 -

4.5. Izbor adekvatnog tipa podataka .............................................. - 80 -

4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima..- 81


-

4.7. Unos različitih tipova podataka ............................................... - 82 -

5. DDL (DATA DEFINITION LANGUAGE) ........................ - 83 -


5.1. Kreiranje baze podataka .......................................................... - 83 -

5.2. Kreiranje tebele u bazi podataka ............................................. - 84 -

5.3. Naredbe za definisanje podataka ............................................. - 87 -

5.4. Kreiranje indeksa u bazi podataka .......................................... - 88 -

5.5. Kreiranje virtuelne tabele - "pogleda".................................... - 89 -

5.6. Izmena definicije tabele ............................................................ - 90 -

5.7. Izmena pogleda u bazi podataka .............................................. - 92 -

5.8. Promena imena tabele u bazi podataka................................... - 93 -

5.9. Brisanje tabele iz baze podataka .............................................. - 94 -

5.10. Uklanjanje indeksa iz tabele ................................................... - 95 -

5.11. Uklanjanje baze podataka ...................................................... - 96 -

6. DML (DATA MANIPULATION LANGUAGE) ............. - 97 -

6.1. Manipulisanja podacima .......................................................... - 97 -

6.2. Unos podataka ........................................................................... - 98 -

6.3. Pregled podataka ..................................................................... - 101 -


6.3.1. Klauzula WHERE ..................................................................................... - 105 -
6.3.2. Klauzula DISTINCT ................................................................................. - 108 -
6.3.3. Klauzula LIMIT ........................................................................................ - 109 -
6.3.4. Klauzule GROUP BY / HAVING ............................................................ - 110 -

6.4. Izmena podataka ..................................................................... - 111 -

6.5. Uklanjanje podataka ............................................................... - 115 -

7. DCL (DATA CONTROL LANGUAGE) ........................... - 116 -


7.1. Naredba CREATE USER ....................................................... - 117 -
7.2. Naredba RENAME USER ...................................................... - 118 -

7.3. Naredba DROP USER ............................................................ - 119 -

7.4. Naredba SET PASSWORD .................................................... - 120 -

7.5. Dodela privilegija (GRANT) .................................................. - 121 -

7.6. Oduzimanje privilegija (REVOKE) ...................................... - 124 -

7.7. Primena izmena (FLUSH) ...................................................... - 125 -

8. ZADACI ZA VEŽBU DML .............................................. - 126 -

9. DODATAK ......................................................................... - 128 -


9.1. Izrazi i funkcije ........................................................................ - 128 -

10. DB DESINGER 4.0 .......................................................... - 130 -


PREDGOVOR
Ova skripta je namenjena prevashodno studentima treće godine
Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo
korisna i svima onima koji žele da savladaju sintaksu i tehniku upotrebe
SQL jezika za rad sa relacionim bazama podataka. Skripta može da
posluži i kao pomoć profesionalcima u svakodnevnom radu sa bazama
podataka. U praktikumu su na jednom mestu date teorijske osnove baza
podataka, prikazan je MySQL DBMS softver i softver za dizajniranje
baza, detaljno je razmatran SQL jezik i na kraju su dati praktični primeri.
U skladu sa nastavnim planom i programom predmeta baze podataka, svi
primeri u SQL jeziku, koji su dati u praktikumu, mogu se izvršiti na
MySQL DBMS-u. Moguća su manja odstupanje od sintakse standardnog
SQL-a koja ni do danas nije potpuno i precizno definisana.

Skripta je podeljena u nekoliko celina. Prvi deo predstavlja


teorijski uvod u baze podataka. Drugi deo je uvod u SQL jezik, a u
trecem delu prikazuju se i objašnjavaju tipovi podataka koje MySQL
koristi. U četvrtom delu se obrađuju naredbe za definisanje podataka, a u
petom delu se obrađuju naredbe za manipulaciju podacima, koji je u
stvari i najvažniji i najopširniji deo ove skripte. Na kraju su obrađene
naredbe za kontrolne (upravljačke) funkcije. Prvih pet delova su
namenjeni svim korisnicima dok je šesti deo, dodela i oduzimanje prava
korisnicima, specifičan i potreban samo administratorima baza podataka.

U dodatku su nabrojane i objašnjene pojedine funkcije koje


mogu biti veoma korisne u radu sa ovim sistemima za upravljanje
bazama podataka.

Autori su se potrudili da primeri budu što jasniji, izloženi po


redosledu i da su povezani, tako da kada se redom unose grade
kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje
modifikacije se može primeniti i u praksi.

Pošto je ovo prvo izdanje praktikuma, svi saveti i eventualne


primedbe na tekst su dobrodošle.

Beograd, oktobar 2006. godine Autori


1. UVOD U BAZE PODATAKA

1.1. Uvod

Baze podataka se koriste za prikupljanje, čuvanje i manipulaciju


podacima na osnovu kojih se dobijaju nove informacije u različitim
organizacijama, kao što su poslovni sistemi, zdravstvo, školstvo, vladine
institucije itd. Svakodnevno ih koriste pojedinci putem ličnih računara,
radne grupe putem mrežnih servera i svi zaposleni putem aplikacija koje
se nalaze u poslovnim sistemima. Bazama podataka takođe pristupaju
kupci i drugi udaljeni korisnici korišćenjem različitih tehnologija kao što
su govorni automati, web čitači (browser-i), digitalni telefoni i sl. Zbog
velike konkurencije u svim oblastima poslovanja, može se očekivati da
tehnologija baza podataka dobije još veći značaj. Menadžeri traže način
da iz baze podataka brže dođu do novih saznanja kako bi bili u prednosti
u odnosu na svoju konkurenciju. Na primer, detaljna baza podataka o
prodaji se može iskoristiti kako bi se saznalo koji kupci kupuju koje
proizvode, što se koristi kao osnova za reklamu i marketinšku kampanju.
Organizacije mogu da uključe u svoje baze podataka procedure koje se
zovu okidači - trigeri (alerts) koji upozoravaju o mogućim vanrednim
događajima (kao što su predstojeći nedostatak zaliha neke robe ili šansa
za prodaju dodatne količine robe) i na osnovu kojih mogu nastati
odgovarajuće reakcije. Mnoge organizacije danas prave posebne baze
podataka koje se zovu „skladišta podataka“ (data werehouses) koje služe
za aplikacije za podršku u odlučivanju.

Izučavanje baza podataka i sistema za upravljanje bazama podataka jesu


osnova za izučavanje informacionih sistema. Stručnjak za informacione
sisteme mora biti spreman da analizira potrebe preduzeća i da dizajnira i
implementira baze podataka u okviru razvoja informacionog sistema
jedne organizacije. Takođe, mora biti spreman da se konsultuje sa
krajnim korisnicima i da im pokaže kako se korišćenjem baza podataka
može imati bolja podrška za odlučivanje, čime se stvara prednost nad
konkurencijom. Široko rasprostranjeno korišćenje baza podataka vezanih
za Internet sajtove, koji vraćaju dinamičke informacije korisnicima web
sajta, zahteva od projektanta da razume ne samo kako da poveže bazu

-1-
podataka sa sajtom već i kako da je obezbedi tako da se njenom sadržaju
može pristupiti ali ne i izmeniti od strane spoljnih korisnika.

Postoji puno načina kako se može definisati baza podataka. U osnovi to


je skup podataka koji su organizovani prema potrebama korisnika, koji se
održavaju i koji se koriste za dobijanje informacija. Moderne baze
podataka se čuvaju na računaru, ali to nije bitno za samu definiciju. Na
primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima,
telefonski imenik itd. su takođe baze podataka (mada ih većina ljudi tako
ne zove). Međutim, smeštanje baze podataka na računar omogućava
lakšu i bržu obradu podataka i dobijanje željene informacije.
Karakterističan je primer sa telefonskim imenikom koji se nalazi na
papiru. Jednostavno je pronaći telefonski broj željene osobe, ali je znatno
teže pronaći ime osobe na osnovu telefonskog broja. Ako je telefonski
imenik veći (više smeštenih podataka) prethodni problem se dodatno
usložnjava. Računarski zasnovane baze podataka omogućavaju
jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz
odgovarajuće baze podataka se mogu dobiti i posebne informacije. Na
primeru telefonskog imenika mogu se izlistati podaci za sve osobe po
imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj
počinje npr. sa 2, osobe kojima se telefonski broj završava sa 45 i još
mnogo toga.

Na razvoj baza podataka presudno je uticao razvoj računara, računarskih


mreža, kao i klijent/server obrade. Istraživanje, projektovanje i upotreba
baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao što su:
smanjeni troškovi održavanja; smanjena potreba za mrežnim resursima;
poboljšan integritet podataka; donošenje ispravnih odluka na osnovu
objektivnih informacija, brža reakcija na tržištu, itd.

Baza podataka smeštena u računaru, predstavljena je nizom bita,


organizovanih u bajtove, a sa više bajtova u odgovarajućem formatu
zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze
podataka. Niz polja se organizuje u zapise (rekorde) koji imaju značenje
jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke
veze izmedju objekata realnog sveta. Zapisi istog formata se slažu i čine
datoteke, koje su fizički zapisane na disku. Baza podataka obuhvata više
povezanih datoteka i može biti centralizovana na jednom računaru ili
distribuirana na više međusobno udaljenih računara. Pored podataka koji
su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju

-2-
pojedinačne datoteke, njene osobine, karakteristični parametri iz
datoteka, uspostavljene međusobne veze, pravila koja se odnos na pojave
koje postoje i u realnom svetu i sl. Takvi podaci se zovu meta-podaci
(metadata), tj. podaci o podacima. Koriste se pri pokretanju rada sa
bazom podataka, kako bi se mogli učitati svi konfiguracioni podaci
odgovarajuće baze (self-describing).

Slika 1.1 Baze podataka nekada i danas

1.2. Osnovni koncepti i definicije

Baza podataka se može definisati kao organizovani skup logički


povezanih podataka. Ona može biti bilo koje veličine i kompleksnosti.
Na primer, prodavac može da ima malu bazu podataka vezanu za kupce
na svom notebook računaru koja se sastoji od nekoliko megabajta
podataka. Preduzeće koje zapošljava hiljadu i više ljudi može da ima
veoma veliku bazu podataka od nekoliko terabajta podataka (jedan
terabajt = 1012 bajtova) na mainframe kompjuteru na kome se nalazi
aplikacija za podršku odlučivanju. Veoma velika skladišta podataka
imaju više od petabajta podataka (1 petabajt = 1015 bajtova). U širem
smislu, bazu podataka možemo posmatrati kao integrisani skup podataka
o nekom sistemu i skup postupaka za njihovo održavanje i korišćenje,
organizovan prema potrebama korisnika. To je dobro struktuirana

-3-
kolekcija podataka, koja postoji jedno određeno vreme, koja se održava i
koju koristi više korisnika ili programa.

-4-
1.2.1. Podatak

Istorijski, pod terminom podatak se podrazumeva činjenica o nekom


predmetu i/ili događaju koja se može zabeležiti i sačuvati na računaru.
Na primer, u bazi podataka nekog prodavca podaci bi bile činjenice kao
što su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove
struktuirani podatak. Najvažniji struktuirani podaci su brojevi, karakteri i
datumi (vreme). Današnje baze podataka pored struktuiranih podataka
sadrže i druge vrste podataka kao što su razna dokumenta, mape,
fotografije, zvuk, čak i video zapise. Na primer, u bazi podataka nekog
prodavca mogla bi se naći i slika kupca. Takođe bi se mogao naći zvučni
ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se
naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni
podaci se najčešće mogu naći na web serverima i u Internet bazama
podataka.

Danas se podatak definiše kao sačuvana reprezentacija predmeta i/ili


događaja koja ima smisla i važnosti za korisnika baze podataka. Ova
definicija uključuje i struktuirane i nestruktuirane podatke. Često se u
okviru jedne baze podataka mogu naći kombinovani struktuirani i
nestruktuirani podaci kako bi se stvorilo multimedijalno okruženje. Na
primer, automehaničarska radnja može kombinovati struktuirane podatke
(koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika
automobila i skenirana kopija osiguranja).

Pod podatkom se podrazumeva činjenica prihvaćena kao takva tj. kakva


jeste. Podatak sam po sebi nema značenje, tek kada se interpretira nekom
vrstom sistema za obradu podataka poprima značenje i postaje
informacija. Tipično, termin “podatak” se odnosi na ono što je u bazi
podatak. Dakle, podatak je sirova činjenica - neobrađena informacija.
Računar vrši obradu podataka, prema zadatom programu, te se na osnovu
saznanja sadržanih u podacima, a kao rezultat njihove obrade, stiču nova
saznanja - informacije.

-5-
1.2.2. Informacija

Termini podatak i informacija su usko povezani i često se koriste kao


sinonimi. Međutim, korisno je razlikovati termine podatak i informacija.
Informaciju definišemo kao podatak koji je bio obrađen na takav način da
se znanje osobe koja koristi podatak povećalo. Na primer, razmotrimo
sledeći spisak činjenica:

Petar Petrović 150698371


0325
Marko Marković 021197985
0123
Janko Janković 111298583
0456
----------- --------
---
Slika 1.1 Skup podataka

Prikazane činjenice po definiciji pretstavljaju podatke, ali bi se većina


složila da su ovi podaci u sadašnjoj formi beskorisni. Čak iako
pretpostavljamo da se radi o imenima osoba i njihovim matičnim
brojevima, podaci ostaju beskorisni jer ne znamo čemu služe. Pogledajte
šta se događa kada stavimo ove iste podatke u kontekst, kao što je
pokazano na slici 1.2. Dodavanjem još nekoliko dodatnih podataka i
njihovim uređivanjem, prepoznajemo spisak upisanih studenata. Na ovaj
način se dolazi do informacije koja je korisna npr. upravi fakulteta,
profesorima, studentskoj službi i sl.

Ime i prezime JMBG Smer Godina upisa


Petar Petrović 1506983710325 PP 2002
Marko Marković 0211979850123 RGD 2001
Janko Janković 1112985830456 PP 2001
----------- ----------- RGD 2003

-6-
Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu

Drugi način da se iz podataka dobiju informacije je da se podaci sumiraju


ili na neki drugi način obrade i prezentuju. Na primer, na slici 1.3 se vide
sumirani podaci o upisu studenata prezentirani u vidu grafičke
informacije. Ova informacija se može iskoristiti kao osnova za
odlučivanje o dodavanju novih predavanja ili o zapošljavanju novog
nastavnog kadra. Moderne baze podataka vrlo često sadrže i podatke i
informacije. Podaci se često obrađuju i čuvaju u obrađenoj formi i služe
za pomoć pri donošenju odluka, a takvim podacima (informacijama) se
najbrže pristupa.

-7-
Broj upisanih studenata po školama

Gimnazija;
Ostali; 63 58
Gimnazija
Tehnička škola
Ekonomska škola
Ekonomska Ostali
škola; 45 Tehnička
škola; 79

Broj upisanih studenata po godinama

300

245
250

198
200

150 Broj upisanih studenata


125

100
76

50
30

0
2001 2002 2003 2004 2005

Slika 1.3 Grafički prikaz podataka iz BP - informacija o upisu

Podaci obrađeni tako da dobijaju značenje čine informaciju. Informacija


koja je precizna, relevantna, i dobijena na vreme je ključ za donošenje
dobre odluke.

-8-
Slika 1.4 Obradom prikupljenih podataka nastaje informacija

1.2.3. Metapodaci - podaci o podacima (metadata)

Podaci koji se prikupljaju i čuvaju u bazi podataka često se nazivaju i


podaci krajnjih korinika (end user data). Metapodaci su podaci koji
opisuju svojstva ili karakteristike podataka krajnjih korisnika i kontekst
tih podataka. Neka tipična svojstva podataka su naziv (ime) podatka,
definicija, dužina (veličina), i dozvoljene vrednosti. Kontekst podataka,
koji opisuju metapodaci, podrazumeva izvor podataka, gde se čuvaju
podaci, vlasništvo i korišćenje.

Tabela 1.1 Primer metapodataka

Naziv Tip Duž. Min Max Opis Izvor


Ime Text 30 Ime i prezime Lična karta
studenta
JMBG Integer 1 Jedinstven Lična karta
matični broj
Smer CHAR 3 Smer na Strudentska
fakultetu služba
GdUpisa Number 2001 Godina upisa Studentska
služba

Metapodaci opisuju svojstva podatka ali se nalaze odvojeno od tog


podatka. Metapodaci iz tabele1.1 ne prikazuju ni jedan podatak. Oni
omogućavaju dizajnerima i korisnicima baza podataka da razumeju koji

-9-
podaci postoje u bazi, šta oni znače, i koja je razlika između podataka
koji na prvi pogled izgledaju isto. Upravljanje metapodacima je veoma
bitno jer podaci bez jasnog značenja mogu biti zbunjujući, pogrešno
protumačeni ili puni grešaka.

1.2.4. Sistem za upravljanje bazama podataka

Sistem za upravljanje bazama podataka (DBMS - Data Base


Management System) je softverski sistem koji se koristi za kreiranje,
održavanje i manipulisanje podacima, kao i za kontrolu prava pristupa
bazi podataka. DBMS omogućava krajnjim korisnicima i programerima
da dele podatke, tj. omogućava da se podaci koriste od strane više
aplikacija, a ne da svaka aplikacija ima svoju kopiju podatka sačuvanu u
posebnim datotekama. DBMS takođe pruža mogućnost kontrole pristupa
podacima, osigurava integritet podataka, uspostavlja kontrolu
konkurentnosti i vrši oporavak baze podataka. Programeri aplikacija za
rad sa bazama podataka ne moraju da poznaju detalje o načinu zapisa
baze podataka na disku, ne moraju da formulišu algoritme za efikasan
pristup podacima, niti su opterećeni bilo kakvim aspektima oko
upravljanja podacima u bazi podataka.

Danas je veoma bitan i značajan koncept baze podataka po kome je to, u


stvari, zajednički resurs koga istovremeno (konkurentno) koristi veći broj
programa, jer se pravi efekti baze podataka ispoljavaju kada se radi u
mrežnom okruženju. Posmatrajmo bazu podataka jedne banke u kojoj se
nalaze računi građana. Moguće je da se u istom trenutku na šalteru u
jednoj ekspozituri podiže novac sa jednog računa i uplaćuje na drugi
račun, a da se istovremeno u sasvim drugoj ekspozituri uplaćuje novac na
isti taj račun. Pomenuti DBMS je upravo tu da upravlja konkurentnim
radom više korisnika i da obezbeđuje sinhronizaciju njihovog rada.

Takođe, DBMS ima funkciju da spreči štetne posledice (narušen


integritet baze, nekonzistentno stanje baze...) pri promenama
(transakcijama) koje se vrše nad bazom podataka u višekorisničkom
okruženju. U tu svrhu postoje razne tehnike kao što su tehnika
zaključavanja podataka, tehnika vremenskog markiranja itd. Posebno je
značajno upravljanje istovremenim (konkurentnim) transakcijama.
Tačnost, zaštita i dostupnost baza podataka, kao i korektnost i
performanse transakcija koje pristupaja tim bazama su bitni parametri za

- 10 -
uspeh svakog poslovnog sistema.Termini baza podataka i upravljanje
bazom podataka se ponekad mešaju. Stručno govoreći, baza podataka je
uvek skup činjenica, a ne računarski program.

DBMS je uveden kao interfejs između korisnika (korisničkih programa,


aplikacija) i zapisa baze podataka na disku. Korisnički programi ne
pristupaju podacima direktno, već komuniciraju sa ovim softverom
(programom). DBMS upravlja strukturom baze podataka: definiše
objekte baze, njihova svojstva (atribute), dozvoljene vrednosti atributa,
veze između objekata, ograničenja nad objektima i međusobnim vezama.
Omogućava manipulaciju podacima u bazi: unošenje, brisanje i izmene,
tj. omogućava njeno održavanje. Kontroliše pristup podacima: ko može
da pristupi podacima, kojim podacima i šta može sa njima da radi..
DBMS dozvoljava deljenje BP između više aplikacija/korisnika i čini
upravljanje podacima uspešnijim i delotvornijim Uobičajeno je da kada
se govori o softveru za baze podataka, onda se misli upravo na DBMS.
DBMS upravlja interakcijom između krajnjih korisnika (aplikacija) i
baze podataka. Krajnji korisnici imaju bolji pristup većem broju bolje
organizovanih podataka

Aplikacija Y
Aplikacija X Aplikacija Z

Data Base Management System

Baza podataka

Baza podataka – podaci na disku

Slika 1.5 DBMS je interfejs između (aplikacija) korisnika i zapisa baze


podataka na disku

- 11 -
1.3. Klasičan sistem zasnovan na datotekama

Kada su se računari počeli koristiti za obradu podataka, nisu postojale


baze podataka. Računari su u to vreme bili znatno slabiji nego današnji
personalni računari, zauzimali su čitavu prostoriju i koristili su se skoro
isključivo za naučna izračunavanja. Postepeno su računari uvođeni u
poslovni svet. Da bi bili od koristi za poslovne aplikacije, računari
moraju da skladište, manipulišu, i preuzimaju velike datoteke podataka.
Kako su poslovne aplikacije postajale sve kompleksnije, postalo je
očigledno da klasični sistemi zasnovani na datotekama imaju veliki broj
nedostataka i ograničenja. U većini bitnih poslovnih aplikacija danas se
umesto klasičnog sistema zasnovanog na datotekama koriste baze
podataka.

Klasičan sistem obrade podataka zasnovan na datotekama i programskim


jezicima prikazan je blok šemom na sledećoj slici. Programi su direktno
povezani sa datotekama, svaki program mora da poznaje detaljan zapis
podataka na disku
.

Aplikacija Y
Aplikacija X Aplikacija Z

Datoteka X1 Datoteka Z1
Datoteka Y4
Datoteka X2 Datoteka Z2
Datoteka Y5
Datoteka X3 Datoteka Z3
Datoteke – podaci na disku

Slika 1.6 Klasičan sistem obrade podataka zasnovan na programskim


jezicima i datotekama

Da bi objasnili osnovne karakteristike sistema zasnovanog na


datotekama, posmatrajmo jednu fabriku sa određenim proizvodnim
programom. Pretpostavimo da su nabavljene računarske aplikacije za

- 12 -
vođenje poslovanja ove fabrike realizovane na klasičnim sistemima koji
se zasnivaju na datotekama. Ovaj pristup dizajnu informacionog sistema
se fokusira na potrebe za obradom podataka pojedinačnih odeljenja, a ne
na potrebe organizacije kao celine. Kada bi se kod korisnika javila
potreba za novim sistemima pisali bi se novi računarski programi za
individualne aplikacije kao što su kontrola proizvoda, prijem računa, ili
kadrovski poslovi. Svaki od programa pravi se tako da odgovara
potrebama određenog odeljenja ili radne grupe. Prema tome, ne postoji
opšti plan, mapa ili model kojim bi se rukovodili za planiranje razvoja
sistema. Tri računarske aplikacije (A, B i C) pomoću kojih se obrađuju
podaci zapisani u datotekama su prikazane na slici 1.7. Programima se
održavaju tri nezavisna sistema porudžbine, naplate i plate. Na slici se
takođe vide osnovne datoteke vezane za svaku aplikaciju. Na primer,
proces porudžbina ima tri datoteke: podaci o kupcu, podaci o
proizvodima, podaci o porudžbinama. Neke od datoteka se ponavljaju u
sva tri procesa (redudansa) što je tipično za sistem obrade podataka koji
se zasniva na datotekama.

Slika 1.7 Klasična obrada podataka zasnovana na sistemu datoteka

- 13 -
1.3.1. Nedostaci sistema zasnovanog na datotekama

Postoji više mana koje su tipične za sistem koji je zasnovan na


datotekama i klasičnim programskim jezicima. Ove mane za primer
prikazan na slici 1.7 kratko su opisane u nastavku.
• Zavisnost između programa i podataka
Opisi datoteka se čuvaju u okviru svakog programa koji pristupa toj
datoteci. Na primer, u procesu porudžbine sa slike 1.7 program A
pristupa datoteci sa podacima o kupcu. Stoga, ovaj program sadrži
detaljan opis datoteke. Kao posledica ovoga, svaka promena koja se
napravi u datoteci, a odnosi se na strukturu, momentalno
podrazumeva da se mora menjati i opis datoteka u svakom programu
koji pristupa tim podacima. Primetite na slici 1.7 da se podaci o
kupcima nalaze i u procesu porudžbine i u procesu naplate.
Pretpostavimo da se veličina polja "adresa kupca" menja sa 20
karaktera na 30 karaktera. Opis datoteke u svakom programu (možda
čak u svih tri) se mora ažurirati. Često je teško i samo lociranje svih
programa na koje je uticala ovakva promena. Što je još gore, pri
ažuriranju se često prave greške.
• Redudansa podataka
Kako se u prikazanom sistemu procesi odvijaju nezavisno jedni od
drugih, ponavljanje podataka nije izuzetak već je pravilo. Na primer,
na slici 1.7 proces porudžbina ima datoteke sa osnovnim podacima o
proizvodima dok proces naplate ima datoteku o cenama proizvoda.
Dakle, obe ove datoteke sadrže podatke o istim proizvodima kao što
su: cena po jedinici proizvoda, opis proizvoda, i količina u skladištu.
Zbog nepotrebnih duplikata potreban je veći prostor za njihovo
čuvanje kao i više truda i rada pri njihovom ažuriranju. Neplanirana
redudansa podataka može da dovede do gubitka podataka. Na primer,
isti podaci mogu se voditi pod različitim imenima atributa u
različitim dokumentima, ili obrnuto, isto ime se može koristiti za
različite vrste podataka.

- 14 -
• Ograničenost deljenja podataka
Korišćenjem klasičnog sistema zasnovanog na datotekama, svaki
proces ima svoje datoteke i korisnici nemaju šansu da međusobno
dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da
radnici u računovodstvu imaju pristup samo procesu naplate, dok
nemaju pristup procesima porudžbina i plata. Menadžeri su imali
velike probleme pri sastavljenju izveštaja za koje su im bili potrebni
podaci iz različitih procesa, jer bi se često desilo da su dokumenta
nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti
podaci sakupili u jedan izveštaj. Takođe, dodatni problem je bio u
tome što su se željeni podaci često nalazili u različitim odeljenjima
organizacije.
• Dugo vreme za razvoj
Sa klasičnim sistemom zasnovanom na datotekama postoji mala
šansa za korišćenje prethodnih razvojnih dostiguća. Svaka nova
aplikacija zahteva od projektanta da krene od nule. Svaki put je
neophodno definisati nove formate i opise podataka i pisati kod za
pristup podacima za svaki program. Ovako veliko potrebno vreme za
razvoj nije u skladu sa današnjim poslovnim potrebama, gde je svaki
minut bitan da bi se postigao uspeh.
• Teško održavanje programa
Skup svih prethodno navedenih nedostataka dovodi do preterane
potrebe za održavanjem programa. Čak 80% budžeta predviđenog za
razvoj sistema zasnovanog na datotekama odlazi na njegovo
održavanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj
novih aplikacija.

Važno je znati da većina mana klasičnog sitema zasnovanog na


datotekama, koje smo u prethodnom delu teksta pominjali, mogu isto
tako biti ograničenja za bazu podataka, pogotovo ako se ne promeni
pristup razvoju baze podataka. Na primer, ukoliko preduzeće razvije
nekoliko zasebnih baza podataka (recimo, za svaku radnu jedinicu ili
proces po jednu bazu) sa malom ili nikakvom vezom između njih, onda
može doći do bespotrebnog ponavljanja istih podataka, ograničenja
deljenja podataka, produžavanja vremena potrebnog za razvoj i preterane
potrebe za održavanjem programa.

- 15 -
1.4. Pristup zasnovan na bazama podataka

Pristup zasnovan na bazama podataka potencira integraciju i deljenje


podataka između svih odeljenja jedne organizacije. Ovaj pristup zahteva
potpunu promenu u načinu razmišljanja, počevši od najvišeg nivoa
upravljanja. Takva promena načina razmišljanja za većinu organizacija je
veoma teška.

Da bi objasnili pristup zasnovan na bazama podataka posmatrajmo


prethodno razmatrani zastareli informacioni sistem fabrike koji se
klasično zasnivao na datotekama. Koncept pristupa razvoju
informacionog sistema zasnovanog na bazama podataka prikazan je na
slici 1.8. Odmah se može uočiti da podaci koji su prethodno čuvani u više
različitih datoteka, sada su integrisani u jedinstvenu bazu podataka.
Takođe, metapodaci koji opisuju ove podatke se nalaze zajedno sa njima
u bazi podataka. Sistem za upravljanje bazama podataka pruža
mogućnost stvaranja različitih pogleda na istu bazu podataka (ili baze
podataka) za različite korisnike u organizaciji. DBMS dozvoljava
korisnicima da dele, pretražuju, pristupaju i ažuriraju integrisanim
podacima.

Slika 1.8 Blok šema informacionog sistema zasnovanog na bazama


podataka

- 16 -
1.4.1. Prednosti pristupa zasnovanog na bazama podataka

Pristup zasnovan na bazama podataka ima mnogo potencionalnih


prednosti u odnosu na pristup zasnovan na datotekama. Te potencionalne
prednosti su sledeće:
• Nezavisnost između programa i podataka
Odvajanje metapodataka od aplikacija koje koriste podatke naziva
se nezavisnost podataka. Ova osobina kod baza podataka
dozvoljava promenu i prenos podataka organizacije na druge
računarske sisteme bez potrebe za promenom programa koji
obrađuje ove podatke.
• Minimalna redudansa podataka
Cilj pristupa zasnovanog na bazama podataka je da se podaci koji
su se u prethodnom pristupu čuvali odvojeno (i više puta su zbog
toga ponavljani) sada integrišu u jedinstvenu logičku strukturu.
Svaki podatak se nalazi samo na jednom mestu u bazi podataka.
Pristup zasnovan na bazama podataka ne uklanja redudansu u
potpunosti, ali omogućava projektantu baze podataka da pažljivo
isplanira vrstu i količinu redudanse. U nekim slučajevima je
poželjno napraviti ograničenu redudansu kako bi se performanse
baze podataka poboljšale (npr. brža pretraga).
• Poboljšana konzistentnost podataka
Eliminisanjem (ili kontrolisanjem) redudanse podataka, u velikoj
meri se smanjuju šanse za nekonzistentnošću podataka. Na
primer, ukoliko je adresa kupca zapisana na samo jednom mestu
ne može da postoji ne podudaranje u podacima u bazi podataka.
Takođe, ažuriranje podataka je u velikoj meri uprošćeno, kada je
svaka vrednost zapisana na samo jednom mestu. Na kraju,
uklanjanjem redudanse podataka dolazi do uštede memorije.

- 17 -
• Poboljšana razmena podataka
Baza podataka je dizajnirana kao resus organizacije koji koriste
svi njeni zaposleni (kojima je ona neophodna u opisu posla).
Određenim internim i eksternim korisnicima je dozvoljeno
korišćenje baze podataka, i svaki od njih (bio u pitanju jedan
korisnik ili grupa) ima jedan ili više pogleda koji mu olakšavaju
korišćenje baze podataka. Korisnički pogled je logički opis
jednog dela baze podataka koji je neophodan korisniku da obavi
neki zadatak.
• Povećana produktivnost u razvoju aplikacija
Velika prednost pristupa zasnovanog na bazama podataka je ta što
se u znatnoj meri smanjuju troškovi i vreme potrebno za razvoj
novih poslovnih aplikacija. Postoje dva važna razloga zašto se
aplikacije baza podataka razvijaju znatno brže nego kod klasičnih
sistema sa datotekama:

1. Pretpostavljajući da su baza podataka i sve propratne


aplikacije već napravljene i implementirane, programer
se može koncetrisati na određenu funkciju koja je
neophodna za novu aplikaciju, a ne mora da razmišlja o
definisanju podataka ili o detaljima vezanim za
implementaciju.
2. DBMS pruža veliki broj alata za izveštavanje, kao što su
generatori formi i izveštaja, i jezike uz pomoć kojih se
automatizuju neke od aktivnosti kao što su dizajn i
implementacija baza podataka.
• Smanjena potreba za održavanjem programa
Sačuvani podaci se moraju često menjati iz velikog broja razloga:
nove vrste podataka se dodaju, formati podataka se menjaju, i
tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu
godinu, kada se sa uobičajenog sistema prikazivanja godina sa
dve cifre moralo preći na četiri cifre. U sistemu obrade datoteka,
metapodaci i logika pristupanju podacima se nalaze u
individualnim aplikacionim programima (ovo je zavisnost između
programa i podataka o kojoj je ranije bilo reči). Kao rezultat
ovoga, promena formata podataka i metoda pristupanja
momentalno dovodi do potrebe menjanja aplikativnih programa.

- 18 -
Kod baza podataka, podaci su znatno više nezavisni od
aplikativnih programa koji ih koriste. U okviru određenih granica,
možemo da promenimo jednu od stavki, format podataka ili
aplikativni program, a da ne moramo da promenimo drugu
stavku. Kao rezultat ovoga, javlja se smanjenje potreba za
održavanjem programa.

1.4.2. Troškovi i rizici pristupa zasnovanog na bazama


podataka

U prethodnom delu teksta navedeno je nekoliko glavnih potencijalnih


prednosti pristupa zasnovanog na bazama podataka. Međutim, kod
velikog broja organizacija bilo je različitih problema kod ostvarenja i
iskorišćenja tih prednosti. Na primer, postizanje nezavisnosti podataka (i
stoga, smanjene potrebe za održavanjem programa) se pokazalo kao
teško ostvarivo zbog ograničenja starijih modela baza podataka i softvera
za upravljanje bazama podataka. Na sreću, relacioni modeli (kao i noviji
objektno-orjentisani modeli) nemaju ovih problema. Drugi razlog za
neuspeh da se iskoriste ove prednosti, je loše planiranje i implementacija
baza podataka – čak ni najbolji softver za upravljanje bazama podataka
ne može da prevaziđe ovakve manjkavosti. Pristup zasnovan na bazama
podataka sadrži neke dodatne troškove i rizike koji se moraju rešavati
kada se sistem počne primenjivati.
• Novo, obučeno osoblje
Često se dešava da preduzeće, koje se odluči za pristup zasnovan
na bazama podataka, mora da anagažuje ili obuči ljude za
projektovanje, implementiranje i održavanje baza podataka, kao i
da te ljude uključi u postojeću radnu organizaciju. Dalje, zbog
čestih izmena i brzine razvoja tehnologije, znanje ovog novog
osoblja zahteva stalnu nadgradnju i unapređivanje. Jedino
obučeno osoblje može da izvuče maksimum korisnosti iz novih
tehnologija.

- 19 -
• Troškovi i složenost instaliranja, upravljanja i rada sistema sa
bazama podataka
Višekorisnički sistem za upravljanje bazama podataka je veliki i
složen softver koji u startu mnogo košta, zahteva obučeno osoblje
za instaliranje i rad i ima značajne godišnje troškove za
održavanje i tehničku podršku. Instaliranje ovakvog sistema može
zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju,
da bi se mogle pratiti nove verzije i nadogradnje softvera. Takođe
se može pojaviti potreba za dodatnim i skupljim softverom za
baze podataka radi veće sigurnosti podataka.
• Troškovi prilagođavanja (konvertovanja) podataka
Termin nasleđeni sistemi se uglavnom koristi kada se govori o
starijim aplikacijama u preduzeću koje su bazirane na datotečnom
pristupu ili starijim bazama podataka. Troškovi prilagođavanja
ovakvih starijih sistema za rad sa modernim bazama podataka
(mereni u novcu, vremenu i zahtevnosti posla) često deluju kao
velika prepreka za preduzeće.
• Potreba za izradom sigurnosnih kopija i oporavkom
podataka (backup)
Deljena baza podataka preduzeća uvek mora biti tačna i dostupna.
To zahteva razvijanje i korišćenje jasnih procedura izrade
sigurnosnih kopija kao i oporavak baze podataka kada neko
oštećenje nastane. U današnjem okruženju, gde postoje raznovrsni
bezbednosni rizici, rešavanje ovog problema je od izuzetne
važnosti. Moderan sistem za upravljanje bazama podataka obično
sam obavlja izradu sigurnosnih kopija i oporavak podataka u
slučaju havarija.
• Konflikti u organizaciji
Deljena baza podataka zahteva saglasnost u vezi sa definicijama i
vlasništvom podataka, kao i utvrđenu osobu ili osobe odgovorne
za održavanje podataka. Iskustvo je pokazalo da nesuglasice u
pogledu definicija podataka, formata i kodiranja podataka, prava
na ažuriranje deljenih podataka i sl. su česta i vrlo teška tema za
rešavanje. Da bi se ovi problemi rešili potrebno je da je
organizacija u potpunosti posvećena uvođenju/korištenju pristupa
zasnovanog na bazama podataka. Zatim je potreban sposoban
administrator baze podataka kao i smislen pristup razvoju baza

- 20 -
podataka. Ukoliko podrška i posvećenost glavnih menadžera za
pristup okrenut bazama podataka izostane, velika je šansa da će
krajnji korisnici razviti veći broj samostalnih baza podataka. Ove
baze podataka će teško pružiti prednosti koje smo prethodno
opisali. U krajnosti, one mogu da dovedu do donošenja loših
odluka što naravno ugrožava celu organizaciju.

1.5. Primene baza podataka

Vrste baza podataka variraju od onih pravljenih za jednog korisnika PC


računara do baza koje su smeštene na glavni računar (mainframe) i
kojima pristupaju hiljade korisnika. Po broju korisnika koji im pristupaju,
baze podataka se mogu podeliti u više kategorija: lične baze podataka,
baze podataka za radne grupe, baze podataka odeljenja, baze podataka
preduzeća i Internet, intranet i ekstranet baze podataka.

1.5.1. Lične baze podataka

Lične baze podataka se prave za korišćenje od strane jednog korisnika i


već su dugo prisutne u korišćenju personalnih računara. Pojavom ličnih
digitalnih pomoćnika (PDA), lične baze podataka su našle primenu i u
nizu mobilnih uređaja koji osim računarskih imaju i neke druge primene
npr. mobilni telefoni, faks mašine, Internet čitači. Jednostavne aplikacije
sa bazom podataka u kojoj čuvaju informacije i detalje o komunikaciji sa
svakim klijentom, mogu da se koriste i sa računara i sa ličnog digitalnog
pomoćnika, kao i da se prebacuju sa jednog na drugi uređaj radi izrade
sigurnosnih kopija (backup) ili zbog zahteva posla. Uzmimo za primer
preduzeće koje ima određeni broj prodavaca koji su u kontaktu sa
postojećim i potencijalnim klijentima. Ako svaki prodavac ima još neke
aplikacije, npr. grafičke prezentacije, cenovnik sa uslovima prodaje po
kojem klijentu može ponuditi najpovoljniju kombinaciju proizvoda i
količina za naručivanje, onda bi mu za takav posao prenosni računar,
zbog svojih performansi i skladišnog prostora, mogao biti optimalno
rešenje. S druge strane, ako prodavac ima samo listu klijenata i
kontakata, njemu bi lični digitalni pomoćnik i aplikacija koja koristi malu
bazu podataka bili najbolje rešenje.

- 21 -
Lične baze podataka se široko primenjuju jer često mogu bitno unaprediti
produktivnost pojedinca. Međutim, one sadrže jedan faktor rizika:
podatke ovih baza nije lako deliti sa drugim korisnicima. Na primer, ako
bi menadžer prodaje želeo celokupan spisak klijenata i kontakata, to se
ne bi moglo ni brzo ni lako uraditi uzimanjem podataka iz ličnih baza
svakog od prodavaca. Ovo ilustruje veoma čest problem: ako su neki
podaci od interesa jednom čoveku, onda su verovatno (ili će brzo postati)
od interesa i drugim ljudima. Zbog toga, lične baze podataka bi trebalo
svesti na korišćenje pod posebnim okolnostima (npr. u veoma malim
preduzećima) gde je verovatnoća potreba za deljenjem podataka između
korisnika izuzetno mala.

1.5.2. Baze podataka za radne grupe

Radnu grupu čini relativno mali broj ljudi koji sarađuju na jednom
projektu ili aplikaciji ili na grupi sličnih projekata ili aplikacija. Radna
grupa obično sadrži desetak ljudi. Oni mogu biti uključeni u npr.
planiranje, projektovanje ili razvoj novog računarskog programa. Baza
podataka za radne grupe služi za podršku zajedničkog rada jedne takve
grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i
programe po porudžbini, koji se prodaju softverskim kompanijama kao i
krajnjim korisnicima. Obično, jedna ili više osoba rade na datom
programu, ili dele programe, u isto vreme. Grupi je potrebna baza
podataka koja će da prati razvoj svakog dela i koja će da omogući da se
podaci što lakše razmenjuju među članovima tima.

Svaki član radne grupe ima svoj računar, a računari su umreženi putem
LAN-a. Baza podataka se nalazi na centralnom računaru koji se zove
server baze podataka, koji je takođe na mreži. Stoga, svaki član grupe
ima pristup podacima. Različiti članovi grupe (u zavisnoti da li je u
pitanju rukovodilac projekta ili projektant, programer) mogu imati
različita ovlašćenja (privilegije), a time i različite poglede na podatke.
Primetićete da je glavna mana ličnih baza podataka, teško ostvariva
razmena podataka, ovde prevaziđena (barem je razmena podataka u
okviru grupe lako ostvariva). Međutim, razmena podataka otvara nova
pitanja i probleme koji nisu postojali kod ličnih baza podataka. Glavni
problemi upravljanja podacima su vezani za njihovu bezbednost i
integritet, s obzirom da više korisnika može istovremeno da obavlja
ažuriranje podataka.

- 22 -
1.5.3. Baze podataka odeljenja

Odeljenje je funkcionalna radna jedinica u okviru organizacije. Tipični


primeri odeljenja su: kadrovsko, marketing, proizvodnja, računovodstvo i
sl. Odeljenje je obično veće od radne grupe (nekada se sastoji i do 100
osoba) i odgovorno je za veći broj različitih poslova. Baze podataka
odeljenja su napravljene da podrže različite oblike poslova i aktivnosti
koje obavlja to odeljenje. Uzmimo za primer bazu podataka kadrovskog
odeljenja u kojoj se prate podaci vezani za zaposlene, vrste poslova,
stručnu spremu i poslovna zaduženja. Kada su svi relevantni podaci
sačuvani u bazi podataka, korisnici mogu da pretražuju bazu podataka u
cilju dobijanja odgovora na pitanja kao što su sledeća:
• Za određenu vrstu zanimanja (npr programer) kakve prilike za
zaposlenje trenutno postoje u organizaciji?
• Za tu istu vrstu posla koja stručna sprema ili veština je
neophodna?
• Koje veštine, znanje poseduje određeni radnik? I obrnuto, koji
radnici poseduju određenu veštinu, znanje?
• Koji sve radnici su obavljali određeni posao u organizaciji? I
obrnuto, koje sve poslove je određeni radnik obavljao u
organizaciji?
• Koje sve zaposlene nadgleda određeni menadžer?

Tipična pitanja na koja se treba odgovoriti pri pravljenju baze podataka


odeljenja su:

1. Kako baza podataka i njeno okruženje trebaju da budu


organizovani da bi se ostvarile zadovoljavajuće performanse,
uzimajući u obzir veliki broj korisnika i veliki broj transakcija?
2. Kako na odgovarajući način obezbediti podatke od
nedozvoljenog pristupa i/ili distribucije?
3. Koje alate za razvoj baze podataka i aplikacija treba koristiti u
slučaju ovako kompleksnog okruženja?
4. Da li i druga odeljenja koriste iste vrste podataka, i ako je to
slučaj, kako se najbolje može upravljati podacima po pitanju
njihove redudantnosti i konzistentnosti i metapodacima po
pitanju njihove konzistentnosti?
5. Da li su korisnici baze podataka geografski jedni od drugih
udaljeni ili je veličina baze podataka tolika da se podaci moraju

- 23 -
čuvati na više računara, tako stvarajući distribuirane baze
podataka?
6. Da li se bazi podataka može pristupati preko Interneta i da li ona
treba da bude uključena u intranet organizacije?

1.5.4. Baze podataka organizacija

Baza podataka organizacije obuhvata čitavu organizaciju ili više njenih


odeljenja. Ova vrsta baza podataka je namenjena da podrži sve procese
organizacije i proces donošenja odluka. Važno je istaći da jedna
organizacija može imati više baza podataka, tako da jedna takva baza
podataka ne sadrži sve podatke jedne organizacije. Jedna baza podataka
za celu organizaciju srednjih do velikih dimenzija ne bi bila praktična iz
mnogo razloga. Kao prvo zbog različitih potreba različitih korisnika,
kompleksnosti stvaranja jedinstvenih metapodataka za sve korisnike baze
podataka je ogromna.
Baza podataka organizacije pruža podršku za jedan određeni broj (skup)
odeljenja. Tokom poslednje decenije, razvoj baza podataka organizacije
je doveo do dva najvažnija oblika:

1. Enterprise resource planning (ERP) sistem


2. Implementacija skladišta podataka (data werehouses)

ERP sistemi rade sa tekućim podacima organizacije, dok skladišta


podataka sakupljaju podatke iz raznih operativnih baza podataka,
uključujući i lične, radnih grupa, odeljenja i ERP baze podataka.
Skladišta podataka pružaju mogućnost korisnicima da rade sa prethodnim
podacima kako bi pronašli obrazce i trendove događaja i kako bi
odgovorili na pitanja koja su vezana za strategiju poslovanja.

Uzmimo za primer veliku zdravstvenu organizaciju koja upravlja grupom


medicinskih centara, u šta spadaju domovi zdravlja, bolnice, klinike i
starački domovi. Svaki od ovih medicinskih centara ima svoju bazu
podataka (ili baze podataka) koja pruža podršku u obavljanju raznih
poslova. Ove baze podataka imaju podatke o pacijentima, doktorima,
medicinskim uslugama, poslovanju i drugim bitnim entitetima. Baza
podataka pruža adekvatnu podršku za većinu poslova u svakom
pojedinačnom medicinskom centru. Međutim, postoji potreba za

- 24 -
jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla
sva poslovanja sa jednim dobavljačem ili pacijentom. Povaćanje
produktivnosi se može postići uvođenjem, na primer, centralnog sistema
za naručivanje materijala za sve zdravstvene centre i rapoređivanjem
osoblja i usluga koje vrše na sve zdravstvenim centre. ERP sistem
omogućava uvođenje prethodnih promena. Donošenje odluka na nivou
cele organizacije, u vezi sa poslovanjem sa dobavljačima, i podnošenje
izveštaja raznim agencijama zahteva sakupljene svih prethodnih podataka
i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi
skladište podataka koje se održava i nalazi u sedištu organizacije. Podaci
koji se nalaze u skladištu podataka su preuzeti (i potom sumirani) iz
pojedinačnih baza podataka svakog medicinskog centra. Ovaj proces
preuzimanja podataka se odvija periodično putem telekomunikaciono-
računarske mreže.

1.5.5. Internet, Intranet i Extranet baze podataka

Internet tehnologije služe za olakšavanje deljenja podataka i informacija.


Na primer, u okviru fabrike može se koristiti lokalna mreža (LAN) koja
povezuje radne stanice zaposlenih iz raznih odeljenja sa serverom na
kome se nalazi baza podataka. LAN unapređuje komunikaciju i proces
donošenja odluka u okviru same kompanije. Ako se uvede Intranet koji
se zasniva na Web tehnologiji, njemu se može pristupati samo u okvirima
kompanije. Radna stanica svakog zaposlenog se može koristiti kao web
browser, i na taj način se dobija brz pristup informacijama kompanije,
uključujući i telefonski adresar, specifikacije proizvoda, elektronsku
poštu i tome slično. Takođe se radne stanice mogu koristiti i kao
personalni računari koji povezani preko LAN-a pristupaju serveru na
kome se nalazi baza podataka. Moguće je dodati i Web interfejse nekim
poslovnim aplikacijama, kao što su unošenje porudžbina, da bi na taj
način više internih poslovnih aktivnosti moglo biti obavljano od strane
zaposlenih preko intraneta.

U cilu efikasnijeg ukupnog poslovanja intranet sistem se može otvoriti ka


kupcima preko Interneta. Ovo omogućava maloprodajama da pretražuju
katalog proizvoda (uključujući slike i specifikacije proizvoda) i utvrde da
li željenog proizvoda ima u skladištu. Tada radnici u maloprodajnim
objektima mogu da obaveste svoje kupce i da poruče željeni komad

- 25 -
proizvoda preko Interneta. Internet konekcija je konfigurisana kao
extranet što znači da samo odobrene maloprodaje mogu da pristupe
intranet-u fabrike.

Sve veće korišćenje Interneta, svetske mreže koja povezuje korisnike,


nebitno koje platforme je dovelo i do promena u okruženju baza
podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do
bitnih promena u davno utvrđenim modelima poslovanja. Veoma uspešne
kompanije su bile ugrožene zbog novih kompanija koje su prihvatile
Internet pomoću koga su unapredile informisanje i usluge koje su pružale
svojim klijentima, i koje su zaobišle tipične tokove marketinga i
distribucije proizvoda. Na primer, kupci konfigurišu i poručuju svoj PC
računar direktno od proizvođača računara. Informacije o upražnjenim
mestima i aktivnostima organizacije se mogu dobiti preko Interneta za
većinu organizacija.

Svaka od ovih radnji zahteva podršku baze podataka. Lak pristup


Internetu svih vrsta platformi omogućava kompanijama da reorganizuju
svoje poslove i razviju brže aplikacije i to po manjim troškovima.
Standardni interfejsi omogućavaju veću produktivnost korisnika, uz
manje provedenog vremena na obuci, i manju potrebnu podršku. Osnova
razvoja korisnikove aplikacije je priključivanje baze podataka iz koje se
mogu dobiti sveže informacije. Kada je baza podataka povezana sa
nekom Internet lokacijom, korisnici preko Web browser-a mogu da
postavljaju određena pitanja na koja će dobiti odgovore bazirane na
svežim informacijama. Odgovaranje na pitanja je automatsko; nema
potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo
pitanje nekoj osobi i da bi se zatim od nje čekao odgovor. Internet baze
podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta.
Kompanije prate sva dešavanja na sajtu kako bi došli do što više
informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom,
dužina zadržavanja na svakoj stranici i tome slično) kako bi što više
unapredili svoj odnos prema kupcima.

Većina primera koji su navedeni prikazuju Business-to-Customer (B2C)


veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obično
naziva B2B (Business-to-Business) odnos. Internet se koristi da olakša
B2C odnos, zato što su kupci obavezno spoljni faktor u odnosu na firmu,
i mogućnost kupca da pristupi poslovnim podacima i informacijama je od
velike važnosti za uspešan odnos. Dozvoljavanjem pristupa poslovnim

- 26 -
bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se
nova pitanja za rukovođenje informacionim sistemima vezana za
sigurnost i integritet podataka.

Kompanije su godinama vršile razmenu informacija putem elektronske


razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i
dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije,
uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za
obavljanje B2B razmena podataka i informacija. Extranet koristi Internet
tehnologiju, međutim, pristup extranetu je, za razliku od Interneta kome
mogu svi pristupiti, ograničen. Ustvari, pristup je ograničen na
kompanije koje su u ulozi dobavljača i kupca i koje imaju međusobni
dogovor o pristupu podacima i informacijama jednih drugima. Obično,
prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera.
Ovaj način pristupa olakšava poslovne odnose tako što pruža brži i
efikasniji način obrade i pristupanja podacima.

Kao što je prethodno pomenuto mnoge organizacije su koristile Internet


tehnologiju za stvaranje privatne mreže namenjene za upravljanje
informacijama u okviru organizacije. Po izgledu ne postoji razlika
između intranet i Internet stranica, ali pristup intranet stranici je
ograničen samo na korisnike u okviru te organizacije. Stoga je i pristup
bazi podataka organizacije ograničen. Intranet može da ostvari Internet
konekciju ali ta konekcija će biti zaštićena firewall-om koji sprečava
neovlašćeni pristup intranetu.

- 27 -
1.6. Tipično okruženje baze podataka

Glavni delovi tipičnog okruženja baze podataka i njihove veze su


prikazani na slici 1.9.

1. Baza podataka Organizovan skup logički povezanih podataka,


obično napravljena da zadovolji potrebe za informacijama više
korisnika u organizaciji.
2. Skladište podataka Centralna baza „znanja“ za sve definicije
podataka, njihova ograničenja, veze između podataka, izgleda
ekrana i izveštaja i drugih sistemskih komponenti. Uskladišteni
podaci iz prethodnog perioda.
3. DBMS Sistem za upravljanje bazama podataka (SUBP).
Softverski sistem koji se koristi za kreiranje, održavanje i
kontrolu pristupa korisnika baze podataka.
4. Aplikativni programi Računarski programi koji služe za
kreiranje i održavanje baze podataka i pružaju informacije
korisnicima.
5. Administratori podataka i baza podataka Administratori
podataka su osobe odgovorne za upravljanje svim izvorima
podataka u organizaciji. Administratori podataka su odgovorni za
fizički dizajn baza podataka i za upravljanje tehničkim
problematikama u okruženju baza podataka.
6. Projektanti sistema Osobe kao što su sistemski analitičari i
programeri koji dizajniraju nove aplikativne programe.
Projektanti sistema često koriste CASE alate za analizu potreba
sistema i dizajn programa.
7. Korisnički interfejs Jezici, meniji, i itd. pomoću kojih korisnici
koriste različite komponente sistema, kao što su CASE alati,
aplikativni programi, DBMS i metapodaci.
8. Computer-aided softver engineering (CASE) alati Alati koji se
koriste za dizajniranje baza podataka i aplikativnih programa.
9. Krajnji korisnici Osobe koje dodaju, brišu i modifikuju/ažuriraju
podatke u bazi podataka i koje zahtevaju ili primaju podatke iz
njih. Svaka interakcija između korisnika i baze podataka dešava
se preko DBMS-a.

- 28 -
Slika 1.9 Komponente okruženja BP

Sa unapređenjem softvera, korisnički interfejs postaje sve lakši za


upotrebu. Primeri za ovakav napredak su sistemi zasnovani na menijima,
sistemi sa mogućnošću pristupa Internetu, i sistemi koji prepoznaju govor
(prihvataju govorne komande). Cilj ovih sistema je da što više krajnjih
korisnika može da koristi računar, što znači da korisnici koji nisu
računarski eksperti mogu sami da naprave izveštaje i koriste jednostave
aplikacije. Naravno, u ovakvom okruženju administratori baza podataka
moraju da obrate pažnju na bezbednost baze podataka. Okruženje baze
podataka prikazano na slici 1.9 predstavlja integrisani sistem hardvera,
softvera i ljudi koji je napravljen da olakša skladištenje, preuzimanje, i
kontrolu izvora informacija i da poveća produktivnost preduzeća.

- 29 -
1.7. Istorija razvoja baza podataka

Nastanak baza podataka se vezuje za Herman-a Holerith-a koji je


1884. godine prijavio patent – sistem za automatsku obradu podataka
(AOP) o popisu stanovništva u SAD. Podaci na bušenim karticama su
ručno ubacivani u uređaj za očitavanje, a obrada podataka se odnosila na
prebrojavanje. Programiranje se svodilo na izbor vrste prebrojavanja, a
radilo se ručnim prespajanjem kontakata. Dotadašnja obrada podataka
popisa trajala je 10-tak godina, a sa Holerith-ovim izumom vreme obrade
bilo je smanjeno na šest nedelja. Herman Hollerith je osmislio ideju po
kojoj se svaki stanovnik SAD predstavlja nizom od 80 karaktera – ime,
godište itd. popunjenih praznim prostorima da bi se za sva imena
obezbedila ista dužina, tako da baza podataka bude „poravnata“. On je
uspeo da proda koncept svoje mašine i bušene kartice koje su služile za
čuvanje podataka u statističkom birou SAD. Tako je popis stanovništva
iz 1890. godine bio prva automatizovana baza podataka, koja se u suštini
sastojala od hiljada kutija punih bušenih kartica. Od Holerith-ove
kompanije nastao je današnji IBM.

Slika 1.10 Izgled Holerith-ove bušene kartice i mašine za očitavanje


kartica

- 30 -
Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama
počeli su se pojavljivati prvi elektronski računari. Oni su se često koristili
upravo za jednostavne linearne baze podataka, najčešće za
računovodstvo. Ipak, vrlo brzo, bogati kupci su počeli da zahtevaju više
od njihovih ekstremno skupih mašina. Sve je to vodilo do ranih baza
podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste
Hollerith-ove bušene kartice, neznatno modifikovane u odnosu na
originalni dizajn. Nefleksibilnost polja iste dužine, baze podataka
pokretane 80 kolonskim bušenim karticama, učinile su rane računare
metom napada i šala i potpunom misterijom za običnog čoveka.

Većina prvobitnih baza podataka se odnosila na specifične programe


napisane za specifične baze podataka. Za razliku od modernih sistema
koji mogu biti primenjeni na potpuno različite baze podataka, ovi sistemi
su bili usko povezani za bazu podataka da bi osigurali brzinu na uštrb
fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put
pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom
sledećih decenija. U većini slučajeva, period uvođenja je dugo trajao,
skoro deceniju pre navedene godine početka upotrebe. Na primer,
relacioni model je prvi put definisan od strane E.F.Codd u tekstu
objavljenom 1970 godine. Međutim, relacioni model nije bio široko
prihvaćen sve do 1980-tih godina.

1960’te

Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali


dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka
su uvedeni u ovoj deceniji, i korišćeni su najpre samo kod velikih i
složenih projekata, kao što je to bio projekat sletanja Apollo-a na Mesec.
Ovaj period možemo posmatrati kao period ’dokazivanja’, u kom je
demonstrirana sposobnost ovih sistema da upravljaju ogromnim
količinama podataka. Takođe, prvi napor da se standardizuju poduzet je
sa formiranjem DBT Grupe (Data Base Task Group), tokom kasnih ’60-
ih godina.

- 31 -
1970’te

Tokom ove decenije, upotreba sistema za upravljanje bazom podataka je


postajala komercijalna stvarnost. Hijerarhijski i mrežni sistemi za
upravljanje podacima su uvedeni, velikim delom zbog potrebe za
sistemom koji će moći da upravlja složenim strukturama podataka, kao
što su računi fabrika pri nabavci sirovina, kojima je bilo izuzetno teško
upravljati preko konvencionalnih metoda. Ovi modeli se i suštinski
smatraju prvom generacijom sistema za upravljanje bazom podataka.
Oba pristupa su se široko primenjivala, zapravo, mnogi od tih sistema su
u upotrebi i danas. Pa ipak, imali su nekoliko velikih nedostataka:

• Težak pristup podacima. Za pristup i najjednostavnijim podacima


bili su potrebni izuzetno složeni programi.
• Veoma ograničena nezavisnost podataka, tako da se programi
nisu mogli izolovati od promena u formatu podataka.
• Nije postojala nijedna široko prihvaćena teorijska podloga za bilo
koji od ovih modela, za razliku od relacionog modela podataka.

1980’te

Da bi se prevazišla ova ograničenja, E. F. Codd, kao i mnogi drugi,


razvili su model relacionih podataka tokom ’70-ih godina. Ovaj model,
koji se smatra drugom generacijom DBMS-a, doživeo je široku
komercijalnu upotrebu u poslovnom svetu tokom ’80-ih godina. Sa
relacionim modelom svi podaci su predstavljeni u formi tabele. Relativno
jednostavan programski jezik četvrte generacije, nazvan SQL, korišćen je
za dobijanje informacija. Ovaj model je obezbedio jednostavan pristup
podacima i onim ljudima koji nisu bili programeri, prevazilazeći na taj
način jednu od najvećih primedbi koja je pratila sisteme prvih generacija.
Model je takođe pokazao i svoju pogodnost za komunikaciju na relaciji
klijent/server, paralelni prenos podataka, i upotrebu grafičkog
korisničkog interfejsa (GUI).

- 32 -
1990’te

Ove godine se označavaju kao nova računarska era, najpre na nivou


računarske komunikacije na relaciji klijent/server, a potom sa stvaranjem
skladišta za podatke i upotrebom Internet aplikacija, koji su dobijali sve
više na važnosti u ovom periodu. Kao što je upravljanje podacima od
strane DBMS-a postalo visoko primenjivo (npr., u računovodstvu) tokom
osamdesetih godina, multimedijalni podaci (uključujući i grafiku, zvuk,
slike i video zapis) su postali uobičajena stvar tokom devedesetih godina.
Kako bi se izborili sa sve složenijim podacima, tokom devedesetih su
uvedeni sistemi okrenuti ka objektu, koji se smatraju trećom
generacijom. Zbog velike potrebe za organizacijom ogromne količine
podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i
prethodni sistem su u upotrebi i danas. Neki proizvođači čak rade na
razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi
mogli da upravljaju obema vrstama istih.

Od 2000. godine

Naravno, navodimo se na razmišljanje u kom pravcu će da krene razvoj


DBMS tehnologija tokom naredne decenije. Iako će nesumnjivo doći do
novih iznenađenja, možemo očekivati nastavak dobro uspostavljenih
trendova:

1. Mogućnost upravljanja sve složenijim tipovima podataka. Ovi


tipovi uključuju i multidimenzionalne podatke, koji su već
dobili na važnosti u aplikacijama skladištenja podataka.

2. Nastavak razvoja ’univerzalnih servera’. Zasnovani na sistemu


treće generacije DBMs-a, to su serveri koji mogu da upravljaju
širokom lepezom raznih tipova podataka, tako da budu
transparentni svim korisnicima. Biće naročito važni kod
Internet aplikacija.

3. Dok su u potpunosti distribuirane baze podataka postale


realnost, trenutni trend ka cenrtalizaciji istih će se nastaviti.
Kako se troškovi komunikacije sve više smanjuju, nasuprot
porastu tipova podataka,vrednost lociranja i pristupa

- 33 -
centralizovanoj bazi podataka takođe se smanjuje. Manji
troškovi, a visoke performanse svakako ohrabruju ovaj trend.

4. Skladišta sa adresiranim sadržajem će postajati sve


popularnija. Sa ovakvim pristupom, korisnik može da izvuče
bilo kakav podatak specifikacijom kakvu vrstu podatka želi,
umesto kako da dođe do njega. Na primer, korisnik može da
skenira fotografiju i da traži od kompjutera pretragu, kako bi
pronašao istu takvu, ili njoj sličnu.

5. Baza podataka i druge tehnologije, poput veštačke


inteligencije i televizije, kao informacionog servisa, olakšaće
pristup podacima neobučenim korisnicima. Na primer,
korisnik će biti u mogućnosti da zahteva podatak na više
jezika, a tehnologija baza podataka će da uključuje potrebe
korisnika za podacima, na osnovu upita koji se čuvaju, i
menjati se na taj način.
6. Rad na tehnologijama algoritama za tehniku analize podataka,
koji teže ka upravljanju veoma velikim paketima podataka,
kako bi organizacije što lakše analizirale svoja ogromna
skladišta podataka. To će u velikoj meri olakšati u planiranju
strategije oraganizacija za njihovo poslovanje za duže
vremenske periode.

7. I na kraju skale se nalazi dalje širenje PDA, što će dovesti do


poboljšane sinhronizacije malih baza podataka i poboljšanje
brzine bežičnog prenosa. Bluetooth i drugi bežični standardi
će u velikoj meri ubrzati razvoj bežičnog povezivanja na
Internet, ali će i nametnuti pitanje daljeg razvoja zaštite
podataka.

- 34 -
1.8. Modelovanje

Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima


koji su bitni za njeno poslovanje. Međutim, broj internih podataka i
podataka iz okruženja je ogroman te je nemoguće sve podatke i sve
uočene detalje opisati i sačuvati unutar informacionog sistema.
Postupkom selekcije identifikuju se i čuvaju samo relevantni podaci.
Time se dolazi do pojma modela podataka. On je izraz i posledica
zahteva za obradom podataka relevantnih za određeno područje primene.
Modeli su čovekovo sredstvo pojednostavljivanja problema i njegovo
posmatranje samo sa stanovišta bitnih za ciljeve analize. Objekt
posmatranja (npr. automobil) ima uvek više osobina (atributa) od kojih u
datom trenutku analize može biti dovoljan samo njihov manji broj (npr.
samo registarski broj, tip automobila, ime i prezime vlasnika). To su
najvažniji atributi potrebni u postupku pretraživanja i pronalaženja
vlasnika vozila na osnovu registarskog broja vozila unutar jednog
informacionog sistema. Ostali atributi kao što su boja, godina
proizvodnje, broj sedišta i sl. nisu bitni (mogu se zanemariti ) za takav
postupak. Čovek, obdaren sposobnostima apstraktnog načina mišljenja,
stvara jedan apstraktni model realnog sveta. Takav model realnog sveta
(objekta posmatranja) zasniva se na simbolima i zove se konceptualni
model podataka.

Izlaz1
Relan svet

Ulaz
Cilj svakog modela je da učini da je: Izlaz1~Izlaz2

Programi za Baza Programi za Izlaz2


održavanje podataka izveštavanje

Slika 1.11 Realan svet i njegov model

Modelovanje podataka se radi paralelno sa analizom potreba. Kako se


informacije prikupljaju, objekti se identifikuju, dodjeljuju im se imena
koristeći termine bliske krajnjim korisnicima. Objekti se onda modeluju i
analiziraju korištenjem dijagrama objekti-veze (ER dijagrami). Dijagram
se može pregledati od strane dizajnera i krajnjeg korisnika da bi se

- 35 -
osigurala njegova kompletnost i tačnost. Ako model nije tačan,
modifikuje se, što ponekad zahteva da se prikupe dodatne informacije.
Ciklus pregledanja i modifikovanja se nastavlja sve dok se ne dobije
potvrda da je model korektan.

1.8.1. Razvoj konceptualnih modela

Objekti iz relnog sveta se u računarskoj primeni opisuju pomoću


podataka. Podaci su zato apstrakcija realnosti, tj. sredstva za kodiranje
osobina objekata iz realnog sveta. Modelovane, kao postupak kojim se
realni svet svodi na određeni broj podataka, predstavlja kompleksan
posao i sastoji se iz više koraka:
• Izbor (selekcija). U prvom koraku se mnoštvo objekata iz
realnog sveta redukuje na manji skup objekata, koji će činiti
objekte modela. Npr. objekti mogu biti student, predmet,
profesor, studentska služba, polaganje ispita i sl. U procesu
selekcije ovaj broj objekata se može redukovati na manji broj, ako
je cilj praćenje uspešnosti studiranja na fakultetu. Time se
složenost realnog sistema smanjuje. Selekcija se ne odnosi samo
na objekte nego i na njihove osobine, kao i na međusobne veze
(relacije) između objekata.
• Imenovanje. Svakom objektu u realnom svetu, svakoj vezi
između uočenih objekata, kao i svakom atributu (svojstvu)
uočenog objekta ili veze dodeljuje se ime.
• Klasifikacija. Nehomogeni skup objekata i odnosa se svrstava u
homogene klase i tipove objekata. Klasifikacija uvek zavisi od
područja primene.

Rezultat navedenih koraka modelovanja zove se konceptualni model. On


sadrži, za posmatrani problem iz realnog sveta, sve relevantne tipove
objekata, njihove osobine i međusobne veze. Rezultati proučavanja
modela podataka doveli su do saznanja da svaki model podataka ima tri
neodvojive komponente:

• strukturu podataka,
• operacije nad podacima,
• ograničenja (constraints).

- 36 -
Struktura i ograničenja, za razliku od operacija, opisuju stanje realnog
sistema, tj. predstavljaju statički opis stanja sistema. Strukturu modela
čine objekti, njihova svojstva, veze između objekata i njihovih svojstava.
Operacije nad podacima u modelu su, u stvari, operacije nad strukturom
modela kojima se izražava dinamika realnog sistema. Operacije
izražavaju kretanje i promene tj. dinamiku realnog sistema. Ograničenja
su pravila koja razdvajaju dopuštena od nedopuštenih stanja realnog
sistema i u svojoj prirodi deo su strukture modela podataka. Ponekad se
ne posmatraju kao odvojene komponenta, nego kao deo strukture modela
podataka.

1.8.2. Entiteti

Modelima podataka nastoji se preslikati realan sistem. Realan sistem


sastoji se od objekata iz realnog sveta i njihovih veza između kojih se
uspostavljaju različiti odnosi. Pod entitetom se podrazumeva sve što se
može jednoznačno odrediti, identifikovati i razlikovati. Tako široko
postavljena definicija pokazuje da entitet može biti svaki "realan" ili
"apstraktan" objekt o kojem u određenom trenutku razmišljamo. Entitet
je realan ako fizički, stvarno postoji. Najopštije se može tvrditi da su
granice entiteta u modelu podataka određene ljudskim pogledom i
načinom razmišljanja.
Svaki entitet uočen u realnom sistemu ima svoje osobine koje ga čine
složenim i njihove vrednosti omogućavaju razlikovanje entiteta. Svojstvo
entiteta uključuje dva elementa - atribut i vrednost atributa (npr. entitet
Student ima atribute: Ime, Prezime, Broj indeksa, Adresu, Telefon i sl. i
vrednosti Marko, Marković, 123/03, Danijelova, 15, 011/376-543
respektivno). Svaki put kada se promeni vrednost atributa, potrebno je
promenu evidentirati, tj. ažurirati tu vrednost atributa za dati entitet.
Precizno govoreći, objekti koji se označe pojmom entiteta mogu se zvati
klase entiteta. Svaki objekt ima osobine (atribute) klase entiteta kojoj
pripada. Npr. klasu entiteta Student čine pojedinačni entiteti od kojih
svaki ima zajedničke atribute: Ime, Prezime, Broj indeksa, Adresa,
Telefon i sl. Svaki pojedinačni entitet ima sve navedene atribute, ali će se
razlikovati od drugih entiteta po vrednostima pojedinih atributa.

- 37 -
Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se
vrednost. Ako je atribut dovoljno složen, tako da ima svoje dodatne
atribute, može se posmatrati kao novi entitet.
Domen atributa je skup svih mogućih vrednosti koje atribut može
poprimiti.
Primarni ključ je jedan ili više atributa čija vrednost jednoznačno
određuje primerak entiteta. Na primer, za entitet Auto, primarni ključ je
atribut registarski broj. Dva različita člana ili primerka entiteta ne mogu
imati isti primarni ključ. Primarni ključ je jedinstven za svakog člana
entiteta. Na primer, za entitet Student primarni ključ bi mogao biti broj
indeksa.

1.8.3. Veze između entiteta

Baza podataka se ne odnosi samo na pojedinačne objekte nego i na


odnose između objekata. U realnom sistemu objekti nisu međusobno
izolovani, nego se nalaze u međusobnoj interakciji. Student se upisuje na
fakultet, sluša predavanja iz pojedinih predmeta, prijavljuje polaganje
ispita, polaže ispit itd. To su primeri logičkih i realnih veza između
objekata, koje slede iz realnih odnosa u posmatranom sistemu studiranja
na jednom fakultetu. Istražimo jedan skup odnosa između studenata koji
slušaju predavanja kod određenog profesora. Postavlja se pitanje šta su u
takvim odnosima objekti, koje su njihove osobine (atributi) i kako
prikazati njihove odnose.

Identifikovati objekte, njihove osobine i odnose znači praktično izgraditi


model podataka. U modelu podataka ne postoje samo atributi objekta,
nego i veze između objekata. Prvo se selektuju objekti, imenuju se, a
zatim se analiziraju tipovi odnosa koji se uspostavljaju između objekata.
Odnosi između objekata posmatranja prikazuju se najčešće primenom
logike skupova i preslikavanja njihovih elemenata.

Najjednostavniji odnos između ta dva tipa objekata naziva se


preslikavanje 1:1. Kod takvog preslikavanja svaki se element skupa X
može preslikati na najviše jedan element skupa Y. Istovremeno, i svaki
element skupa Y može biti preslikan na najviše jedan element skupa X.
Karakterističan primer bi bio sa entitetima Fakultet i Dekan. Na jednom
fakultetu može biti samo jedan dekan, a jedan dekan može biti dekan na

- 38 -
samo jednom fakultetu. Takvi odnosi između entiteta su retki, a mogu se
predstaviti sledećom slikom:

Slika 1.12 Preslikavanje entiteta 1:1

Druga vrsta odnosa naziva se preslikavanje N:1 (ili 1:N). Više elementa
skupa X može se preslikati na najviše jedan element skupa Y.
Istovremeno jedan element skupa Y može se preslikati na više elemenata
skupa X. Pogodan primer za ovu vrstu odnosa između entiteta je odnos
između entiteta Student i Dekan. Više studenata na jednom fakultetu ima
samo jednog dekana, a jedan dekan je dekan za više studenata na svom
fakultetu.

Slika 1.13 Preslikavanje entiteta N:1

Najsloženije preslikavanje je tipa M:N. Svaki element prvog skupa može


se preslikati na više elemenata drugog skupa, ali se i svaki element
drugog skupa može preslikati na više elemenata prvog skupa.
Karakterističan primer ovakvih veza postoji ako se uoče entiteti Student i
Profesor. Jednom studentu predaje više profesora, a ujedno jedan
profesor predaje za više studenata.

- 39 -
Slika 1.14 Preslikavanje tipa M:N

1.8.4. Troslojna arhitektura baze podataka

Osnovni koncept baze podataka je ideja o skupu činjenica ili delova


znanja. Činjenice mogu da budu struktuirane na različite načine koji se
nazivaju modeli podataka. Model podataka nije statična struktura nego se
menja kako bi odražavao promene koje se dešavaju i u realnom sistemu.
Na primeru informacionog sistema jednog fakulteta, studenti polažu
pojedine ispite, neke poništavaju i dobijaju drugačije ocene, upisuju se
novi studenti, drugi diplomiraju, neki asistenti postaju profesori itd.

Za jednostavne slučajeve, kao i mali broj promena relacija i entiteta,


moguće je ažuriranje podataka vršiti ručno. Za kompleksnije sisteme (sa
nekoliko stotina ili hiljada entiteta ili relacija) ažuriranje podataka postaje
ogroman problem. Jedino se uz pomoć računara može održavati ažurnost
podataka u velikim informacionim sistemima. Obrada podataka postaje
ne samo pitanje produktivnosti neke firme ili organizacije, nego i
opstanka, rasta i razvoja u okruženju s intenzivnom konkurencijom.
Obrada podataka je deo svakog poslovnog procesa, stoga je poznavanje
baza podataka bitno ne samo za projektante informacionih sistema i
programere, nego i za krajnje korisnike rezultata takvih obrada. Oni nisu
samo skup povremenih korisnika baza podataka, kao što se to može reći
za programere ili projektante informacionih sistema. Danas veliki broj
zaposlenih, koji nisu upoznati sa konceptualnom šemom BP, kreiraju,

- 40 -
unose, ažuriraju ili jednostavno koriste baze podataka na različitim
nivoima organiziranosti poslovnih sistema.

Model baze podataka koji je danas poznat kao ANSI/X3/SPARC model


prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za
upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu
te arhitekture. Aplikativni programi komuniciraju s bazom podataka
preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih
podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući
korisnički model. DBMS preslikava eksterni model na konceptualni i
konceptualni na interni model.

Konceptualni nivo je najbliži stvarnosti. Taj se nivo definiše u procesu


kreiranja modela podataka. Jedan od ciljeva modela podataka je
oblikovanje podataka za sadašnje i buduće aplikacije. Može se reći da
konceptualni nivo čine sve relacione šeme modela podataka, sve relacije i
ograničenja. Spoljašnji nivoi (modeli A, B i C) formiraju se na temelju
konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema
potrebama pojedinih korisnika.

Konceptualni
Eksterni model model Interni model
(sloj) (sloj) (sloj)

Model A A Podaci 1

B Podaci 2
Model B
Podaci 3

C
Model C Podaci N

Slika 1.15 Troslojna arhitektura baze podataka

- 41 -
Unutrašnji (interni) sloj baze odnosi se na zapisivanje konceptualnog
sloja na nekom medijumu za čuvanje (najčešće disku). Radi se o
slogovima zapisanim u datotekama. Niži sloj, uslovno rečeno, ili nivo
bliži disku od internog sloja BP, je operativni sistem , koji na osnovu
logičkih adresa slogova čita sadržaj diska.

1.9. Modeli baza podataka

Za modelovanje strukture podataka koriste se različite tehnike. Određeni


modeli se lakše koriste za neke tipove sistema upravljanja bazama
podataka nego drugi modeli. Model čini osnovu za osmišljavanje,
definisanje i implementaciju baze podataka.

Istorijski gledano sistemi za upravljanje bazama podataka mogu se


podeliti u sledeće osnovne modele:

• Hijerarhijski model – čine ga podaci složeni u hijerarhijsku


strukturu;
• Mrežni model – može se predstaviti usmerenim grafom u kojem
su čvorišta podaci, a lukovi među čvorištima definišu veze među
podacima;
• Relacioni model – zasnovan na matematičkom pojmu relacije.
Podaci i veze među podacima se prikazuju preko
dvodimenzionalnih tabela.
• Objektni model – bazira se na konceptu objekata, koji
predstavljaju skup podataka i operacija koje se na njima mogu
izvršavati.

- 42 -
1.9.1. Hijerarhijski model
Hijerarhijski model je najstariji od svih modela baza podataka, i
za razliku od mrežnog, relacionog ili objektno orjentisanog, nema dobro
dokumentovanu istoriju svoje koncepcije i početne verzije ovakvog
modela. Ovaj model se razvio iz informacionog sistema za upravljanje u
50-tim i 60-tim godinama prošlog veka. Usvojen je u mnogim bankama i
osiguravajućim društvima koji ga, kao nasleđe, i danas koriste.
U hijerarhijskom modelu podaci su smešteni u seriju slogova (zapisa) Da
bi se uspostavila veza između slogova, hijerarhijski model uspostavlja
relaciju roditelj – naslednik. Ovo je takozvano 1:N mapiranje između
slogova koje se radi korišćenjem stabla. U ovom modelu, relacije su
takve da jedan naslednik može imati samo jednog roditelja, ali roditelj
može imati više naslednika. Roditelji i naslednici su povezani vezama
koje se nazivaju pokazivači (u fizičkoj realizaciji to je adresa u memoriji
gde se slog nalazi). Roditelj ima listu pokazivača za svakog od svojih
naslednika. Hijerarhijski model je dobro uređena struktura, koja podseća
na hijerarhijsku strukturu u npr. državi, vojsci ili nekoj velikoj
organizaciji
.
Direktor

Zamenik Zamenik Zamenik

O O O O O O O O

R R R R R R R R

R R R R R R R

R R R

Slika 1.16 Šematski prikaz jednog hijerarhijskog modela


Pravilo roditelj – naslednik omogućava pristup podacima. Da bi se došlo
do tabele na nižem nivou, kreće se od korena i ide prema dole kroz stablo
dok se ne dođe do cilja. Naravno, očigledan problem sa ovim modelom je

- 43 -
da korisnik mora da zna kako je stablo organizovano da bi pronašao bilo
šta.

Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne može se


dodati slog u tabelu naslednika dok se ne uključi u roditeljsku tabelu.
Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima,
ali ne može da se nosi sa povezivanjem ogranaka ili stvaranjem
višestrukih veza. Zbog toga se stvara redudansa (višestruko
pojavljivanje) podataka i mogućnost netačnog ažuriranja. Na primeru
hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore,
studente itd. mogu se lako uočiti navedene slabosti. Lako je predstaviti da
na jednoj katedri ima više profesora, ali se ne može predstaviti da jedan
profesor radi na više katedri. Da bi se ovo uradilo, mora postojati dva
pojavljivanja istog profesora. To može dovesti do netačnosti kod
ažuriranja podataka, npr. moguće je da informacije budu različite u dva
zapisa, što vodi do konfuzije.

Hijerarhijski model se više ne koristi kao osnova za trenutne


komercijalne sisteme, ali još uvek postoji mnogo nasleđenih sistema
baziranih na ovom modelu. Zbog svih nedostataka koji postoje u
hijerarhijskom modelu, razvijen je mrežni model.

1.9.2. Mrežni model

Mrežni model je prvi put predstavljen 1971. godine. Može se


smatrati savremenikom relacionog modela, gledajući starost i prva
istraživanja učinjena u 60-tim godinama prošlog veka.Omogućava da se
višestruki skupovi podataka koriste zajedno putem pokazivača (ili
pointera). Neke kolone sadrže pokazivače na druge tabele umesto samih
podataka. Na taj način, tabele su povezane pokazivačima i mogu se
posmatrati kao mrežna struktura. Dok u hijerarhijskom modelu svaki slog
ima jedan „roditeljski“ slog i neograničeno „naslednika“, mrežni model
omogućava svakom zapisu da ima višestruke roditelje i naslednike,
kreirajući mrežastu strukturu.

- 44 -
Direktor

Zamenik Zamenik Zamenik

O O O O O O O O

R R R R R R R R

R R R R R R R

R R R

Slika 1.17 Šema mrežnog modela

Mrežni model se danas uglavnom ne upotrebljava za dizajniranje baza


podataka, ali ipak ima slučajeva gde se kao deo nasleđa koristi u nekim
kompanijama. Predstavlja unapređenje hijerarhijskog modela, ali je
kompleksan i težak za upotrebu. Pored toga, teško ga je podržati
matematičkim aparatom, što onemogućava kasnije efikasno
programiranje.

1.9.3. Relacioni model

Kao i mnoge druge tehnologije u računarskoj industriji, koreni relacionih


baza podataka potiču iz IBM-a i njihovog istraživanja automatizovanja
kancelarijskih operacija u 60-tim i 70-tim godinama XX veka. 1970.
godine, IBM-ov istraživač Ted Codd je prezentovao prvi rad o relacionim
bazama podataka. Zbog same tehničke prirode rada i oslanjanja na
matematički aparat, njegova važnost nije odmah shvaćena. Ipak, doveo je
do formiranja IBM-ove istraživačke grupe System R. Od projekta System
R se očekivalo da stvori sistem relacione baze podataka koji bi mogao
postati proizvod. Prvi prototip prezentovan je 1974/75. godine i
eksperimentalno je korišćen. Nakon što je definisan relacioni model,
napravljeni su neformalni modeli da bi se opisali hijerarhijski i mrežni
model. Hijerarhijske i mrežne baze podataka su postojale pre relacionih
baza podataka, ali su kao modeli opisani tek nakon što je relacioni model
definisan, da bi se napravila osnova za poređenje.

- 45 -
U srcu relacionog modela nalazi se koncept tabele (koja se naziva i
relacija) u kojoj su smešteni svi podaci. Svaka tabela je načinjena od
slogova (redova u tabeli), a svaki slog ima svoja polja (atribute).
Osnovne karakteristike relacionog modela podataka su sledeće:

• Sve se predstavlja relacijama (tabelama)


• Zasniva se na strogoj matematičkoj teoriji
• Minimalna redudansa podataka
• Jednostavno ažuriranje podataka
• Izbegnute su anomalije ažuriranja
• Redosled kolona i redova ne utiče na informacioni sadržaj tabele
• Ne mogu da egzistiraju dva identična reda (rekorda) u jednoj
tabeli
• Svaki red se može jednoznačno odrediti (postoji primarni ključ)
• ...

U relacionom modelu podataka klase objekata se predstavljaju


tabelama. Na primer klasa STUDENT se može opisati atributima BROJ
INDEKSA i IME i klasa KNJIGA sa itributima ŠIFRA KNJIGE i
NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele
može biti sledeće:

Student Knjiga
BrInd Ime SifK Naziv
75/01 Marko 001 Računovodstvo

22/02 Petar 002 Baze podataka

156/03 Milan 003 Osnove finansija

112/02 Dragan 004 Poslovna


i f ik
005 Marketing

Slika 1.18 Tabela je osnovni objekat relacione baze podataka

Prethodna dva objekta sa svojim atributima grafički se mogu predstaviti


na sledeći način:

- 46 -
BrInd SifK

Student Knjiga

Ime
Naziv

Slika 1.19 Grafički prikaz objekata i njihovih atributa

U realnom svetu objekti međusobno stupaju u veze. Na jednom fakultetu


studenti drže (pozajmljuju iz biblioteke) pojedine knjige. Može se uočiti
da je veza između ova dva posmatrana objekta tipa M:N, tj. više
studenata mogu da drže jednu knjigu, a jedna knjiga može biti kod više
studenata. Neka je trenutna situacija iz realnog sveta prikazana na
sledećoj slici:
Student Knjiga
BrInd Ime SifK Naziv
75/01 Marko 001 Računovodstvo

22/02 Petar 002 Baze podataka

156/03 Milan 003 Osnove finansija

112/02 Dragan 004 Poslovna informatika

005 Marketing

Slika 1.20 Veze između objekata realnog sveta – formira se klasa veza

Klasa veza se može posmatrati kao zaseban entitet, a taj entitet može da
ima svoje posebne atribute. U našem primeru, klasa veza DRŽI može da
ima kao atribut DATUM od kada student drži određenu knjigu. Neka je
trenutna situacija iz realnog sveta prikazana sledećom slikom:

- 47 -
Student Drži Knjiga
BrInd Ime 12.09.2005
SifK Naziv
75/01 Marko 12.09.2005 001 Računovodstvo
12.09.2005
22/02 Petar 002 Baze podataka
12.09.2005
156/03 Milan 003 Osnove finansija
12.09.2005
112/02 Dragan 004 Poslovna informatika
12.09.2005
005 Marketing

Slika 1.21 Klasa veza može da ima svoje atribute

Grafički prikaz navedenog dat je na sledećoj slici

Datum
BrInd SifK

Student Drži Knjiga

Ime
Naziv

Slika 1.22 Klasa veza može da ima svoje atribute

Suština relacionog modela je da se i klase objekata i klase veza između


objekata predstavljaju na jedinstven način, tj. preko tabela. U našem
primeru postoje tri tabele: STUDENT, KNJIGA i DRŽI. U relacionom
modelu podataka tabela se definiše kao relacija, koja mora da ispuni
odgovarajuće uslove. Svaka relacija mora da ima primarni ključ – jedan
ili više atributa koji na jedinstven način opisuju svaki zapis u jednoj
tabeli. Primarni ključ se pažljivo bira. Na primer u klasi studenata loš
izbor primarnog ključa bi bio atribut IME, zato što se mogu pojaviti dva
studenta sa istim imenom. Dobar izbor primarnog ključa je atribut Broj
indeksa, zato što ne postoje dva studenta sa istim brojem indeksa. Za
klase objekata Student i Knjiga vrši se prevođenje u relacioni model na
sledeći način (podvlačenjem su označeni atributi koji čine primarni
ključ):

- 48 -
STUDENT (BrInd, Ime),
KNJIGA (SifK, Naziv)

Za klasu veza Drži, može se difinisati prirodan primarni ključ u odnosu


na objekte koje povezuje. U našem primeru relacija Drži bi glasila:

DRŽI(BrInd, SifK, Datum)

Dakle, za posmatrani realan slučaj gde sudenti drže pojedine knjige,


izvršeno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i
KNJIGA imaju dve kolone, a tabela DRŽI tri kolone. Sve tabele su
povezane. Povezivanje se vrši preko vrednosti atributa u relacijama. na
sledeći način:

STUDENT (BrInd, Ime) KNJIGA (SifK, Naziv)

DRŽI (BrInd, SifK, Ime)

Strani ključ relacije


Strani ključ relacije Drži koji pokazuje
Drži koji pokazuje na primarni ključ
na primarni ključ relacije Knjiga
relacije Student

Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih ključeva

Veoma je važno zapaziti da kako i gde su tabele smeštene ne pravi


nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje
baza podataka koristi da bi pronašla tabelu. Korisniku je potrebno samo
da zna ime tabele. Nema potrebe da se vodi računa o tome kako su
podaci smešteni na disku. Ovo je različito od hijerarhijskog i mrežnog
modela u kojima korisnik mora da razume kako su podaci struktuirani
unutar baze podataka da bi mogao da ih pretražuje, unosi nove, ažurira ili
briše postojeće slogove.

Relaciona baza podataka standardno se satoji iz više tabela. Ipak, za


razliku od mrežne baze podataka, tabele nisu povezane pokazivačima.
Umesto toga koriste se „ključevi“ da upare redove podataka u različitim
tabelama. Ključ je samo još jedna ili više kolona u tabeli, koja odgovara
kolonama u drugim tabelama.

- 49 -
Zahtev za podatkom iz relacione baze podataka se dobija izvršavanjem
upita koji je napisan u posebnom jeziku, obično nekom od dijalekata
SQL-a. Iako je SQL originalno namenjen za krajnje korisnike, mnogo
češće se SQL upiti ugrađuju u softver koji omogućava lakši korisnički
interfejs. Kao odgovor na upit, baza podataka vraća skup podataka, koji
je u stvari lista redova koji sadrže odgovor. Najjednostavniji upit je da se
dobiju svi redovi iz tabele, ali češće, redovi se filtriraju na neki način da
bi se dobio traženi odgovor. Često se podaci iz više tabela kombinuju u
jednu, procesom udruživanja.

Fleksibilnost relacionih baza podataka dozvoljava programerima da pišu


upite koji nisu bili predviđeni od strane dizajnera baze podataka. Kao
rezultat, relacione baze podataka mogu da se koriste u više aplikacija
koje originalni dizajneri nisu predvideli, što je posebno važno za baze
podataka koje se mogu koristiti decenijama. Ovo je model relacionih
baza podataka učinilo veoma popularnim u poslovnoj primeni.

1.9.4. Objektni model

Objektno orjentisani model je jedan od novijih modela baza podataka.


Istraživači su za njega postali zainteresovani krajem 70-tih i početkom
80-tih godina prošlog veka, kada se počeo pojavljivati koncept objektno
orjentisanih sistema. Bazira se na konceptu objekata, koji predstavljaju
skup podataka i operacija koje se na njima mogu izvršavati.

Istraživanje se radilo i da bi se prevazišla mnoga ograničenja u


relacionom modelu na određenim tipovima podataka. Tipovi podataka
koji se mogu koristiti u relacionim bazama su veoma ograničeni. Svaki
atribut (polje) može da poprimi samo jednu vrednost. U objektno
orijentisanom modelu podataka entitet se predstavlja klasom. Klasa
obuhvata i atribute i ponašanje entiteta (moguće operacije nad
podacima). Npr. Klasa: student

• Atributi: BrInd, Ime, Prezime, Fakultet


• Procedura: polaganjeIspita()

Objekti su samo jedno pojavljivanje u odgovarajućoj klasi. Objektno


orijentisan model karakteriše bogatsvo tipova podataka – tip može biti i

- 50 -
drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP
rezultuje boljim performansama baze podataka.

Posmatrajmo primer u kome se vodi evidencija o Studentima sa


svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji
student poseduje. Dalje, vodi se evidencija o Automobilima sa
svojstvima Naziv automobila, Registarski broj, Boja, Godište i Vlasnik.
Prethodni primer se može prikazati na sledeći način
Student
BrInd Ime Prezime Fakultet Automobil
123/05 Marko Marković FPI Golf

------ ----- ----- ----- -----

Automobil
Naziv RegBr Boja Godište Vlasnik
Golf BG123456 Belo 1993 Marko

------ ----- ----- ----- -----

Slika 1.24 U objektno orijentisanim BP tip podatka može biti drugi


objekat

Objektno orjentisani DBMS-ovi omogućavaju čuvanje objekata direktno,


bez mapiranja za različite strukture podataka. Relacioni DBMS zahteva
mapiranje iz objekata u tabele. U objektno orijentisanom modelu,
informacija je sačuvana kao stalni objekt, a ne kao red u tabeli. Ovo
sistem čini efikasnijim u smislu prostora potrebnog za smeštanje i
čuvanje podataka i osigurava da korisnik manipuliše podacima samo na
onaj način koji je programer odredio.

S druge strane, obzirom da se kontrola vrši na veoma niskom nivou,


mnogo je teže za treću stranu da napravi neki dodatak. Dok kod

- 51 -
relacionih baza podataka možemo imati korist od softvera izrađenog od
strane trećeg dobavljača, korisnici objektno orjentisanih sistema za
upravljanje bazama podataka ili moraju da naruče dodatni softver od
originalnog programera ili da ga razviju u saradnji sa drugim firmama
koje koriste isti sistem.

1.10. Transakcije

Baze podataka kontinuirano skladište informacije koje opisuju trenutno


stanje preduzeća. Na primer, baza podataka banke čuva trenutni bilans na
svakom računu deponenta. Kada se u stvarnom svetu dogodi nešto što
menja stanje preduzeća, mora da se uradi odgovarajuća promena
podataka u bazi podataka. Ove promene se dešavaju uz pomoć programa
koji se nazivaju transakcije koje deluju kada dođe do promena u
stvarnom svetu. Na primer, kada klijent polaže novac u banku (događaj u
stvarnom svetu), izvršava se transakcija depozita. Svaka transakcija mora
biti uređena tako da održava nepogrešivost veze između stanja baze
podataka preduzeća koje je kreira iz stvarnog sveta. Pored toga što menja
stanje baze podataka, transakcija sama po sebi može da inicira neke
događaje u stvarnom svetu. Na primer, izdvojena transakcija kod
bankomata, inicira događaj odliva novca.

Obično se transakcijom naziva niz operacija nad bazom podataka koji


odgovara jednoj logičkoj jedinici posla u realnom sistemu. Važno je
istaći da se ta logička jedinica posla izvršava do kraja ili se poništava u
celini. Drugim rečima, zahteva se da transakcija bude atomska
(nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni
jedan. U tom smislu, transakcija predstavlja osnovnu programsku
jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze.

Primer transakcije: Podizanje novca sa računa u banci. Kada banka primi


zahtev, transakcija obuhvata sledeće korake:

1. Provera bankarske kartice


2. Provera računa (stanje)
3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se
nastavlja
4. Smanjuje se stanje na računu za zahtevani iznos

- 52 -
5. Generiše se izveštaj o transakciji
6. Isplaćuje se novac i daje izveštaj o transakciji

Transakcija mora da kompletira sve korake, inače bi jedna od strana u


transakciji imala štetu.

Obrada transakcija je izuzetno važna u višekorisničkim aplikacijama.


Kada više korisnika istovremeno unosi izmene u bazu podataka, više se
ne možemo pouzdati u to da će uvek jedna izmena biti trajno upisana u
bazu pre nego što započne naredna. Zbog toga u bazama podataka
postoje mehanizmi kojima se može obezbediti da konkurentno
izvršavanje transakcija daje iste rezultate kao kada se transakcije
izvršavaju u serijskom redosledu.

1.10.1. Osobine transakcija

Transakcije imaju sledeće osobine (ACID osobine):


• Atomnost (atomicity),
Atomnost podrazumeva skup aktivnosti nad bazom podataka po
principu „sve ili ništa“. Ili su sve aktivnosti uspešno obavljene ili
je baza podataka ostala nepromenjena. Kada dođe do promene u
bazi podataka, tada su sve promene dostupne korisnicima ili niti
jedna promena nije dostupna korisnicima. To znači da se ne može
desiti da se samo deo promene desi u bazi podataka u slučaju
softverske ili hardverske greške.
• Konzistentnost (consistency),
Konzistentnost znači da transakcija treba da prevede bazu
podataka iz jednog u drugo konzistentno stanje. Na primer, ako se
transakcijom vrši prebacivanje novca sa jednog računa na drugi
račun u banci, ukupna suma novca pre i posle izvršenja
transakcije se ne može promeniti. Ukoliko u toku transakcione
obrade dodje do greške, podaci moraju biti vraćeni u stanje pre
početka transakcije.
• Izolacija (izolation),
Izolacija znači da kada se dve ili više transakcija izvršavaju
istovremeno, njihovi efekti moraju biti međusobno izolovani.
Efekti koje izazovu transakcije koje se obavljaju istovremeno

- 53 -
moraju biti jednaki efektima nekog njihovog serijskog (jedna
posle druge) izvršenja. Zbog povećanja paralelizma u obradi
transakcija dozvoljavaju se različiti nivoi izolovanosti.
• Trajnost (durability).
Trajnost znači da kada se transakcija završi (potvrđene promene),
njeni efekti ne mogu biti izgubljeni, čak i ako se neposredno po
njenom okončanju desi neki ozbiljan otkaz sistema.

1.10.2. COMMIT i ROLLBACK

Obezbeđenje ACID osobina transakcije se radi upotrebom određenih


metoda i instrukcija:

• transakcija počinje sa BEGIN TRANSACTION,


• završava se sa COMMIT, čime se potvrđuju promene u bazi
podataka ako su sve instrukcije uspešno izvršene,
• završava se sa ROLLBACK, ako sve instrukcije nisu uspešno
završene.

Transakcija počinje pozivanjem metode BEGIN TRANSACTION, čime


se označava početak niza operacija koje čine jednu logičku jedinicu.
Metoda COMMIT preuzima sve izmene načinjene od poslednjeg mesta
na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na
disk. Metoda ROLLBACK deluje na suprotan način od COMMIT – ona
poništava sve izmene i vraća stanje kakvo je bilo pre poslednjeg poziva
metode COMMIT.

DBMS poseduje i održava dnevnik transakcija (tj. dnevnik aktivnosti, log


file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS
ažurirao čuva se:

• vrednost pre ažuriranja (before-image)


• vrednost posle ažuriranja (after-image)

Na naredbu ROLLBACK, DBMS koristi vrednosti pre za datu


transakciju. Pre COMMIT naredbe sistem prvo upisuje vrednosti pre i
posle u log fajl. Ako se prekine COMMIT naredba, mogu se pročitati

- 54 -
vrednosti posle sa log fajla, što omogućava očuvanje konzistentnog
stanja.

1.10.3. Konkurentno izvršavanje transakcija

Nad modernim bazama podataka transakcije se ne obavljaju u


izolovanosti već konkurentno. Više transakcija mogu istovremeno
zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama
otvara se mogućnost da nekontrolisan međusobni uticaj transakcija
dovede do nekonzistentnog stanja.

Transakcija1

Istovremeno Paralelno
izvršavanje sve izvršavanje
Transakcija2
tri transakcije transakcija

Transakcija3

vreme

Serijsko izvršavanje
Transakcija1 Transakcija2 Transakcija3
transakcija

Slika 1.25 Paralelno i serijsko izvršavanje transakcija

DBMS upravlja konkurentnim radom više aplikacija (korisnika),


obezbeđuje sinhronizaciju njihovog rada, a sve u cilju sprečavanja štetnih
posledica pri promenama koje se vrše nad bazom podataka u
višekorisničkom okruženju.

Komponente DBMS koje učestvuju u ovom procesu su:

• Planer (Scheduler),
• Menadžer transakcija (Transaction manager).

Planer vodi računa o redosledu akcija kod više konkurentnih transakcija.


Ako čitanje ili upisivanje može da naruši integritet baze podataka, zahtev

- 55 -
se ili vremenski odlaže ili se poništava cela transakcija. Menadžer
transakcija upravlja celokupnim izvršenjem transakcija. Idealan slučaj
izvršavanja transakcija je serijsko izvršavanje, ali je to neefikasno i nije u
skladu sa zahtevima iz realnog sveta. Posledica je korektan rezultat.
Serijsko izvršavanje transakcija, u stvari, znači da:

• nema preplitanja transakcija,


• prvo se završi jedna, zatim počinje druga transakcija

Konkurentno izvršavanje transakcija je serijabilno (linearno) ako daje isti


rezultat kao i serijsko izvršavanje svih transakcija.

1.11. Oporavak baze podataka

Opravak baze podataka (RECOVERY) predstavlja proces vraćanja baze


podataka u korektno stanje. Sasvim je realno, i dešava se, da usled otkaza
sistema mora da se uradi oporavak baze podataka. Uzroci otkaza mogu
biti različiti: greške u programiranju, greške u operativnom sistemu,
nestanak napajanja, havarije i sl.

Proces oporavka se zasniva na redudansi podataka, tj. postojanju


rezervnih kopija (backup), koje mogu da se čuvaju na disku, traci i sl.
Tako, u slučaju otkaza sistema, oštećena baza podataka se rekonstruiše u
ispravno stanje na osnovu poslednje kopije, a nekonzistentno stanje se
rešava tako što se poništavaju nekonzistentne promene, a transakcije se
ponavljaju.

1.12. Osnovne karaketristike savremenih baza podataka

Savremeni računari i komunikaciona tehnologija značajno su uticali na


napredak arhitekture, dizajna, kao i na upotrebu baza podataka i sistema
za obradu transakcija. Njihova unapređena funkcionalnost stvorila je
nove poslovne mogućnosti za preduzeća koja ih koriste, ali isto tako
prouzrokovan je popriličan broj dodatnih zahteva za njihovom
operativnošću.

- 56 -
• Stalna pristupačnost
Zbog toga što je uvek aktivan, informacioni sistem mora biti
operativan tokom radnog vremena preduzeća. U nekim
preduzećima, to znači da sistem mora da bude stalno dostupan.
Na primer, kod sistema za rezervaciju avionskih karata, može da
se zatraži rezervacija karata iz agencija raspoređenih u velikom
broju vremenskih zona, tako da se sistem nikada ne gasi. Kada
sistemi dožive kolaps, to dovedi do poremećaja u poslovanju. Na
primer, ukoliko računar za rezervaciju karata ne radi, ne može se
ni uraditi rezervacija. Mogućnost tolerancije pada sistema zavisi
pre svega od prirode preduzeća. Svakako je jasno da sistem
kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima
sistem za rezervacije. VISA je objavila 2002. godine da je njihov
sistem bio isključen na svega osam minuta u poslednjih pet
godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U
osnovi stalno pristupačnih sistema u suštini su kvalitetan hardver i
softver
• Visoka pouzdanost
Sistem mora precizno da prikaže rezultate svih transakcija. To
znači ne samo da transakcija mora da bude tačno programirana,
već i da ne sme doći do greške zbog uporednog (paralelnog)
odvijanja transakcija, ili međusobne komunikacije delova
programa za vreme izvršenja transakcija. Međutim, veliki sistemi
za prenos transakcija uključuje hiljade hardverskih i softverskih
modula, i malo je verovatno da svi rade savršeno precizno. Ipak,
sistem ne sme da zaboravi rezultate bilo koje završene
transakcije. Na primer, baza bodataka u bankarskom sistemu
mora precizno da prikaže efekat svih ulaganja i podizanja novca
koji su se obavili, i ne sme da zaboravi rezultate bilo kakve
transakcije tog tipa.
• Veliki protok informacija
Pošto preduzeća imaju veliki broj klijenata zbog kojih moraju da
koriste sisteme za prenos transakcija, sistem mora da bude u
stanju da obavlja više transakcija u sekundi. Na primer, sistem za
odobravanje kreditnih kartica može da obavlja na hiljade
transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije
ne mogu izvršavati serijski, već se moraju izvršavati uporedno;
što sa druge strane značajno komplikuje strukturu sistema.

- 57 -
• Brza reakcija
Sistem mora brzo da odreaguje zbog kupaca koji čekaju na
njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od
vrste naredbe koja se zadaje sistemu. Možemo da čekamo
petnaest sekundi ispred bankomata kada podižemo novac, ali
očekujemo, da, kada telefoniramo, poziv bude uspostavljen za
nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija,
reakcija sistema ne dogodi u tačno utvrđenom vremenu,
transakcija se neće obavljati pravilno. Na primer, u fabrici sa
automatizovanim sistemom, u transakciji može od sistema da se
zatraži da aktivira neku mašinu pre nego što deo za obradu dođe
do nje. Za aplikacije ovog tipa se kaže da imaju tzv. ’prinudno’
radno vreme.

• Dugotrajnost
Sistemi za prenos transakcija su veoma kopleksni, i nisu lako
zamenljivi. Stoga, oni moraju biti dizajnirani tako da se
pojedinačni hardverski i softverski moduli mogu zameniti novijim
verzijama (koje imaju bolje performanse ili dodatne funkcije) bez
velikih poremećaja unutar sistema.

• Bezbednost
Mnogi sistemi za prenos transakcija sadrže poverljive informacije
o pojedincima (npr. stvari koje su kupili, brojeve kreditnih
kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Pošto
ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta
(uključujući i Internet) bezbednost je važna. Korisnici moraju da
se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da
imaju pristup samo onim transakcijama za čije izvršenje su
ovlašćeni (samo službenik u banci može da izvrši transakcije na
nekom računu). Informacije u bazi podataka ne smeju da se
presreću i čitaju od strane hakera, a informacije prenesene između
korisnika i sis-tema se ne smeju menjati i najčešće treba da budu
zaštićene od prisluškivanja.

- 58 -
1.13. Zaključak

Tokom proteklih decenija došlo je do naglog porasta u broju i važnosti


aplikacija baza podataka. Baze se koriste za skladištenje, manipulaciju i
dobijanje podataka u organizacijama svih vrsta. Baza podataka je
organizovan skup logički povezanih podataka. Podatak definišemo kao
kao predstavnika objekta ili nekog događaja, koji bi bili od važnosti u
korisnikovom realnom okruženju. Informacija je podatak koji je tako
obrađen da nakon njegove upotrebe, korisnik oplemenjuje svoja
saznanja. I podatak, kao i informacija se mogu čuvati u bazi podataka.

Metapodatak jeste onaj podatak koji opisuje karakteristike korisničkih


podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka
(DBMS) je softverski sistem koji se koristi da stvara, održava i
obezbeđuje kontrolu nad pristupom bazama podataka. DBMS skladišti
metapodatke u delu koji je centralno skladište za sve definicije podataka,
njihove veze, monitoring i formati izveštaja kao i ostale komponente
sistema.

Klasični sistemi zasnovani na datotekama i programskim jezicima su


razvijeni u ranijoj računarskoj eri, kako bi računari mogli da skladište,
manipulišu i izvlače velike fajlove podataka. Ovi sistemi (i danas u
upotrebi) su imali veliki niz nedostataka kao što su zavisnost između
podataka i programa, dupliranje podataka, njihova podela, kao i vreme
izvršenja. Pristu preko baza podataka nastao je kao odgovor na te
nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe,
poslovne baze i Internet baze. U poslovne baze ulaze i skladišta podataka
i integrisani programi za podršku u odlučivanju.

Tehnologija baza podataka je počela sa razvojem tokom šezdesetih


godina prošlog veka, i od tada se razvija bez prekida, sa tendencijama ka
daljem usavršavanju i uklanjanju bilo kakvih poteškoća kada su u pitanju
upravljanje, pristup i održavanje podataka u bazi podataka.

Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima


koji su bitni za njeno poslovanje. Kako je broj internih podataka i
podataka iz okruženja ogroman nemoguće je sve podatke i sve uočene
detalje opisati i sačuvati unutar informacionog sistema. Postupkom
selekcije identifikuju se i čuvaju samo relevantni podaci i stvaraju modeli

- 59 -
realnog sveta. Oni su izraz i posledica zahteva za obradom podataka
relevantnih za određeno područje primene. Istorijski gledano sistemi za
upravljanje bazama podataka mogu se podeliti u sledeće osnovne
modele: hijerarhijski model, mrežni model, relacioni model i objektni
model

Na bazi ANSI/X3/SPARC modela razvijeni su sistemi za upravljanje


bazama podataka koji imaju troslojnu arhitekturu ili varijantu te
arhitekture. Aplikativni programi komuniciraju s bazom podataka preko
odgovarajućeg eksternog modela. Zahtev za učitavanje određenih
podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući
korisnički model. DBMS preslikava eksterni model na konceptualni i
konceptualni na interni model.
Transakcija je niz operacija nad bazom podataka i odgovara jednoj
logičkoj jedinici posla u realnom sistemu, koja se izvršava do kraja ili se
poništava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i
da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom
smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se
obezbeđuje očuvanje konzistentnosti baze.

1.14. 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. Aničić, S. Babarogić, Baze
podataka, FON, Beograd, 2003.
[5] Vladimir Blagojević, Relacione baze podataka, Klub Nikola Tesla,
Beograd, 2001.
[6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern
Database Management, Pearson, Prentice Hall, 2005.
[7] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag,
Berlin
[8] Craig S. Mullins, Administracija baza podataka, Kompjuter
biblioteka, 2003.

- 60 -
2. O SQL-u

SQL (Stuctiured Query Language) je standardni relacioni upitni jezik


(ANSI - American National Standards Institute - standard). Ovaj jezik se
koristi za pristup i manipulaciju sistemima za upravljanje bazom
podataka (DBMS - DataBase Management System), što najčešće
podrazumeva čitanje i izmenu podataka u različitim bazama podataka.
Tvorcem SQL-a se smatra Chamberlin, a SQL je nastao u iBM-ovoj
istraživačkoj laboratoriji (IBM Research Laboratori) u San Jose-u,
Kalifornija 1974. godine. Što je na istom mestu gde je i E.F. Codd 1970
definisao osnovne koncepte relacionog modela podataka SQL koji su bili
osnova za dalji razvoj relacionih baza podataka. SQL je uspešno
primenjen u sistemima za upravljanje bazom podataka kao što su MS
Access, DB2, Informix, MS SQL Server, Oracle, Sybase itd.

Osnovne karakteristike SQL-a:

1. Jednostavnost i jednobraznost pri korišćenju


Tabela (relacija) se kreira jednom izvršnom naredbom. Odmah po
kreiranju tabela je raspoloživa za korišćenje. Svi podaci
memorisani su u tabelama i rezultat bilo koje operacije se logički
prikazuje u obliku tabele.

2. Mogućnost interaktivnog i klasičnog (aplikativnog)


programiranja
Koristeći SQL dobijaju se odgovori na trenutne, unapred ne
predvidene zahteve ili se SQL blokovi "ugrađuju" u klasični viši
programski jezik (FORTRAN, COBOL. PL/I, C) omogućujući
klasičnu obradu gde korisnik same aplikacije najčešće uopšte nije
ni svestan da koristi SQL.

3. Neproceduralnost (tj. proceduralnost u minimalnom stepenu).


Ni za jedan jezik se ne može reći da je potpuno neproceduralan,
već da je neproceduralan u većem ili manjem stepenu. SQL je u
velikoj meri neproceduralan jer definiše ŠTA, a ne KAKO: koji
podaci se žele, koje tabele se referenciraju i koji uslovi treba da
budu ispunjeni, bez precizne specifikacije procedure za dobijanje
željenih podataka. Preciznije rečeno SQL je na višem nivou
apstrakcije nego klasični viši programski jezici, odnosno mnogi

- 61 -
podjezici relacionih sistema za upravljanje bazama podataka koji
se često koriste.

Osnovne mogućnosti SQL-a su:

• SQL omogućava pristup bazi podataka


• SQL je jedan od ANSI standardardnih racunarskih jezika
• SQL može da izvršava upite nad bazom podataka
• SQL može da prikazuje podatke iz baze podataka
• SQL može da unosi nove podatke u bazu podataka
• SQL može da obriše postojeće zapise iz baze podataka
• SQL može da izmeni podatke u bazi podataka

Režimi rada

SQL podržava dva režima rada sa BP:

• Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko


tastature a rezultati se prikazuju na monitoru, pristup BP je
ograničen jedino pravima korisnika
• Programski (BASH): korisnik pokreće program u kome su
ugrađene SQL naredbe, pristup BP je ograničen pored prava
korisnika i sadržajem programa koji se pokreće

- 62 -
3. INSTALACIJA, KONFIGURISANJE I
POKRETANJE MySQL-a

3.1. Proces isntalacije

Procedura instalacije ovog pageta se kao i kod većine pokreće na


standardni način, pokretanjem fajl setup.exe. Posle startovanja ovog fajla
pojaviće se prozor kao na slici:

Slika 3.1 Prvi prozor Wizard-a

Ovo je prva stranica Setup Wizarda koji će vam pomoći da na svoj


Windows sistem instalirate MySQL serverski program. Da bi ste
nastavili dalje kliknite na dugme Next, posle čega će se pojaviti sledeći
prozor kao na slici:

- 63 -
Sika 3.2 Drugi prozor Wizard-a

Na ovom prozoru je potrebno izabrati tip instalacije koju želite. Prva


opcija je Typical koja je tipična i vrlo upotrebljiva za većinu korisnika pa
je poželjno nju izabrati. Pored nje tu je i Complete instalacija koja će
instalirati sve programe koji postoje u ovom paketu, i na kraju je opcija
Custom kod koje možete ručno izabrati šta od komponenata želite da se
instalira a šta ne. Izaberite Typical ako već nije izabrana i kliknite na
dugme Next da bi nastavili instalaciju. Pojaviće se treća stranica Wizarda
koja izgleda kao na slici:

- 64 -
Sika 3.3 Treći prozor Wizard-a

Da bi instalirali MySQL server kliknite na dugme Install posle čega je


potrebno sačekati neko vreme dok se ne završi proces instalacije (ovo
može potrajati neko vreme u zavisnosti od brzine vašeg računara). Po
završetku instalacije pojaviće se prozor kao na slici:

- 65 -
Sika 3.4 Četvrti prozor Wizard-a

Ovde imamo tri opcije. Prva je da kreiramo novi account za MySQL,


druga je da koristimo neki koji smo već ranije kreirali a treća je da
preskočimo ovaj korak jer on nije neophodan ako ne želimo da kreiramo
svoj account na MySQL.com-u. Ovde ćemo preskočiti ovaj korak i
nećemo kreirati novi account, izaberite opcije Skip Sign-Up i kliknite na
dugme Next, posle čega će se pojaviti prozor kao na slici:

- 66 -
Sika 3.5 Peti prozor Wizard-a

Na ovom prozoru vidimo da je proces instalacije završen i možete


izabrati ukoliko želite da konfigurišete server (potrebno je da opcija
Configure the MySQL Server now bude izabrana kao na slici). Ukoliko
ne želite da sada konfigurišete server već kasnije dečekirajte ovu opciju.
Za sada će te ovu opciju ostaviti uključenu da bi demonstrirali kako se
konfiguriše server. Kliknitu na taster Next da bi se pojavio prvi prozor
Wizard-a koji će vam pomoći da konfigurišete server.

- 67 -
3.2. Konfigurisanje MySQL servera

Ukoliko ste u toku instalacije izabrali gore pomenutu opciju ili ukoliko
ste iz Start menija izabrali MySQL Server Instance Config Wizard
pojaviće se prva stranica ovog Wizarda kao na slici:

Slika 3.6 Prvi prozor Wizard-a za konfiguraciju MySQL-a

Ovde možete primetiti da postoje dve opcije koje možete izabrati. Prva je
Detailed Configuration čijim izborom će te moći do detalja ručno da
podesite svoj server. Druga je Standrad Configuration koja je
preporučljiva za većinu instalacija. Izaberite Standard Configuration i
zatim kliknite na dugme Next posle čega će se pojaviti prozor kao na
slici:

- 68 -
Slika 3.7 Drugi prozor Wizard-a za konfiguraciju MySQL-a

Ovde je potrebno da sve ostavite kako jeste, samo uključite opciju


Include Bin Directory in Windows Path (ovo nije obavezno ali je
poželjno da bi kasnije mogli iz komandne linije lakše da pozivate
klijentski program). Takođe proverite da li je izabrana opcija Lanch the
MySQL Server automatically koja znači će pri svakom pokretanju
operativnog sistema automatski biti pokrenut i server, a zatim kliknite na
taster Next da bi se pojavio sledeći prozor kao na slici:

- 69 -
Slika 3.8 Treći prozor Wizard-a za konfiguraciju MySQL-a

Ovde je vrlo bitno u polje New root password upisati šifru koju će te
koristiti kasnije za rad sa bazom podataka i u sledećem polju Confirm
potvrditi to jest još jednom uneti istu šifru a zatim kliknite na Next da bi
nastavili dalje (ovde je moguće izabrati i opciju Create An Anonymous
Account što znači da će svako moći da se loguje kao Anonymous bez
šifre, ovo je poželjno izbegavati). Posle izbora opcije Next pojaviće se
prozro kao na slici:

- 70 -
Slika 3.9 Četvrti prozor Wizard-a za konfiguraciju MySQL-a

Ovo je u stvari statusni prozor koji će prikazivati tok konfigurisanja to


jest pojedinačnih stavki i primenu podešavanja. Da bi konfigurisali vaš
server potrebno je izabrati dugme Execute i sačekati nekoliko trenutaka
da se konfigurisanje završi posle čega će se ukoliko je sve u redu pojaviti
prozor kao na slici:

- 71 -
Slika 3.10 Peti prozor Wizard-a za konfiguraciju MySQL-a

Ovim ste završili proces instalacije i konfigurisanja. Startujete MySQL i


možete početi sa radom.

- 72 -
3.3. Pokretanje MySQL-a

Posle završene instalacije i konfigurisanja samog servera potrebno je


pokrenuti klijentski program koji će vam omogućiti rad sa bazom
podataka. Da bi ste startovali program idite na Start meni, zatim
Programs, pa onda MySQL, pa MySQL Server 5.0 i na kraju MySQL
Command Line Client posle čega će se pojaviti prozor kao na slici:

Slika 3.11 Prvi prozor MySQL-a

Ovde je potrebno uneti root password koji ste zadali prilikom


instalacije, unesite šifru i pritisnite taster Enter na tastaturi posle čega će
se pojaviti prozor kao na sledećoj slici:

- 73 -
Slika 3.12 Prvi prozor MySQL-a

Ukoliko je sve u redu pojaviće se prozor koji izgleda isto ovako i to znači
da ste se upravo uspešno ulogovali i da vam je sada omogućen rad sa
ovim SUBP-om. Sada možete izabrati neku od postojećih baza ili kreirati
novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu
DDL gde je to objašnjeno).

Ukoliko ne znate koje se baze nalaze trenutno na sistemu to možete


proveriti kucanjem naredbe: SHOW DATABASES; posle čega će se na
ekranu pojaviti spisak svih postojećih baza na ovom sistemu.

- 74 -
4. SQL TIPOVI PODATAKA
MySQL DBMS podržava veći broj tipova podataka koje možemo svrstati
u tri osnovne kategorije:
• Numerički tipovi podataka
• Vremenski tipovi podataka
• Binarni i tekstualni tipovi podataka

MySQL podržava i proširenja za podršku podataka većeg obima. Takođe,


osim tipa podataka skup vrednosti se može dodatno definisati i
korišćenjem atributa koji mogu biti opšti (npr. da je unos vrednosti
obavezan) i specifični za određeni tip podataka (npr. Signed/Unsigned za
tip Integer).

4.1. Numerički tipovi podataka


MySQL u potpunosti podržava SQL standard vezan za numeričke tipove
podataka. U numeričke tipove podataka spadaju celobrojne vrednosti
(INTEGER, SMALLINT, DECIMAL i NUMERIC) kao i
aproksimativne vrednosti (FLOAT, REAL i DOUBLE PRECISION).
Sinonim za INTEGER je INT dok je sinonim za DECIMAL DEC.

Tip Bajtova Min. vrednost Maks. vrednost


Signed/Unsigned Signed/Unsigned
-128 127
tinyint 1
0 255
-32768 32767
smallint 2
0 65535
-8388608 8388607
mediumint 3
0 16777215
-2147483648 2147483647
int 4
0 4294967295
-9223372036854775808 92233720368547758
bigint 8 07
18446744073709551
0
615

Tabela 4.1 Integer tipovi podataka

- 75 -
Najbitniji atributi numeričkih tipova podataka su "Signed/Unsigned" i
"Zerrofil". "Signed/Unsigned" atribut označava da li će se u poljima tog
tipa čuvati samo pozitivne ili i pozitivne i negativne vrednosti. U
zavisnosti od ovog parametra se određuje i donja/gornja granica unetih
vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima
dodaje nule do definisane dužine (npr. unos vrednosti "4" u polje tipa
INT(5) će se odraziti kao vrednost "00004") i automatski postavlja i
parametar "Unsigned".

Tipovi FLOAT i DOUBLE se koriste za predstavljanje približnih


vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23
podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip
DOUBLE. MySql automatski podržava zaokruživanje tako da će se
vrednost 999.00009 uneta u polje definisano kao ime_polja
DOUBLE(5,4) sačuvati kao 999.0001.

Tipovi DECIMAL i NUMERIC se koriste za predstavljanje tačnih


numeričkih vrednosti. Razlika između ovih tipova i tipova FLOAT i
DOUBLE je u tome što se kod tipova DECIMAL i NUMERIC parametar
preciznost zahteva kao statički (npr. kurs_dinara DECIMAL(3,2)).

4.2. Tipovi podataka vezani za datum i vreme

U tipove podataka namenjenih skladištenju vrednosti vezanih za vreme


spadaju:

● DATETIME
● DATE
● TIME
● TIMESTAMP
● YEAR

Svaki od navedenih tipova podataka ima sopstveni skup validnih


vrednosti kao i “nula” vrednost koja zamenjuje unešene vrednosti koje
nisu validne. Tip TIMESTAMP poseduje automatsko ponašanje tj.
automatski unosi vrednost sa sistemskog časovnika. U Tabeli 2.2.1 je
prikazan format podataka vezanih za datum i vreme.

- 76 -
Tip podataka “nula” vrednost
DATETIME '0000-00-00 00:00:00'
DATE '0000-00-00'
TIME '00:00:00'
TIMESTAMP '0000-00-00 00:00:00'
YEAR 0000

Tabela 4.2 – Format podataka vezanih za datum i vreme


Navedeni tipovi podataka vezani za datum i vreme nemaju specifične
parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar
“length”.
Podrazumevana vrednost parametar “length” kod tipa TIMESTAMP je
14 a može biti i dodatno navedena:
● 14 (format YYYYMMDDHHMMSS)
● 12 (format YYYYMMDDHHMM)
● 10 (format YYYYMMDDHH)
● 8 (format YYYYMMDD)
● 6 (format YYYYMM)
● 4 (format YYYY)
● 2 (format YY)

Podrazumevana vrednost parametar “length” kod tipa YEAR je 4 a može


biti i dodatno navedena kao vrednost 4 (format YYYY) ili 2 (format
YY). U slučaju kada je parametar “length” postavljen na vrednost 4 kod
YEAR tipa podataka, unešene vrednosti u opsegu 00-69 se konvertuju u
2000-2069 dok se vrednosti 70-99 konvertuju u 1970-1999.

4.3. Binarni i tekstualni tipovi podataka

U tipove podataka namenjenih skladištenju binarnih i tekstualnih


vrednosti spadaju:

● CHAR i VARCHAR
● BINARY i VARBINARY
● BLOB i TEXT
● ENUM i SET

- 77 -
CHAR i VARCHAR tipovi podataka su namenjeni za skladištenje kraćih
nizova karaktera. Oba tipa imaju parametar “length” (npr. ime
CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa može biti
numerička vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do
65.536. Osim razlike u dužini stringa koji se skladišti, osnovna razlika
između između ovih tipova je način na koji se podaci skladište u bazi.
Naime, vrednost parametra “length” se kod tipa CHAR koristi statički tj.
razlika između maksimalne dužine i unete dužine stringa se popunjava
znakom razmaka. Kod VARCHAR tipa se dužina prilagođava unetoj
dužini stringa.

BINARY i VARBINARY tipovi su veoma slični CHAR i VARCHAR


tipovima sa tom razlikom što su BINARY i VARBINARY tipovi
namenjeni skladištenju binarnih podataka. Ova dva tipa podataka su
namenjena uglavnom za skladištenje manjih količina podataka. Za
skladištenje fajlova u bazi podataka se radije koristi BLOB tip podataka.

BLOB tip podataka (Binary Large OBject) i njegove podvarijante


(TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene
za skladištenje binarnih nizova. TEXT tip podataka i njegove
podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su
namenjene za skladištenje nizova karaktera različite veličine. BLOB i
TEXT tipovi podataka ne mogu imati "default" vrednosti.

ENUM tip podataka je namenjen za skladištenje tekstualnih vrednosti s


tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti
koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga",
"treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je
ograničena na maksimalno 65.536 elemenata. SET tip podataka je sličan
ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata
ograničena na 64 elementa kao i da postoje određene razlike pri
indeksiranju elemenata liste.

- 78 -
4.4. Zahtevi pri skladištenju

Numerički tipovi:

Tip podataka Zahtev pri skladištenju


TINYINT 1 bajt
SMALLINT 2 bajta
MEDIUMINT 3 bajta
INT, INTEGER 4 bajta
BIGINT 8 bajtova
FLOAT(p) 4B za 0 <= p <= 24; 8B za 25 <= p <= 53
FLOAT 4 bajta
DOUBLE [PRECISION], REAL 8 bajta
DECIMAL(M,D), NUMERIC(M,D) Varira; dato je naknadno objašnjenje
BIT(M) približno (M+7)/8 bajtova

Tipovi podataka vezani za datum i vreme:

Tip podataka Zahtev pri skladištenju


DATE 3 bajta
DATETIME 8 bajtova
TIMESTAMP 4 bajta
TIME 3 bajta
YEAR 1 bajt

Binarni i tekstualni tipovi podataka:

Tip podataka Zahtev pri skladištenju


CHAR(M) M bajtova, 0 <= M <= 255
VARCHAR(M) L + 1 bajtova, gde je L <= M i 0 <= M <=
255 ili L + 2 bajtova, gde je L <= M i 256 <=

- 79 -
Tip podataka Zahtev pri skladištenju
M <= 65535.
BINARY(M) M bajtova, 0 <= M <= 255
VARBINARY(M) L + 1 bajtova, gde je L <= M i 0 <= M <=
255 ili L + 2 bajtova, gde je L <= M and 256
<= M <= 65535.
TINYBLOB, TINYTEXT L+1 bajtova, gde je L < 28
BLOB, TEXT L+2 bajtova, gde je L < 216
MEDIUMBLOB, MEDIUMTEXT L+3 bajtova, gde je L < 224
LONGBLOB, LONGTEXT L+4 bajtova, gde je L < 232
ENUM('vrednost1','vred 1 ili 2 bajta, u zavisnosti od broja članova
nost2',...)
SET('vrednost1',vredno 1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja
st2',...) članova

4.5. Izbor adekvatnog tipa podataka

Pri modeliranju baze podataka veoma je važno odabrati adekvatne tipove


podataka tj. definisati tipove i atribute koji odgovaraju potrebama rada sa
bazom podataka. U slučaju da kreirani model ne odgovara realnim
potrebama u daljem radu se mogu javiti netačne vrednosti u bazi kao i
nemogućnost korišćenja svih prednosti DBMS-a.

Primer 1: Polje starost (pod kojim podrazumevamo broj godina osobe)


je u bazi moguće čuvati i u polju tipa Integer i u polju tipa String.
Međutim, odabir tekstualnog tipa podatka onemogućava korišćenje upita
tipa:

● prikaži sve osobe mlađe od 30 godina


● prikaži sve osobe stare između 20 i 50 godina
● ...

Primer 2: Polje datum (pod kojim planiramo čuvanje informacije o


datumu i vremenu nekog događaja) je u bazi moguće čuvati i u polju tipa
Integer i u polju tipa DATETIME ili TIMESTAMP. Odabir numeričkog ili

- 80 -
tekstualnog tipa podatka umesto vremenskog onemogućava funkcija
vezanih za vremenski tip podatka. Međutim, odabir INTEGER tipa u
ovakvim situacijama nije redak slučaj jer se izgubljena funkcionalnost
DMBS-a nadoknađuje korišćenjem nekog od programskih jezika koji
imaju mogućnost rada sa pomenutim DBMS-om.

Takođe, pri izboru tipa podataka treba imati u vidu i zahteve za


skladištenjem određenih tipova kao i brzinu rada.

4.6. Sinhronizacija tipova podataka sa drugim DBMS


sistemima
Da bi se olakšalo importovanje modela rađenih za druge DBMS sisteme
u MySQL DBMS, MySQL podržava sledeće mapiranje tipova:

Ostali DBMS MySql DBMS


BOOL TINYINT
BOOLEAN TINYINT
CHAR VARYING(M) VARCHAR(M)
DEC DECIMAL
FIXED DECIMAL
FLOAT4 FLOAT
FLOAT8 DOUBLE
INT1 TINYINT
INT2 SMALLINT
INT3 MEDIUMINT
INT4 INT
INT8 BIGINT
LONG VARBINARY MEDIUMBLOB
LONG VARCHAR MEDIUMTEXT
LONG MEDIUMTEXT
MIDDLEINT MEDIUMINT
NUMERIC DECIMAL

Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS


sistemima

- 81 -
U praksi ovo znači da je moguće iskoristiti strane definicije tipova
(navedenih u levoj koloni) za kreiranje tabela s tim da će se one
automatski prevesti u MySql tipove podataka (navedene u desnoj koloni).

4.7. Unos različitih tipova podataka


U zavisnosti od tipa podataka, različiti tipovi podataka imaju različit
način unosa pomoću SUBP-a u bazu podataka.

• Numerički tipovi podataka


Unose se na klasičan način, na primer:

INSERT INTO Artikl


(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(123, 'Artikl br. 1', 199.99, 100, 'Germany');

U prethodnom primeru polja Magacin_rb, Cena i Količina su


numeričkog tipa i unose se na klasičan način, bez ikakvih specijalnih
znakova.

• Vremenski tipovi podataka


Unose se na klasičan način, na primer:

INSERT INTO Magacin


(Magacin_rb, Naziv, Cena, Datum)
VALUES
(12, 'Disketa', 59.99, 12/09/2005);
U prethodnom primeru polje Datum je vremenskog tipa.

• Binarni i tekstualni tipovi podataka


Unose se obavezno između jednostrukih znakova novoda, na primer:

INSERT INTO Artikl


(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(123, 'Artikl br. 1', 199.99, 100, 'Germany');
U prethodnom primeru polja Naziv i ZamljaPorekla su tekstualnog tipa
i unose se između jednostrukih znakova navoda.

- 82 -
5. DDL (Data Definition Language)

5.1. Kreiranje baze podataka

Funkcija kreiranja baze podataka putem SUBP-a se odnosi na kreiranje


nove prazne baze sa svim potrebnim elementima da je posle toga moguć
rad sa njom. Kreiranje baze podataka se u SQL jeziku vrši pomoću
naredbe CREATE DATABASE.

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name


[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name

Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE

Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno


je ukucati sledeće:

CREATE DATABASE PRODAJA;

Ovom naredbom kreirana je nova prazna baza podataka pod imenom


PRODAJA. Sada je moguće koristiti ovu bazu podataka za dalji rad. Sve
što je potrebno jeste izabrati bazu sa kojom želite da radite, samim
kreiranjem baze ne podrazumeva se da vi automatski hoćete sa njom da
nastavite da radite pa je zato potrebno ukucati sledeću naredbu:

USE PROBA;

Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa


kojom želimo da radimo (ovo je analogno kada u nekom programu
izaberemo opciju Open pa izaberemo određeni fajl sa kojim želimo da
radimo).

- 83 -
5.2. Kreiranje tebele u bazi podataka

Funkcija kreiranja nove tabele u bazi podataka putem SUBP-a se odnosi


na kreiranje nove prazne tabele u bazi podataka. Kreiranje nove tabele u
bazi podataka se u SQL jeziku vrši pomoću naredbe CREATE TABLE.

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name


[(] LIKE old_tbl_name [)];
create_definition:
column_definition
| [CONSTRAINT [symbol]] PRIMARY KEY [index_type]
(index_col_name,...)
| KEY [index_name] [index_type] (index_col_name,...)
| INDEX [index_name] [index_type] (index_col_name,...)
| [CONSTRAINT [symbol]] UNIQUE [INDEX]
[index_name] [index_type] (index_col_name,...)
| [FULLTEXT|SPATIAL] [INDEX] [index_name]
(index_col_name,...)
| [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name,...)
[reference_definition]
| CHECK (expr)
column_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'string']
[reference_definition]
type:
TINYINT[(length)] [UNSIGNED] [ZEROFILL]
| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
| INT[(length)] [UNSIGNED] [ZEROFILL]
| INTEGER[(length)] [UNSIGNED] [ZEROFILL]
| BIGINT[(length)] [UNSIGNED] [ZEROFILL]
| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]
| NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]
| DATE
| TIME
| TIMESTAMP
| DATETIME
| CHAR(length) [BINARY | ASCII | UNICODE]
| VARCHAR(length) [BINARY]

- 84 -
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT
| TEXT
| MEDIUMTEXT
| LONGTEXT
| ENUM(value1,value2,value3,...)
| SET(value1,value2,value3,...)
| spatial_type
index_col_name:
col_name [(length)] [ASC | DESC]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE

Ukucajte sledeće primere i napravićete nekoliko tabela u bazi podataka


PRODAJA koja je kreirana u prvom primeru.

CREATE TABLE Artikl (


rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Magacin_rb INTEGER UNSIGNED NOT NULL,
Naziv VARCHAR(255) NULL,
Cena FLOAT NULL,
Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0,
ZemljaPorekla VARCHAR(50) NULL,
PRIMARY KEY(rb),
INDEX Artikl_FKIndex1(Magacin_rb)
);

CREATE TABLE Dobavljac (


rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Naziv VARCHAR(255) NOT NULL,
Adresa VARCHAR(255) NULL,
Telefon VARCHAR(30) NULL,
PRIMARY KEY(rb)
);

- 85 -
CREATE TABLE Dobavljac_Artikl (
Dobavljac_rb INTEGER UNSIGNED NOT NULL,
Artikl_rb INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Dobavljac_rb, Artikl_rb),
INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb),
INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb)
);

CREATE TABLE Kupac (


rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Artikl_rb INTEGER UNSIGNED NOT NULL,
Ime VARCHAR(25) NOT NULL,
Prezime VARCHAR(25) NOT NULL,
Adresa VARCHAR(50) NOT NULL,
Telefon VARCHAR(30) NOT NULL,
email VARCHAR(30) NULL,
PRIMARY KEY(rb),
INDEX Kupac_FKIndex1(Artikl_rb)
);

CREATE TABLE Magacin (


rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Adresa VARCHAR(50) NOT NULL,
Telefon VARCHAR(30) NOT NULL,
Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY(rb)
);

U prethodnim primerima ukucali ste naredbe kojima je kreirano pet


različitih tabela u bazi podataka PRODAJA koje ćemo koristiti i u
daljim primerima za vežbanje.

- 86 -
5.3. Naredbe za definisanje podataka

Omogućuju definisanje resursa relacione baze podataka. Pod


resursima BP se najčešće podrazumevaju:

1. struktura BP,
2. tabele,
3. atributi,
4. tipovi podataka,
5. ograničenja,
6. pomoćni indeksi za direktan pristup itd.

Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogući


da izvršimo sledeće operacije:

1. kreiranje baze podataka


2. kreiranje tebele baze podataka
3. kreiranje indeksa nad kombinacijom kolona tabele
4. kreiranje virtuelne tabele - "pogleda"
5. izmena definicije tabele
6. izmena pogleda u bazi podataka
7. promena imena tabeli u bazi podataka
8. brisanje tabele iz baze podataka
9. uklanjanje indeksa iz tabele
10. uklanjanje baze podataka

- 87 -
5.4. Kreiranje indeksa u bazi podataka

Funkcija kreiranja indeksa u tabeli u baze podataka putem SUBP-a se


odnosi na kreiranje novog indeksa u tabeli u bazi podataka (iako se on
uglavnom kreira pri samom kreiranju tabela baze podataka (pogledajte
prethodne primere gde će te primetiti da se često na kraju navodi
primarni ključ i ako postoje i ostali indeksi), koji će omogućiti lakše
pretraživanje i ostale funkcije koje se dobijaju indeksiranjem nekog od
polja u tabeli baze podataka. Kreiranje novog indeksa u tabele baze
podataka se u SQL jeziku vrši pomoću naredbe CREATE INDEX.

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name


[USING index_type]
ON tbl_name (index_col_name,...)
index_col_name:
col_name [(length)] [ASC | DESC]

Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX

Kreiraćemo indeks u tabeli Magacin nad poljem Telefon (strukturu


tabele pogledajte tamo gde je ona kreirana) sledećom naredbom:

CREATE INDEX K2 ON Magacin(Telefon);

- 88 -
5.5. Kreiranje virtuelne tabele - "pogleda"

Funkcija kreiranja pogleda (VIEW) u bazi podataka putem SUBP-a se


odnosi na kreiranje pogleda tj. virtualne tabele koja se koristi u
slučajevima kada se često izvršavana neki isti upit nad određenom
tabelom ili više tabela u bazi podataka. Tada se kreira pogled tj. view koji
se kasnije koristi u radu sa bazom podataka. Kreiranje pogleda bazi
podataka se u SQL jeziku vrši pomoću naredbe CREATE VIEW.

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE |


TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW

Kao što u gore navedenoj strukturi možete primetiti da ovde postoji


select_statement što je u stvari SELECT naredba koja je posebno i
detaljno objašnjena u četvrtom delu o DML-u a ovde neće biti više reči o
tome (za više informacija pogledajte poglavlje 4.3 gde će te videti
detaljno objašnjenje ove naredbe i svih njenih opcija.

Kreiraćemo pogled nad tabelom magacin (najjednostavnijim oblikom


SELECT naredbe) koji će prikazivati sve podatke koji se nalaze u
istoimenoj tabeli sledećom naredbom:

CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;

- 89 -
5.6. Izmena definicije tabele
Funkcija izmene tabele u bazi podataka putem SUBP-a se odnosi na
dodavanje, uklanjanje i modifikovanje kolona u tabeli baze podataka.
Prethodno navedene operacije nad tabelom u bazi podataka se u SQL
jeziku vrši pomoću jedinstvene naredbe ALTER TABLE:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD INDEX [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE
collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options

Slika 5.5 Dokumentovana struktura naredbe ALTER TABLE

- 90 -
U zavisnosti od toga šta želimo da promenimo u tabeli, koristićemo
različite oblike prethodno navedene naredbe u strukturi koja je prikazana.

Za dodavanje nove kolone koristi se ADD:

ALTER TABLE Kupac


ADD ime_oca CHAR(25);

Za uklanjanje kolone iz tabele koristi se DROP:

ALTER TABLE Kupac


DROP ime_oca;

Za izmenu svojstava kolone iz tabele koristi se MODIFY:

ALTER TABLE Kupac


MODIFY email VARCHAR(40);

- 91 -
5.7. Izmena pogleda u bazi podataka

Funkcija izmene pogleda u bazi podataka putem SUBP-a se odnosi na


izmenu pogleda koji je prethodno kreiran u bazi podataka. Izmena
pogleda bazi podataka se u SQL jeziku vrši pomoću naredbe ALTER
VIEW.

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]


VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW

Primenićemo gore navedenu naredbu da bi promenili pogled pod


nazivom SPISAK tako da prikazuje sve iz tabele Dobavljač a ne
Magacin kako je ranije bilo, u skladu sa prethodno navedenom
strukturom potrebno je ukucati:

ALTER VIEW SPISAK AS SELECT * FROM Dobavljac;

- 92 -
5.8. Promena imena tabele u bazi podataka

Funkcija promene imena tabele u bazi podataka putem SUBP-a se odnosi


na promenu inema neke od tabela koja je prethodno kreirana u bazi
podataka. Izmena imena tabele u bazi podataka se u SQL jeziku vrši
pomoću naredbe RENAME TABLE.

RENAME TABLE tbl_name TO new_tbl_name


[, tbl_name2 TO new_tbl_name2] ...

Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE

Iskoristićemo prethodno opisanu naredbu da bi promenili ime tabele


Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati:

RENAME TABLE Kupac TO Klijent;

- 93 -
5.9. Brisanje tabele iz baze podataka

Funkcija brisanja tabele iz baze podataka putem SUBP-a se odnosi na


uklanjenje neke od tabela koja je prethodno kreirana u bazi podataka tako
da ona više fizički ne postoji u bazi podataka.. Ovde je potrebno uočiti
bitnu razliku između naredbe DROP TABLE i naredbe DELETE
FROM TABLE. Naredbom DROP TABLE briše se tabela iz baze
podataka (napomena: korišćenjem ove naredbe nad tabelom u kojoj se
nalaze podaci doći će do gubljenja tih podataka) dok se naredbom
DELETE FROM TABLE brišu se svi podaci iz tabele ali se prazna
tabela i dalje čuva u bazi podataka tako da se kasnije ponovo može
koristiti. Uklanjanje tabele u bazi podataka se u SQL jeziku vrši pomoću
naredbe DROP TABLE.

DROP [TEMPORARY] TABLE [IF EXISTS]


tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]

Slika 5.8 Dokumentovana struktura naredbe DROP TABLE

Korišćenjem prethodno navedene naredbe uklonićemo tabelu Klijent iz


baze podataka, u skladu sa prethodno navedenost strukturom potrebno je
ukucati:

DROP TABLE Klijent;

- 94 -
5.10. Uklanjanje indeksa iz tabele

Funkcija uklanjanja indeksa iz tabele u bazi podataka putem SUBP-a se


odnosi na uklanjenje indeksa u nekoj od tabela koji je prethodno kreiran
u bazi podataka. Uklanjanje indeksa u nekoj od tabele u bazi podataka se
u SQL jeziku vrši pomoću naredbe DROP INDEX.

DROP INDEX index_name ON tbl_name

Slika 5.9 Dokumentovana struktura naredbe DROP INDEX

Korišćenjem prethodne naredbe uklonićemo indeks pod nazivom K2,


koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom
strukturom potrebno je ukucati:

DROP INDEX K2 ON Magacin;

- 95 -
5.11. Uklanjanje baze podataka

Funkcija uklanjanja baze podataka putem SUBP-a se odnosi na


uklanjenje kompletne baze podataka koja je prethodno kreirana (Ovom
naredbom uklanjamo čitavu bazu podataka i sve njene resurse (tabele,
atribute, tipove podataka, ograničenja, indekse itd.)). Uklanjanje baze
podataka se u SQL jeziku vrši pomoću naredbe DROP DATABASE.

DROP {DATABASE | SCHEMA} [IF EXISTS] db_namež

Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE

Korišćenjem prethodne naredbe obrisaćemo čitavu bazu podataka koju


smo na početku kreirali (PAŽNJA: posle izvršenja ove naredbe baza će
biti uništena i dalji rad neće biti moguć), u skladu sa gore navedenom
strukturom potrebno je ukucati:

DROP DATABASE PRODAJA;

- 96 -
6. DML (Data Manipulation Language)

6.1. Manipulisanja podacima

Osnovni razlog korišćenja Sistema za Upravljanje Bazama


Podataka (SUBP) je jednostavan i lak rad sa podacima koji se nalaze u
bazi podataka. Pod manipulisanjem (rukovanjem) podacima se
podrazumeva:

● Unos (dodavanje) podataka


● Pregled (korišćenje) podataka
● Izmena podataka
● Uklanjanje podataka

Efikasnost sistema za upravljanje bazama podataka (SUBP) se može


meriti preko sledećih kriterijuma:

● jednostavnost upotrebe
● preciznost podataka
● održavanje integriteta podataka
● brzina rada (izvršavanja upita)
● podržana količina podataka u bazi
● specifične funkcije i mogućnosti

- 97 -
6.2. Unos podataka

Funkcija unosa podataka u bazu putem SUBP-a se odnosi na unos


podataka u neku (jednu ili više) od tabela u bazi podataka. Unos
podataka se u SQL jeziku vrši pomoću naredbe INSERT.

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]


[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

Slika 7.1 Dokumentovana struktura naredbe INSERT

Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe


INSERT, to možete uraditi na sledeća dva načina:

INSERT INTO Artikl


(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(123, 'Artikl br. 1', 199.99, 100, 'Germany');
ili
INSERT INTO Artikl
VALUES
(1, 123, 'Artikl br. 1', 199.99, 100, 'Germany');

Postoje dve osnovne razlike između ove dve navedene varijante:


● U prvoj varijanti smo pre vrednosti koje želimo da unesemo u
tabelu Artikl naveli kolone u koje želimo da smestimo te
vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena
kolona već smo samo naveli vrednosti po redosledu u kom se
kolone nalaze u tabeli.
● U drugoj varijanti smo zadali vrednost i za polje rb da bi smo
ispoštovali broj i redosled kolona pošto ih nismo eksplicitno
naveli. Međutim, na ovaj način smo izgubili funkcionalnost
parametra AUTO_INCREMENT koji je postavljen na ovu
kolonu.

- 98 -
Druga varijanta predstavlja kraći oblik naredbe koji nije poželjno koristiti
iz sledećih razloga:

● Gubi se funkcionalnost parametra AUTO_INCREMENT i


DEFAULT.
● Ukoliko naredbu u ovakvom obliku sačuvamo u nekoj internoj ili
eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja
neke od kolona) ta procedura neće biti validna.
● Moraju se unositi vrednosti za sva polja i to u odgovarajućem
redosledu.

Na prethodno opisan način uneti i sledeće podatke:


+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Serbian |
+----+------------+--------------+--------+----------+---------------+
+----+------------+--------------+--------+----------+---------------+
| 3 | 127 | Artikl br. 3 | 190.00 | 170 | USA |
+----+------------+--------------+--------+----------+---------------+
+----+------------+--------------+--------+----------+---------------+
| 4 | 129 | Artikl br. 4 | 599.05 | 340 | Germany |
+----+------------+--------------+--------+----------+---------------+
+----+------------+--------------+--------+----------+---------------+
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
+----+------------+--------------+--------+----------+---------------+
+----+------------+--------------+--------+----------+---------------+
| 6 | 135 | Artikl br. 6 | 397.00 | 390 | France |
+----+------------+--------------+--------+----------+---------------+
+----+------------+--------------+--------+----------+---------------+
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+----+------------+--------------+--------+----------+---------------+

To ćemo uraditi uz pomoć sledećih naredbi:

INSERT INTO Artikl


(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(124, 'Artikl br. 2', 299.99, 103, 'Serbian');

INSERT INTO Artikl


(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(127, 'Artikl br. 3', 190.00, 170, 'USA');

- 99 -
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(129, 'Artikl br. 4', 599.05, 340, 'Germany');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(132, 'Artikl br. 5', 179.97, 140, 'Switzerland');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(135, 'Artikl br. 6', 397.00, 390, 'France');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(137, 'Artikl br. 7', 269.07, 250, 'Dansk');

- 100 -
6.3. Pregled podataka

Funkcija pregleda podataka u bazi putem SUBP-a se odnosi na uzimanje


podataka iz neke (jedne ili više) od tabela u bazi podataka. Pregled
podataka se u SQL jeziku vrši pomoću naredbe SELECT.

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT]
[SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET
offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name'
| INTO @var_name [, @var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

Slika 7.2 Dokumentovana struktura naredbe SELECT

Da bi smo izvršili pregled svih podataka iz tabele Artikl iskoristićemo


najosnovniji oblik naredbe SELECT:

SELECT * FROM Artikl;

- 101 -
Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim
kolonama) iz tabele Artikl.
+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+----+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)

Identična naredba (tj. naredba sa identičnim rezultatom) u ovom slučaju


bi bila:

SELECT rb, Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla


FROM Artikl;

Iako su rezultati isti:


+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+----+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)

razlika između ove i prethodne naredbe je u tome što smo u prethodnoj


naredbi koristili simbol '*' da bi smo označili sve kolone (sva polja
zapisa). Ukoliko želimo da iz prikaza izbacimo kolonu rb, potrebno je
samo da je izostavimo iz liste kolona: u ovom slučaju bi bila:

SELECT Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla


FROM Artikl;

- 102 -
Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen
parametar rb:
+------------+--------------+--------+----------+---------------+
| Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+------------+--------------+--------+----------+---------------+
| 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 127 | Artikl br. 3 | 190 | 170 | USA |
| 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 135 | Artikl br. 6 | 397 | 390 | France |
| 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)

Rezultate možemo sortirati vertikalno i horizontalno. Vertikalno


sortiranje se izvodi preko navođenja kolona u redosledu u kom želimo da
se prikazuju parametri zapisa:

SELECT Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla


FROM Artikl;

U rezultat ove naredbe:


+----------+--------+--------------+------------+---------------+
| Kolicina | Cena | Naziv | Magacin_rb | ZemljaPorekla |
+----------+--------+--------------+------------+---------------+
| 100 | 199.99 | Artikl br. 1 | 123 | Germany |
| 102 | 299.99 | Artikl br. 2 | 124 | Srbija |
| 170 | 190 | Artikl br. 3 | 127 | USA |
| 340 | 599.05 | Artikl br. 4 | 127 | Germany |
| 140 | 179.97 | Artikl br. 5 | 132 | Switzerland |
| 390 | 397 | Artikl br. 6 | 135 | France |
| 250 | 269.07 | Artikl br. 7 | 137 | Dansk |
+----------+--------+--------------+------------+---------------+
7 rows in set (0.00 sec)

ulaze svi zapisi vertikalno poređani po redosledu u kom su unošeni u


tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena,
Naziv, Magacin_rb, ZemljaPorekla.

Horizontalno sortiranje se vrši zadavanjem jedne ili više kolona na


osnovu čijeg sadržaja će sortiranje biti obavljeno u zadatom smeru:

SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;

- 103 -
U rezultat ove naredbe:
+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
+----+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)

ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastućem


redosledu. Ukoliko želimo da zapise poređamo u opadajućem redosledu
parametar ASC ćemo zameniti sa DESC.

Osim vertikalnog ograničavanja rezultata (ograničavanja


kolona/parametara zapisa koji ulaze u rezultat) SQL jezik podržava i
horizontalno ograničavanje (ograničavanje zapisa koji ulaze u rezultat)
preko sledećih parametara naredbe SELECT:

1. WHERE
2. DISTINCT
3. LIMIT
4. GROUP BY / HAVING

- 104 -
6.3.1. Klauzula WHERE

Ova klauzula se koristi za zadavanje odredjenog uslova koji zapis mora


da ispuni da bi ušao u rezultat:

SELECT * FROM Artikl


WHERE rb=5;

Ovakvim korišćenje WHERE klauzule smo rezultat ograničili samo na


zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1:
+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
+----+------------+--------------+--------+----------+---------------+
1 row in set (0.00 sec)

Osim poređenja po numeričkoj jednakosti moguće je koristiti i sledeće


numeričke operatore:

= SELECT * FROM Artikl WHERE


Jednako
rb=1;
<> SELECT * FROM Artikl WHERE
Nije jednako
rb<>1;
< SELECT * FROM Artikl WHERE
Veće od
rb<1;
> SELECT * FROM Artikl WHERE
Manje od
rb>1;
<= SELECT * FROM Artikl WHERE
Veće ili jednako
rb<=1;
>= SELECT * FROM Artikl WHERE Manje ili
rb>=1; jednako
BETW SELECT * FROM Artikl WHERE rb Između dve
EEN BETWEEN 1 AND 5; vrednosti
LIKE SELECT * FROM Artikl WHERE
Naziv LIKE 'Artik%';
SIMBOLIČK
O POREĐENJE
IN SELECT * FROM Artikl WHERE rb Univerzalno
IN (1,3,5); poređenje

- 105 -
Dodatna objašnjenja:

- Simboličko poređenje
-
● Klauzula LIKE omogućuje pretraživanje na osnovu "UZORKA"
odnosno dobijanje informacija i kada ne znamo potpun naziv (tj.
vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna
karaktera ("%","_") sa sledećim značenjem:
"%" predstavlja string od 0 ili više karaktera
"__" predstavlja
poziciju jednog
karaktera.
Ostali karakteri imaju ucbičajeno značenje.
Uslov u WHERE klauzuli navedenog upita kaže da IME treba da liči na
uzorak naveden u jednostrukim navodnicima.

Primeri:
... gde se ime završava sa N.
WHERE IME LIKE '%N'
... gde je treći karakter imena R.
WHERE IME LIKE 'R%'
... gde je ime dugačko 5 karaktera
WHERE IME LIKE ' '

... gde ime nije dugačko 5 karaktera.


WHERE IME NOT LIKE '__'
... gde je u imenu slovo G posle R.
WHERE IME LIKE '%R%G%'

- Univerzalno poređenje

● IN koristimo da prikažemo zapise koje pripadaju skupu


vrednosti (ovo je zamena za više OR klauzula)

- 106 -
Klauzula WHERE nije ograničena na postavljanje samo jednog uslova
(što se može primetiti već kod parametra IN). Više uslova se može
kombinovati pomoću logičkih operatora AND i OR:

SELECT * FROM Artikl


WHERE (
(rb>1 AND rb<3)
OR
(rb>3 AND rb<5)
AND
Naziv LIKE 'Artik%'
);

Ovom naredbom smo dobili rezultat:


+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
+----+------------+--------------+--------+----------+---------------+

2 rows in set (0.02 sec)u koji su uključeni svi zapisi kod kojih parametar
rb ima vrednost 2 ili 4 i kod kojih parametar Naziv počinje sa Artik.

- 107 -
6.3.2. Klauzula DISTINCT

Ova klauzula se koristi za eliminisanje duplih zapisa iz prikaza:

SELECT DISTINCT ZemljaPorekla FROM Artikl;

Rezultat ove komande:


+---------------+
| ZemljaPorekla |
+---------------+
| Germany |
| Srbija |
| USA |
| Switzerland |
| France |
| Dansk |
+---------------+
6 rows in set (0.00 sec)

sadrži listu svih zemalja iz kojih artikli potiču ali bez ponavljanja.

- 108 -
6.3.3. Klauzula LIMIT

Ova klauzula se koristi za ograničavanje broja zapisa koji ulaze u rezultat


bez obzira da li su ispunili eventualni uslov. Parametar LIMIT može
imati jedan ili dva naknadna parametra (prvi koji definiše koliko prvih
zapisa treba preskočiti i drugi koji definiše koliko zapisa treba prikazati).
Ukoliko se zada samo jedan parametar on se odnosi na broj zapisa koje
treba prikazati počev od prvog zapisa.

Naredba sa jednim parametrom:

SELECT * FROM Artikl LIMIT 5;

vraća prvih 5 zapisa:


+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
+----+------------+--------------+--------+----------+---------------+
5 rows in set (0.00 sec)

dok ista naredba sa dva parametra:

SELECT * FROM Artikl LIMIT 5,10;

vraća zapise od 6. do 15.:


+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+----+------------+--------------+--------+----------+---------------+
2 rows in set (0.00 sec)

- 109 -
6.3.4. Klauzule GROUP BY / HAVING

Klauzula GROUP BY se koristi za grupisanje podataka koji se dobijaju


kao rezultat upita, a klauzula HAVING se koristi za selekciju određenih
grupa koje su već kreirane GROUP BY klauzulom.
SELECT ZemljaPorekla, COUNT(*) FROM Artikl
GROUP BY ZemljaPorekla;

Korišćenjem naredbe u ovakvom obliku kao rezultat dobićemo spisak


svih zemalja i broj artikala koji potiče iz koje zemlje.

+---------------+----------+
| ZemljaPorekla | COUNT(*) |
+---------------+----------+
| Dansk | 1 |
| France | 1 |
| Germany | 2 |
| Srbija | 1 |
| Switzerland | 1 |
| USA | 1 |
+---------------+----------+
6 rows in set (0.02 sec)

Ukoliko želimo da iz rezultata prikažemo samo podatke koji ispunjavaju


određeni kriterijum, to će mo uraditi uz pomoć klauzule HAVING, na
sledeći način:

SELECT ZemljaPorekla, COUNT(*) FROM Artikl


GROUP BY ZemljaPorekla
HAVING COUNT(*)=1;

Na ovaj način kao rezultat dobićemo spisak zemalja iz kojih dolazi samo
po jedan proizvod.
+---------------+----------+
| ZemljaPorekla | COUNT(*) |
+---------------+----------+
| Dansk | 1 |
| France | 1 |
| Srbija | 1 |
| Switzerland | 1 |
| USA | 1 |
+---------------+----------+
5 rows in set (0.02 sec)

- 110 -
6.4. Izmena podataka

Funkcija izmene podataka u bazi putem SUBP-a se odnosi na


izmenu podataka u nekoj (jednoj ili više) od tabela u bazi podataka.
Moguće je izmeniti jedan ili više parametara (kolona) jednog ili više
zapisa (reda). Izmena podataka se u SQL jeziku vrši pomoću naredbe
UPDATE.

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name


SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

Slika 7.3 Dokumentovana struktura naredbe UPDATE za jednu tabelu

UPDATE [LOW_PRIORITY] [IGNORE] table_references


SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_condition]

Slika 7.4 Dokumentovana struktura naredbe UPDATE za više tabela

Osnovni oblik komande UPDATE izgleda ovako:

UPDATE Artikl
SET Cena=1000.00;

i njome su je vrednost svih vrednosti u koloni Cena postavljena na


1000.00.

Ukoliko želimo da izmenu primenimo samo na određene zapise (redove)


moramo koristiti klauzulu WHERE (videti deo 4.3.1):

UPDATE Artikl
SET Cena=1000.00
WHERE ZemljaPorekla='Germany';

- 111 -
+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

Ukoliko želimo da više parametara (kolona) izmenimo jednim upitom,


navešćemo više kolona i vrednosti odvojenih zarezom:
UPDATE Artikl
SET Cena=2000.00, Kolicina=46
WHERE ZemljaPorekla='Germany';

+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany |
| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany |
| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

Ukoliko želimo da u za vrednost koristimo već postojeću vrednost u


nekoj od kolona za vrednost ćemo navesti kolonu zapisa čiju vrednost
želimo da primenimo:
UPDATE Artikl
SET Kolicina=Cena
WHERE ZemljaPorekla='Germany';

+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany |
| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany |
| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

- 112 -
Ukoliko želimo da u za vrednost koristimo već postojeću vrednost uz
primenu matematičke operacije:

UPDATE Artikl
SET Cena=Cena*1.18;

+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 2360 | 2000 | Germany |
| 2 | 124 | Artikl br. 2 | 1180 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1180 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2360 | 2000 | Germany |
| 5 | 132 | Artikl br. 5 | 1180 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1180 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1180 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

ili

UPDATE Artikl
SET Cena=Kolicina+10;

+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 2010 | 2000 | Germany |
| 2 | 124 | Artikl br. 2 | 112 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 180 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany |
| 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 400 | 390 | France |
| 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

- 113 -
Parametar LIMIT (videti deo 4.3.3) služi za ograničavanje broja kolona
na koje ćemo primeniti izmenu:

UPDATE Artikl
SET Cena=100
LIMIT 3;

+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 100 | 2000 | Germany |
| 2 | 124 | Artikl br. 2 | 100 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 100 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany |
| 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 400 | 390 | France |
| 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)

- 114 -
6.5. Uklanjanje podataka

Funkcija uklanjanja podataka u bazi putem SUBP-a se odnosi na


uklanjanje podataka iz neke (jedne ili više) od tabela u bazi podataka.
Moguće je ukloniti samo kompletne redove tabela (uklanjanje vrednosti
parametara zapisa se vrši pomoću naredbe UPDATE). Uklanjanje
podataka se u SQL jeziku vrši pomoću naredbe DELETE.

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name


[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu

Osnovni oblik komande DELETE izgleda ovako:

DELETE FROM Artikl;

i njome su uklonjeni svi zapisi iz tabele Artikl.

Ukoliko želimo da uklanjenje ograničimo samo na određene zapise


(redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):

DELETE FROM Artikl


WHERE ZemljaPorekla='Germany';

Parametar LIMIT (videti deo 4.3.3) služi za ograničavanje broja kolona


na koje ćemo primeniti uklanjanje:

DELETE FROM Artikl


LIMIT 10;

- 115 -
7. DCL (Data Control Language)

Osim manipulacije podacima (DML), jedna od bitnih karakteristika SUBP-


a je kontrola podataka (DCL), pre svega kontrola pristupa podacima.
Kontrola pristupa podacima obično podrazumeva mogućnost kreiranja više
korisničkih profila (naloga) sa određenim pristupnim podacima (korisničko
ime i lozinka) i pridruženim privilegijama. Neki SUBP imaju mogućnost
povezivanja internih korisničkih naloga i privilegija sa nekim spoljnim
sistemom za proveru autentičnosti korisnika (npr. povezivanje sa
sistemskim nalozima, Active Directory-jem i sl.). MySql SUBP poseduje
interni sistem korisničkih naloga (sa parametrima: korisničko ime, lozinka,
mrežna lokacija klijenta) sa privilegijama (izlistani u tabeli 5.1) na nivou
jedne ili više baza, tabela i/ili kolona. Podaci vezani za korisničke naloge i
privilegije su skladišteni u sistemskoj bazi "mysql".

Osnovne naredbe za rad sa korisničkim nalozima:

● CREATE USER
● RENAME USER
● DROP USER
● SET PASSWORD

Kreiranje novih korisničkih naloga nije neophodno zasebno obaviti pre


izmene privilegija već se novi nalog (ili nova varijanta postojećeg naloga)
može kreirati samom dodelom privilegija. Prve tri naredbe su dostupne
počev od verzije MySql-a 5.0 sa određenim izmenama u verziji 5.0.2.

Osnovne naredbe za rad sa privilegijama su:

● GRANT
● REVOKE
● FLUSH PRIVILEGES

- 116 -
7.1. Naredba CREATE USER

Naredba CREATE USER služi za kreiranje novih korisničkih naloga na


SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i
korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju
INSERT privilegiju za sistemsku mysql bazu podataka.

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']


[, user [IDENTIFIED BY [PASSWORD] 'password']] ...

Slika 8.1 Dokumentovana struktura naredbe CREATE USER

Osnovni oblik korišćenja ove naredbe je:

CREATE USER 'korisnik';

Ukoliko želimo da korisničkom nalogu pridružimo i hostname računara sa


koga je dozvoljen pristup, naredba je:

CREATE USER 'korisnik@racunar1.mreza.edu';

Ukoliko želimo da korisničkom nalogu pridružimo i lozinku, naredba je:

CREATE USER 'korisnik' IDENTIFIED BY 'lozinka';

Ukoliko želimo da istovremeno kreiramo više korisničkih naloga, naredba


je:

CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1',


'korisnik2' IDENTIFIED BY 'lozinka2';

- 117 -
7.2. Naredba RENAME USER

Naredba RENAME USER služi za izmenu postojećih korisničkih naloga na


SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i
korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici
koji imaju UPDATE privilegiju za sistemsku mysql bazu podataka.

RENAME USER old_user TO new_user


[, old_user TO new_user] ...

Slika 8.2 Dokumentovana struktura naredbe RENAME USER

Osnovni oblik korišćenja ove naredbe je:

RENAME USER 'korisnik1' TO 'korisnik2';

- 118 -
7.3. Naredba DROP USER

Naredba DROP USER služi za izmenu postojećih korisničkih naloga na


SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i
korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici
koji imaju DELETE privilegiju za sistemsku mysql bazu podataka.

DROP USER user [, user] ...

Slika 8.3 Dokumentovana struktura naredbe DROP USER

Osnovni oblik korišćenja ove naredbe je:

DROP USER 'korisnik1';

Ukoliko želimo da istovremeno uklonimo više korisničkih naloga, naredba


je:

DROP USER 'korisnik1', 'korisnik2';

- 119 -
7.4. Naredba SET PASSWORD

Naredba SET PASSWORD služi za promenu pristupne lozinke postojećih


korisničkih naloga na SUBP. Ovom naredbom je moguće promeniti lozinku
za sopstveni nalog kao i lozinku za ostale korisničke naloge ukoliko aktivni
korisnički nalog ima UPDATE privilegiju za sistemsku mysql bazu
podataka.

SET PASSWORD [FOR user] = PASSWORD('some password')

Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD

Osnovni oblik korišćenja ove naredbe je:

SET PASSWORD = PASSWORD('nova lozinka');

Ukoliko želimo da promenimo lozinku za tuđi korisnički nalog, naredba je:

SET PASSWORD FOR 'korisnik2' = PASSWORD('nova


lozinka');

- 120 -
7.5. Dodela privilegija (GRANT)
Naredba GRANT omogućava administratorima SUBP-a da određenom
koričkom nalogu dodele određene privliegije nad određenim objektima
baze podataka. S obzirom na to da ukoliko se privilegije dodeljuju nalogu
koji ne postoji na SUBP on se automatski kreira, ovom naredbom je
moguće i kreirati nove korisničke naloge. Za korišćenje ove naredbe
neophodno je biti administrator sistema ili imati GRANT OPTION
privilegiju kojom je moguće dodeliti privilegije iz skupa privilegija koje su
dodeljene aktivnom korisničkom nalogu.
GRANT priv_type [(column_list)] [, priv_type
[(column_list)]] ...
ON [object_type] {tbl_name | * | *.* |
db_name.*}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD]
'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH with_option [with_option] ...]

object_type =
TABLE
| FUNCTION
| PROCEDURE

with_option =
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count

Slika 8.5 Dokumentovana struktura naredbe GRANT

- 121 -
Osnovna dodela privilegija se vrši naredbom:

GRANT ALL ON database_name.table_name TO


'korisnik@hostname' IDENTIFIED BY 'lozinka';

Dodela privilegija na globalnom nivou (svim objektima - bazama,


tabelama, kolonama -u SUBP) se vrši naredbom:

GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY


'lozinka'

Dodela privilegija na globalnom nivou baze podataka se vrši naredbom:

GRANT ALL ON db_name.* TO 'korisnik' IDENTIFIED BY


'lozinka'

Dodela privilegija na globalnom nivou tabele u bazi se vrši naredbom:

GRANT ALL ON db_name.table_name TO 'korisnik'


IDENTIFIED BY 'lozinka'

Takođe, moguća je (mada se retko koristi) dodela privilegija i na nivou


kolone u tabeli kao i rutine.

- 122 -
Privilegije Značenje
ALL [PRIVILEGES] Sets all simple privileges except GRANT OPTION
ALTER Allows use of ALTER TABLE
CREATE Allows use of CREATE TABLE
CREATE TEMPORARY
Allows use of CREATE TEMPORARY TABLE
TABLES
CREATE VIEW Allows use of CREATE VIEW
DELETE Allows use of DELETE
DROP Allows use of DROP TABLE
EXECUTE Allows the user to run stored procedures (MySQL 5.0)
FILE Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE
INDEX Allows use of CREATE INDEX and DROP INDEX
INSERT Allows use of INSERT
Allows use of LOCK TABLES on tables for which you have the SELECT
LOCK TABLES
privilege
PROCESS Allows use of SHOW FULL PROCESSLIST
REFERENCES Not yet implemented
RELOAD Allows use of FLUSH
REPLICATION
Allows the user to ask where the slave or master servers are
CLIENT
REPLICATION
Needed for replication slaves (to read binary log events from the master)
SLAVE
SELECT Allows use of SELECT
SHOW DATABASES SHOW DATABASES shows all databases
SHOW VIEW Allows use of SHOW CREATE VIEW
SHUTDOWN Allows use of mysqladmin shutdown
Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET
SUPER GLOBAL statements, the mysqladmin debug command; allows you to connect
(once) even if max_connections is reached
UPDATE Allows use of UPDATE
USAGE Synonym for ``no privileges''
GRANT OPTION Allows privileges to be granted

Tabela 8.1 Moguće vrednosti za dodelu odnosno oduzimanje privilegija

- 123 -
7.6. Oduzimanje privilegija (REVOKE)

Naredba REVOKE omogućava administratorima SUBP-a da određenom


koričkom nalogu oduzmu određene privliegije nad određenim objektima
baze podataka. Za korišćenje ove naredbe neophodno je biti administrator
sistema ili imati GRANT OPTION privilegiju kojom je moguće oduzeti
privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom
nalogu.

REVOKE priv_type [(column_list)] [, priv_type


[(column_list)]] ...
ON [object_type] {tbl_name | * | *.* |
db_name.*}
FROM user [, user] ...

Slika 8.6 Dokumentovana struktura naredbe REVOKE

Osnovno oduzimanje privilegija se vrši naredbom:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';

- 124 -
7.7. Primena izmena (FLUSH)

Naredba FLUSH služi za ponovo učitavanje parametara sistema koji se


nalaze keširani u memoriji. Za izvršavanje ove naredbe potrebno je imati
RELOAD privilegiju.

FLUSH [LOCAL | NO_WRITE_TO_BINLOG]


flush_option [, flush_option] ...

Slika 8.7 Dokumentovana struktura naredbe FLUSH

Flush_option: Objašnjenje:
HOSTS Pražnjenje keša host tabele
DES_KEY_FILE Ponovno učitavanje DES ključa
LOGS Zatvaranje i otvaranje svih log fajlova
MASTER Brisanje i ponovno kreiranje svih log fajlova
PRIVILEGES Ponovno učitavanje svih privilegija iz GRANT
tabele
QUERY CACHE Defragmentacija keširanih upita
SLAVE Resetovanje svih replikacija sekundardnih
parametara
STATUS Resetovanje svih statusnih promenljivu na 0
USER_RESOURCES Resetovanje svih resursa iz prethodnih sati na 0

Tabela 8.2 Moguće vrednosti za flash_option parametar

- 125 -
8. Zadaci za vežbu DML

1. Uneti podatke iz sledeće tabele u tabelu Dobavljac:

+----+------------+------------------+-----------+
| rb | Naziv | Adresa | Telefon |
+----+------------+------------------+-----------+
| 1 | Dobavljac1 | Beogradska 5 | 64123456 |
| 2 | Dobavljac2 | Bac49 | 11256782 |
| 3 | Dobavljac3 | Uzicka 42 | 62564778 |
| 4 | Dobavljac4 | Knez Mihajlova 2 | 112345812 |
| 5 | Dobavljac5 | Nehruova 62b | 637469923 |
+----+------------+------------------+-----------+
5 rows in set (0.00 sec)

2. Uneti podatke iz sledeće tabele u tabelu Magacin:

+-----+---------------+-----------+-----------+
| rb | Adresa | Telefon | Kapacitet |
+-----+---------------+-----------+-----------+
| 124 | bac26 | 11145856 | 2000 |
| 127 | Beogradska 5 | 635844535 | 1000 |
| 129 | Dalmatinska43 | 633463 | 1500 |
| 132 | Vojvodanska2 | 642888158 | 460 |
| 135 | Francuska6 | 11136845 | 1200 |
| 137 | Nusiceva24 | 23425698 | 900 |
+-----+---------------+-----------+-----------+
6 rows in set (0.00 sec)

3. Prikazati sve podatke sa svim poljima iz tabele Magacin

4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac

5. Prikazati sve podatke iz tabele Dobavljac u sledećem redosledu


polja:Naziv, Rb, Telefon, Adresa

6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet


po opadajućem redosledu

7.Prikazati iz tabele Dobavljac sledeća polja: Rb, Adresa, Telefon, za


dobavljača koji se nalazi u Dalmatinskoj 43

8. Prikazati iz tabele Magacin prva četiri zapisa

- 126 -
9.Prikazati iz tabele Dobavljac zapise od 2 do 4

10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa


bude 2000

11.Izmeniti tabelu Magacin tako da polje Kapacitet bude 500 za


magacin koji se nalazi u Francuskoj 6

12.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa


bude bude povećano za 30 %

13.Izmeniti tabelu Magacin tako da polje Kapacitet bude umanjeno za


20 % prva dva zapisa

14.Izmeniti tabelu Magacin tako da polje Kapacitet bude povećano za


50 jedinica kod magacina sa rednim brojem 2, 3 i 4

15.Ukloniti poslednji zapis iz tabele Dobavljac

16.Ukloniti sve zapise iz tabele Magacin

- 127 -
9. DODATAK

9.1. Izrazi i funkcije

Pored prikazivanja prostih vrednosti memorisanih u tabelama baze


podataka, SQL ima više funkcija koje mogu biti korišćene za dobijanje
sumarnih informacija, kao i mogućnost primene aritmetičkih funkcija i
funkcija nad stringovima (nizovima karaktera).

Aritmetičke funkcije

Funkcije za dobijanje sumarn.ih informacija su:

AVG (atribut) - izračunava srednju vrednost


SUM (atribut) - izračunava ukupnu vrednost
MIN (atribut) - nalazi minimalnu vrednost
MAX (atribut) - nalazi maksimalnu vrednost

Ove funkcijesu definisane nad numeričkim kolonama.

Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva
oblika:

COUNT (*) - nalazi broj n-torki u grupi


COUNT (atribut) - nalazi NOT-NULL vrednosti kolone

Funkcije nad nizom karaktera

U SQL-u su definisane brojne funkcije nad kolonama tipa


character. Najčešće se primenjuju sledeće:

- stringi || string2 - spaja stringove karaktera


- LENGTH (string) - nalazi dužinu stringa
- UPPER (str) - menja sva mala slova u velika
- LOWER (str) - menja sva velika slova u mala
- TO_NUM (str) - pretvara niz karaktera (numeričkih) u broj
- TO_CHAR (str) - pretvara broj u niz karaktera

- 128 -
SQL podržava sledeće aritmetičke funkcije:

POWER (broj. e) - diže broj na e-ti stepen


ROUND (broj [.d]) - zaokružuje broj na d decimala
TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta
ABS (broj) - naiazi apsolutnu vrednos; broja
SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0,
-1 ako je broj <0.
MOD (broji, broj2) - izračunava broji moduo broj2
SQRT (broj) - nalazi pozitivan kvadratni koren broja

- 129 -
10. DB Desinger 4.0

Ovo je program koji se koristi za grafičko predstavljanje elemenata baze


podataka (tabela i veza izmedju tabela). Ovaj program je potpuno
besplatan ali je prekinuto sa njegovim razvojem i taj posao je preuzeo tim
koji je razvio i MySQL SUBP.

Startovanje ovog programa je klasično kao i za bilo koji drugi Windows


program Start meni, pa zatim Programs, pa onda fabForce pa na kraju
DBDesigner 4. Posle ovoga će se na ekranu pojaviti prozor kao na slici:

Slika 11.1 Početni prozor DBDesigner-a

Ovo je početni prozor koji se pojavljuje odmah posle startovanja ovog


programa. Na njemu možete videti da je ovo program koji liči na mnoge
druge programe za windows to jest ima klasičan sistem menija (na
primer: meni File se koristi kao i u ostalim programima za otvaranje
postojećeg Open ili čuvanje Save projekta, kao i New za kreiranje novog
praznog projekta) kao i neki meniji koji su specifični za ovakav program.

- 130 -
Ukoliko ste prvi put startovali program automatski je otvoren novi
projekat na kome možete raditi i kasnije ga sačuvati, a ukoliko ste već
radili u ovom programu izaberite iz menije File opciju New posle čega
možete početi da radite na projektu.

Da bi ste počeli da radite na kreiranju grafičke predstave vaše baze


podataka prvo je potrebno kreirati novu regiju u kojoj će se nalaziti
elementi vaše baze podataka. To će te uraditi tako što će te izabrati opciju
New Region koja se nalazi uz levu ivicu prozora programa, pogledajte
sledeću sliku:

Slika 11.2 Kreiranje nove regije

- 131 -
Posle izbora ove opcije kao što možete pročitati na prethodnoj slici
potrebno je u glavnom prozoru programa nacrtati željenju regiju
upotrebom levog tastera miša, kao na sledećoj slici:

Slika 11.3 Roze bojom označena je nova regija

Kao što možete videti na slici, kreirana je nova regija za vašu bazu
podataka. Po podrazumevanoj vrednosti program je regiji dao ime
Region_01 a vi to možete promeniti tako što će te kliknuti desnim klikom
negde na regiji i zatim iz menija izabrati opciju Edit Object posle čega će
se na ekranu pojaviti prozor kao na slici:

- 132 -
Slika 11.4 Promena imena regije

Kao što možete videti na slici u polje Regionname možete upisati novo
ime za regiju, upišite na primer Regija1 i biće promenjeno ime regiji.
Ovde je takodje moguće promeniti i boju za određenu regiju a
podrazumevana je crvena (Red), ukoliko to želite da promenite možete
kliknuti na strelicu pored i izabrati neku drugu boju.

- 133 -
Posle kreiranja regije možete pristupiti kreiranju elemenata vaše baze
podataka. Za početak će te kreirati prvu tabelu. Da bi ste to uradili
potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije
New Region koju ste već ranije koristili, pogledajte sledeću sliku:

Slika 11.5 Kreiaranje nove tabele

Posle izbora ove opcije potrebno je kliknuti levim tasterom miša negde
na već kreiranu regiju posle čega će se pojaviti tabela kao na slici:

Slika 11.5 Prva tabela je kreirana u regiji

- 134 -
Kao što možete videti na slici kreirana je prva tabela u vašoj regiji.
Program je automatski dao ime tabeli ime Table_01 a vi to možete
odmah promeniti tako što će kliknuti dva puta na tabelu ili tako što će te
kliknuti desnim klikom na tabelu pa zatim iz padajućeg menija izabrati
Edit Object posle čega će se pojaviti prozor kao na slici:

Slika 11.6 Dijalog za Izmenu svojstava tabele

Kao što možtete videti na slici ovde možete promeniti ime tabeli tako što
će te u polje Table Name ukucati željeno ime. U našem slučaju prva
tabela će se zvati Artikl pa to unesite u ovo polje. Ovaj dijalog se ne
koristi samo za izmenu imena tabele već i svih njenih svojstava. Ovde se
dodaju ili menjaju polja u tabelu, podešavaju svojstva određenih polja,
postavljaju ili uklanjaju ključevi za izabranu tabelu. Ono što je ovde
potrebo uraditi pošto je ovo prazna tabela jeste kreirati određena polja za
izabranu tabelu.

- 135 -
To će te uraditi tako što će te kliknuti levim tasterom miša na prvo mestu
u kolonu Column Name i tu ukucati ime za prvu kolonu odnosno polje,
unesite rb jer je to prvo polje koje se nalazi u tabeli Artikl, zatim kliknite
na taster Enter posle čega će se postaviti podrazumevana polja u ostalim
kolonama za ovo polje, pogledajte sledeću sliku:

Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu

Kao što možete videti na slici, za polje rb je postavljen atribut DataType


automatski na INTEGER, ukoliko želite ovo da promenite kliknite na
strelicu pored posle čega će se pojaviti izlistane moguće vrednosti za ovo
polje gde je potrebno izabrati željenu vrednost, pogledajte sledeću sliku:

- 136 -
Slika 11.8 Promena tipa polja za izabranu kolonu (polje)

U ovoj listi možete izabrati tip polja koji vam je potreban, u ovom
slučaju je potrebno da ovo polje bude integer pa će te ga tako i postaviti.
Na slici možete primetiti i mali žuti ključ koji se nalazi u koloni Column
Name ispred imena kolone. Ovo je oznaka da je ovo primarni ključ a
DBDesigner je automatski postavio ovaj atribut koji kasnije možete
ukloniti ukoliko želite da promenite primarni ključ, takođe možete
primetiti u donjem delu da stoje informacije o primarnom ključu u delu
Indices.

- 137 -
Na prethodno opisan način kreirajte i sledeće kolone sa tipom polja kao
na sledećoj slici:

Slika 11.9 Tabela Artikl

Na isti način kao što se kreirali tabelu Artikl kreirati i ostale tabele sa
odgovarajućim poljima kao što se može videti na sledećoj slici:

Slika 11.10 Sve tabele koje je potrebno kreirati

- 138 -
Sada se u bazi podataka nalaze sve tabele koje su vam potrebne za dalji
rad. Kao što se na slici može videti tabele nisu medjusobno povezane, a
kao što je poznato bazu podataka čini više medjusobno povezanih tabela.
Sada je potrebno povezati tabele nečim što je poznato kao relacija
odnosno veza.

Ovde je potrebno reći da postoji više tipova relacija I to 1:1, 1:m I m:n.
Relacija tipa 1:1 znači da svakom zapisu u prvoj tabeli odgovara jedan I
samo jedan zapis u drugoj tabeli. Relacija tipa 1:m znači da svakom
zapisu u prvoj tabeli odgovara jedan ili više zapisa u drugoj tabeli. I na
kraju relacija tipa m:n je takav tip relacije gde za više zapisa u prvoj
tabeli može postojati I više zapisa u drugoj tabeli. Prva dva tipa relacia je
lako napraviti dok je za treću potrebno kreirati veznu tabelu koja sadrži
primarne ključeve prve I druge tabele.

Kreiranje relacije tipa 1:1

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:1


Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora
programa, pogledajte sliku.

Slika 11.11 Kreiranje relacije 1:1

- 139 -
Kreiranje relacije tipa 1:n

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n


Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora
programa, pogledajte sliku.

Slika 11.12 Kreiranje relacije 1:n


Kreiraćemo dve relacije na ovaj način. Prva relacije je izmedju tabela
Magacin i Artikl. Da bi kreirali ovu relaciju izabraćemo opciju koja je
na prethodnoj slici a zatim kliknuti na tabelu Magacin pa onda na tabelu
Artikl posle čega će se pojaviti relacija kao na slici:

Slika 11.13 Prva relacija je kreirana

- 140 -
Ako pogledate sliku možete videti da je relacija uspostavljena, pored toga
automatski je SUBP postavio njeno ime na Rel_01 i formirao neophodan
strani ključ u tabeli Artikl pod imenom Artikl_FKIndex1. Ukoliko želite
da izmenite svojstva relacije kliknite desnim klikom miša na nju i iz
padajućeg menija izaberite Edit Object posle čega će se pojaviti prozor
kao na slici:

Slika 11.15 Izmena svojstava relacije

- 141 -
Ovde je moguće postaviti novo ime za relaciju umesto podrazumevanog,
tako što će te u polje Relation Name uneti Relacija1 posle čega će ime
biti promenjeno. Ovde je takođe moguće promeniti i tip relacije u listi
koja se dobija levim klikom miša na strelicu u polju Relation Kind, kao i
to da li će relacija biti vidljiva ili ne Visible.

Druga relacija tipa 1:n je izmedju tabela Artikl i Kupac i nju će te


kreirati na isti način kao i prethodnu. Posle izbora opcije New 1:n Non-
Identifyng-Relation potrebno je prvo kliknuti levim tasterom miša na
tabelu Artikal pa onda na tabelu Kupac posle čega će relacija biti
kreirana kao i spoljni ključ (FK) u drugoj tabeli, ovo je ilustrovano
sledećom slikom:

Slika 11.16 Druga relacija je kreirana

- 142 -
Kao što možete videti relacija je kreirana, pored toga automatski je
SUBP postavio njeno ime na Rel_02 i formirao neophodan strani ključ u
tabeli Kupac pod imenom Kupac_FKIndex1. Ukoliko želite da izmenite
svojstva relacije kliknite desnim klikom miša na nju i iz padajućeg
menija izaberite Edit Object i promeniti njeno ime u Relacija2.

Kreiranje relacije tipa n:m

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New n:m


Relation koja se nalazi uz desnu ivicu glavnog prozora programa,
pogledajte sliku.

Slika 11.17 Kreiranje relacije n:m

- 143 -
Sada će te kreirati jednu relaciju tipa n:m izmedju tabela Dobavljac i
Artikl tako što će te izabrati opciju sa prethodne slike, a zatim kliknuti
levim tasterom na tabelu Dobavljac pa onda na tabelu Artikl posle čega
će relacija biti kreirana kao i svi potrebni elementi, pogledajte sledeću
sliku:

Slika 11.18 Treća relacija je kreirana

Kao što možete videti na slici relacija je kreirana, ali pošto je ovo relacija
n:m kreirana je i nova tabela (vezna tabela), koja je već ranije pomenuta
u tekstu o tipovima relacija. Ova tabela sadrži dva polja Dobavljac_rb i
Artikl_rb. Ako pogledate tabele Dobavljac i Artikl možete primetiti da
su to kopije primarnih ključeva ove dve tabele. SUBP je automatski
kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl što je vrlo
lako uočiti zašto, naravno zbog toga što je ovo vezna tabela koja spaja
ove dve tabele. Takođe automatski su kreirane i dve relacije i dodeljena

- 144 -
im imena Rel_03 i Rel_04. Na način koji je objašnjen ranije promenite
imena ovih relacija u Relacija3 i Relacija4.

Sada je potrebno promeniti i neka svojstva vezne tabele. Pošto je ovde u


pitanju tabela kao i svaka druga bez obzira što ona u ovoj relaciji služi
kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz
padajućeg menija izabrati Edit Object, posle ćega će se na ekranu
pojaviti prozor kao na sledećoj slici:

Slika 11.19 Izmena svojstava vezne tabele

U polje Table Name upišite Dobavljač_Artikl da bi promenili ime


vezne tabele, zatim u polju za rad sa ključevima u delu prozora Indices
dva puta kliknite levim tasterom na ključ
Dobavljac_Has_Artikl_FKIndex1 i na ekranu će se pojaviti prozor kao na
slici:

- 145 -
Slika 11.20 Promena imena ključa

U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1


da bi promenili ime prvog ključa, isti postupak ponovite ponovo i
promenite ime ključa Dobavljac_has_Artikl_FKIndex2 u
Dobavljac_Artikl_FKIndex2.

Ako ste sve uradili kako treba konačna grafička prezentacija ove baze
podataka izgledaće kao na sledećoj slici:

Slika 11.21 Konačna shema BP

- 146 -
I na kraju, sada kada imamo kompletnu bazu podataka grafički
predstavljenu, kao što se može videti na prethodnoj slici, koja se sastoji
od 5 tabela koje su medjusobno povezane, moguće je direktno ovakvu
grafičku predstavu uz pomoć DBDesigner-a automatski prevesti u SQL
naredbe.

Da bi to uradili potrebno je prvo konektovati se na određenu bazu


podataka koja je prethodno kreirana u MySQL-u, a to se radi uz pomoć
menija Database koji možete pogledati kako izgleda na sledećoj slici:

Slika 11.22 Database meni

Da bi se konektovali na određenu bazu potrebno je iz prethodnog menija


izabrati Connect to Database, posle čega će se pojaviti prozor kao na
slici:

Slika 11.23 Konektovanje na postojeću MySQL bazu podataka

- 147 -
Ovde je već kreirana konekcija na bazu podataka koja se zove test.
Ukoliko želite da uspostavite konekciju sa ovom bazom potrebno je samo
da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle
čega će se pojaviti prozor gde će se od vas tražiti da unesete User Name i
Password. U slučaju da želite da kreirate novu konekciju potrebno je da
izaberete opciju New Database Connection posle čega će se na ekranu
pojaviti prozor kao na sledećoj slici:

Slika 11.24 Kreiranje nove konekcije

Kao što vidite na slici, potrebno je zadati u polju Connection Name ime
za novu konekciju koju želite da kreirate, zatim u polje Driver je
potrebno izabrati tip drajvera koji će se koristiti (ovde možete koristiti ili
MySQL drajver koji ne radi baš najbolje ili još bolje klasičan ODBC
drajver, s tim što je u tom slučaju potrebno u Control Panel-u
konfigurisati ODBC). U polju Hostname treba da stoji localhost ukoliko
je baza na istom računaru kao i klijent ili određeni IP broj ukoliko je u
pitanju baza na drugom računaru. Potrebno je u polju Database Name

- 148 -
uneti ime baze koja je prethodno kreirana uz pomoć MySQL-a, kao i
polja User Name i Password koji su neophodni za pristup bazi podataka.
I na kraju se nalazi polje Description koje nije neophodno popunjavati
jer služi čisto kao neki dodatni opis i nema drugu funkciju. Posle izbora
opcije OK u donjem desnom uglu prozora pojaviće se nova konekcija sa
imenom koje će te izabrati a zatim opciju Connect kao što je već ranije
objašnjeno.
Sledeće što je potrebno uraditi posle uspostavljanja konekcije jeste izbor
opcije Database Synchronization iz menija Database (pogledajte sliku
22) i po izboru ove opcije pojaviće se prozor kao na slici:

Slika 11.25 Sinhronizacija sa bazom podataka

- 149 -
Kao što se može videti na slici DBDesigner će na ovaj način kreirati pet
tabela i dodati ih na postojećih 23 koliko ih već ima u bazi podataka (ovo
će se razlikovati u zavisnosti od toga na koju bazu ste bili konektovani
pre poziva ove opcije). Sve što je potrebno uraditi da bi se izvršila
sinhronizacija sa izabranom bazom podataka jesti kliknuti na opciju
Execute posle čega će se izvršiti potrebne SQL naredbe automatski i na
taj način kreirati određene elemente, ili ukoliko oni već postoje, izmeniti
ih ukoliko je to potrebno.

- 150 -

You might also like