23.02.2014 Views

Praktikum Baze SQL.pdf - Univerzitet Singidunum

Praktikum Baze SQL.pdf - Univerzitet Singidunum

Praktikum Baze SQL.pdf - Univerzitet Singidunum

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

FAKULTET ZA POSLOVNU INFORMATIKU<br />

Prof. dr Mladen Veinović<br />

Igor Franc<br />

Aleksandar Jevremović<br />

BAZE PODATAKA<br />

- PRAKTIKUM -<br />

Prvo izdanje<br />

Beograd 2006.


Autori:<br />

Prof. dr Mladen Veinović<br />

Igor Franc<br />

Aleksandar Jevremović<br />

Recenzent:<br />

Prof. dr Milan Milosavljević<br />

Izdavač:<br />

UNIVERZITET SINGIDUNUM<br />

FAKULTET ZA POSLOVNU INFORMATIKU<br />

Za izdavača:<br />

Prof. dr Milovan Stanišić<br />

Dizajn korica:<br />

Aleksandar Mihajlović<br />

Goran Latinović<br />

Godina izdanja:<br />

2006.<br />

Tiraž:<br />

250 primeraka<br />

Štampa:<br />

CICERO-print<br />

Beograd


SADRŽAJ:<br />

1. UVOD U BAZE PODATAKA .............................................. - 1 -<br />

1.1. Uvod .............................................................................................. - 1 -<br />

1.2. Osnovni koncepti i definicije ...................................................... - 3 -<br />

1.2.1. Podatak ......................................................................................................... - 5 -<br />

1.2.2. Informacija .................................................................................................... - 6 -<br />

1.2.3. Metapodaci - podaci o podacima (metadata) ................................................ - 9 -<br />

1.2.4. Sistem za upravljanje bazama podataka...................................................... - 10 -<br />

1.3. Klasičan sistem zasnovan na datotekama ............................... - 12 -<br />

1.3.1. Nedostaci sistema zasnovanog na datotekama ............................................ - 14 -<br />

1.4. Pristup zasnovan na bazama podataka ................................... - 16 -<br />

1.4.1. Prednosti pristupa zasnovanog na bazama podataka .................................. - 17 -<br />

1.4.2. Troškovi i rizici pristupa zasnovanog na bazama podataka ........................ - 19 -<br />

1.5. Primene baza podataka ............................................................. - 21 -<br />

1.5.1. Lične baze podataka ................................................................................... - 21 -<br />

1.5.2. <strong>Baze</strong> podataka za radne grupe..................................................................... - 22 -<br />

1.5.3. <strong>Baze</strong> podataka odeljenja ............................................................................. - 23 -<br />

1.5.4. <strong>Baze</strong> podataka organizacija ........................................................................ - 24 -<br />

1.5.5. Internet, Intranet i Extranet baze podataka ................................................. - 25 -<br />

1.6. Tipično okruženje baze podataka ............................................ - 28 -<br />

1.7. Istorija razvoja baza podataka................................................. - 30 -<br />

1.8. Modelovanje ............................................................................... - 35 -<br />

1.8.1. Razvoj konceptualnih modela ..................................................................... - 36 -<br />

1.8.2. Entiteti ........................................................................................................ - 37 -<br />

1.8.3. Veze između entiteta ................................................................................... - 38 -<br />

1.8.4. Troslojna arhitektura baze podataka ........................................................... - 40 -<br />

1.9. Modeli baza podataka ............................................................... - 42 -<br />

1.9.1. Hijerarhijski model ..................................................................................... - 43 -<br />

1.9.2. Mrežni model .............................................................................................. - 44 -<br />

1.9.3. Relacioni model .......................................................................................... - 45 -<br />

1.9.4. Objektni model ........................................................................................... - 50 -<br />

1.10. Transakcije ............................................................................... - 52 -<br />

1.10.1. Osobine transakcija ................................................................................... - 53 -


1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 -<br />

1.10.3. Konkurentno izvršavanje transakcija ........................................................ - 55 -<br />

1.11. Oporavak baze podataka ........................................................ - 56 -<br />

1.12. Osnovne karaketristike savremenih baza podataka ............ - 56 -<br />

1.13. Zaključak ................................................................................. - 59 -<br />

1.14. Literatura ................................................................................. - 60 -<br />

2. O <strong>SQL</strong>-U ............................................................................... - 61 -<br />

3. INSTALACIJA, KONFIGURISANJE I POKRETANJE<br />

MY<strong>SQL</strong>-A ................................................................................ - 63 -<br />

3.1. Proces isntalacije ....................................................................... - 63 -<br />

3.2. Konfigurisanje My<strong>SQL</strong> servera ............................................... - 68 -<br />

3.3. Pokretanje My<strong>SQL</strong>-a ................................................................ - 73 -<br />

4. <strong>SQL</strong> TIPOVI PODATAKA ................................................ - 75 -<br />

4.1. Numerički tipovi podataka ....................................................... - 75 -<br />

4.2. Tipovi podataka vezani za datum i vreme .............................. - 76 -<br />

4.3. Binarni i tekstualni tipovi podataka ........................................ - 77 -<br />

4.4. Zahtevi pri skladištenju ............................................................ - 79 -<br />

4.5. Izbor adekvatnog tipa podataka .............................................. - 80 -<br />

4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima .. - 81<br />

-<br />

4.7. Unos različitih tipova podataka ............................................... - 82 -<br />

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


5.1. Kreiranje baze podataka .......................................................... - 83 -<br />

5.2. Kreiranje tebele u bazi podataka ............................................. - 84 -<br />

5.3. Naredbe za definisanje podataka ............................................. - 87 -<br />

5.4. Kreiranje indeksa u bazi podataka .......................................... - 88 -<br />

5.5. Kreiranje virtuelne tabele - "pogleda" .................................... - 89 -<br />

5.6. Izmena definicije tabele ............................................................ - 90 -<br />

5.7. Izmena pogleda u bazi podataka .............................................. - 92 -<br />

5.8. Promena imena tabele u bazi podataka................................... - 93 -<br />

5.9. Brisanje tabele iz baze podataka .............................................. - 94 -<br />

5.10. Uklanjanje indeksa iz tabele ................................................... - 95 -<br />

5.11. Uklanjanje baze podataka ...................................................... - 96 -<br />

6. DML (DATA MANIPULATION LANGUAGE) ............. - 97 -<br />

6.1. Manipulisanja podacima .......................................................... - 97 -<br />

6.2. Unos podataka ........................................................................... - 98 -<br />

6.3. Pregled podataka ..................................................................... - 101 -<br />

6.3.1. Klauzula WHERE ..................................................................................... - 105 -<br />

6.3.2. Klauzula DISTINCT ................................................................................. - 108 -<br />

6.3.3. Klauzula LIMIT ........................................................................................ - 109 -<br />

6.3.4. Klauzule GROUP BY / HAVING ............................................................ - 110 -<br />

6.4. Izmena podataka ..................................................................... - 111 -<br />

6.5. Uklanjanje podataka ............................................................... - 115 -<br />

7. DCL (DATA CONTROL LANGUAGE) ........................... - 116 -<br />

7.1. Naredba CREATE USER ....................................................... - 117 -


7.2. Naredba RENAME USER ...................................................... - 118 -<br />

7.3. Naredba DROP USER ............................................................ - 119 -<br />

7.4. Naredba SET PASSWORD .................................................... - 120 -<br />

7.5. Dodela privilegija (GRANT) .................................................. - 121 -<br />

7.6. Oduzimanje privilegija (REVOKE) ...................................... - 124 -<br />

7.7. Primena izmena (FLUSH) ...................................................... - 125 -<br />

8. ZADACI ZA VEŽBU DML .............................................. - 126 -<br />

9. DODATAK ......................................................................... - 128 -<br />

9.1. Izrazi i funkcije ........................................................................ - 128 -<br />

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


PREDGOVOR<br />

Ova skripta je namenjena prevashodno studentima treće godine<br />

Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo<br />

korisna i svima onima koji žele da savladaju sintaksu i tehniku upotrebe<br />

<strong>SQL</strong> jezika za rad sa relacionim bazama podataka. Skripta može da<br />

posluži i kao pomoć profesionalcima u svakodnevnom radu sa bazama<br />

podataka. U praktikumu su na jednom mestu date teorijske osnove baza<br />

podataka, prikazan je My<strong>SQL</strong> DBMS softver i softver za dizajniranje<br />

baza, detaljno je razmatran <strong>SQL</strong> jezik i na kraju su dati praktični primeri.<br />

U skladu sa nastavnim planom i programom predmeta baze podataka, svi<br />

primeri u <strong>SQL</strong> jeziku, koji su dati u praktikumu, mogu se izvršiti na<br />

My<strong>SQL</strong> DBMS-u. Moguća su manja odstupanje od sintakse standardnog<br />

<strong>SQL</strong>-a koja ni do danas nije potpuno i precizno definisana.<br />

Skripta je podeljena u nekoliko celina. Prvi deo predstavlja<br />

teorijski uvod u baze podataka. Drugi deo je uvod u <strong>SQL</strong> jezik, a u<br />

trecem delu prikazuju se i objašnjavaju tipovi podataka koje My<strong>SQL</strong><br />

koristi. U četvrtom delu se obrađuju naredbe za definisanje podataka, a u<br />

petom delu se obrađuju naredbe za manipulaciju podacima, koji je u<br />

stvari i najvažniji i najopširniji deo ove skripte. Na kraju su obrađene<br />

naredbe za kontrolne (upravljačke) funkcije. Prvih pet delova su<br />

namenjeni svim korisnicima dok je šesti deo, dodela i oduzimanje prava<br />

korisnicima, specifičan i potreban samo administratorima baza podataka.<br />

U dodatku su nabrojane i objašnjene pojedine funkcije koje<br />

mogu biti veoma korisne u radu sa ovim sistemima za upravljanje<br />

bazama podataka.<br />

Autori su se potrudili da primeri budu što jasniji, izloženi po<br />

redosledu i da su povezani, tako da kada se redom unose grade<br />

kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje<br />

modifikacije se može primeniti i u praksi.<br />

Pošto je ovo prvo izdanje praktikuma, svi saveti i eventualne<br />

primedbe na tekst su dobrodošle.<br />

Beograd, oktobar 2006. godine<br />

Autori


1. UVOD U BAZE PODATAKA<br />

1.1. Uvod<br />

<strong>Baze</strong> podataka se koriste za prikupljanje, čuvanje i manipulaciju<br />

podacima na osnovu kojih se dobijaju nove informacije u različitim<br />

organizacijama, kao što su poslovni sistemi, zdravstvo, školstvo, vladine<br />

institucije itd. Svakodnevno ih koriste pojedinci putem ličnih računara,<br />

radne grupe putem mrežnih servera i svi zaposleni putem aplikacija koje<br />

se nalaze u poslovnim sistemima. Bazama podataka takođe pristupaju<br />

kupci i drugi udaljeni korisnici korišćenjem različitih tehnologija kao što<br />

su govorni automati, web čitači (browser-i), digitalni telefoni i sl. Zbog<br />

velike konkurencije u svim oblastima poslovanja, može se očekivati da<br />

tehnologija baza podataka dobije još veći značaj. Menadžeri traže način<br />

da iz baze podataka brže dođu do novih saznanja kako bi bili u prednosti<br />

u odnosu na svoju konkurenciju. Na primer, detaljna baza podataka o<br />

prodaji se može iskoristiti kako bi se saznalo koji kupci kupuju koje<br />

proizvode, što se koristi kao osnova za reklamu i marketinšku kampanju.<br />

Organizacije mogu da uključe u svoje baze podataka procedure koje se<br />

zovu okidači - trigeri (alerts) koji upozoravaju o mogućim vanrednim<br />

događajima (kao što su predstojeći nedostatak zaliha neke robe ili šansa<br />

za prodaju dodatne količine robe) i na osnovu kojih mogu nastati<br />

odgovarajuće reakcije. Mnoge organizacije danas prave posebne baze<br />

podataka koje se zovu „skladišta podataka“ (data werehouses) koje služe<br />

za aplikacije za podršku u odlučivanju.<br />

Izučavanje baza podataka i sistema za upravljanje bazama podataka jesu<br />

osnova za izučavanje informacionih sistema. Stručnjak za informacione<br />

sisteme mora biti spreman da analizira potrebe preduzeća i da dizajnira i<br />

implementira baze podataka u okviru razvoja informacionog sistema<br />

jedne organizacije. Takođe, mora biti spreman da se konsultuje sa<br />

krajnim korisnicima i da im pokaže kako se korišćenjem baza podataka<br />

može imati bolja podrška za odlučivanje, čime se stvara prednost nad<br />

konkurencijom. Široko rasprostranjeno korišćenje baza podataka vezanih<br />

za Internet sajtove, koji vraćaju dinamičke informacije korisnicima web<br />

sajta, zahteva od projektanta da razume ne samo kako da poveže bazu<br />

- 1 -


podataka sa sajtom već i kako da je obezbedi tako da se njenom sadržaju<br />

može pristupiti ali ne i izmeniti od strane spoljnih korisnika.<br />

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

je skup podataka koji su organizovani prema potrebama korisnika, koji se<br />

održavaju i koji se koriste za dobijanje informacija. Moderne baze<br />

podataka se čuvaju na računaru, ali to nije bitno za samu definiciju. Na<br />

primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima,<br />

telefonski imenik itd. su takođe baze podataka (mada ih većina ljudi tako<br />

ne zove). Međutim, smeštanje baze podataka na računar omogućava<br />

lakšu i bržu obradu podataka i dobijanje željene informacije.<br />

Karakterističan je primer sa telefonskim imenikom koji se nalazi na<br />

papiru. Jednostavno je pronaći telefonski broj željene osobe, ali je znatno<br />

teže pronaći ime osobe na osnovu telefonskog broja. Ako je telefonski<br />

imenik veći (više smeštenih podataka) prethodni problem se dodatno<br />

usložnjava. Računarski zasnovane baze podataka omogućavaju<br />

jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz<br />

odgovarajuće baze podataka se mogu dobiti i posebne informacije. Na<br />

primeru telefonskog imenika mogu se izlistati podaci za sve osobe po<br />

imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj<br />

počinje npr. sa 2, osobe kojima se telefonski broj završava sa 45 i još<br />

mnogo toga.<br />

Na razvoj baza podataka presudno je uticao razvoj računara, računarskih<br />

mreža, kao i klijent/server obrade. Istraživanje, projektovanje i upotreba<br />

baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao što su:<br />

smanjeni troškovi održavanja; smanjena potreba za mrežnim resursima;<br />

poboljšan integritet podataka; donošenje ispravnih odluka na osnovu<br />

objektivnih informacija, brža reakcija na tržištu, itd.<br />

Baza podataka smeštena u računaru, predstavljena je nizom bita,<br />

organizovanih u bajtove, a sa više bajtova u odgovarajućem formatu<br />

zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze<br />

podataka. Niz polja se organizuje u zapise (rekorde) koji imaju značenje<br />

jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke<br />

veze izmedju objekata realnog sveta. Zapisi istog formata se slažu i čine<br />

datoteke, koje su fizički zapisane na disku. Baza podataka obuhvata više<br />

povezanih datoteka i može biti centralizovana na jednom računaru ili<br />

distribuirana na više međusobno udaljenih računara. Pored podataka koji<br />

su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju<br />

- 2 -


pojedinačne datoteke, njene osobine, karakteristični parametri iz<br />

datoteka, uspostavljene međusobne veze, pravila koja se odnos na pojave<br />

koje postoje i u realnom svetu i sl. Takvi podaci se zovu meta-podaci<br />

(metadata), tj. podaci o podacima. Koriste se pri pokretanju rada sa<br />

bazom podataka, kako bi se mogli učitati svi konfiguracioni podaci<br />

odgovarajuće baze (self-describing).<br />

Slika 1.1 <strong>Baze</strong> podataka nekada i danas<br />

1.2. Osnovni koncepti i definicije<br />

Baza podataka se može definisati kao organizovani skup logički<br />

povezanih podataka. Ona može biti bilo koje veličine i kompleksnosti.<br />

Na primer, prodavac može da ima malu bazu podataka vezanu za kupce<br />

na svom notebook računaru koja se sastoji od nekoliko megabajta<br />

podataka. Preduzeće koje zapošljava hiljadu i više ljudi može da ima<br />

veoma veliku bazu podataka od nekoliko terabajta podataka (jedan<br />

terabajt = 10 12 bajtova) na mainframe kompjuteru na kome se nalazi<br />

aplikacija za podršku odlučivanju. Veoma velika skladišta podataka<br />

imaju više od petabajta podataka (1 petabajt = 10 15 bajtova). U širem<br />

smislu, bazu podataka možemo posmatrati kao integrisani skup podataka<br />

o nekom sistemu i skup postupaka za njihovo održavanje i korišćenje,<br />

organizovan prema potrebama korisnika. To je dobro struktuirana<br />

- 3 -


kolekcija podataka, koja postoji jedno određeno vreme, koja se održava i<br />

koju koristi više korisnika ili programa.<br />

- 4 -


1.2.1. Podatak<br />

Istorijski, pod terminom podatak se podrazumeva činjenica o nekom<br />

predmetu i/ili događaju koja se može zabeležiti i sačuvati na računaru.<br />

Na primer, u bazi podataka nekog prodavca podaci bi bile činjenice kao<br />

što su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove<br />

struktuirani podatak. Najvažniji struktuirani podaci su brojevi, karakteri i<br />

datumi (vreme). Današnje baze podataka pored struktuiranih podataka<br />

sadrže i druge vrste podataka kao što su razna dokumenta, mape,<br />

fotografije, zvuk, čak i video zapise. Na primer, u bazi podataka nekog<br />

prodavca mogla bi se naći i slika kupca. Takođe bi se mogao naći zvučni<br />

ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se<br />

naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni<br />

podaci se najčešće mogu naći na web serverima i u Internet bazama<br />

podataka.<br />

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

događaja koja ima smisla i važnosti za korisnika baze podataka. Ova<br />

definicija uključuje i struktuirane i nestruktuirane podatke. Često se u<br />

okviru jedne baze podataka mogu naći kombinovani struktuirani i<br />

nestruktuirani podaci kako bi se stvorilo multimedijalno okruženje. Na<br />

primer, automehaničarska radnja može kombinovati struktuirane podatke<br />

(koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika<br />

automobila i skenirana kopija osiguranja).<br />

Pod podatkom se podrazumeva činjenica prihvaćena kao takva tj. kakva<br />

jeste. Podatak sam po sebi nema značenje, tek kada se interpretira nekom<br />

vrstom sistema za obradu podataka poprima značenje i postaje<br />

informacija. Tipično, termin “podatak” se odnosi na ono što je u bazi<br />

podatak. Dakle, podatak je sirova činjenica - neobrađena informacija.<br />

Računar vrši obradu podataka, prema zadatom programu, te se na osnovu<br />

saznanja sadržanih u podacima, a kao rezultat njihove obrade, stiču nova<br />

saznanja - informacije.<br />

- 5 -


1.2.2. Informacija<br />

Termini podatak i informacija su usko povezani i često se koriste kao<br />

sinonimi. Međutim, korisno je razlikovati termine podatak i informacija.<br />

Informaciju definišemo kao podatak koji je bio obrađen na takav način da<br />

se znanje osobe koja koristi podatak povećalo. Na primer, razmotrimo<br />

sledeći spisak činjenica:<br />

Petar Petrović 150698371<br />

0325<br />

Marko Marković 021197985<br />

0123<br />

Janko Janković 111298583<br />

0456<br />

- - - - - - - - - - - - - - - - - - -<br />

- - -<br />

Slika 1.1 Skup podataka<br />

Prikazane činjenice po definiciji pretstavljaju podatke, ali bi se većina<br />

složila da su ovi podaci u sadašnjoj formi beskorisni. Čak iako<br />

pretpostavljamo da se radi o imenima osoba i njihovim matičnim<br />

brojevima, podaci ostaju beskorisni jer ne znamo čemu služe. Pogledajte<br />

šta se događa kada stavimo ove iste podatke u kontekst, kao što je<br />

pokazano na slici 1.2. Dodavanjem još nekoliko dodatnih podataka i<br />

njihovim uređivanjem, prepoznajemo spisak upisanih studenata. Na ovaj<br />

način se dolazi do informacije koja je korisna npr. upravi fakulteta,<br />

profesorima, studentskoj službi i sl.<br />

Ime i prezime JMBG Smer Godina upisa<br />

Petar Petrović 1506983710325 PP 2002<br />

Marko Marković 0211979850123 RGD 2001<br />

Janko Janković 1112985830456 PP 2001<br />

- - - - - - - - - - - - - - - - - - - - - - RGD 2003<br />

- 6 -


Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu<br />

Drugi način da se iz podataka dobiju informacije je da se podaci sumiraju<br />

ili na neki drugi način obrade i prezentuju. Na primer, na slici 1.3 se vide<br />

sumirani podaci o upisu studenata prezentirani u vidu grafičke<br />

informacije. Ova informacija se može iskoristiti kao osnova za<br />

odlučivanje o dodavanju novih predavanja ili o zapošljavanju novog<br />

nastavnog kadra. Moderne baze podataka vrlo često sadrže i podatke i<br />

informacije. Podaci se često obrađuju i čuvaju u obrađenoj formi i služe<br />

za pomoć pri donošenju odluka, a takvim podacima (informacijama) se<br />

najbrže pristupa.<br />

- 7 -


Broj upisanih studenata po školama<br />

Ostali; 63<br />

Ekonomska<br />

škola; 45<br />

Gimnazija;<br />

58<br />

Tehnička<br />

škola; 79<br />

Gimnazija<br />

Tehnička škola<br />

Ekonomska škola<br />

Ostali<br />

Broj upisanih studenata po godinama<br />

300<br />

250<br />

245<br />

200<br />

198<br />

150<br />

125<br />

Broj upisanih studenata<br />

100<br />

76<br />

50<br />

30<br />

0<br />

2001 2002 2003 2004 2005<br />

Slika 1.3 Grafički prikaz podataka iz BP - informacija o upisu<br />

Podaci obrađeni tako da dobijaju značenje čine informaciju. Informacija<br />

koja je precizna, relevantna, i dobijena na vreme je ključ za donošenje<br />

dobre odluke.<br />

- 8 -


Slika 1.4 Obradom prikupljenih podataka nastaje informacija<br />

1.2.3. Metapodaci - podaci o podacima (metadata)<br />

Podaci koji se prikupljaju i čuvaju u bazi podataka često se nazivaju i<br />

podaci krajnjih korinika (end user data). Metapodaci su podaci koji<br />

opisuju svojstva ili karakteristike podataka krajnjih korisnika i kontekst<br />

tih podataka. Neka tipična svojstva podataka su naziv (ime) podatka,<br />

definicija, dužina (veličina), i dozvoljene vrednosti. Kontekst podataka,<br />

koji opisuju metapodaci, podrazumeva izvor podataka, gde se čuvaju<br />

podaci, vlasništvo i korišćenje.<br />

Tabela 1.1 Primer metapodataka<br />

Naziv Tip Duž. Min Max Opis Izvor<br />

Ime Text 30 Ime i prezime Lična karta<br />

studenta<br />

JMBG Integer 1 Jedinstven Lična karta<br />

matični broj<br />

Smer CHAR 3 Smer na<br />

fakultetu<br />

Strudentska<br />

služba<br />

GdUpisa Number 2001 Godina upisa Studentska<br />

služba<br />

Metapodaci opisuju svojstva podatka ali se nalaze odvojeno od tog<br />

podatka. Metapodaci iz tabele1.1 ne prikazuju ni jedan podatak. Oni<br />

omogućavaju dizajnerima i korisnicima baza podataka da razumeju koji<br />

- 9 -


podaci postoje u bazi, šta oni znače, i koja je razlika između podataka<br />

koji na prvi pogled izgledaju isto. Upravljanje metapodacima je veoma<br />

bitno jer podaci bez jasnog značenja mogu biti zbunjujući, pogrešno<br />

protumačeni ili puni grešaka.<br />

1.2.4. Sistem za upravljanje bazama podataka<br />

Sistem za upravljanje bazama podataka (DBMS - Data Base<br />

Management System) je softverski sistem koji se koristi za kreiranje,<br />

održavanje i manipulisanje podacima, kao i za kontrolu prava pristupa<br />

bazi podataka. DBMS omogućava krajnjim korisnicima i programerima<br />

da dele podatke, tj. omogućava da se podaci koriste od strane više<br />

aplikacija, a ne da svaka aplikacija ima svoju kopiju podatka sačuvanu u<br />

posebnim datotekama. DBMS takođe pruža mogućnost kontrole pristupa<br />

podacima, osigurava integritet podataka, uspostavlja kontrolu<br />

konkurentnosti i vrši oporavak baze podataka. Programeri aplikacija za<br />

rad sa bazama podataka ne moraju da poznaju detalje o načinu zapisa<br />

baze podataka na disku, ne moraju da formulišu algoritme za efikasan<br />

pristup podacima, niti su opterećeni bilo kakvim aspektima oko<br />

upravljanja podacima u bazi podataka.<br />

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

stvari, zajednički resurs koga istovremeno (konkurentno) koristi veći broj<br />

programa, jer se pravi efekti baze podataka ispoljavaju kada se radi u<br />

mrežnom okruženju. Posmatrajmo bazu podataka jedne banke u kojoj se<br />

nalaze računi građana. Moguće je da se u istom trenutku na šalteru u<br />

jednoj ekspozituri podiže novac sa jednog računa i uplaćuje na drugi<br />

račun, a da se istovremeno u sasvim drugoj ekspozituri uplaćuje novac na<br />

isti taj račun. Pomenuti DBMS je upravo tu da upravlja konkurentnim<br />

radom više korisnika i da obezbeđuje sinhronizaciju njihovog rada.<br />

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

integritet baze, nekonzistentno stanje baze...) pri promenama<br />

(transakcijama) koje se vrše nad bazom podataka u višekorisničkom<br />

okruženju. U tu svrhu postoje razne tehnike kao što su tehnika<br />

zaključavanja podataka, tehnika vremenskog markiranja itd. Posebno je<br />

značajno upravljanje istovremenim (konkurentnim) transakcijama.<br />

Tačnost, zaštita i dostupnost baza podataka, kao i korektnost i<br />

performanse transakcija koje pristupaja tim bazama su bitni parametri za<br />

- 10 -


uspeh svakog poslovnog sistema.Termini baza podataka i upravljanje<br />

bazom podataka se ponekad mešaju. Stručno govoreći, baza podataka je<br />

uvek skup činjenica, a ne računarski program.<br />

DBMS je uveden kao interfejs između korisnika (korisničkih programa,<br />

aplikacija) i zapisa baze podataka na disku. Korisnički programi ne<br />

pristupaju podacima direktno, već komuniciraju sa ovim softverom<br />

(programom). DBMS upravlja strukturom baze podataka: definiše<br />

objekte baze, njihova svojstva (atribute), dozvoljene vrednosti atributa,<br />

veze između objekata, ograničenja nad objektima i međusobnim vezama.<br />

Omogućava manipulaciju podacima u bazi: unošenje, brisanje i izmene,<br />

tj. omogućava njeno održavanje. Kontroliše pristup podacima: ko može<br />

da pristupi podacima, kojim podacima i šta može sa njima da radi..<br />

DBMS dozvoljava deljenje BP između više aplikacija/korisnika i čini<br />

upravljanje podacima uspešnijim i delotvornijim Uobičajeno je da kada<br />

