Praktikum Baze SQL.pdf - Univerzitet Singidunum
Praktikum Baze SQL.pdf - Univerzitet Singidunum
Praktikum Baze SQL.pdf - Univerzitet Singidunum
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
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 -