You are on page 1of 159

FAKULTET ZA POSLOVNU INFORMATIKU

Prof. dr Mladen Veinovi Igor Franc Aleksandar Jevremovi

BAZE PODATAKA
- PRAKTIKUM Prvo izdanje

Beograd 2006.

Autori: Prof. dr Mladen Veinovi Igor Franc Aleksandar Jevremovi Recenzent: Prof. dr Milan Milosavljevi Izdava: UNIVERZITET SINGIDUNUM FAKULTET ZA POSLOVNU INFORMATIKU Za izdavaa: Prof. dr Milovan Stanii Dizajn korica: Aleksandar Mihajlovi Goran Latinovi Godina izdanja: 2006. Tira: 250 primeraka tampa: CICERO-print Beograd

SADRAJ:
1. UVOD U BAZE PODATAKA .............................................. - 1 1.1. Uvod .............................................................................................. - 1 1.2. Osnovni koncepti i definicije ...................................................... - 3 1.2.1. Podatak ......................................................................................................... - 5 1.2.2. Informacija.................................................................................................... - 6 1.2.3. Metapodaci - podaci o podacima (metadata) ................................................ - 9 1.2.4. Sistem za upravljanje bazama podataka...................................................... - 10 -

1.3. Klasian sistem zasnovan na datotekama ............................... - 12 1.3.1. Nedostaci sistema zasnovanog na datotekama............................................ - 14 -

1.4. Pristup zasnovan na bazama podataka ................................... - 16 1.4.1. Prednosti pristupa zasnovanog na bazama podataka .................................. - 17 1.4.2. Trokovi i rizici pristupa zasnovanog na bazama podataka ........................ - 19 -

1.5. Primene baza podataka............................................................. - 21 1.5.1. Line baze podataka ................................................................................... - 21 1.5.2. Baze podataka za radne grupe..................................................................... - 22 1.5.3. Baze podataka odeljenja ............................................................................. - 23 1.5.4. Baze podataka organizacija ........................................................................ - 24 1.5.5. Internet, Intranet i Extranet baze podataka ................................................. - 25 -

1.6. Tipino okruenje baze podataka ............................................ - 28 1.7. Istorija razvoja baza podataka................................................. - 30 1.8. Modelovanje ............................................................................... - 35 1.8.1. Razvoj konceptualnih modela ..................................................................... - 36 1.8.2. Entiteti ........................................................................................................ - 37 1.8.3. Veze izmeu entiteta................................................................................... - 38 1.8.4. Troslojna arhitektura baze podataka ........................................................... - 40 -

1.9. Modeli baza podataka ............................................................... - 42 1.9.1. Hijerarhijski model ..................................................................................... - 43 1.9.2. Mreni model .............................................................................................. - 44 1.9.3. Relacioni model .......................................................................................... - 45 1.9.4. Objektni model ........................................................................................... - 50 -

1.10. Transakcije............................................................................... - 52 1.10.1. Osobine transakcija ................................................................................... - 53 -

1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 1.10.3. Konkurentno izvravanje transakcija ........................................................ - 55 -

1.11. Oporavak baze podataka ........................................................ - 56 1.12. Osnovne karaketristike savremenih baza podataka ............ - 56 1.13. Zakljuak ................................................................................. - 59 1.14. Literatura ................................................................................. - 60 -

2. O SQL-U ............................................................................... - 61 3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MYSQL-A ................................................................................ - 63 3.1. Proces isntalacije ....................................................................... - 63 3.2. Konfigurisanje MySQL servera ............................................... - 68 3.3. Pokretanje MySQL-a ................................................................ - 73 -

4. SQL TIPOVI PODATAKA ................................................ - 75 4.1. Numeriki tipovi podataka ....................................................... - 75 4.2. Tipovi podataka vezani za datum i vreme .............................. - 76 4.3. Binarni i tekstualni tipovi podataka ........................................ - 77 4.4. Zahtevi pri skladitenju ............................................................ - 79 4.5. Izbor adekvatnog tipa podataka .............................................. - 80 4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima..- 81 4.7. Unos razliitih tipova podataka ............................................... - 82 -

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

5.1. Kreiranje baze podataka .......................................................... - 83 5.2. Kreiranje tebele u bazi podataka ............................................. - 84 5.3. Naredbe za definisanje podataka ............................................. - 87 5.4. Kreiranje indeksa u bazi podataka .......................................... - 88 5.5. Kreiranje virtuelne tabele - "pogleda".................................... - 89 5.6. Izmena definicije tabele ............................................................ - 90 5.7. Izmena pogleda u bazi podataka .............................................. - 92 5.8. Promena imena tabele u bazi podataka................................... - 93 5.9. Brisanje tabele iz baze podataka .............................................. - 94 5.10. Uklanjanje indeksa iz tabele ................................................... - 95 5.11. Uklanjanje baze podataka ...................................................... - 96 -

6. DML (DATA MANIPULATION LANGUAGE) ............. - 97 6.1. Manipulisanja podacima .......................................................... - 97 6.2. Unos podataka ........................................................................... - 98 6.3. Pregled podataka ..................................................................... - 101 6.3.1. Klauzula WHERE ..................................................................................... - 105 6.3.2. Klauzula DISTINCT ................................................................................. - 108 6.3.3. Klauzula LIMIT ........................................................................................ - 109 6.3.4. Klauzule GROUP BY / HAVING ............................................................ - 110 -

6.4. Izmena podataka ..................................................................... - 111 6.5. Uklanjanje podataka ............................................................... - 115 -

7. DCL (DATA CONTROL LANGUAGE) ........................... - 116 7.1. Naredba CREATE USER ....................................................... - 117 -

7.2. Naredba RENAME USER ...................................................... - 118 7.3. Naredba DROP USER ............................................................ - 119 7.4. Naredba SET PASSWORD .................................................... - 120 7.5. Dodela privilegija (GRANT) .................................................. - 121 7.6. Oduzimanje privilegija (REVOKE) ...................................... - 124 7.7. Primena izmena (FLUSH) ...................................................... - 125 -

8. ZADACI ZA VEBU DML .............................................. - 126 9. DODATAK ......................................................................... - 128 9.1. Izrazi i funkcije ........................................................................ - 128 -

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

PREDGOVOR
Ova skripta je namenjena prevashodno studentima tree godine Fakulteta za poslovnu informatiku u Beogradu, mada moe biti vrlo korisna i svima onima koji ele da savladaju sintaksu i tehniku upotrebe SQL jezika za rad sa relacionim bazama podataka. Skripta moe da poslui i kao pomo profesionalcima u svakodnevnom radu sa bazama podataka. U praktikumu su na jednom mestu date teorijske osnove baza podataka, prikazan je MySQL DBMS softver i softver za dizajniranje baza, detaljno je razmatran SQL jezik i na kraju su dati praktini primeri. U skladu sa nastavnim planom i programom predmeta baze podataka, svi primeri u SQL jeziku, koji su dati u praktikumu, mogu se izvriti na MySQL DBMS-u. Mogua su manja odstupanje od sintakse standardnog SQL-a koja ni do danas nije potpuno i precizno definisana. Skripta je podeljena u nekoliko celina. Prvi deo predstavlja teorijski uvod u baze podataka. Drugi deo je uvod u SQL jezik, a u trecem delu prikazuju se i objanjavaju tipovi podataka koje MySQL koristi. U etvrtom delu se obrauju naredbe za definisanje podataka, a u petom delu se obrauju naredbe za manipulaciju podacima, koji je u stvari i najvaniji i najopirniji deo ove skripte. Na kraju su obraene naredbe za kontrolne (upravljake) funkcije. Prvih pet delova su namenjeni svim korisnicima dok je esti deo, dodela i oduzimanje prava korisnicima, specifian i potreban samo administratorima baza podataka. U dodatku su nabrojane i objanjene pojedine funkcije koje mogu biti veoma korisne u radu sa ovim sistemima za upravljanje bazama podataka. Autori su se potrudili da primeri budu to jasniji, izloeni po redosledu i da su povezani, tako da kada se redom unose grade kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje modifikacije se moe primeniti i u praksi. Poto je ovo prvo izdanje praktikuma, svi saveti i eventualne primedbe na tekst su dobrodole. Beograd, oktobar 2006. godine Autori

1. UVOD U BAZE PODATAKA


1.1. Uvod
Baze podataka se koriste za prikupljanje, uvanje i manipulaciju podacima na osnovu kojih se dobijaju nove informacije u razliitim organizacijama, kao to su poslovni sistemi, zdravstvo, kolstvo, vladine institucije itd. Svakodnevno ih koriste pojedinci putem linih raunara, radne grupe putem mrenih servera i svi zaposleni putem aplikacija koje se nalaze u poslovnim sistemima. Bazama podataka takoe pristupaju kupci i drugi udaljeni korisnici korienjem razliitih tehnologija kao to su govorni automati, web itai (browser-i), digitalni telefoni i sl. Zbog velike konkurencije u svim oblastima poslovanja, moe se oekivati da tehnologija baza podataka dobije jo vei znaaj. Menaderi trae nain da iz baze podataka bre dou do novih saznanja kako bi bili u prednosti u odnosu na svoju konkurenciju. Na primer, detaljna baza podataka o prodaji se moe iskoristiti kako bi se saznalo koji kupci kupuju koje proizvode, to se koristi kao osnova za reklamu i marketinku kampanju. Organizacije mogu da ukljue u svoje baze podataka procedure koje se zovu okidai - trigeri (alerts) koji upozoravaju o moguim vanrednim dogaajima (kao to su predstojei nedostatak zaliha neke robe ili ansa za prodaju dodatne koliine robe) i na osnovu kojih mogu nastati odgovarajue reakcije. Mnoge organizacije danas prave posebne baze podataka koje se zovu skladita podataka (data werehouses) koje slue za aplikacije za podrku u odluivanju. Izuavanje baza podataka i sistema za upravljanje bazama podataka jesu osnova za izuavanje informacionih sistema. Strunjak za informacione sisteme mora biti spreman da analizira potrebe preduzea i da dizajnira i implementira baze podataka u okviru razvoja informacionog sistema jedne organizacije. Takoe, mora biti spreman da se konsultuje sa krajnim korisnicima i da im pokae kako se korienjem baza podataka moe imati bolja podrka za odluivanje, ime se stvara prednost nad konkurencijom. iroko rasprostranjeno korienje baza podataka vezanih za Internet sajtove, koji vraaju dinamike informacije korisnicima web sajta, zahteva od projektanta da razume ne samo kako da povee bazu

-1-

podataka sa sajtom ve i kako da je obezbedi tako da se njenom sadraju moe pristupiti ali ne i izmeniti od strane spoljnih korisnika. Postoji puno naina kako se moe definisati baza podataka. U osnovi to je skup podataka koji su organizovani prema potrebama korisnika, koji se odravaju i koji se koriste za dobijanje informacija. Moderne baze podataka se uvaju na raunaru, ali to nije bitno za samu definiciju. Na primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima, telefonski imenik itd. su takoe baze podataka (mada ih veina ljudi tako ne zove). Meutim, smetanje baze podataka na raunar omoguava laku i bru obradu podataka i dobijanje eljene informacije. Karakteristian je primer sa telefonskim imenikom koji se nalazi na papiru. Jednostavno je pronai telefonski broj eljene osobe, ali je znatno tee pronai ime osobe na osnovu telefonskog broja. Ako je telefonski imenik vei (vie smetenih podataka) prethodni problem se dodatno uslonjava. Raunarski zasnovane baze podataka omoguavaju jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz odgovarajue baze podataka se mogu dobiti i posebne informacije. Na primeru telefonskog imenika mogu se izlistati podaci za sve osobe po imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj poinje npr. sa 2, osobe kojima se telefonski broj zavrava sa 45 i jo mnogo toga. Na razvoj baza podataka presudno je uticao razvoj raunara, raunarskih mrea, kao i klijent/server obrade. Istraivanje, projektovanje i upotreba baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao to su: smanjeni trokovi odravanja; smanjena potreba za mrenim resursima; poboljan integritet podataka; donoenje ispravnih odluka na osnovu objektivnih informacija, bra reakcija na tritu, itd. Baza podataka smetena u raunaru, predstavljena je nizom bita, organizovanih u bajtove, a sa vie bajtova u odgovarajuem formatu zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze podataka. Niz polja se organizuje u zapise (rekorde) koji imaju znaenje jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke veze izmedju objekata realnog sveta. Zapisi istog formata se slau i ine datoteke, koje su fiziki zapisane na disku. Baza podataka obuhvata vie povezanih datoteka i moe biti centralizovana na jednom raunaru ili distribuirana na vie meusobno udaljenih raunara. Pored podataka koji su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju
-2-

pojedinane datoteke, njene osobine, karakteristini parametri iz datoteka, uspostavljene meusobne veze, pravila koja se odnos na pojave koje postoje i u realnom svetu i sl. Takvi podaci se zovu meta-podaci (metadata), tj. podaci o podacima. Koriste se pri pokretanju rada sa bazom podataka, kako bi se mogli uitati svi konfiguracioni podaci odgovarajue baze (self-describing).

Slika 1.1 Baze podataka nekada i danas

1.2. Osnovni koncepti i definicije


Baza podataka se moe definisati kao organizovani skup logiki povezanih podataka. Ona moe biti bilo koje veliine i kompleksnosti. Na primer, prodavac moe da ima malu bazu podataka vezanu za kupce na svom notebook raunaru koja se sastoji od nekoliko megabajta podataka. Preduzee koje zapoljava hiljadu i vie ljudi moe da ima veoma veliku bazu podataka od nekoliko terabajta podataka (jedan terabajt = 1012 bajtova) na mainframe kompjuteru na kome se nalazi aplikacija za podrku odluivanju. Veoma velika skladita podataka imaju vie od petabajta podataka (1 petabajt = 1015 bajtova). U irem smislu, bazu podataka moemo posmatrati kao integrisani skup podataka o nekom sistemu i skup postupaka za njihovo odravanje i korienje, organizovan prema potrebama korisnika. To je dobro struktuirana

-3-

kolekcija podataka, koja postoji jedno odreeno vreme, koja se odrava i koju koristi vie korisnika ili programa.

-4-

1.2.1. Podatak
Istorijski, pod terminom podatak se podrazumeva injenica o nekom predmetu i/ili dogaaju koja se moe zabeleiti i sauvati na raunaru. Na primer, u bazi podataka nekog prodavca podaci bi bile injenice kao to su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove struktuirani podatak. Najvaniji struktuirani podaci su brojevi, karakteri i datumi (vreme). Dananje baze podataka pored struktuiranih podataka sadre i druge vrste podataka kao to su razna dokumenta, mape, fotografije, zvuk, ak i video zapise. Na primer, u bazi podataka nekog prodavca mogla bi se nai i slika kupca. Takoe bi se mogao nai zvuni ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni podaci se najee mogu nai na web serverima i u Internet bazama podataka. Danas se podatak definie kao sauvana reprezentacija predmeta i/ili dogaaja koja ima smisla i vanosti za korisnika baze podataka. Ova definicija ukljuuje i struktuirane i nestruktuirane podatke. esto se u okviru jedne baze podataka mogu nai kombinovani struktuirani i nestruktuirani podaci kako bi se stvorilo multimedijalno okruenje. Na primer, automehaniarska radnja moe kombinovati struktuirane podatke (koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika automobila i skenirana kopija osiguranja). Pod podatkom se podrazumeva injenica prihvaena kao takva tj. kakva jeste. Podatak sam po sebi nema znaenje, tek kada se interpretira nekom vrstom sistema za obradu podataka poprima znaenje i postaje informacija. Tipino, termin podatak se odnosi na ono to je u bazi podatak. Dakle, podatak je sirova injenica - neobraena informacija. Raunar vri obradu podataka, prema zadatom programu, te se na osnovu saznanja sadranih u podacima, a kao rezultat njihove obrade, stiu nova saznanja - informacije.

-5-

1.2.2. Informacija
Termini podatak i informacija su usko povezani i esto se koriste kao sinonimi. Meutim, korisno je razlikovati termine podatak i informacija. Informaciju definiemo kao podatak koji je bio obraen na takav nain da se znanje osobe koja koristi podatak povealo. Na primer, razmotrimo sledei spisak injenica: Petar Petrovi Marko Markovi 0123 Janko Jankovi 0456 -------------------Slika 1.1 Skup podataka Prikazane injenice po definiciji pretstavljaju podatke, ali bi se veina sloila da su ovi podaci u sadanjoj formi beskorisni. ak iako pretpostavljamo da se radi o imenima osoba i njihovim matinim brojevima, podaci ostaju beskorisni jer ne znamo emu slue. Pogledajte ta se dogaa kada stavimo ove iste podatke u kontekst, kao to je pokazano na slici 1.2. Dodavanjem jo nekoliko dodatnih podataka i njihovim ureivanjem, prepoznajemo spisak upisanih studenata. Na ovaj nain se dolazi do informacije koja je korisna npr. upravi fakulteta, profesorima, studentskoj slubi i sl. Ime i prezime Petar Petrovi Marko Markovi Janko Jankovi ----------JMBG 1506983710325 0211979850123 1112985830456 -----------6-

150698371 0325 021197985 111298583

Smer PP RGD PP RGD

Godina upisa 2002 2001 2001 2003

Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu Drugi nain da se iz podataka dobiju informacije je da se podaci sumiraju ili na neki drugi nain obrade i prezentuju. Na primer, na slici 1.3 se vide sumirani podaci o upisu studenata prezentirani u vidu grafike informacije. Ova informacija se moe iskoristiti kao osnova za odluivanje o dodavanju novih predavanja ili o zapoljavanju novog nastavnog kadra. Moderne baze podataka vrlo esto sadre i podatke i informacije. Podaci se esto obrauju i uvaju u obraenoj formi i slue za pomo pri donoenju odluka, a takvim podacima (informacijama) se najbre pristupa.

-7-

Broj upisanih studenata po kolama

Ostali; 63

Gimnazija; 58 Gimnazija Tehnika kola Ekonomska kola Ostali Tehnika kola; 79

Ekonomska kola; 45

Broj upisanih studenata po godinama


300 245

250 198

200

150

125

Broj upisanih studenata

100

76 30

50

0 2001 2002 2003 2004 2005

Slika 1.3 Grafiki prikaz podataka iz BP - informacija o upisu Podaci obraeni tako da dobijaju znaenje ine informaciju. Informacija koja je precizna, relevantna, i dobijena na vreme je klju za donoenje dobre odluke.

-8-

Slika 1.4 Obradom prikupljenih podataka nastaje informacija

1.2.3. Metapodaci - podaci o podacima (metadata)


Podaci koji se prikupljaju i uvaju u bazi podataka esto se nazivaju i podaci krajnjih korinika (end user data). Metapodaci su podaci koji opisuju svojstva ili karakteristike podataka krajnjih korisnika i kontekst tih podataka. Neka tipina svojstva podataka su naziv (ime) podatka, definicija, duina (veliina), i dozvoljene vrednosti. Kontekst podataka, koji opisuju metapodaci, podrazumeva izvor podataka, gde se uvaju podaci, vlasnitvo i korienje. Tabela 1.1 Primer metapodataka
Naziv Ime JMBG Smer GdUpisa Tip Text Integer CHAR Number Du. 30 1 3 2001 Min Max Opis Ime i prezime studenta Jedinstven matini broj Smer na fakultetu Godina upisa Izvor Lina karta Lina karta Strudentska sluba Studentska sluba

Metapodaci opisuju svojstva podatka ali se nalaze odvojeno od tog podatka. Metapodaci iz tabele1.1 ne prikazuju ni jedan podatak. Oni omoguavaju dizajnerima i korisnicima baza podataka da razumeju koji
-9-

podaci postoje u bazi, ta oni znae, i koja je razlika izmeu podataka koji na prvi pogled izgledaju isto. Upravljanje metapodacima je veoma bitno jer podaci bez jasnog znaenja mogu biti zbunjujui, pogreno protumaeni ili puni greaka.

1.2.4. Sistem za upravljanje bazama podataka


Sistem za upravljanje bazama podataka (DBMS - Data Base Management System) je softverski sistem koji se koristi za kreiranje, odravanje i manipulisanje podacima, kao i za kontrolu prava pristupa bazi podataka. DBMS omoguava krajnjim korisnicima i programerima da dele podatke, tj. omoguava da se podaci koriste od strane vie aplikacija, a ne da svaka aplikacija ima svoju kopiju podatka sauvanu u posebnim datotekama. DBMS takoe prua mogunost kontrole pristupa podacima, osigurava integritet podataka, uspostavlja kontrolu konkurentnosti i vri oporavak baze podataka. Programeri aplikacija za rad sa bazama podataka ne moraju da poznaju detalje o nainu zapisa baze podataka na disku, ne moraju da formuliu algoritme za efikasan pristup podacima, niti su optereeni bilo kakvim aspektima oko upravljanja podacima u bazi podataka. Danas je veoma bitan i znaajan koncept baze podataka po kome je to, u stvari, zajedniki resurs koga istovremeno (konkurentno) koristi vei broj programa, jer se pravi efekti baze podataka ispoljavaju kada se radi u mrenom okruenju. Posmatrajmo bazu podataka jedne banke u kojoj se nalaze rauni graana. Mogue je da se u istom trenutku na alteru u jednoj ekspozituri podie novac sa jednog rauna i uplauje na drugi raun, a da se istovremeno u sasvim drugoj ekspozituri uplauje novac na isti taj raun. Pomenuti DBMS je upravo tu da upravlja konkurentnim radom vie korisnika i da obezbeuje sinhronizaciju njihovog rada. Takoe, DBMS ima funkciju da sprei tetne posledice (naruen integritet baze, nekonzistentno stanje baze...) pri promenama (transakcijama) koje se vre nad bazom podataka u viekorisnikom okruenju. U tu svrhu postoje razne tehnike kao to su tehnika zakljuavanja podataka, tehnika vremenskog markiranja itd. Posebno je znaajno upravljanje istovremenim (konkurentnim) transakcijama. Tanost, zatita i dostupnost baza podataka, kao i korektnost i performanse transakcija koje pristupaja tim bazama su bitni parametri za
- 10 -