se govori o softveru za baze podataka, onda se misli upravo na DBMS.<br />

DBMS upravlja interakcijom između krajnjih korisnika (aplikacija) i<br />

baze podataka. Krajnji korisnici imaju bolji pristup većem broju bolje<br />

organizovanih podataka<br />

Aplikacija X<br />

Aplikacija Y<br />

Aplikacija Z<br />

Data Base Management System<br />

Baza podataka<br />

Baza podataka – podaci na disku<br />

Slika 1.5 DBMS je interfejs između (aplikacija) korisnika i zapisa baze<br />

podataka na disku<br />

- 11 -


1.3. Klasičan sistem zasnovan na datotekama<br />

Kada su se računari počeli koristiti za obradu podataka, nisu postojale<br />

baze podataka. Računari su u to vreme bili znatno slabiji nego današnji<br />

personalni računari, zauzimali su čitavu prostoriju i koristili su se skoro<br />

isključivo za naučna izračunavanja. Postepeno su računari uvođeni u<br />

poslovni svet. Da bi bili od koristi za poslovne aplikacije, računari<br />

moraju da skladište, manipulišu, i preuzimaju velike datoteke podataka.<br />

Kako su poslovne aplikacije postajale sve kompleksnije, postalo je<br />

očigledno da klasični sistemi zasnovani na datotekama imaju veliki broj<br />

nedostataka i ograničenja. U većini bitnih poslovnih aplikacija danas se<br />

umesto klasičnog sistema zasnovanog na datotekama koriste baze<br />

podataka.<br />

Klasičan sistem obrade podataka zasnovan na datotekama i programskim<br />

jezicima prikazan je blok šemom na sledećoj slici. Programi su direktno<br />

povezani sa datotekama, svaki program mora da poznaje detaljan zapis<br />

podataka na disku<br />

.<br />

Aplikacija X<br />

Aplikacija Y<br />

Aplikacija Z<br />

Datoteka X1<br />

Datoteka X2<br />

Datoteka Y4<br />

Datoteka Y5<br />

Datoteka X3<br />

Datoteke – podaci na disku<br />

Datoteka Z1<br />

Datoteka Z2<br />

Datoteka Z3<br />

Slika 1.6 Klasičan sistem obrade podataka zasnovan na programskim<br />

jezicima i datotekama<br />

Da bi objasnili osnovne karakteristike sistema zasnovanog na<br />

datotekama, posmatrajmo jednu fabriku sa određenim proizvodnim<br />

programom. Pretpostavimo da su nabavljene računarske aplikacije za<br />

- 12 -


vođenje poslovanja ove fabrike realizovane na klasičnim sistemima koji<br />

se zasnivaju na datotekama. Ovaj pristup dizajnu informacionog sistema<br />

se fokusira na potrebe za obradom podataka pojedinačnih odeljenja, a ne<br />

na potrebe organizacije kao celine. Kada bi se kod korisnika javila<br />

potreba za novim sistemima pisali bi se novi računarski programi za<br />

individualne aplikacije kao što su kontrola proizvoda, prijem računa, ili<br />

kadrovski poslovi. Svaki od programa pravi se tako da odgovara<br />

potrebama određenog odeljenja ili radne grupe. Prema tome, ne postoji<br />

opšti plan, mapa ili model kojim bi se rukovodili za planiranje razvoja<br />

sistema. Tri računarske aplikacije (A, B i C) pomoću kojih se obrađuju<br />

podaci zapisani u datotekama su prikazane na slici 1.7. Programima se<br />

održavaju tri nezavisna sistema porudžbine, naplate i plate. Na slici se<br />

takođe vide osnovne datoteke vezane za svaku aplikaciju. Na primer,<br />

proces porudžbina ima tri datoteke: podaci o kupcu, podaci o<br />

proizvodima, podaci o porudžbinama. Neke od datoteka se ponavljaju u<br />

sva tri procesa (redudansa) što je tipično za sistem obrade podataka koji<br />

se zasniva na datotekama.<br />

Slika 1.7 Klasična obrada podataka zasnovana na sistemu datoteka<br />

- 13 -


1.3.1. Nedostaci sistema zasnovanog na datotekama<br />

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

datotekama i klasičnim programskim jezicima. Ove mane za primer<br />

prikazan na slici 1.7 kratko su opisane u nastavku.<br />

• Zavisnost između programa i podataka<br />

Opisi datoteka se čuvaju u okviru svakog programa koji pristupa toj<br />

datoteci. Na primer, u procesu porudžbine sa slike 1.7 program A<br />

pristupa datoteci sa podacima o kupcu. Stoga, ovaj program sadrži<br />

detaljan opis datoteke. Kao posledica ovoga, svaka promena koja se<br />

napravi u datoteci, a odnosi se na strukturu, momentalno<br />

podrazumeva da se mora menjati i opis datoteka u svakom programu<br />

koji pristupa tim podacima. Primetite na slici 1.7 da se podaci o<br />

kupcima nalaze i u procesu porudžbine i u procesu naplate.<br />

Pretpostavimo da se veličina polja "adresa kupca" menja sa 20<br />

karaktera na 30 karaktera. Opis datoteke u svakom programu (možda<br />

čak u svih tri) se mora ažurirati. Često je teško i samo lociranje svih<br />

programa na koje je uticala ovakva promena. Što je još gore, pri<br />

ažuriranju se često prave greške.<br />

• Redudansa podataka<br />

Kako se u prikazanom sistemu procesi odvijaju nezavisno jedni od<br />

drugih, ponavljanje podataka nije izuzetak već je pravilo. Na primer,<br />

na slici 1.7 proces porudžbina ima datoteke sa osnovnim podacima o<br />

proizvodima dok proces naplate ima datoteku o cenama proizvoda.<br />

Dakle, obe ove datoteke sadrže podatke o istim proizvodima kao što<br />

su: cena po jedinici proizvoda, opis proizvoda, i količina u skladištu.<br />

Zbog nepotrebnih duplikata potreban je veći prostor za njihovo<br />

čuvanje kao i više truda i rada pri njihovom ažuriranju. Neplanirana<br />

redudansa podataka može da dovede do gubitka podataka. Na primer,<br />

isti podaci mogu se voditi pod različitim imenima atributa u<br />

različitim dokumentima, ili obrnuto, isto ime se može koristiti za<br />

različite vrste podataka.<br />

- 14 -


• Ograničenost deljenja podataka<br />

Korišćenjem klasičnog sistema zasnovanog na datotekama, svaki<br />

proces ima svoje datoteke i korisnici nemaju šansu da međusobno<br />

dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da<br />

radnici u računovodstvu imaju pristup samo procesu naplate, dok<br />

nemaju pristup procesima porudžbina i plata. Menadžeri su imali<br />

velike probleme pri sastavljenju izveštaja za koje su im bili potrebni<br />

podaci iz različitih procesa, jer bi se često desilo da su dokumenta<br />

nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti<br />

podaci sakupili u jedan izveštaj. Takođe, dodatni problem je bio u<br />

tome što su se željeni podaci često nalazili u različitim odeljenjima<br />

organizacije.<br />

• Dugo vreme za razvoj<br />

Sa klasičnim sistemom zasnovanom na datotekama postoji mala<br />

šansa za korišćenje prethodnih razvojnih dostiguća. Svaka nova<br />

aplikacija zahteva od projektanta da krene od nule. Svaki put je<br />

neophodno definisati nove formate i opise podataka i pisati kod za<br />

pristup podacima za svaki program. Ovako veliko potrebno vreme za<br />

razvoj nije u skladu sa današnjim poslovnim potrebama, gde je svaki<br />

minut bitan da bi se postigao uspeh.<br />

• Teško održavanje programa<br />

Skup svih prethodno navedenih nedostataka dovodi do preterane<br />

potrebe za održavanjem programa. Čak 80% budžeta predviđenog za<br />

razvoj sistema zasnovanog na datotekama odlazi na njegovo<br />

održavanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj<br />

novih aplikacija.<br />

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

datotekama, koje smo u prethodnom delu teksta pominjali, mogu isto<br />

tako biti ograničenja za bazu podataka, pogotovo ako se ne promeni<br />

pristup razvoju baze podataka. Na primer, ukoliko preduzeće razvije<br />

nekoliko zasebnih baza podataka (recimo, za svaku radnu jedinicu ili<br />

proces po jednu bazu) sa malom ili nikakvom vezom između njih, onda<br />

može doći do bespotrebnog ponavljanja istih podataka, ograničenja<br />

deljenja podataka, produžavanja vremena potrebnog za razvoj i preterane<br />

potrebe za održavanjem programa.<br />

- 15 -


1.4. Pristup zasnovan na bazama podataka<br />

Pristup zasnovan na bazama podataka potencira integraciju i deljenje<br />

podataka između svih odeljenja jedne organizacije. Ovaj pristup zahteva<br />

potpunu promenu u načinu razmišljanja, počevši od najvišeg nivoa<br />

upravljanja. Takva promena načina razmišljanja za većinu organizacija je<br />

veoma teška.<br />

Da bi objasnili pristup zasnovan na bazama podataka posmatrajmo<br />

prethodno razmatrani zastareli informacioni sistem fabrike koji se<br />

klasično zasnivao na datotekama. Koncept pristupa razvoju<br />

informacionog sistema zasnovanog na bazama podataka prikazan je na<br />

slici 1.8. Odmah se može uočiti da podaci koji su prethodno čuvani u više<br />

različitih datoteka, sada su integrisani u jedinstvenu bazu podataka.<br />

Takođe, metapodaci koji opisuju ove podatke se nalaze zajedno sa njima<br />

u bazi podataka. Sistem za upravljanje bazama podataka pruža<br />

mogućnost stvaranja različitih pogleda na istu bazu podataka (ili baze<br />

podataka) za različite korisnike u organizaciji. DBMS dozvoljava<br />

korisnicima da dele, pretražuju, pristupaju i ažuriraju integrisanim<br />

podacima.<br />

Slika 1.8 Blok šema informacionog sistema zasnovanog na bazama<br />

podataka<br />

- 16 -


1.4.1. Prednosti pristupa zasnovanog na bazama podataka<br />

Pristup zasnovan na bazama podataka ima mnogo potencionalnih<br />

prednosti u odnosu na pristup zasnovan na datotekama. Te potencionalne<br />

prednosti su sledeće:<br />

• Nezavisnost između programa i podataka<br />

Odvajanje metapodataka od aplikacija koje koriste podatke naziva<br />

se nezavisnost podataka. Ova osobina kod baza podataka<br />

dozvoljava promenu i prenos podataka organizacije na druge<br />

računarske sisteme bez potrebe za promenom programa koji<br />

obrađuje ove podatke.<br />

• Minimalna redudansa podataka<br />

Cilj pristupa zasnovanog na bazama podataka je da se podaci koji<br />

su se u prethodnom pristupu čuvali odvojeno (i više puta su zbog<br />

toga ponavljani) sada integrišu u jedinstvenu logičku strukturu.<br />

Svaki podatak se nalazi samo na jednom mestu u bazi podataka.<br />

Pristup zasnovan na bazama podataka ne uklanja redudansu u<br />

potpunosti, ali omogućava projektantu baze podataka da pažljivo<br />

isplanira vrstu i količinu redudanse. U nekim slučajevima je<br />

poželjno napraviti ograničenu redudansu kako bi se performanse<br />

baze podataka poboljšale (npr. brža pretraga).<br />

• Poboljšana konzistentnost podataka<br />

Eliminisanjem (ili kontrolisanjem) redudanse podataka, u velikoj<br />

meri se smanjuju šanse za nekonzistentnošću podataka. Na<br />

primer, ukoliko je adresa kupca zapisana na samo jednom mestu<br />

ne može da postoji ne podudaranje u podacima u bazi podataka.<br />

Takođe, ažuriranje podataka je u velikoj meri uprošćeno, kada je<br />

svaka vrednost zapisana na samo jednom mestu. Na kraju,<br />

uklanjanjem redudanse podataka dolazi do uštede memorije.<br />

- 17 -


• Poboljšana razmena podataka<br />

Baza podataka je dizajnirana kao resus organizacije koji koriste<br />

svi njeni zaposleni (kojima je ona neophodna u opisu posla).<br />

Određenim internim i eksternim korisnicima je dozvoljeno<br />

korišćenje baze podataka, i svaki od njih (bio u pitanju jedan<br />

korisnik ili grupa) ima jedan ili više pogleda koji mu olakšavaju<br />

korišćenje baze podataka. Korisnički pogled je logički opis<br />

jednog dela baze podataka koji je neophodan korisniku da obavi<br />

neki zadatak.<br />

• Povećana produktivnost u razvoju aplikacija<br />

Velika prednost pristupa zasnovanog na bazama podataka je ta što<br />

se u znatnoj meri smanjuju troškovi i vreme potrebno za razvoj<br />

novih poslovnih aplikacija. Postoje dva važna razloga zašto se<br />

aplikacije baza podataka razvijaju znatno brže nego kod klasičnih<br />

sistema sa datotekama:<br />

1. Pretpostavljajući da su baza podataka i sve propratne<br />

aplikacije već napravljene i implementirane, programer<br />

se može koncetrisati na određenu funkciju koja je<br />

neophodna za novu aplikaciju, a ne mora da razmišlja o<br />

definisanju podataka ili o detaljima vezanim za<br />

implementaciju.<br />

2. DBMS pruža veliki broj alata za izveštavanje, kao što su<br />

generatori formi i izveštaja, i jezike uz pomoć kojih se<br />

automatizuju neke od aktivnosti kao što su dizajn i<br />

implementacija baza podataka.<br />

• Smanjena potreba za održavanjem programa<br />

Sačuvani podaci se moraju često menjati iz velikog broja razloga:<br />

nove vrste podataka se dodaju, formati podataka se menjaju, i<br />

tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu<br />

godinu, kada se sa uobičajenog sistema prikazivanja godina sa<br />

dve cifre moralo preći na četiri cifre. U sistemu obrade datoteka,<br />

metapodaci i logika pristupanju podacima se nalaze u<br />

individualnim aplikacionim programima (ovo je zavisnost između<br />

programa i podataka o kojoj je ranije bilo reči). Kao rezultat<br />

ovoga, promena formata podataka i metoda pristupanja<br />

momentalno dovodi do potrebe menjanja aplikativnih programa.<br />

- 18 -


Kod baza podataka, podaci su znatno više nezavisni od<br />

aplikativnih programa koji ih koriste. U okviru određenih granica,<br />

možemo da promenimo jednu od stavki, format podataka ili<br />

aplikativni program, a da ne moramo da promenimo drugu<br />

stavku. Kao rezultat ovoga, javlja se smanjenje potreba za<br />

održavanjem programa.<br />

1.4.2. Troškovi i rizici pristupa zasnovanog na bazama<br />

podataka<br />

U prethodnom delu teksta navedeno je nekoliko glavnih potencijalnih<br />

prednosti pristupa zasnovanog na bazama podataka. Međutim, kod<br />

velikog broja organizacija bilo je različitih problema kod ostvarenja i<br />

iskorišćenja tih prednosti. Na primer, postizanje nezavisnosti podataka (i<br />

stoga, smanjene potrebe za održavanjem programa) se pokazalo kao<br />

teško ostvarivo zbog ograničenja starijih modela baza podataka i softvera<br />

za upravljanje bazama podataka. Na sreću, relacioni modeli (kao i noviji<br />

objektno-orjentisani modeli) nemaju ovih problema. Drugi razlog za<br />

neuspeh da se iskoriste ove prednosti, je loše planiranje i implementacija<br />

baza podataka – čak ni najbolji softver za upravljanje bazama podataka<br />

ne može da prevaziđe ovakve manjkavosti. Pristup zasnovan na bazama<br />

podataka sadrži neke dodatne troškove i rizike koji se moraju rešavati<br />

kada se sistem počne primenjivati.<br />

• Novo, obučeno osoblje<br />

Često se dešava da preduzeće, koje se odluči za pristup zasnovan<br />

na bazama podataka, mora da anagažuje ili obuči ljude za<br />

projektovanje, implementiranje i održavanje baza podataka, kao i<br />

da te ljude uključi u postojeću radnu organizaciju. Dalje, zbog<br />

čestih izmena i brzine razvoja tehnologije, znanje ovog novog<br />

osoblja zahteva stalnu nadgradnju i unapređivanje. Jedino<br />

obučeno osoblje može da izvuče maksimum korisnosti iz novih<br />

tehnologija.<br />

- 19 -


• Troškovi i složenost instaliranja, upravljanja i rada sistema sa<br />

bazama podataka<br />

Višekorisnički sistem za upravljanje bazama podataka je veliki i<br />

složen softver koji u startu mnogo košta, zahteva obučeno osoblje<br />

za instaliranje i rad i ima značajne godišnje troškove za<br />

održavanje i tehničku podršku. Instaliranje ovakvog sistema može<br />

zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju,<br />

da bi se mogle pratiti nove verzije i nadogradnje softvera. Takođe<br />

se može pojaviti potreba za dodatnim i skupljim softverom za<br />

baze podataka radi veće sigurnosti podataka.<br />

• Troškovi prilagođavanja (konvertovanja) podataka<br />

Termin nasleđeni sistemi se uglavnom koristi kada se govori o<br />

starijim aplikacijama u preduzeću koje su bazirane na datotečnom<br />

pristupu ili starijim bazama podataka. Troškovi prilagođavanja<br />

ovakvih starijih sistema za rad sa modernim bazama podataka<br />

(mereni u novcu, vremenu i zahtevnosti posla) često deluju kao<br />

velika prepreka za preduzeće.<br />

• Potreba za izradom sigurnosnih kopija i oporavkom<br />

podataka (backup)<br />

Deljena baza podataka preduzeća uvek mora biti tačna i dostupna.<br />

To zahteva razvijanje i korišćenje jasnih procedura izrade<br />

sigurnosnih kopija kao i oporavak baze podataka kada neko<br />

oštećenje nastane. U današnjem okruženju, gde postoje raznovrsni<br />

bezbednosni rizici, rešavanje ovog problema je od izuzetne<br />

važnosti. Moderan sistem za upravljanje bazama podataka obično<br />

sam obavlja izradu sigurnosnih kopija i oporavak podataka u<br />

slučaju havarija.<br />

• Konflikti u organizaciji<br />

Deljena baza podataka zahteva saglasnost u vezi sa definicijama i<br />

vlasništvom podataka, kao i utvrđenu osobu ili osobe odgovorne<br />

za održavanje podataka. Iskustvo je pokazalo da nesuglasice u<br />

pogledu definicija podataka, formata i kodiranja podataka, prava<br />

na ažuriranje deljenih podataka i sl. su česta i vrlo teška tema za<br />

rešavanje. Da bi se ovi problemi rešili potrebno je da je<br />

organizacija u potpunosti posvećena uvođenju/korištenju pristupa<br />

zasnovanog na bazama podataka. Zatim je potreban sposoban<br />

administrator baze podataka kao i smislen pristup razvoju baza<br />

- 20 -


podataka. Ukoliko podrška i posvećenost glavnih menadžera za<br />

pristup okrenut bazama podataka izostane, velika je šansa da će<br />

krajnji korisnici razviti veći broj samostalnih baza podataka. Ove<br />

baze podataka će teško pružiti prednosti koje smo prethodno<br />

opisali. U krajnosti, one mogu da dovedu do donošenja loših<br />

odluka što naravno ugrožava celu organizaciju.<br />

1.5. Primene baza podataka<br />

Vrste baza podataka variraju od onih pravljenih za jednog korisnika PC<br />

računara do baza koje su smeštene na glavni računar (mainframe) i<br />

kojima pristupaju hiljade korisnika. Po broju korisnika koji im pristupaju,<br />

baze podataka se mogu podeliti u više kategorija: lične baze podataka,<br />

baze podataka za radne grupe, baze podataka odeljenja, baze podataka<br />

preduzeća i Internet, intranet i ekstranet baze podataka.<br />

1.5.1. Lične baze podataka<br />

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

već su dugo prisutne u korišćenju personalnih računara. Pojavom ličnih<br />

digitalnih pomoćnika (PDA), lične baze podataka su našle primenu i u<br />

nizu mobilnih uređaja koji osim računarskih imaju i neke druge primene<br />

npr. mobilni telefoni, faks mašine, Internet čitači. Jednostavne aplikacije<br />

sa bazom podataka u kojoj čuvaju informacije i detalje o komunikaciji sa<br />

svakim klijentom, mogu da se koriste i sa računara i sa ličnog digitalnog<br />

pomoćnika, kao i da se prebacuju sa jednog na drugi uređaj radi izrade<br />

sigurnosnih kopija (backup) ili zbog zahteva posla. Uzmimo za primer<br />

preduzeće koje ima određeni broj prodavaca koji su u kontaktu sa<br />

postojećim i potencijalnim klijentima. Ako svaki prodavac ima još neke<br />

aplikacije, npr. grafičke prezentacije, cenovnik sa uslovima prodaje po<br />

kojem klijentu može ponuditi najpovoljniju kombinaciju proizvoda i<br />

količina za naručivanje, onda bi mu za takav posao prenosni računar,<br />

zbog svojih performansi i skladišnog prostora, mogao biti optimalno<br />

rešenje. S druge strane, ako prodavac ima samo listu klijenata i<br />

kontakata, njemu bi lični digitalni pomoćnik i aplikacija koja koristi malu<br />

bazu podataka bili najbolje rešenje.<br />

- 21 -


Lične baze podataka se široko primenjuju jer često mogu bitno unaprediti<br />

produktivnost pojedinca. Međutim, one sadrže jedan faktor rizika:<br />

podatke ovih baza nije lako deliti sa drugim korisnicima. Na primer, ako<br />

bi menadžer prodaje želeo celokupan spisak klijenata i kontakata, to se<br />

ne bi moglo ni brzo ni lako uraditi uzimanjem podataka iz ličnih baza<br />

svakog od prodavaca. Ovo ilustruje veoma čest problem: ako su neki<br />

podaci od interesa jednom čoveku, onda su verovatno (ili će brzo postati)<br />

od interesa i drugim ljudima. Zbog toga, lične baze podataka bi trebalo<br />

svesti na korišćenje pod posebnim okolnostima (npr. u veoma malim<br />

preduzećima) gde je verovatnoća potreba za deljenjem podataka između<br />

korisnika izuzetno mala.<br />

1.5.2. <strong>Baze</strong> podataka za radne grupe<br />

Radnu grupu čini relativno mali broj ljudi koji sarađuju na jednom<br />

projektu ili aplikaciji ili na grupi sličnih projekata ili aplikacija. Radna<br />

grupa obično sadrži desetak ljudi. Oni mogu biti uključeni u npr.<br />

planiranje, projektovanje ili razvoj novog računarskog programa. Baza<br />

podataka za radne grupe služi za podršku zajedničkog rada jedne takve<br />

grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i<br />

programe po porudžbini, koji se prodaju softverskim kompanijama kao i<br />

krajnjim korisnicima. Obično, jedna ili više osoba rade na datom<br />

programu, ili dele programe, u isto vreme. Grupi je potrebna baza<br />

podataka koja će da prati razvoj svakog dela i koja će da omogući da se<br />

podaci što lakše razmenjuju među članovima tima.<br />

Svaki član radne grupe ima svoj računar, a računari su umreženi putem<br />

LAN-a. Baza podataka se nalazi na centralnom računaru koji se zove<br />

server baze podataka, koji je takođe na mreži. Stoga, svaki član grupe<br />

ima pristup podacima. Različiti članovi grupe (u zavisnoti da li je u<br />

pitanju rukovodilac projekta ili projektant, programer) mogu imati<br />

različita ovlašćenja (privilegije), a time i različite poglede na podatke.<br />

Primetićete da je glavna mana ličnih baza podataka, teško ostvariva<br />

razmena podataka, ovde prevaziđena (barem je razmena podataka u<br />

okviru grupe lako ostvariva). Međutim, razmena podataka otvara nova<br />

pitanja i probleme koji nisu postojali kod ličnih baza podataka. Glavni<br />

problemi upravljanja podacima su vezani za njihovu bezbednost i<br />

integritet, s obzirom da više korisnika može istovremeno da obavlja<br />

ažuriranje podataka.<br />

- 22 -


1.5.3. <strong>Baze</strong> podataka odeljenja<br />

Odeljenje je funkcionalna radna jedinica u okviru organizacije. Tipični<br />

primeri odeljenja su: kadrovsko, marketing, proizvodnja, računovodstvo i<br />

sl. Odeljenje je obično veće od radne grupe (nekada se sastoji i do 100<br />

osoba) i odgovorno je za veći broj različitih poslova. <strong>Baze</strong> podataka<br />

odeljenja su napravljene da podrže različite oblike poslova i aktivnosti<br />

koje obavlja to odeljenje. Uzmimo za primer bazu podataka kadrovskog<br />

odeljenja u kojoj se prate podaci vezani za zaposlene, vrste poslova,<br />

stručnu spremu i poslovna zaduženja. Kada su svi relevantni podaci<br />

sačuvani u bazi podataka, korisnici mogu da pretražuju bazu podataka u<br />

cilju dobijanja odgovora na pitanja kao što su sledeća:<br />

• Za određenu vrstu zanimanja (npr programer) kakve prilike za<br />

zaposlenje trenutno postoje u organizaciji?<br />

• Za tu istu vrstu posla koja stručna sprema ili veština je<br />

neophodna?<br />

• Koje veštine, znanje poseduje određeni radnik? I obrnuto, koji<br />

radnici poseduju određenu veštinu, znanje?<br />

• Koji sve radnici su obavljali određeni posao u organizaciji? I<br />

obrnuto, koje sve poslove je određeni radnik obavljao u<br />

organizaciji?<br />

• Koje sve zaposlene nadgleda određeni menadžer?<br />

Tipična pitanja na koja se treba odgovoriti pri pravljenju baze podataka<br />

odeljenja su:<br />

1. Kako baza podataka i njeno okruženje trebaju da budu<br />

organizovani da bi se ostvarile zadovoljavajuće performanse,<br />

uzimajući u obzir veliki broj korisnika i veliki broj transakcija?<br />

2. Kako na odgovarajući način obezbediti podatke od<br />

nedozvoljenog pristupa i/ili distribucije?<br />

3. Koje alate za razvoj baze podataka i aplikacija treba koristiti u<br />

slučaju ovako kompleksnog okruženja?<br />

4. Da li i druga odeljenja koriste iste vrste podataka, i ako je to<br />

slučaj, kako se najbolje može upravljati podacima po pitanju<br />

njihove redudantnosti i konzistentnosti i metapodacima po<br />

pitanju njihove konzistentnosti?<br />

5. Da li su korisnici baze podataka geografski jedni od drugih<br />

udaljeni ili je veličina baze podataka tolika da se podaci moraju<br />

- 23 -


čuvati na više računara, tako stvarajući distribuirane baze<br />

podataka?<br />

6. Da li se bazi podataka može pristupati preko Interneta i da li ona<br />

treba da bude uključena u intranet organizacije?<br />

1.5.4. <strong>Baze</strong> podataka organizacija<br />

Baza podataka organizacije obuhvata čitavu organizaciju ili više njenih<br />

odeljenja. Ova vrsta baza podataka je namenjena da podrži sve procese<br />

organizacije i proces donošenja odluka. Važno je istaći da jedna<br />

organizacija može imati više baza podataka, tako da jedna takva baza<br />

podataka ne sadrži sve podatke jedne organizacije. Jedna baza podataka<br />

za celu organizaciju srednjih do velikih dimenzija ne bi bila praktična iz<br />