uspeh svakog poslovnog sistema.Termini baza podataka i upravljanje bazom podataka se ponekad meaju. Struno govorei, baza podataka je uvek skup injenica, a ne raunarski program. DBMS je uveden kao interfejs izmeu korisnika (korisnikih programa, aplikacija) i zapisa baze podataka na disku. Korisniki programi ne pristupaju podacima direktno, ve komuniciraju sa ovim softverom (programom). DBMS upravlja strukturom baze podataka: definie objekte baze, njihova svojstva (atribute), dozvoljene vrednosti atributa, veze izmeu objekata, ogranienja nad objektima i meusobnim vezama. Omoguava manipulaciju podacima u bazi: unoenje, brisanje i izmene, tj. omoguava njeno odravanje. Kontrolie pristup podacima: ko moe da pristupi podacima, kojim podacima i ta moe sa njima da radi.. DBMS dozvoljava deljenje BP izmeu vie aplikacija/korisnika i ini upravljanje podacima uspenijim i delotvornijim Uobiajeno je da kada se govori o softveru za baze podataka, onda se misli upravo na DBMS. DBMS upravlja interakcijom izmeu krajnjih korisnika (aplikacija) i baze podataka. Krajnji korisnici imaju bolji pristup veem broju bolje organizovanih podataka
Aplikacija Y Aplikacija X Aplikacija Z

Data Base Management System

Baza podataka Baza podataka podaci na disku

Slika 1.5 DBMS je interfejs izmeu (aplikacija) korisnika i zapisa baze podataka na disku

- 11 -

1.3. Klasian sistem zasnovan na datotekama


Kada su se raunari poeli koristiti za obradu podataka, nisu postojale baze podataka. Raunari su u to vreme bili znatno slabiji nego dananji personalni raunari, zauzimali su itavu prostoriju i koristili su se skoro iskljuivo za nauna izraunavanja. Postepeno su raunari uvoeni u poslovni svet. Da bi bili od koristi za poslovne aplikacije, raunari moraju da skladite, manipuliu, i preuzimaju velike datoteke podataka. Kako su poslovne aplikacije postajale sve kompleksnije, postalo je oigledno da klasini sistemi zasnovani na datotekama imaju veliki broj nedostataka i ogranienja. U veini bitnih poslovnih aplikacija danas se umesto klasinog sistema zasnovanog na datotekama koriste baze podataka. Klasian sistem obrade podataka zasnovan na datotekama i programskim jezicima prikazan je blok emom na sledeoj slici. Programi su direktno povezani sa datotekama, svaki program mora da poznaje detaljan zapis podataka na disku .
Aplikacija Y Aplikacija X Aplikacija Z

Datoteka X1 Datoteka X2 Datoteka X3

Datoteka Y4 Datoteka Y5 Datoteke podaci na disku

Datoteka Z1 Datoteka Z2 Datoteka Z3

Slika 1.6 Klasian sistem obrade podataka zasnovan na programskim jezicima i datotekama Da bi objasnili osnovne karakteristike sistema zasnovanog na datotekama, posmatrajmo jednu fabriku sa odreenim proizvodnim programom. Pretpostavimo da su nabavljene raunarske aplikacije za
- 12 -

voenje poslovanja ove fabrike realizovane na klasinim sistemima koji se zasnivaju na datotekama. Ovaj pristup dizajnu informacionog sistema se fokusira na potrebe za obradom podataka pojedinanih odeljenja, a ne na potrebe organizacije kao celine. Kada bi se kod korisnika javila potreba za novim sistemima pisali bi se novi raunarski programi za individualne aplikacije kao to su kontrola proizvoda, prijem rauna, ili kadrovski poslovi. Svaki od programa pravi se tako da odgovara potrebama odreenog odeljenja ili radne grupe. Prema tome, ne postoji opti plan, mapa ili model kojim bi se rukovodili za planiranje razvoja sistema. Tri raunarske aplikacije (A, B i C) pomou kojih se obrauju podaci zapisani u datotekama su prikazane na slici 1.7. Programima se odravaju tri nezavisna sistema porudbine, naplate i plate. Na slici se takoe vide osnovne datoteke vezane za svaku aplikaciju. Na primer, proces porudbina ima tri datoteke: podaci o kupcu, podaci o proizvodima, podaci o porudbinama. Neke od datoteka se ponavljaju u sva tri procesa (redudansa) to je tipino za sistem obrade podataka koji se zasniva na datotekama.

Slika 1.7 Klasina obrada podataka zasnovana na sistemu datoteka

- 13 -

1.3.1. Nedostaci sistema zasnovanog na datotekama


Postoji vie mana koje su tipine za sistem koji je zasnovan na datotekama i klasinim programskim jezicima. Ove mane za primer prikazan na slici 1.7 kratko su opisane u nastavku. Zavisnost izmeu programa i podataka Opisi datoteka se uvaju u okviru svakog programa koji pristupa toj datoteci. Na primer, u procesu porudbine sa slike 1.7 program A pristupa datoteci sa podacima o kupcu. Stoga, ovaj program sadri detaljan opis datoteke. Kao posledica ovoga, svaka promena koja se napravi u datoteci, a odnosi se na strukturu, momentalno podrazumeva da se mora menjati i opis datoteka u svakom programu koji pristupa tim podacima. Primetite na slici 1.7 da se podaci o kupcima nalaze i u procesu porudbine i u procesu naplate. Pretpostavimo da se veliina polja "adresa kupca" menja sa 20 karaktera na 30 karaktera. Opis datoteke u svakom programu (moda ak u svih tri) se mora aurirati. esto je teko i samo lociranje svih programa na koje je uticala ovakva promena. to je jo gore, pri auriranju se esto prave greke. Redudansa podataka Kako se u prikazanom sistemu procesi odvijaju nezavisno jedni od drugih, ponavljanje podataka nije izuzetak ve je pravilo. Na primer, na slici 1.7 proces porudbina ima datoteke sa osnovnim podacima o proizvodima dok proces naplate ima datoteku o cenama proizvoda. Dakle, obe ove datoteke sadre podatke o istim proizvodima kao to su: cena po jedinici proizvoda, opis proizvoda, i koliina u skladitu. Zbog nepotrebnih duplikata potreban je vei prostor za njihovo uvanje kao i vie truda i rada pri njihovom auriranju. Neplanirana redudansa podataka moe da dovede do gubitka podataka. Na primer, isti podaci mogu se voditi pod razliitim imenima atributa u razliitim dokumentima, ili obrnuto, isto ime se moe koristiti za razliite vrste podataka.

- 14 -

Ogranienost deljenja podataka Korienjem klasinog sistema zasnovanog na datotekama, svaki proces ima svoje datoteke i korisnici nemaju ansu da meusobno dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da radnici u raunovodstvu imaju pristup samo procesu naplate, dok nemaju pristup procesima porudbina i plata. Menaderi su imali velike probleme pri sastavljenju izvetaja za koje su im bili potrebni podaci iz razliitih procesa, jer bi se esto desilo da su dokumenta nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti podaci sakupili u jedan izvetaj. Takoe, dodatni problem je bio u tome to su se eljeni podaci esto nalazili u razliitim odeljenjima organizacije. Dugo vreme za razvoj Sa klasinim sistemom zasnovanom na datotekama postoji mala ansa za korienje prethodnih razvojnih dostigua. Svaka nova aplikacija zahteva od projektanta da krene od nule. Svaki put je neophodno definisati nove formate i opise podataka i pisati kod za pristup podacima za svaki program. Ovako veliko potrebno vreme za razvoj nije u skladu sa dananjim poslovnim potrebama, gde je svaki minut bitan da bi se postigao uspeh. Teko odravanje programa Skup svih prethodno navedenih nedostataka dovodi do preterane potrebe za odravanjem programa. ak 80% budeta predvienog za razvoj sistema zasnovanog na datotekama odlazi na njegovo odravanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj novih aplikacija.

Vano je znati da veina mana klasinog sitema zasnovanog na datotekama, koje smo u prethodnom delu teksta pominjali, mogu isto tako biti ogranienja za bazu podataka, pogotovo ako se ne promeni pristup razvoju baze podataka. Na primer, ukoliko preduzee razvije nekoliko zasebnih baza podataka (recimo, za svaku radnu jedinicu ili proces po jednu bazu) sa malom ili nikakvom vezom izmeu njih, onda moe doi do bespotrebnog ponavljanja istih podataka, ogranienja deljenja podataka, produavanja vremena potrebnog za razvoj i preterane potrebe za odravanjem programa.
- 15 -

1.4. Pristup zasnovan na bazama podataka


Pristup zasnovan na bazama podataka potencira integraciju i deljenje podataka izmeu svih odeljenja jedne organizacije. Ovaj pristup zahteva potpunu promenu u nainu razmiljanja, poevi od najvieg nivoa upravljanja. Takva promena naina razmiljanja za veinu organizacija je veoma teka. Da bi objasnili pristup zasnovan na bazama podataka posmatrajmo prethodno razmatrani zastareli informacioni sistem fabrike koji se klasino zasnivao na datotekama. Koncept pristupa razvoju informacionog sistema zasnovanog na bazama podataka prikazan je na slici 1.8. Odmah se moe uoiti da podaci koji su prethodno uvani u vie razliitih datoteka, sada su integrisani u jedinstvenu bazu podataka. Takoe, metapodaci koji opisuju ove podatke se nalaze zajedno sa njima u bazi podataka. Sistem za upravljanje bazama podataka prua mogunost stvaranja razliitih pogleda na istu bazu podataka (ili baze podataka) za razliite korisnike u organizaciji. DBMS dozvoljava korisnicima da dele, pretrauju, pristupaju i auriraju integrisanim podacima.

Slika 1.8 Blok ema informacionog sistema zasnovanog na bazama podataka

- 16 -

1.4.1. Prednosti pristupa zasnovanog na bazama podataka


Pristup zasnovan na bazama podataka ima mnogo potencionalnih prednosti u odnosu na pristup zasnovan na datotekama. Te potencionalne prednosti su sledee: Nezavisnost izmeu programa i podataka Odvajanje metapodataka od aplikacija koje koriste podatke naziva se nezavisnost podataka. Ova osobina kod baza podataka dozvoljava promenu i prenos podataka organizacije na druge raunarske sisteme bez potrebe za promenom programa koji obrauje ove podatke. Minimalna redudansa podataka Cilj pristupa zasnovanog na bazama podataka je da se podaci koji su se u prethodnom pristupu uvali odvojeno (i vie puta su zbog toga ponavljani) sada integriu u jedinstvenu logiku strukturu. Svaki podatak se nalazi samo na jednom mestu u bazi podataka. Pristup zasnovan na bazama podataka ne uklanja redudansu u potpunosti, ali omoguava projektantu baze podataka da paljivo isplanira vrstu i koliinu redudanse. U nekim sluajevima je poeljno napraviti ogranienu redudansu kako bi se performanse baze podataka poboljale (npr. bra pretraga). Poboljana konzistentnost podataka Eliminisanjem (ili kontrolisanjem) redudanse podataka, u velikoj meri se smanjuju anse za nekonzistentnou podataka. Na primer, ukoliko je adresa kupca zapisana na samo jednom mestu ne moe da postoji ne podudaranje u podacima u bazi podataka. Takoe, auriranje podataka je u velikoj meri uproeno, kada je svaka vrednost zapisana na samo jednom mestu. Na kraju, uklanjanjem redudanse podataka dolazi do utede memorije.

- 17 -

Poboljana razmena podataka Baza podataka je dizajnirana kao resus organizacije koji koriste svi njeni zaposleni (kojima je ona neophodna u opisu posla). Odreenim internim i eksternim korisnicima je dozvoljeno korienje baze podataka, i svaki od njih (bio u pitanju jedan korisnik ili grupa) ima jedan ili vie pogleda koji mu olakavaju korienje baze podataka. Korisniki pogled je logiki opis jednog dela baze podataka koji je neophodan korisniku da obavi neki zadatak. Poveana produktivnost u razvoju aplikacija Velika prednost pristupa zasnovanog na bazama podataka je ta to se u znatnoj meri smanjuju trokovi i vreme potrebno za razvoj novih poslovnih aplikacija. Postoje dva vana razloga zato se aplikacije baza podataka razvijaju znatno bre nego kod klasinih sistema sa datotekama: 1. Pretpostavljajui da su baza podataka i sve propratne aplikacije ve napravljene i implementirane, programer se moe koncetrisati na odreenu funkciju koja je neophodna za novu aplikaciju, a ne mora da razmilja o definisanju podataka ili o detaljima vezanim za implementaciju. 2. DBMS prua veliki broj alata za izvetavanje, kao to su generatori formi i izvetaja, i jezike uz pomo kojih se automatizuju neke od aktivnosti kao to su dizajn i implementacija baza podataka.

Smanjena potreba za odravanjem programa Sauvani podaci se moraju esto menjati iz velikog broja razloga: nove vrste podataka se dodaju, formati podataka se menjaju, i tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu godinu, kada se sa uobiajenog sistema prikazivanja godina sa dve cifre moralo prei na etiri cifre. U sistemu obrade datoteka, metapodaci i logika pristupanju podacima se nalaze u individualnim aplikacionim programima (ovo je zavisnost izmeu programa i podataka o kojoj je ranije bilo rei). Kao rezultat ovoga, promena formata podataka i metoda pristupanja momentalno dovodi do potrebe menjanja aplikativnih programa.
- 18 -

Kod baza podataka, podaci su znatno vie nezavisni od aplikativnih programa koji ih koriste. U okviru odreenih granica, moemo da promenimo jednu od stavki, format podataka ili aplikativni program, a da ne moramo da promenimo drugu stavku. Kao rezultat ovoga, javlja se smanjenje potreba za odravanjem programa.

1.4.2. Trokovi i rizici pristupa zasnovanog na bazama podataka


U prethodnom delu teksta navedeno je nekoliko glavnih potencijalnih prednosti pristupa zasnovanog na bazama podataka. Meutim, kod velikog broja organizacija bilo je razliitih problema kod ostvarenja i iskorienja tih prednosti. Na primer, postizanje nezavisnosti podataka (i stoga, smanjene potrebe za odravanjem programa) se pokazalo kao teko ostvarivo zbog ogranienja starijih modela baza podataka i softvera za upravljanje bazama podataka. Na sreu, relacioni modeli (kao i noviji objektno-orjentisani modeli) nemaju ovih problema. Drugi razlog za neuspeh da se iskoriste ove prednosti, je loe planiranje i implementacija baza podataka ak ni najbolji softver za upravljanje bazama podataka ne moe da prevazie ovakve manjkavosti. Pristup zasnovan na bazama podataka sadri neke dodatne trokove i rizike koji se moraju reavati kada se sistem pone primenjivati. Novo, obueno osoblje esto se deava da preduzee, koje se odlui za pristup zasnovan na bazama podataka, mora da anagauje ili obui ljude za projektovanje, implementiranje i odravanje baza podataka, kao i da te ljude ukljui u postojeu radnu organizaciju. Dalje, zbog estih izmena i brzine razvoja tehnologije, znanje ovog novog osoblja zahteva stalnu nadgradnju i unapreivanje. Jedino obueno osoblje moe da izvue maksimum korisnosti iz novih tehnologija.

- 19 -

Trokovi i sloenost instaliranja, upravljanja i rada sistema sa bazama podataka Viekorisniki sistem za upravljanje bazama podataka je veliki i sloen softver koji u startu mnogo kota, zahteva obueno osoblje za instaliranje i rad i ima znaajne godinje trokove za odravanje i tehniku podrku. Instaliranje ovakvog sistema moe zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju, da bi se mogle pratiti nove verzije i nadogradnje softvera. Takoe se moe pojaviti potreba za dodatnim i skupljim softverom za baze podataka radi vee sigurnosti podataka. Trokovi prilagoavanja (konvertovanja) podataka Termin nasleeni sistemi se uglavnom koristi kada se govori o starijim aplikacijama u preduzeu koje su bazirane na datotenom pristupu ili starijim bazama podataka. Trokovi prilagoavanja ovakvih starijih sistema za rad sa modernim bazama podataka (mereni u novcu, vremenu i zahtevnosti posla) esto deluju kao velika prepreka za preduzee. Potreba za izradom sigurnosnih kopija i oporavkom podataka (backup) Deljena baza podataka preduzea uvek mora biti tana i dostupna. To zahteva razvijanje i korienje jasnih procedura izrade sigurnosnih kopija kao i oporavak baze podataka kada neko oteenje nastane. U dananjem okruenju, gde postoje raznovrsni bezbednosni rizici, reavanje ovog problema je od izuzetne vanosti. Moderan sistem za upravljanje bazama podataka obino sam obavlja izradu sigurnosnih kopija i oporavak podataka u sluaju havarija. Konflikti u organizaciji Deljena baza podataka zahteva saglasnost u vezi sa definicijama i vlasnitvom podataka, kao i utvrenu osobu ili osobe odgovorne za odravanje podataka. Iskustvo je pokazalo da nesuglasice u pogledu definicija podataka, formata i kodiranja podataka, prava na auriranje deljenih podataka i sl. su esta i vrlo teka tema za reavanje. Da bi se ovi problemi reili potrebno je da je organizacija u potpunosti posveena uvoenju/koritenju pristupa zasnovanog na bazama podataka. Zatim je potreban sposoban administrator baze podataka kao i smislen pristup razvoju baza
- 20 -

podataka. Ukoliko podrka i posveenost glavnih menadera za pristup okrenut bazama podataka izostane, velika je ansa da e krajnji korisnici razviti vei broj samostalnih baza podataka. Ove baze podataka e teko pruiti prednosti koje smo prethodno opisali. U krajnosti, one mogu da dovedu do donoenja loih odluka to naravno ugroava celu organizaciju.

1.5. Primene baza podataka


Vrste baza podataka variraju od onih pravljenih za jednog korisnika PC raunara do baza koje su smetene na glavni raunar (mainframe) i kojima pristupaju hiljade korisnika. Po broju korisnika koji im pristupaju, baze podataka se mogu podeliti u vie kategorija: line baze podataka, baze podataka za radne grupe, baze podataka odeljenja, baze podataka preduzea i Internet, intranet i ekstranet baze podataka.

1.5.1. Line baze podataka


Line baze podataka se prave za korienje od strane jednog korisnika i ve su dugo prisutne u korienju personalnih raunara. Pojavom linih digitalnih pomonika (PDA), line baze podataka su nale primenu i u nizu mobilnih ureaja koji osim raunarskih imaju i neke druge primene npr. mobilni telefoni, faks maine, Internet itai. Jednostavne aplikacije sa bazom podataka u kojoj uvaju informacije i detalje o komunikaciji sa svakim klijentom, mogu da se koriste i sa raunara i sa linog digitalnog pomonika, kao i da se prebacuju sa jednog na drugi ureaj radi izrade sigurnosnih kopija (backup) ili zbog zahteva posla. Uzmimo za primer preduzee koje ima odreeni broj prodavaca koji su u kontaktu sa postojeim i potencijalnim klijentima. Ako svaki prodavac ima jo neke aplikacije, npr. grafike prezentacije, cenovnik sa uslovima prodaje po kojem klijentu moe ponuditi najpovoljniju kombinaciju proizvoda i koliina za naruivanje, onda bi mu za takav posao prenosni raunar, zbog svojih performansi i skladinog prostora, mogao biti optimalno reenje. S druge strane, ako prodavac ima samo listu klijenata i kontakata, njemu bi lini digitalni pomonik i aplikacija koja koristi malu bazu podataka bili najbolje reenje.

- 21 -

Line baze podataka se iroko primenjuju jer esto mogu bitno unaprediti produktivnost pojedinca. Meutim, one sadre jedan faktor rizika: podatke ovih baza nije lako deliti sa drugim korisnicima. Na primer, ako bi menader prodaje eleo celokupan spisak klijenata i kontakata, to se ne bi moglo ni brzo ni lako uraditi uzimanjem podataka iz linih baza svakog od prodavaca. Ovo ilustruje veoma est problem: ako su neki podaci od interesa jednom oveku, onda su verovatno (ili e brzo postati) od interesa i drugim ljudima. Zbog toga, line baze podataka bi trebalo svesti na korienje pod posebnim okolnostima (npr. u veoma malim preduzeima) gde je verovatnoa potreba za deljenjem podataka izmeu korisnika izuzetno mala.

1.5.2. Baze podataka za radne grupe


Radnu grupu ini relativno mali broj ljudi koji sarauju na jednom projektu ili aplikaciji ili na grupi slinih projekata ili aplikacija. Radna grupa obino sadri desetak ljudi. Oni mogu biti ukljueni u npr. planiranje, projektovanje ili razvoj novog raunarskog programa. Baza podataka za radne grupe slui za podrku zajednikog rada jedne takve grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i programe po porudbini, koji se prodaju softverskim kompanijama kao i krajnjim korisnicima. Obino, jedna ili vie osoba rade na datom programu, ili dele programe, u isto vreme. Grupi je potrebna baza podataka koja e da prati razvoj svakog dela i koja e da omogui da se podaci to lake razmenjuju meu lanovima tima. Svaki lan radne grupe ima svoj raunar, a raunari su umreeni putem LAN-a. Baza podataka se nalazi na centralnom raunaru koji se zove server baze podataka, koji je takoe na mrei. Stoga, svaki lan grupe ima pristup podacima. Razliiti lanovi grupe (u zavisnoti da li je u pitanju rukovodilac projekta ili projektant, programer) mogu imati razliita ovlaenja (privilegije), a time i razliite poglede na podatke. Primetiete da je glavna mana linih baza podataka, teko ostvariva razmena podataka, ovde prevaziena (barem je razmena podataka u okviru grupe lako ostvariva). Meutim, razmena podataka otvara nova pitanja i probleme koji nisu postojali kod linih baza podataka. Glavni problemi upravljanja podacima su vezani za njihovu bezbednost i integritet, s obzirom da vie korisnika moe istovremeno da obavlja auriranje podataka.
- 22 -

1.5.3. Baze podataka odeljenja


Odeljenje je funkcionalna radna jedinica u okviru organizacije. Tipini primeri odeljenja su: kadrovsko, marketing, proizvodnja, raunovodstvo i sl. Odeljenje je obino vee od radne grupe (nekada se sastoji i do 100 osoba) i odgovorno je za vei broj razliitih poslova. Baze podataka odeljenja su napravljene da podre razliite oblike poslova i aktivnosti koje obavlja to odeljenje. Uzmimo za primer bazu podataka kadrovskog odeljenja u kojoj se prate podaci vezani za zaposlene, vrste poslova, strunu spremu i poslovna zaduenja. Kada su svi relevantni podaci sauvani u bazi podataka, korisnici mogu da pretrauju bazu podataka u cilju dobijanja odgovora na pitanja kao to su sledea: Za odreenu vrstu zanimanja (npr programer) kakve prilike za zaposlenje trenutno postoje u organizaciji? Za tu istu vrstu posla koja struna sprema ili vetina je neophodna? Koje vetine, znanje poseduje odreeni radnik? I obrnuto, koji radnici poseduju odreenu vetinu, znanje? Koji sve radnici su obavljali odreeni posao u organizaciji? I obrnuto, koje sve poslove je odreeni radnik obavljao u organizaciji? Koje sve zaposlene nadgleda odreeni menader? Tipina pitanja na koja se treba odgovoriti pri pravljenju baze podataka odeljenja su: 1. Kako baza podataka i njeno okruenje trebaju da budu organizovani da bi se ostvarile zadovoljavajue performanse, uzimajui u obzir veliki broj korisnika i veliki broj transakcija? 2. Kako na odgovarajui nain obezbediti podatke od nedozvoljenog pristupa i/ili distribucije? 3. Koje alate za razvoj baze podataka i aplikacija treba koristiti u sluaju ovako kompleksnog okruenja? 4. Da li i druga odeljenja koriste iste vrste podataka, i ako je to sluaj, kako se najbolje moe upravljati podacima po pitanju njihove redudantnosti i konzistentnosti i metapodacima po pitanju njihove konzistentnosti? 5. Da li su korisnici baze podataka geografski jedni od drugih udaljeni ili je veliina baze podataka tolika da se podaci moraju
- 23 -

uvati na vie raunara, tako stvarajui distribuirane baze podataka? 6. Da li se bazi podataka moe pristupati preko Interneta i da li ona treba da bude ukljuena u intranet organizacije?

1.5.4. Baze podataka organizacija


Baza podataka organizacije obuhvata itavu organizaciju ili vie njenih odeljenja. Ova vrsta baza podataka je namenjena da podri sve procese organizacije i proces donoenja odluka. Vano je istai da jedna organizacija moe imati vie baza podataka, tako da jedna takva baza podataka ne sadri sve podatke jedne organizacije. Jedna baza podataka za celu organizaciju srednjih do velikih dimenzija ne bi bila praktina iz mnogo razloga. Kao prvo zbog razliitih potreba razliitih korisnika, kompleksnosti stvaranja jedinstvenih metapodataka za sve korisnike baze podataka je ogromna. Baza podataka organizacije prua podrku za jedan odreeni broj (skup) odeljenja. Tokom poslednje decenije, razvoj baza podataka organizacije je doveo do dva najvanija oblika: 1. Enterprise resource planning (ERP) sistem 2. Implementacija skladita podataka (data werehouses) ERP sistemi rade sa tekuim podacima organizacije, dok skladita podataka sakupljaju podatke iz raznih operativnih baza podataka, ukljuujui i line, radnih grupa, odeljenja i ERP baze podataka. Skladita podataka pruaju mogunost korisnicima da rade sa prethodnim podacima kako bi pronali obrazce i trendove dogaaja i kako bi odgovorili na pitanja koja su vezana za strategiju poslovanja. Uzmimo za primer veliku zdravstvenu organizaciju koja upravlja grupom medicinskih centara, u ta spadaju domovi zdravlja, bolnice, klinike i staraki domovi. Svaki od ovih medicinskih centara ima svoju bazu podataka (ili baze podataka) koja prua podrku u obavljanju raznih poslova. Ove baze podataka imaju podatke o pacijentima, doktorima, medicinskim uslugama, poslovanju i drugim bitnim entitetima. Baza podataka prua adekvatnu podrku za veinu poslova u svakom pojedinanom medicinskom centru. Meutim, postoji potreba za
- 24 -

jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla sva poslovanja sa jednim dobavljaem ili pacijentom. Povaanje produktivnosi se moe postii uvoenjem, na primer, centralnog sistema za naruivanje materijala za sve zdravstvene centre i raporeivanjem osoblja i usluga koje vre na sve zdravstvenim centre. ERP sistem omoguava uvoenje prethodnih promena. Donoenje odluka na nivou cele organizacije, u vezi sa poslovanjem sa dobavljaima, i podnoenje izvetaja raznim agencijama zahteva sakupljene svih prethodnih podataka i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi skladite podataka koje se odrava i nalazi u seditu organizacije. Podaci koji se nalaze u skladitu podataka su preuzeti (i potom sumirani) iz pojedinanih baza podataka svakog medicinskog centra. Ovaj proces preuzimanja podataka se odvija periodino putem telekomunikacionoraunarske mree.

1.5.5. Internet, Intranet i Extranet baze podataka


Internet tehnologije slue za olakavanje deljenja podataka i informacija. Na primer, u okviru fabrike moe se koristiti lokalna mrea (LAN) koja povezuje radne stanice zaposlenih iz raznih odeljenja sa serverom na kome se nalazi baza podataka. LAN unapreuje komunikaciju i proces donoenja odluka u okviru same kompanije. Ako se uvede Intranet koji se zasniva na Web tehnologiji, njemu se moe pristupati samo u okvirima kompanije. Radna stanica svakog zaposlenog se moe koristiti kao web browser, i na taj nain se dobija brz pristup informacijama kompanije, ukljuujui i telefonski adresar, specifikacije proizvoda, elektronsku potu i tome slino. Takoe se radne stanice mogu koristiti i kao personalni raunari koji povezani preko LAN-a pristupaju serveru na kome se nalazi baza podataka. Mogue je dodati i Web interfejse nekim poslovnim aplikacijama, kao to su unoenje porudbina, da bi na taj nain vie internih poslovnih aktivnosti moglo biti obavljano od strane zaposlenih preko intraneta. U cilu efikasnijeg ukupnog poslovanja intranet sistem se moe otvoriti ka kupcima preko Interneta. Ovo omoguava maloprodajama da pretrauju katalog proizvoda (ukljuujui slike i specifikacije proizvoda) i utvrde da li eljenog proizvoda ima u skladitu. Tada radnici u maloprodajnim objektima mogu da obaveste svoje kupce i da porue eljeni komad
- 25 -

proizvoda preko Interneta. Internet konekcija je konfigurisana kao extranet to znai da samo odobrene maloprodaje mogu da pristupe intranet-u fabrike. Sve vee korienje Interneta, svetske mree koja povezuje korisnike, nebitno koje platforme je dovelo i do promena u okruenju baza podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do bitnih promena u davno utvrenim modelima poslovanja. Veoma uspene kompanije su bile ugroene zbog novih kompanija koje su prihvatile Internet pomou koga su unapredile informisanje i usluge koje su pruale svojim klijentima, i koje su zaobile tipine tokove marketinga i distribucije proizvoda. Na primer, kupci konfiguriu i poruuju svoj PC raunar direktno od proizvoaa raunara. Informacije o upranjenim mestima i aktivnostima organizacije se mogu dobiti preko Interneta za veinu organizacija. Svaka od ovih radnji zahteva podrku baze podataka. Lak pristup Internetu svih vrsta platformi omoguava kompanijama da reorganizuju svoje poslove i razviju bre aplikacije i to po manjim trokovima. Standardni interfejsi omoguavaju veu produktivnost korisnika, uz manje provedenog vremena na obuci, i manju potrebnu podrku. Osnova razvoja korisnikove aplikacije je prikljuivanje baze podataka iz koje se mogu dobiti svee informacije. Kada je baza podataka povezana sa nekom Internet lokacijom, korisnici preko Web browser-a mogu da postavljaju odreena pitanja na koja e dobiti odgovore bazirane na sveim informacijama. Odgovaranje na pitanja je automatsko; nema potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo pitanje nekoj osobi i da bi se zatim od nje ekao odgovor. Internet baze podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta. Kompanije prate sva deavanja na sajtu kako bi doli do to vie informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom, duina zadravanja na svakoj stranici i tome slino) kako bi to vie unapredili svoj odnos prema kupcima. Veina primera koji su navedeni prikazuju Business-to-Customer (B2C) veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obino naziva B2B (Business-to-Business) odnos. Internet se koristi da olaka B2C odnos, zato to su kupci obavezno spoljni faktor u odnosu na firmu, i mogunost kupca da pristupi poslovnim podacima i informacijama je od velike vanosti za uspean odnos. Dozvoljavanjem pristupa poslovnim
- 26 -

bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se nova pitanja za rukovoenje informacionim sistemima vezana za sigurnost i integritet podataka. Kompanije su godinama vrile razmenu informacija putem elektronske razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije, uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za obavljanje B2B razmena podataka i informacija. Extranet koristi Internet tehnologiju, meutim, pristup extranetu je, za razliku od Interneta kome mogu svi pristupiti, ogranien. Ustvari, pristup je ogranien na kompanije koje su u ulozi dobavljaa i kupca i koje imaju meusobni dogovor o pristupu podacima i informacijama jednih drugima. Obino, prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera. Ovaj nain pristupa olakava poslovne odnose tako to prua bri i efikasniji nain obrade i pristupanja podacima. Kao to je prethodno pomenuto mnoge organizacije su koristile Internet tehnologiju za stvaranje privatne mree namenjene za upravljanje informacijama u okviru organizacije. Po izgledu ne postoji razlika izmeu intranet i Internet stranica, ali pristup intranet stranici je ogranien samo na korisnike u okviru te organizacije. Stoga je i pristup bazi podataka organizacije ogranien. Intranet moe da ostvari Internet konekciju ali ta konekcija e biti zatiena firewall-om koji spreava neovlaeni pristup intranetu.

- 27 -

1.6. Tipino okruenje baze podataka


Glavni delovi tipinog okruenja baze podataka i njihove veze su prikazani na slici 1.9. 1. Baza podataka Organizovan skup logiki povezanih podataka, obino napravljena da zadovolji potrebe za informacijama vie korisnika u organizaciji. 2. Skladite podataka Centralna baza znanja za sve definicije podataka, njihova ogranienja, veze izmeu podataka, izgleda ekrana i izvetaja i drugih sistemskih komponenti. Uskladiteni podaci iz prethodnog perioda. 3. DBMS Sistem za upravljanje bazama podataka (SUBP). Softverski sistem koji se koristi za kreiranje, odravanje i kontrolu pristupa korisnika baze podataka. 4. Aplikativni programi Raunarski programi koji slue za kreiranje i odravanje baze podataka i pruaju informacije korisnicima. 5. Administratori podataka i baza podataka Administratori podataka su osobe odgovorne za upravljanje svim izvorima podataka u organizaciji. Administratori podataka su odgovorni za fiziki dizajn baza podataka i za upravljanje tehnikim problematikama u okruenju baza podataka. 6. Projektanti sistema Osobe kao to su sistemski analitiari i programeri koji dizajniraju nove aplikativne programe. Projektanti sistema esto koriste CASE alate za analizu potreba sistema i dizajn programa. 7. Korisniki interfejs Jezici, meniji, i itd. pomou kojih korisnici koriste razliite komponente sistema, kao to su CASE alati, aplikativni programi, DBMS i metapodaci. 8. Computer-aided softver engineering (CASE) alati Alati koji se koriste za dizajniranje baza podataka i aplikativnih programa. 9. Krajnji korisnici Osobe koje dodaju, briu i modifikuju/auriraju podatke u bazi podataka i koje zahtevaju ili primaju podatke iz njih. Svaka interakcija izmeu korisnika i baze podataka deava se preko DBMS-a.

- 28 -

Slika 1.9 Komponente okruenja BP Sa unapreenjem softvera, korisniki interfejs postaje sve laki za upotrebu. Primeri za ovakav napredak su sistemi zasnovani na menijima, sistemi sa mogunou pristupa Internetu, i sistemi koji prepoznaju govor (prihvataju govorne komande). Cilj ovih sistema je da to vie krajnjih korisnika moe da koristi raunar, to znai da korisnici koji nisu raunarski eksperti mogu sami da naprave izvetaje i koriste jednostave aplikacije. Naravno, u ovakvom okruenju administratori baza podataka moraju da obrate panju na bezbednost baze podataka. Okruenje baze podataka prikazano na slici 1.9 predstavlja integrisani sistem hardvera, softvera i ljudi koji je napravljen da olaka skladitenje, preuzimanje, i kontrolu izvora informacija i da povea produktivnost preduzea.
- 29 -

1.7. Istorija razvoja baza podataka


Nastanak baza podataka se vezuje za Herman-a Holerith-a koji je 1884. godine prijavio patent sistem za automatsku obradu podataka (AOP) o popisu stanovnitva u SAD. Podaci na buenim karticama su runo ubacivani u ureaj za oitavanje, a obrada podataka se odnosila na prebrojavanje. Programiranje se svodilo na izbor vrste prebrojavanja, a radilo se runim prespajanjem kontakata. Dotadanja obrada podataka popisa trajala je 10-tak godina, a sa Holerith-ovim izumom vreme obrade bilo je smanjeno na est nedelja. Herman Hollerith je osmislio ideju po kojoj se svaki stanovnik SAD predstavlja nizom od 80 karaktera ime, godite itd. popunjenih praznim prostorima da bi se za sva imena obezbedila ista duina, tako da baza podataka bude poravnata. On je uspeo da proda koncept svoje maine i buene kartice koje su sluile za uvanje podataka u statistikom birou SAD. Tako je popis stanovnitva iz 1890. godine bio prva automatizovana baza podataka, koja se u sutini sastojala od hiljada kutija punih buenih kartica. Od Holerith-ove kompanije nastao je dananji IBM.

Slika 1.10 Izgled Holerith-ove buene kartice i maine za oitavanje kartica


- 30 -

Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama poeli su se pojavljivati prvi elektronski raunari. Oni su se esto koristili upravo za jednostavne linearne baze podataka, najee za raunovodstvo. Ipak, vrlo brzo, bogati kupci su poeli da zahtevaju vie od njihovih ekstremno skupih maina. Sve je to vodilo do ranih baza podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste Hollerith-ove buene kartice, neznatno modifikovane u odnosu na originalni dizajn. Nefleksibilnost polja iste duine, baze podataka pokretane 80 kolonskim buenim karticama, uinile su rane raunare metom napada i ala i potpunom misterijom za obinog oveka. Veina prvobitnih baza podataka se odnosila na specifine programe napisane za specifine baze podataka. Za razliku od modernih sistema koji mogu biti primenjeni na potpuno razliite baze podataka, ovi sistemi su bili usko povezani za bazu podataka da bi osigurali brzinu na utrb fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom sledeih decenija. U veini sluajeva, period uvoenja je dugo trajao, skoro deceniju pre navedene godine poetka upotrebe. Na primer, relacioni model je prvi put definisan od strane E.F.Codd u tekstu objavljenom 1970 godine. Meutim, relacioni model nije bio iroko prihvaen sve do 1980-tih godina. 1960te Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka su uvedeni u ovoj deceniji, i korieni su najpre samo kod velikih i sloenih projekata, kao to je to bio projekat sletanja Apollo-a na Mesec. Ovaj period moemo posmatrati kao period dokazivanja, u kom je demonstrirana sposobnost ovih sistema da upravljaju ogromnim koliinama podataka. Takoe, prvi napor da se standardizuju poduzet je sa formiranjem DBT Grupe (Data Base Task Group), tokom kasnih 60ih godina.

- 31 -

1970te Tokom ove decenije, upotreba sistema za upravljanje bazom podataka je postajala komercijalna stvarnost. Hijerarhijski i mreni sistemi za upravljanje podacima su uvedeni, velikim delom zbog potrebe za sistemom koji e moi da upravlja sloenim strukturama podataka, kao to su rauni fabrika pri nabavci sirovina, kojima je bilo izuzetno teko upravljati preko konvencionalnih metoda. Ovi modeli se i sutinski smatraju prvom generacijom sistema za upravljanje bazom podataka. Oba pristupa su se iroko primenjivala, zapravo, mnogi od tih sistema su u upotrebi i danas. Pa ipak, imali su nekoliko velikih nedostataka: Teak pristup podacima. Za pristup i najjednostavnijim podacima bili su potrebni izuzetno sloeni programi. Veoma ograniena nezavisnost podataka, tako da se programi nisu mogli izolovati od promena u formatu podataka. Nije postojala nijedna iroko prihvaena teorijska podloga za bilo koji od ovih modela, za razliku od relacionog modela podataka.

1980te Da bi se prevazila ova ogranienja, E. F. Codd, kao i mnogi drugi, razvili su model relacionih podataka tokom 70-ih godina. Ovaj model, koji se smatra drugom generacijom DBMS-a, doiveo je iroku komercijalnu upotrebu u poslovnom svetu tokom 80-ih godina. Sa relacionim modelom svi podaci su predstavljeni u formi tabele. Relativno jednostavan programski jezik etvrte generacije, nazvan SQL, korien je za dobijanje informacija. Ovaj model je obezbedio jednostavan pristup podacima i onim ljudima koji nisu bili programeri, prevazilazei na taj nain jednu od najveih primedbi koja je pratila sisteme prvih generacija. Model je takoe pokazao i svoju pogodnost za komunikaciju na relaciji klijent/server, paralelni prenos podataka, i upotrebu grafikog korisnikog interfejsa (GUI).

- 32 -

1990te Ove godine se oznaavaju kao nova raunarska era, najpre na nivou raunarske komunikacije na relaciji klijent/server, a potom sa stvaranjem skladita za podatke i upotrebom Internet aplikacija, koji su dobijali sve vie na vanosti u ovom periodu. Kao to je upravljanje podacima od strane DBMS-a postalo visoko primenjivo (npr., u raunovodstvu) tokom osamdesetih godina, multimedijalni podaci (ukljuujui i grafiku, zvuk, slike i video zapis) su postali uobiajena stvar tokom devedesetih godina. Kako bi se izborili sa sve sloenijim podacima, tokom devedesetih su uvedeni sistemi okrenuti ka objektu, koji se smatraju treom generacijom. Zbog velike potrebe za organizacijom ogromne koliine podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i prethodni sistem su u upotrebi i danas. Neki proizvoai ak rade na razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi mogli da upravljaju obema vrstama istih. Od 2000. godine Naravno, navodimo se na razmiljanje u kom pravcu e da krene razvoj DBMS tehnologija tokom naredne decenije. Iako e nesumnjivo doi do novih iznenaenja, moemo oekivati nastavak dobro uspostavljenih trendova: 1. Mogunost upravljanja sve sloenijim tipovima podataka. Ovi tipovi ukljuuju i multidimenzionalne podatke, koji su ve dobili na vanosti u aplikacijama skladitenja podataka. 2. Nastavak razvoja univerzalnih servera. Zasnovani na sistemu tree generacije DBMs-a, to su serveri koji mogu da upravljaju irokom lepezom raznih tipova podataka, tako da budu transparentni svim korisnicima. Bie naroito vani kod Internet aplikacija. 3. Dok su realnost, Kako se porastu u potpunosti distribuirane baze podataka postale trenutni trend ka cenrtalizaciji istih e se nastaviti. trokovi komunikacije sve vie smanjuju, nasuprot tipova podataka,vrednost lociranja i pristupa
- 33 -

centralizovanoj bazi podataka takoe se smanjuje. Manji trokovi, a visoke performanse svakako ohrabruju ovaj trend. 4. Skladita sa adresiranim sadrajem e postajati sve popularnija. Sa ovakvim pristupom, korisnik moe da izvue bilo kakav podatak specifikacijom kakvu vrstu podatka eli, umesto kako da doe do njega. Na primer, korisnik moe da skenira fotografiju i da trai od kompjutera pretragu, kako bi pronaao istu takvu, ili njoj slinu. 5. Baza podataka i druge tehnologije, poput vetake inteligencije i televizije, kao informacionog servisa, olakae pristup podacima neobuenim korisnicima. Na primer, korisnik e biti u mogunosti da zahteva podatak na vie jezika, a tehnologija baza podataka e da ukljuuje potrebe korisnika za podacima, na osnovu upita koji se uvaju, i menjati se na taj nain. 6. Rad na tehnologijama algoritama za tehniku analize podataka, koji tee ka upravljanju veoma velikim paketima podataka, kako bi organizacije to lake analizirale svoja ogromna skladita podataka. To e u velikoj meri olakati u planiranju strategije oraganizacija za njihovo poslovanje za due vremenske periode. 7. I na kraju skale se nalazi dalje irenje PDA, to e dovesti do poboljane sinhronizacije malih baza podataka i poboljanje brzine beinog prenosa. Bluetooth i drugi beini standardi e u velikoj meri ubrzati razvoj beinog povezivanja na Internet, ali e i nametnuti pitanje daljeg razvoja zatite podataka.

- 34 -