mnogo razloga. Kao prvo zbog različitih potreba različitih korisnika,<br />

kompleksnosti stvaranja jedinstvenih metapodataka za sve korisnike baze<br />

podataka je ogromna.<br />

Baza podataka organizacije pruža podršku za jedan određeni broj (skup)<br />

odeljenja. Tokom poslednje decenije, razvoj baza podataka organizacije<br />

je doveo do dva najvažnija oblika:<br />

1. Enterprise resource planning (ERP) sistem<br />

2. Implementacija skladišta podataka (data werehouses)<br />

ERP sistemi rade sa tekućim podacima organizacije, dok skladišta<br />

podataka sakupljaju podatke iz raznih operativnih baza podataka,<br />

uključujući i lične, radnih grupa, odeljenja i ERP baze podataka.<br />

Skladišta podataka pružaju mogućnost korisnicima da rade sa prethodnim<br />

podacima kako bi pronašli obrazce i trendove događaja i kako bi<br />

odgovorili na pitanja koja su vezana za strategiju poslovanja.<br />

Uzmimo za primer veliku zdravstvenu organizaciju koja upravlja grupom<br />

medicinskih centara, u šta spadaju domovi zdravlja, bolnice, klinike i<br />

starački domovi. Svaki od ovih medicinskih centara ima svoju bazu<br />

podataka (ili baze podataka) koja pruža podršku u obavljanju raznih<br />

poslova. Ove baze podataka imaju podatke o pacijentima, doktorima,<br />

medicinskim uslugama, poslovanju i drugim bitnim entitetima. Baza<br />

podataka pruža adekvatnu podršku za većinu poslova u svakom<br />

pojedinačnom medicinskom centru. Međutim, postoji potreba za<br />

- 24 -


jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla<br />

sva poslovanja sa jednim dobavljačem ili pacijentom. Povaćanje<br />

produktivnosi se može postići uvođenjem, na primer, centralnog sistema<br />

za naručivanje materijala za sve zdravstvene centre i rapoređivanjem<br />

osoblja i usluga koje vrše na sve zdravstvenim centre. ERP sistem<br />

omogućava uvođenje prethodnih promena. Donošenje odluka na nivou<br />

cele organizacije, u vezi sa poslovanjem sa dobavljačima, i podnošenje<br />

izveštaja raznim agencijama zahteva sakupljene svih prethodnih podataka<br />

i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi<br />

skladište podataka koje se održava i nalazi u sedištu organizacije. Podaci<br />

koji se nalaze u skladištu podataka su preuzeti (i potom sumirani) iz<br />

pojedinačnih baza podataka svakog medicinskog centra. Ovaj proces<br />

preuzimanja podataka se odvija periodično putem telekomunikacionoračunarske<br />

mreže.<br />

1.5.5. Internet, Intranet i Extranet baze podataka<br />

Internet tehnologije služe za olakšavanje deljenja podataka i informacija.<br />

Na primer, u okviru fabrike može se koristiti lokalna mreža (LAN) koja<br />

povezuje radne stanice zaposlenih iz raznih odeljenja sa serverom na<br />

kome se nalazi baza podataka. LAN unapređuje komunikaciju i proces<br />

donošenja odluka u okviru same kompanije. Ako se uvede Intranet koji<br />

se zasniva na Web tehnologiji, njemu se može pristupati samo u okvirima<br />

kompanije. Radna stanica svakog zaposlenog se može koristiti kao web<br />

browser, i na taj način se dobija brz pristup informacijama kompanije,<br />

uključujući i telefonski adresar, specifikacije proizvoda, elektronsku<br />

poštu i tome slično. Takođe se radne stanice mogu koristiti i kao<br />

personalni računari koji povezani preko LAN-a pristupaju serveru na<br />

kome se nalazi baza podataka. Moguće je dodati i Web interfejse nekim<br />

poslovnim aplikacijama, kao što su unošenje porudžbina, da bi na taj<br />

način više internih poslovnih aktivnosti moglo biti obavljano od strane<br />

zaposlenih preko intraneta.<br />

U cilu efikasnijeg ukupnog poslovanja intranet sistem se može otvoriti ka<br />

kupcima preko Interneta. Ovo omogućava maloprodajama da pretražuju<br />

katalog proizvoda (uključujući slike i specifikacije proizvoda) i utvrde da<br />

li željenog proizvoda ima u skladištu. Tada radnici u maloprodajnim<br />

objektima mogu da obaveste svoje kupce i da poruče željeni komad<br />

- 25 -


proizvoda preko Interneta. Internet konekcija je konfigurisana kao<br />

extranet što znači da samo odobrene maloprodaje mogu da pristupe<br />

intranet-u fabrike.<br />

Sve veće korišćenje Interneta, svetske mreže koja povezuje korisnike,<br />

nebitno koje platforme je dovelo i do promena u okruženju baza<br />

podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do<br />

bitnih promena u davno utvrđenim modelima poslovanja. Veoma uspešne<br />

kompanije su bile ugrožene zbog novih kompanija koje su prihvatile<br />

Internet pomoću koga su unapredile informisanje i usluge koje su pružale<br />

svojim klijentima, i koje su zaobišle tipične tokove marketinga i<br />

distribucije proizvoda. Na primer, kupci konfigurišu i poručuju svoj PC<br />

računar direktno od proizvođača računara. Informacije o upražnjenim<br />

mestima i aktivnostima organizacije se mogu dobiti preko Interneta za<br />

većinu organizacija.<br />

Svaka od ovih radnji zahteva podršku baze podataka. Lak pristup<br />

Internetu svih vrsta platformi omogućava kompanijama da reorganizuju<br />

svoje poslove i razviju brže aplikacije i to po manjim troškovima.<br />

Standardni interfejsi omogućavaju veću produktivnost korisnika, uz<br />

manje provedenog vremena na obuci, i manju potrebnu podršku. Osnova<br />

razvoja korisnikove aplikacije je priključivanje baze podataka iz koje se<br />

mogu dobiti sveže informacije. Kada je baza podataka povezana sa<br />

nekom Internet lokacijom, korisnici preko Web browser-a mogu da<br />

postavljaju određena pitanja na koja će dobiti odgovore bazirane na<br />

svežim informacijama. Odgovaranje na pitanja je automatsko; nema<br />

potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo<br />

pitanje nekoj osobi i da bi se zatim od nje čekao odgovor. Internet baze<br />

podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta.<br />

Kompanije prate sva dešavanja na sajtu kako bi došli do što više<br />

informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom,<br />

dužina zadržavanja na svakoj stranici i tome slično) kako bi što više<br />

unapredili svoj odnos prema kupcima.<br />

Većina primera koji su navedeni prikazuju Business-to-Customer (B2C)<br />

veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obično<br />

naziva B2B (Business-to-Business) odnos. Internet se koristi da olakša<br />

B2C odnos, zato što su kupci obavezno spoljni faktor u odnosu na firmu,<br />

i mogućnost kupca da pristupi poslovnim podacima i informacijama je od<br />

velike važnosti za uspešan odnos. Dozvoljavanjem pristupa poslovnim<br />

- 26 -


azama podataka, od strane osoba koje nisu deo organizacije, javljaju se<br />

nova pitanja za rukovođenje informacionim sistemima vezana za<br />

sigurnost i integritet podataka.<br />

Kompanije su godinama vršile razmenu informacija putem elektronske<br />

razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i<br />

dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije,<br />

uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za<br />

obavljanje B2B razmena podataka i informacija. Extranet koristi Internet<br />

tehnologiju, međutim, pristup extranetu je, za razliku od Interneta kome<br />

mogu svi pristupiti, ograničen. Ustvari, pristup je ograničen na<br />

kompanije koje su u ulozi dobavljača i kupca i koje imaju međusobni<br />

dogovor o pristupu podacima i informacijama jednih drugima. Obično,<br />

prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera.<br />

Ovaj način pristupa olakšava poslovne odnose tako što pruža brži i<br />

efikasniji način obrade i pristupanja podacima.<br />

Kao što je prethodno pomenuto mnoge organizacije su koristile Internet<br />

tehnologiju za stvaranje privatne mreže namenjene za upravljanje<br />

informacijama u okviru organizacije. Po izgledu ne postoji razlika<br />

između intranet i Internet stranica, ali pristup intranet stranici je<br />

ograničen samo na korisnike u okviru te organizacije. Stoga je i pristup<br />

bazi podataka organizacije ograničen. Intranet može da ostvari Internet<br />

konekciju ali ta konekcija će biti zaštićena firewall-om koji sprečava<br />

neovlašćeni pristup intranetu.<br />

- 27 -


1.6. Tipično okruženje baze podataka<br />

Glavni delovi tipičnog okruženja baze podataka i njihove veze su<br />

prikazani na slici 1.9.<br />

1. Baza podataka Organizovan skup logički povezanih podataka,<br />

obično napravljena da zadovolji potrebe za informacijama više<br />

korisnika u organizaciji.<br />

2. Skladište podataka Centralna baza „znanja“ za sve definicije<br />

podataka, njihova ograničenja, veze između podataka, izgleda<br />

ekrana i izveštaja i drugih sistemskih komponenti. Uskladišteni<br />

podaci iz prethodnog perioda.<br />

3. DBMS Sistem za upravljanje bazama podataka (SUBP).<br />

Softverski sistem koji se koristi za kreiranje, održavanje i<br />

kontrolu pristupa korisnika baze podataka.<br />

4. Aplikativni programi Računarski programi koji služe za<br />

kreiranje i održavanje baze podataka i pružaju informacije<br />

korisnicima.<br />

5. Administratori podataka i baza podataka Administratori<br />

podataka su osobe odgovorne za upravljanje svim izvorima<br />

podataka u organizaciji. Administratori podataka su odgovorni za<br />

fizički dizajn baza podataka i za upravljanje tehničkim<br />

problematikama u okruženju baza podataka.<br />

6. Projektanti sistema Osobe kao što su sistemski analitičari i<br />

programeri koji dizajniraju nove aplikativne programe.<br />

Projektanti sistema često koriste CASE alate za analizu potreba<br />

sistema i dizajn programa.<br />

7. Korisnički interfejs Jezici, meniji, i itd. pomoću kojih korisnici<br />

koriste različite komponente sistema, kao što su CASE alati,<br />

aplikativni programi, DBMS i metapodaci.<br />

8. Computer-aided softver engineering (CASE) alati Alati koji se<br />

koriste za dizajniranje baza podataka i aplikativnih programa.<br />

9. Krajnji korisnici Osobe koje dodaju, brišu i modifikuju/ažuriraju<br />

podatke u bazi podataka i koje zahtevaju ili primaju podatke iz<br />

njih. Svaka interakcija između korisnika i baze podataka dešava<br />

se preko DBMS-a.<br />

- 28 -


Slika 1.9 Komponente okruženja BP<br />

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

upotrebu. Primeri za ovakav napredak su sistemi zasnovani na menijima,<br />

sistemi sa mogućnošću pristupa Internetu, i sistemi koji prepoznaju govor<br />

(prihvataju govorne komande). Cilj ovih sistema je da što više krajnjih<br />

korisnika može da koristi računar, što znači da korisnici koji nisu<br />

računarski eksperti mogu sami da naprave izveštaje i koriste jednostave<br />

aplikacije. Naravno, u ovakvom okruženju administratori baza podataka<br />

moraju da obrate pažnju na bezbednost baze podataka. Okruženje baze<br />

podataka prikazano na slici 1.9 predstavlja integrisani sistem hardvera,<br />

softvera i ljudi koji je napravljen da olakša skladištenje, preuzimanje, i<br />

kontrolu izvora informacija i da poveća produktivnost preduzeća.<br />

- 29 -


1.7. Istorija razvoja baza podataka<br />

Nastanak baza podataka se vezuje za Herman-a Holerith-a koji je<br />

1884. godine prijavio patent – sistem za automatsku obradu podataka<br />

(AOP) o popisu stanovništva u SAD. Podaci na bušenim karticama su<br />

ručno ubacivani u uređaj za očitavanje, a obrada podataka se odnosila na<br />

prebrojavanje. Programiranje se svodilo na izbor vrste prebrojavanja, a<br />

radilo se ručnim prespajanjem kontakata. Dotadašnja obrada podataka<br />

popisa trajala je 10-tak godina, a sa Holerith-ovim izumom vreme obrade<br />

bilo je smanjeno na šest nedelja. Herman Hollerith je osmislio ideju po<br />

kojoj se svaki stanovnik SAD predstavlja nizom od 80 karaktera – ime,<br />

godište itd. popunjenih praznim prostorima da bi se za sva imena<br />

obezbedila ista dužina, tako da baza podataka bude „poravnata“. On je<br />

uspeo da proda koncept svoje mašine i bušene kartice koje su služile za<br />

čuvanje podataka u statističkom birou SAD. Tako je popis stanovništva<br />

iz 1890. godine bio prva automatizovana baza podataka, koja se u suštini<br />

sastojala od hiljada kutija punih bušenih kartica. Od Holerith-ove<br />

kompanije nastao je današnji IBM.<br />

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

kartica<br />

- 30 -


Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama<br />

počeli su se pojavljivati prvi elektronski računari. Oni su se često koristili<br />

upravo za jednostavne linearne baze podataka, najčešće za<br />

računovodstvo. Ipak, vrlo brzo, bogati kupci su počeli da zahtevaju više<br />

od njihovih ekstremno skupih mašina. Sve je to vodilo do ranih baza<br />

podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste<br />

Hollerith-ove bušene kartice, neznatno modifikovane u odnosu na<br />

originalni dizajn. Nefleksibilnost polja iste dužine, baze podataka<br />

pokretane 80 kolonskim bušenim karticama, učinile su rane računare<br />

metom napada i šala i potpunom misterijom za običnog čoveka.<br />

Većina prvobitnih baza podataka se odnosila na specifične programe<br />

napisane za specifične baze podataka. Za razliku od modernih sistema<br />

koji mogu biti primenjeni na potpuno različite baze podataka, ovi sistemi<br />

su bili usko povezani za bazu podataka da bi osigurali brzinu na uštrb<br />

fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put<br />

pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom<br />

sledećih decenija. U većini slučajeva, period uvođenja je dugo trajao,<br />

skoro deceniju pre navedene godine početka upotrebe. Na primer,<br />

relacioni model je prvi put definisan od strane E.F.Codd u tekstu<br />

objavljenom 1970 godine. Međutim, relacioni model nije bio široko<br />

prihvaćen sve do 1980-tih godina.<br />

1960’te<br />

Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali<br />

dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka<br />

su uvedeni u ovoj deceniji, i korišćeni su najpre samo kod velikih i<br />

složenih projekata, kao što je to bio projekat sletanja Apollo-a na Mesec.<br />

Ovaj period možemo posmatrati kao period ’dokazivanja’, u kom je<br />

demonstrirana sposobnost ovih sistema da upravljaju ogromnim<br />

količinama podataka. Takođe, prvi napor da se standardizuju poduzet je<br />

sa formiranjem DBT Grupe (Data Base Task Group), tokom kasnih ’60-<br />

ih godina.<br />

- 31 -


1970’te<br />

Tokom ove decenije, upotreba sistema za upravljanje bazom podataka je<br />

postajala komercijalna stvarnost. Hijerarhijski i mrežni sistemi za<br />

upravljanje podacima su uvedeni, velikim delom zbog potrebe za<br />

sistemom koji će moći da upravlja složenim strukturama podataka, kao<br />

što su računi fabrika pri nabavci sirovina, kojima je bilo izuzetno teško<br />

upravljati preko konvencionalnih metoda. Ovi modeli se i suštinski<br />

smatraju prvom generacijom sistema za upravljanje bazom podataka.<br />

Oba pristupa su se široko primenjivala, zapravo, mnogi od tih sistema su<br />

u upotrebi i danas. Pa ipak, imali su nekoliko velikih nedostataka:<br />

• Težak pristup podacima. Za pristup i najjednostavnijim podacima<br />

bili su potrebni izuzetno složeni programi.<br />

• Veoma ograničena nezavisnost podataka, tako da se programi<br />

nisu mogli izolovati od promena u formatu podataka.<br />

• Nije postojala nijedna široko prihvaćena teorijska podloga za bilo<br />

koji od ovih modela, za razliku od relacionog modela podataka.<br />

1980’te<br />

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

razvili su model relacionih podataka tokom ’70-ih godina. Ovaj model,<br />

koji se smatra drugom generacijom DBMS-a, doživeo je široku<br />

komercijalnu upotrebu u poslovnom svetu tokom ’80-ih godina. Sa<br />

relacionim modelom svi podaci su predstavljeni u formi tabele. Relativno<br />

jednostavan programski jezik četvrte generacije, nazvan <strong>SQL</strong>, korišćen je<br />

za dobijanje informacija. Ovaj model je obezbedio jednostavan pristup<br />

podacima i onim ljudima koji nisu bili programeri, prevazilazeći na taj<br />

način jednu od najvećih primedbi koja je pratila sisteme prvih generacija.<br />

Model je takođe pokazao i svoju pogodnost za komunikaciju na relaciji<br />

klijent/server, paralelni prenos podataka, i upotrebu grafičkog<br />

korisničkog interfejsa (GUI).<br />

- 32 -


1990’te<br />

Ove godine se označavaju kao nova računarska era, najpre na nivou<br />

računarske komunikacije na relaciji klijent/server, a potom sa stvaranjem<br />

skladišta za podatke i upotrebom Internet aplikacija, koji su dobijali sve<br />

više na važnosti u ovom periodu. Kao što je upravljanje podacima od<br />

strane DBMS-a postalo visoko primenjivo (npr., u računovodstvu) tokom<br />

osamdesetih godina, multimedijalni podaci (uključujući i grafiku, zvuk,<br />

slike i video zapis) su postali uobičajena stvar tokom devedesetih godina.<br />

Kako bi se izborili sa sve složenijim podacima, tokom devedesetih su<br />

uvedeni sistemi okrenuti ka objektu, koji se smatraju trećom<br />

generacijom. Zbog velike potrebe za organizacijom ogromne količine<br />

podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i<br />

prethodni sistem su u upotrebi i danas. Neki proizvođači čak rade na<br />

razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi<br />

mogli da upravljaju obema vrstama istih.<br />

Od 2000. godine<br />

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

DBMS tehnologija tokom naredne decenije. Iako će nesumnjivo doći do<br />

novih iznenađenja, možemo očekivati nastavak dobro uspostavljenih<br />

trendova:<br />

1. Mogućnost upravljanja sve složenijim tipovima podataka. Ovi<br />

tipovi uključuju i multidimenzionalne podatke, koji su već<br />

dobili na važnosti u aplikacijama skladištenja podataka.<br />

2. Nastavak razvoja ’univerzalnih servera’. Zasnovani na sistemu<br />

treće generacije DBMs-a, to su serveri koji mogu da upravljaju<br />

širokom lepezom raznih tipova podataka, tako da budu<br />

transparentni svim korisnicima. Biće naročito važni kod<br />

Internet aplikacija.<br />

3. Dok su u potpunosti distribuirane baze podataka postale<br />

realnost, trenutni trend ka cenrtalizaciji istih će se nastaviti.<br />

Kako se troškovi komunikacije sve više smanjuju, nasuprot<br />

porastu tipova podataka,vrednost lociranja i pristupa<br />

- 33 -


centralizovanoj bazi podataka takođe se smanjuje. Manji<br />

troškovi, a visoke performanse svakako ohrabruju ovaj trend.<br />

4. Skladišta sa adresiranim sadržajem će postajati sve<br />

popularnija. Sa ovakvim pristupom, korisnik može da izvuče<br />

bilo kakav podatak specifikacijom kakvu vrstu podatka želi,<br />

umesto kako da dođe do njega. Na primer, korisnik može da<br />

skenira fotografiju i da traži od kompjutera pretragu, kako bi<br />

pronašao istu takvu, ili njoj sličnu.<br />

5. Baza podataka i druge tehnologije, poput veštačke<br />

inteligencije i televizije, kao informacionog servisa, olakšaće<br />

pristup podacima neobučenim korisnicima. Na primer,<br />

korisnik će biti u mogućnosti da zahteva podatak na više<br />

jezika, a tehnologija baza podataka će da uključuje potrebe<br />

korisnika za podacima, na osnovu upita koji se čuvaju, i<br />

menjati se na taj način.<br />

6. Rad na tehnologijama algoritama za tehniku analize podataka,<br />

koji teže ka upravljanju veoma velikim paketima podataka,<br />

kako bi organizacije što lakše analizirale svoja ogromna<br />

skladišta podataka. To će u velikoj meri olakšati u planiranju<br />

strategije oraganizacija za njihovo poslovanje za duže<br />

vremenske periode.<br />

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

poboljšane sinhronizacije malih baza podataka i poboljšanje<br />

brzine bežičnog prenosa. Bluetooth i drugi bežični standardi<br />

će u velikoj meri ubrzati razvoj bežičnog povezivanja na<br />

Internet, ali će i nametnuti pitanje daljeg razvoja zaštite<br />

podataka.<br />

- 34 -


1.8. Modelovanje<br />

Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima<br />

koji su bitni za njeno poslovanje. Međutim, broj internih podataka i<br />

podataka iz okruženja je ogroman te je nemoguće sve podatke i sve<br />

uočene detalje opisati i sačuvati unutar informacionog sistema.<br />

Postupkom selekcije identifikuju se i čuvaju samo relevantni podaci.<br />

Time se dolazi do pojma modela podataka. On je izraz i posledica<br />

zahteva za obradom podataka relevantnih za određeno područje primene.<br />

Modeli su čovekovo sredstvo pojednostavljivanja problema i njegovo<br />

posmatranje samo sa stanovišta bitnih za ciljeve analize. Objekt<br />

posmatranja (npr. automobil) ima uvek više osobina (atributa) od kojih u<br />

datom trenutku analize može biti dovoljan samo njihov manji broj (npr.<br />

samo registarski broj, tip automobila, ime i prezime vlasnika). To su<br />

najvažniji atributi potrebni u postupku pretraživanja i pronalaženja<br />

vlasnika vozila na osnovu registarskog broja vozila unutar jednog<br />

informacionog sistema. Ostali atributi kao što su boja, godina<br />

proizvodnje, broj sedišta i sl. nisu bitni (mogu se zanemariti ) za takav<br />

postupak. Čovek, obdaren sposobnostima apstraktnog načina mišljenja,<br />

stvara jedan apstraktni model realnog sveta. Takav model realnog sveta<br />

(objekta posmatranja) zasniva se na simbolima i zove se konceptualni<br />

model podataka.<br />

Relan svet<br />

Izlaz1<br />

Ulaz<br />

Cilj svakog modela je da učini da je: Izlaz1~Izlaz2<br />

Programi za<br />

održavanje<br />

Baza<br />

podataka<br />

Programi za<br />

izveštavanje<br />

Izlaz2<br />

Slika 1.11 Realan svet i njegov model<br />

Modelovanje podataka se radi paralelno sa analizom potreba. Kako se<br />

informacije prikupljaju, objekti se identifikuju, dodjeljuju im se imena<br />

koristeći termine bliske krajnjim korisnicima. Objekti se onda modeluju i<br />

analiziraju korištenjem dijagrama objekti-veze (ER dijagrami). Dijagram<br />

se može pregledati od strane dizajnera i krajnjeg korisnika da bi se<br />

- 35 -


osigurala njegova kompletnost i tačnost. Ako model nije tačan,<br />

modifikuje se, što ponekad zahteva da se prikupe dodatne informacije.<br />

Ciklus pregledanja i modifikovanja se nastavlja sve dok se ne dobije<br />

potvrda da je model korektan.<br />

1.8.1. Razvoj konceptualnih modela<br />

Objekti iz relnog sveta se u računarskoj primeni opisuju pomoću<br />

podataka. Podaci su zato apstrakcija realnosti, tj. sredstva za kodiranje<br />

osobina objekata iz realnog sveta. Modelovane, kao postupak kojim se<br />

realni svet svodi na određeni broj podataka, predstavlja kompleksan<br />

posao i sastoji se iz više koraka:<br />

• Izbor (selekcija). U prvom koraku se mnoštvo objekata iz<br />

realnog sveta redukuje na manji skup objekata, koji će činiti<br />

objekte modela. Npr. objekti mogu biti student, predmet,<br />

profesor, studentska služba, polaganje ispita i sl. U procesu<br />

selekcije ovaj broj objekata se može redukovati na manji broj, ako<br />

je cilj praćenje uspešnosti studiranja na fakultetu. Time se<br />

složenost realnog sistema smanjuje. Selekcija se ne odnosi samo<br />

na objekte nego i na njihove osobine, kao i na međusobne veze<br />

(relacije) između objekata.<br />

• Imenovanje. Svakom objektu u realnom svetu, svakoj vezi<br />

između uočenih objekata, kao i svakom atributu (svojstvu)<br />

uočenog objekta ili veze dodeljuje se ime.<br />

• Klasifikacija. Nehomogeni skup objekata i odnosa se svrstava u<br />

homogene klase i tipove objekata. Klasifikacija uvek zavisi od<br />

područja primene.<br />

Rezultat navedenih koraka modelovanja zove se konceptualni model. On<br />

sadrži, za posmatrani problem iz realnog sveta, sve relevantne tipove<br />

objekata, njihove osobine i međusobne veze. Rezultati proučavanja<br />

modela podataka doveli su do saznanja da svaki model podataka ima tri<br />

neodvojive komponente:<br />

• strukturu podataka,<br />

• operacije nad podacima,<br />

• ograničenja (constraints).<br />

- 36 -


Struktura i ograničenja, za razliku od operacija, opisuju stanje realnog<br />

sistema, tj. predstavljaju statički opis stanja sistema. Strukturu modela<br />

čine objekti, njihova svojstva, veze između objekata i njihovih svojstava.<br />

Operacije nad podacima u modelu su, u stvari, operacije nad strukturom<br />

modela kojima se izražava dinamika realnog sistema. Operacije<br />

izražavaju kretanje i promene tj. dinamiku realnog sistema. Ograničenja<br />

su pravila koja razdvajaju dopuštena od nedopuštenih stanja realnog<br />

sistema i u svojoj prirodi deo su strukture modela podataka. Ponekad se<br />

ne posmatraju kao odvojene komponenta, nego kao deo strukture modela<br />

podataka.<br />

1.8.2. Entiteti<br />

Modelima podataka nastoji se preslikati realan sistem. Realan sistem<br />

sastoji se od objekata iz realnog sveta i njihovih veza između kojih se<br />

uspostavljaju različiti odnosi. Pod entitetom se podrazumeva sve što se<br />

može jednoznačno odrediti, identifikovati i razlikovati. Tako široko<br />

postavljena definicija pokazuje da entitet može biti svaki "realan" ili<br />

"apstraktan" objekt o kojem u određenom trenutku razmišljamo. Entitet<br />

je realan ako fizički, stvarno postoji. Najopštije se može tvrditi da su<br />

granice entiteta u modelu podataka određene ljudskim pogledom i<br />

načinom razmišljanja.<br />

Svaki entitet uočen u realnom sistemu ima svoje osobine koje ga čine<br />

složenim i njihove vrednosti omogućavaju razlikovanje entiteta. Svojstvo<br />

entiteta uključuje dva elementa - atribut i vrednost atributa (npr. entitet<br />

Student ima atribute: Ime, Prezime, Broj indeksa, Adresu, Telefon i sl. i<br />

vrednosti Marko, Marković, 123/03, Danijelova, 15, 011/376-543<br />

respektivno). Svaki put kada se promeni vrednost atributa, potrebno je<br />