1.8. Modelovanje
Informacioni sistemi pojedinih firmi omoguavaju upravljanje podacima koji su bitni za njeno poslovanje. Meutim, broj internih podataka i podataka iz okruenja je ogroman te je nemogue sve podatke i sve uoene detalje opisati i sauvati unutar informacionog sistema. Postupkom selekcije identifikuju se i uvaju samo relevantni podaci. Time se dolazi do pojma modela podataka. On je izraz i posledica zahteva za obradom podataka relevantnih za odreeno podruje primene. Modeli su ovekovo sredstvo pojednostavljivanja problema i njegovo posmatranje samo sa stanovita bitnih za ciljeve analize. Objekt posmatranja (npr. automobil) ima uvek vie osobina (atributa) od kojih u datom trenutku analize moe biti dovoljan samo njihov manji broj (npr. samo registarski broj, tip automobila, ime i prezime vlasnika). To su najvaniji atributi potrebni u postupku pretraivanja i pronalaenja vlasnika vozila na osnovu registarskog broja vozila unutar jednog informacionog sistema. Ostali atributi kao to su boja, godina proizvodnje, broj sedita i sl. nisu bitni (mogu se zanemariti ) za takav postupak. ovek, obdaren sposobnostima apstraktnog naina miljenja, stvara jedan apstraktni model realnog sveta. Takav model realnog sveta (objekta posmatranja) zasniva se na simbolima i zove se konceptualni model podataka.
Relan svet Ulaz Cilj svakog modela je da uini da je: Izlaz1~Izlaz2 Programi za odravanje Baza podataka Programi za izvetavanje Izlaz2 Izlaz1

Slika 1.11 Realan svet i njegov model Modelovanje podataka se radi paralelno sa analizom potreba. Kako se informacije prikupljaju, objekti se identifikuju, dodjeljuju im se imena koristei termine bliske krajnjim korisnicima. Objekti se onda modeluju i analiziraju koritenjem dijagrama objekti-veze (ER dijagrami). Dijagram se moe pregledati od strane dizajnera i krajnjeg korisnika da bi se
- 35 -

osigurala njegova kompletnost i tanost. Ako model nije taan, modifikuje se, to ponekad zahteva da se prikupe dodatne informacije. Ciklus pregledanja i modifikovanja se nastavlja sve dok se ne dobije potvrda da je model korektan.

1.8.1. Razvoj konceptualnih modela


Objekti iz relnog sveta se u raunarskoj primeni opisuju pomou podataka. Podaci su zato apstrakcija realnosti, tj. sredstva za kodiranje osobina objekata iz realnog sveta. Modelovane, kao postupak kojim se realni svet svodi na odreeni broj podataka, predstavlja kompleksan posao i sastoji se iz vie koraka: Izbor (selekcija). U prvom koraku se mnotvo objekata iz realnog sveta redukuje na manji skup objekata, koji e initi objekte modela. Npr. objekti mogu biti student, predmet, profesor, studentska sluba, polaganje ispita i sl. U procesu selekcije ovaj broj objekata se moe redukovati na manji broj, ako je cilj praenje uspenosti studiranja na fakultetu. Time se sloenost realnog sistema smanjuje. Selekcija se ne odnosi samo na objekte nego i na njihove osobine, kao i na meusobne veze (relacije) izmeu objekata. Imenovanje. Svakom objektu u realnom svetu, svakoj vezi izmeu uoenih objekata, kao i svakom atributu (svojstvu) uoenog objekta ili veze dodeljuje se ime. Klasifikacija. Nehomogeni skup objekata i odnosa se svrstava u homogene klase i tipove objekata. Klasifikacija uvek zavisi od podruja primene.

Rezultat navedenih koraka modelovanja zove se konceptualni model. On sadri, za posmatrani problem iz realnog sveta, sve relevantne tipove objekata, njihove osobine i meusobne veze. Rezultati prouavanja modela podataka doveli su do saznanja da svaki model podataka ima tri neodvojive komponente: strukturu podataka, operacije nad podacima, ogranienja (constraints).
- 36 -

Struktura i ogranienja, za razliku od operacija, opisuju stanje realnog sistema, tj. predstavljaju statiki opis stanja sistema. Strukturu modela ine objekti, njihova svojstva, veze izmeu objekata i njihovih svojstava. Operacije nad podacima u modelu su, u stvari, operacije nad strukturom modela kojima se izraava dinamika realnog sistema. Operacije izraavaju kretanje i promene tj. dinamiku realnog sistema. Ogranienja su pravila koja razdvajaju doputena od nedoputenih stanja realnog sistema i u svojoj prirodi deo su strukture modela podataka. Ponekad se ne posmatraju kao odvojene komponenta, nego kao deo strukture modela podataka.

1.8.2. Entiteti
Modelima podataka nastoji se preslikati realan sistem. Realan sistem sastoji se od objekata iz realnog sveta i njihovih veza izmeu kojih se uspostavljaju razliiti odnosi. Pod entitetom se podrazumeva sve to se moe jednoznano odrediti, identifikovati i razlikovati. Tako iroko postavljena definicija pokazuje da entitet moe biti svaki "realan" ili "apstraktan" objekt o kojem u odreenom trenutku razmiljamo. Entitet je realan ako fiziki, stvarno postoji. Najoptije se moe tvrditi da su granice entiteta u modelu podataka odreene ljudskim pogledom i nainom razmiljanja. Svaki entitet uoen u realnom sistemu ima svoje osobine koje ga ine sloenim i njihove vrednosti omoguavaju razlikovanje entiteta. Svojstvo entiteta ukljuuje dva elementa - atribut i vrednost atributa (npr. entitet Student ima atribute: Ime, Prezime, Broj indeksa, Adresu, Telefon i sl. i vrednosti Marko, Markovi, 123/03, Danijelova, 15, 011/376-543 respektivno). Svaki put kada se promeni vrednost atributa, potrebno je promenu evidentirati, tj. aurirati tu vrednost atributa za dati entitet. Precizno govorei, objekti koji se oznae pojmom entiteta mogu se zvati klase entiteta. Svaki objekt ima osobine (atribute) klase entiteta kojoj pripada. Npr. klasu entiteta Student ine pojedinani entiteti od kojih svaki ima zajednike atribute: Ime, Prezime, Broj indeksa, Adresa, Telefon i sl. Svaki pojedinani entitet ima sve navedene atribute, ali e se razlikovati od drugih entiteta po vrednostima pojedinih atributa.

- 37 -

Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se vrednost. Ako je atribut dovoljno sloen, tako da ima svoje dodatne atribute, moe se posmatrati kao novi entitet. Domen atributa je skup svih moguih vrednosti koje atribut moe poprimiti. Primarni klju je jedan ili vie atributa ija vrednost jednoznano odreuje primerak entiteta. Na primer, za entitet Auto, primarni klju je atribut registarski broj. Dva razliita lana ili primerka entiteta ne mogu imati isti primarni klju. Primarni klju je jedinstven za svakog lana entiteta. Na primer, za entitet Student primarni klju bi mogao biti broj indeksa.

1.8.3. Veze izmeu entiteta


Baza podataka se ne odnosi samo na pojedinane objekte nego i na odnose izmeu objekata. U realnom sistemu objekti nisu meusobno izolovani, nego se nalaze u meusobnoj interakciji. Student se upisuje na fakultet, slua predavanja iz pojedinih predmeta, prijavljuje polaganje ispita, polae ispit itd. To su primeri logikih i realnih veza izmeu objekata, koje slede iz realnih odnosa u posmatranom sistemu studiranja na jednom fakultetu. Istraimo jedan skup odnosa izmeu studenata koji sluaju predavanja kod odreenog profesora. Postavlja se pitanje ta su u takvim odnosima objekti, koje su njihove osobine (atributi) i kako prikazati njihove odnose. Identifikovati objekte, njihove osobine i odnose znai praktino izgraditi model podataka. U modelu podataka ne postoje samo atributi objekta, nego i veze izmeu objekata. Prvo se selektuju objekti, imenuju se, a zatim se analiziraju tipovi odnosa koji se uspostavljaju izmeu objekata. Odnosi izmeu objekata posmatranja prikazuju se najee primenom logike skupova i preslikavanja njihovih elemenata. Najjednostavniji odnos izmeu ta dva tipa objekata naziva se preslikavanje 1:1. Kod takvog preslikavanja svaki se element skupa X moe preslikati na najvie jedan element skupa Y. Istovremeno, i svaki element skupa Y moe biti preslikan na najvie jedan element skupa X. Karakteristian primer bi bio sa entitetima Fakultet i Dekan. Na jednom fakultetu moe biti samo jedan dekan, a jedan dekan moe biti dekan na
- 38 -

samo jednom fakultetu. Takvi odnosi izmeu entiteta su retki, a mogu se predstaviti sledeom slikom:

Slika 1.12 Preslikavanje entiteta 1:1 Druga vrsta odnosa naziva se preslikavanje N:1 (ili 1:N). Vie elementa skupa X moe se preslikati na najvie jedan element skupa Y. Istovremeno jedan element skupa Y moe se preslikati na vie elemenata skupa X. Pogodan primer za ovu vrstu odnosa izmeu entiteta je odnos izmeu entiteta Student i Dekan. Vie studenata na jednom fakultetu ima samo jednog dekana, a jedan dekan je dekan za vie studenata na svom fakultetu.

Slika 1.13 Preslikavanje entiteta N:1 Najsloenije preslikavanje je tipa M:N. Svaki element prvog skupa moe se preslikati na vie elemenata drugog skupa, ali se i svaki element drugog skupa moe preslikati na vie elemenata prvog skupa. Karakteristian primer ovakvih veza postoji ako se uoe entiteti Student i Profesor. Jednom studentu predaje vie profesora, a ujedno jedan profesor predaje za vie studenata.
- 39 -

Slika 1.14 Preslikavanje tipa M:N

1.8.4. Troslojna arhitektura baze podataka


Osnovni koncept baze podataka je ideja o skupu injenica ili delova znanja. injenice mogu da budu struktuirane na razliite naine koji se nazivaju modeli podataka. Model podataka nije statina struktura nego se menja kako bi odraavao promene koje se deavaju i u realnom sistemu. Na primeru informacionog sistema jednog fakulteta, studenti polau pojedine ispite, neke ponitavaju i dobijaju drugaije ocene, upisuju se novi studenti, drugi diplomiraju, neki asistenti postaju profesori itd. Za jednostavne sluajeve, kao i mali broj promena relacija i entiteta, mogue je auriranje podataka vriti runo. Za kompleksnije sisteme (sa nekoliko stotina ili hiljada entiteta ili relacija) auriranje podataka postaje ogroman problem. Jedino se uz pomo raunara moe odravati aurnost podataka u velikim informacionim sistemima. Obrada podataka postaje ne samo pitanje produktivnosti neke firme ili organizacije, nego i opstanka, rasta i razvoja u okruenju s intenzivnom konkurencijom. Obrada podataka je deo svakog poslovnog procesa, stoga je poznavanje baza podataka bitno ne samo za projektante informacionih sistema i programere, nego i za krajnje korisnike rezultata takvih obrada. Oni nisu samo skup povremenih korisnika baza podataka, kao to se to moe rei za programere ili projektante informacionih sistema. Danas veliki broj zaposlenih, koji nisu upoznati sa konceptualnom emom BP, kreiraju,

- 40 -

unose, auriraju ili jednostavno koriste baze podataka na razliitim nivoima organiziranosti poslovnih sistema. Model baze podataka koji je danas poznat kao ANSI/X3/SPARC model prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajueg eksternog modela. Zahtev za uitavanje odreenih podataka aplikativni sloj upuuje na eksterni sloj, odnosno odgovarajui korisniki model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Konceptualni nivo je najblii stvarnosti. Taj se nivo definie u procesu kreiranja modela podataka. Jedan od ciljeva modela podataka je oblikovanje podataka za sadanje i budue aplikacije. Moe se rei da konceptualni nivo ine sve relacione eme modela podataka, sve relacije i ogranienja. Spoljanji nivoi (modeli A, B i C) formiraju se na temelju konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema potrebama pojedinih korisnika.
Konceptualni model (sloj)

Eksterni model (sloj)

Interni model (sloj)

Model A

Podaci 1 B

Podaci 2 Podaci 3

Model B

Model C

C Podaci N

Slika 1.15 Troslojna arhitektura baze podataka

- 41 -

Unutranji (interni) sloj baze odnosi se na zapisivanje konceptualnog sloja na nekom medijumu za uvanje (najee disku). Radi se o slogovima zapisanim u datotekama. Nii sloj, uslovno reeno, ili nivo blii disku od internog sloja BP, je operativni sistem , koji na osnovu logikih adresa slogova ita sadraj diska.

1.9. Modeli baza podataka


Za modelovanje strukture podataka koriste se razliite tehnike. Odreeni modeli se lake koriste za neke tipove sistema upravljanja bazama podataka nego drugi modeli. Model ini osnovu za osmiljavanje, definisanje i implementaciju baze podataka. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledee osnovne modele: Hijerarhijski model ine ga podaci sloeni u hijerarhijsku strukturu; Mreni model moe se predstaviti usmerenim grafom u kojem su vorita podaci, a lukovi meu voritima definiu veze meu podacima; Relacioni model zasnovan na matematikom pojmu relacije. Podaci i veze meu podacima se prikazuju preko dvodimenzionalnih tabela. Objektni model bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvravati.

- 42 -

1.9.1. Hijerarhijski model


Hijerarhijski model je najstariji od svih modela baza podataka, i za razliku od mrenog, relacionog ili objektno orjentisanog, nema dobro dokumentovanu istoriju svoje koncepcije i poetne verzije ovakvog modela. Ovaj model se razvio iz informacionog sistema za upravljanje u 50-tim i 60-tim godinama prolog veka. Usvojen je u mnogim bankama i osiguravajuim drutvima koji ga, kao naslee, i danas koriste. U hijerarhijskom modelu podaci su smeteni u seriju slogova (zapisa) Da bi se uspostavila veza izmeu slogova, hijerarhijski model uspostavlja relaciju roditelj naslednik. Ovo je takozvano 1:N mapiranje izmeu slogova koje se radi korienjem stabla. U ovom modelu, relacije su takve da jedan naslednik moe imati samo jednog roditelja, ali roditelj moe imati vie naslednika. Roditelji i naslednici su povezani vezama koje se nazivaju pokazivai (u fizikoj realizaciji to je adresa u memoriji gde se slog nalazi). Roditelj ima listu pokazivaa za svakog od svojih naslednika. Hijerarhijski model je dobro ureena struktura, koja podsea na hijerarhijsku strukturu u npr. dravi, vojsci ili nekoj velikoj organizaciji .
Direktor Zamenik O R R R O R R O R R R O R Zamenik O R R O R R Zamenik O R R R O R R

Slika 1.16 ematski prikaz jednog hijerarhijskog modela Pravilo roditelj naslednik omoguava pristup podacima. Da bi se dolo do tabele na niem nivou, kree se od korena i ide prema dole kroz stablo dok se ne doe do cilja. Naravno, oigledan problem sa ovim modelom je

- 43 -

da korisnik mora da zna kako je stablo organizovano da bi pronaao bilo ta. Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne moe se dodati slog u tabelu naslednika dok se ne ukljui u roditeljsku tabelu. Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima, ali ne moe da se nosi sa povezivanjem ogranaka ili stvaranjem viestrukih veza. Zbog toga se stvara redudansa (viestruko pojavljivanje) podataka i mogunost netanog auriranja. Na primeru hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore, studente itd. mogu se lako uoiti navedene slabosti. Lako je predstaviti da na jednoj katedri ima vie profesora, ali se ne moe predstaviti da jedan profesor radi na vie katedri. Da bi se ovo uradilo, mora postojati dva pojavljivanja istog profesora. To moe dovesti do netanosti kod auriranja podataka, npr. mogue je da informacije budu razliite u dva zapisa, to vodi do konfuzije. Hijerarhijski model se vie ne koristi kao osnova za trenutne komercijalne sisteme, ali jo uvek postoji mnogo nasleenih sistema baziranih na ovom modelu. Zbog svih nedostataka koji postoje u hijerarhijskom modelu, razvijen je mreni model.

1.9.2. Mreni model


Mreni model je prvi put predstavljen 1971. godine. Moe se smatrati savremenikom relacionog modela, gledajui starost i prva istraivanja uinjena u 60-tim godinama prolog veka.Omoguava da se viestruki skupovi podataka koriste zajedno putem pokazivaa (ili pointera). Neke kolone sadre pokazivae na druge tabele umesto samih podataka. Na taj nain, tabele su povezane pokazivaima i mogu se posmatrati kao mrena struktura. Dok u hijerarhijskom modelu svaki slog ima jedan roditeljski slog i neogranieno naslednika, mreni model omoguava svakom zapisu da ima viestruke roditelje i naslednike, kreirajui mreastu strukturu.

- 44 -

Direktor Zamenik O R R R O R R O R R R O R Zamenik O R R O R R Zamenik O R R R O R R

Slika 1.17 ema mrenog modela Mreni model se danas uglavnom ne upotrebljava za dizajniranje baza podataka, ali ipak ima sluajeva gde se kao deo naslea koristi u nekim kompanijama. Predstavlja unapreenje hijerarhijskog modela, ali je kompleksan i teak za upotrebu. Pored toga, teko ga je podrati matematikim aparatom, to onemoguava kasnije efikasno programiranje.

1.9.3. Relacioni model


Kao i mnoge druge tehnologije u raunarskoj industriji, koreni relacionih baza podataka potiu iz IBM-a i njihovog istraivanja automatizovanja kancelarijskih operacija u 60-tim i 70-tim godinama XX veka. 1970. godine, IBM-ov istraiva Ted Codd je prezentovao prvi rad o relacionim bazama podataka. Zbog same tehnike prirode rada i oslanjanja na matematiki aparat, njegova vanost nije odmah shvaena. Ipak, doveo je do formiranja IBM-ove istraivake grupe System R. Od projekta System R se oekivalo da stvori sistem relacione baze podataka koji bi mogao postati proizvod. Prvi prototip prezentovan je 1974/75. godine i eksperimentalno je korien. Nakon to je definisan relacioni model, napravljeni su neformalni modeli da bi se opisali hijerarhijski i mreni model. Hijerarhijske i mrene baze podataka su postojale pre relacionih baza podataka, ali su kao modeli opisani tek nakon to je relacioni model definisan, da bi se napravila osnova za poreenje.

- 45 -

U srcu relacionog modela nalazi se koncept tabele (koja se naziva i relacija) u kojoj su smeteni svi podaci. Svaka tabela je nainjena od slogova (redova u tabeli), a svaki slog ima svoja polja (atribute). Osnovne karakteristike relacionog modela podataka su sledee: Sve se predstavlja relacijama (tabelama) Zasniva se na strogoj matematikoj teoriji Minimalna redudansa podataka Jednostavno auriranje podataka Izbegnute su anomalije auriranja Redosled kolona i redova ne utie na informacioni sadraj tabele Ne mogu da egzistiraju dva identina reda (rekorda) u jednoj tabeli Svaki red se moe jednoznano odrediti (postoji primarni klju) ...

U relacionom modelu podataka klase objekata se predstavljaju tabelama. Na primer klasa STUDENT se moe opisati atributima BROJ INDEKSA i IME i klasa KNJIGA sa itributima IFRA KNJIGE i NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele moe biti sledee: Student BrInd
75/01 22/02 156/03 112/02

Knjiga SifK
001 002 003 004 005

Ime
Marko Petar Milan Dragan

Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna i f ik Marketing

Slika 1.18 Tabela je osnovni objekat relacione baze podataka Prethodna dva objekta sa svojim atributima grafiki se mogu predstaviti na sledei nain:
- 46 -

BrInd Student Ime Knjiga

SifK

Naziv

Slika 1.19 Grafiki prikaz objekata i njihovih atributa U realnom svetu objekti meusobno stupaju u veze. Na jednom fakultetu studenti dre (pozajmljuju iz biblioteke) pojedine knjige. Moe se uoiti da je veza izmeu ova dva posmatrana objekta tipa M:N, tj. vie studenata mogu da dre jednu knjigu, a jedna knjiga moe biti kod vie studenata. Neka je trenutna situacija iz realnog sveta prikazana na sledeoj slici: Student Knjiga
BrInd
75/01 22/02 156/03 112/02

Ime
Marko Petar Milan Dragan

SifK
001 002 003 004 005

Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna informatika Marketing

Slika 1.20 Veze izmeu objekata realnog sveta formira se klasa veza Klasa veza se moe posmatrati kao zaseban entitet, a taj entitet moe da ima svoje posebne atribute. U naem primeru, klasa veza DRI moe da ima kao atribut DATUM od kada student dri odreenu knjigu. Neka je trenutna situacija iz realnog sveta prikazana sledeom slikom:

- 47 -

Student BrInd
75/01 22/02 156/03 112/02

Dri
12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005

Knjiga SifK
001 002 003 004 005

Ime
Marko Petar Milan Dragan

Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna informatika Marketing

Slika 1.21 Klasa veza moe da ima svoje atribute Grafiki prikaz navedenog dat je na sledeoj slici
BrInd Student Ime

Datum
SifK Dri Knjiga Naziv

Slika 1.22 Klasa veza moe da ima svoje atribute Sutina relacionog modela je da se i klase objekata i klase veza izmeu objekata predstavljaju na jedinstven nain, tj. preko tabela. U naem primeru postoje tri tabele: STUDENT, KNJIGA i DRI. U relacionom modelu podataka tabela se definie kao relacija, koja mora da ispuni odgovarajue uslove. Svaka relacija mora da ima primarni klju jedan ili vie atributa koji na jedinstven nain opisuju svaki zapis u jednoj tabeli. Primarni klju se paljivo bira. Na primer u klasi studenata lo izbor primarnog kljua bi bio atribut IME, zato to se mogu pojaviti dva studenta sa istim imenom. Dobar izbor primarnog kljua je atribut Broj indeksa, zato to ne postoje dva studenta sa istim brojem indeksa. Za klase objekata Student i Knjiga vri se prevoenje u relacioni model na sledei nain (podvlaenjem su oznaeni atributi koji ine primarni klju):

- 48 -

STUDENT (BrInd, Ime), KNJIGA (SifK, Naziv) Za klasu veza Dri, moe se difinisati prirodan primarni klju u odnosu na objekte koje povezuje. U naem primeru relacija Dri bi glasila: DRI(BrInd, SifK, Datum) Dakle, za posmatrani realan sluaj gde sudenti dre pojedine knjige, izvreno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i KNJIGA imaju dve kolone, a tabela DRI tri kolone. Sve tabele su povezane. Povezivanje se vri preko vrednosti atributa u relacijama. na sledei nain:
STUDENT (BrInd, Ime) DRI (BrInd, SifK, Ime)
Strani klju relacije Dri koji pokazuje na primarni klju relacije Student Strani klju relacije Dri koji pokazuje na primarni klju relacije Knjiga

KNJIGA (SifK, Naziv)

Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih kljueva Veoma je vano zapaziti da kako i gde su tabele smetene ne pravi nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje baza podataka koristi da bi pronala tabelu. Korisniku je potrebno samo da zna ime tabele. Nema potrebe da se vodi rauna o tome kako su podaci smeteni na disku. Ovo je razliito od hijerarhijskog i mrenog modela u kojima korisnik mora da razume kako su podaci struktuirani unutar baze podataka da bi mogao da ih pretrauje, unosi nove, aurira ili brie postojee slogove. Relaciona baza podataka standardno se satoji iz vie tabela. Ipak, za razliku od mrene baze podataka, tabele nisu povezane pokazivaima. Umesto toga koriste se kljuevi da upare redove podataka u razliitim tabelama. Klju je samo jo jedna ili vie kolona u tabeli, koja odgovara kolonama u drugim tabelama.
- 49 -

Zahtev za podatkom iz relacione baze podataka se dobija izvravanjem upita koji je napisan u posebnom jeziku, obino nekom od dijalekata SQL-a. Iako je SQL originalno namenjen za krajnje korisnike, mnogo ee se SQL upiti ugrauju u softver koji omoguava laki korisniki interfejs. Kao odgovor na upit, baza podataka vraa skup podataka, koji je u stvari lista redova koji sadre odgovor. Najjednostavniji upit je da se dobiju svi redovi iz tabele, ali ee, redovi se filtriraju na neki nain da bi se dobio traeni odgovor. esto se podaci iz vie tabela kombinuju u jednu, procesom udruivanja. Fleksibilnost relacionih baza podataka dozvoljava programerima da piu upite koji nisu bili predvieni od strane dizajnera baze podataka. Kao rezultat, relacione baze podataka mogu da se koriste u vie aplikacija koje originalni dizajneri nisu predvideli, to je posebno vano za baze podataka koje se mogu koristiti decenijama. Ovo je model relacionih baza podataka uinilo veoma popularnim u poslovnoj primeni.

1.9.4. Objektni model


Objektno orjentisani model je jedan od novijih modela baza podataka. Istraivai su za njega postali zainteresovani krajem 70-tih i poetkom 80-tih godina prolog veka, kada se poeo pojavljivati koncept objektno orjentisanih sistema. Bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvravati. Istraivanje se radilo i da bi se prevazila mnoga ogranienja u relacionom modelu na odreenim tipovima podataka. Tipovi podataka koji se mogu koristiti u relacionim bazama su veoma ogranieni. Svaki atribut (polje) moe da poprimi samo jednu vrednost. U objektno orijentisanom modelu podataka entitet se predstavlja klasom. Klasa obuhvata i atribute i ponaanje entiteta (mogue operacije nad podacima). Npr. Klasa: student Atributi: BrInd, Ime, Prezime, Fakultet Procedura: polaganjeIspita()

Objekti su samo jedno pojavljivanje u odgovarajuoj klasi. Objektno orijentisan model karakterie bogatsvo tipova podataka tip moe biti i
- 50 -

drugi objekat. Direktna veza izmeu objekata u aplikaciji i objekata u BP rezultuje boljim performansama baze podataka. Posmatrajmo primer u kome se vodi evidencija o Studentima sa svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji student poseduje. Dalje, vodi se evidencija o Automobilima sa svojstvima Naziv automobila, Registarski broj, Boja, Godite i Vlasnik. Prethodni primer se moe prikazati na sledei nain

Student BrInd
123/05 ------

Ime
Marko -----

Prezime
Markovi -----

Fakultet
FPI -----

Automobil
Golf -----

Automobil Naziv
Golf ------

RegBr
BG123456 -----

Boja
Belo -----

Godite
1993 -----

Vlasnik
Marko -----

Slika 1.24 U objektno orijentisanim BP tip podatka moe biti drugi objekat Objektno orjentisani DBMS-ovi omoguavaju uvanje objekata direktno, bez mapiranja za razliite strukture podataka. Relacioni DBMS zahteva mapiranje iz objekata u tabele. U objektno orijentisanom modelu, informacija je sauvana kao stalni objekt, a ne kao red u tabeli. Ovo sistem ini efikasnijim u smislu prostora potrebnog za smetanje i uvanje podataka i osigurava da korisnik manipulie podacima samo na onaj nain koji je programer odredio. S druge strane, obzirom da se kontrola vri na veoma niskom nivou, mnogo je tee za treu stranu da napravi neki dodatak. Dok kod
- 51 -

relacionih baza podataka moemo imati korist od softvera izraenog od strane treeg dobavljaa, korisnici objektno orjentisanih sistema za upravljanje bazama podataka ili moraju da narue dodatni softver od originalnog programera ili da ga razviju u saradnji sa drugim firmama koje koriste isti sistem.

1.10. Transakcije
Baze podataka kontinuirano skladite informacije koje opisuju trenutno stanje preduzea. Na primer, baza podataka banke uva trenutni bilans na svakom raunu deponenta. Kada se u stvarnom svetu dogodi neto to menja stanje preduzea, mora da se uradi odgovarajua promena podataka u bazi podataka. Ove promene se deavaju uz pomo programa koji se nazivaju transakcije koje deluju kada doe do promena u stvarnom svetu. Na primer, kada klijent polae novac u banku (dogaaj u stvarnom svetu), izvrava se transakcija depozita. Svaka transakcija mora biti ureena tako da odrava nepogreivost veze izmeu stanja baze podataka preduzea koje je kreira iz stvarnog sveta. Pored toga to menja stanje baze podataka, transakcija sama po sebi moe da inicira neke dogaaje u stvarnom svetu. Na primer, izdvojena transakcija kod bankomata, inicira dogaaj odliva novca. Obino se transakcijom naziva niz operacija nad bazom podataka koji odgovara jednoj logikoj jedinici posla u realnom sistemu. Vano je istai da se ta logika jedinica posla izvrava do kraja ili se ponitava u celini. Drugim reima, zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvreni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeuje ouvanje konzistentnosti baze. Primer transakcije: Podizanje novca sa rauna u banci. Kada banka primi zahtev, transakcija obuhvata sledee korake: 1. Provera bankarske kartice 2. Provera rauna (stanje) 3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se nastavlja 4. Smanjuje se stanje na raunu za zahtevani iznos
- 52 -

5. Generie se izvetaj o transakciji 6. Isplauje se novac i daje izvetaj o transakciji Transakcija mora da kompletira sve korake, inae bi jedna od strana u transakciji imala tetu. Obrada transakcija je izuzetno vana u viekorisnikim aplikacijama. Kada vie korisnika istovremeno unosi izmene u bazu podataka, vie se ne moemo pouzdati u to da e uvek jedna izmena biti trajno upisana u bazu pre nego to zapone naredna. Zbog toga u bazama podataka postoje mehanizmi kojima se moe obezbediti da konkurentno izvravanje transakcija daje iste rezultate kao kada se transakcije izvravaju u serijskom redosledu.

1.10.1. Osobine transakcija


Transakcije imaju sledee osobine (ACID osobine): Atomnost (atomicity), Atomnost podrazumeva skup aktivnosti nad bazom podataka po principu sve ili nita. Ili su sve aktivnosti uspeno obavljene ili je baza podataka ostala nepromenjena. Kada doe do promene u bazi podataka, tada su sve promene dostupne korisnicima ili niti jedna promena nije dostupna korisnicima. To znai da se ne moe desiti da se samo deo promene desi u bazi podataka u sluaju softverske ili hardverske greke. Konzistentnost (consistency), Konzistentnost znai da transakcija treba da prevede bazu podataka iz jednog u drugo konzistentno stanje. Na primer, ako se transakcijom vri prebacivanje novca sa jednog rauna na drugi raun u banci, ukupna suma novca pre i posle izvrenja transakcije se ne moe promeniti. Ukoliko u toku transakcione obrade dodje do greke, podaci moraju biti vraeni u stanje pre poetka transakcije. Izolacija (izolation), Izolacija znai da kada se dve ili vie transakcija izvravaju istovremeno, njihovi efekti moraju biti meusobno izolovani. Efekti koje izazovu transakcije koje se obavljaju istovremeno
- 53 -

moraju biti jednaki efektima nekog njihovog serijskog (jedna posle druge) izvrenja. Zbog poveanja paralelizma u obradi transakcija dozvoljavaju se razliiti nivoi izolovanosti. Trajnost (durability). Trajnost znai da kada se transakcija zavri (potvrene promene), njeni efekti ne mogu biti izgubljeni, ak i ako se neposredno po njenom okonanju desi neki ozbiljan otkaz sistema.

1.10.2. COMMIT i ROLLBACK


Obezbeenje ACID osobina transakcije se radi upotrebom odreenih metoda i instrukcija: transakcija poinje sa BEGIN TRANSACTION, zavrava se sa COMMIT, ime se potvruju promene u bazi podataka ako su sve instrukcije uspeno izvrene, zavrava se sa ROLLBACK, ako sve instrukcije nisu uspeno zavrene.