promenu evidentirati, tj. ažurirati tu vrednost atributa za dati entitet.<br />

Precizno govoreći, objekti koji se označe pojmom entiteta mogu se zvati<br />

klase entiteta. Svaki objekt ima osobine (atribute) klase entiteta kojoj<br />

pripada. Npr. klasu entiteta Student čine pojedinačni entiteti od kojih<br />

svaki ima zajedničke atribute: Ime, Prezime, Broj indeksa, Adresa,<br />

Telefon i sl. Svaki pojedinačni entitet ima sve navedene atribute, ali će se<br />

razlikovati od drugih entiteta po vrednostima pojedinih atributa.<br />

- 37 -


Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se<br />

vrednost. Ako je atribut dovoljno složen, tako da ima svoje dodatne<br />

atribute, može se posmatrati kao novi entitet.<br />

Domen atributa je skup svih mogućih vrednosti koje atribut može<br />

poprimiti.<br />

Primarni ključ je jedan ili više atributa čija vrednost jednoznačno<br />

određuje primerak entiteta. Na primer, za entitet Auto, primarni ključ je<br />

atribut registarski broj. Dva različita člana ili primerka entiteta ne mogu<br />

imati isti primarni ključ. Primarni ključ je jedinstven za svakog člana<br />

entiteta. Na primer, za entitet Student primarni ključ bi mogao biti broj<br />

indeksa.<br />

1.8.3. Veze između entiteta<br />

Baza podataka se ne odnosi samo na pojedinačne objekte nego i na<br />

odnose između objekata. U realnom sistemu objekti nisu međusobno<br />

izolovani, nego se nalaze u međusobnoj interakciji. Student se upisuje na<br />

fakultet, sluša predavanja iz pojedinih predmeta, prijavljuje polaganje<br />

ispita, polaže ispit itd. To su primeri logičkih i realnih veza između<br />

objekata, koje slede iz realnih odnosa u posmatranom sistemu studiranja<br />

na jednom fakultetu. Istražimo jedan skup odnosa između studenata koji<br />

slušaju predavanja kod određenog profesora. Postavlja se pitanje šta su u<br />

takvim odnosima objekti, koje su njihove osobine (atributi) i kako<br />

prikazati njihove odnose.<br />

Identifikovati objekte, njihove osobine i odnose znači praktično izgraditi<br />

model podataka. U modelu podataka ne postoje samo atributi objekta,<br />

nego i veze između objekata. Prvo se selektuju objekti, imenuju se, a<br />

zatim se analiziraju tipovi odnosa koji se uspostavljaju između objekata.<br />

Odnosi između objekata posmatranja prikazuju se najčešće primenom<br />

logike skupova i preslikavanja njihovih elemenata.<br />

Najjednostavniji odnos između ta dva tipa objekata naziva se<br />

preslikavanje 1:1. Kod takvog preslikavanja svaki se element skupa X<br />

može preslikati na najviše jedan element skupa Y. Istovremeno, i svaki<br />

element skupa Y može biti preslikan na najviše jedan element skupa X.<br />

Karakterističan primer bi bio sa entitetima Fakultet i Dekan. Na jednom<br />

fakultetu može biti samo jedan dekan, a jedan dekan može biti dekan na<br />

- 38 -


samo jednom fakultetu. Takvi odnosi između entiteta su retki, a mogu se<br />

predstaviti sledećom slikom:<br />

Slika 1.12 Preslikavanje entiteta 1:1<br />

Druga vrsta odnosa naziva se preslikavanje N:1 (ili 1:N). Više elementa<br />

skupa X može se preslikati na najviše jedan element skupa Y.<br />

Istovremeno jedan element skupa Y može se preslikati na više elemenata<br />

skupa X. Pogodan primer za ovu vrstu odnosa između entiteta je odnos<br />

između entiteta Student i Dekan. Više studenata na jednom fakultetu ima<br />

samo jednog dekana, a jedan dekan je dekan za više studenata na svom<br />

fakultetu.<br />

Slika 1.13 Preslikavanje entiteta N:1<br />

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

se preslikati na više elemenata drugog skupa, ali se i svaki element<br />

drugog skupa može preslikati na više elemenata prvog skupa.<br />

Karakterističan primer ovakvih veza postoji ako se uoče entiteti Student i<br />

Profesor. Jednom studentu predaje više profesora, a ujedno jedan<br />

profesor predaje za više studenata.<br />

- 39 -


Slika 1.14 Preslikavanje tipa M:N<br />

1.8.4. Troslojna arhitektura baze podataka<br />

Osnovni koncept baze podataka je ideja o skupu činjenica ili delova<br />

znanja. Činjenice mogu da budu struktuirane na različite načine koji se<br />

nazivaju modeli podataka. Model podataka nije statična struktura nego se<br />

menja kako bi odražavao promene koje se dešavaju i u realnom sistemu.<br />

Na primeru informacionog sistema jednog fakulteta, studenti polažu<br />

pojedine ispite, neke poništavaju i dobijaju drugačije ocene, upisuju se<br />

novi studenti, drugi diplomiraju, neki asistenti postaju profesori itd.<br />

Za jednostavne slučajeve, kao i mali broj promena relacija i entiteta,<br />

moguće je ažuriranje podataka vršiti ručno. Za kompleksnije sisteme (sa<br />

nekoliko stotina ili hiljada entiteta ili relacija) ažuriranje podataka postaje<br />

ogroman problem. Jedino se uz pomoć računara može održavati ažurnost<br />

podataka u velikim informacionim sistemima. Obrada podataka postaje<br />

ne samo pitanje produktivnosti neke firme ili organizacije, nego i<br />

opstanka, rasta i razvoja u okruženju s intenzivnom konkurencijom.<br />

Obrada podataka je deo svakog poslovnog procesa, stoga je poznavanje<br />

baza podataka bitno ne samo za projektante informacionih sistema i<br />

programere, nego i za krajnje korisnike rezultata takvih obrada. Oni nisu<br />

samo skup povremenih korisnika baza podataka, kao što se to može reći<br />

za programere ili projektante informacionih sistema. Danas veliki broj<br />

zaposlenih, koji nisu upoznati sa konceptualnom šemom BP, kreiraju,<br />

- 40 -


unose, ažuriraju ili jednostavno koriste baze podataka na različitim<br />

nivoima organiziranosti poslovnih sistema.<br />

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

prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za<br />

upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu<br />

te arhitekture. Aplikativni programi komuniciraju s bazom podataka<br />

preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih<br />

podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući<br />

korisnički model. DBMS preslikava eksterni model na konceptualni i<br />

konceptualni na interni model.<br />

Konceptualni nivo je najbliži stvarnosti. Taj se nivo definiše u procesu<br />

kreiranja modela podataka. Jedan od ciljeva modela podataka je<br />

oblikovanje podataka za sadašnje i buduće aplikacije. Može se reći da<br />

konceptualni nivo čine sve relacione šeme modela podataka, sve relacije i<br />

ograničenja. Spoljašnji nivoi (modeli A, B i C) formiraju se na temelju<br />

konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema<br />

potrebama pojedinih korisnika.<br />

Eksterni model<br />

(sloj)<br />

Konceptualni<br />

model<br />

(sloj)<br />

Interni model<br />

(sloj)<br />

Model A<br />

A<br />

Podaci 1<br />

Model B<br />

B<br />

Podaci 2<br />

Podaci 3<br />

Model C<br />

C<br />

Podaci N<br />

Slika 1.15 Troslojna arhitektura baze podataka<br />

- 41 -


Unutrašnji (interni) sloj baze odnosi se na zapisivanje konceptualnog<br />

sloja na nekom medijumu za čuvanje (najčešće disku). Radi se o<br />

slogovima zapisanim u datotekama. Niži sloj, uslovno rečeno, ili nivo<br />

bliži disku od internog sloja BP, je operativni sistem , koji na osnovu<br />

logičkih adresa slogova čita sadržaj diska.<br />

1.9. Modeli baza podataka<br />

Za modelovanje strukture podataka koriste se različite tehnike. Određeni<br />

modeli se lakše koriste za neke tipove sistema upravljanja bazama<br />

podataka nego drugi modeli. Model čini osnovu za osmišljavanje,<br />

definisanje i implementaciju baze podataka.<br />

Istorijski gledano sistemi za upravljanje bazama podataka mogu se<br />

podeliti u sledeće osnovne modele:<br />

• Hijerarhijski model – čine ga podaci složeni u hijerarhijsku<br />

strukturu;<br />

• Mrežni model – može se predstaviti usmerenim grafom u kojem<br />

su čvorišta podaci, a lukovi među čvorištima definišu veze među<br />

podacima;<br />

• Relacioni model – zasnovan na matematičkom pojmu relacije.<br />

Podaci i veze među podacima se prikazuju preko<br />

dvodimenzionalnih tabela.<br />

• Objektni model – bazira se na konceptu objekata, koji<br />

predstavljaju skup podataka i operacija koje se na njima mogu<br />

izvršavati.<br />

- 42 -


1.9.1. Hijerarhijski model<br />

Hijerarhijski model je najstariji od svih modela baza podataka, i<br />

za razliku od mrežnog, relacionog ili objektno orjentisanog, nema dobro<br />

dokumentovanu istoriju svoje koncepcije i početne verzije ovakvog<br />

modela. Ovaj model se razvio iz informacionog sistema za upravljanje u<br />

50-tim i 60-tim godinama prošlog veka. Usvojen je u mnogim bankama i<br />

osiguravajućim društvima koji ga, kao nasleđe, i danas koriste.<br />

U hijerarhijskom modelu podaci su smešteni u seriju slogova (zapisa) Da<br />

bi se uspostavila veza između slogova, hijerarhijski model uspostavlja<br />

relaciju roditelj – naslednik. Ovo je takozvano 1:N mapiranje između<br />

slogova koje se radi korišćenjem stabla. U ovom modelu, relacije su<br />

takve da jedan naslednik može imati samo jednog roditelja, ali roditelj<br />

može imati više naslednika. Roditelji i naslednici su povezani vezama<br />

koje se nazivaju pokazivači (u fizičkoj realizaciji to je adresa u memoriji<br />

gde se slog nalazi). Roditelj ima listu pokazivača za svakog od svojih<br />

naslednika. Hijerarhijski model je dobro uređena struktura, koja podseća<br />

na hijerarhijsku strukturu u npr. državi, vojsci ili nekoj velikoj<br />

organizaciji<br />

.<br />

Direktor<br />

Zamenik<br />

Zamenik<br />

Zamenik<br />

O O O O O O O O<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

Slika 1.16 Šematski prikaz jednog hijerarhijskog modela<br />

Pravilo roditelj – naslednik omogućava pristup podacima. Da bi se došlo<br />

do tabele na nižem nivou, kreće se od korena i ide prema dole kroz stablo<br />

dok se ne dođe do cilja. Naravno, očigledan problem sa ovim modelom je<br />

- 43 -


da korisnik mora da zna kako je stablo organizovano da bi pronašao bilo<br />

šta.<br />

Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne može se<br />

dodati slog u tabelu naslednika dok se ne uključi u roditeljsku tabelu.<br />

Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima,<br />

ali ne može da se nosi sa povezivanjem ogranaka ili stvaranjem<br />

višestrukih veza. Zbog toga se stvara redudansa (višestruko<br />

pojavljivanje) podataka i mogućnost netačnog ažuriranja. Na primeru<br />

hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore,<br />

studente itd. mogu se lako uočiti navedene slabosti. Lako je predstaviti da<br />

na jednoj katedri ima više profesora, ali se ne može predstaviti da jedan<br />

profesor radi na više katedri. Da bi se ovo uradilo, mora postojati dva<br />

pojavljivanja istog profesora. To može dovesti do netačnosti kod<br />

ažuriranja podataka, npr. moguće je da informacije budu različite u dva<br />

zapisa, što vodi do konfuzije.<br />

Hijerarhijski model se više ne koristi kao osnova za trenutne<br />

komercijalne sisteme, ali još uvek postoji mnogo nasleđenih sistema<br />

baziranih na ovom modelu. Zbog svih nedostataka koji postoje u<br />

hijerarhijskom modelu, razvijen je mrežni model.<br />

1.9.2. Mrežni model<br />

Mrežni model je prvi put predstavljen 1971. godine. Može se<br />

smatrati savremenikom relacionog modela, gledajući starost i prva<br />

istraživanja učinjena u 60-tim godinama prošlog veka.Omogućava da se<br />

višestruki skupovi podataka koriste zajedno putem pokazivača (ili<br />

pointera). Neke kolone sadrže pokazivače na druge tabele umesto samih<br />

podataka. Na taj način, tabele su povezane pokazivačima i mogu se<br />

posmatrati kao mrežna struktura. Dok u hijerarhijskom modelu svaki slog<br />

ima jedan „roditeljski“ slog i neograničeno „naslednika“, mrežni model<br />

omogućava svakom zapisu da ima višestruke roditelje i naslednike,<br />

kreirajući mrežastu strukturu.<br />

- 44 -


Direktor<br />

Zamenik<br />

Zamenik<br />

Zamenik<br />

O O O O O O O O<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

R<br />

Slika 1.17 Šema mrežnog modela<br />

Mrežni model se danas uglavnom ne upotrebljava za dizajniranje baza<br />

podataka, ali ipak ima slučajeva gde se kao deo nasleđa koristi u nekim<br />

kompanijama. Predstavlja unapređenje hijerarhijskog modela, ali je<br />

kompleksan i težak za upotrebu. Pored toga, teško ga je podržati<br />

matematičkim aparatom, što onemogućava kasnije efikasno<br />

programiranje.<br />

1.9.3. Relacioni model<br />

Kao i mnoge druge tehnologije u računarskoj industriji, koreni relacionih<br />

baza podataka potiču iz IBM-a i njihovog istraživanja automatizovanja<br />

kancelarijskih operacija u 60-tim i 70-tim godinama XX veka. 1970.<br />

godine, IBM-ov istraživač Ted Codd je prezentovao prvi rad o relacionim<br />

bazama podataka. Zbog same tehničke prirode rada i oslanjanja na<br />

matematički aparat, njegova važnost nije odmah shvaćena. Ipak, doveo je<br />

do formiranja IBM-ove istraživačke grupe System R. Od projekta System<br />

R se očekivalo da stvori sistem relacione baze podataka koji bi mogao<br />

postati proizvod. Prvi prototip prezentovan je 1974/75. godine i<br />

eksperimentalno je korišćen. Nakon što je definisan relacioni model,<br />

napravljeni su neformalni modeli da bi se opisali hijerarhijski i mrežni<br />

model. Hijerarhijske i mrežne baze podataka su postojale pre relacionih<br />

baza podataka, ali su kao modeli opisani tek nakon što je relacioni model<br />

definisan, da bi se napravila osnova za poređenje.<br />

- 45 -


U srcu relacionog modela nalazi se koncept tabele (koja se naziva i<br />

relacija) u kojoj su smešteni svi podaci. Svaka tabela je načinjena od<br />

slogova (redova u tabeli), a svaki slog ima svoja polja (atribute).<br />

Osnovne karakteristike relacionog modela podataka su sledeće:<br />

• Sve se predstavlja relacijama (tabelama)<br />

• Zasniva se na strogoj matematičkoj teoriji<br />

• Minimalna redudansa podataka<br />

• Jednostavno ažuriranje podataka<br />

• Izbegnute su anomalije ažuriranja<br />

• Redosled kolona i redova ne utiče na informacioni sadržaj tabele<br />

• Ne mogu da egzistiraju dva identična reda (rekorda) u jednoj<br />

tabeli<br />

• Svaki red se može jednoznačno odrediti (postoji primarni ključ)<br />

• ...<br />

U relacionom modelu podataka klase objekata se predstavljaju<br />

tabelama. Na primer klasa STUDENT se može opisati atributima BROJ<br />

INDEKSA i IME i klasa KNJIGA sa itributima ŠIFRA KNJIGE i<br />

NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele<br />

može biti sledeće:<br />

Student<br />

BrInd Ime<br />

75/01 Marko<br />

22/02 Petar<br />

156/03 Milan<br />

112/02 Dragan<br />

Knjiga<br />

SifK Naziv<br />

001 Računovodstvo<br />

002 <strong>Baze</strong> podataka<br />

003 Osnove finansija<br />

004<br />

005<br />

Poslovna<br />

i f ik<br />

Marketing<br />

Slika 1.18 Tabela je osnovni objekat relacione baze podataka<br />

Prethodna dva objekta sa svojim atributima grafički se mogu predstaviti<br />

na sledeći način:<br />

- 46 -


BrInd<br />

SifK<br />

Student<br />

Knjiga<br />

Ime<br />

Naziv<br />

Slika 1.19 Grafički prikaz objekata i njihovih atributa<br />

U realnom svetu objekti međusobno stupaju u veze. Na jednom fakultetu<br />

studenti drže (pozajmljuju iz biblioteke) pojedine knjige. Može se uočiti<br />

da je veza između ova dva posmatrana objekta tipa M:N, tj. više<br />

studenata mogu da drže jednu knjigu, a jedna knjiga može biti kod više<br />

studenata. Neka je trenutna situacija iz realnog sveta prikazana na<br />

sledećoj slici:<br />

Student<br />

Knjiga<br />

BrInd<br />

Ime<br />

SifK<br />

Naziv<br />

75/01 Marko<br />

22/02 Petar<br />

156/03 Milan<br />

112/02 Dragan<br />

001 Računovodstvo<br />

002 <strong>Baze</strong> podataka<br />

003 Osnove finansija<br />

004 Poslovna informatika<br />

005 Marketing<br />

Slika 1.20 Veze između objekata realnog sveta – formira se klasa veza<br />

Klasa veza se može posmatrati kao zaseban entitet, a taj entitet može da<br />

ima svoje posebne atribute. U našem primeru, klasa veza DRŽI može da<br />

ima kao atribut DATUM od kada student drži određenu knjigu. Neka je<br />

trenutna situacija iz realnog sveta prikazana sledećom slikom:<br />

- 47 -


Student<br />

BrInd Ime<br />

75/01 Marko<br />

22/02 Petar<br />

156/03 Milan<br />

112/02 Dragan<br />

Drži<br />

12.09.2005<br />

12.09.2005<br />

12.09.2005<br />

12.09.2005<br />

12.09.2005<br />

12.09.2005<br />

Knjiga<br />

SifK Naziv<br />

001 Računovodstvo<br />

002 <strong>Baze</strong> podataka<br />

003 Osnove finansija<br />

004 Poslovna informatika<br />

005 Marketing<br />

Slika 1.21 Klasa veza može da ima svoje atribute<br />

Grafički prikaz navedenog dat je na sledećoj slici<br />

BrInd<br />

Datum<br />

SifK<br />

Student<br />

Drži<br />

Knjiga<br />

Ime<br />

Naziv<br />

Slika 1.22 Klasa veza može da ima svoje atribute<br />

Suština relacionog modela je da se i klase objekata i klase veza između<br />

objekata predstavljaju na jedinstven način, tj. preko tabela. U našem<br />

primeru postoje tri tabele: STUDENT, KNJIGA i DRŽI. U relacionom<br />

modelu podataka tabela se definiše kao relacija, koja mora da ispuni<br />

odgovarajuće uslove. Svaka relacija mora da ima primarni ključ – jedan<br />

ili više atributa koji na jedinstven način opisuju svaki zapis u jednoj<br />

tabeli. Primarni ključ se pažljivo bira. Na primer u klasi studenata loš<br />

izbor primarnog ključa bi bio atribut IME, zato što se mogu pojaviti dva<br />

studenta sa istim imenom. Dobar izbor primarnog ključa je atribut Broj<br />

indeksa, zato što ne postoje dva studenta sa istim brojem indeksa. Za<br />

klase objekata Student i Knjiga vrši se prevođenje u relacioni model na<br />

sledeći način (podvlačenjem su označeni atributi koji čine primarni<br />

ključ):<br />

- 48 -


STUDENT (BrInd, Ime),<br />

KNJIGA (SifK, Naziv)<br />

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

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

DRŽI(BrInd, SifK, Datum)<br />

Dakle, za posmatrani realan slučaj gde sudenti drže pojedine knjige,<br />

izvršeno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i<br />

KNJIGA imaju dve kolone, a tabela DRŽI tri kolone. Sve tabele su<br />

povezane. Povezivanje se vrši preko vrednosti atributa u relacijama. na<br />

sledeći način:<br />

STUDENT (BrInd, Ime)<br />

KNJIGA (SifK, Naziv)<br />

DRŽI (BrInd, SifK, Ime)<br />

Strani ključ relacije<br />

Drži koji pokazuje<br />

na primarni ključ<br />

relacije Student<br />

Strani ključ relacije<br />

Drži koji pokazuje<br />

na primarni ključ<br />

relacije Knjiga<br />

Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih ključeva<br />

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

nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje<br />

baza podataka koristi da bi pronašla tabelu. Korisniku je potrebno samo<br />

da zna ime tabele. Nema potrebe da se vodi računa o tome kako su<br />

podaci smešteni na disku. Ovo je različito od hijerarhijskog i mrežnog<br />

modela u kojima korisnik mora da razume kako su podaci struktuirani<br />

unutar baze podataka da bi mogao da ih pretražuje, unosi nove, ažurira ili<br />

briše postojeće slogove.<br />

Relaciona baza podataka standardno se satoji iz više tabela. Ipak, za<br />

razliku od mrežne baze podataka, tabele nisu povezane pokazivačima.<br />

Umesto toga koriste se „ključevi“ da upare redove podataka u različitim<br />

tabelama. Ključ je samo još jedna ili više kolona u tabeli, koja odgovara<br />

kolonama u drugim tabelama.<br />

- 49 -


Zahtev za podatkom iz relacione baze podataka se dobija izvršavanjem<br />

upita koji je napisan u posebnom jeziku, obično nekom od dijalekata<br />

<strong>SQL</strong>-a. Iako je <strong>SQL</strong> originalno namenjen za krajnje korisnike, mnogo<br />

češće se <strong>SQL</strong> upiti ugrađuju u softver koji omogućava lakši korisnički<br />

interfejs. Kao odgovor na upit, baza podataka vraća skup podataka, koji<br />

je u stvari lista redova koji sadrže odgovor. Najjednostavniji upit je da se<br />

dobiju svi redovi iz tabele, ali češće, redovi se filtriraju na neki način da<br />

bi se dobio traženi odgovor. Često se podaci iz više tabela kombinuju u<br />

jednu, procesom udruživanja.<br />

Fleksibilnost relacionih baza podataka dozvoljava programerima da pišu<br />

upite koji nisu bili predviđeni od strane dizajnera baze podataka. Kao<br />

rezultat, relacione baze podataka mogu da se koriste u više aplikacija<br />

koje originalni dizajneri nisu predvideli, što je posebno važno za baze<br />

podataka koje se mogu koristiti decenijama. Ovo je model relacionih<br />

baza podataka učinilo veoma popularnim u poslovnoj primeni.<br />

1.9.4. Objektni model<br />

Objektno orjentisani model je jedan od novijih modela baza podataka.<br />

Istraživači su za njega postali zainteresovani krajem 70-tih i početkom<br />

80-tih godina prošlog veka, kada se počeo pojavljivati koncept objektno<br />

orjentisanih sistema. Bazira se na konceptu objekata, koji predstavljaju<br />

skup podataka i operacija koje se na njima mogu izvršavati.<br />

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

relacionom modelu na određenim tipovima podataka. Tipovi podataka<br />

koji se mogu koristiti u relacionim bazama su veoma ograničeni. Svaki<br />

atribut (polje) može da poprimi samo jednu vrednost. U objektno<br />

orijentisanom modelu podataka entitet se predstavlja klasom. Klasa<br />

obuhvata i atribute i ponašanje entiteta (moguće operacije nad<br />

podacima). Npr. Klasa: student<br />

• Atributi: BrInd, Ime, Prezime, Fakultet<br />

• Procedura: polaganjeIspita()<br />

Objekti su samo jedno pojavljivanje u odgovarajućoj klasi. Objektno<br />

orijentisan model karakteriše bogatsvo tipova podataka – tip može biti i<br />

- 50 -


drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP<br />

rezultuje boljim performansama baze podataka.<br />

Posmatrajmo primer u kome se vodi evidencija o Studentima sa<br />

svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji<br />

student poseduje. Dalje, vodi se evidencija o Automobilima sa<br />

svojstvima Naziv automobila, Registarski broj, Boja, Godište i Vlasnik.<br />

Prethodni primer se može prikazati na sledeći način<br />

Student<br />

BrInd Ime Prezime Fakultet Automobil<br />

123/05 Marko Marković FPI Golf<br />

------ ----- ----- ----- -----<br />

Automobil<br />

Naziv RegBr Boja Godište Vlasnik<br />

Golf BG123456 Belo 1993 Marko<br />

------ ----- ----- ----- -----<br />

Slika 1.24 U objektno orijentisanim BP tip podatka može biti drugi<br />

objekat<br />

Objektno orjentisani DBMS-ovi omogućavaju čuvanje objekata direktno,<br />

bez mapiranja za različite strukture podataka. Relacioni DBMS zahteva<br />

mapiranje iz objekata u tabele. U objektno orijentisanom modelu,<br />

informacija je sačuvana kao stalni objekt, a ne kao red u tabeli. Ovo<br />

sistem čini efikasnijim u smislu prostora potrebnog za smeštanje i<br />

čuvanje podataka i osigurava da korisnik manipuliše podacima samo na<br />

onaj način koji je programer odredio.<br />

S druge strane, obzirom da se kontrola vrši na veoma niskom nivou,<br />

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

- 51 -


elacionih baza podataka možemo imati korist od softvera izrađenog od<br />

strane trećeg dobavljača, korisnici objektno orjentisanih sistema za<br />

upravljanje bazama podataka ili moraju da naruče dodatni softver od<br />

originalnog programera ili da ga razviju u saradnji sa drugim firmama<br />

koje koriste isti sistem.<br />

1.10. Transakcije<br />

<strong>Baze</strong> podataka kontinuirano skladište informacije koje opisuju trenutno<br />

stanje preduzeća. Na primer, baza podataka banke čuva trenutni bilans na<br />

svakom računu deponenta. Kada se u stvarnom svetu dogodi nešto što<br />

menja stanje preduzeća, mora da se uradi odgovarajuća promena<br />

podataka u bazi podataka. Ove promene se dešavaju uz pomoć programa<br />

koji se nazivaju transakcije koje deluju kada dođe do promena u<br />

stvarnom svetu. Na primer, kada klijent polaže novac u banku (događaj u<br />

stvarnom svetu), izvršava se transakcija depozita. Svaka transakcija mora<br />

biti uređena tako da održava nepogrešivost veze između stanja baze<br />

podataka preduzeća koje je kreira iz stvarnog sveta. Pored toga što menja<br />

stanje baze podataka, transakcija sama po sebi može da inicira neke<br />

događaje u stvarnom svetu. Na primer, izdvojena transakcija kod<br />

bankomata, inicira događaj odliva novca.<br />

Obično se transakcijom naziva niz operacija nad bazom podataka koji<br />

odgovara jednoj logičkoj jedinici posla u realnom sistemu. Važno je<br />

istaći da se ta logička jedinica posla izvršava do kraja ili se poništava u<br />

celini. Drugim rečima, zahteva se da transakcija bude atomska<br />

(nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni<br />

jedan. U tom smislu, transakcija predstavlja osnovnu programsku<br />

jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze.<br />

Primer transakcije: Podizanje novca sa računa u banci. Kada banka primi<br />

zahtev, transakcija obuhvata sledeće korake:<br />

1. Provera bankarske kartice<br />

2. Provera računa (stanje)<br />

3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se<br />

nastavlja<br />

4. Smanjuje se stanje na računu za zahtevani iznos<br />

- 52 -


5. Generiše se izveštaj o transakciji<br />

6. Isplaćuje se novac i daje izveštaj o transakciji<br />

Transakcija mora da kompletira sve korake, inače bi jedna od strana u<br />

transakciji imala štetu.<br />

Obrada transakcija je izuzetno važna u višekorisničkim aplikacijama.<br />

Kada više korisnika istovremeno unosi izmene u bazu podataka, više se<br />

ne možemo pouzdati u to da će uvek jedna izmena biti trajno upisana u<br />

bazu pre nego što započne naredna. Zbog toga u bazama podataka<br />

postoje mehanizmi kojima se može obezbediti da konkurentno<br />

izvršavanje transakcija daje iste rezultate kao kada se transakcije<br />

izvršavaju u serijskom redosledu.<br />

1.10.1. Osobine transakcija<br />

Transakcije imaju sledeće osobine (ACID osobine):<br />

• Atomnost (atomicity),<br />

Atomnost podrazumeva skup aktivnosti nad bazom podataka po<br />

principu „sve ili ništa“. Ili su sve aktivnosti uspešno obavljene ili<br />

je baza podataka ostala nepromenjena. Kada dođe do promene u<br />

bazi podataka, tada su sve promene dostupne korisnicima ili niti<br />

jedna promena nije dostupna korisnicima. To znači da se ne može<br />

desiti da se samo deo promene desi u bazi podataka u slučaju<br />

softverske ili hardverske greške.<br />

• Konzistentnost (consistency),<br />

Konzistentnost znači da transakcija treba da prevede bazu<br />

podataka iz jednog u drugo konzistentno stanje. Na primer, ako se<br />

transakcijom vrši prebacivanje novca sa jednog računa na drugi<br />

račun u banci, ukupna suma novca pre i posle izvršenja<br />

transakcije se ne može promeniti. Ukoliko u toku transakcione<br />

obrade dodje do greške, podaci moraju biti vraćeni u stanje pre<br />

početka transakcije.<br />

• Izolacija (izolation),<br />

Izolacija znači da kada se dve ili više transakcija izvršavaju<br />

istovremeno, njihovi efekti moraju biti međusobno izolovani.<br />

Efekti koje izazovu transakcije koje se obavljaju istovremeno<br />

- 53 -


moraju biti jednaki efektima nekog njihovog serijskog (jedna<br />

posle druge) izvršenja. Zbog povećanja paralelizma u obradi<br />

transakcija dozvoljavaju se različiti nivoi izolovanosti.<br />

• Trajnost (durability).<br />

Trajnost znači da kada se transakcija završi (potvrđene promene),<br />

njeni efekti ne mogu biti izgubljeni, čak i ako se neposredno po<br />

njenom okončanju desi neki ozbiljan otkaz sistema.<br />

1.10.2. COMMIT i ROLLBACK<br />

Obezbeđenje ACID osobina transakcije se radi upotrebom određenih<br />

metoda i instrukcija:<br />

• transakcija počinje sa BEGIN TRANSACTION,<br />

• završava se sa COMMIT, čime se potvrđuju promene u bazi<br />

podataka ako su sve instrukcije uspešno izvršene,<br />

• završava se sa ROLLBACK, ako sve instrukcije nisu uspešno<br />

završene.<br />

Transakcija počinje pozivanjem metode BEGIN TRANSACTION, čime<br />

se označava početak niza operacija koje čine jednu logičku jedinicu.<br />

Metoda COMMIT preuzima sve izmene načinjene od poslednjeg mesta<br />

na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na<br />

disk. Metoda ROLLBACK deluje na suprotan način od COMMIT – ona<br />

poništava sve izmene i vraća stanje kakvo je bilo pre poslednjeg poziva<br />

metode COMMIT.<br />

DBMS poseduje i održava dnevnik transakcija (tj. dnevnik aktivnosti, log<br />

file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS<br />

ažurirao čuva se:<br />

• vrednost pre ažuriranja (before-image)<br />

• vrednost posle ažuriranja (after-image)<br />

Na naredbu ROLLBACK, DBMS koristi vrednosti pre za datu<br />

transakciju. Pre COMMIT naredbe sistem prvo upisuje vrednosti pre i<br />

posle u log fajl. Ako se prekine COMMIT naredba, mogu se pročitati<br />

- 54 -


vrednosti posle sa log fajla, što omogućava očuvanje konzistentnog<br />

stanja.<br />

1.10.3. Konkurentno izvršavanje transakcija<br />

Nad modernim bazama podataka transakcije se ne obavljaju u<br />

izolovanosti već konkurentno. Više transakcija mogu istovremeno<br />

zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama<br />

otvara se mogućnost da nekontrolisan međusobni uticaj transakcija<br />

dovede do nekonzistentnog stanja.<br />

Transakcija1<br />

Transakcija2<br />

Istovremeno<br />

izvršavanje sve<br />

tri transakcije<br />

Paralelno<br />

izvršavanje<br />

transakcija<br />

vreme<br />

Transakcija3<br />

Transakcija1 Transakcija2 Transakcija3<br />

Serijsko izvršavanje<br />

transakcija<br />

Slika 1.25 Paralelno i serijsko izvršavanje transakcija<br />

DBMS upravlja konkurentnim radom više aplikacija (korisnika),<br />

obezbeđuje sinhronizaciju njihovog rada, a sve u cilju sprečavanja štetnih<br />

posledica pri promenama koje se vrše nad bazom podataka u<br />

višekorisničkom okruženju.<br />

Komponente DBMS koje učestvuju u ovom procesu su:<br />

• Planer (Scheduler),<br />

• Menadžer transakcija (Transaction manager).<br />

Planer vodi računa o redosledu akcija kod više konkurentnih transakcija.<br />

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

- 55 -


se ili vremenski odlaže ili se poništava cela transakcija. Menadžer<br />

transakcija upravlja celokupnim izvršenjem transakcija. Idealan slučaj<br />

izvršavanja transakcija je serijsko izvršavanje, ali je to neefikasno i nije u<br />

skladu sa zahtevima iz realnog sveta. Posledica je korektan rezultat.<br />

Serijsko izvršavanje transakcija, u stvari, znači da:<br />

• nema preplitanja transakcija,<br />

• prvo se završi jedna, zatim počinje druga transakcija<br />

Konkurentno izvršavanje transakcija je serijabilno (linearno) ako daje isti<br />

rezultat kao i serijsko izvršavanje svih transakcija.<br />

1.11. Oporavak baze podataka<br />

Opravak baze podataka (RECOVERY) predstavlja proces vraćanja baze<br />

podataka u korektno stanje. Sasvim je realno, i dešava se, da usled otkaza<br />

sistema mora da se uradi oporavak baze podataka. Uzroci otkaza mogu<br />

biti različiti: greške u programiranju, greške u operativnom sistemu,<br />

nestanak napajanja, havarije i sl.<br />

Proces oporavka se zasniva na redudansi podataka, tj. postojanju<br />

rezervnih kopija (backup), koje mogu da se čuvaju na disku, traci i sl.<br />

Tako, u slučaju otkaza sistema, oštećena baza podataka se rekonstruiše u<br />

ispravno stanje na osnovu poslednje kopije, a nekonzistentno stanje se<br />

rešava tako što se poništavaju nekonzistentne promene, a transakcije se<br />

ponavljaju.<br />

1.12. Osnovne karaketristike savremenih baza podataka<br />

Savremeni računari i komunikaciona tehnologija značajno su uticali na<br />

napredak arhitekture, dizajna, kao i na upotrebu baza podataka i sistema<br />

za obradu transakcija. Njihova unapređena funkcionalnost stvorila je<br />

nove poslovne mogućnosti za preduzeća koja ih koriste, ali isto tako<br />

prouzrokovan je popriličan broj dodatnih zahteva za njihovom<br />

operativnošću.<br />

- 56 -


• Stalna pristupačnost<br />

Zbog toga što je uvek aktivan, informacioni sistem mora biti<br />

operativan tokom radnog vremena preduzeća. U nekim<br />

preduzećima, to znači da sistem mora da bude stalno dostupan.<br />

Na primer, kod sistema za rezervaciju avionskih karata, može da<br />

se zatraži rezervacija karata iz agencija raspoređenih u velikom<br />

broju vremenskih zona, tako da se sistem nikada ne gasi. Kada<br />

sistemi dožive kolaps, to dovedi do poremećaja u poslovanju. Na<br />

primer, ukoliko računar za rezervaciju karata ne radi, ne može se<br />

ni uraditi rezervacija. Mogućnost tolerancije pada sistema zavisi<br />

pre svega od prirode preduzeća. Svakako je jasno da sistem<br />

kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima<br />

sistem za rezervacije. VISA je objavila 2002. godine da je njihov<br />

sistem bio isključen na svega osam minuta u poslednjih pet<br />

godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U<br />

osnovi stalno pristupačnih sistema u suštini su kvalitetan hardver i<br />

softver<br />

• Visoka pouzdanost<br />

Sistem mora precizno da prikaže rezultate svih transakcija. To<br />

znači ne samo da transakcija mora da bude tačno programirana,<br />

već i da ne sme doći do greške zbog uporednog (paralelnog)<br />

odvijanja transakcija, ili međusobne komunikacije delova<br />

programa za vreme izvršenja transakcija. Međutim, veliki sistemi<br />

za prenos transakcija uključuje hiljade hardverskih i softverskih<br />

modula, i malo je verovatno da svi rade savršeno precizno. Ipak,<br />

sistem ne sme da zaboravi rezultate bilo koje završene<br />

transakcije. Na primer, baza bodataka u bankarskom sistemu<br />

mora precizno da prikaže efekat svih ulaganja i podizanja novca<br />

koji su se obavili, i ne sme da zaboravi rezultate bilo kakve<br />

transakcije tog tipa.<br />

• Veliki protok informacija<br />

Pošto preduzeća imaju veliki broj klijenata zbog kojih moraju da<br />

koriste sisteme za prenos transakcija, sistem mora da bude u<br />

stanju da obavlja više transakcija u sekundi. Na primer, sistem za<br />

odobravanje kreditnih kartica može da obavlja na hiljade<br />

transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije<br />

ne mogu izvršavati serijski, već se moraju izvršavati uporedno;<br />

što sa druge strane značajno komplikuje strukturu sistema.<br />

- 57 -


• Brza reakcija<br />

Sistem mora brzo da odreaguje zbog kupaca koji čekaju na<br />

njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od<br />

vrste naredbe koja se zadaje sistemu. Možemo da čekamo<br />

petnaest sekundi ispred bankomata kada podižemo novac, ali<br />

očekujemo, da, kada telefoniramo, poziv bude uspostavljen za<br />

nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija,<br />

reakcija sistema ne dogodi u tačno utvrđenom vremenu,<br />

transakcija se neće obavljati pravilno. Na primer, u fabrici sa<br />

automatizovanim sistemom, u transakciji može od sistema da se<br />

zatraži da aktivira neku mašinu pre nego što deo za obradu dođe<br />

do nje. Za aplikacije ovog tipa se kaže da imaju tzv. ’prinudno’<br />

radno vreme.<br />

• Dugotrajnost<br />

Sistemi za prenos transakcija su veoma kopleksni, i nisu lako<br />

zamenljivi. Stoga, oni moraju biti dizajnirani tako da se<br />

pojedinačni hardverski i softverski moduli mogu zameniti novijim<br />

verzijama (koje imaju bolje performanse ili dodatne funkcije) bez<br />

velikih poremećaja unutar sistema.<br />

• Bezbednost<br />

Mnogi sistemi za prenos transakcija sadrže poverljive informacije<br />

o pojedincima (npr. stvari koje su kupili, brojeve kreditnih<br />

kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Pošto<br />

ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta<br />

(uključujući i Internet) bezbednost je važna. Korisnici moraju da<br />

se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da<br />

imaju pristup samo onim transakcijama za čije izvršenje su<br />

ovlašćeni (samo službenik u banci može da izvrši transakcije na<br />

nekom računu). Informacije u bazi podataka ne smeju da se<br />

presreću i čitaju od strane hakera, a informacije prenesene između<br />

korisnika i sis-tema se ne smeju menjati i najčešće treba da budu<br />

zaštićene od prisluškivanja.<br />

- 58 -


1.13. Zaključak<br />

Tokom proteklih decenija došlo je do naglog porasta u broju i važnosti<br />

aplikacija baza podataka. <strong>Baze</strong> se koriste za skladištenje, manipulaciju i<br />

dobijanje podataka u organizacijama svih vrsta. Baza podataka je<br />

organizovan skup logički povezanih podataka. Podatak definišemo kao<br />

kao predstavnika objekta ili nekog događaja, koji bi bili od važnosti u<br />

korisnikovom realnom okruženju. Informacija je podatak koji je tako<br />

obrađen da nakon njegove upotrebe, korisnik oplemenjuje svoja<br />

saznanja. I podatak, kao i informacija se mogu čuvati u bazi podataka.<br />

Metapodatak jeste onaj podatak koji opisuje karakteristike korisničkih<br />

podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka<br />

(DBMS) je softverski sistem koji se koristi da stvara, održava i<br />

obezbeđuje kontrolu nad pristupom bazama podataka. DBMS skladišti<br />

metapodatke u delu koji je centralno skladište za sve definicije podataka,<br />

njihove veze, monitoring i formati izveštaja kao i ostale komponente<br />

sistema.<br />

Klasični sistemi zasnovani na datotekama i programskim jezicima su<br />

razvijeni u ranijoj računarskoj eri, kako bi računari mogli da skladište,<br />

manipulišu i izvlače velike fajlove podataka. Ovi sistemi (i danas u<br />

upotrebi) su imali veliki niz nedostataka kao što su zavisnost između<br />

podataka i programa, dupliranje podataka, njihova podela, kao i vreme<br />

izvršenja. Pristu preko baza podataka nastao je kao odgovor na te<br />

nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe,<br />

poslovne baze i Internet baze. U poslovne baze ulaze i skladišta podataka<br />

i integrisani programi za podršku u odlučivanju.<br />

Tehnologija baza podataka je počela sa razvojem tokom šezdesetih<br />

godina prošlog veka, i od tada se razvija bez prekida, sa tendencijama ka<br />

daljem usavršavanju i uklanjanju bilo kakvih poteškoća kada su u pitanju<br />

upravljanje, pristup i održavanje podataka u bazi podataka.<br />

Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima<br />

koji su bitni za njeno poslovanje. Kako je broj internih podataka i<br />

podataka iz okruženja ogroman nemoguće je sve podatke i sve uočene<br />

detalje opisati i sačuvati unutar informacionog sistema. Postupkom<br />

selekcije identifikuju se i čuvaju samo relevantni podaci i stvaraju modeli<br />

- 59 -


ealnog sveta. Oni su izraz i posledica zahteva za obradom podataka<br />

relevantnih za određeno područje primene. Istorijski gledano sistemi za<br />

upravljanje bazama podataka mogu se podeliti u sledeće osnovne<br />

modele: hijerarhijski model, mrežni model, relacioni model i objektni<br />

model<br />

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

bazama podataka koji imaju troslojnu arhitekturu ili varijantu te<br />

arhitekture. Aplikativni programi komuniciraju s bazom podataka preko<br />

odgovarajućeg eksternog modela. Zahtev za učitavanje određenih<br />

podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući<br />

korisnički model. DBMS preslikava eksterni model na konceptualni i<br />

konceptualni na interni model.<br />

Transakcija je niz operacija nad bazom podataka i odgovara jednoj<br />

logičkoj jedinici posla u realnom sistemu, koja se izvršava do kraja ili se<br />

poništava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i<br />

da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom<br />

smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se<br />

obezbeđuje očuvanje konzistentnosti baze.<br />

1.14. Literatura<br />

[1] James L. Johnson, Database: Models, Languages, Design, Oxford<br />

University Press, 1997., London.<br />

[2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems,<br />

Pearson, Addison Wesley, 2004.<br />

[3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison<br />

Wesley, Boston, MA<br />

[4] Branislav Lazarević, Z. Marjanović, N. Aničić, S. Babarogić, <strong>Baze</strong><br />

podataka, FON, Beograd, 2003.<br />

[5] Vladimir Blagojević, Relacione baze podataka, Klub Nikola Tesla,<br />

Beograd, 2001.<br />

[6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern<br />

Database Management, Pearson, Prentice Hall, 2005.<br />

[7] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag,<br />

Berlin<br />

[8] Craig S. Mullins, Administracija baza podataka, Kompjuter<br />

biblioteka, 2003.<br />

- 60 -


2. O <strong>SQL</strong>-u<br />

<strong>SQL</strong> (Stuctiured Query Language) je standardni relacioni upitni jezik<br />

(ANSI - American National Standards Institute - standard). Ovaj jezik se<br />

koristi za pristup i manipulaciju sistemima za upravljanje bazom<br />

podataka (DBMS - DataBase Management System), što najčešće<br />

podrazumeva čitanje i izmenu podataka u različitim bazama podataka.<br />

Tvorcem <strong>SQL</strong>-a se smatra Chamberlin, a <strong>SQL</strong> je nastao u iBM-ovoj<br />

istraživačkoj laboratoriji (IBM Research Laboratori) u San Jose-u,<br />

Kalifornija 1974. godine. Što je na istom mestu gde je i E.F. Codd 1970<br />

definisao osnovne koncepte relacionog modela podataka <strong>SQL</strong> koji su bili<br />

osnova za dalji razvoj relacionih baza podataka. <strong>SQL</strong> je uspešno<br />

primenjen u sistemima za upravljanje bazom podataka kao što su MS<br />

Access, DB2, Informix, MS <strong>SQL</strong> Server, Oracle, Sybase itd.<br />

Osnovne karakteristike <strong>SQL</strong>-a:<br />

1. Jednostavnost i jednobraznost pri korišćenju<br />

Tabela (relacija) se kreira jednom izvršnom naredbom. Odmah po<br />

kreiranju tabela je raspoloživa za korišćenje. Svi podaci<br />

memorisani su u tabelama i rezultat bilo koje operacije se logički<br />

prikazuje u obliku tabele.<br />

2. Mogućnost interaktivnog i klasičnog (aplikativnog)<br />

programiranja<br />

Koristeći <strong>SQL</strong> dobijaju se odgovori na trenutne, unapred ne<br />

predvidene zahteve ili se <strong>SQL</strong> blokovi "ugrađuju" u klasični viši<br />

programski jezik (FORTRAN, COBOL. PL/I, C) omogućujući<br />

klasičnu obradu gde korisnik same aplikacije najčešće uopšte nije<br />

ni svestan da koristi <strong>SQL</strong>.<br />

3. Neproceduralnost (tj. proceduralnost u minimalnom stepenu).<br />

Ni za jedan jezik se ne može reći da je potpuno neproceduralan,<br />

već da je neproceduralan u većem ili manjem stepenu. <strong>SQL</strong> je u<br />

velikoj meri neproceduralan jer definiše ŠTA, a ne KAKO: koji<br />

podaci se žele, koje tabele se referenciraju i koji uslovi treba da<br />

budu ispunjeni, bez precizne specifikacije procedure za dobijanje<br />

željenih podataka. Preciznije rečeno <strong>SQL</strong> je na višem nivou<br />

apstrakcije nego klasični viši programski jezici, odnosno mnogi<br />

- 61 -


podjezici relacionih sistema za upravljanje bazama podataka koji<br />

se često koriste.<br />

Osnovne mogućnosti <strong>SQL</strong>-a su:<br />

• <strong>SQL</strong> omogućava pristup bazi podataka<br />

• <strong>SQL</strong> je jedan od ANSI standardardnih racunarskih jezika<br />

• <strong>SQL</strong> može da izvršava upite nad bazom podataka<br />

• <strong>SQL</strong> može da prikazuje podatke iz baze podataka<br />

• <strong>SQL</strong> može da unosi nove podatke u bazu podataka<br />

• <strong>SQL</strong> može da obriše postojeće zapise iz baze podataka<br />

• <strong>SQL</strong> može da izmeni podatke u bazi podataka<br />

Režimi rada<br />

<strong>SQL</strong> podržava dva režima rada sa BP:<br />

• Interaktivni: korisnik zadaje jednu po jednu <strong>SQL</strong> naredbu, preko<br />

tastature a rezultati se prikazuju na monitoru, pristup BP je<br />

ograničen jedino pravima korisnika<br />

• Programski (BASH): korisnik pokreće program u kome su<br />

ugrađene <strong>SQL</strong> naredbe, pristup BP je ograničen pored prava<br />

korisnika i sadržajem programa koji se pokreće<br />

- 62 -


3. INSTALACIJA, KONFIGURISANJE I<br />

POKRETANJE My<strong>SQL</strong>-a<br />

3.1. Proces isntalacije<br />

Procedura instalacije ovog pageta se kao i kod većine pokreće na<br />

standardni način, pokretanjem fajl setup.exe. Posle startovanja ovog fajla<br />

pojaviće se prozor kao na slici:<br />

Slika 3.1 Prvi prozor Wizard-a<br />

Ovo je prva stranica Setup Wizarda koji će vam pomoći da na svoj<br />

Windows sistem instalirate My<strong>SQL</strong> serverski program. Da bi ste<br />

nastavili dalje kliknite na dugme Next, posle čega će se pojaviti sledeći<br />

prozor kao na slici:<br />

- 63 -


Sika 3.2 Drugi prozor Wizard-a<br />

Na ovom prozoru je potrebno izabrati tip instalacije koju želite. Prva<br />

opcija je Typical koja je tipična i vrlo upotrebljiva za većinu korisnika pa<br />

je poželjno nju izabrati. Pored nje tu je i Complete instalacija koja će<br />

instalirati sve programe koji postoje u ovom paketu, i na kraju je opcija<br />

Custom kod koje možete ručno izabrati šta od komponenata želite da se<br />

instalira a šta ne. Izaberite Typical ako već nije izabrana i kliknite na<br />

dugme Next da bi nastavili instalaciju. Pojaviće se treća stranica Wizarda<br />

koja izgleda kao na slici:<br />

- 64 -


Sika 3.3 Treći prozor Wizard-a<br />

Da bi instalirali My<strong>SQL</strong> server kliknite na dugme Install posle čega je<br />

potrebno sačekati neko vreme dok se ne završi proces instalacije (ovo<br />

može potrajati neko vreme u zavisnosti od brzine vašeg računara). Po<br />

završetku instalacije pojaviće se prozor kao na slici:<br />

- 65 -


Sika 3.4 Četvrti prozor Wizard-a<br />

Ovde imamo tri opcije. Prva je da kreiramo novi account za My<strong>SQL</strong>,<br />

druga je da koristimo neki koji smo već ranije kreirali a treća je da<br />

preskočimo ovaj korak jer on nije neophodan ako ne želimo da kreiramo<br />

svoj account na My<strong>SQL</strong>.com-u. Ovde ćemo preskočiti ovaj korak i<br />

nećemo kreirati novi account, izaberite opcije Skip Sign-Up i kliknite na<br />

dugme Next, posle čega će se pojaviti prozor kao na slici:<br />

- 66 -


Sika 3.5 Peti prozor Wizard-a<br />

Na ovom prozoru vidimo da je proces instalacije završen i možete<br />

izabrati ukoliko želite da konfigurišete server (potrebno je da opcija<br />

Configure the My<strong>SQL</strong> Server now bude izabrana kao na slici). Ukoliko<br />

ne želite da sada konfigurišete server već kasnije dečekirajte ovu opciju.<br />

Za sada će te ovu opciju ostaviti uključenu da bi demonstrirali kako se<br />

konfiguriše server. Kliknitu na taster Next da bi se pojavio prvi prozor<br />

Wizard-a koji će vam pomoći da konfigurišete server.<br />

- 67 -


3.2. Konfigurisanje My<strong>SQL</strong> servera<br />

Ukoliko ste u toku instalacije izabrali gore pomenutu opciju ili ukoliko<br />

ste iz Start menija izabrali My<strong>SQL</strong> Server Instance Config Wizard<br />

pojaviće se prva stranica ovog Wizarda kao na slici:<br />

Slika 3.6 Prvi prozor Wizard-a za konfiguraciju My<strong>SQL</strong>-a<br />

Ovde možete primetiti da postoje dve opcije koje možete izabrati. Prva je<br />

Detailed Configuration čijim izborom će te moći do detalja ručno da<br />

podesite svoj server. Druga je Standrad Configuration koja je<br />

preporučljiva za većinu instalacija. Izaberite Standard Configuration i<br />

zatim kliknite na dugme Next posle čega će se pojaviti prozor kao na<br />

slici:<br />

- 68 -


Slika 3.7 Drugi prozor Wizard-a za konfiguraciju My<strong>SQL</strong>-a<br />

Ovde je potrebno da sve ostavite kako jeste, samo uključite opciju<br />

Include Bin Directory in Windows Path (ovo nije obavezno ali je<br />

poželjno da bi kasnije mogli iz komandne linije lakše da pozivate<br />

klijentski program). Takođe proverite da li je izabrana opcija Lanch the<br />

My<strong>SQL</strong> Server automatically koja znači će pri svakom pokretanju<br />

operativnog sistema automatski biti pokrenut i server, a zatim kliknite na<br />

taster Next da bi se pojavio sledeći prozor kao na slici:<br />

- 69 -


Slika 3.8 Treći prozor Wizard-a za konfiguraciju My<strong>SQL</strong>-a<br />

Ovde je vrlo bitno u polje New root password upisati šifru koju će te<br />

koristiti kasnije za rad sa bazom podataka i u sledećem polju Confirm<br />

potvrditi to jest još jednom uneti istu šifru a zatim kliknite na Next da bi<br />

nastavili dalje (ovde je moguće izabrati i opciju Create An Anonymous<br />

Account što znači da će svako moći da se loguje kao Anonymous bez<br />

šifre, ovo je poželjno izbegavati). Posle izbora opcije Next pojaviće se<br />

prozro kao na slici:<br />

- 70 -


Slika 3.9 Četvrti prozor Wizard-a za konfiguraciju My<strong>SQL</strong>-a<br />

Ovo je u stvari statusni prozor koji će prikazivati tok konfigurisanja to<br />

jest pojedinačnih stavki i primenu podešavanja. Da bi konfigurisali vaš<br />

server potrebno je izabrati dugme Execute i sačekati nekoliko trenutaka<br />

da se konfigurisanje završi posle čega će se ukoliko je sve u redu pojaviti<br />

prozor kao na slici:<br />

- 71 -


Slika 3.10 Peti prozor Wizard-a za konfiguraciju My<strong>SQL</strong>-a<br />

Ovim ste završili proces instalacije i konfigurisanja. Startujete My<strong>SQL</strong> i<br />

možete početi sa radom.<br />

- 72 -


3.3. Pokretanje My<strong>SQL</strong>-a<br />

Posle završene instalacije i konfigurisanja samog servera potrebno je<br />

pokrenuti klijentski program koji će vam omogućiti rad sa bazom<br />

podataka. Da bi ste startovali program idite na Start meni, zatim<br />

Programs, pa onda My<strong>SQL</strong>, pa My<strong>SQL</strong> Server 5.0 i na kraju My<strong>SQL</strong><br />

Command Line Client posle čega će se pojaviti prozor kao na slici:<br />

Slika 3.11 Prvi prozor My<strong>SQL</strong>-a<br />

Ovde je potrebno uneti root password koji ste zadali prilikom<br />

instalacije, unesite šifru i pritisnite taster Enter na tastaturi posle čega će<br />

se pojaviti prozor kao na sledećoj slici:<br />

- 73 -


Slika 3.12 Prvi prozor My<strong>SQL</strong>-a<br />

Ukoliko je sve u redu pojaviće se prozor koji izgleda isto ovako i to znači<br />

da ste se upravo uspešno ulogovali i da vam je sada omogućen rad sa<br />

ovim SUBP-om. Sada možete izabrati neku od postojećih baza ili kreirati<br />

novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu<br />

DDL gde je to objašnjeno).<br />

Ukoliko ne znate koje se baze nalaze trenutno na sistemu to možete<br />

proveriti kucanjem naredbe: SHOW DATABASES; posle čega će se na<br />

ekranu pojaviti spisak svih postojećih baza na ovom sistemu.<br />

- 74 -


4. <strong>SQL</strong> TIPOVI PODATAKA<br />

My<strong>SQL</strong> DBMS podržava veći broj tipova podataka koje možemo svrstati<br />

u tri osnovne kategorije:<br />

• Numerički tipovi podataka<br />

• Vremenski tipovi podataka<br />

• Binarni i tekstualni tipovi podataka<br />

My<strong>SQL</strong> podržava i proširenja za podršku podataka većeg obima. Takođe,<br />

osim tipa podataka skup vrednosti se može dodatno definisati i<br />

korišćenjem atributa koji mogu biti opšti (npr. da je unos vrednosti<br />

obavezan) i specifični za određeni tip podataka (npr. Signed/Unsigned za<br />

tip Integer).<br />

4.1. Numerički tipovi podataka<br />

My<strong>SQL</strong> u potpunosti podržava <strong>SQL</strong> standard vezan za numeričke tipove<br />

podataka. U numeričke tipove podataka spadaju celobrojne vrednosti<br />

(INTEGER, SMALLINT, DECIMAL i NUMERIC) kao i<br />

aproksimativne vrednosti (FLOAT, REAL i DOUBLE PRECISION).<br />

Sinonim za INTEGER je INT dok je sinonim za DECIMAL DEC.<br />

Tip Bajtova Min. vrednost Maks. vrednost<br />

tinyint 1<br />

smallint 2<br />

mediumint 3<br />

int 4<br />

bigint 8<br />

Signed/Unsigned<br />

-128 127<br />

0 255<br />

-32768 32767<br />

0 65535<br />

- 75 -<br />

Signed/Unsigned<br />

-8388608 8388607<br />

0 16777215<br />

-2147483648 2147483647<br />

0 4294967295<br />

-9223372036854775808 92233720368547758<br />

07<br />

18446744073709551<br />

0<br />

615<br />

Tabela 4.1 Integer tipovi podataka


Najbitniji atributi numeričkih tipova podataka su "Signed/Unsigned" i<br />

"Zerrofil". "Signed/Unsigned" atribut označava da li će se u poljima tog<br />

tipa čuvati samo pozitivne ili i pozitivne i negativne vrednosti. U<br />

zavisnosti od ovog parametra se određuje i donja/gornja granica unetih<br />

vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima<br />

dodaje nule do definisane dužine (npr. unos vrednosti "4" u polje tipa<br />

INT(5) će se odraziti kao vrednost "00004") i automatski postavlja i<br />

parametar "Unsigned".<br />

Tipovi FLOAT i DOUBLE se koriste za predstavljanje približnih<br />

vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23<br />

podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip<br />

DOUBLE. MySql automatski podržava zaokruživanje tako da će se<br />

vrednost 999.00009 uneta u polje definisano kao ime_polja<br />

DOUBLE(5,4) sačuvati kao 999.0001.<br />

Tipovi DECIMAL i NUMERIC se koriste za predstavljanje tačnih<br />

numeričkih vrednosti. Razlika između ovih tipova i tipova FLOAT i<br />

DOUBLE je u tome što se kod tipova DECIMAL i NUMERIC parametar<br />

preciznost zahteva kao statički (npr. kurs_dinara DECIMAL(3,2)).<br />

4.2. Tipovi podataka vezani za datum i vreme<br />

U tipove podataka namenjenih skladištenju vrednosti vezanih za vreme<br />

spadaju:<br />

●<br />

●<br />

●<br />

●<br />

●<br />

DATETIME<br />

DATE<br />

TIME<br />

TIMESTAMP<br />

YEAR<br />

Svaki od navedenih tipova podataka ima sopstveni skup validnih<br />

vrednosti kao i “nula” vrednost koja zamenjuje unešene vrednosti koje<br />

nisu validne. Tip TIMESTAMP poseduje automatsko ponašanje tj.<br />

automatski unosi vrednost sa sistemskog časovnika. U Tabeli 2.2.1 je<br />

prikazan format podataka vezanih za datum i vreme.<br />

- 76 -


Tip podataka<br />

DATETIME<br />

DATE<br />

TIME<br />

TIMESTAMP<br />

YEAR 0000<br />

“nula” vrednost<br />

'0000-00-00 00:00:00'<br />

'0000-00-00'<br />

'00:00:00'<br />

'0000-00-00 00:00:00'<br />

Tabela 4.2 – Format podataka vezanih za datum i vreme<br />

Navedeni tipovi podataka vezani za datum i vreme nemaju specifične<br />

parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar<br />

“length”.<br />

Podrazumevana vrednost parametar “length” kod tipa TIMESTAMP je<br />

14 a može biti i dodatno navedena:<br />

● 14 (format YYYYMMDDHHMMSS)<br />

● 12 (format YYYYMMDDHHMM)<br />

● 10 (format YYYYMMDDHH)<br />

● 8 (format YYYYMMDD)<br />

● 6 (format YYYYMM)<br />

● 4 (format YYYY)<br />

● 2 (format YY)<br />

Podrazumevana vrednost parametar “length” kod tipa YEAR je 4 a može<br />

biti i dodatno navedena kao vrednost 4 (format YYYY) ili 2 (format<br />

YY). U slučaju kada je parametar “length” postavljen na vrednost 4 kod<br />

YEAR tipa podataka, unešene vrednosti u opsegu 00-69 se konvertuju u<br />

2000-2069 dok se vrednosti 70-99 konvertuju u 1970-1999.<br />

4.3. Binarni i tekstualni tipovi podataka<br />

U tipove podataka namenjenih skladištenju binarnih i tekstualnih<br />

vrednosti spadaju:<br />

●<br />

●<br />

●<br />

●<br />

CHAR i VARCHAR<br />

BINARY i VARBINARY<br />

BLOB i TEXT<br />

ENUM i SET<br />

- 77 -


CHAR i VARCHAR tipovi podataka su namenjeni za skladištenje kraćih<br />

nizova karaktera. Oba tipa imaju parametar “length” (npr. ime<br />

CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa može biti<br />

numerička vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do<br />

65.536. Osim razlike u dužini stringa koji se skladišti, osnovna razlika<br />

između između ovih tipova je način na koji se podaci skladište u bazi.<br />

Naime, vrednost parametra “length” se kod tipa CHAR koristi statički tj.<br />

razlika između maksimalne dužine i unete dužine stringa se popunjava<br />

znakom razmaka. Kod VARCHAR tipa se dužina prilagođava unetoj<br />

dužini stringa.<br />

BINARY i VARBINARY tipovi su veoma slični CHAR i VARCHAR<br />

tipovima sa tom razlikom što su BINARY i VARBINARY tipovi<br />

namenjeni skladištenju binarnih podataka. Ova dva tipa podataka su<br />

namenjena uglavnom za skladištenje manjih količina podataka. Za<br />

skladištenje fajlova u bazi podataka se radije koristi BLOB tip podataka.<br />

BLOB tip podataka (Binary Large OBject) i njegove podvarijante<br />

(TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene<br />

za skladištenje binarnih nizova. TEXT tip podataka i njegove<br />

podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su<br />

namenjene za skladištenje nizova karaktera različite veličine. BLOB i<br />

TEXT tipovi podataka ne mogu imati "default" vrednosti.<br />

ENUM tip podataka je namenjen za skladištenje tekstualnih vrednosti s<br />

tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti<br />

koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga",<br />

"treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je<br />

ograničena na maksimalno 65.536 elemenata. SET tip podataka je sličan<br />

ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata<br />

ograničena na 64 elementa kao i da postoje određene razlike pri<br />

indeksiranju elemenata liste.<br />

- 78 -


4.4. Zahtevi pri skladištenju<br />

Numerički tipovi:<br />

Tip podataka<br />

Zahtev pri skladištenju<br />

TINYINT<br />

1 bajt<br />

SMALLINT<br />

2 bajta<br />

MEDIUMINT<br />

3 bajta<br />

INT, INTEGER<br />

4 bajta<br />

BIGINT<br />

8 bajtova<br />

FLOAT(p) 4B za 0


Tip podataka<br />

Zahtev pri skladištenju<br />

M


tekstualnog tipa podatka umesto vremenskog onemogućava funkcija<br />

vezanih za vremenski tip podatka. Međutim, odabir INTEGER tipa u<br />

ovakvim situacijama nije redak slučaj jer se izgubljena funkcionalnost<br />

DMBS-a nadoknađuje korišćenjem nekog od programskih jezika koji<br />

imaju mogućnost rada sa pomenutim DBMS-om.<br />

Takođe, pri izboru tipa podataka treba imati u vidu i zahteve za<br />

skladištenjem određenih tipova kao i brzinu rada.<br />

4.6. Sinhronizacija tipova podataka sa drugim DBMS<br />

sistemima<br />

Da bi se olakšalo importovanje modela rađenih za druge DBMS sisteme<br />

u My<strong>SQL</strong> DBMS, My<strong>SQL</strong> podržava sledeće mapiranje tipova:<br />

Ostali DBMS<br />

BOOL<br />

BOOLEAN<br />

CHAR VARYING(M)<br />

DEC<br />

FIXED<br />

FLOAT4<br />

FLOAT8<br />

INT1<br />

INT2<br />

INT3<br />

INT4<br />

INT8<br />

LONG VARBINARY<br />

LONG VARCHAR<br />

LONG<br />

MIDDLEINT<br />

NUMERIC<br />

MySql DBMS<br />

TINYINT<br />

TINYINT<br />

VARCHAR(M)<br />

DECIMAL<br />

DECIMAL<br />

FLOAT<br />

DOUBLE<br />

TINYINT<br />

SMALLINT<br />

MEDIUMINT<br />

INT<br />

BIGINT<br />

MEDIUMBLOB<br />

MEDIUMTEXT<br />

MEDIUMTEXT<br />

MEDIUMINT<br />

DECIMAL<br />

Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS<br />

sistemima<br />

- 81 -


U praksi ovo znači da je moguće iskoristiti strane definicije tipova<br />

(navedenih u levoj koloni) za kreiranje tabela s tim da će se one<br />

automatski prevesti u MySql tipove podataka (navedene u desnoj koloni).<br />

4.7. Unos različitih tipova podataka<br />

U zavisnosti od tipa podataka, različiti tipovi podataka imaju različit<br />

način unosa pomoću SUBP-a u bazu podataka.<br />

• Numerički tipovi podataka<br />

Unose se na klasičan način, na primer:<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(123, 'Artikl br. 1', 199.99, 100, 'Germany');<br />

U prethodnom primeru polja Magacin_rb, Cena i Količina su<br />

numeričkog tipa i unose se na klasičan način, bez ikakvih specijalnih<br />

znakova.<br />

• Vremenski tipovi podataka<br />

Unose se na klasičan način, na primer:<br />

INSERT INTO Magacin<br />

(Magacin_rb, Naziv, Cena, Datum)<br />

VALUES<br />

(12, 'Disketa', 59.99, 12/09/2005);<br />

U prethodnom primeru polje Datum je vremenskog tipa.<br />

• Binarni i tekstualni tipovi podataka<br />

Unose se obavezno između jednostrukih znakova novoda, na primer:<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(123, 'Artikl br. 1', 199.99, 100, 'Germany');<br />

U prethodnom primeru polja Naziv i ZamljaPorekla su tekstualnog tipa<br />

i unose se između jednostrukih znakova navoda.<br />

- 82 -


5. DDL (Data Definition Language)<br />

5.1. Kreiranje baze podataka<br />

Funkcija kreiranja baze podataka putem SUBP-a se odnosi na kreiranje<br />

nove prazne baze sa svim potrebnim elementima da je posle toga moguć<br />

rad sa njom. Kreiranje baze podataka se u <strong>SQL</strong> jeziku vrši pomoću<br />

naredbe CREATE DATABASE.<br />

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name<br />

[create_specification [, create_specification] ...]<br />

create_specification:<br />

[DEFAULT] CHARACTER SET charset_name<br />

| [DEFAULT] COLLATE collation_name<br />

Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE<br />

Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno<br />

je ukucati sledeće:<br />

CREATE DATABASE PRODAJA;<br />

Ovom naredbom kreirana je nova prazna baza podataka pod imenom<br />

PRODAJA. Sada je moguće koristiti ovu bazu podataka za dalji rad. Sve<br />

što je potrebno jeste izabrati bazu sa kojom želite da radite, samim<br />

kreiranjem baze ne podrazumeva se da vi automatski hoćete sa njom da<br />

nastavite da radite pa je zato potrebno ukucati sledeću naredbu:<br />

USE PROBA;<br />

Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa<br />

kojom želimo da radimo (ovo je analogno kada u nekom programu<br />

izaberemo opciju Open pa izaberemo određeni fajl sa kojim želimo da<br />

radimo).<br />

- 83 -


5.2. Kreiranje tebele u bazi podataka<br />

Funkcija kreiranja nove tabele u bazi podataka putem SUBP-a se odnosi<br />

na kreiranje nove prazne tabele u bazi podataka. Kreiranje nove tabele u<br />

bazi podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe CREATE TABLE.<br />

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name<br />

[(] LIKE old_tbl_name [)];<br />

create_definition:<br />

column_definition<br />

| [CONSTRAINT [symbol]] PRIMARY KEY [index_type]<br />

(index_col_name,...)<br />

| KEY [index_name] [index_type] (index_col_name,...)<br />

| INDEX [index_name] [index_type] (index_col_name,...)<br />

| [CONSTRAINT [symbol]] UNIQUE [INDEX]<br />

[index_name] [index_type] (index_col_name,...)<br />

| [FULLTEXT|SPATIAL] [INDEX] [index_name]<br />

(index_col_name,...)<br />

| [CONSTRAINT [symbol]] FOREIGN KEY<br />

[index_name] (index_col_name,...)<br />

[reference_definition]<br />

| CHECK (expr)<br />

column_definition:<br />

col_name type [NOT NULL | NULL] [DEFAULT default_value]<br />

[AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'string']<br />

[reference_definition]<br />

type:<br />

TINYINT[(length)] [UNSIGNED] [ZEROFILL]<br />

| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]<br />

| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]<br />

| INT[(length)] [UNSIGNED] [ZEROFILL]<br />

| INTEGER[(length)] [UNSIGNED] [ZEROFILL]<br />

| BIGINT[(length)] [UNSIGNED] [ZEROFILL]<br />

| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]<br />

| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]<br />

| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]<br />

| DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]<br />

| NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]<br />

| DATE<br />

| TIME<br />

| TIMESTAMP<br />

| DATETIME<br />

| CHAR(length) [BINARY | ASCII | UNICODE]<br />

| VARCHAR(length) [BINARY]<br />

- 84 -


| TINYBLOB<br />

| BLOB<br />

| MEDIUMBLOB<br />

| LONGBLOB<br />

| TINYTEXT<br />

| TEXT<br />

| MEDIUMTEXT<br />

| LONGTEXT<br />

| ENUM(value1,value2,value3,...)<br />

| SET(value1,value2,value3,...)<br />

| spatial_type<br />

index_col_name:<br />

col_name [(length)] [ASC | DESC]<br />

reference_definition:<br />

REFERENCES tbl_name [(index_col_name,...)]<br />

[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]<br />

[ON DELETE reference_option]<br />

[ON UPDATE reference_option]<br />

reference_option:<br />

RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT<br />

Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE<br />

Ukucajte sledeće primere i napravićete nekoliko tabela u bazi podataka<br />

PRODAJA koja je kreirana u prvom primeru.<br />

CREATE TABLE Artikl (<br />

rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,<br />

Magacin_rb INTEGER UNSIGNED NOT NULL,<br />

Naziv VARCHAR(255) NULL,<br />

Cena FLOAT NULL,<br />

Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0,<br />

ZemljaPorekla VARCHAR(50) NULL,<br />

PRIMARY KEY(rb),<br />

INDEX Artikl_FKIndex1(Magacin_rb)<br />

);<br />

CREATE TABLE Dobavljac (<br />

rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,<br />

Naziv VARCHAR(255) NOT NULL,<br />

Adresa VARCHAR(255) NULL,<br />

Telefon VARCHAR(30) NULL,<br />

PRIMARY KEY(rb)<br />

);<br />

- 85 -


CREATE TABLE Dobavljac_Artikl (<br />

Dobavljac_rb INTEGER UNSIGNED NOT NULL,<br />

Artikl_rb INTEGER UNSIGNED NOT NULL,<br />

PRIMARY KEY(Dobavljac_rb, Artikl_rb),<br />

INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb),<br />

INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb)<br />

);<br />

CREATE TABLE Kupac (<br />

rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,<br />

Artikl_rb INTEGER UNSIGNED NOT NULL,<br />

Ime VARCHAR(25) NOT NULL,<br />

Prezime VARCHAR(25) NOT NULL,<br />

Adresa VARCHAR(50) NOT NULL,<br />

Telefon VARCHAR(30) NOT NULL,<br />

email VARCHAR(30) NULL,<br />

PRIMARY KEY(rb),<br />

INDEX Kupac_FKIndex1(Artikl_rb)<br />

);<br />

CREATE TABLE Magacin (<br />

rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,<br />

Adresa VARCHAR(50) NOT NULL,<br />

Telefon VARCHAR(30) NOT NULL,<br />

Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0,<br />

PRIMARY KEY(rb)<br />

);<br />

U prethodnim primerima ukucali ste naredbe kojima je kreirano pet<br />

različitih tabela u bazi podataka PRODAJA koje ćemo koristiti i u<br />

daljim primerima za vežbanje.<br />

- 86 -


5.3. Naredbe za definisanje podataka<br />

Omogućuju definisanje resursa relacione baze podataka. Pod<br />

resursima BP se najčešće podrazumevaju:<br />

1. struktura BP,<br />

2. tabele,<br />

3. atributi,<br />

4. tipovi podataka,<br />

5. ograničenja,<br />

6. pomoćni indeksi za direktan pristup itd.<br />

Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogući<br />

da izvršimo sledeće operacije:<br />

1. kreiranje baze podataka<br />

2. kreiranje tebele baze podataka<br />

3. kreiranje indeksa nad kombinacijom kolona tabele<br />

4. kreiranje virtuelne tabele - "pogleda"<br />

5. izmena definicije tabele<br />

6. izmena pogleda u bazi podataka<br />

7. promena imena tabeli u bazi podataka<br />

8. brisanje tabele iz baze podataka<br />

9. uklanjanje indeksa iz tabele<br />

10. uklanjanje baze podataka<br />

- 87 -


5.4. Kreiranje indeksa u bazi podataka<br />

Funkcija kreiranja indeksa u tabeli u baze podataka putem SUBP-a se<br />

odnosi na kreiranje novog indeksa u tabeli u bazi podataka (iako se on<br />

uglavnom kreira pri samom kreiranju tabela baze podataka (pogledajte<br />

prethodne primere gde će te primetiti da se često na kraju navodi<br />

primarni ključ i ako postoje i ostali indeksi), koji će omogućiti lakše<br />

pretraživanje i ostale funkcije koje se dobijaju indeksiranjem nekog od<br />

polja u tabeli baze podataka. Kreiranje novog indeksa u tabele baze<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe CREATE INDEX.<br />

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name<br />

[USING index_type]<br />

ON tbl_name (index_col_name,...)<br />

index_col_name:<br />

col_name [(length)] [ASC | DESC]<br />

Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX<br />

Kreiraćemo indeks u tabeli Magacin nad poljem Telefon (strukturu<br />

tabele pogledajte tamo gde je ona kreirana) sledećom naredbom:<br />

CREATE INDEX K2 ON Magacin(Telefon);<br />

- 88 -


5.5. Kreiranje virtuelne tabele - "pogleda"<br />

Funkcija kreiranja pogleda (VIEW) u bazi podataka putem SUBP-a se<br />

odnosi na kreiranje pogleda tj. virtualne tabele koja se koristi u<br />

slučajevima kada se često izvršavana neki isti upit nad određenom<br />

tabelom ili više tabela u bazi podataka. Tada se kreira pogled tj. view koji<br />

se kasnije koristi u radu sa bazom podataka. Kreiranje pogleda bazi<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe CREATE VIEW.<br />

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE |<br />

TEMPTABLE}]<br />

VIEW view_name [(column_list)]<br />

AS select_statement<br />

[WITH [CASCADED | LOCAL] CHECK OPTION]<br />

Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW<br />

Kao što u gore navedenoj strukturi možete primetiti da ovde postoji<br />

select_statement što je u stvari SELECT naredba koja je posebno i<br />

detaljno objašnjena u četvrtom delu o DML-u a ovde neće biti više reči o<br />

tome (za više informacija pogledajte poglavlje 4.3 gde će te videti<br />

detaljno objašnjenje ove naredbe i svih njenih opcija.<br />

Kreiraćemo pogled nad tabelom magacin (najjednostavnijim oblikom<br />

SELECT naredbe) koji će prikazivati sve podatke koji se nalaze u<br />

istoimenoj tabeli sledećom naredbom:<br />

CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;<br />

- 89 -


5.6. Izmena definicije tabele<br />

Funkcija izmene tabele u bazi podataka putem SUBP-a se odnosi na<br />

dodavanje, uklanjanje i modifikovanje kolona u tabeli baze podataka.<br />

Prethodno navedene operacije nad tabelom u bazi podataka se u <strong>SQL</strong><br />

jeziku vrši pomoću jedinstvene naredbe ALTER TABLE:<br />

ALTER [IGNORE] TABLE tbl_name<br />

alter_specification [, alter_specification] ...<br />

alter_specification:<br />

ADD [COLUMN] column_definition [FIRST | AFTER col_name ]<br />

| ADD [COLUMN] (column_definition,...)<br />

| ADD INDEX [index_name] [index_type] (index_col_name,...)<br />

| ADD [CONSTRAINT [symbol]]<br />

PRIMARY KEY [index_type] (index_col_name,...)<br />

| ADD [CONSTRAINT [symbol]]<br />

UNIQUE [index_name] [index_type] (index_col_name,...)<br />

| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)<br />

| ADD [CONSTRAINT [symbol]]<br />

FOREIGN KEY [index_name] (index_col_name,...)<br />

[reference_definition]<br />

| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}<br />

| CHANGE [COLUMN] old_col_name column_definition<br />

[FIRST|AFTER col_name]<br />

| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]<br />

| DROP [COLUMN] col_name<br />

| DROP PRIMARY KEY<br />

| DROP INDEX index_name<br />

| DROP FOREIGN KEY fk_symbol<br />

| DISABLE KEYS<br />

| ENABLE KEYS<br />

| RENAME [TO] new_tbl_name<br />

| ORDER BY col_name<br />

| CONVERT TO CHARACTER SET charset_name [COLLATE<br />

collation_name]<br />

| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]<br />

| DISCARD TABLESPACE<br />

| IMPORT TABLESPACE<br />

| table_options<br />

Slika 5.5 Dokumentovana struktura naredbe ALTER TABLE<br />

- 90 -


U zavisnosti od toga šta želimo da promenimo u tabeli, koristićemo<br />

različite oblike prethodno navedene naredbe u strukturi koja je prikazana.<br />

Za dodavanje nove kolone koristi se ADD:<br />

ALTER TABLE Kupac<br />

ADD ime_oca CHAR(25);<br />

Za uklanjanje kolone iz tabele koristi se DROP:<br />

ALTER TABLE Kupac<br />

DROP ime_oca;<br />

Za izmenu svojstava kolone iz tabele koristi se MODIFY:<br />

ALTER TABLE Kupac<br />

MODIFY email VARCHAR(40);<br />

- 91 -


5.7. Izmena pogleda u bazi podataka<br />

Funkcija izmene pogleda u bazi podataka putem SUBP-a se odnosi na<br />

izmenu pogleda koji je prethodno kreiran u bazi podataka. Izmena<br />

pogleda bazi podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe ALTER<br />

VIEW.<br />

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]<br />

VIEW view_name [(column_list)]<br />

AS select_statement<br />

[WITH [CASCADED | LOCAL] CHECK OPTION]<br />

Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW<br />

Primenićemo gore navedenu naredbu da bi promenili pogled pod<br />

nazivom SPISAK tako da prikazuje sve iz tabele Dobavljač a ne<br />

Magacin kako je ranije bilo, u skladu sa prethodno navedenom<br />

strukturom potrebno je ukucati:<br />

ALTER VIEW SPISAK AS SELECT * FROM Dobavljac;<br />

- 92 -


5.8. Promena imena tabele u bazi podataka<br />

Funkcija promene imena tabele u bazi podataka putem SUBP-a se odnosi<br />

na promenu inema neke od tabela koja je prethodno kreirana u bazi<br />

podataka. Izmena imena tabele u bazi podataka se u <strong>SQL</strong> jeziku vrši<br />

pomoću naredbe RENAME TABLE.<br />

RENAME TABLE tbl_name TO new_tbl_name<br />

[, tbl_name2 TO new_tbl_name2] ...<br />

Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE<br />

Iskoristićemo prethodno opisanu naredbu da bi promenili ime tabele<br />

Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati:<br />

RENAME TABLE Kupac TO Klijent;<br />

- 93 -


5.9. Brisanje tabele iz baze podataka<br />

Funkcija brisanja tabele iz baze podataka putem SUBP-a se odnosi na<br />

uklanjenje neke od tabela koja je prethodno kreirana u bazi podataka tako<br />

da ona više fizički ne postoji u bazi podataka.. Ovde je potrebno uočiti<br />

bitnu razliku između naredbe DROP TABLE i naredbe DELETE<br />

FROM TABLE. Naredbom DROP TABLE briše se tabela iz baze<br />

podataka (napomena: korišćenjem ove naredbe nad tabelom u kojoj se<br />

nalaze podaci doći će do gubljenja tih podataka) dok se naredbom<br />

DELETE FROM TABLE brišu se svi podaci iz tabele ali se prazna<br />

tabela i dalje čuva u bazi podataka tako da se kasnije ponovo može<br />

koristiti. Uklanjanje tabele u bazi podataka se u <strong>SQL</strong> jeziku vrši pomoću<br />

naredbe DROP TABLE.<br />

DROP [TEMPORARY] TABLE [IF EXISTS]<br />

tbl_name [, tbl_name] ...<br />

[RESTRICT | CASCADE]<br />

Slika 5.8 Dokumentovana struktura naredbe DROP TABLE<br />

Korišćenjem prethodno navedene naredbe uklonićemo tabelu Klijent iz<br />

baze podataka, u skladu sa prethodno navedenost strukturom potrebno je<br />

ukucati:<br />

DROP TABLE Klijent;<br />

- 94 -


5.10. Uklanjanje indeksa iz tabele<br />

Funkcija uklanjanja indeksa iz tabele u bazi podataka putem SUBP-a se<br />