Transakcija poinje pozivanjem metode BEGIN TRANSACTION, ime se oznaava poetak niza operacija koje ine jednu logiku jedinicu. Metoda COMMIT preuzima sve izmene nainjene od poslednjeg mesta na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na disk. Metoda ROLLBACK deluje na suprotan nain od COMMIT ona ponitava sve izmene i vraa stanje kakvo je bilo pre poslednjeg poziva metode COMMIT. DBMS poseduje i odrava dnevnik transakcija (tj. dnevnik aktivnosti, log file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS aurirao uva se: vrednost pre auriranja (before-image) vrednost posle auriranja (after-image)

Na naredbu ROLLBACK, DBMS koristi vrednosti pre za datu transakciju. Pre COMMIT naredbe sistem prvo upisuje vrednosti pre i posle u log fajl. Ako se prekine COMMIT naredba, mogu se proitati
- 54 -

vrednosti posle sa log fajla, to omoguava ouvanje konzistentnog stanja.

1.10.3. Konkurentno izvravanje transakcija


Nad modernim bazama podataka transakcije se ne obavljaju u izolovanosti ve konkurentno. Vie transakcija mogu istovremeno zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama otvara se mogunost da nekontrolisan meusobni uticaj transakcija dovede do nekonzistentnog stanja.

Transakcija1 Transakcija2 Istovremeno izvravanje sve tri transakcije Paralelno izvravanje transakcija

Transakcija3 vreme Transakcija1 Transakcija2 Transakcija3 Serijsko izvravanje transakcija

Slika 1.25 Paralelno i serijsko izvravanje transakcija DBMS upravlja konkurentnim radom vie aplikacija (korisnika), obezbeuje sinhronizaciju njihovog rada, a sve u cilju spreavanja tetnih posledica pri promenama koje se vre nad bazom podataka u viekorisnikom okruenju. Komponente DBMS koje uestvuju u ovom procesu su: Planer (Scheduler), Menader transakcija (Transaction manager).

Planer vodi rauna o redosledu akcija kod vie konkurentnih transakcija. Ako itanje ili upisivanje moe da narui integritet baze podataka, zahtev
- 55 -

se ili vremenski odlae ili se ponitava cela transakcija. Menader transakcija upravlja celokupnim izvrenjem transakcija. Idealan sluaj izvravanja transakcija je serijsko izvravanje, ali je to neefikasno i nije u skladu sa zahtevima iz realnog sveta. Posledica je korektan rezultat. Serijsko izvravanje transakcija, u stvari, znai da: nema preplitanja transakcija, prvo se zavri jedna, zatim poinje druga transakcija

Konkurentno izvravanje transakcija je serijabilno (linearno) ako daje isti rezultat kao i serijsko izvravanje svih transakcija.

1.11. Oporavak baze podataka


Opravak baze podataka (RECOVERY) predstavlja proces vraanja baze podataka u korektno stanje. Sasvim je realno, i deava se, da usled otkaza sistema mora da se uradi oporavak baze podataka. Uzroci otkaza mogu biti razliiti: greke u programiranju, greke u operativnom sistemu, nestanak napajanja, havarije i sl. Proces oporavka se zasniva na redudansi podataka, tj. postojanju rezervnih kopija (backup), koje mogu da se uvaju na disku, traci i sl. Tako, u sluaju otkaza sistema, oteena baza podataka se rekonstruie u ispravno stanje na osnovu poslednje kopije, a nekonzistentno stanje se reava tako to se ponitavaju nekonzistentne promene, a transakcije se ponavljaju.

1.12. Osnovne karaketristike savremenih baza podataka


Savremeni raunari i komunikaciona tehnologija znaajno su uticali na napredak arhitekture, dizajna, kao i na upotrebu baza podataka i sistema za obradu transakcija. Njihova unapreena funkcionalnost stvorila je nove poslovne mogunosti za preduzea koja ih koriste, ali isto tako prouzrokovan je poprilian broj dodatnih zahteva za njihovom operativnou.

- 56 -

Stalna pristupanost Zbog toga to je uvek aktivan, informacioni sistem mora biti operativan tokom radnog vremena preduzea. U nekim preduzeima, to znai da sistem mora da bude stalno dostupan. Na primer, kod sistema za rezervaciju avionskih karata, moe da se zatrai rezervacija karata iz agencija rasporeenih u velikom broju vremenskih zona, tako da se sistem nikada ne gasi. Kada sistemi doive kolaps, to dovedi do poremeaja u poslovanju. Na primer, ukoliko raunar za rezervaciju karata ne radi, ne moe se ni uraditi rezervacija. Mogunost tolerancije pada sistema zavisi pre svega od prirode preduzea. Svakako je jasno da sistem kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima sistem za rezervacije. VISA je objavila 2002. godine da je njihov sistem bio iskljuen na svega osam minuta u poslednjih pet godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U osnovi stalno pristupanih sistema u sutini su kvalitetan hardver i softver Visoka pouzdanost Sistem mora precizno da prikae rezultate svih transakcija. To znai ne samo da transakcija mora da bude tano programirana, ve i da ne sme doi do greke zbog uporednog (paralelnog) odvijanja transakcija, ili meusobne komunikacije delova programa za vreme izvrenja transakcija. Meutim, veliki sistemi za prenos transakcija ukljuuje hiljade hardverskih i softverskih modula, i malo je verovatno da svi rade savreno precizno. Ipak, sistem ne sme da zaboravi rezultate bilo koje zavrene transakcije. Na primer, baza bodataka u bankarskom sistemu mora precizno da prikae efekat svih ulaganja i podizanja novca koji su se obavili, i ne sme da zaboravi rezultate bilo kakve transakcije tog tipa. Veliki protok informacija Poto preduzea imaju veliki broj klijenata zbog kojih moraju da koriste sisteme za prenos transakcija, sistem mora da bude u stanju da obavlja vie transakcija u sekundi. Na primer, sistem za odobravanje kreditnih kartica moe da obavlja na hiljade transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije ne mogu izvravati serijski, ve se moraju izvravati uporedno; to sa druge strane znaajno komplikuje strukturu sistema.

- 57 -

Brza reakcija Sistem mora brzo da odreaguje zbog kupaca koji ekaju na njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od vrste naredbe koja se zadaje sistemu. Moemo da ekamo petnaest sekundi ispred bankomata kada podiemo novac, ali oekujemo, da, kada telefoniramo, poziv bude uspostavljen za nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija, reakcija sistema ne dogodi u tano utvrenom vremenu, transakcija se nee obavljati pravilno. Na primer, u fabrici sa automatizovanim sistemom, u transakciji moe od sistema da se zatrai da aktivira neku mainu pre nego to deo za obradu doe do nje. Za aplikacije ovog tipa se kae da imaju tzv. prinudno radno vreme. Dugotrajnost Sistemi za prenos transakcija su veoma kopleksni, i nisu lako zamenljivi. Stoga, oni moraju biti dizajnirani tako da se pojedinani hardverski i softverski moduli mogu zameniti novijim verzijama (koje imaju bolje performanse ili dodatne funkcije) bez velikih poremeaja unutar sistema. Bezbednost Mnogi sistemi za prenos transakcija sadre poverljive informacije o pojedincima (npr. stvari koje su kupili, brojeve kreditnih kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Poto ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta (ukljuujui i Internet) bezbednost je vana. Korisnici moraju da se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da imaju pristup samo onim transakcijama za ije izvrenje su ovlaeni (samo slubenik u banci moe da izvri transakcije na nekom raunu). Informacije u bazi podataka ne smeju da se presreu i itaju od strane hakera, a informacije prenesene izmeu korisnika i sis-tema se ne smeju menjati i najee treba da budu zatiene od prislukivanja.

- 58 -

1.13. Zakljuak
Tokom proteklih decenija dolo je do naglog porasta u broju i vanosti aplikacija baza podataka. Baze se koriste za skladitenje, manipulaciju i dobijanje podataka u organizacijama svih vrsta. Baza podataka je organizovan skup logiki povezanih podataka. Podatak definiemo kao kao predstavnika objekta ili nekog dogaaja, koji bi bili od vanosti u korisnikovom realnom okruenju. Informacija je podatak koji je tako obraen da nakon njegove upotrebe, korisnik oplemenjuje svoja saznanja. I podatak, kao i informacija se mogu uvati u bazi podataka. Metapodatak jeste onaj podatak koji opisuje karakteristike korisnikih podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka (DBMS) je softverski sistem koji se koristi da stvara, odrava i obezbeuje kontrolu nad pristupom bazama podataka. DBMS skladiti metapodatke u delu koji je centralno skladite za sve definicije podataka, njihove veze, monitoring i formati izvetaja kao i ostale komponente sistema. Klasini sistemi zasnovani na datotekama i programskim jezicima su razvijeni u ranijoj raunarskoj eri, kako bi raunari mogli da skladite, manipuliu i izvlae velike fajlove podataka. Ovi sistemi (i danas u upotrebi) su imali veliki niz nedostataka kao to su zavisnost izmeu podataka i programa, dupliranje podataka, njihova podela, kao i vreme izvrenja. Pristu preko baza podataka nastao je kao odgovor na te nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe, poslovne baze i Internet baze. U poslovne baze ulaze i skladita podataka i integrisani programi za podrku u odluivanju. Tehnologija baza podataka je poela sa razvojem tokom ezdesetih godina prolog veka, i od tada se razvija bez prekida, sa tendencijama ka daljem usavravanju i uklanjanju bilo kakvih potekoa kada su u pitanju upravljanje, pristup i odravanje podataka u bazi podataka. Informacioni sistemi pojedinih firmi omoguavaju upravljanje podacima koji su bitni za njeno poslovanje. Kako je broj internih podataka i podataka iz okruenja ogroman nemogue je sve podatke i sve uoene detalje opisati i sauvati unutar informacionog sistema. Postupkom selekcije identifikuju se i uvaju samo relevantni podaci i stvaraju modeli
- 59 -

realnog sveta. Oni su izraz i posledica zahteva za obradom podataka relevantnih za odreeno podruje primene. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledee osnovne modele: hijerarhijski model, mreni model, relacioni model i objektni model Na bazi ANSI/X3/SPARC modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajueg eksternog modela. Zahtev za uitavanje odreenih podataka aplikativni sloj upuuje na eksterni sloj, odnosno odgovarajui korisniki model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Transakcija je niz operacija nad bazom podataka i odgovara jednoj logikoj jedinici posla u realnom sistemu, koja se izvrava do kraja ili se ponitava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvreni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeuje ouvanje konzistentnosti baze.

1.14. Literatura
[1] James L. Johnson, Database: Models, Languages, Design, Oxford University Press, 1997., London. [2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems, Pearson, Addison Wesley, 2004. [3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison Wesley, Boston, MA [4] Branislav Lazarevi, Z. Marjanovi, N. Anii, S. Babarogi, Baze podataka, FON, Beograd, 2003. [5] Vladimir Blagojevi, Relacione baze podataka, Klub Nikola Tesla, Beograd, 2001. [6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern Database Management, Pearson, Prentice Hall, 2005. [7] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag, Berlin [8] Craig S. Mullins, Administracija baza podataka, Kompjuter biblioteka, 2003.
- 60 -

2. O SQL-u
SQL (Stuctiured Query Language) je standardni relacioni upitni jezik (ANSI - American National Standards Institute - standard). Ovaj jezik se koristi za pristup i manipulaciju sistemima za upravljanje bazom podataka (DBMS - DataBase Management System), to najee podrazumeva itanje i izmenu podataka u razliitim bazama podataka. Tvorcem SQL-a se smatra Chamberlin, a SQL je nastao u iBM-ovoj istraivakoj laboratoriji (IBM Research Laboratori) u San Jose-u, Kalifornija 1974. godine. to je na istom mestu gde je i E.F. Codd 1970 definisao osnovne koncepte relacionog modela podataka SQL koji su bili osnova za dalji razvoj relacionih baza podataka. SQL je uspeno primenjen u sistemima za upravljanje bazom podataka kao to su MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase itd. Osnovne karakteristike SQL-a: 1. Jednostavnost i jednobraznost pri kori enju Tabela (relacija) se kreira jednom izvrnom naredbom. Odmah po kreiranju tabela je raspoloiva za korienje. Svi podaci memorisani su u tabelama i rezultat bilo koje operacije se logiki prikazuje u obliku tabele. 2. Mogu nost interaktivnog i klasi nog (aplikativnog) programiranja Koristei SQL dobijaju se odgovori na trenutne, unapred ne predvidene zahteve ili se SQL blokovi "ugrauju" u klasini vii programski jezik (FORTRAN, COBOL. PL/I, C) omoguujui klasinu obradu gde korisnik same aplikacije najee uopte nije ni svestan da koristi SQL. 3. Neproceduralnost (tj. proceduralnost u minimalnom stepenu). Ni za jedan jezik se ne moe rei da je potpuno neproceduralan, ve da je neproceduralan u veem ili manjem stepenu. SQL je u velikoj meri neproceduralan jer definie TA, a ne KAKO: koji podaci se ele, koje tabele se referenciraju i koji uslovi treba da budu ispunjeni, bez precizne specifikacije procedure za dobijanje eljenih podataka. Preciznije reeno SQL je na viem nivou apstrakcije nego klasini vii programski jezici, odnosno mnogi
- 61 -

podjezici relacionih sistema za upravljanje bazama podataka koji se esto koriste. Osnovne mogunosti SQL-a su:

SQL omoguava pristup bazi podataka SQL je jedan od ANSI standardardnih racunarskih jezika SQL moe da izvrava upite nad bazom podataka SQL moe da prikazuje podatke iz baze podataka SQL moe da unosi nove podatke u bazu podataka SQL moe da obrie postojee zapise iz baze podataka SQL moe da izmeni podatke u bazi podataka

Reimi rada
SQL podrava dva reima rada sa BP:

Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko tastature a rezultati se prikazuju na monitoru, pristup BP je ogranien jedino pravima korisnika Programski (BASH): korisnik pokree program u kome su ugraene SQL naredbe, pristup BP je ogranien pored prava korisnika i sadrajem programa koji se pokree

- 62 -

3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MySQL-a


3.1. Proces isntalacije
Procedura instalacije ovog pageta se kao i kod veine pokree na standardni nain, pokretanjem fajl setup.exe. Posle startovanja ovog fajla pojavie se prozor kao na slici:

Slika 3.1 Prvi prozor Wizard-a Ovo je prva stranica Setup Wizarda koji e vam pomoi da na svoj Windows sistem instalirate MySQL serverski program. Da bi ste nastavili dalje kliknite na dugme Next, posle ega e se pojaviti sledei prozor kao na slici:

- 63 -

Sika 3.2 Drugi prozor Wizard-a Na ovom prozoru je potrebno izabrati tip instalacije koju elite. Prva opcija je Typical koja je tipina i vrlo upotrebljiva za veinu korisnika pa je poeljno nju izabrati. Pored nje tu je i Complete instalacija koja e instalirati sve programe koji postoje u ovom paketu, i na kraju je opcija Custom kod koje moete runo izabrati ta od komponenata elite da se instalira a ta ne. Izaberite Typical ako ve nije izabrana i kliknite na dugme Next da bi nastavili instalaciju. Pojavie se trea stranica Wizarda koja izgleda kao na slici:

- 64 -

Sika 3.3 Trei prozor Wizard-a Da bi instalirali MySQL server kliknite na dugme Install posle ega je potrebno saekati neko vreme dok se ne zavri proces instalacije (ovo moe potrajati neko vreme u zavisnosti od brzine vaeg raunara). Po zavretku instalacije pojavie se prozor kao na slici:

- 65 -

Sika 3.4 etvrti prozor Wizard-a Ovde imamo tri opcije. Prva je da kreiramo novi account za MySQL, druga je da koristimo neki koji smo ve ranije kreirali a trea je da preskoimo ovaj korak jer on nije neophodan ako ne elimo da kreiramo svoj account na MySQL.com-u. Ovde emo preskoiti ovaj korak i neemo kreirati novi account, izaberite opcije Skip Sign-Up i kliknite na dugme Next, posle ega e se pojaviti prozor kao na slici:

- 66 -

Sika 3.5 Peti prozor Wizard-a Na ovom prozoru vidimo da je proces instalacije zavren i moete izabrati ukoliko elite da konfiguriete server (potrebno je da opcija Configure the MySQL Server now bude izabrana kao na slici). Ukoliko ne elite da sada konfiguriete server ve kasnije deekirajte ovu opciju. Za sada e te ovu opciju ostaviti ukljuenu da bi demonstrirali kako se konfigurie server. Kliknitu na taster Next da bi se pojavio prvi prozor Wizard-a koji e vam pomoi da konfiguriete server.

- 67 -

3.2. Konfigurisanje MySQL servera


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

Slika 3.6 Prvi prozor Wizard-a za konfiguraciju MySQL-a Ovde moete primetiti da postoje dve opcije koje moete izabrati. Prva je Detailed Configuration ijim izborom e te moi do detalja runo da podesite svoj server. Druga je Standrad Configuration koja je preporuljiva za veinu instalacija. Izaberite Standard Configuration i zatim kliknite na dugme Next posle ega e se pojaviti prozor kao na slici:

- 68 -

Slika 3.7 Drugi prozor Wizard-a za konfiguraciju MySQL-a Ovde je potrebno da sve ostavite kako jeste, samo ukljuite opciju Include Bin Directory in Windows Path (ovo nije obavezno ali je poeljno da bi kasnije mogli iz komandne linije lake da pozivate klijentski program). Takoe proverite da li je izabrana opcija Lanch the MySQL Server automatically koja znai e pri svakom pokretanju operativnog sistema automatski biti pokrenut i server, a zatim kliknite na taster Next da bi se pojavio sledei prozor kao na slici:

- 69 -

Slika 3.8 Trei prozor Wizard-a za konfiguraciju MySQL-a Ovde je vrlo bitno u polje New root password upisati ifru koju e te koristiti kasnije za rad sa bazom podataka i u sledeem polju Confirm potvrditi to jest jo jednom uneti istu ifru a zatim kliknite na Next da bi nastavili dalje (ovde je mogue izabrati i opciju Create An Anonymous Account to znai da e svako moi da se loguje kao Anonymous bez ifre, ovo je poeljno izbegavati). Posle izbora opcije Next pojavie se prozro kao na slici:

- 70 -

Slika 3.9 etvrti prozor Wizard-a za konfiguraciju MySQL-a Ovo je u stvari statusni prozor koji e prikazivati tok konfigurisanja to jest pojedinanih stavki i primenu podeavanja. Da bi konfigurisali va server potrebno je izabrati dugme Execute i saekati nekoliko trenutaka da se konfigurisanje zavri posle ega e se ukoliko je sve u redu pojaviti prozor kao na slici:

- 71 -

Slika 3.10 Peti prozor Wizard-a za konfiguraciju MySQL-a Ovim ste zavrili proces instalacije i konfigurisanja. Startujete MySQL i moete poeti sa radom.

- 72 -

3.3. Pokretanje MySQL-a


Posle zavrene instalacije i konfigurisanja samog servera potrebno je pokrenuti klijentski program koji e vam omoguiti rad sa bazom podataka. Da bi ste startovali program idite na Start meni, zatim Programs, pa onda MySQL, pa MySQL Server 5.0 i na kraju MySQL Command Line Client posle ega e se pojaviti prozor kao na slici:

Slika 3.11 Prvi prozor MySQL-a Ovde je potrebno uneti root password koji ste zadali prilikom instalacije, unesite ifru i pritisnite taster Enter na tastaturi posle ega e se pojaviti prozor kao na sledeoj slici:

- 73 -

Slika 3.12 Prvi prozor MySQL-a Ukoliko je sve u redu pojavie se prozor koji izgleda isto ovako i to znai da ste se upravo uspeno ulogovali i da vam je sada omoguen rad sa ovim SUBP-om. Sada moete izabrati neku od postojeih baza ili kreirati novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu DDL gde je to objanjeno). Ukoliko ne znate koje se baze nalaze trenutno na sistemu to moete proveriti kucanjem naredbe: SHOW DATABASES; posle ega e se na ekranu pojaviti spisak svih postojeih baza na ovom sistemu.

- 74 -

4. SQL TIPOVI PODATAKA


MySQL DBMS podrava vei broj tipova podataka koje moemo svrstati u tri osnovne kategorije:

Numeriki tipovi podataka Vremenski tipovi podataka Binarni i tekstualni tipovi podataka

MySQL podrava i proirenja za podrku podataka veeg obima. Takoe, osim tipa podataka skup vrednosti se moe dodatno definisati i korienjem atributa koji mogu biti opti (npr. da je unos vrednosti obavezan) i specifini za odreeni tip podataka (npr. Signed/Unsigned za tip Integer).

4.1. Numeriki tipovi podataka


MySQL u potpunosti podrava SQL standard vezan za numerike tipove podataka. U numerike tipove podataka spadaju celobrojne vrednosti (INTEGER, SMALLINT, DECIMAL i NUMERIC) kao i aproksimativne vrednosti (FLOAT, REAL i DOUBLE PRECISION). Sinonim za INTEGER je INT dok je sinonim za DECIMAL DEC.
Tip Bajtova Min. vrednost Signed/Unsigned tinyint 1 -128 0 -32768 0 -8388608 0 -2147483648 0 Maks. vrednost Signed/Unsigned 127 255 32767 65535 8388607 16777215 2147483647 4294967295

smallint

mediumint

int

bigint

-9223372036854775808 92233720368547758 07 18446744073709551 0 615

Tabela 4.1 Integer tipovi podataka


- 75 -

Najbitniji atributi numerikih tipova podataka su "Signed/Unsigned" i "Zerrofil". "Signed/Unsigned" atribut oznaava da li e se u poljima tog tipa uvati samo pozitivne ili i pozitivne i negativne vrednosti. U zavisnosti od ovog parametra se odreuje i donja/gornja granica unetih vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima dodaje nule do definisane duine (npr. unos vrednosti "4" u polje tipa INT(5) e se odraziti kao vrednost "00004") i automatski postavlja i parametar "Unsigned". Tipovi FLOAT i DOUBLE se koriste za predstavljanje priblinih vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23 podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip DOUBLE. MySql automatski podrava zaokruivanje tako da e se vrednost 999.00009 uneta u polje definisano kao ime_polja DOUBLE(5,4) sauvati kao 999.0001. Tipovi DECIMAL i NUMERIC se koriste za predstavljanje tanih numerikih vrednosti. Razlika izmeu ovih tipova i tipova FLOAT i DOUBLE je u tome to se kod tipova DECIMAL i NUMERIC parametar preciznost zahteva kao statiki (npr. kurs_dinara DECIMAL(3,2)).

4.2. Tipovi podataka vezani za datum i vreme


U tipove podataka namenjenih skladitenju vrednosti vezanih za vreme spadaju:

DATETIME DATE TIME TIMESTAMP YEAR

Svaki od navedenih tipova podataka ima sopstveni skup validnih vrednosti kao i nula vrednost koja zamenjuje uneene vrednosti koje nisu validne. Tip TIMESTAMP poseduje automatsko ponaanje tj. automatski unosi vrednost sa sistemskog asovnika. U Tabeli 2.2.1 je prikazan format podataka vezanih za datum i vreme.

- 76 -

Tip podataka DATETIME DATE TIME TIMESTAMP YEAR

nula vrednost '0000-00-00 00:00:00' '0000-00-00' '00:00:00' '0000-00-00 00:00:00' 0000

Tabela 4.2 Format podataka vezanih za datum i vreme Navedeni tipovi podataka vezani za datum i vreme nemaju specifine parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar length. Podrazumevana vrednost parametar length kod tipa TIMESTAMP je 14 a moe biti i dodatno navedena: 14 (format YYYYMMDDHHMMSS) 12 (format YYYYMMDDHHMM) 10 (format YYYYMMDDHH) 8 (format YYYYMMDD) 6 (format YYYYMM) 4 (format YYYY) 2 (format YY) Podrazumevana vrednost parametar length kod tipa YEAR je 4 a moe biti i dodatno navedena kao vrednost 4 (format YYYY) ili 2 (format YY). U sluaju kada je parametar length postavljen na vrednost 4 kod YEAR tipa podataka, uneene vrednosti u opsegu 00-69 se konvertuju u 2000-2069 dok se vrednosti 70-99 konvertuju u 1970-1999.

4.3. Binarni i tekstualni tipovi podataka


U tipove podataka namenjenih skladitenju binarnih i tekstualnih vrednosti spadaju:

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


- 77 -

CHAR i VARCHAR tipovi podataka su namenjeni za skladitenje kraih nizova karaktera. Oba tipa imaju parametar length (npr. ime CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa moe biti numerika vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do 65.536. Osim razlike u duini stringa koji se skladiti, osnovna razlika izmeu izmeu ovih tipova je nain na koji se podaci skladite u bazi. Naime, vrednost parametra length se kod tipa CHAR koristi statiki tj. razlika izmeu maksimalne duine i unete duine stringa se popunjava znakom razmaka. Kod VARCHAR tipa se duina prilagoava unetoj duini stringa. BINARY i VARBINARY tipovi su veoma slini CHAR i VARCHAR tipovima sa tom razlikom to su BINARY i VARBINARY tipovi namenjeni skladitenju binarnih podataka. Ova dva tipa podataka su namenjena uglavnom za skladitenje manjih koliina podataka. Za skladitenje fajlova u bazi podataka se radije koristi BLOB tip podataka. BLOB tip podataka (Binary Large OBject) i njegove podvarijante (TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene za skladitenje binarnih nizova. TEXT tip podataka i njegove podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su namenjene za skladitenje nizova karaktera razliite veliine. BLOB i TEXT tipovi podataka ne mogu imati "default" vrednosti. ENUM tip podataka je namenjen za skladitenje tekstualnih vrednosti s tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga", "treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je ograniena na maksimalno 65.536 elemenata. SET tip podataka je slian ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata ograniena na 64 elementa kao i da postoje odreene razlike pri indeksiranju elemenata liste.

- 78 -

4.4. Zahtevi pri skladitenju


Numeriki tipovi:
Tip podataka TINYINT SMALLINT MEDIUMINT INT, INTEGER BIGINT FLOAT(p) FLOAT DOUBLE [PRECISION], REAL DECIMAL(M,D), NUMERIC(M,D) BIT(M) Zahtev pri skladitenju 1 bajt 2 bajta 3 bajta 4 bajta 8 bajtova 4B za 0 <= p <= 24; 8B za 25 <= p <= 53 4 bajta 8 bajta Varira; dato je naknadno objanjenje priblino (M+7)/8 bajtova

Tipovi podataka vezani za datum i vreme:


Tip podataka DATE DATETIME TIMESTAMP TIME YEAR Zahtev pri skladitenju 3 bajta 8 bajtova 4 bajta 3 bajta 1 bajt

Binarni i tekstualni tipovi podataka:


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

- 79 -

Tip podataka BINARY(M) VARBINARY(M)

Zahtev pri skladitenju M <= 65535. M bajtova, 0 <= M <= 255 L + 1 bajtova, gde je L <= M i 0 <= M <= 255 ili L + 2 bajtova, gde je L <= M and 256 <= M <= 65535. L+1 bajtova, gde je L < 28 L+2 bajtova, gde je L < 216 L+3 bajtova, gde je L < 224 L+4 bajtova, gde je L < 232

TINYBLOB, TINYTEXT BLOB, TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT

ENUM('vrednost1','vred 1 ili 2 bajta, u zavisnosti od broja lanova nost2',...) SET('vrednost1',vredno 1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja lanova st2',...)

4.5. Izbor adekvatnog tipa podataka


Pri modeliranju baze podataka veoma je vano odabrati adekvatne tipove podataka tj. definisati tipove i atribute koji odgovaraju potrebama rada sa bazom podataka. U sluaju da kreirani model ne odgovara realnim potrebama u daljem radu se mogu javiti netane vrednosti u bazi kao i nemogunost korienja svih prednosti DBMS-a. Primer 1: Polje starost (pod kojim podrazumevamo broj godina osobe) je u bazi mogue uvati i u polju tipa Integer i u polju tipa String. Meutim, odabir tekstualnog tipa podatka onemoguava korienje upita tipa:

prikai sve osobe mlae od 30 godina prikai sve osobe stare izmeu 20 i 50 godina ...

Primer 2: Polje datum (pod kojim planiramo uvanje informacije o datumu i vremenu nekog dogaaja) je u bazi mogue uvati i u polju tipa Integer i u polju tipa DATETIME ili TIMESTAMP. Odabir numerikog ili
- 80 -

tekstualnog tipa podatka umesto vremenskog onemoguava funkcija vezanih za vremenski tip podatka. Meutim, odabir INTEGER tipa u ovakvim situacijama nije redak sluaj jer se izgubljena funkcionalnost DMBS-a nadoknauje korienjem nekog od programskih jezika koji imaju mogunost rada sa pomenutim DBMS-om. Takoe, pri izboru tipa podataka treba imati u vidu i zahteve za skladitenjem odreenih tipova kao i brzinu rada.

4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima


Da bi se olakalo importovanje modela raenih za druge DBMS sisteme u MySQL DBMS, MySQL podrava sledee mapiranje tipova: Ostali DBMS
BOOL BOOLEAN CHAR VARYING(M) DEC FIXED FLOAT4 FLOAT8 INT1 INT2 INT3 INT4 INT8 LONG VARBINARY LONG VARCHAR LONG MIDDLEINT NUMERIC

MySql DBMS
TINYINT TINYINT VARCHAR(M) DECIMAL DECIMAL FLOAT DOUBLE TINYINT SMALLINT MEDIUMINT INT BIGINT MEDIUMBLOB MEDIUMTEXT MEDIUMTEXT MEDIUMINT DECIMAL

Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS sistemima


- 81 -

U praksi ovo znai da je mogue iskoristiti strane definicije tipova (navedenih u levoj koloni) za kreiranje tabela s tim da e se one automatski prevesti u MySql tipove podataka (navedene u desnoj koloni).

4.7. Unos razliitih tipova podataka


U zavisnosti od tipa podataka, razliiti tipovi podataka imaju razliit nain unosa pomou SUBP-a u bazu podataka.

Numeriki tipovi podataka Unose se na klasian nain, na primer:

INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Magacin_rb, Cena i Koliina su numerikog tipa i unose se na klasian nain, bez ikakvih specijalnih znakova.

Vremenski tipovi podataka Unose se na klasian nain, na primer:

INSERT INTO Magacin (Magacin_rb, Naziv, Cena, Datum) VALUES (12, 'Disketa', 59.99, 12/09/2005); U prethodnom primeru polje Datum je vremenskog tipa.
Binarni i tekstualni tipovi podataka Unose se obavezno izmeu jednostrukih znakova novoda, na primer:

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

5. DDL (Data Definition Language)


5.1. Kreiranje baze podataka
Funkcija kreiranja baze podataka putem SUBP-a se odnosi na kreiranje nove prazne baze sa svim potrebnim elementima da je posle toga mogu rad sa njom. Kreiranje baze podataka se u SQL jeziku vri pomou naredbe CREATE DATABASE.
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name

Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno je ukucati sledee:
CREATE DATABASE PRODAJA;

Ovom naredbom kreirana je nova prazna baza podataka pod imenom PRODAJA. Sada je mogue koristiti ovu bazu podataka za dalji rad. Sve to je potrebno jeste izabrati bazu sa kojom elite da radite, samim kreiranjem baze ne podrazumeva se da vi automatski hoete sa njom da nastavite da radite pa je zato potrebno ukucati sledeu naredbu:
USE PROBA;

Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa kojom elimo da radimo (ovo je analogno kada u nekom programu izaberemo opciju Open pa izaberemo odreeni fajl sa kojim elimo da radimo).

- 83 -

5.2. Kreiranje tebele u bazi podataka


Funkcija kreiranja nove tabele u bazi podataka putem SUBP-a se odnosi na kreiranje nove prazne tabele u bazi podataka. Kreiranje nove tabele u bazi podataka se u SQL jeziku vri pomou naredbe CREATE TABLE.
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; create_definition: column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | KEY [index_name] [index_type] (index_col_name,...) | INDEX [index_name] [index_type] (index_col_name,...) | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,...) | [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | CHECK (expr) column_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'string'] [reference_definition] type: TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length)] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length)] [UNSIGNED] [ZEROFILL] | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL] | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL] | DATE | TIME | TIMESTAMP | DATETIME | CHAR(length) [BINARY | ASCII | UNICODE] | VARCHAR(length) [BINARY]

- 84 -

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

Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE Ukucajte sledee primere i napraviete nekoliko tabela u bazi podataka PRODAJA koja je kreirana u prvom primeru.
CREATE TABLE Artikl ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Magacin_rb INTEGER UNSIGNED NOT NULL, Naziv VARCHAR(255) NULL, Cena FLOAT NULL, Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0, ZemljaPorekla VARCHAR(50) NULL, PRIMARY KEY(rb), INDEX Artikl_FKIndex1(Magacin_rb) ); CREATE TABLE Dobavljac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Naziv VARCHAR(255) NOT NULL, Adresa VARCHAR(255) NULL, Telefon VARCHAR(30) NULL, PRIMARY KEY(rb) );

- 85 -

CREATE TABLE Dobavljac_Artikl ( Dobavljac_rb INTEGER UNSIGNED NOT NULL, Artikl_rb INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Dobavljac_rb, Artikl_rb), INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb), INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb) ); CREATE TABLE Kupac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Artikl_rb INTEGER UNSIGNED NOT NULL, Ime VARCHAR(25) NOT NULL, Prezime VARCHAR(25) NOT NULL, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, email VARCHAR(30) NULL, PRIMARY KEY(rb), INDEX Kupac_FKIndex1(Artikl_rb) ); CREATE TABLE Magacin ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY(rb) );

U prethodnim primerima ukucali ste naredbe kojima je kreirano pet razliitih tabela u bazi podataka PRODAJA koje emo koristiti i u daljim primerima za vebanje.

- 86 -

5.3. Naredbe za definisanje podataka


Omoguuju definisanje resursa relacione baze podataka. Pod resursima BP se najee podrazumevaju: 1. 2. 3. 4. 5. 6. struktura BP, tabele, atributi, tipovi podataka, ogranienja, pomoni indeksi za direktan pristup itd.

Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogui da izvrimo sledee operacije: 1. kreiranje baze podataka 2. kreiranje tebele baze podataka 3. kreiranje indeksa nad kombinacijom kolona tabele 4. kreiranje virtuelne tabele - "pogleda" 5. izmena definicije tabele 6. izmena pogleda u bazi podataka 7. promena imena tabeli u bazi podataka 8. brisanje tabele iz baze podataka 9. uklanjanje indeksa iz tabele 10. uklanjanje baze podataka

- 87 -

5.4. Kreiranje indeksa u bazi podataka


Funkcija kreiranja indeksa u tabeli u baze podataka putem SUBP-a se odnosi na kreiranje novog indeksa u tabeli u bazi podataka (iako se on uglavnom kreira pri samom kreiranju tabela baze podataka (pogledajte prethodne primere gde e te primetiti da se esto na kraju navodi primarni klju i ako postoje i ostali indeksi), koji e omoguiti lake pretraivanje i ostale funkcije koje se dobijaju indeksiranjem nekog od polja u tabeli baze podataka. Kreiranje novog indeksa u tabele baze podataka se u SQL jeziku vri pomou naredbe CREATE INDEX.
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name,...) index_col_name: col_name [(length)] [ASC | DESC]

Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX Kreiraemo indeks u tabeli Magacin nad poljem Telefon (strukturu tabele pogledajte tamo gde je ona kreirana) sledeom naredbom:
CREATE INDEX K2 ON Magacin(Telefon);

- 88 -

5.5. Kreiranje virtuelne tabele - "pogleda"


Funkcija kreiranja pogleda (VIEW) u bazi podataka putem SUBP-a se odnosi na kreiranje pogleda tj. virtualne tabele koja se koristi u sluajevima kada se esto izvravana neki isti upit nad odreenom tabelom ili vie tabela u bazi podataka. Tada se kreira pogled tj. view koji se kasnije koristi u radu sa bazom podataka. Kreiranje pogleda bazi podataka se u SQL jeziku vri pomou naredbe CREATE VIEW.
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW Kao to u gore navedenoj strukturi moete primetiti da ovde postoji select_statement to je u stvari SELECT naredba koja je posebno i detaljno objanjena u etvrtom delu o DML-u a ovde nee biti vie rei o tome (za vie informacija pogledajte poglavlje 4.3 gde e te videti detaljno objanjenje ove naredbe i svih njenih opcija. Kreiraemo pogled nad tabelom magacin (najjednostavnijim oblikom SELECT naredbe) koji e prikazivati sve podatke koji se nalaze u istoimenoj tabeli sledeom naredbom:
CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;

- 89 -

5.6. Izmena definicije tabele


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

Slika 5.5 Dokumentovana struktura naredbe ALTER TABLE

- 90 -

U zavisnosti od toga ta elimo da promenimo u tabeli, koristiemo razliite oblike prethodno navedene naredbe u strukturi koja je prikazana. Za dodavanje nove kolone koristi se ADD:
ALTER TABLE Kupac ADD ime_oca CHAR(25);

Za uklanjanje kolone iz tabele koristi se DROP:


ALTER TABLE Kupac DROP ime_oca;

Za izmenu svojstava kolone iz tabele koristi se MODIFY:


ALTER TABLE Kupac MODIFY email VARCHAR(40);

- 91 -

5.7. Izmena pogleda u bazi podataka


Funkcija izmene pogleda u bazi podataka putem SUBP-a se odnosi na izmenu pogleda koji je prethodno kreiran u bazi podataka. Izmena pogleda bazi podataka se u SQL jeziku vri pomou naredbe ALTER VIEW.
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW Primeniemo gore navedenu naredbu da bi promenili pogled pod nazivom SPISAK tako da prikazuje sve iz tabele Dobavlja a ne Magacin kako je ranije bilo, u skladu sa prethodno navedenom strukturom potrebno je ukucati:
ALTER VIEW SPISAK AS SELECT * FROM Dobavljac;

- 92 -

5.8. Promena imena tabele u bazi podataka


Funkcija promene imena tabele u bazi podataka putem SUBP-a se odnosi na promenu inema neke od tabela koja je prethodno kreirana u bazi podataka. Izmena imena tabele u bazi podataka se u SQL jeziku vri pomou naredbe RENAME TABLE.
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...

Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE Iskoristiemo prethodno opisanu naredbu da bi promenili ime tabele Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati:
RENAME TABLE Kupac TO Klijent;

- 93 -

5.9. Brisanje tabele iz baze podataka


Funkcija brisanja tabele iz baze podataka putem SUBP-a se odnosi na uklanjenje neke od tabela koja je prethodno kreirana u bazi podataka tako da ona vie fiziki ne postoji u bazi podataka.. Ovde je potrebno uoiti bitnu razliku izmeu naredbe DROP TABLE i naredbe DELETE FROM TABLE. Naredbom DROP TABLE brie se tabela iz baze podataka (napomena: korienjem ove naredbe nad tabelom u kojoj se nalaze podaci doi e do gubljenja tih podataka) dok se naredbom DELETE FROM TABLE briu se svi podaci iz tabele ali se prazna tabela i dalje uva u bazi podataka tako da se kasnije ponovo moe koristiti. Uklanjanje tabele u bazi podataka se u SQL jeziku vri pomou naredbe DROP TABLE.
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]

Slika 5.8 Dokumentovana struktura naredbe DROP TABLE Korienjem prethodno navedene naredbe ukloniemo tabelu Klijent iz baze podataka, u skladu sa prethodno navedenost strukturom potrebno je ukucati:
DROP TABLE Klijent;

- 94 -

5.10. Uklanjanje indeksa iz tabele


Funkcija uklanjanja indeksa iz tabele u bazi podataka putem SUBP-a se odnosi na uklanjenje indeksa u nekoj od tabela koji je prethodno kreiran u bazi podataka. Uklanjanje indeksa u nekoj od tabele u bazi podataka se u SQL jeziku vri pomou naredbe DROP INDEX.
DROP INDEX index_name ON tbl_name

Slika 5.9 Dokumentovana struktura naredbe DROP INDEX Korienjem prethodne naredbe ukloniemo indeks pod nazivom K2, koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom strukturom potrebno je ukucati:
DROP INDEX K2 ON Magacin;

- 95 -

5.11. Uklanjanje baze podataka


Funkcija uklanjanja baze podataka putem SUBP-a se odnosi na uklanjenje kompletne baze podataka koja je prethodno kreirana (Ovom naredbom uklanjamo itavu bazu podataka i sve njene resurse (tabele, atribute, tipove podataka, ogranienja, indekse itd.)). Uklanjanje baze podataka se u SQL jeziku vri pomou naredbe DROP DATABASE.
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE Korienjem prethodne naredbe obrisaemo itavu bazu podataka koju smo na poetku kreirali (PANJA: posle izvrenja ove naredbe baza e biti unitena i dalji rad nee biti mogu), u skladu sa gore navedenom strukturom potrebno je ukucati:
DROP DATABASE PRODAJA;

- 96 -

6. DML (Data Manipulation Language)


6.1. Manipulisanja podacima
Osnovni razlog korienja Sistema za Upravljanje Bazama Podataka (SUBP) je jednostavan i lak rad sa podacima koji se nalaze u bazi podataka. Pod manipulisanjem (rukovanjem) podacima se podrazumeva:

Unos (dodavanje) podataka Pregled (korienje) podataka Izmena podataka Uklanjanje podataka

Efikasnost sistema za upravljanje bazama podataka (SUBP) se moe meriti preko sledeih kriterijuma:

jednostavnost upotrebe preciznost podataka odravanje integriteta podataka brzina rada (izvravanja upita) podrana koliina podataka u bazi specifine funkcije i mogunosti

- 97 -

6.2. Unos podataka


Funkcija unosa podataka u bazu putem SUBP-a se odnosi na unos podataka u neku (jednu ili vie) od tabela u bazi podataka. Unos podataka se u SQL jeziku vri pomou naredbe INSERT.
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

Slika 7.1 Dokumentovana struktura naredbe INSERT Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe INSERT, to moete uraditi na sledea dva naina:
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany');

ili
INSERT INTO Artikl VALUES (1, 123, 'Artikl br. 1', 199.99, 100, 'Germany');

Postoje dve osnovne razlike izmeu ove dve navedene varijante: U prvoj varijanti smo pre vrednosti koje elimo da unesemo u tabelu Artikl naveli kolone u koje elimo da smestimo te vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena kolona ve smo samo naveli vrednosti po redosledu u kom se kolone nalaze u tabeli. U drugoj varijanti smo zadali vrednost i za polje rb da bi smo ispotovali broj i redosled kolona poto ih nismo eksplicitno naveli. Meutim, na ovaj nain smo izgubili funkcionalnost parametra AUTO_INCREMENT koji je postavljen na ovu kolonu.

- 98 -

Druga varijanta predstavlja krai oblik naredbe koji nije poeljno koristiti iz sledeih razloga:

Gubi se funkcionalnost parametra AUTO_INCREMENT i DEFAULT. Ukoliko naredbu u ovakvom obliku sauvamo u nekoj internoj ili eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja neke od kolona) ta procedura nee biti validna. Moraju se unositi vrednosti za sva polja i to u odgovarajuem redosledu.

Na prethodno opisan nain uneti i sledee podatke:


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

To emo uraditi uz pomo sledeih naredbi:


INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (124, 'Artikl br. 2', 299.99, 103, 'Serbian'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (127, 'Artikl br. 3', 190.00, 170, 'USA');

- 99 -

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

- 100 -

6.3. Pregled podataka


Funkcija pregleda podataka u bazi putem SUBP-a se odnosi na uzimanje podataka iz neke (jedne ili vie) od tabela u bazi podataka. Pregled podataka se u SQL jeziku vri pomou naredbe SELECT.
SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]

Slika 7.2 Dokumentovana struktura naredbe SELECT Da bi smo izvrili pregled svih podataka iz tabele Artikl iskoristiemo najosnovniji oblik naredbe SELECT:
SELECT * FROM Artikl;

- 101 -

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

Identina naredba (tj. naredba sa identinim rezultatom) u ovom sluaju bi bila:


SELECT rb, Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla FROM Artikl;

Iako su rezultati isti:


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

razlika izmeu ove i prethodne naredbe je u tome to smo u prethodnoj naredbi koristili simbol '*' da bi smo oznaili sve kolone (sva polja zapisa). Ukoliko elimo da iz prikaza izbacimo kolonu rb, potrebno je samo da je izostavimo iz liste kolona: u ovom sluaju bi bila:
SELECT Magacin_rb, FROM Artikl; Naziv, Cena, Kolicina, ZemljaPorekla

- 102 -

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

Rezultate moemo sortirati vertikalno i horizontalno. Vertikalno sortiranje se izvodi preko navoenja kolona u redosledu u kom elimo da se prikazuju parametri zapisa:
SELECT Kolicina, FROM Artikl; Cena, Naziv, Magacin_rb, ZemljaPorekla

U rezultat ove naredbe:


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

ulaze svi zapisi vertikalno poreani po redosledu u kom su unoeni u tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla. Horizontalno sortiranje se vri zadavanjem jedne ili vie kolona na osnovu ijeg sadraja e sortiranje biti obavljeno u zadatom smeru:
SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;

- 103 -

U rezultat ove naredbe:


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

ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastuem redosledu. Ukoliko elimo da zapise poreamo u opadajuem redosledu parametar ASC emo zameniti sa DESC. Osim vertikalnog ograniavanja rezultata (ograniavanja kolona/parametara zapisa koji ulaze u rezultat) SQL jezik podrava i horizontalno ograniavanje (ograniavanje zapisa koji ulaze u rezultat) preko sledeih parametara naredbe SELECT: 1. 2. 3. 4. WHERE DISTINCT LIMIT GROUP BY / HAVING

- 104 -

6.3.1. Klauzula WHERE


Ova klauzula se koristi za zadavanje odredjenog uslova koji zapis mora da ispuni da bi uao u rezultat:
SELECT * FROM Artikl WHERE rb=5;

Ovakvim korienje WHERE klauzule smo rezultat ograniili samo na zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1:
+----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 1 row in set (0.00 sec)

Osim poreenja po numerikoj jednakosti mogue je koristiti i sledee numerike operatore:


= rb=1; <> < rb<1; > rb>1; <= >= BETW EEN LIKE SELECT rb<=1; SELECT rb>=1; * * FROM FROM Artikl Artikl WHERE WHERE SELECT * FROM Artikl WHERE SELECT rb<>1; SELECT * * FROM FROM Artikl Artikl WHERE WHERE SELECT * FROM Artikl WHERE Jednako Nije jednako Vee od Manje od Vee ili jednako Manje jednako Izmeu vrednosti ili dve

SELECT * FROM Artikl WHERE rb BETWEEN 1 AND 5; SELECT * FROM Naziv LIKE 'Artik%'; Artikl WHERE

SIMBOLIK O POREENJE
Univerzalno poreenje

IN

SELECT * FROM Artikl WHERE rb IN (1,3,5);

- 105 -

Dodatna objanjenja:

Simboliko poreenje Klauzula LIKE omoguuje pretraivanje na osnovu "UZORKA" odnosno dobijanje informacija i kada ne znamo potpun naziv (tj. vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna karaktera ("%","_") sa sledeim znaenjem: "%" predstavlja string od 0 ili vie karaktera "__" predstavlja poziciju jednog karaktera. Ostali karakteri imaju ucbiajeno znaenje. Uslov u WHERE klauzuli navedenog upita kae da IME treba da lii na uzorak naveden u jednostrukim navodnicima.

Primeri:

... gde se ime zavrava sa N. WHERE IME LIKE '%N' ... gde je trei karakter imena R. WHERE IME LIKE 'R%' ... gde je ime dugako 5 karaktera WHERE IME LIKE ' ' ... gde ime nije dugako 5 karaktera. WHERE IME NOT LIKE '__' ... gde je u imenu slovo G posle R. WHERE IME LIKE '%R%G%'

Univerzalno poreenje IN koristimo da prikaemo zapise koje pripadaju skupu vrednosti (ovo je zamena za vie OR klauzula)

- 106 -

Klauzula WHERE nije ograniena na postavljanje samo jednog uslova (to se moe primetiti ve kod parametra IN). Vie uslova se moe kombinovati pomou logikih operatora AND i OR:
SELECT * FROM Artikl WHERE ( (rb>1 AND rb<3) OR (rb>3 AND rb<5) AND Naziv LIKE 'Artik%' );

Ovom naredbom smo dobili rezultat:


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

2 rows in set (0.02 sec)u koji su ukljueni svi zapisi kod kojih parametar rb ima vrednost 2 ili 4 i kod kojih parametar Naziv poinje sa Artik.

- 107 -

6.3.2. Klauzula DISTINCT


Ova klauzula se koristi za eliminisanje duplih zapisa iz prikaza:
SELECT DISTINCT ZemljaPorekla FROM Artikl;

Rezultat ove komande:


+---------------+ | ZemljaPorekla | +---------------+ | Germany | | Srbija | | USA | | Switzerland | | France | | Dansk | +---------------+

6 rows in set (0.00 sec) sadri listu svih zemalja iz kojih artikli potiu ali bez ponavljanja.

- 108 -

6.3.3. Klauzula LIMIT


Ova klauzula se koristi za ograniavanje broja zapisa koji ulaze u rezultat bez obzira da li su ispunili eventualni uslov. Parametar LIMIT moe imati jedan ili dva naknadna parametra (prvi koji definie koliko prvih zapisa treba preskoiti i drugi koji definie koliko zapisa treba prikazati). Ukoliko se zada samo jedan parametar on se odnosi na broj zapisa koje treba prikazati poev od prvog zapisa. Naredba sa jednim parametrom:
SELECT * FROM Artikl LIMIT 5;

vraa prvih 5 zapisa:


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

dok ista naredba sa dva parametra:


SELECT * FROM Artikl LIMIT 5,10;

vraa zapise od 6. do 15.:


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

- 109 -

6.3.4. Klauzule GROUP BY / HAVING


Klauzula GROUP BY se koristi za grupisanje podataka koji se dobijaju kao rezultat upita, a klauzula HAVING se koristi za selekciju odreenih grupa koje su ve kreirane GROUP BY klauzulom.
SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla;

Korienjem naredbe u ovakvom obliku kao rezultat dobiemo spisak svih zemalja i broj artikala koji potie iz koje zemlje.
+---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Germany | 2 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 6 rows in set (0.02 sec)

Ukoliko elimo da iz rezultata prikaemo samo podatke koji ispunjavaju odreeni kriterijum, to e mo uraditi uz pomo klauzule HAVING, na sledei nain:
SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla HAVING COUNT(*)=1;

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

- 110 -

6.4. Izmena podataka


Funkcija izmene podataka u bazi putem SUBP-a se odnosi na izmenu podataka u nekoj (jednoj ili vie) od tabela u bazi podataka. Mogue je izmeniti jedan ili vie parametara (kolona) jednog ili vie zapisa (reda). Izmena podataka se u SQL jeziku vri pomou naredbe UPDATE.
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

Slika 7.3 Dokumentovana struktura naredbe UPDATE za jednu tabelu


UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition]

Slika 7.4 Dokumentovana struktura naredbe UPDATE za vie tabela Osnovni oblik komande UPDATE izgleda ovako:
UPDATE Artikl SET Cena=1000.00;

i njome su je vrednost svih vrednosti u koloni Cena postavljena na 1000.00. Ukoliko elimo da izmenu primenimo samo na odreene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):
UPDATE Artikl SET Cena=1000.00 WHERE ZemljaPorekla='Germany';

- 111 -

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

Ukoliko elimo da vie parametara (kolona) izmenimo jednim upitom, naveemo vie kolona i vrednosti odvojenih zarezom:
UPDATE Artikl SET Cena=2000.00, Kolicina=46 WHERE ZemljaPorekla='Germany';
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)

Ukoliko elimo da u za vrednost koristimo ve postojeu vrednost u nekoj od kolona za vrednost emo navesti kolonu zapisa iju vrednost elimo da primenimo:
UPDATE Artikl SET Kolicina=Cena WHERE ZemljaPorekla='Germany';
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)

- 112 -

Ukoliko elimo da u za vrednost koristimo ve postojeu vrednost uz primenu matematike operacije:


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

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

- 113 -

Parametar LIMIT (videti deo 4.3.3) slui za ograniavanje broja kolona na koje emo primeniti izmenu:
UPDATE Artikl SET Cena=100 LIMIT 3;
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 100 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 100 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 100 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 400 | 390 | France | | 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)

- 114 -

6.5. Uklanjanje podataka


Funkcija uklanjanja podataka u bazi putem SUBP-a se odnosi na uklanjanje podataka iz neke (jedne ili vie) od tabela u bazi podataka. Mogue je ukloniti samo kompletne redove tabela (uklanjanje vrednosti parametara zapisa se vri pomou naredbe UPDATE). Uklanjanje podataka se u SQL jeziku vri pomou naredbe DELETE.
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu Osnovni oblik komande DELETE izgleda ovako:
DELETE FROM Artikl;

i njome su uklonjeni svi zapisi iz tabele Artikl. Ukoliko elimo da uklanjenje ograniimo samo na odreene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):
DELETE FROM Artikl WHERE ZemljaPorekla='Germany';

Parametar LIMIT (videti deo 4.3.3) slui za ograniavanje broja kolona na koje emo primeniti uklanjanje:
DELETE FROM Artikl LIMIT 10;

- 115 -

7. DCL (Data Control Language)


Osim manipulacije podacima (DML), jedna od bitnih karakteristika SUBPa je kontrola podataka (DCL), pre svega kontrola pristupa podacima. Kontrola pristupa podacima obino podrazumeva mogunost kreiranja vie korisnikih profila (naloga) sa odreenim pristupnim podacima (korisniko ime i lozinka) i pridruenim privilegijama. Neki SUBP imaju mogunost povezivanja internih korisnikih naloga i privilegija sa nekim spoljnim sistemom za proveru autentinosti korisnika (npr. povezivanje sa sistemskim nalozima, Active Directory-jem i sl.). MySql SUBP poseduje interni sistem korisnikih naloga (sa parametrima: korisniko ime, lozinka, mrena lokacija klijenta) sa privilegijama (izlistani u tabeli 5.1) na nivou jedne ili vie baza, tabela i/ili kolona. Podaci vezani za korisnike naloge i privilegije su skladiteni u sistemskoj bazi "mysql". Osnovne naredbe za rad sa korisnikim nalozima:

CREATE USER RENAME USER DROP USER SET PASSWORD

Kreiranje novih korisnikih naloga nije neophodno zasebno obaviti pre izmene privilegija ve se novi nalog (ili nova varijanta postojeeg naloga) moe kreirati samom dodelom privilegija. Prve tri naredbe su dostupne poev od verzije MySql-a 5.0 sa odreenim izmenama u verziji 5.0.2. Osnovne naredbe za rad sa privilegijama su:

GRANT REVOKE FLUSH PRIVILEGES

- 116 -

7.1. Naredba CREATE USER


Naredba CREATE USER slui za kreiranje novih korisnikih naloga na SUBP. Pravo na korienje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju INSERT privilegiju za sistemsku mysql bazu podataka.
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

Slika 8.1 Dokumentovana struktura naredbe CREATE USER Osnovni oblik korienja ove naredbe je:
CREATE USER 'korisnik';

Ukoliko elimo da korisnikom nalogu pridruimo i hostname raunara sa koga je dozvoljen pristup, naredba je:
CREATE USER 'korisnik@racunar1.mreza.edu';

Ukoliko elimo da korisnikom nalogu pridruimo i lozinku, naredba je:


CREATE USER 'korisnik' IDENTIFIED BY 'lozinka';

Ukoliko elimo da istovremeno kreiramo vie korisnikih naloga, naredba je:


CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1', 'korisnik2' IDENTIFIED BY 'lozinka2';

- 117 -