odnosi na uklanjenje indeksa u nekoj od tabela koji je prethodno kreiran<br />

u bazi podataka. Uklanjanje indeksa u nekoj od tabele u bazi podataka se<br />

u <strong>SQL</strong> jeziku vrši pomoću naredbe DROP INDEX.<br />

DROP INDEX index_name ON tbl_name<br />

Slika 5.9 Dokumentovana struktura naredbe DROP INDEX<br />

Korišćenjem prethodne naredbe uklonićemo indeks pod nazivom K2,<br />

koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom<br />

strukturom potrebno je ukucati:<br />

DROP INDEX K2 ON Magacin;<br />

- 95 -


5.11. Uklanjanje baze podataka<br />

Funkcija uklanjanja baze podataka putem SUBP-a se odnosi na<br />

uklanjenje kompletne baze podataka koja je prethodno kreirana (Ovom<br />

naredbom uklanjamo čitavu bazu podataka i sve njene resurse (tabele,<br />

atribute, tipove podataka, ograničenja, indekse itd.)). Uklanjanje baze<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe DROP DATABASE.<br />

DROP {DATABASE | SCHEMA} [IF EXISTS] db_namež<br />

Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE<br />

Korišćenjem prethodne naredbe obrisaćemo čitavu bazu podataka koju<br />

smo na početku kreirali (PAŽNJA: posle izvršenja ove naredbe baza će<br />

biti uništena i dalji rad neće biti moguć), u skladu sa gore navedenom<br />

strukturom potrebno je ukucati:<br />

DROP DATABASE PRODAJA;<br />

- 96 -


6. DML (Data Manipulation Language)<br />

6.1. Manipulisanja podacima<br />

Osnovni razlog korišćenja Sistema za Upravljanje Bazama<br />

Podataka (SUBP) je jednostavan i lak rad sa podacima koji se nalaze u<br />

bazi podataka. Pod manipulisanjem (rukovanjem) podacima se<br />

podrazumeva:<br />

●<br />

●<br />

●<br />

●<br />

Unos (dodavanje) podataka<br />

Pregled (korišćenje) podataka<br />

Izmena podataka<br />

Uklanjanje podataka<br />

Efikasnost sistema za upravljanje bazama podataka (SUBP) se može<br />

meriti preko sledećih kriterijuma:<br />

●<br />

●<br />

●<br />

●<br />

●<br />

●<br />

jednostavnost upotrebe<br />

preciznost podataka<br />

održavanje integriteta podataka<br />

brzina rada (izvršavanja upita)<br />

podržana količina podataka u bazi<br />

specifične funkcije i mogućnosti<br />

- 97 -


6.2. Unos podataka<br />

Funkcija unosa podataka u bazu putem SUBP-a se odnosi na unos<br />

podataka u neku (jednu ili više) od tabela u bazi podataka. Unos<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe INSERT.<br />

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]<br />

[INTO] tbl_name [(col_name,...)]<br />

VALUES ({expr | DEFAULT},...),(...),...<br />

[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]<br />

Slika 7.1 Dokumentovana struktura naredbe INSERT<br />

Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe<br />

INSERT, to možete uraditi na sledeća dva načina:<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(123, 'Artikl br. 1', 199.99, 100, 'Germany');<br />

ili<br />

INSERT INTO Artikl<br />

VALUES<br />

(1, 123, 'Artikl br. 1', 199.99, 100, 'Germany');<br />

Postoje dve osnovne razlike između ove dve navedene varijante:<br />

● U prvoj varijanti smo pre vrednosti koje želimo da unesemo u<br />

tabelu Artikl naveli kolone u koje želimo da smestimo te<br />

vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena<br />

kolona već smo samo naveli vrednosti po redosledu u kom se<br />

kolone nalaze u tabeli.<br />

● U drugoj varijanti smo zadali vrednost i za polje rb da bi smo<br />

ispoštovali broj i redosled kolona pošto ih nismo eksplicitno<br />

naveli. Međutim, na ovaj način smo izgubili funkcionalnost<br />

parametra AUTO_INCREMENT koji je postavljen na ovu<br />

kolonu.<br />

- 98 -


Druga varijanta predstavlja kraći oblik naredbe koji nije poželjno koristiti<br />

iz sledećih razloga:<br />

●<br />

●<br />

●<br />

Gubi se funkcionalnost parametra AUTO_INCREMENT i<br />

DEFAULT.<br />

Ukoliko naredbu u ovakvom obliku sačuvamo u nekoj internoj ili<br />

eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja<br />

neke od kolona) ta procedura neće biti validna.<br />

Moraju se unositi vrednosti za sva polja i to u odgovarajućem<br />

redosledu.<br />

Na prethodno opisan način uneti i sledeće podatke:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Serbian |<br />

+----+------------+--------------+--------+----------+---------------+<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 3 | 127 | Artikl br. 3 | 190.00 | 170 | USA |<br />

+----+------------+--------------+--------+----------+---------------+<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 4 | 129 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

+----+------------+--------------+--------+----------+---------------+<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

+----+------------+--------------+--------+----------+---------------+<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 6 | 135 | Artikl br. 6 | 397.00 | 390 | France |<br />

+----+------------+--------------+--------+----------+---------------+<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

+----+------------+--------------+--------+----------+---------------+<br />

To ćemo uraditi uz pomoć sledećih naredbi:<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(124, 'Artikl br. 2', 299.99, 103, 'Serbian');<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(127, 'Artikl br. 3', 190.00, 170, 'USA');<br />

- 99 -


INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(129, 'Artikl br. 4', 599.05, 340, 'Germany');<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(132, 'Artikl br. 5', 179.97, 140, 'Switzerland');<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(135, 'Artikl br. 6', 397.00, 390, 'France');<br />

INSERT INTO Artikl<br />

(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)<br />

VALUES<br />

(137, 'Artikl br. 7', 269.07, 250, 'Dansk');<br />

- 100 -


6.3. Pregled podataka<br />

Funkcija pregleda podataka u bazi putem SUBP-a se odnosi na uzimanje<br />

podataka iz neke (jedne ili više) od tabela u bazi podataka. Pregled<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe SELECT.<br />

SELECT<br />

[ALL | DISTINCT | DISTINCTROW ]<br />

[HIGH_PRIORITY]<br />

[STRAIGHT_JOIN]<br />

[<strong>SQL</strong>_SMALL_RESULT]<br />

[<strong>SQL</strong>_BIG_RESULT]<br />

[<strong>SQL</strong>_BUFFER_RESULT]<br />

[<strong>SQL</strong>_CACHE | <strong>SQL</strong>_NO_CACHE] [<strong>SQL</strong>_CALC_FOUND_ROWS]<br />

select_expr, ...<br />

[FROM table_references<br />

[WHERE where_condition]<br />

[GROUP BY {col_name | expr | position}<br />

[ASC | DESC], ... [WITH ROLLUP]]<br />

[HAVING where_condition]<br />

[ORDER BY {col_name | expr | position}<br />

[ASC | DESC], ...]<br />

[LIMIT {[offset,] row_count | row_count OFFSET<br />

offset}]<br />

[PROCEDURE procedure_name(argument_list)]<br />

[INTO OUTFILE 'file_name' export_options<br />

| INTO DUMPFILE 'file_name'<br />

| INTO @var_name [, @var_name]]<br />

[FOR UPDATE | LOCK IN SHARE MODE]]<br />

Slika 7.2 Dokumentovana struktura naredbe SELECT<br />

Da bi smo izvršili pregled svih podataka iz tabele Artikl iskoristićemo<br />

najosnovniji oblik naredbe SELECT:<br />

SELECT * FROM Artikl;<br />

- 101 -


Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim<br />

kolonama) iz tabele Artikl.<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 397 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

+----+------------+--------------+--------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

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

bi bila:<br />

SELECT rb, Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla<br />

FROM Artikl;<br />

Iako su rezultati isti:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 397 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

+----+------------+--------------+--------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

razlika između ove i prethodne naredbe je u tome što smo u prethodnoj<br />

naredbi koristili simbol '*' da bi smo označili sve kolone (sva polja<br />

zapisa). Ukoliko želimo da iz prikaza izbacimo kolonu rb, potrebno je<br />

samo da je izostavimo iz liste kolona: u ovom slučaju bi bila:<br />

SELECT Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla<br />

FROM Artikl;<br />

- 102 -


Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen<br />

parametar rb:<br />

+------------+--------------+--------+----------+---------------+<br />

| Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+------------+--------------+--------+----------+---------------+<br />

| 123 | Artikl br. 1 | 199.99 | 100 | Germany |<br />

| 124 | Artikl br. 2 | 299.99 | 102 | Srbija |<br />

| 127 | Artikl br. 3 | 190 | 170 | USA |<br />

| 127 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

| 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

| 135 | Artikl br. 6 | 397 | 390 | France |<br />

| 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

+------------+--------------+--------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

Rezultate možemo sortirati vertikalno i horizontalno. Vertikalno<br />

sortiranje se izvodi preko navođenja kolona u redosledu u kom želimo da<br />

se prikazuju parametri zapisa:<br />

SELECT Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla<br />

FROM Artikl;<br />

U rezultat ove naredbe:<br />

+----------+--------+--------------+------------+---------------+<br />

| Kolicina | Cena | Naziv | Magacin_rb | ZemljaPorekla |<br />

+----------+--------+--------------+------------+---------------+<br />

| 100 | 199.99 | Artikl br. 1 | 123 | Germany |<br />

| 102 | 299.99 | Artikl br. 2 | 124 | Srbija |<br />

| 170 | 190 | Artikl br. 3 | 127 | USA |<br />

| 340 | 599.05 | Artikl br. 4 | 127 | Germany |<br />

| 140 | 179.97 | Artikl br. 5 | 132 | Switzerland |<br />

| 390 | 397 | Artikl br. 6 | 135 | France |<br />

| 250 | 269.07 | Artikl br. 7 | 137 | Dansk |<br />

+----------+--------+--------------+------------+---------------+<br />

7 rows in set (0.00 sec)<br />

ulaze svi zapisi vertikalno poređani po redosledu u kom su unošeni u<br />

tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena,<br />

Naziv, Magacin_rb, ZemljaPorekla.<br />

Horizontalno sortiranje se vrši zadavanjem jedne ili više kolona na<br />

osnovu čijeg sadržaja će sortiranje biti obavljeno u zadatom smeru:<br />

SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;<br />

- 103 -


U rezultat ove naredbe:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

| 6 | 135 | Artikl br. 6 | 397 | 390 | France |<br />

| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |<br />

| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |<br />

+----+------------+--------------+--------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastućem<br />

redosledu. Ukoliko želimo da zapise poređamo u opadajućem redosledu<br />

parametar ASC ćemo zameniti sa DESC.<br />

Osim vertikalnog ograničavanja rezultata (ograničavanja<br />

kolona/parametara zapisa koji ulaze u rezultat) <strong>SQL</strong> jezik podržava i<br />

horizontalno ograničavanje (ograničavanje zapisa koji ulaze u rezultat)<br />

preko sledećih parametara naredbe SELECT:<br />

1. WHERE<br />

2. DISTINCT<br />

3. LIMIT<br />

4. GROUP BY / HAVING<br />

- 104 -


6.3.1. Klauzula WHERE<br />

Ova klauzula se koristi za zadavanje odredjenog uslova koji zapis mora<br />

da ispuni da bi ušao u rezultat:<br />

SELECT * FROM Artikl<br />

WHERE rb=5;<br />

Ovakvim korišćenje WHERE klauzule smo rezultat ograničili samo na<br />

zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

+----+------------+--------------+--------+----------+---------------+<br />

1 row in set (0.00 sec)<br />

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

numeričke operatore:<br />

EEN<br />

= SELECT * FROM Artikl WHERE<br />

rb=1;<br />

SELECT * FROM Artikl WHERE<br />

rb1;<br />

< SELECT * FROM Artikl WHERE<br />

rb SELECT * FROM Artikl WHERE<br />

rb>1;<br />

=1;<br />

BETW<br />

SELECT * FROM Artikl WHERE rb<br />

BETWEEN 1 AND 5;<br />

LIKE SELECT * FROM Artikl WHERE<br />

Naziv LIKE 'Artik%';<br />

Jednako<br />

Nije jednako<br />

Veće od<br />

Manje od<br />

Veće ili jednako<br />

Manje ili<br />

jednako<br />

Između dve<br />

vrednosti<br />

SIMBOLIČK<br />

O POREĐENJE<br />

IN<br />

SELECT * FROM Artikl WHERE rb<br />

IN (1,3,5);<br />

Univerzalno<br />

poređenje<br />

- 105 -


Dodatna objašnjenja:<br />

- Simboličko poređenje<br />

-<br />

● Klauzula LIKE omogućuje pretraživanje na osnovu "UZORKA"<br />