7.2. Naredba RENAME USER


Naredba RENAME USER slui za izmenu postojeih korisnikih naloga na SUBP. Pravo na korienje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju UPDATE privilegiju za sistemsku mysql bazu podataka.
RENAME USER old_user TO new_user [, old_user TO new_user] ...

Slika 8.2 Dokumentovana struktura naredbe RENAME USER Osnovni oblik korienja ove naredbe je:
RENAME USER 'korisnik1' TO 'korisnik2';

- 118 -

7.3. Naredba DROP USER


Naredba DROP USER slui za izmenu postojeih korisnikih naloga na SUBP. Pravo na korienje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju DELETE privilegiju za sistemsku mysql bazu podataka.
DROP USER user [, user] ...

Slika 8.3 Dokumentovana struktura naredbe DROP USER Osnovni oblik korienja ove naredbe je:
DROP USER 'korisnik1';

Ukoliko elimo da istovremeno uklonimo vie korisnikih naloga, naredba je:


DROP USER 'korisnik1', 'korisnik2';

- 119 -

7.4. Naredba SET PASSWORD


Naredba SET PASSWORD slui za promenu pristupne lozinke postojeih korisnikih naloga na SUBP. Ovom naredbom je mogue promeniti lozinku za sopstveni nalog kao i lozinku za ostale korisnike naloge ukoliko aktivni korisniki nalog ima UPDATE privilegiju za sistemsku mysql bazu podataka.
SET PASSWORD [FOR user] = PASSWORD('some password')

Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD Osnovni oblik korienja ove naredbe je:
SET PASSWORD = PASSWORD('nova lozinka');

Ukoliko elimo da promenimo lozinku za tui korisniki nalog, naredba je:


SET PASSWORD FOR 'korisnik2' = PASSWORD('nova lozinka');

- 120 -

7.5. Dodela privilegija (GRANT)


Naredba GRANT omoguava administratorima SUBP-a da odreenom korikom nalogu dodele odreene privliegije nad odreenim objektima baze podataka. S obzirom na to da ukoliko se privilegije dodeljuju nalogu koji ne postoji na SUBP on se automatski kreira, ovom naredbom je mogue i kreirati nove korisnike naloge. Za korienje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je mogue dodeliti privilegije iz skupa privilegija koje su dodeljene aktivnom korisnikom nalogu. GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE NONE | [{SSL| X509}] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option] ...] object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count Slika 8.5 Dokumentovana struktura naredbe GRANT
- 121 -

Osnovna dodela privilegija se vri naredbom:


GRANT ALL ON database_name.table_name TO 'korisnik@hostname' IDENTIFIED BY 'lozinka';

Dodela privilegija na globalnom nivou (svim objektima - bazama, tabelama, kolonama -u SUBP) se vri naredbom:
GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY 'lozinka'

Dodela privilegija na globalnom nivou baze podataka se vri naredbom:


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

Dodela privilegija na globalnom nivou tabele u bazi se vri naredbom:


GRANT ALL ON db_name.table_name TO 'korisnik' IDENTIFIED BY 'lozinka'

Takoe, mogua je (mada se retko koristi) dodela privilegija i na nivou kolone u tabeli kao i rutine.

- 122 -

Privilegije ALL [PRIVILEGES] ALTER CREATE CREATE TEMPORARY TABLES CREATE VIEW DELETE DROP EXECUTE FILE INDEX INSERT LOCK TABLES PROCESS REFERENCES RELOAD REPLICATION CLIENT REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW SHUTDOWN SUPER UPDATE USAGE GRANT OPTION

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

Tabela 8.1 Mogue vrednosti za dodelu odnosno oduzimanje privilegija

- 123 -

7.6. Oduzimanje privilegija (REVOKE)


Naredba REVOKE omoguava administratorima SUBP-a da odreenom korikom nalogu oduzmu odreene privliegije nad odreenim objektima baze podataka. Za korienje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je mogue oduzeti privilegije iz skupa privilegija koje su dodeljene aktivnom korisnikom nalogu.

REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ...
Slika 8.6 Dokumentovana struktura naredbe REVOKE Osnovno oduzimanje privilegija se vri naredbom:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';

- 124 -

7.7. Primena izmena (FLUSH)


Naredba FLUSH slui za ponovo uitavanje parametara sistema koji se nalaze keirani u memoriji. Za izvravanje ove naredbe potrebno je imati RELOAD privilegiju.

FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_option [, flush_option] ...


Slika 8.7 Dokumentovana struktura naredbe FLUSH Flush_option:
HOSTS DES_KEY_FILE LOGS MASTER PRIVILEGES QUERY CACHE SLAVE STATUS USER_RESOURCES

Objanjenje:
Pranjenje kea host tabele Ponovno uitavanje DES kljua Zatvaranje i otvaranje svih log fajlova Brisanje i ponovno kreiranje svih log fajlova Ponovno uitavanje svih privilegija iz GRANT tabele Defragmentacija keiranih upita Resetovanje parametara svih replikacija sekundardnih

Resetovanje svih statusnih promenljivu na 0 Resetovanje svih resursa iz prethodnih sati na 0

Tabela 8.2 Mogue vrednosti za flash_option parametar

- 125 -

8. Zadaci za vebu DML


1. Uneti podatke iz sledee tabele u tabelu Dobavljac:
+----+------------+------------------+-----------+ | rb | Naziv | Adresa | Telefon | +----+------------+------------------+-----------+ | 1 | Dobavljac1 | Beogradska 5 | 64123456 | | 2 | Dobavljac2 | Bac49 | 11256782 | | 3 | Dobavljac3 | Uzicka 42 | 62564778 | | 4 | Dobavljac4 | Knez Mihajlova 2 | 112345812 | | 5 | Dobavljac5 | Nehruova 62b | 637469923 | +----+------------+------------------+-----------+ 5 rows in set (0.00 sec)

2.

Uneti podatke iz sledee tabele u tabelu Magacin:


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

3. Prikazati sve podatke sa svim poljima iz tabele Magacin 4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac 5. Prikazati sve podatke iz tabele Dobavljac u sledeem redosledu polja:Naziv, Rb, Telefon, Adresa 6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet po opadajuem redosledu 7.Prikazati iz tabele Dobavljac sledea polja: Rb, Adresa, Telefon, za dobavljaa koji se nalazi u Dalmatinskoj 43 8. Prikazati iz tabele Magacin prva etiri zapisa
- 126 -

9.Prikazati iz tabele Dobavljac zapise od 2 do 4 10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude 2000 11.Izmeniti tabelu Magacin tako da polje Kapacitet bude 500 za magacin koji se nalazi u Francuskoj 6 12.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude bude poveano za 30 % 13.Izmeniti tabelu Magacin tako da polje Kapacitet bude umanjeno za 20 % prva dva zapisa 14.Izmeniti tabelu Magacin tako da polje Kapacitet bude poveano za 50 jedinica kod magacina sa rednim brojem 2, 3 i 4 15.Ukloniti poslednji zapis iz tabele Dobavljac 16.Ukloniti sve zapise iz tabele Magacin

- 127 -

9. DODATAK
9.1. Izrazi i funkcije
Pored prikazivanja prostih vrednosti memorisanih u tabelama baze podataka, SQL ima vie funkcija koje mogu biti koriene za dobijanje sumarnih informacija, kao i mogunost primene aritmetikih funkcija i funkcija nad stringovima (nizovima karaktera). Aritmetike funkcije Funkcije za dobijanje sumarn.ih informacija su: AVG (atribut) SUM (atribut) MIN (atribut) MAX (atribut) - izraunava srednju vrednost - izraunava ukupnu vrednost - nalazi minimalnu vrednost - nalazi maksimalnu vrednost

Ove funkcijesu definisane nad numerikim kolonama. Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva oblika: COUNT (*) - nalazi broj n-torki u grupi COUNT (atribut) - nalazi NOT-NULL vrednosti kolone Funkcije nad nizom karaktera U SQL-u su definisane brojne funkcije nad kolonama tipa character. Najee se primenjuju sledee: stringi || string2 LENGTH (string) UPPER (str) LOWER (str) TO_NUM (str) TO_CHAR (str) - spaja stringove karaktera - nalazi duinu stringa - menja sva mala slova u velika - menja sva velika slova u mala - pretvara niz karaktera (numerikih) u broj - pretvara broj u niz karaktera

- 128 -

SQL podrava sledee aritmetike funkcije: POWER (broj. e) - die broj na e-ti stepen ROUND (broj [.d]) - zaokruuje broj na d decimala TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta ABS (broj) - naiazi apsolutnu vrednos; broja SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0, -1 ako je broj <0. MOD (broji, broj2) - izraunava broji moduo broj2 SQRT (broj) - nalazi pozitivan kvadratni koren broja

- 129 -

10. DB Desinger 4.0


Ovo je program koji se koristi za grafiko predstavljanje elemenata baze podataka (tabela i veza izmedju tabela). Ovaj program je potpuno besplatan ali je prekinuto sa njegovim razvojem i taj posao je preuzeo tim koji je razvio i MySQL SUBP. Startovanje ovog programa je klasino kao i za bilo koji drugi Windows program Start meni, pa zatim Programs, pa onda fabForce pa na kraju DBDesigner 4. Posle ovoga e se na ekranu pojaviti prozor kao na slici:

Slika 11.1 Poetni prozor DBDesigner-a Ovo je poetni prozor koji se pojavljuje odmah posle startovanja ovog programa. Na njemu moete videti da je ovo program koji lii na mnoge druge programe za windows to jest ima klasian sistem menija (na primer: meni File se koristi kao i u ostalim programima za otvaranje postojeeg Open ili uvanje Save projekta, kao i New za kreiranje novog praznog projekta) kao i neki meniji koji su specifini za ovakav program.
- 130 -

Ukoliko ste prvi put startovali program automatski je otvoren novi projekat na kome moete raditi i kasnije ga sauvati, a ukoliko ste ve radili u ovom programu izaberite iz menije File opciju New posle ega moete poeti da radite na projektu. Da bi ste poeli da radite na kreiranju grafike predstave vae baze podataka prvo je potrebno kreirati novu regiju u kojoj e se nalaziti elementi vae baze podataka. To e te uraditi tako to e te izabrati opciju New Region koja se nalazi uz levu ivicu prozora programa, pogledajte sledeu sliku:

Slika 11.2 Kreiranje nove regije

- 131 -

Posle izbora ove opcije kao to moete proitati na prethodnoj slici potrebno je u glavnom prozoru programa nacrtati eljenju regiju upotrebom levog tastera mia, kao na sledeoj slici:

Slika 11.3 Roze bojom oznaena je nova regija Kao to moete videti na slici, kreirana je nova regija za vau bazu podataka. Po podrazumevanoj vrednosti program je regiji dao ime Region_01 a vi to moete promeniti tako to e te kliknuti desnim klikom negde na regiji i zatim iz menija izabrati opciju Edit Object posle ega e se na ekranu pojaviti prozor kao na slici:

- 132 -

Slika 11.4 Promena imena regije Kao to moete videti na slici u polje Regionname moete upisati novo ime za regiju, upiite na primer Regija1 i bie promenjeno ime regiji. Ovde je takodje mogue promeniti i boju za odreenu regiju a podrazumevana je crvena (Red), ukoliko to elite da promenite moete kliknuti na strelicu pored i izabrati neku drugu boju.

- 133 -

Posle kreiranja regije moete pristupiti kreiranju elemenata vae baze podataka. Za poetak e te kreirati prvu tabelu. Da bi ste to uradili potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije New Region koju ste ve ranije koristili, pogledajte sledeu sliku:

Slika 11.5 Kreiaranje nove tabele Posle izbora ove opcije potrebno je kliknuti levim tasterom mia negde na ve kreiranu regiju posle ega e se pojaviti tabela kao na slici:

Slika 11.5 Prva tabela je kreirana u regiji


- 134 -

Kao to moete videti na slici kreirana je prva tabela u vaoj regiji. Program je automatski dao ime tabeli ime Table_01 a vi to moete odmah promeniti tako to e kliknuti dva puta na tabelu ili tako to e te kliknuti desnim klikom na tabelu pa zatim iz padajueg menija izabrati Edit Object posle ega e se pojaviti prozor kao na slici:

Slika 11.6 Dijalog za Izmenu svojstava tabele Kao to motete videti na slici ovde moete promeniti ime tabeli tako to e te u polje Table Name ukucati eljeno ime. U naem sluaju prva tabela e se zvati Artikl pa to unesite u ovo polje. Ovaj dijalog se ne koristi samo za izmenu imena tabele ve i svih njenih svojstava. Ovde se dodaju ili menjaju polja u tabelu, podeavaju svojstva odreenih polja, postavljaju ili uklanjaju kljuevi za izabranu tabelu. Ono to je ovde potrebo uraditi poto je ovo prazna tabela jeste kreirati odreena polja za izabranu tabelu.

- 135 -

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

Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu Kao to moete videti na slici, za polje rb je postavljen atribut DataType automatski na INTEGER, ukoliko elite ovo da promenite kliknite na strelicu pored posle ega e se pojaviti izlistane mogue vrednosti za ovo polje gde je potrebno izabrati eljenu vrednost, pogledajte sledeu sliku:

- 136 -

Slika 11.8 Promena tipa polja za izabranu kolonu (polje) U ovoj listi moete izabrati tip polja koji vam je potreban, u ovom sluaju je potrebno da ovo polje bude integer pa e te ga tako i postaviti. Na slici moete primetiti i mali uti klju koji se nalazi u koloni Column Name ispred imena kolone. Ovo je oznaka da je ovo primarni klju a DBDesigner je automatski postavio ovaj atribut koji kasnije moete ukloniti ukoliko elite da promenite primarni klju, takoe moete primetiti u donjem delu da stoje informacije o primarnom kljuu u delu Indices.

- 137 -

Na prethodno opisan nain kreirajte i sledee kolone sa tipom polja kao na sledeoj slici:

Slika 11.9 Tabela Artikl Na isti nain kao to se kreirali tabelu Artikl kreirati i ostale tabele sa odgovarajuim poljima kao to se moe videti na sledeoj slici:

Slika 11.10 Sve tabele koje je potrebno kreirati


- 138 -

Sada se u bazi podataka nalaze sve tabele koje su vam potrebne za dalji rad. Kao to se na slici moe videti tabele nisu medjusobno povezane, a kao to je poznato bazu podataka ini vie medjusobno povezanih tabela. Sada je potrebno povezati tabele neim to je poznato kao relacija odnosno veza. Ovde je potrebno rei da postoji vie tipova relacija I to 1:1, 1:m I m:n. Relacija tipa 1:1 znai da svakom zapisu u prvoj tabeli odgovara jedan I samo jedan zapis u drugoj tabeli. Relacija tipa 1:m znai da svakom zapisu u prvoj tabeli odgovara jedan ili vie zapisa u drugoj tabeli. I na kraju relacija tipa m:n je takav tip relacije gde za vie zapisa u prvoj tabeli moe postojati I vie zapisa u drugoj tabeli. Prva dva tipa relacia je lako napraviti dok je za treu potrebno kreirati veznu tabelu koja sadri primarne kljueve prve I druge tabele. Kreiranje relacije tipa 1:1 Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:1 Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.

Slika 11.11 Kreiranje relacije 1:1

- 139 -

Kreiranje relacije tipa 1:n Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.

Slika 11.12 Kreiranje relacije 1:n Kreiraemo dve relacije na ovaj nain. Prva relacije je izmedju tabela Magacin i Artikl. Da bi kreirali ovu relaciju izabraemo opciju koja je na prethodnoj slici a zatim kliknuti na tabelu Magacin pa onda na tabelu Artikl posle ega e se pojaviti relacija kao na slici:

Slika 11.13 Prva relacija je kreirana

- 140 -

Ako pogledate sliku moete videti da je relacija uspostavljena, pored toga automatski je SUBP postavio njeno ime na Rel_01 i formirao neophodan strani klju u tabeli Artikl pod imenom Artikl_FKIndex1. Ukoliko elite da izmenite svojstva relacije kliknite desnim klikom mia na nju i iz padajueg menija izaberite Edit Object posle ega e se pojaviti prozor kao na slici:

Slika 11.15 Izmena svojstava relacije

- 141 -

Ovde je mogue postaviti novo ime za relaciju umesto podrazumevanog, tako to e te u polje Relation Name uneti Relacija1 posle ega e ime biti promenjeno. Ovde je takoe mogue promeniti i tip relacije u listi koja se dobija levim klikom mia na strelicu u polju Relation Kind, kao i to da li e relacija biti vidljiva ili ne Visible. Druga relacija tipa 1:n je izmedju tabela Artikl i Kupac i nju e te kreirati na isti nain kao i prethodnu. Posle izbora opcije New 1:n NonIdentifyng-Relation potrebno je prvo kliknuti levim tasterom mia na tabelu Artikal pa onda na tabelu Kupac posle ega e relacija biti kreirana kao i spoljni klju (FK) u drugoj tabeli, ovo je ilustrovano sledeom slikom:

Slika 11.16 Druga relacija je kreirana

- 142 -

Kao to moete videti relacija je kreirana, pored toga automatski je SUBP postavio njeno ime na Rel_02 i formirao neophodan strani klju u tabeli Kupac pod imenom Kupac_FKIndex1. Ukoliko elite da izmenite svojstva relacije kliknite desnim klikom mia na nju i iz padajueg menija izaberite Edit Object i promeniti njeno ime u Relacija2. Kreiranje relacije tipa n:m Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New n:m Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.

Slika 11.17 Kreiranje relacije n:m

- 143 -

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

Slika 11.18 Trea relacija je kreirana Kao to moete videti na slici relacija je kreirana, ali poto je ovo relacija n:m kreirana je i nova tabela (vezna tabela), koja je ve ranije pomenuta u tekstu o tipovima relacija. Ova tabela sadri dva polja Dobavljac_rb i Artikl_rb. Ako pogledate tabele Dobavljac i Artikl moete primetiti da su to kopije primarnih kljueva ove dve tabele. SUBP je automatski kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl to je vrlo lako uoiti zato, naravno zbog toga to je ovo vezna tabela koja spaja ove dve tabele. Takoe automatski su kreirane i dve relacije i dodeljena

- 144 -

im imena Rel_03 i Rel_04. Na nain koji je objanjen ranije promenite imena ovih relacija u Relacija3 i Relacija4. Sada je potrebno promeniti i neka svojstva vezne tabele. Poto je ovde u pitanju tabela kao i svaka druga bez obzira to ona u ovoj relaciji slui kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz padajueg menija izabrati Edit Object, posle ega e se na ekranu pojaviti prozor kao na sledeoj slici:

Slika 11.19 Izmena svojstava vezne tabele U polje Table Name upiite Dobavlja_Artikl da bi promenili ime vezne tabele, zatim u polju za rad sa kljuevima u delu prozora Indices dva puta kliknite levim tasterom na klju Dobavljac_Has_Artikl_FKIndex1 i na ekranu e se pojaviti prozor kao na slici:

- 145 -

Slika 11.20 Promena imena kljua U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1 da bi promenili ime prvog kljua, isti postupak ponovite ponovo i promenite ime kljua Dobavljac_has_Artikl_FKIndex2 u Dobavljac_Artikl_FKIndex2. Ako ste sve uradili kako treba konana grafika prezentacija ove baze podataka izgledae kao na sledeoj slici:

Slika 11.21 Konana shema BP


- 146 -

I na kraju, sada kada imamo kompletnu bazu podataka grafiki predstavljenu, kao to se moe videti na prethodnoj slici, koja se sastoji od 5 tabela koje su medjusobno povezane, mogue je direktno ovakvu grafiku predstavu uz pomo DBDesigner-a automatski prevesti u SQL naredbe. Da bi to uradili potrebno je prvo konektovati se na odreenu bazu podataka koja je prethodno kreirana u MySQL-u, a to se radi uz pomo menija Database koji moete pogledati kako izgleda na sledeoj slici:

Slika 11.22 Database meni Da bi se konektovali na odreenu bazu potrebno je iz prethodnog menija izabrati Connect to Database, posle ega e se pojaviti prozor kao na slici:

Slika 11.23 Konektovanje na postojeu MySQL bazu podataka

- 147 -

Ovde je ve kreirana konekcija na bazu podataka koja se zove test. Ukoliko elite da uspostavite konekciju sa ovom bazom potrebno je samo da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle ega e se pojaviti prozor gde e se od vas traiti da unesete User Name i Password. U sluaju da elite da kreirate novu konekciju potrebno je da izaberete opciju New Database Connection posle ega e se na ekranu pojaviti prozor kao na sledeoj slici:

Slika 11.24 Kreiranje nove konekcije Kao to vidite na slici, potrebno je zadati u polju Connection Name ime za novu konekciju koju elite da kreirate, zatim u polje Driver je potrebno izabrati tip drajvera koji e se koristiti (ovde moete koristiti ili MySQL drajver koji ne radi ba najbolje ili jo bolje klasian ODBC drajver, s tim to je u tom sluaju potrebno u Control Panel-u konfigurisati ODBC). U polju Hostname treba da stoji localhost ukoliko je baza na istom raunaru kao i klijent ili odreeni IP broj ukoliko je u pitanju baza na drugom raunaru. Potrebno je u polju Database Name
- 148 -

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

Slika 11.25 Sinhronizacija sa bazom podataka

- 149 -

Kao to se moe videti na slici DBDesigner e na ovaj nain kreirati pet tabela i dodati ih na postojeih 23 koliko ih ve ima u bazi podataka (ovo e se razlikovati u zavisnosti od toga na koju bazu ste bili konektovani pre poziva ove opcije). Sve to je potrebno uraditi da bi se izvrila sinhronizacija sa izabranom bazom podataka jesti kliknuti na opciju Execute posle ega e se izvriti potrebne SQL naredbe automatski i na taj nain kreirati odreene elemente, ili ukoliko oni ve postoje, izmeniti ih ukoliko je to potrebno.

- 150 -

You might also like