odnosno dobijanje informacija i kada ne znamo potpun naziv (tj.<br />

vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna<br />

karaktera ("%","_") sa sledećim značenjem:<br />

"%" predstavlja string od 0 ili više karaktera<br />

"__" predstavlja<br />

poziciju jednog<br />

karaktera.<br />

Ostali karakteri imaju ucbičajeno značenje.<br />

Uslov u WHERE klauzuli navedenog upita kaže da IME treba da liči na<br />

uzorak naveden u jednostrukim navodnicima.<br />

Primeri:<br />

... gde se ime završava sa N.<br />

WHERE IME LIKE '%N'<br />

... gde je treći karakter imena R.<br />

WHERE IME LIKE 'R%'<br />

... gde je ime dugačko 5 karaktera<br />

WHERE IME LIKE ' '<br />

... gde ime nije dugačko 5 karaktera.<br />

WHERE IME NOT LIKE '__'<br />

... gde je u imenu slovo G posle R.<br />

WHERE IME LIKE '%R%G%'<br />

- Univerzalno poređenje<br />

● IN koristimo da prikažemo zapise koje pripadaju skupu<br />

vrednosti (ovo je zamena za više OR klauzula)<br />

- 106 -


Klauzula WHERE nije ograničena na postavljanje samo jednog uslova<br />

(što se može primetiti već kod parametra IN). Više uslova se može<br />

kombinovati pomoću logičkih operatora AND i OR:<br />

SELECT * FROM Artikl<br />

WHERE (<br />

(rb>1 AND rb3 AND rb


6.3.2. Klauzula DISTINCT<br />

Ova klauzula se koristi za eliminisanje duplih zapisa iz prikaza:<br />

SELECT DISTINCT ZemljaPorekla FROM Artikl;<br />

Rezultat ove komande:<br />

+---------------+<br />

| ZemljaPorekla |<br />

+---------------+<br />

| Germany |<br />

| Srbija |<br />

| USA |<br />

| Switzerland |<br />

| France |<br />

| Dansk |<br />

+---------------+<br />

6 rows in set (0.00 sec)<br />

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

- 108 -


6.3.3. Klauzula LIMIT<br />

Ova klauzula se koristi za ograničavanje broja zapisa koji ulaze u rezultat<br />

bez obzira da li su ispunili eventualni uslov. Parametar LIMIT može<br />

imati jedan ili dva naknadna parametra (prvi koji definiše koliko prvih<br />

zapisa treba preskočiti i drugi koji definiše koliko zapisa treba prikazati).<br />

Ukoliko se zada samo jedan parametar on se odnosi na broj zapisa koje<br />

treba prikazati počev od prvog zapisa.<br />

Naredba sa jednim parametrom:<br />

SELECT * FROM Artikl LIMIT 5;<br />

vraća prvih 5 zapisa:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |<br />

+----+------------+--------------+--------+----------+---------------+<br />

5 rows in set (0.00 sec)<br />

dok ista naredba sa dva parametra:<br />

SELECT * FROM Artikl LIMIT 5,10;<br />

vraća zapise od 6. do 15.:<br />

+----+------------+--------------+--------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+--------+----------+---------------+<br />

| 6 | 135 | Artikl br. 6 | 397 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |<br />

+----+------------+--------------+--------+----------+---------------+<br />

2 rows in set (0.00 sec)<br />

- 109 -


6.3.4. Klauzule GROUP BY / HAVING<br />

Klauzula GROUP BY se koristi za grupisanje podataka koji se dobijaju<br />

kao rezultat upita, a klauzula HAVING se koristi za selekciju određenih<br />

grupa koje su već kreirane GROUP BY klauzulom.<br />

SELECT ZemljaPorekla, COUNT(*) FROM Artikl<br />

GROUP BY ZemljaPorekla;<br />

Korišćenjem naredbe u ovakvom obliku kao rezultat dobićemo spisak<br />

svih zemalja i broj artikala koji potiče iz koje zemlje.<br />

+---------------+----------+<br />

| ZemljaPorekla | COUNT(*) |<br />

+---------------+----------+<br />

| Dansk | 1 |<br />

| France | 1 |<br />

| Germany | 2 |<br />

| Srbija | 1 |<br />

| Switzerland | 1 |<br />

| USA | 1 |<br />

+---------------+----------+<br />

6 rows in set (0.02 sec)<br />

Ukoliko želimo da iz rezultata prikažemo samo podatke koji ispunjavaju<br />

određeni kriterijum, to će mo uraditi uz pomoć klauzule HAVING, na<br />

sledeći način:<br />

SELECT ZemljaPorekla, COUNT(*) FROM Artikl<br />

GROUP BY ZemljaPorekla<br />

HAVING COUNT(*)=1;<br />

Na ovaj način kao rezultat dobićemo spisak zemalja iz kojih dolazi samo<br />

po jedan proizvod.<br />

+---------------+----------+<br />

| ZemljaPorekla | COUNT(*) |<br />

+---------------+----------+<br />

| Dansk | 1 |<br />

| France | 1 |<br />

| Srbija | 1 |<br />

| Switzerland | 1 |<br />

| USA | 1 |<br />

+---------------+----------+<br />

5 rows in set (0.02 sec)<br />

- 110 -


6.4. Izmena podataka<br />

Funkcija izmene podataka u bazi putem SUBP-a se odnosi na<br />

izmenu podataka u nekoj (jednoj ili više) od tabela u bazi podataka.<br />

Moguće je izmeniti jedan ili više parametara (kolona) jednog ili više<br />

zapisa (reda). Izmena podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe<br />

UPDATE.<br />

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name<br />

SET col_name1=expr1 [, col_name2=expr2 ...]<br />

[WHERE where_condition]<br />

[ORDER BY ...]<br />

[LIMIT row_count]<br />

Slika 7.3 Dokumentovana struktura naredbe UPDATE za jednu tabelu<br />

UPDATE [LOW_PRIORITY] [IGNORE] table_references<br />

SET col_name1=expr1 [, col_name2=expr2 ...]<br />

[WHERE where_condition]<br />

Slika 7.4 Dokumentovana struktura naredbe UPDATE za više tabela<br />

Osnovni oblik komande UPDATE izgleda ovako:<br />

UPDATE Artikl<br />

SET Cena=1000.00;<br />

i njome su je vrednost svih vrednosti u koloni Cena postavljena na<br />

1000.00.<br />

Ukoliko želimo da izmenu primenimo samo na određene zapise (redove)<br />

moramo koristiti klauzulu WHERE (videti deo 4.3.1):<br />

UPDATE Artikl<br />

SET Cena=1000.00<br />

WHERE ZemljaPorekla='Germany';<br />

- 111 -


+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

Ukoliko želimo da više parametara (kolona) izmenimo jednim upitom,<br />

navešćemo više kolona i vrednosti odvojenih zarezom:<br />

UPDATE Artikl<br />

SET Cena=2000.00, Kolicina=46<br />

WHERE ZemljaPorekla='Germany';<br />

+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

Ukoliko želimo da u za vrednost koristimo već postojeću vrednost u<br />

nekoj od kolona za vrednost ćemo navesti kolonu zapisa čiju vrednost<br />

želimo da primenimo:<br />

UPDATE Artikl<br />

SET Kolicina=Cena<br />

WHERE ZemljaPorekla='Germany';<br />

+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

- 112 -


Ukoliko želimo da u za vrednost koristimo već postojeću vrednost uz<br />

primenu matematičke operacije:<br />

UPDATE Artikl<br />

SET Cena=Cena*1.18;<br />

+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 2360 | 2000 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 1180 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 1180 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 2360 | 2000 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 1180 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 1180 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 1180 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

ili<br />

UPDATE Artikl<br />

SET Cena=Kolicina+10;<br />

+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 2010 | 2000 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 112 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 180 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 400 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

- 113 -


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

na koje ćemo primeniti izmenu:<br />

UPDATE Artikl<br />

SET Cena=100<br />

LIMIT 3;<br />

+----+------------+--------------+------+----------+---------------+<br />

| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |<br />

+----+------------+--------------+------+----------+---------------+<br />

| 1 | 123 | Artikl br. 1 | 100 | 2000 | Germany |<br />

| 2 | 124 | Artikl br. 2 | 100 | 102 | Srbija |<br />

| 3 | 127 | Artikl br. 3 | 100 | 170 | USA |<br />

| 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany |<br />

| 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland |<br />

| 6 | 135 | Artikl br. 6 | 400 | 390 | France |<br />

| 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk |<br />

+----+------------+--------------+------+----------+---------------+<br />

7 rows in set (0.00 sec)<br />

- 114 -


6.5. Uklanjanje podataka<br />

Funkcija uklanjanja podataka u bazi putem SUBP-a se odnosi na<br />

uklanjanje podataka iz neke (jedne ili više) od tabela u bazi podataka.<br />

Moguće je ukloniti samo kompletne redove tabela (uklanjanje vrednosti<br />

parametara zapisa se vrši pomoću naredbe UPDATE). Uklanjanje<br />

podataka se u <strong>SQL</strong> jeziku vrši pomoću naredbe DELETE.<br />

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name<br />

[WHERE where_condition]<br />

[ORDER BY ...]<br />

[LIMIT row_count]<br />

Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu<br />

Osnovni oblik komande DELETE izgleda ovako:<br />

DELETE FROM Artikl;<br />

i njome su uklonjeni svi zapisi iz tabele Artikl.<br />

Ukoliko želimo da uklanjenje ograničimo samo na određene zapise<br />

(redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):<br />

DELETE FROM Artikl<br />

WHERE ZemljaPorekla='Germany';<br />

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

na koje ćemo primeniti uklanjanje:<br />

DELETE FROM Artikl<br />

LIMIT 10;<br />

- 115 -


7. DCL (Data Control Language)<br />

Osim manipulacije podacima (DML), jedna od bitnih karakteristika SUBPa<br />

je kontrola podataka (DCL), pre svega kontrola pristupa podacima.<br />

Kontrola pristupa podacima obično podrazumeva mogućnost kreiranja više<br />

korisničkih profila (naloga) sa određenim pristupnim podacima (korisničko<br />

ime i lozinka) i pridruženim privilegijama. Neki SUBP imaju mogućnost<br />

povezivanja internih korisničkih naloga i privilegija sa nekim spoljnim<br />

sistemom za proveru autentičnosti korisnika (npr. povezivanje sa<br />

sistemskim nalozima, Active Directory-jem i sl.). MySql SUBP poseduje<br />

interni sistem korisničkih naloga (sa parametrima: korisničko ime, lozinka,<br />

mrežna lokacija klijenta) sa privilegijama (izlistani u tabeli 5.1) na nivou<br />

jedne ili više baza, tabela i/ili kolona. Podaci vezani za korisničke naloge i<br />

privilegije su skladišteni u sistemskoj bazi "mysql".<br />

Osnovne naredbe za rad sa korisničkim nalozima:<br />

●<br />

●<br />

●<br />

●<br />

CREATE USER<br />

RENAME USER<br />

DROP USER<br />

SET PASSWORD<br />

Kreiranje novih korisničkih naloga nije neophodno zasebno obaviti pre<br />

izmene privilegija već se novi nalog (ili nova varijanta postojećeg naloga)<br />

može kreirati samom dodelom privilegija. Prve tri naredbe su dostupne<br />

počev od verzije MySql-a 5.0 sa određenim izmenama u verziji 5.0.2.<br />

Osnovne naredbe za rad sa privilegijama su:<br />

●<br />

●<br />

●<br />

GRANT<br />

REVOKE<br />

FLUSH PRIVILEGES<br />

- 116 -


7.1. Naredba CREATE USER<br />

Naredba CREATE USER služi za kreiranje novih korisničkih naloga na<br />

SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i<br />

korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju<br />

INSERT privilegiju za sistemsku mysql bazu podataka.<br />

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']<br />

[, user [IDENTIFIED BY [PASSWORD] 'password']] ...<br />

Slika 8.1 Dokumentovana struktura naredbe CREATE USER<br />

Osnovni oblik korišćenja ove naredbe je:<br />

CREATE USER 'korisnik';<br />

Ukoliko želimo da korisničkom nalogu pridružimo i hostname računara sa<br />

koga je dozvoljen pristup, naredba je:<br />

CREATE USER 'korisnik@racunar1.mreza.edu';<br />

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

CREATE USER 'korisnik' IDENTIFIED BY 'lozinka';<br />

Ukoliko želimo da istovremeno kreiramo više korisničkih naloga, naredba<br />

je:<br />

CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1',<br />

'korisnik2' IDENTIFIED BY 'lozinka2';<br />

- 117 -


7.2. Naredba RENAME USER<br />

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

SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i<br />

korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici<br />

koji imaju UPDATE privilegiju za sistemsku mysql bazu podataka.<br />

RENAME USER old_user TO new_user<br />

[, old_user TO new_user] ...<br />

Slika 8.2 Dokumentovana struktura naredbe RENAME USER<br />

Osnovni oblik korišćenja ove naredbe je:<br />

RENAME USER 'korisnik1' TO 'korisnik2';<br />

- 118 -


7.3. Naredba DROP USER<br />

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

SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i<br />

korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici<br />

koji imaju DELETE privilegiju za sistemsku mysql bazu podataka.<br />

DROP USER user [, user] ...<br />

Slika 8.3 Dokumentovana struktura naredbe DROP USER<br />

Osnovni oblik korišćenja ove naredbe je:<br />

DROP USER 'korisnik1';<br />

Ukoliko želimo da istovremeno uklonimo više korisničkih naloga, naredba<br />

je:<br />

DROP USER 'korisnik1', 'korisnik2';<br />

- 119 -


7.4. Naredba SET PASSWORD<br />

Naredba SET PASSWORD služi za promenu pristupne lozinke postojećih<br />

korisničkih naloga na SUBP. Ovom naredbom je moguće promeniti lozinku<br />

za sopstveni nalog kao i lozinku za ostale korisničke naloge ukoliko aktivni<br />

korisnički nalog ima UPDATE privilegiju za sistemsku mysql bazu<br />

podataka.<br />

SET PASSWORD [FOR user] = PASSWORD('some password')<br />

Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD<br />

Osnovni oblik korišćenja ove naredbe je:<br />

SET PASSWORD = PASSWORD('nova lozinka');<br />

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

SET PASSWORD FOR 'korisnik2' = PASSWORD('nova<br />

lozinka');<br />

- 120 -


7.5. Dodela privilegija (GRANT)<br />

Naredba GRANT omogućava administratorima SUBP-a da određenom<br />

koričkom nalogu dodele određene privliegije nad određenim objektima<br />

baze podataka. S obzirom na to da ukoliko se privilegije dodeljuju nalogu<br />

koji ne postoji na SUBP on se automatski kreira, ovom naredbom je<br />

moguće i kreirati nove korisničke naloge. Za korišćenje ove naredbe<br />

neophodno je biti administrator sistema ili imati GRANT OPTION<br />

privilegiju kojom je moguće dodeliti privilegije iz skupa privilegija koje su<br />

dodeljene aktivnom korisničkom nalogu.<br />

GRANT priv_type [(column_list)] [, priv_type<br />

[(column_list)]] ...<br />

ON [object_type] {tbl_name | * | *.* |<br />

db_name.*}<br />

TO user [IDENTIFIED BY [PASSWORD] 'password']<br />

[, user [IDENTIFIED BY [PASSWORD]<br />

'password']] ...<br />

[REQUIRE<br />

NONE |<br />

[{SSL| X509}]<br />

[CIPHER 'cipher' [AND]]<br />

[ISSUER 'issuer' [AND]]<br />

[SUBJECT 'subject']]<br />

[WITH with_option [with_option] ...]<br />

object_type =<br />

TABLE<br />

| FUNCTION<br />

| PROCEDURE<br />

with_option =<br />

GRANT OPTION<br />

| MAX_QUERIES_PER_HOUR count<br />

| MAX_UPDATES_PER_HOUR count<br />

| MAX_CONNECTIONS_PER_HOUR count<br />

| MAX_USER_CONNECTIONS count<br />

Slika 8.5 Dokumentovana struktura naredbe GRANT<br />

- 121 -


Osnovna dodela privilegija se vrši naredbom:<br />

GRANT ALL ON database_name.table_name TO<br />

'korisnik@hostname' IDENTIFIED BY 'lozinka';<br />

Dodela privilegija na globalnom nivou (svim objektima - bazama,<br />

tabelama, kolonama -u SUBP) se vrši naredbom:<br />

GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY<br />

'lozinka'<br />

Dodela privilegija na globalnom nivou baze podataka se vrši naredbom:<br />

GRANT ALL ON db_name.* TO 'korisnik' IDENTIFIED BY<br />

'lozinka'<br />

Dodela privilegija na globalnom nivou tabele u bazi se vrši naredbom:<br />

GRANT ALL ON db_name.table_name TO 'korisnik'<br />

IDENTIFIED BY 'lozinka'<br />

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

kolone u tabeli kao i rutine.<br />

- 122 -


Privilegije<br />

Značenje<br />

ALL [PRIVILEGES] Sets all simple privileges except GRANT OPTION<br />

ALTER<br />

Allows use of ALTER TABLE<br />

CREATE<br />

Allows use of CREATE TABLE<br />

CREATE TEMPORARY<br />

Allows use of CREATE TEMPORARY TABLE<br />

TABLES<br />

CREATE VIEW Allows use of CREATE VIEW<br />

DELETE<br />

Allows use of DELETE<br />

DROP<br />

Allows use of DROP TABLE<br />

EXECUTE Allows the user to run stored procedures (My<strong>SQL</strong> 5.0)<br />

FILE<br />

Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE<br />

INDEX<br />

Allows use of CREATE INDEX and DROP INDEX<br />

INSERT<br />

Allows use of INSERT<br />

LOCK TABLES<br />

Allows use of LOCK TABLES on tables for which you have the SELECT<br />

privilege<br />

PROCESS<br />

Allows use of SHOW FULL PROCESSLIST<br />

REFERENCES Not yet implemented<br />

RELOAD<br />

Allows use of FLUSH<br />

REPLICATION<br />

CLIENT<br />

Allows the user to ask where the slave or master servers are<br />

REPLICATION<br />

SLAVE<br />

Needed for replication slaves (to read binary log events from the master)<br />

SELECT<br />

Allows use of SELECT<br />

SHOW DATABASES SHOW DATABASES shows all databases<br />

SHOW VIEW Allows use of SHOW CREATE VIEW<br />

SHUTDOWN<br />

Allows use of mysqladmin shutdown<br />

Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET<br />

SUPER<br />

GLOBAL statements, the mysqladmin debug command; allows you to connect<br />

(once) even if max_connections is reached<br />

UPDATE<br />

Allows use of UPDATE<br />

USAGE<br />

Synonym for ``no privileges''<br />

GRANT OPTION Allows privileges to be granted<br />

Tabela 8.1 Moguće vrednosti za dodelu odnosno oduzimanje privilegija<br />

- 123 -


7.6. Oduzimanje privilegija (REVOKE)<br />

Naredba REVOKE omogućava administratorima SUBP-a da određenom<br />

koričkom nalogu oduzmu određene privliegije nad određenim objektima<br />

baze podataka. Za korišćenje ove naredbe neophodno je biti administrator<br />

sistema ili imati GRANT OPTION privilegiju kojom je moguće oduzeti<br />

privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom<br />

nalogu.<br />

REVOKE priv_type [(column_list)] [, priv_type<br />

[(column_list)]] ...<br />

ON [object_type] {tbl_name | * | *.* |<br />

db_name.*}<br />

FROM user [, user] ...<br />

Slika 8.6 Dokumentovana struktura naredbe REVOKE<br />

Osnovno oduzimanje privilegija se vrši naredbom:<br />

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';<br />

- 124 -


7.7. Primena izmena (FLUSH)<br />

Naredba FLUSH služi za ponovo učitavanje parametara sistema koji se<br />

nalaze keširani u memoriji. Za izvršavanje ove naredbe potrebno je imati<br />

RELOAD privilegiju.<br />

FLUSH [LOCAL | NO_WRITE_TO_BINLOG]<br />

flush_option [, flush_option] ...<br />

Slika 8.7 Dokumentovana struktura naredbe FLUSH<br />

Flush_option:<br />

Objašnjenje:<br />

HOSTS<br />

Pražnjenje keša host tabele<br />

DES_KEY_FILE<br />

Ponovno učitavanje DES ključa<br />

LOGS<br />

Zatvaranje i otvaranje svih log fajlova<br />

MASTER<br />

Brisanje i ponovno kreiranje svih log fajlova<br />

PRIVILEGES<br />

Ponovno učitavanje svih privilegija iz GRANT<br />

tabele<br />

QUERY CACHE<br />

Defragmentacija keširanih upita<br />

SLAVE Resetovanje svih replikacija sekundardnih<br />

parametara<br />

STATUS Resetovanje svih statusnih promenljivu na 0<br />

USER_RESOURCES Resetovanje svih resursa iz prethodnih sati na 0<br />

Tabela 8.2 Moguće vrednosti za flash_option parametar<br />

- 125 -


8. Zadaci za vežbu DML<br />

1. Uneti podatke iz sledeće tabele u tabelu Dobavljac:<br />

+----+------------+------------------+-----------+<br />

| rb | Naziv | Adresa | Telefon |<br />

+----+------------+------------------+-----------+<br />

| 1 | Dobavljac1 | Beogradska 5 | 64123456 |<br />

| 2 | Dobavljac2 | Bac49 | 11256782 |<br />

| 3 | Dobavljac3 | Uzicka 42 | 62564778 |<br />

| 4 | Dobavljac4 | Knez Mihajlova 2 | 112345812 |<br />

| 5 | Dobavljac5 | Nehruova 62b | 637469923 |<br />

+----+------------+------------------+-----------+<br />

5 rows in set (0.00 sec)<br />

2. Uneti podatke iz sledeće tabele u tabelu Magacin:<br />

+-----+---------------+-----------+-----------+<br />

| rb | Adresa | Telefon | Kapacitet |<br />

+-----+---------------+-----------+-----------+<br />

| 124 | bac26 | 11145856 | 2000 |<br />

| 127 | Beogradska 5 | 635844535 | 1000 |<br />

| 129 | Dalmatinska43 | 633463 | 1500 |<br />

| 132 | Vojvodanska2 | 642888158 | 460 |<br />

| 135 | Francuska6 | 11136845 | 1200 |<br />

| 137 | Nusiceva24 | 23425698 | 900 |<br />

+-----+---------------+-----------+-----------+<br />

6 rows in set (0.00 sec)<br />

3. Prikazati sve podatke sa svim poljima iz tabele Magacin<br />

4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac<br />

5. Prikazati sve podatke iz tabele Dobavljac u sledećem redosledu<br />

polja:Naziv, Rb, Telefon, Adresa<br />

6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet<br />

po opadajućem redosledu<br />

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

dobavljača koji se nalazi u Dalmatinskoj 43<br />

8. Prikazati iz tabele Magacin prva četiri zapisa<br />

- 126 -


9.Prikazati iz tabele Dobavljac zapise od 2 do 4<br />

10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa<br />

bude 2000<br />

11.Izmeniti tabelu Magacin tako da polje Kapacitet bude 500 za<br />

magacin koji se nalazi u Francuskoj 6<br />

12.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa<br />

bude bude povećano za 30 %<br />

13.Izmeniti tabelu Magacin tako da polje Kapacitet bude umanjeno za<br />

20 % prva dva zapisa<br />

14.Izmeniti tabelu Magacin tako da polje Kapacitet bude povećano za<br />

50 jedinica kod magacina sa rednim brojem 2, 3 i 4<br />

15.Ukloniti poslednji zapis iz tabele Dobavljac<br />

16.Ukloniti sve zapise iz tabele Magacin<br />

- 127 -


9. DODATAK<br />

9.1. Izrazi i funkcije<br />

Pored prikazivanja prostih vrednosti memorisanih u tabelama baze<br />

podataka, <strong>SQL</strong> ima više funkcija koje mogu biti korišćene za dobijanje<br />

sumarnih informacija, kao i mogućnost primene aritmetičkih funkcija i<br />

funkcija nad stringovima (nizovima karaktera).<br />

Aritmetičke funkcije<br />

Funkcije za dobijanje sumarn.ih informacija su:<br />

AVG (atribut) - izračunava srednju vrednost<br />

SUM (atribut) - izračunava ukupnu vrednost<br />

MIN (atribut) - nalazi minimalnu vrednost<br />

MAX (atribut) - nalazi maksimalnu vrednost<br />

Ove funkcijesu definisane nad numeričkim kolonama.<br />

Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva<br />

oblika:<br />

COUNT (*) - nalazi broj n-torki u grupi<br />

COUNT (atribut) - nalazi NOT-NULL vrednosti kolone<br />

Funkcije nad nizom karaktera<br />

U <strong>SQL</strong>-u su definisane brojne funkcije nad kolonama tipa<br />

character. Najčešće se primenjuju sledeće:<br />

- stringi || string2 - spaja stringove karaktera<br />

- LENGTH (string) - nalazi dužinu stringa<br />

- UPPER (str) - menja sva mala slova u velika<br />

- LOWER (str) - menja sva velika slova u mala<br />

- TO_NUM (str) - pretvara niz karaktera (numeričkih) u broj<br />

- TO_CHAR (str) - pretvara broj u niz karaktera<br />

- 128 -


<strong>SQL</strong> podržava sledeće aritmetičke funkcije:<br />

POWER (broj. e) - diže broj na e-ti stepen<br />

ROUND (broj [.d]) - zaokružuje broj na d decimala<br />

TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta<br />

ABS (broj) - naiazi apsolutnu vrednos; broja<br />

SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0,<br />

-1 ako je broj


10. DB Desinger 4.0<br />

Ovo je program koji se koristi za grafičko predstavljanje elemenata baze<br />

podataka (tabela i veza izmedju tabela). Ovaj program je potpuno<br />

besplatan ali je prekinuto sa njegovim razvojem i taj posao je preuzeo tim<br />

koji je razvio i My<strong>SQL</strong> SUBP.<br />

Startovanje ovog programa je klasično kao i za bilo koji drugi Windows<br />

program Start meni, pa zatim Programs, pa onda fabForce pa na kraju<br />

DBDesigner 4. Posle ovoga će se na ekranu pojaviti prozor kao na slici:<br />

Slika 11.1 Početni prozor DBDesigner-a<br />

Ovo je početni prozor koji se pojavljuje odmah posle startovanja ovog<br />

programa. Na njemu možete videti da je ovo program koji liči na mnoge<br />

druge programe za windows to jest ima klasičan sistem menija (na<br />

primer: meni File se koristi kao i u ostalim programima za otvaranje<br />

postojećeg Open ili čuvanje Save projekta, kao i New za kreiranje novog<br />

praznog projekta) kao i neki meniji koji su specifični za ovakav program.<br />

- 130 -


Ukoliko ste prvi put startovali program automatski je otvoren novi<br />

projekat na kome možete raditi i kasnije ga sačuvati, a ukoliko ste već<br />

radili u ovom programu izaberite iz menije File opciju New posle čega<br />

možete početi da radite na projektu.<br />

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

podataka prvo je potrebno kreirati novu regiju u kojoj će se nalaziti<br />

elementi vaše baze podataka. To će te uraditi tako što će te izabrati opciju<br />

New Region koja se nalazi uz levu ivicu prozora programa, pogledajte<br />

sledeću sliku:<br />

Slika 11.2 Kreiranje nove regije<br />

- 131 -


Posle izbora ove opcije kao što možete pročitati na prethodnoj slici<br />

potrebno je u glavnom prozoru programa nacrtati željenju regiju<br />

upotrebom levog tastera miša, kao na sledećoj slici:<br />

Slika 11.3 Roze bojom označena je nova regija<br />

Kao što možete videti na slici, kreirana je nova regija za vašu bazu<br />

podataka. Po podrazumevanoj vrednosti program je regiji dao ime<br />

Region_01 a vi to možete promeniti tako što će te kliknuti desnim klikom<br />

negde na regiji i zatim iz menija izabrati opciju Edit Object posle čega će<br />

se na ekranu pojaviti prozor kao na slici:<br />

- 132 -


Slika 11.4 Promena imena regije<br />

Kao što možete videti na slici u polje Regionname možete upisati novo<br />

ime za regiju, upišite na primer Regija1 i biće promenjeno ime regiji.<br />

Ovde je takodje moguće promeniti i boju za određenu regiju a<br />

podrazumevana je crvena (Red), ukoliko to želite da promenite možete<br />

kliknuti na strelicu pored i izabrati neku drugu boju.<br />

- 133 -


Posle kreiranja regije možete pristupiti kreiranju elemenata vaše baze<br />

podataka. Za početak će te kreirati prvu tabelu. Da bi ste to uradili<br />

potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije<br />

New Region koju ste već ranije koristili, pogledajte sledeću sliku:<br />

Slika 11.5 Kreiaranje nove tabele<br />

Posle izbora ove opcije potrebno je kliknuti levim tasterom miša negde<br />

na već kreiranu regiju posle čega će se pojaviti tabela kao na slici:<br />

Slika 11.5 Prva tabela je kreirana u regiji<br />

- 134 -


Kao što možete videti na slici kreirana je prva tabela u vašoj regiji.<br />

Program je automatski dao ime tabeli ime Table_01 a vi to možete<br />

odmah promeniti tako što će kliknuti dva puta na tabelu ili tako što će te<br />

kliknuti desnim klikom na tabelu pa zatim iz padajućeg menija izabrati<br />

Edit Object posle čega će se pojaviti prozor kao na slici:<br />

Slika 11.6 Dijalog za Izmenu svojstava tabele<br />

Kao što možtete videti na slici ovde možete promeniti ime tabeli tako što<br />

će te u polje Table Name ukucati željeno ime. U našem slučaju prva<br />

tabela će se zvati Artikl pa to unesite u ovo polje. Ovaj dijalog se ne<br />

koristi samo za izmenu imena tabele već i svih njenih svojstava. Ovde se<br />

dodaju ili menjaju polja u tabelu, podešavaju svojstva određenih polja,<br />

postavljaju ili uklanjaju ključevi za izabranu tabelu. Ono što je ovde<br />

potrebo uraditi pošto je ovo prazna tabela jeste kreirati određena polja za<br />

izabranu tabelu.<br />

- 135 -


To će te uraditi tako što će te kliknuti levim tasterom miša na prvo mestu<br />

u kolonu Column Name i tu ukucati ime za prvu kolonu odnosno polje,<br />

unesite rb jer je to prvo polje koje se nalazi u tabeli Artikl, zatim kliknite<br />

na taster Enter posle čega će se postaviti podrazumevana polja u ostalim<br />

kolonama za ovo polje, pogledajte sledeću sliku:<br />

Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu<br />

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

automatski na INTEGER, ukoliko želite ovo da promenite kliknite na<br />

strelicu pored posle čega će se pojaviti izlistane moguće vrednosti za ovo<br />

polje gde je potrebno izabrati željenu vrednost, pogledajte sledeću sliku:<br />

- 136 -


Slika 11.8 Promena tipa polja za izabranu kolonu (polje)<br />

U ovoj listi možete izabrati tip polja koji vam je potreban, u ovom<br />

slučaju je potrebno da ovo polje bude integer pa će te ga tako i postaviti.<br />

Na slici možete primetiti i mali žuti ključ koji se nalazi u koloni Column<br />

Name ispred imena kolone. Ovo je oznaka da je ovo primarni ključ a<br />

DBDesigner je automatski postavio ovaj atribut koji kasnije možete<br />

ukloniti ukoliko želite da promenite primarni ključ, takođe možete<br />

primetiti u donjem delu da stoje informacije o primarnom ključu u delu<br />

Indices.<br />

- 137 -


Na prethodno opisan način kreirajte i sledeće kolone sa tipom polja kao<br />

na sledećoj slici:<br />

Slika 11.9 Tabela Artikl<br />

Na isti način kao što se kreirali tabelu Artikl kreirati i ostale tabele sa<br />

odgovarajućim poljima kao što se može videti na sledećoj slici:<br />

Slika 11.10 Sve tabele koje je potrebno kreirati<br />

- 138 -


Sada se u bazi podataka nalaze sve tabele koje su vam potrebne za dalji<br />

rad. Kao što se na slici može videti tabele nisu medjusobno povezane, a<br />

kao što je poznato bazu podataka čini više medjusobno povezanih tabela.<br />

Sada je potrebno povezati tabele nečim što je poznato kao relacija<br />

odnosno veza.<br />

Ovde je potrebno reći da postoji više tipova relacija I to 1:1, 1:m I m:n.<br />

Relacija tipa 1:1 znači da svakom zapisu u prvoj tabeli odgovara jedan I<br />

samo jedan zapis u drugoj tabeli. Relacija tipa 1:m znači da svakom<br />

zapisu u prvoj tabeli odgovara jedan ili više zapisa u drugoj tabeli. I na<br />

kraju relacija tipa m:n je takav tip relacije gde za više zapisa u prvoj<br />

tabeli može postojati I više zapisa u drugoj tabeli. Prva dva tipa relacia je<br />

lako napraviti dok je za treću potrebno kreirati veznu tabelu koja sadrži<br />

primarne ključeve prve I druge tabele.<br />

Kreiranje relacije tipa 1:1<br />

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:1<br />

Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora<br />

programa, pogledajte sliku.<br />

Slika 11.11 Kreiranje relacije 1:1<br />

- 139 -


Kreiranje relacije tipa 1:n<br />

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n<br />

Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora<br />

programa, pogledajte sliku.<br />

Slika 11.12 Kreiranje relacije 1:n<br />

Kreiraćemo dve relacije na ovaj način. Prva relacije je izmedju tabela<br />

Magacin i Artikl. Da bi kreirali ovu relaciju izabraćemo opciju koja je<br />

na prethodnoj slici a zatim kliknuti na tabelu Magacin pa onda na tabelu<br />

Artikl posle čega će se pojaviti relacija kao na slici:<br />

Slika 11.13 Prva relacija je kreirana<br />

- 140 -


Ako pogledate sliku možete videti da je relacija uspostavljena, pored toga<br />

automatski je SUBP postavio njeno ime na Rel_01 i formirao neophodan<br />

strani ključ u tabeli Artikl pod imenom Artikl_FKIndex1. Ukoliko želite<br />

da izmenite svojstva relacije kliknite desnim klikom miša na nju i iz<br />

padajućeg menija izaberite Edit Object posle čega će se pojaviti prozor<br />

kao na slici:<br />

Slika 11.15 Izmena svojstava relacije<br />

- 141 -


Ovde je moguće postaviti novo ime za relaciju umesto podrazumevanog,<br />

tako što će te u polje Relation Name uneti Relacija1 posle čega će ime<br />

biti promenjeno. Ovde je takođe moguće promeniti i tip relacije u listi<br />

koja se dobija levim klikom miša na strelicu u polju Relation Kind, kao i<br />

to da li će relacija biti vidljiva ili ne Visible.<br />

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

kreirati na isti način kao i prethodnu. Posle izbora opcije New 1:n Non-<br />

Identifyng-Relation potrebno je prvo kliknuti levim tasterom miša na<br />

tabelu Artikal pa onda na tabelu Kupac posle čega će relacija biti<br />

kreirana kao i spoljni ključ (FK) u drugoj tabeli, ovo je ilustrovano<br />

sledećom slikom:<br />

Slika 11.16 Druga relacija je kreirana<br />

- 142 -


Kao što možete videti relacija je kreirana, pored toga automatski je<br />

SUBP postavio njeno ime na Rel_02 i formirao neophodan strani ključ u<br />

tabeli Kupac pod imenom Kupac_FKIndex1. Ukoliko želite da izmenite<br />

svojstva relacije kliknite desnim klikom miša na nju i iz padajućeg<br />

menija izaberite Edit Object i promeniti njeno ime u Relacija2.<br />

Kreiranje relacije tipa n:m<br />

Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New n:m<br />

Relation koja se nalazi uz desnu ivicu glavnog prozora programa,<br />

pogledajte sliku.<br />

Slika 11.17 Kreiranje relacije n:m<br />

- 143 -


Sada će te kreirati jednu relaciju tipa n:m izmedju tabela Dobavljac i<br />

Artikl tako što će te izabrati opciju sa prethodne slike, a zatim kliknuti<br />

levim tasterom na tabelu Dobavljac pa onda na tabelu Artikl posle čega<br />

će relacija biti kreirana kao i svi potrebni elementi, pogledajte sledeću<br />

sliku:<br />

Slika 11.18 Treća relacija je kreirana<br />

Kao što možete videti na slici relacija je kreirana, ali pošto je ovo relacija<br />

n:m kreirana je i nova tabela (vezna tabela), koja je već ranije pomenuta<br />

u tekstu o tipovima relacija. Ova tabela sadrži dva polja Dobavljac_rb i<br />

Artikl_rb. Ako pogledate tabele Dobavljac i Artikl možete primetiti da<br />

su to kopije primarnih ključeva ove dve tabele. SUBP je automatski<br />

kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl što je vrlo<br />

lako uočiti zašto, naravno zbog toga što je ovo vezna tabela koja spaja<br />

ove dve tabele. Takođe automatski su kreirane i dve relacije i dodeljena<br />

- 144 -


im imena Rel_03 i Rel_04. Na način koji je objašnjen ranije promenite<br />

imena ovih relacija u Relacija3 i Relacija4.<br />

Sada je potrebno promeniti i neka svojstva vezne tabele. Pošto je ovde u<br />

pitanju tabela kao i svaka druga bez obzira što ona u ovoj relaciji služi<br />

kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz<br />

padajućeg menija izabrati Edit Object, posle ćega će se na ekranu<br />

pojaviti prozor kao na sledećoj slici:<br />

Slika 11.19 Izmena svojstava vezne tabele<br />

U polje Table Name upišite Dobavljač_Artikl da bi promenili ime<br />

vezne tabele, zatim u polju za rad sa ključevima u delu prozora Indices<br />

dva puta kliknite levim tasterom na ključ<br />

Dobavljac_Has_Artikl_FKIndex1 i na ekranu će se pojaviti prozor kao na<br />

slici:<br />

- 145 -


Slika 11.20 Promena imena ključa<br />

U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1<br />

da bi promenili ime prvog ključa, isti postupak ponovite ponovo i<br />

promenite ime ključa Dobavljac_has_Artikl_FKIndex2 u<br />

Dobavljac_Artikl_FKIndex2.<br />

Ako ste sve uradili kako treba konačna grafička prezentacija ove baze<br />

podataka izgledaće kao na sledećoj slici:<br />

Slika 11.21 Konačna shema BP<br />

- 146 -


I na kraju, sada kada imamo kompletnu bazu podataka grafički<br />

predstavljenu, kao što se može videti na prethodnoj slici, koja se sastoji<br />

od 5 tabela koje su medjusobno povezane, moguće je direktno ovakvu<br />

grafičku predstavu uz pomoć DBDesigner-a automatski prevesti u <strong>SQL</strong><br />

naredbe.<br />

Da bi to uradili potrebno je prvo konektovati se na određenu bazu<br />

podataka koja je prethodno kreirana u My<strong>SQL</strong>-u, a to se radi uz pomoć<br />

menija Database koji možete pogledati kako izgleda na sledećoj slici:<br />

Slika 11.22 Database meni<br />

Da bi se konektovali na određenu bazu potrebno je iz prethodnog menija<br />

izabrati Connect to Database, posle čega će se pojaviti prozor kao na<br />

slici:<br />

Slika 11.23 Konektovanje na postojeću My<strong>SQL</strong> bazu podataka<br />

- 147 -


Ovde je već kreirana konekcija na bazu podataka koja se zove test.<br />

Ukoliko želite da uspostavite konekciju sa ovom bazom potrebno je samo<br />

da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle<br />

čega će se pojaviti prozor gde će se od vas tražiti da unesete User Name i<br />

Password. U slučaju da želite da kreirate novu konekciju potrebno je da<br />

izaberete opciju New Database Connection posle čega će se na ekranu<br />

pojaviti prozor kao na sledećoj slici:<br />

Slika 11.24 Kreiranje nove konekcije<br />

Kao što vidite na slici, potrebno je zadati u polju Connection Name ime<br />

za novu konekciju koju želite da kreirate, zatim u polje Driver je<br />

potrebno izabrati tip drajvera koji će se koristiti (ovde možete koristiti ili<br />

My<strong>SQL</strong> drajver koji ne radi baš najbolje ili još bolje klasičan ODBC<br />

drajver, s tim što je u tom slučaju potrebno u Control Panel-u<br />

konfigurisati ODBC). U polju Hostname treba da stoji localhost ukoliko<br />

je baza na istom računaru kao i klijent ili određeni IP broj ukoliko je u<br />

pitanju baza na drugom računaru. Potrebno je u polju Database Name<br />

- 148 -


uneti ime baze koja je prethodno kreirana uz pomoć My<strong>SQL</strong>-a, kao i<br />

polja User Name i Password koji su neophodni za pristup bazi podataka.<br />

I na kraju se nalazi polje Description koje nije neophodno popunjavati<br />

jer služi čisto kao neki dodatni opis i nema drugu funkciju. Posle izbora<br />

opcije OK u donjem desnom uglu prozora pojaviće se nova konekcija sa<br />

imenom koje će te izabrati a zatim opciju Connect kao što je već ranije<br />

objašnjeno.<br />

Sledeće što je potrebno uraditi posle uspostavljanja konekcije jeste izbor<br />

opcije Database Synchronization iz menija Database (pogledajte sliku<br />

22) i po izboru ove opcije pojaviće se prozor kao na slici:<br />

Slika 11.25 Sinhronizacija sa bazom podataka<br />

- 149 -


Kao što se može videti na slici DBDesigner će na ovaj način kreirati pet<br />

tabela i dodati ih na postojećih 23 koliko ih već ima u bazi podataka (ovo<br />

će se razlikovati u zavisnosti od toga na koju bazu ste bili konektovani<br />

pre poziva ove opcije). Sve što je potrebno uraditi da bi se izvršila<br />

sinhronizacija sa izabranom bazom podataka jesti kliknuti na opciju<br />

Execute posle čega će se izvršiti potrebne <strong>SQL</strong> naredbe automatski i na<br />

taj način kreirati određene elemente, ili ukoliko oni već postoje, izmeniti<br />

ih ukoliko je to potrebno.<br />

- 150 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!