159
FAKULTET ZA POSLOVNU INFORMATIKU Prof. dr Mladen Veinović Igor Franc Aleksandar Jevremović BAZE PODATAKA - PRAKTIKUM - Prvo izdanje Beograd 2006.

Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

  • Upload
    others

  • View
    5

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

FAKULTET ZA POSLOVNU INFORMATIKU

Prof. dr Mladen Veinović Igor Franc

Aleksandar Jevremović

BAZE PODATAKA

- PRAKTIKUM -

Prvo izdanje

Beograd 2006.

Page 2: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

Autori: Prof. dr Mladen Veinović Igor Franc Aleksandar Jevremović Recenzent: Prof. dr Milan Milosavljević Izdavač: UNIVERZITET SINGIDUNUM FAKULTET ZA POSLOVNU INFORMATIKU Za izdavača: Prof. dr Milovan Stanišić Dizajn korica: Aleksandar Mihajlović Goran Latinović Godina izdanja: 2006. Tiraž: 250 primeraka Štampa: CICERO-print Beograd

Page 3: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

SADRŽAJ:

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

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

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

1.3. Klasičan sistem zasnovan na datotekama ............................... - 12 - 1.3.1. Nedostaci sistema zasnovanog na datotekama ............................................ - 14 -

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

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

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

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

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

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

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

Page 4: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 - 1.10.3. Konkurentno izvršavanje transakcija ........................................................ - 55 -

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

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

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

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

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

3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MYSQL-A ................................................................................ - 63 -

3.1. Proces isntalacije ....................................................................... - 63 -

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

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

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

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

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

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

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

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

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

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

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

Page 5: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

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 -

Page 6: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

7.2. Naredba RENAME USER ...................................................... - 118 -

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

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

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

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

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

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

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

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

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

Page 7: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo
Page 8: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

PREDGOVOR

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

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

U dodatku su nabrojane i objašnjene pojedine funkcije koje mogu biti veoma korisne u radu sa ovim sistemima za upravljanje bazama podataka.

Autori su se potrudili da primeri budu što jasniji, izloženi po redosledu i da su povezani, tako da kada se redom unose grade kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje modifikacije se može primeniti i u praksi.

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

primedbe na tekst su dobrodošle.

Beograd, oktobar 2006. godine Autori

Page 9: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo
Page 10: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 1 -

1. UVOD U BAZE PODATAKA

1.1. Uvod Baze podataka se koriste za prikupljanje, čuvanje i manipulaciju podacima na osnovu kojih se dobijaju nove informacije u različitim organizacijama, kao što su poslovni sistemi, zdravstvo, školstvo, vladine institucije itd. Svakodnevno ih koriste pojedinci putem ličnih računara, radne grupe putem mrežnih servera i svi zaposleni putem aplikacija koje se nalaze u poslovnim sistemima. Bazama podataka takođe pristupaju kupci i drugi udaljeni korisnici korišćenjem različitih tehnologija kao što su govorni automati, web čitači (browser-i), digitalni telefoni i sl. Zbog velike konkurencije u svim oblastima poslovanja, može se očekivati da tehnologija baza podataka dobije još veći značaj. Menadžeri traže način da iz baze podataka brže dođu do novih saznanja kako bi bili u prednosti u odnosu na svoju konkurenciju. Na primer, detaljna baza podataka o prodaji se može iskoristiti kako bi se saznalo koji kupci kupuju koje proizvode, što se koristi kao osnova za reklamu i marketinšku kampanju. Organizacije mogu da uključe u svoje baze podataka procedure koje se zovu okidači - trigeri (alerts) koji upozoravaju o mogućim vanrednim događajima (kao što su predstojeći nedostatak zaliha neke robe ili šansa za prodaju dodatne količine robe) i na osnovu kojih mogu nastati odgovarajuće reakcije. Mnoge organizacije danas prave posebne baze podataka koje se zovu „skladišta podataka“ (data werehouses) koje služe za aplikacije za podršku u odlučivanju. Izučavanje baza podataka i sistema za upravljanje bazama podataka jesu osnova za izučavanje informacionih sistema. Stručnjak za informacione sisteme mora biti spreman da analizira potrebe preduzeća i da dizajnira i implementira baze podataka u okviru razvoja informacionog sistema jedne organizacije. Takođe, mora biti spreman da se konsultuje sa krajnim korisnicima i da im pokaže kako se korišćenjem baza podataka može imati bolja podrška za odlučivanje, čime se stvara prednost nad konkurencijom. Široko rasprostranjeno korišćenje baza podataka vezanih za Internet sajtove, koji vraćaju dinamičke informacije korisnicima web sajta, zahteva od projektanta da razume ne samo kako da poveže bazu

Page 11: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 2 -

podataka sa sajtom već i kako da je obezbedi tako da se njenom sadržaju može pristupiti ali ne i izmeniti od strane spoljnih korisnika. Postoji puno načina kako se može definisati baza podataka. U osnovi to je skup podataka koji su organizovani prema potrebama korisnika, koji se održavaju i koji se koriste za dobijanje informacija. Moderne baze podataka se čuvaju na računaru, ali to nije bitno za samu definiciju. Na primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima, telefonski imenik itd. su takođe baze podataka (mada ih većina ljudi tako ne zove). Međutim, smeštanje baze podataka na računar omogućava lakšu i bržu obradu podataka i dobijanje željene informacije. Karakterističan je primer sa telefonskim imenikom koji se nalazi na papiru. Jednostavno je pronaći telefonski broj željene osobe, ali je znatno teže pronaći ime osobe na osnovu telefonskog broja. Ako je telefonski imenik veći (više smeštenih podataka) prethodni problem se dodatno usložnjava. Računarski zasnovane baze podataka omogućavaju jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz odgovarajuće baze podataka se mogu dobiti i posebne informacije. Na primeru telefonskog imenika mogu se izlistati podaci za sve osobe po imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj počinje npr. sa 2, osobe kojima se telefonski broj završava sa 45 i još mnogo toga. Na razvoj baza podataka presudno je uticao razvoj računara, računarskih mreža, kao i klijent/server obrade. Istraživanje, projektovanje i upotreba baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao što su: smanjeni troškovi održavanja; smanjena potreba za mrežnim resursima; poboljšan integritet podataka; donošenje ispravnih odluka na osnovu objektivnih informacija, brža reakcija na tržištu, itd. Baza podataka smeštena u računaru, predstavljena je nizom bita, organizovanih u bajtove, a sa više bajtova u odgovarajućem formatu zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze podataka. Niz polja se organizuje u zapise (rekorde) koji imaju značenje jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke veze izmedju objekata realnog sveta. Zapisi istog formata se slažu i čine datoteke, koje su fizički zapisane na disku. Baza podataka obuhvata više povezanih datoteka i može biti centralizovana na jednom računaru ili distribuirana na više međusobno udaljenih računara. Pored podataka koji su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju

Page 12: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 3 -

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

Slika 1.1 Baze podataka nekada i danas

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

Page 13: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 4 -

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

Page 14: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 5 -

1.2.1. Podatak Istorijski, pod terminom podatak se podrazumeva činjenica o nekom predmetu i/ili događaju koja se može zabeležiti i sačuvati na računaru. Na primer, u bazi podataka nekog prodavca podaci bi bile činjenice kao što su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove struktuirani podatak. Najvažniji struktuirani podaci su brojevi, karakteri i datumi (vreme). Današnje baze podataka pored struktuiranih podataka sadrže i druge vrste podataka kao što su razna dokumenta, mape, fotografije, zvuk, čak i video zapise. Na primer, u bazi podataka nekog prodavca mogla bi se naći i slika kupca. Takođe bi se mogao naći zvučni ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni podaci se najčešće mogu naći na web serverima i u Internet bazama podataka. Danas se podatak definiše kao sačuvana reprezentacija predmeta i/ili događaja koja ima smisla i važnosti za korisnika baze podataka. Ova definicija uključuje i struktuirane i nestruktuirane podatke. Često se u okviru jedne baze podataka mogu naći kombinovani struktuirani i nestruktuirani podaci kako bi se stvorilo multimedijalno okruženje. Na primer, automehaničarska radnja može kombinovati struktuirane podatke (koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika automobila i skenirana kopija osiguranja). Pod podatkom se podrazumeva činjenica prihvaćena kao takva tj. kakva jeste. Podatak sam po sebi nema značenje, tek kada se interpretira nekom vrstom sistema za obradu podataka poprima značenje i postaje informacija. Tipično, termin “podatak” se odnosi na ono što je u bazi podatak. Dakle, podatak je sirova činjenica - neobrađena informacija. Računar vrši obradu podataka, prema zadatom programu, te se na osnovu saznanja sadržanih u podacima, a kao rezultat njihove obrade, stiču nova saznanja - informacije.

Page 15: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 6 -

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

Petar Petrović 1506983710325

Marko Marković 0211979850123

Janko Janković 1112985830456

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

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

Ime i prezime JMBG Smer Godina upisa

Petar Petrović 1506983710325 PP 2002

Marko Marković 0211979850123 RGD 2001

Janko Janković 1112985830456 PP 2001

- - - - - - - - - - - - - - - - - - - - - - RGD 2003

Page 16: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 7 -

Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu

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

Page 17: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 8 -

Broj upisanih studenata po školama

Gimnazija; 58

Tehnička škola; 79

Ekonomska škola; 45

Ostali; 63GimnazijaTehnička školaEkonomska školaOstali

Broj upisanih studenata po godinama

30

76

125

198

245

0

50

100

150

200

250

300

2001 2002 2003 2004 2005

Broj upisanih studenata

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

Podaci obrađeni tako da dobijaju značenje čine informaciju. Informacija koja je precizna, relevantna, i dobijena na vreme je ključ za donošenje dobre odluke.

Page 18: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 9 -

Slika 1.4 Obradom prikupljenih podataka nastaje informacija

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

Tabela 1.1 Primer metapodataka

Naziv Tip Duž. Min Max Opis Izvor

Ime Text 30 Ime i prezime studenta

Lična karta

JMBG Integer 1 Jedinstven matični broj

Lična karta

Smer CHAR 3 Smer na fakultetu

Strudentska služba

GdUpisa Number 2001 Godina upisa Studentska služba

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

Page 19: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 10 -

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

1.2.4. Sistem za upravljanje bazama podataka Sistem za upravljanje bazama podataka (DBMS - Data Base Management System) je softverski sistem koji se koristi za kreiranje, održavanje i manipulisanje podacima, kao i za kontrolu prava pristupa bazi podataka. DBMS omogućava krajnjim korisnicima i programerima da dele podatke, tj. omogućava da se podaci koriste od strane više aplikacija, a ne da svaka aplikacija ima svoju kopiju podatka sačuvanu u posebnim datotekama. DBMS takođe pruža mogućnost kontrole pristupa podacima, osigurava integritet podataka, uspostavlja kontrolu konkurentnosti i vrši oporavak baze podataka. Programeri aplikacija za rad sa bazama podataka ne moraju da poznaju detalje o načinu zapisa baze podataka na disku, ne moraju da formulišu algoritme za efikasan pristup podacima, niti su opterećeni bilo kakvim aspektima oko upravljanja podacima u bazi podataka. Danas je veoma bitan i značajan koncept baze podataka po kome je to, u stvari, zajednički resurs koga istovremeno (konkurentno) koristi veći broj programa, jer se pravi efekti baze podataka ispoljavaju kada se radi u mrežnom okruženju. Posmatrajmo bazu podataka jedne banke u kojoj se nalaze računi građana. Moguće je da se u istom trenutku na šalteru u jednoj ekspozituri podiže novac sa jednog računa i uplaćuje na drugi račun, a da se istovremeno u sasvim drugoj ekspozituri uplaćuje novac na isti taj račun. Pomenuti DBMS je upravo tu da upravlja konkurentnim radom više korisnika i da obezbeđuje sinhronizaciju njihovog rada. Takođe, DBMS ima funkciju da spreči štetne posledice (narušen integritet baze, nekonzistentno stanje baze...) pri promenama (transakcijama) koje se vrše nad bazom podataka u višekorisničkom okruženju. U tu svrhu postoje razne tehnike kao što su tehnika zaključavanja podataka, tehnika vremenskog markiranja itd. Posebno je značajno upravljanje istovremenim (konkurentnim) transakcijama. Tačnost, zaštita i dostupnost baza podataka, kao i korektnost i performanse transakcija koje pristupaja tim bazama su bitni parametri za

Page 20: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 11 -

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

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

Baza podataka – podaci na disku

Baza podataka

Aplikacija X Aplikacija Y

Aplikacija Z

Data Base Management System

Page 21: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 12 -

1.3. Klasičan sistem zasnovan na datotekama Kada su se računari počeli koristiti za obradu podataka, nisu postojale baze podataka. Računari su u to vreme bili znatno slabiji nego današnji personalni računari, zauzimali su čitavu prostoriju i koristili su se skoro isključivo za naučna izračunavanja. Postepeno su računari uvođeni u poslovni svet. Da bi bili od koristi za poslovne aplikacije, računari moraju da skladište, manipulišu, i preuzimaju velike datoteke podataka. Kako su poslovne aplikacije postajale sve kompleksnije, postalo je očigledno da klasični sistemi zasnovani na datotekama imaju veliki broj nedostataka i ograničenja. U većini bitnih poslovnih aplikacija danas se umesto klasičnog sistema zasnovanog na datotekama koriste baze podataka. Klasičan sistem obrade podataka zasnovan na datotekama i programskim jezicima prikazan je blok šemom na sledećoj slici. Programi su direktno povezani sa datotekama, svaki program mora da poznaje detaljan zapis podataka na disku .

Slika 1.6 Klasičan sistem obrade podataka zasnovan na programskim

jezicima i datotekama Da bi objasnili osnovne karakteristike sistema zasnovanog na datotekama, posmatrajmo jednu fabriku sa određenim proizvodnim programom. Pretpostavimo da su nabavljene računarske aplikacije za

Datoteka X1

Datoteka X2

Datoteka X3

Datoteka Y4

Datoteka Y5

Datoteka Z1

Datoteka Z2

Datoteka Z3Datoteke – podaci na disku

Aplikacija X Aplikacija Y

Aplikacija Z

Page 22: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 13 -

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

Slika 1.7 Klasična obrada podataka zasnovana na sistemu datoteka

Page 23: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 14 -

1.3.1. Nedostaci sistema zasnovanog na datotekama Postoji više mana koje su tipične za sistem koji je zasnovan na datotekama i klasičnim programskim jezicima. Ove mane za primer prikazan na slici 1.7 kratko su opisane u nastavku.

• Zavisnost između programa i podataka Opisi datoteka se čuvaju u okviru svakog programa koji pristupa toj datoteci. Na primer, u procesu porudžbine sa slike 1.7 program A pristupa datoteci sa podacima o kupcu. Stoga, ovaj program sadrži detaljan opis datoteke. Kao posledica ovoga, svaka promena koja se napravi u datoteci, a odnosi se na strukturu, momentalno podrazumeva da se mora menjati i opis datoteka u svakom programu koji pristupa tim podacima. Primetite na slici 1.7 da se podaci o kupcima nalaze i u procesu porudžbine i u procesu naplate. Pretpostavimo da se veličina polja "adresa kupca" menja sa 20 karaktera na 30 karaktera. Opis datoteke u svakom programu (možda čak u svih tri) se mora ažurirati. Često je teško i samo lociranje svih programa na koje je uticala ovakva promena. Što je još gore, pri ažuriranju se često prave greške.

• Redudansa podataka Kako se u prikazanom sistemu procesi odvijaju nezavisno jedni od drugih, ponavljanje podataka nije izuzetak već je pravilo. Na primer, na slici 1.7 proces porudžbina ima datoteke sa osnovnim podacima o proizvodima dok proces naplate ima datoteku o cenama proizvoda. Dakle, obe ove datoteke sadrže podatke o istim proizvodima kao što su: cena po jedinici proizvoda, opis proizvoda, i količina u skladištu. Zbog nepotrebnih duplikata potreban je veći prostor za njihovo čuvanje kao i više truda i rada pri njihovom ažuriranju. Neplanirana redudansa podataka može da dovede do gubitka podataka. Na primer, isti podaci mogu se voditi pod različitim imenima atributa u različitim dokumentima, ili obrnuto, isto ime se može koristiti za različite vrste podataka.

Page 24: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 15 -

• Ograničenost deljenja podataka Korišćenjem klasičnog sistema zasnovanog na datotekama, svaki proces ima svoje datoteke i korisnici nemaju šansu da međusobno dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da radnici u računovodstvu imaju pristup samo procesu naplate, dok nemaju pristup procesima porudžbina i plata. Menadžeri su imali velike probleme pri sastavljenju izveštaja za koje su im bili potrebni podaci iz različitih procesa, jer bi se često desilo da su dokumenta nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti podaci sakupili u jedan izveštaj. Takođe, dodatni problem je bio u tome što su se željeni podaci često nalazili u različitim odeljenjima organizacije.

• Dugo vreme za razvoj Sa klasičnim sistemom zasnovanom na datotekama postoji mala šansa za korišćenje prethodnih razvojnih dostiguća. Svaka nova aplikacija zahteva od projektanta da krene od nule. Svaki put je neophodno definisati nove formate i opise podataka i pisati kod za pristup podacima za svaki program. Ovako veliko potrebno vreme za razvoj nije u skladu sa današnjim poslovnim potrebama, gde je svaki minut bitan da bi se postigao uspeh.

• Teško održavanje programa Skup svih prethodno navedenih nedostataka dovodi do preterane potrebe za održavanjem programa. Čak 80% budžeta predviđenog za razvoj sistema zasnovanog na datotekama odlazi na njegovo održavanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj novih aplikacija.

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

Page 25: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 16 -

1.4. Pristup zasnovan na bazama podataka Pristup zasnovan na bazama podataka potencira integraciju i deljenje podataka između svih odeljenja jedne organizacije. Ovaj pristup zahteva potpunu promenu u načinu razmišljanja, počevši od najvišeg nivoa upravljanja. Takva promena načina razmišljanja za većinu organizacija je veoma teška. Da bi objasnili pristup zasnovan na bazama podataka posmatrajmo prethodno razmatrani zastareli informacioni sistem fabrike koji se klasično zasnivao na datotekama. Koncept pristupa razvoju informacionog sistema zasnovanog na bazama podataka prikazan je na slici 1.8. Odmah se može uočiti da podaci koji su prethodno čuvani u više različitih datoteka, sada su integrisani u jedinstvenu bazu podataka. Takođe, metapodaci koji opisuju ove podatke se nalaze zajedno sa njima u bazi podataka. Sistem za upravljanje bazama podataka pruža mogućnost stvaranja različitih pogleda na istu bazu podataka (ili baze podataka) za različite korisnike u organizaciji. DBMS dozvoljava korisnicima da dele, pretražuju, pristupaju i ažuriraju integrisanim podacima.

Slika 1.8 Blok šema informacionog sistema zasnovanog na bazama podataka

Page 26: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 17 -

1.4.1. Prednosti pristupa zasnovanog na bazama podataka Pristup zasnovan na bazama podataka ima mnogo potencionalnih prednosti u odnosu na pristup zasnovan na datotekama. Te potencionalne prednosti su sledeće:

• Nezavisnost između programa i podataka Odvajanje metapodataka od aplikacija koje koriste podatke naziva se nezavisnost podataka. Ova osobina kod baza podataka dozvoljava promenu i prenos podataka organizacije na druge računarske sisteme bez potrebe za promenom programa koji obrađuje ove podatke.

• Minimalna redudansa podataka Cilj pristupa zasnovanog na bazama podataka je da se podaci koji su se u prethodnom pristupu čuvali odvojeno (i više puta su zbog toga ponavljani) sada integrišu u jedinstvenu logičku strukturu. Svaki podatak se nalazi samo na jednom mestu u bazi podataka. Pristup zasnovan na bazama podataka ne uklanja redudansu u potpunosti, ali omogućava projektantu baze podataka da pažljivo isplanira vrstu i količinu redudanse. U nekim slučajevima je poželjno napraviti ograničenu redudansu kako bi se performanse baze podataka poboljšale (npr. brža pretraga).

• Poboljšana konzistentnost podataka Eliminisanjem (ili kontrolisanjem) redudanse podataka, u velikoj meri se smanjuju šanse za nekonzistentnošću podataka. Na primer, ukoliko je adresa kupca zapisana na samo jednom mestu ne može da postoji ne podudaranje u podacima u bazi podataka. Takođe, ažuriranje podataka je u velikoj meri uprošćeno, kada je svaka vrednost zapisana na samo jednom mestu. Na kraju, uklanjanjem redudanse podataka dolazi do uštede memorije.

Page 27: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 18 -

• Poboljšana razmena podataka Baza podataka je dizajnirana kao resus organizacije koji koriste svi njeni zaposleni (kojima je ona neophodna u opisu posla). Određenim internim i eksternim korisnicima je dozvoljeno korišćenje baze podataka, i svaki od njih (bio u pitanju jedan korisnik ili grupa) ima jedan ili više pogleda koji mu olakšavaju korišćenje baze podataka. Korisnički pogled je logički opis jednog dela baze podataka koji je neophodan korisniku da obavi neki zadatak.

• Povećana produktivnost u razvoju aplikacija Velika prednost pristupa zasnovanog na bazama podataka je ta što se u znatnoj meri smanjuju troškovi i vreme potrebno za razvoj novih poslovnih aplikacija. Postoje dva važna razloga zašto se aplikacije baza podataka razvijaju znatno brže nego kod klasičnih sistema sa datotekama:

1. Pretpostavljajući da su baza podataka i sve propratne aplikacije već napravljene i implementirane, programer se može koncetrisati na određenu funkciju koja je neophodna za novu aplikaciju, a ne mora da razmišlja o definisanju podataka ili o detaljima vezanim za implementaciju.

2. DBMS pruža veliki broj alata za izveštavanje, kao što su generatori formi i izveštaja, i jezike uz pomoć kojih se automatizuju neke od aktivnosti kao što su dizajn i implementacija baza podataka.

• Smanjena potreba za održavanjem programa Sačuvani podaci se moraju često menjati iz velikog broja razloga: nove vrste podataka se dodaju, formati podataka se menjaju, i tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu godinu, kada se sa uobičajenog sistema prikazivanja godina sa dve cifre moralo preći na četiri cifre. U sistemu obrade datoteka, metapodaci i logika pristupanju podacima se nalaze u individualnim aplikacionim programima (ovo je zavisnost između programa i podataka o kojoj je ranije bilo reči). Kao rezultat ovoga, promena formata podataka i metoda pristupanja momentalno dovodi do potrebe menjanja aplikativnih programa.

Page 28: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 19 -

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

1.4.2. Troškovi i rizici pristupa zasnovanog na bazama podataka

U prethodnom delu teksta navedeno je nekoliko glavnih potencijalnih prednosti pristupa zasnovanog na bazama podataka. Međutim, kod velikog broja organizacija bilo je različitih problema kod ostvarenja i iskorišćenja tih prednosti. Na primer, postizanje nezavisnosti podataka (i stoga, smanjene potrebe za održavanjem programa) se pokazalo kao teško ostvarivo zbog ograničenja starijih modela baza podataka i softvera za upravljanje bazama podataka. Na sreću, relacioni modeli (kao i noviji objektno-orjentisani modeli) nemaju ovih problema. Drugi razlog za neuspeh da se iskoriste ove prednosti, je loše planiranje i implementacija baza podataka – čak ni najbolji softver za upravljanje bazama podataka ne može da prevaziđe ovakve manjkavosti. Pristup zasnovan na bazama podataka sadrži neke dodatne troškove i rizike koji se moraju rešavati kada se sistem počne primenjivati.

• Novo, obučeno osoblje Često se dešava da preduzeće, koje se odluči za pristup zasnovan na bazama podataka, mora da anagažuje ili obuči ljude za projektovanje, implementiranje i održavanje baza podataka, kao i da te ljude uključi u postojeću radnu organizaciju. Dalje, zbog čestih izmena i brzine razvoja tehnologije, znanje ovog novog osoblja zahteva stalnu nadgradnju i unapređivanje. Jedino obučeno osoblje može da izvuče maksimum korisnosti iz novih tehnologija.

Page 29: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 20 -

• Troškovi i složenost instaliranja, upravljanja i rada sistema sa bazama podataka Višekorisnički sistem za upravljanje bazama podataka je veliki i složen softver koji u startu mnogo košta, zahteva obučeno osoblje za instaliranje i rad i ima značajne godišnje troškove za održavanje i tehničku podršku. Instaliranje ovakvog sistema može zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju, da bi se mogle pratiti nove verzije i nadogradnje softvera. Takođe se može pojaviti potreba za dodatnim i skupljim softverom za baze podataka radi veće sigurnosti podataka.

• Troškovi prilagođavanja (konvertovanja) podataka Termin nasleđeni sistemi se uglavnom koristi kada se govori o starijim aplikacijama u preduzeću koje su bazirane na datotečnom pristupu ili starijim bazama podataka. Troškovi prilagođavanja ovakvih starijih sistema za rad sa modernim bazama podataka (mereni u novcu, vremenu i zahtevnosti posla) često deluju kao velika prepreka za preduzeće.

• Potreba za izradom sigurnosnih kopija i oporavkom podataka (backup) Deljena baza podataka preduzeća uvek mora biti tačna i dostupna. To zahteva razvijanje i korišćenje jasnih procedura izrade sigurnosnih kopija kao i oporavak baze podataka kada neko oštećenje nastane. U današnjem okruženju, gde postoje raznovrsni bezbednosni rizici, rešavanje ovog problema je od izuzetne važnosti. Moderan sistem za upravljanje bazama podataka obično sam obavlja izradu sigurnosnih kopija i oporavak podataka u slučaju havarija.

• Konflikti u organizaciji Deljena baza podataka zahteva saglasnost u vezi sa definicijama i vlasništvom podataka, kao i utvrđenu osobu ili osobe odgovorne za održavanje podataka. Iskustvo je pokazalo da nesuglasice u pogledu definicija podataka, formata i kodiranja podataka, prava na ažuriranje deljenih podataka i sl. su česta i vrlo teška tema za rešavanje. Da bi se ovi problemi rešili potrebno je da je organizacija u potpunosti posvećena uvođenju/korištenju pristupa zasnovanog na bazama podataka. Zatim je potreban sposoban administrator baze podataka kao i smislen pristup razvoju baza

Page 30: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 21 -

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

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

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

Page 31: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 22 -

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

1.5.2. Baze podataka za radne grupe Radnu grupu čini relativno mali broj ljudi koji sarađuju na jednom projektu ili aplikaciji ili na grupi sličnih projekata ili aplikacija. Radna grupa obično sadrži desetak ljudi. Oni mogu biti uključeni u npr. planiranje, projektovanje ili razvoj novog računarskog programa. Baza podataka za radne grupe služi za podršku zajedničkog rada jedne takve grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i programe po porudžbini, koji se prodaju softverskim kompanijama kao i krajnjim korisnicima. Obično, jedna ili više osoba rade na datom programu, ili dele programe, u isto vreme. Grupi je potrebna baza podataka koja će da prati razvoj svakog dela i koja će da omogući da se podaci što lakše razmenjuju među članovima tima. Svaki član radne grupe ima svoj računar, a računari su umreženi putem LAN-a. Baza podataka se nalazi na centralnom računaru koji se zove server baze podataka, koji je takođe na mreži. Stoga, svaki član grupe ima pristup podacima. Različiti članovi grupe (u zavisnoti da li je u pitanju rukovodilac projekta ili projektant, programer) mogu imati različita ovlašćenja (privilegije), a time i različite poglede na podatke. Primetićete da je glavna mana ličnih baza podataka, teško ostvariva razmena podataka, ovde prevaziđena (barem je razmena podataka u okviru grupe lako ostvariva). Međutim, razmena podataka otvara nova pitanja i probleme koji nisu postojali kod ličnih baza podataka. Glavni problemi upravljanja podacima su vezani za njihovu bezbednost i integritet, s obzirom da više korisnika može istovremeno da obavlja ažuriranje podataka.

Page 32: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 23 -

1.5.3. Baze podataka odeljenja Odeljenje je funkcionalna radna jedinica u okviru organizacije. Tipični primeri odeljenja su: kadrovsko, marketing, proizvodnja, računovodstvo i sl. Odeljenje je obično veće od radne grupe (nekada se sastoji i do 100 osoba) i odgovorno je za veći broj različitih poslova. Baze podataka odeljenja su napravljene da podrže različite oblike poslova i aktivnosti koje obavlja to odeljenje. Uzmimo za primer bazu podataka kadrovskog odeljenja u kojoj se prate podaci vezani za zaposlene, vrste poslova, stručnu spremu i poslovna zaduženja. Kada su svi relevantni podaci sačuvani u bazi podataka, korisnici mogu da pretražuju bazu podataka u cilju dobijanja odgovora na pitanja kao što su sledeća:

• Za određenu vrstu zanimanja (npr programer) kakve prilike za zaposlenje trenutno postoje u organizaciji?

• Za tu istu vrstu posla koja stručna sprema ili veština je neophodna?

• Koje veštine, znanje poseduje određeni radnik? I obrnuto, koji radnici poseduju određenu veštinu, znanje?

• Koji sve radnici su obavljali određeni posao u organizaciji? I obrnuto, koje sve poslove je određeni radnik obavljao u organizaciji?

• Koje sve zaposlene nadgleda određeni menadžer? Tipična pitanja na koja se treba odgovoriti pri pravljenju baze podataka odeljenja su:

1. Kako baza podataka i njeno okruženje trebaju da budu organizovani da bi se ostvarile zadovoljavajuće performanse, uzimajući u obzir veliki broj korisnika i veliki broj transakcija?

2. Kako na odgovarajući način obezbediti podatke od nedozvoljenog pristupa i/ili distribucije?

3. Koje alate za razvoj baze podataka i aplikacija treba koristiti u slučaju ovako kompleksnog okruženja?

4. Da li i druga odeljenja koriste iste vrste podataka, i ako je to slučaj, kako se najbolje može upravljati podacima po pitanju njihove redudantnosti i konzistentnosti i metapodacima po pitanju njihove konzistentnosti?

5. Da li su korisnici baze podataka geografski jedni od drugih udaljeni ili je veličina baze podataka tolika da se podaci moraju

Page 33: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 24 -

čuvati na više računara, tako stvarajući distribuirane baze podataka?

6. Da li se bazi podataka može pristupati preko Interneta i da li ona treba da bude uključena u intranet organizacije?

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

1. Enterprise resource planning (ERP) sistem 2. Implementacija skladišta podataka (data werehouses)

ERP sistemi rade sa tekućim podacima organizacije, dok skladišta podataka sakupljaju podatke iz raznih operativnih baza podataka, uključujući i lične, radnih grupa, odeljenja i ERP baze podataka. Skladišta podataka pružaju mogućnost korisnicima da rade sa prethodnim podacima kako bi pronašli obrazce i trendove događaja i kako bi odgovorili na pitanja koja su vezana za strategiju poslovanja. Uzmimo za primer veliku zdravstvenu organizaciju koja upravlja grupom medicinskih centara, u šta spadaju domovi zdravlja, bolnice, klinike i starački domovi. Svaki od ovih medicinskih centara ima svoju bazu podataka (ili baze podataka) koja pruža podršku u obavljanju raznih poslova. Ove baze podataka imaju podatke o pacijentima, doktorima, medicinskim uslugama, poslovanju i drugim bitnim entitetima. Baza podataka pruža adekvatnu podršku za većinu poslova u svakom pojedinačnom medicinskom centru. Međutim, postoji potreba za

Page 34: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 25 -

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

1.5.5. Internet, Intranet i Extranet baze podataka Internet tehnologije služe za olakšavanje deljenja podataka i informacija. Na primer, u okviru fabrike može se koristiti lokalna mreža (LAN) koja povezuje radne stanice zaposlenih iz raznih odeljenja sa serverom na kome se nalazi baza podataka. LAN unapređuje komunikaciju i proces donošenja odluka u okviru same kompanije. Ako se uvede Intranet koji se zasniva na Web tehnologiji, njemu se može pristupati samo u okvirima kompanije. Radna stanica svakog zaposlenog se može koristiti kao web browser, i na taj način se dobija brz pristup informacijama kompanije, uključujući i telefonski adresar, specifikacije proizvoda, elektronsku poštu i tome slično. Takođe se radne stanice mogu koristiti i kao personalni računari koji povezani preko LAN-a pristupaju serveru na kome se nalazi baza podataka. Moguće je dodati i Web interfejse nekim poslovnim aplikacijama, kao što su unošenje porudžbina, da bi na taj način više internih poslovnih aktivnosti moglo biti obavljano od strane zaposlenih preko intraneta. U cilu efikasnijeg ukupnog poslovanja intranet sistem se može otvoriti ka kupcima preko Interneta. Ovo omogućava maloprodajama da pretražuju katalog proizvoda (uključujući slike i specifikacije proizvoda) i utvrde da li željenog proizvoda ima u skladištu. Tada radnici u maloprodajnim objektima mogu da obaveste svoje kupce i da poruče željeni komad

Page 35: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 26 -

proizvoda preko Interneta. Internet konekcija je konfigurisana kao extranet što znači da samo odobrene maloprodaje mogu da pristupe intranet-u fabrike. Sve veće korišćenje Interneta, svetske mreže koja povezuje korisnike, nebitno koje platforme je dovelo i do promena u okruženju baza podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do bitnih promena u davno utvrđenim modelima poslovanja. Veoma uspešne kompanije su bile ugrožene zbog novih kompanija koje su prihvatile Internet pomoću koga su unapredile informisanje i usluge koje su pružale svojim klijentima, i koje su zaobišle tipične tokove marketinga i distribucije proizvoda. Na primer, kupci konfigurišu i poručuju svoj PC računar direktno od proizvođača računara. Informacije o upražnjenim mestima i aktivnostima organizacije se mogu dobiti preko Interneta za većinu organizacija. Svaka od ovih radnji zahteva podršku baze podataka. Lak pristup Internetu svih vrsta platformi omogućava kompanijama da reorganizuju svoje poslove i razviju brže aplikacije i to po manjim troškovima. Standardni interfejsi omogućavaju veću produktivnost korisnika, uz manje provedenog vremena na obuci, i manju potrebnu podršku. Osnova razvoja korisnikove aplikacije je priključivanje baze podataka iz koje se mogu dobiti sveže informacije. Kada je baza podataka povezana sa nekom Internet lokacijom, korisnici preko Web browser-a mogu da postavljaju određena pitanja na koja će dobiti odgovore bazirane na svežim informacijama. Odgovaranje na pitanja je automatsko; nema potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo pitanje nekoj osobi i da bi se zatim od nje čekao odgovor. Internet baze podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta. Kompanije prate sva dešavanja na sajtu kako bi došli do što više informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom, dužina zadržavanja na svakoj stranici i tome slično) kako bi što više unapredili svoj odnos prema kupcima. Većina primera koji su navedeni prikazuju Business-to-Customer (B2C) veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obično naziva B2B (Business-to-Business) odnos. Internet se koristi da olakša B2C odnos, zato što su kupci obavezno spoljni faktor u odnosu na firmu, i mogućnost kupca da pristupi poslovnim podacima i informacijama je od velike važnosti za uspešan odnos. Dozvoljavanjem pristupa poslovnim

Page 36: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 27 -

bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se nova pitanja za rukovođenje informacionim sistemima vezana za sigurnost i integritet podataka. Kompanije su godinama vršile razmenu informacija putem elektronske razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije, uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za obavljanje B2B razmena podataka i informacija. Extranet koristi Internet tehnologiju, međutim, pristup extranetu je, za razliku od Interneta kome mogu svi pristupiti, ograničen. Ustvari, pristup je ograničen na kompanije koje su u ulozi dobavljača i kupca i koje imaju međusobni dogovor o pristupu podacima i informacijama jednih drugima. Obično, prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera. Ovaj način pristupa olakšava poslovne odnose tako što pruža brži i efikasniji način obrade i pristupanja podacima. Kao što je prethodno pomenuto mnoge organizacije su koristile Internet tehnologiju za stvaranje privatne mreže namenjene za upravljanje informacijama u okviru organizacije. Po izgledu ne postoji razlika između intranet i Internet stranica, ali pristup intranet stranici je ograničen samo na korisnike u okviru te organizacije. Stoga je i pristup bazi podataka organizacije ograničen. Intranet može da ostvari Internet konekciju ali ta konekcija će biti zaštićena firewall-om koji sprečava neovlašćeni pristup intranetu.

Page 37: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 28 -

1.6. Tipično okruženje baze podataka Glavni delovi tipičnog okruženja baze podataka i njihove veze su prikazani na slici 1.9.

1. Baza podataka Organizovan skup logički povezanih podataka, obično napravljena da zadovolji potrebe za informacijama više korisnika u organizaciji.

2. Skladište podataka Centralna baza „znanja“ za sve definicije podataka, njihova ograničenja, veze između podataka, izgleda ekrana i izveštaja i drugih sistemskih komponenti. Uskladišteni podaci iz prethodnog perioda.

3. DBMS Sistem za upravljanje bazama podataka (SUBP). Softverski sistem koji se koristi za kreiranje, održavanje i kontrolu pristupa korisnika baze podataka.

4. Aplikativni programi Računarski programi koji služe za kreiranje i održavanje baze podataka i pružaju informacije korisnicima.

5. Administratori podataka i baza podataka Administratori podataka su osobe odgovorne za upravljanje svim izvorima podataka u organizaciji. Administratori podataka su odgovorni za fizički dizajn baza podataka i za upravljanje tehničkim problematikama u okruženju baza podataka.

6. Projektanti sistema Osobe kao što su sistemski analitičari i programeri koji dizajniraju nove aplikativne programe. Projektanti sistema često koriste CASE alate za analizu potreba sistema i dizajn programa.

7. Korisnički interfejs Jezici, meniji, i itd. pomoću kojih korisnici koriste različite komponente sistema, kao što su CASE alati, aplikativni programi, DBMS i metapodaci.

8. Computer-aided softver engineering (CASE) alati Alati koji se koriste za dizajniranje baza podataka i aplikativnih programa.

9. Krajnji korisnici Osobe koje dodaju, brišu i modifikuju/ažuriraju podatke u bazi podataka i koje zahtevaju ili primaju podatke iz njih. Svaka interakcija između korisnika i baze podataka dešava se preko DBMS-a.

Page 38: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 29 -

Slika 1.9 Komponente okruženja BP

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

Page 39: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 30 -

1.7. Istorija razvoja baza podataka

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

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

Page 40: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 31 -

Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama počeli su se pojavljivati prvi elektronski računari. Oni su se često koristili upravo za jednostavne linearne baze podataka, najčešće za računovodstvo. Ipak, vrlo brzo, bogati kupci su počeli da zahtevaju više od njihovih ekstremno skupih mašina. Sve je to vodilo do ranih baza podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste Hollerith-ove bušene kartice, neznatno modifikovane u odnosu na originalni dizajn. Nefleksibilnost polja iste dužine, baze podataka pokretane 80 kolonskim bušenim karticama, učinile su rane računare metom napada i šala i potpunom misterijom za običnog čoveka. Većina prvobitnih baza podataka se odnosila na specifične programe napisane za specifične baze podataka. Za razliku od modernih sistema koji mogu biti primenjeni na potpuno različite baze podataka, ovi sistemi su bili usko povezani za bazu podataka da bi osigurali brzinu na uštrb fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom sledećih decenija. U većini slučajeva, period uvođenja je dugo trajao, skoro deceniju pre navedene godine početka upotrebe. Na primer, relacioni model je prvi put definisan od strane E.F.Codd u tekstu objavljenom 1970 godine. Međutim, relacioni model nije bio široko prihvaćen sve do 1980-tih godina. 1960’te Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka su uvedeni u ovoj deceniji, i korišćeni su najpre samo kod velikih i složenih projekata, kao što je to bio projekat sletanja Apollo-a na Mesec. Ovaj period možemo posmatrati kao period ’dokazivanja’, u kom je demonstrirana sposobnost ovih sistema da upravljaju ogromnim količinama podataka. Takođe, prvi napor da se standardizuju poduzet je sa formiranjem DBT Grupe (Data Base Task Group), tokom kasnih ’60-ih godina.

Page 41: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 32 -

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

• Težak pristup podacima. Za pristup i najjednostavnijim podacima bili su potrebni izuzetno složeni programi.

• Veoma ograničena nezavisnost podataka, tako da se programi nisu mogli izolovati od promena u formatu podataka.

• Nije postojala nijedna široko prihvaćena teorijska podloga za bilo koji od ovih modela, za razliku od relacionog modela podataka.

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

Page 42: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 33 -

1990’te Ove godine se označavaju kao nova računarska era, najpre na nivou računarske komunikacije na relaciji klijent/server, a potom sa stvaranjem skladišta za podatke i upotrebom Internet aplikacija, koji su dobijali sve više na važnosti u ovom periodu. Kao što je upravljanje podacima od strane DBMS-a postalo visoko primenjivo (npr., u računovodstvu) tokom osamdesetih godina, multimedijalni podaci (uključujući i grafiku, zvuk, slike i video zapis) su postali uobičajena stvar tokom devedesetih godina. Kako bi se izborili sa sve složenijim podacima, tokom devedesetih su uvedeni sistemi okrenuti ka objektu, koji se smatraju trećom generacijom. Zbog velike potrebe za organizacijom ogromne količine podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i prethodni sistem su u upotrebi i danas. Neki proizvođači čak rade na razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi mogli da upravljaju obema vrstama istih. Od 2000. godine Naravno, navodimo se na razmišljanje u kom pravcu će da krene razvoj DBMS tehnologija tokom naredne decenije. Iako će nesumnjivo doći do novih iznenađenja, možemo očekivati nastavak dobro uspostavljenih trendova:

1. Mogućnost upravljanja sve složenijim tipovima podataka. Ovi tipovi uključuju i multidimenzionalne podatke, koji su već dobili na važnosti u aplikacijama skladištenja podataka.

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

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

3. Dok su u potpunosti distribuirane baze podataka postale realnost, trenutni trend ka cenrtalizaciji istih će se nastaviti. Kako se troškovi komunikacije sve više smanjuju, nasuprot porastu tipova podataka,vrednost lociranja i pristupa

Page 43: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 34 -

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

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

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

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

inteligencije i televizije, kao informacionog servisa, olakšaće pristup podacima neobučenim korisnicima. Na primer, korisnik će biti u mogućnosti da zahteva podatak na više jezika, a tehnologija baza podataka će da uključuje potrebe korisnika za podacima, na osnovu upita koji se čuvaju, i menjati se na taj način.

6. Rad na tehnologijama algoritama za tehniku analize podataka, koji teže ka upravljanju veoma velikim paketima podataka, kako bi organizacije što lakše analizirale svoja ogromna skladišta podataka. To će u velikoj meri olakšati u planiranju strategije oraganizacija za njihovo poslovanje za duže vremenske periode.

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

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

Page 44: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 35 -

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

Slika 1.11 Realan svet i njegov model

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

Baza podataka

Programi za izveštavanje

Programi za održavanje

Relan svet Izlaz1

Izlaz2

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

Page 45: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 36 -

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

1.8.1. Razvoj konceptualnih modela Objekti iz relnog sveta se u računarskoj primeni opisuju pomoću podataka. Podaci su zato apstrakcija realnosti, tj. sredstva za kodiranje osobina objekata iz realnog sveta. Modelovane, kao postupak kojim se realni svet svodi na određeni broj podataka, predstavlja kompleksan posao i sastoji se iz više koraka:

• Izbor (selekcija). U prvom koraku se mnoštvo objekata iz realnog sveta redukuje na manji skup objekata, koji će činiti objekte modela. Npr. objekti mogu biti student, predmet, profesor, studentska služba, polaganje ispita i sl. U procesu selekcije ovaj broj objekata se može redukovati na manji broj, ako je cilj praćenje uspešnosti studiranja na fakultetu. Time se složenost realnog sistema smanjuje. Selekcija se ne odnosi samo na objekte nego i na njihove osobine, kao i na međusobne veze (relacije) između objekata.

• Imenovanje. Svakom objektu u realnom svetu, svakoj vezi između uočenih objekata, kao i svakom atributu (svojstvu) uočenog objekta ili veze dodeljuje se ime.

• Klasifikacija. Nehomogeni skup objekata i odnosa se svrstava u homogene klase i tipove objekata. Klasifikacija uvek zavisi od područja primene.

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

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

Page 46: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 37 -

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

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

Page 47: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 38 -

Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se vrednost. Ako je atribut dovoljno složen, tako da ima svoje dodatne atribute, može se posmatrati kao novi entitet. Domen atributa je skup svih mogućih vrednosti koje atribut može poprimiti.

Primarni ključ je jedan ili više atributa čija vrednost jednoznačno određuje primerak entiteta. Na primer, za entitet Auto, primarni ključ je atribut registarski broj. Dva različita člana ili primerka entiteta ne mogu imati isti primarni ključ. Primarni ključ je jedinstven za svakog člana entiteta. Na primer, za entitet Student primarni ključ bi mogao biti broj indeksa.

1.8.3. Veze između entiteta Baza podataka se ne odnosi samo na pojedinačne objekte nego i na odnose između objekata. U realnom sistemu objekti nisu međusobno izolovani, nego se nalaze u međusobnoj interakciji. Student se upisuje na fakultet, sluša predavanja iz pojedinih predmeta, prijavljuje polaganje ispita, polaže ispit itd. To su primeri logičkih i realnih veza između objekata, koje slede iz realnih odnosa u posmatranom sistemu studiranja na jednom fakultetu. Istražimo jedan skup odnosa između studenata koji slušaju predavanja kod određenog profesora. Postavlja se pitanje šta su u takvim odnosima objekti, koje su njihove osobine (atributi) i kako prikazati njihove odnose. Identifikovati objekte, njihove osobine i odnose znači praktično izgraditi model podataka. U modelu podataka ne postoje samo atributi objekta, nego i veze između objekata. Prvo se selektuju objekti, imenuju se, a zatim se analiziraju tipovi odnosa koji se uspostavljaju između objekata. Odnosi između objekata posmatranja prikazuju se najčešće primenom logike skupova i preslikavanja njihovih elemenata. Najjednostavniji odnos između ta dva tipa objekata naziva se preslikavanje 1:1. Kod takvog preslikavanja svaki se element skupa X može preslikati na najviše jedan element skupa Y. Istovremeno, i svaki element skupa Y može biti preslikan na najviše jedan element skupa X. Karakterističan primer bi bio sa entitetima Fakultet i Dekan. Na jednom fakultetu može biti samo jedan dekan, a jedan dekan može biti dekan na

Page 48: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 39 -

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

Slika 1.12 Preslikavanje entiteta 1:1

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

Slika 1.13 Preslikavanje entiteta N:1

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

Page 49: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 40 -

Slika 1.14 Preslikavanje tipa M:N

1.8.4. Troslojna arhitektura baze podataka Osnovni koncept baze podataka je ideja o skupu činjenica ili delova znanja. Činjenice mogu da budu struktuirane na različite načine koji se nazivaju modeli podataka. Model podataka nije statična struktura nego se menja kako bi odražavao promene koje se dešavaju i u realnom sistemu. Na primeru informacionog sistema jednog fakulteta, studenti polažu pojedine ispite, neke poništavaju i dobijaju drugačije ocene, upisuju se novi studenti, drugi diplomiraju, neki asistenti postaju profesori itd. Za jednostavne slučajeve, kao i mali broj promena relacija i entiteta, moguće je ažuriranje podataka vršiti ručno. Za kompleksnije sisteme (sa nekoliko stotina ili hiljada entiteta ili relacija) ažuriranje podataka postaje ogroman problem. Jedino se uz pomoć računara može održavati ažurnost podataka u velikim informacionim sistemima. Obrada podataka postaje ne samo pitanje produktivnosti neke firme ili organizacije, nego i opstanka, rasta i razvoja u okruženju s intenzivnom konkurencijom. Obrada podataka je deo svakog poslovnog procesa, stoga je poznavanje baza podataka bitno ne samo za projektante informacionih sistema i programere, nego i za krajnje korisnike rezultata takvih obrada. Oni nisu samo skup povremenih korisnika baza podataka, kao što se to može reći za programere ili projektante informacionih sistema. Danas veliki broj zaposlenih, koji nisu upoznati sa konceptualnom šemom BP, kreiraju,

Page 50: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 41 -

unose, ažuriraju ili jednostavno koriste baze podataka na različitim nivoima organiziranosti poslovnih sistema. Model baze podataka koji je danas poznat kao ANSI/X3/SPARC model prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući korisnički model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Konceptualni nivo je najbliži stvarnosti. Taj se nivo definiše u procesu kreiranja modela podataka. Jedan od ciljeva modela podataka je oblikovanje podataka za sadašnje i buduće aplikacije. Može se reći da konceptualni nivo čine sve relacione šeme modela podataka, sve relacije i ograničenja. Spoljašnji nivoi (modeli A, B i C) formiraju se na temelju konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema potrebama pojedinih korisnika.

Slika 1.15 Troslojna arhitektura baze podataka

Podaci 1

Podaci 2

Podaci 3

Podaci N

Model A

Model B

Model C

A

B

C

Konceptualni model (sloj)

Interni model (sloj)

Eksterni model (sloj)

Page 51: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 42 -

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

1.9. Modeli baza podataka Za modelovanje strukture podataka koriste se različite tehnike. Određeni modeli se lakše koriste za neke tipove sistema upravljanja bazama podataka nego drugi modeli. Model čini osnovu za osmišljavanje, definisanje i implementaciju baze podataka. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledeće osnovne modele:

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

• Mrežni model – može se predstaviti usmerenim grafom u kojem su čvorišta podaci, a lukovi među čvorištima definišu veze među podacima;

• Relacioni model – zasnovan na matematičkom pojmu relacije. Podaci i veze među podacima se prikazuju preko dvodimenzionalnih tabela.

• Objektni model – bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvršavati.

Page 52: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 43 -

1.9.1. Hijerarhijski model

Hijerarhijski model je najstariji od svih modela baza podataka, i za razliku od mrežnog, relacionog ili objektno orjentisanog, nema dobro dokumentovanu istoriju svoje koncepcije i početne verzije ovakvog modela. Ovaj model se razvio iz informacionog sistema za upravljanje u 50-tim i 60-tim godinama prošlog veka. Usvojen je u mnogim bankama i osiguravajućim društvima koji ga, kao nasleđe, i danas koriste.

U hijerarhijskom modelu podaci su smešteni u seriju slogova (zapisa) Da bi se uspostavila veza između slogova, hijerarhijski model uspostavlja relaciju roditelj – naslednik. Ovo je takozvano 1:N mapiranje između slogova koje se radi korišćenjem stabla. U ovom modelu, relacije su takve da jedan naslednik može imati samo jednog roditelja, ali roditelj može imati više naslednika. Roditelji i naslednici su povezani vezama koje se nazivaju pokazivači (u fizičkoj realizaciji to je adresa u memoriji gde se slog nalazi). Roditelj ima listu pokazivača za svakog od svojih naslednika. Hijerarhijski model je dobro uređena struktura, koja podseća na hijerarhijsku strukturu u npr. državi, vojsci ili nekoj velikoj organizaciji .

Slika 1.16 Šematski prikaz jednog hijerarhijskog modela

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

Direktor

Zamenik Zamenik Zamenik

O O O O O O O O

R

R

R

R

R

R

R

R

R R

R

R

R

R

R

R

R

R

Page 53: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 44 -

da korisnik mora da zna kako je stablo organizovano da bi pronašao bilo šta. Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne može se dodati slog u tabelu naslednika dok se ne uključi u roditeljsku tabelu. Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima, ali ne može da se nosi sa povezivanjem ogranaka ili stvaranjem višestrukih veza. Zbog toga se stvara redudansa (višestruko pojavljivanje) podataka i mogućnost netačnog ažuriranja. Na primeru hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore, studente itd. mogu se lako uočiti navedene slabosti. Lako je predstaviti da na jednoj katedri ima više profesora, ali se ne može predstaviti da jedan profesor radi na više katedri. Da bi se ovo uradilo, mora postojati dva pojavljivanja istog profesora. To može dovesti do netačnosti kod ažuriranja podataka, npr. moguće je da informacije budu različite u dva zapisa, što vodi do konfuzije. Hijerarhijski model se više ne koristi kao osnova za trenutne komercijalne sisteme, ali još uvek postoji mnogo nasleđenih sistema baziranih na ovom modelu. Zbog svih nedostataka koji postoje u hijerarhijskom modelu, razvijen je mrežni model.

1.9.2. Mrežni model

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

Page 54: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 45 -

Slika 1.17 Šema mrežnog modela Mrežni model se danas uglavnom ne upotrebljava za dizajniranje baza podataka, ali ipak ima slučajeva gde se kao deo nasleđa koristi u nekim kompanijama. Predstavlja unapređenje hijerarhijskog modela, ali je kompleksan i težak za upotrebu. Pored toga, teško ga je podržati matematičkim aparatom, što onemogućava kasnije efikasno programiranje.

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

Direktor

Zamenik Zamenik Zamenik

O O O O O O O O

R

R

R

R

R

R

R

R

R R

R

R

R

R

R

R

R

R

Page 55: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 46 -

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

• Sve se predstavlja relacijama (tabelama) • Zasniva se na strogoj matematičkoj teoriji • Minimalna redudansa podataka • Jednostavno ažuriranje podataka • Izbegnute su anomalije ažuriranja • Redosled kolona i redova ne utiče na informacioni sadržaj tabele • Ne mogu da egzistiraju dva identična reda (rekorda) u jednoj

tabeli • Svaki red se može jednoznačno odrediti (postoji primarni ključ) • ... U relacionom modelu podataka klase objekata se predstavljaju

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

Slika 1.18 Tabela je osnovni objekat relacione baze podataka Prethodna dva objekta sa svojim atributima grafički se mogu predstaviti na sledeći način:

BrInd Ime

75/01 Marko

22/02 Petar

156/03 Milan

112/02 Dragan

Student

SifK Naziv

001 Računovodstvo

002 Baze podataka

003 Osnove finansija

004 Poslovna i f ik

Knjiga

005 Marketing

Page 56: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 47 -

Slika 1.19 Grafički prikaz objekata i njihovih atributa

U realnom svetu objekti međusobno stupaju u veze. Na jednom fakultetu studenti drže (pozajmljuju iz biblioteke) pojedine knjige. Može se uočiti da je veza između ova dva posmatrana objekta tipa M:N, tj. više studenata mogu da drže jednu knjigu, a jedna knjiga može biti kod više studenata. Neka je trenutna situacija iz realnog sveta prikazana na sledećoj slici:

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

BrInd Ime

75/01 Marko

22/02 Petar

156/03 Milan

112/02 Dragan

Student

SifK Naziv

001 Računovodstvo

002 Baze podataka

003 Osnove finansija

004 Poslovna informatika

Knjiga

005 Marketing

Student

BrInd

Ime

Knjiga

SifK

Naziv

Page 57: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 48 -

Slika 1.21 Klasa veza može da ima svoje atribute Grafički prikaz navedenog dat je na sledećoj slici

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

Student

BrInd

Ime

Knjiga

SifK

Naziv

Drži

BrInd Ime

75/01 Marko

22/02 Petar

156/03 Milan

112/02 Dragan

Student

SifK Naziv

001 Računovodstvo

002 Baze podataka

003 Osnove finansija

004 Poslovna informatika

Knjiga

005 Marketing

12.09.2005 12.09.2005 12.09.2005

12.09.2005

12.09.2005

12.09.2005

Drži

Datum

Page 58: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 49 -

STUDENT (BrInd, Ime), KNJIGA (SifK, Naziv) Za klasu veza Drži, može se difinisati prirodan primarni ključ u odnosu na objekte koje povezuje. U našem primeru relacija Drži bi glasila: DRŽI(BrInd, SifK, Datum) Dakle, za posmatrani realan slučaj gde sudenti drže pojedine knjige, izvršeno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i KNJIGA imaju dve kolone, a tabela DRŽI tri kolone. Sve tabele su povezane. Povezivanje se vrši preko vrednosti atributa u relacijama. na sledeći način:

Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih ključeva Veoma je važno zapaziti da kako i gde su tabele smeštene ne pravi nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje baza podataka koristi da bi pronašla tabelu. Korisniku je potrebno samo da zna ime tabele. Nema potrebe da se vodi računa o tome kako su podaci smešteni na disku. Ovo je različito od hijerarhijskog i mrežnog modela u kojima korisnik mora da razume kako su podaci struktuirani unutar baze podataka da bi mogao da ih pretražuje, unosi nove, ažurira ili briše postojeće slogove. Relaciona baza podataka standardno se satoji iz više tabela. Ipak, za razliku od mrežne baze podataka, tabele nisu povezane pokazivačima. Umesto toga koriste se „ključevi“ da upare redove podataka u različitim tabelama. Ključ je samo još jedna ili više kolona u tabeli, koja odgovara kolonama u drugim tabelama.

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

DRŽI (BrInd, SifK, Ime)

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

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

Page 59: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 50 -

Zahtev za podatkom iz relacione baze podataka se dobija izvršavanjem upita koji je napisan u posebnom jeziku, obično nekom od dijalekata SQL-a. Iako je SQL originalno namenjen za krajnje korisnike, mnogo češće se SQL upiti ugrađuju u softver koji omogućava lakši korisnički interfejs. Kao odgovor na upit, baza podataka vraća skup podataka, koji je u stvari lista redova koji sadrže odgovor. Najjednostavniji upit je da se dobiju svi redovi iz tabele, ali češće, redovi se filtriraju na neki način da bi se dobio traženi odgovor. Često se podaci iz više tabela kombinuju u jednu, procesom udruživanja. Fleksibilnost relacionih baza podataka dozvoljava programerima da pišu upite koji nisu bili predviđeni od strane dizajnera baze podataka. Kao rezultat, relacione baze podataka mogu da se koriste u više aplikacija koje originalni dizajneri nisu predvideli, što je posebno važno za baze podataka koje se mogu koristiti decenijama. Ovo je model relacionih baza podataka učinilo veoma popularnim u poslovnoj primeni.

1.9.4. Objektni model Objektno orjentisani model je jedan od novijih modela baza podataka. Istraživači su za njega postali zainteresovani krajem 70-tih i početkom 80-tih godina prošlog veka, kada se počeo pojavljivati koncept objektno orjentisanih sistema. Bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvršavati. Istraživanje se radilo i da bi se prevazišla mnoga ograničenja u relacionom modelu na određenim tipovima podataka. Tipovi podataka koji se mogu koristiti u relacionim bazama su veoma ograničeni. Svaki atribut (polje) može da poprimi samo jednu vrednost. U objektno orijentisanom modelu podataka entitet se predstavlja klasom. Klasa obuhvata i atribute i ponašanje entiteta (moguće operacije nad podacima). Npr. Klasa: student

• Atributi: BrInd, Ime, Prezime, Fakultet • Procedura: polaganjeIspita()

Objekti su samo jedno pojavljivanje u odgovarajućoj klasi. Objektno orijentisan model karakteriše bogatsvo tipova podataka – tip može biti i

Page 60: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 51 -

drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP rezultuje boljim performansama baze podataka. Posmatrajmo primer u kome se vodi evidencija o Studentima sa svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji student poseduje. Dalje, vodi se evidencija o Automobilima sa svojstvima Naziv automobila, Registarski broj, Boja, Godište i Vlasnik. Prethodni primer se može prikazati na sledeći način

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

Objektno orjentisani DBMS-ovi omogućavaju čuvanje objekata direktno, bez mapiranja za različite strukture podataka. Relacioni DBMS zahteva mapiranje iz objekata u tabele. U objektno orijentisanom modelu, informacija je sačuvana kao stalni objekt, a ne kao red u tabeli. Ovo sistem čini efikasnijim u smislu prostora potrebnog za smeštanje i čuvanje podataka i osigurava da korisnik manipuliše podacima samo na onaj način koji je programer odredio. S druge strane, obzirom da se kontrola vrši na veoma niskom nivou, mnogo je teže za treću stranu da napravi neki dodatak. Dok kod

BrInd Ime Prezime Fakultet Automobil

123/05 Marko Marković FPI Golf

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

Student

Naziv RegBr Boja Godište Vlasnik

Golf BG123456 Belo 1993 Marko

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

Automobil

Page 61: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 52 -

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

1.10. Transakcije Baze podataka kontinuirano skladište informacije koje opisuju trenutno stanje preduzeća. Na primer, baza podataka banke čuva trenutni bilans na svakom računu deponenta. Kada se u stvarnom svetu dogodi nešto što menja stanje preduzeća, mora da se uradi odgovarajuća promena podataka u bazi podataka. Ove promene se dešavaju uz pomoć programa koji se nazivaju transakcije koje deluju kada dođe do promena u stvarnom svetu. Na primer, kada klijent polaže novac u banku (događaj u stvarnom svetu), izvršava se transakcija depozita. Svaka transakcija mora biti uređena tako da održava nepogrešivost veze između stanja baze podataka preduzeća koje je kreira iz stvarnog sveta. Pored toga što menja stanje baze podataka, transakcija sama po sebi može da inicira neke događaje u stvarnom svetu. Na primer, izdvojena transakcija kod bankomata, inicira događaj odliva novca. Obično se transakcijom naziva niz operacija nad bazom podataka koji odgovara jednoj logičkoj jedinici posla u realnom sistemu. Važno je istaći da se ta logička jedinica posla izvršava do kraja ili se poništava u celini. Drugim rečima, zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze. Primer transakcije: Podizanje novca sa računa u banci. Kada banka primi zahtev, transakcija obuhvata sledeće korake:

1. Provera bankarske kartice 2. Provera računa (stanje) 3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se

nastavlja 4. Smanjuje se stanje na računu za zahtevani iznos

Page 62: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 53 -

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

Transakcija mora da kompletira sve korake, inače bi jedna od strana u transakciji imala štetu. Obrada transakcija je izuzetno važna u višekorisničkim aplikacijama. Kada više korisnika istovremeno unosi izmene u bazu podataka, više se ne možemo pouzdati u to da će uvek jedna izmena biti trajno upisana u bazu pre nego što započne naredna. Zbog toga u bazama podataka postoje mehanizmi kojima se može obezbediti da konkurentno izvršavanje transakcija daje iste rezultate kao kada se transakcije izvršavaju u serijskom redosledu.

1.10.1. Osobine transakcija Transakcije imaju sledeće osobine (ACID osobine):

• Atomnost (atomicity), Atomnost podrazumeva skup aktivnosti nad bazom podataka po principu „sve ili ništa“. Ili su sve aktivnosti uspešno obavljene ili je baza podataka ostala nepromenjena. Kada dođe do promene u bazi podataka, tada su sve promene dostupne korisnicima ili niti jedna promena nije dostupna korisnicima. To znači da se ne može desiti da se samo deo promene desi u bazi podataka u slučaju softverske ili hardverske greške.

• Konzistentnost (consistency), Konzistentnost znači da transakcija treba da prevede bazu podataka iz jednog u drugo konzistentno stanje. Na primer, ako se transakcijom vrši prebacivanje novca sa jednog računa na drugi račun u banci, ukupna suma novca pre i posle izvršenja transakcije se ne može promeniti. Ukoliko u toku transakcione obrade dodje do greške, podaci moraju biti vraćeni u stanje pre početka transakcije.

• Izolacija (izolation), Izolacija znači da kada se dve ili više transakcija izvršavaju istovremeno, njihovi efekti moraju biti međusobno izolovani. Efekti koje izazovu transakcije koje se obavljaju istovremeno

Page 63: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 54 -

moraju biti jednaki efektima nekog njihovog serijskog (jedna posle druge) izvršenja. Zbog povećanja paralelizma u obradi transakcija dozvoljavaju se različiti nivoi izolovanosti.

• Trajnost (durability). Trajnost znači da kada se transakcija završi (potvrđene promene), njeni efekti ne mogu biti izgubljeni, čak i ako se neposredno po njenom okončanju desi neki ozbiljan otkaz sistema.

1.10.2. COMMIT i ROLLBACK Obezbeđenje ACID osobina transakcije se radi upotrebom određenih metoda i instrukcija:

• transakcija počinje sa BEGIN TRANSACTION, • završava se sa COMMIT, čime se potvrđuju promene u bazi

podataka ako su sve instrukcije uspešno izvršene, • završava se sa ROLLBACK, ako sve instrukcije nisu uspešno

završene. Transakcija počinje pozivanjem metode BEGIN TRANSACTION, čime se označava početak niza operacija koje čine jednu logičku jedinicu. Metoda COMMIT preuzima sve izmene načinjene od poslednjeg mesta na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na disk. Metoda ROLLBACK deluje na suprotan način od COMMIT – ona poništava sve izmene i vraća stanje kakvo je bilo pre poslednjeg poziva metode COMMIT. DBMS poseduje i održava dnevnik transakcija (tj. dnevnik aktivnosti, log file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS ažurirao čuva se:

• vrednost pre ažuriranja (before-image) • vrednost posle ažuriranja (after-image)

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

Page 64: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 55 -

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

1.10.3. Konkurentno izvršavanje transakcija Nad modernim bazama podataka transakcije se ne obavljaju u izolovanosti već konkurentno. Više transakcija mogu istovremeno zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama otvara se mogućnost da nekontrolisan međusobni uticaj transakcija dovede do nekonzistentnog stanja.

Slika 1.25 Paralelno i serijsko izvršavanje transakcija

DBMS upravlja konkurentnim radom više aplikacija (korisnika), obezbeđuje sinhronizaciju njihovog rada, a sve u cilju sprečavanja štetnih posledica pri promenama koje se vrše nad bazom podataka u višekorisničkom okruženju. Komponente DBMS koje učestvuju u ovom procesu su:

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

Planer vodi računa o redosledu akcija kod više konkurentnih transakcija. Ako čitanje ili upisivanje može da naruši integritet baze podataka, zahtev

Transakcija1

Transakcija2

Transakcija3

Transakcija1 Transakcija2 Transakcija3

vreme

Istovremeno izvršavanje sve tri transakcije

Serijsko izvršavanje transakcija

Paralelno izvršavanje transakcija

Page 65: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 56 -

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

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

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

1.11. Oporavak baze podataka Opravak baze podataka (RECOVERY) predstavlja proces vraćanja baze podataka u korektno stanje. Sasvim je realno, i dešava se, da usled otkaza sistema mora da se uradi oporavak baze podataka. Uzroci otkaza mogu biti različiti: greške u programiranju, greške u operativnom sistemu, nestanak napajanja, havarije i sl. Proces oporavka se zasniva na redudansi podataka, tj. postojanju rezervnih kopija (backup), koje mogu da se čuvaju na disku, traci i sl. Tako, u slučaju otkaza sistema, oštećena baza podataka se rekonstruiše u ispravno stanje na osnovu poslednje kopije, a nekonzistentno stanje se rešava tako što se poništavaju nekonzistentne promene, a transakcije se ponavljaju.

1.12. Osnovne karaketristike savremenih baza podataka Savremeni računari i komunikaciona tehnologija značajno su uticali na napredak arhitekture, dizajna, kao i na upotrebu baza podataka i sistema za obradu transakcija. Njihova unapređena funkcionalnost stvorila je nove poslovne mogućnosti za preduzeća koja ih koriste, ali isto tako prouzrokovan je popriličan broj dodatnih zahteva za njihovom operativnošću.

Page 66: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 57 -

• Stalna pristupačnost Zbog toga što je uvek aktivan, informacioni sistem mora biti operativan tokom radnog vremena preduzeća. U nekim preduzećima, to znači da sistem mora da bude stalno dostupan. Na primer, kod sistema za rezervaciju avionskih karata, može da se zatraži rezervacija karata iz agencija raspoređenih u velikom broju vremenskih zona, tako da se sistem nikada ne gasi. Kada sistemi dožive kolaps, to dovedi do poremećaja u poslovanju. Na primer, ukoliko računar za rezervaciju karata ne radi, ne može se ni uraditi rezervacija. Mogućnost tolerancije pada sistema zavisi pre svega od prirode preduzeća. Svakako je jasno da sistem kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima sistem za rezervacije. VISA je objavila 2002. godine da je njihov sistem bio isključen na svega osam minuta u poslednjih pet godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U osnovi stalno pristupačnih sistema u suštini su kvalitetan hardver i softver

• Visoka pouzdanost Sistem mora precizno da prikaže rezultate svih transakcija. To znači ne samo da transakcija mora da bude tačno programirana, već i da ne sme doći do greške zbog uporednog (paralelnog) odvijanja transakcija, ili međusobne komunikacije delova programa za vreme izvršenja transakcija. Međutim, veliki sistemi za prenos transakcija uključuje hiljade hardverskih i softverskih modula, i malo je verovatno da svi rade savršeno precizno. Ipak, sistem ne sme da zaboravi rezultate bilo koje završene transakcije. Na primer, baza bodataka u bankarskom sistemu mora precizno da prikaže efekat svih ulaganja i podizanja novca koji su se obavili, i ne sme da zaboravi rezultate bilo kakve transakcije tog tipa.

• Veliki protok informacija Pošto preduzeća imaju veliki broj klijenata zbog kojih moraju da koriste sisteme za prenos transakcija, sistem mora da bude u stanju da obavlja više transakcija u sekundi. Na primer, sistem za odobravanje kreditnih kartica može da obavlja na hiljade transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije ne mogu izvršavati serijski, već se moraju izvršavati uporedno; što sa druge strane značajno komplikuje strukturu sistema.

Page 67: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 58 -

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

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

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

Page 68: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 59 -

1.13. Zaključak Tokom proteklih decenija došlo je do naglog porasta u broju i važnosti aplikacija baza podataka. Baze se koriste za skladištenje, manipulaciju i dobijanje podataka u organizacijama svih vrsta. Baza podataka je organizovan skup logički povezanih podataka. Podatak definišemo kao kao predstavnika objekta ili nekog događaja, koji bi bili od važnosti u korisnikovom realnom okruženju. Informacija je podatak koji je tako obrađen da nakon njegove upotrebe, korisnik oplemenjuje svoja saznanja. I podatak, kao i informacija se mogu čuvati u bazi podataka. Metapodatak jeste onaj podatak koji opisuje karakteristike korisničkih podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka (DBMS) je softverski sistem koji se koristi da stvara, održava i obezbeđuje kontrolu nad pristupom bazama podataka. DBMS skladišti metapodatke u delu koji je centralno skladište za sve definicije podataka, njihove veze, monitoring i formati izveštaja kao i ostale komponente sistema. Klasični sistemi zasnovani na datotekama i programskim jezicima su razvijeni u ranijoj računarskoj eri, kako bi računari mogli da skladište, manipulišu i izvlače velike fajlove podataka. Ovi sistemi (i danas u upotrebi) su imali veliki niz nedostataka kao što su zavisnost između podataka i programa, dupliranje podataka, njihova podela, kao i vreme izvršenja. Pristu preko baza podataka nastao je kao odgovor na te nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe, poslovne baze i Internet baze. U poslovne baze ulaze i skladišta podataka i integrisani programi za podršku u odlučivanju. Tehnologija baza podataka je počela sa razvojem tokom šezdesetih godina prošlog veka, i od tada se razvija bez prekida, sa tendencijama ka daljem usavršavanju i uklanjanju bilo kakvih poteškoća kada su u pitanju upravljanje, pristup i održavanje podataka u bazi podataka. Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima koji su bitni za njeno poslovanje. Kako je broj internih podataka i podataka iz okruženja ogroman nemoguće je sve podatke i sve uočene detalje opisati i sačuvati unutar informacionog sistema. Postupkom selekcije identifikuju se i čuvaju samo relevantni podaci i stvaraju modeli

Page 69: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 60 -

realnog sveta. Oni su izraz i posledica zahteva za obradom podataka relevantnih za određeno područje primene. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledeće osnovne modele: hijerarhijski model, mrežni model, relacioni model i objektni model Na bazi ANSI/X3/SPARC modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući korisnički model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model.

Transakcija je niz operacija nad bazom podataka i odgovara jednoj logičkoj jedinici posla u realnom sistemu, koja se izvršava do kraja ili se poništava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze.

1.14. Literatura [1] James L. Johnson, Database: Models, Languages, Design, Oxford

University Press, 1997., London. [2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems,

Pearson, Addison Wesley, 2004. [3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison

Wesley, Boston, MA [4] Branislav Lazarević, Z. Marjanović, N. Aničić, S. Babarogić, Baze

podataka, FON, Beograd, 2003. [5] Vladimir Blagojević, Relacione baze podataka, Klub Nikola Tesla,

Beograd, 2001. [6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern

Database Management, Pearson, Prentice Hall, 2005. [7] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag,

Berlin [8] Craig S. Mullins, Administracija baza podataka, Kompjuter

biblioteka, 2003.

Page 70: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 61 -

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

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

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

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

3. Neproceduralnost (t j . proceduralnost u minimalnom stepenu).

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

Page 71: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 62 -

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

Osnovne mogućnosti SQL-a su:

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

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

• Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko tastature a rezultati se prikazuju na monitoru, pristup BP je ograničen jedino pravima korisnika

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

Page 72: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 63 -

3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MySQL-a

3.1. Proces isntalacije Procedura instalacije ovog pageta se kao i kod većine pokreće na standardni način, pokretanjem fajl setup.exe. Posle startovanja ovog fajla pojaviće se prozor kao na slici:

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

Page 73: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 64 -

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

Page 74: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 65 -

Sika 3.3 Treći prozor Wizard-a Da bi instalirali MySQL server kliknite na dugme Install posle čega je potrebno sačekati neko vreme dok se ne završi proces instalacije (ovo može potrajati neko vreme u zavisnosti od brzine vašeg računara). Po završetku instalacije pojaviće se prozor kao na slici:

Page 75: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 66 -

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

Page 76: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 67 -

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

Page 77: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 68 -

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

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

Page 78: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 69 -

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

Page 79: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 70 -

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

Page 80: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 71 -

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

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

Page 81: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 72 -

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

Ovim ste završili proces instalacije i konfigurisanja. Startujete MySQL i možete početi sa radom.

Page 82: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 73 -

3.3. Pokretanje MySQL-a Posle završene instalacije i konfigurisanja samog servera potrebno je pokrenuti klijentski program koji će vam omogućiti rad sa bazom podataka. Da bi ste startovali program idite na Start meni, zatim Programs, pa onda MySQL, pa MySQL Server 5.0 i na kraju MySQL Command Line Client posle čega će se pojaviti prozor kao na slici:

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

Page 83: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 74 -

Slika 3.12 Prvi prozor MySQL-a Ukoliko je sve u redu pojaviće se prozor koji izgleda isto ovako i to znači da ste se upravo uspešno ulogovali i da vam je sada omogućen rad sa ovim SUBP-om. Sada možete izabrati neku od postojećih baza ili kreirati novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu DDL gde je to objašnjeno). Ukoliko ne znate koje se baze nalaze trenutno na sistemu to možete proveriti kucanjem naredbe: SHOW DATABASES; posle čega će se na ekranu pojaviti spisak svih postojećih baza na ovom sistemu.

Page 84: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 75 -

4. SQL TIPOVI PODATAKA MySQL DBMS podržava veći broj tipova podataka koje možemo svrstati u tri osnovne kategorije:

• Numerički tipovi podataka • Vremenski tipovi podataka • Binarni i tekstualni tipovi podataka

MySQL podržava i proširenja za podršku podataka većeg obima. Takođe, osim tipa podataka skup vrednosti se može dodatno definisati i korišćenjem atributa koji mogu biti opšti (npr. da je unos vrednosti obavezan) i specifični za određeni tip podataka (npr. Signed/Unsigned za tip Integer).

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

Signed/Unsigned Signed/Unsigned

tinyint 1 -128 127

0 255

smallint 2 -32768 32767

0 65535

mediumint 3 -8388608 8388607

0 16777215

int 4 -2147483648 2147483647

0 4294967295

bigint 8 -9223372036854775808 92233720368547758

070 18446744073709551

615

Tabela 4.1 Integer tipovi podataka

Page 85: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 76 -

Najbitniji atributi numeričkih tipova podataka su "Signed/Unsigned" i "Zerrofil". "Signed/Unsigned" atribut označava da li će se u poljima tog tipa čuvati samo pozitivne ili i pozitivne i negativne vrednosti. U zavisnosti od ovog parametra se određuje i donja/gornja granica unetih vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima dodaje nule do definisane dužine (npr. unos vrednosti "4" u polje tipa INT(5) će se odraziti kao vrednost "00004") i automatski postavlja i parametar "Unsigned". Tipovi FLOAT i DOUBLE se koriste za predstavljanje približnih vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23 podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip DOUBLE. MySql automatski podržava zaokruživanje tako da će se vrednost 999.00009 uneta u polje definisano kao ime_polja DOUBLE(5,4) sačuvati kao 999.0001. Tipovi DECIMAL i NUMERIC se koriste za predstavljanje tačnih numeričkih vrednosti. Razlika između ovih tipova i tipova FLOAT i DOUBLE je u tome što se kod tipova DECIMAL i NUMERIC parametar preciznost zahteva kao statički (npr. kurs_dinara DECIMAL(3,2)).

4.2. Tipovi podataka vezani za datum i vreme U tipove podataka namenjenih skladištenju vrednosti vezanih za vreme spadaju:

● DATETIME ● DATE ● TIME ● TIMESTAMP ● YEAR

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

Page 86: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 77 -

Tip podataka “nula” vrednost

DATETIME '0000-00-00 00:00:00'

DATE '0000-00-00'

TIME '00:00:00'

TIMESTAMP '0000-00-00 00:00:00'

YEAR 0000

Tabela 4.2 – Format podataka vezanih za datum i vreme

Navedeni tipovi podataka vezani za datum i vreme nemaju specifične parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar “length”. Podrazumevana vrednost parametar “length” kod tipa TIMESTAMP je 14 a može biti i dodatno navedena:

● 14 (format YYYYMMDDHHMMSS) ● 12 (format YYYYMMDDHHMM) ● 10 (format YYYYMMDDHH) ● 8 (format YYYYMMDD) ● 6 (format YYYYMM) ● 4 (format YYYY) ● 2 (format YY)

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

4.3. Binarni i tekstualni tipovi podataka U tipove podataka namenjenih skladištenju binarnih i tekstualnih vrednosti spadaju:

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

Page 87: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 78 -

CHAR i VARCHAR tipovi podataka su namenjeni za skladištenje kraćih nizova karaktera. Oba tipa imaju parametar “length” (npr. ime CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa može biti numerička vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do 65.536. Osim razlike u dužini stringa koji se skladišti, osnovna razlika između između ovih tipova je način na koji se podaci skladište u bazi. Naime, vrednost parametra “length” se kod tipa CHAR koristi statički tj. razlika između maksimalne dužine i unete dužine stringa se popunjava znakom razmaka. Kod VARCHAR tipa se dužina prilagođava unetoj dužini stringa. BINARY i VARBINARY tipovi su veoma slični CHAR i VARCHAR tipovima sa tom razlikom što su BINARY i VARBINARY tipovi namenjeni skladištenju binarnih podataka. Ova dva tipa podataka su namenjena uglavnom za skladištenje manjih količina podataka. Za skladištenje fajlova u bazi podataka se radije koristi BLOB tip podataka. BLOB tip podataka (Binary Large OBject) i njegove podvarijante (TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene za skladištenje binarnih nizova. TEXT tip podataka i njegove podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su namenjene za skladištenje nizova karaktera različite veličine. BLOB i TEXT tipovi podataka ne mogu imati "default" vrednosti. ENUM tip podataka je namenjen za skladištenje tekstualnih vrednosti s tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga", "treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je ograničena na maksimalno 65.536 elemenata. SET tip podataka je sličan ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata ograničena na 64 elementa kao i da postoje određene razlike pri indeksiranju elemenata liste.

Page 88: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 79 -

4.4. Zahtevi pri skladištenju Numerički tipovi:

Tip podataka Zahtev pri skladištenju TINYINT 1 bajt SMALLINT 2 bajta MEDIUMINT 3 bajta

INT, INTEGER 4 bajta

BIGINT 8 bajtova FLOAT(p) 4B za 0 <= p <= 24; 8B za 25 <= p <= 53

FLOAT 4 bajta

DOUBLE [PRECISION], REAL 8 bajta

DECIMAL(M,D), NUMERIC(M,D) Varira; dato je naknadno objašnjenje

BIT(M) približno (M+7)/8 bajtova Tipovi podataka vezani za datum i vreme:

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

Binarni i tekstualni tipovi podataka:

Tip podataka Zahtev pri skladištenju CHAR(M) M bajtova, 0 <= M <= 255

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

Page 89: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 80 -

Tip podataka Zahtev pri skladištenju

M <= 65535.

BINARY(M) M bajtova, 0 <= M <= 255

VARBINARY(M) L + 1 bajtova, gde je L <= M i 0 <= M <= 255 ili L + 2 bajtova, gde je L <= M and 256 <= M <= 65535.

TINYBLOB, TINYTEXT L+1 bajtova, gde je L < 28

BLOB, TEXT L+2 bajtova, gde je L < 216

MEDIUMBLOB, MEDIUMTEXT L+3 bajtova, gde je L < 224

LONGBLOB, LONGTEXT L+4 bajtova, gde je L < 232

ENUM('vrednost1','vrednost2',...)

1 ili 2 bajta, u zavisnosti od broja članova

SET('vrednost1',vrednost2',...)

1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja članova

4.5. Izbor adekvatnog tipa podataka Pri modeliranju baze podataka veoma je važno odabrati adekvatne tipove podataka tj. definisati tipove i atribute koji odgovaraju potrebama rada sa bazom podataka. U slučaju da kreirani model ne odgovara realnim potrebama u daljem radu se mogu javiti netačne vrednosti u bazi kao i nemogućnost korišćenja svih prednosti DBMS-a. Primer 1: Polje starost (pod kojim podrazumevamo broj godina osobe) je u bazi moguće čuvati i u polju tipa Integer i u polju tipa String. Međutim, odabir tekstualnog tipa podatka onemogućava korišćenje upita tipa:

● prikaži sve osobe mlađe od 30 godina ● prikaži sve osobe stare između 20 i 50 godina ● ...

Primer 2: Polje datum (pod kojim planiramo čuvanje informacije o datumu i vremenu nekog događaja) je u bazi moguće čuvati i u polju tipa Integer i u polju tipa DATETIME ili TIMESTAMP. Odabir numeričkog ili

Page 90: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 81 -

tekstualnog tipa podatka umesto vremenskog onemogućava funkcija vezanih za vremenski tip podatka. Međutim, odabir INTEGER tipa u ovakvim situacijama nije redak slučaj jer se izgubljena funkcionalnost DMBS-a nadoknađuje korišćenjem nekog od programskih jezika koji imaju mogućnost rada sa pomenutim DBMS-om. Takođe, pri izboru tipa podataka treba imati u vidu i zahteve za skladištenjem određenih tipova kao i brzinu rada.

4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima

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

Ostali DBMS MySql DBMS BOOL TINYINT

BOOLEAN TINYINT

CHAR VARYING(M) VARCHAR(M)

DEC DECIMAL

FIXED DECIMAL

FLOAT4 FLOAT

FLOAT8 DOUBLE

INT1 TINYINT

INT2 SMALLINT

INT3 MEDIUMINT

INT4 INT

INT8 BIGINT

LONG VARBINARY MEDIUMBLOB

LONG VARCHAR MEDIUMTEXT

LONG MEDIUMTEXT

MIDDLEINT MEDIUMINT

NUMERIC DECIMAL

Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS

sistemima

Page 91: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 82 -

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

4.7. Unos različitih tipova podataka U zavisnosti od tipa podataka, različiti tipovi podataka imaju različit način unosa pomoću SUBP-a u bazu podataka. • Numerički tipovi podataka

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

INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)

VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Magacin_rb, Cena i Količina su numeričkog tipa i unose se na klasičan način, bez ikakvih specijalnih znakova.

• Vremenski tipovi podataka

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

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

• Binarni i tekstualni tipovi podataka

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

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

Page 92: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 83 -

5. DDL (Data Definition Language)

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

Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE

Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno je ukucati sledeće: CREATE DATABASE PRODAJA; Ovom naredbom kreirana je nova prazna baza podataka pod imenom PRODAJA. Sada je moguće koristiti ovu bazu podataka za dalji rad. Sve što je potrebno jeste izabrati bazu sa kojom želite da radite, samim kreiranjem baze ne podrazumeva se da vi automatski hoćete sa njom da nastavite da radite pa je zato potrebno ukucati sledeću naredbu: USE PROBA; Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa kojom želimo da radimo (ovo je analogno kada u nekom programu izaberemo opciju Open pa izaberemo određeni fajl sa kojim želimo da radimo).

Page 93: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 84 -

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

Page 94: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 85 -

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

Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE

Ukucajte sledeće primere i napravićete nekoliko tabela u bazi podataka PRODAJA koja je kreirana u prvom primeru. CREATE TABLE Artikl ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Magacin_rb INTEGER UNSIGNED NOT NULL, Naziv VARCHAR(255) NULL, Cena FLOAT NULL, Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0, ZemljaPorekla VARCHAR(50) NULL, PRIMARY KEY(rb), INDEX Artikl_FKIndex1(Magacin_rb) ); CREATE TABLE Dobavljac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Naziv VARCHAR(255) NOT NULL, Adresa VARCHAR(255) NULL, Telefon VARCHAR(30) NULL, PRIMARY KEY(rb) );

Page 95: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 86 -

CREATE TABLE Dobavljac_Artikl ( Dobavljac_rb INTEGER UNSIGNED NOT NULL, Artikl_rb INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Dobavljac_rb, Artikl_rb), INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb), INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb) ); CREATE TABLE Kupac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Artikl_rb INTEGER UNSIGNED NOT NULL, Ime VARCHAR(25) NOT NULL, Prezime VARCHAR(25) NOT NULL, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, email VARCHAR(30) NULL, PRIMARY KEY(rb), INDEX Kupac_FKIndex1(Artikl_rb) ); CREATE TABLE Magacin ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY(rb) ); U prethodnim primerima ukucali ste naredbe kojima je kreirano pet različitih tabela u bazi podataka PRODAJA koje ćemo koristiti i u daljim primerima za vežbanje.

Page 96: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 87 -

5.3. Naredbe za definisanje podataka

Omogućuju definisanje resursa relacione baze podataka. Pod resursima BP se najčešće podrazumevaju:

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

Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogući da izvršimo sledeće operacije:

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

Page 97: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 88 -

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

Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX

Kreiraćemo indeks u tabeli Magacin nad poljem Telefon (strukturu tabele pogledajte tamo gde je ona kreirana) sledećom naredbom: CREATE INDEX K2 ON Magacin(Telefon);

Page 98: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 89 -

5.5. Kreiranje virtuelne tabele - "pogleda" Funkcija kreiranja pogleda (VIEW) u bazi podataka putem SUBP-a se odnosi na kreiranje pogleda tj. virtualne tabele koja se koristi u slučajevima kada se često izvršavana neki isti upit nad određenom tabelom ili više tabela u bazi podataka. Tada se kreira pogled tj. view koji se kasnije koristi u radu sa bazom podataka. Kreiranje pogleda bazi podataka se u SQL jeziku vrši pomoću naredbe CREATE VIEW. CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW

Kao što u gore navedenoj strukturi možete primetiti da ovde postoji select_statement što je u stvari SELECT naredba koja je posebno i detaljno objašnjena u četvrtom delu o DML-u a ovde neće biti više reči o tome (za više informacija pogledajte poglavlje 4.3 gde će te videti detaljno objašnjenje ove naredbe i svih njenih opcija. Kreiraćemo pogled nad tabelom magacin (najjednostavnijim oblikom SELECT naredbe) koji će prikazivati sve podatke koji se nalaze u istoimenoj tabeli sledećom naredbom: CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;

Page 99: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 90 -

5.6. Izmena definicije tabele

Funkcija izmene tabele u bazi podataka putem SUBP-a se odnosi na dodavanje, uklanjanje i modifikovanje kolona u tabeli baze podataka. Prethodno navedene operacije nad tabelom u bazi podataka se u SQL jeziku vrši pomoću jedinstvene naredbe ALTER TABLE:

ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (column_definition,...) | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name | ORDER BY col_name | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE | table_options

Slika 5.5 Dokumentovana struktura naredbe ALTER TABLE

Page 100: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 91 -

U zavisnosti od toga šta želimo da promenimo u tabeli, koristićemo različite oblike prethodno navedene naredbe u strukturi koja je prikazana. Za dodavanje nove kolone koristi se ADD: ALTER TABLE Kupac ADD ime_oca CHAR(25); Za uklanjanje kolone iz tabele koristi se DROP: ALTER TABLE Kupac DROP ime_oca; Za izmenu svojstava kolone iz tabele koristi se MODIFY: ALTER TABLE Kupac MODIFY email VARCHAR(40);

Page 101: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 92 -

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

Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW

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

Page 102: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 93 -

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

Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE

Iskoristićemo prethodno opisanu naredbu da bi promenili ime tabele Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati: RENAME TABLE Kupac TO Klijent;

Page 103: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 94 -

5.9. Brisanje tabele iz baze podataka Funkcija brisanja tabele iz baze podataka putem SUBP-a se odnosi na uklanjenje neke od tabela koja je prethodno kreirana u bazi podataka tako da ona više fizički ne postoji u bazi podataka.. Ovde je potrebno uočiti bitnu razliku između naredbe DROP TABLE i naredbe DELETE FROM TABLE. Naredbom DROP TABLE briše se tabela iz baze podataka (napomena: korišćenjem ove naredbe nad tabelom u kojoj se nalaze podaci doći će do gubljenja tih podataka) dok se naredbom DELETE FROM TABLE brišu se svi podaci iz tabele ali se prazna tabela i dalje čuva u bazi podataka tako da se kasnije ponovo može koristiti. Uklanjanje tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe DROP TABLE. DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]

Slika 5.8 Dokumentovana struktura naredbe DROP TABLE

Korišćenjem prethodno navedene naredbe uklonićemo tabelu Klijent iz baze podataka, u skladu sa prethodno navedenost strukturom potrebno je ukucati: DROP TABLE Klijent;

Page 104: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 95 -

5.10. Uklanjanje indeksa iz tabele Funkcija uklanjanja indeksa iz tabele u bazi podataka putem SUBP-a se odnosi na uklanjenje indeksa u nekoj od tabela koji je prethodno kreiran u bazi podataka. Uklanjanje indeksa u nekoj od tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe DROP INDEX.

DROP INDEX index_name ON tbl_name

Slika 5.9 Dokumentovana struktura naredbe DROP INDEX

Korišćenjem prethodne naredbe uklonićemo indeks pod nazivom K2, koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom strukturom potrebno je ukucati: DROP INDEX K2 ON Magacin;

Page 105: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 96 -

5.11. Uklanjanje baze podataka

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

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

Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE

Korišćenjem prethodne naredbe obrisaćemo čitavu bazu podataka koju smo na početku kreirali (PAŽNJA: posle izvršenja ove naredbe baza će biti uništena i dalji rad neće biti moguć), u skladu sa gore navedenom strukturom potrebno je ukucati: DROP DATABASE PRODAJA;

Page 106: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 97 -

6. DML (Data Manipulation Language)

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

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

Efikasnost sistema za upravljanje bazama podataka (SUBP) se može meriti preko sledećih kriterijuma:

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

Page 107: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 98 -

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

Slika 7.1 Dokumentovana struktura naredbe INSERT

Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe INSERT, to možete uraditi na sledeća dva načina: INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); ili INSERT INTO Artikl VALUES (1, 123, 'Artikl br. 1', 199.99, 100, 'Germany'); Postoje dve osnovne razlike između ove dve navedene varijante:

● U prvoj varijanti smo pre vrednosti koje želimo da unesemo u tabelu Artikl naveli kolone u koje želimo da smestimo te vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena kolona već smo samo naveli vrednosti po redosledu u kom se kolone nalaze u tabeli.

● U drugoj varijanti smo zadali vrednost i za polje rb da bi smo ispoštovali broj i redosled kolona pošto ih nismo eksplicitno naveli. Međutim, na ovaj način smo izgubili funkcionalnost parametra AUTO_INCREMENT koji je postavljen na ovu kolonu.

Page 108: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 99 -

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

● Gubi se funkcionalnost parametra AUTO_INCREMENT i DEFAULT.

● Ukoliko naredbu u ovakvom obliku sačuvamo u nekoj internoj ili eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja neke od kolona) ta procedura neće biti validna.

● Moraju se unositi vrednosti za sva polja i to u odgovarajućem redosledu.

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

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

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

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

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

Page 109: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 100 -

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');

Page 110: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 101 -

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

Slika 7.2 Dokumentovana struktura naredbe SELECT

Da bi smo izvršili pregled svih podataka iz tabele Artikl iskoristićemo najosnovniji oblik naredbe SELECT: SELECT * FROM Artikl;

Page 111: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 102 -

Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim kolonama) iz tabele Artikl. +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec) Identična naredba (tj. naredba sa identičnim rezultatom) u ovom slučaju bi bila: SELECT rb, Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla FROM Artikl; Iako su rezultati isti: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)

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

Page 112: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 103 -

Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen parametar rb: +------------+--------------+--------+----------+---------------+ | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +------------+--------------+--------+----------+---------------+ | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 127 | Artikl br. 3 | 190 | 170 | USA | | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 135 | Artikl br. 6 | 397 | 390 | France | | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec) Rezultate možemo sortirati vertikalno i horizontalno. Vertikalno sortiranje se izvodi preko navođenja kolona u redosledu u kom želimo da se prikazuju parametri zapisa: SELECT Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla FROM Artikl; U rezultat ove naredbe: +----------+--------+--------------+------------+---------------+ | Kolicina | Cena | Naziv | Magacin_rb | ZemljaPorekla | +----------+--------+--------------+------------+---------------+ | 100 | 199.99 | Artikl br. 1 | 123 | Germany | | 102 | 299.99 | Artikl br. 2 | 124 | Srbija | | 170 | 190 | Artikl br. 3 | 127 | USA | | 340 | 599.05 | Artikl br. 4 | 127 | Germany | | 140 | 179.97 | Artikl br. 5 | 132 | Switzerland | | 390 | 397 | Artikl br. 6 | 135 | France | | 250 | 269.07 | Artikl br. 7 | 137 | Dansk | +----------+--------+--------------+------------+---------------+ 7 rows in set (0.00 sec) ulaze svi zapisi vertikalno poređani po redosledu u kom su unošeni u tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla. Horizontalno sortiranje se vrši zadavanjem jedne ili više kolona na osnovu čijeg sadržaja će sortiranje biti obavljeno u zadatom smeru: SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;

Page 113: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 104 -

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

ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastućem redosledu. Ukoliko želimo da zapise poređamo u opadajućem redosledu parametar ASC ćemo zameniti sa DESC. Osim vertikalnog ograničavanja rezultata (ograničavanja kolona/parametara zapisa koji ulaze u rezultat) SQL jezik podržava i horizontalno ograničavanje (ograničavanje zapisa koji ulaze u rezultat) preko sledećih parametara naredbe SELECT:

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

Page 114: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 105 -

6.3.1. Klauzula WHERE

Ova klauzula se koristi za zadavanje odredjenog uslova koji zapis mora da ispuni da bi ušao u rezultat: SELECT * FROM Artikl WHERE rb=5; Ovakvim korišćenje WHERE klauzule smo rezultat ograničili samo na zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 1 row in set (0.00 sec)

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

= SELECT * FROM Artikl WHERE

rb=1; Jednako

<> SELECT * FROM Artikl WHERE

rb<>1; Nije jednako

< SELECT * FROM Artikl WHERE

rb<1; Veće od

> SELECT * FROM Artikl WHERE

rb>1; Manje od

<= SELECT * FROM Artikl WHERE

rb<=1; Veće ili jednako

>= SELECT * FROM Artikl WHERE

rb>=1;

Manje ili

jednako

BETWEEN

SELECT * FROM Artikl WHERE rb

BETWEEN 1 AND 5;

Između dve

vrednosti

LIKE SELECT * FROM Artikl WHERE

Naziv LIKE 'Artik%'; SIMBOLIČK

O POREĐENJE IN SELECT * FROM Artikl WHERE rb

IN (1,3,5);

Univerzalno

poređenje

Page 115: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 106 -

Dodatna objašnjenja: - Simboličko poređenje

- ● Klauzula LIKE omogućuje pretraživanje na osnovu "UZORKA"

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

Primeri:

... gde se ime završava sa N. WHERE IME LIKE '%N' ... gde je treći karakter imena R.

WHERE IME LIKE 'R%' ... gde je ime dugačko 5 karaktera

WHERE IME LIKE ' '

... gde ime nije dugačko 5 karaktera. WHERE IME NOT LIKE '__'

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

- Univerzalno poređenje ● IN koristimo da prikažemo zapise koje pripadaju skupu

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

Page 116: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 107 -

Klauzula WHERE nije ograničena na postavljanje samo jednog uslova (što se može primetiti već kod parametra IN). Više uslova se može kombinovati pomoću logičkih operatora AND i OR: SELECT * FROM Artikl WHERE ( (rb>1 AND rb<3) OR (rb>3 AND rb<5) AND Naziv LIKE 'Artik%' ); Ovom naredbom smo dobili rezultat: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | +----+------------+--------------+--------+----------+---------------+

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

Page 117: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 108 -

6.3.2. Klauzula DISTINCT Ova klauzula se koristi za eliminisanje duplih zapisa iz prikaza: SELECT DISTINCT ZemljaPorekla FROM Artikl; Rezultat ove komande: +---------------+ | ZemljaPorekla | +---------------+ | Germany | | Srbija | | USA | | Switzerland | | France | | Dansk | +---------------+ 6 rows in set (0.00 sec) sadrži listu svih zemalja iz kojih artikli potiču ali bez ponavljanja.

Page 118: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 109 -

6.3.3. Klauzula LIMIT Ova klauzula se koristi za ograničavanje broja zapisa koji ulaze u rezultat bez obzira da li su ispunili eventualni uslov. Parametar LIMIT može imati jedan ili dva naknadna parametra (prvi koji definiše koliko prvih zapisa treba preskočiti i drugi koji definiše koliko zapisa treba prikazati). Ukoliko se zada samo jedan parametar on se odnosi na broj zapisa koje treba prikazati počev od prvog zapisa. Naredba sa jednim parametrom: SELECT * FROM Artikl LIMIT 5; vraća prvih 5 zapisa: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 5 rows in set (0.00 sec) dok ista naredba sa dva parametra: SELECT * FROM Artikl LIMIT 5,10; vraća zapise od 6. do 15.: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 2 rows in set (0.00 sec)

Page 119: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 110 -

6.3.4. Klauzule GROUP BY / HAVING Klauzula GROUP BY se koristi za grupisanje podataka koji se dobijaju kao rezultat upita, a klauzula HAVING se koristi za selekciju određenih grupa koje su već kreirane GROUP BY klauzulom. SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla; Korišćenjem naredbe u ovakvom obliku kao rezultat dobićemo spisak svih zemalja i broj artikala koji potiče iz koje zemlje. +---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Germany | 2 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 6 rows in set (0.02 sec) Ukoliko želimo da iz rezultata prikažemo samo podatke koji ispunjavaju određeni kriterijum, to će mo uraditi uz pomoć klauzule HAVING, na sledeći način: SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla HAVING COUNT(*)=1; Na ovaj način kao rezultat dobićemo spisak zemalja iz kojih dolazi samo po jedan proizvod. +---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 5 rows in set (0.02 sec)

Page 120: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 111 -

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

Slika 7.3 Dokumentovana struktura naredbe UPDATE za jednu tabelu

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

Slika 7.4 Dokumentovana struktura naredbe UPDATE za više tabela

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

Page 121: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 112 -

+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec) Ukoliko želimo da više parametara (kolona) izmenimo jednim upitom, navešćemo više kolona i vrednosti odvojenih zarezom: UPDATE Artikl SET Cena=2000.00, Kolicina=46 WHERE ZemljaPorekla='Germany'; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec) Ukoliko želimo da u za vrednost koristimo već postojeću vrednost u nekoj od kolona za vrednost ćemo navesti kolonu zapisa čiju vrednost želimo da primenimo: UPDATE Artikl SET Kolicina=Cena WHERE ZemljaPorekla='Germany'; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)

Page 122: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 113 -

Ukoliko želimo da u za vrednost koristimo već postojeću vrednost uz primenu matematičke operacije: UPDATE Artikl SET Cena=Cena*1.18; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2360 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1180 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1180 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2360 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1180 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1180 | 390 | France | | 7 | 137 | Artikl br. 7 | 1180 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)

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

Page 123: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 114 -

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

Page 124: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 115 -

6.5. Uklanjanje podataka Funkcija uklanjanja podataka u bazi putem SUBP-a se odnosi na uklanjanje podataka iz neke (jedne ili više) od tabela u bazi podataka. Moguće je ukloniti samo kompletne redove tabela (uklanjanje vrednosti parametara zapisa se vrši pomoću naredbe UPDATE). Uklanjanje podataka se u SQL jeziku vrši pomoću naredbe DELETE. DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu

Osnovni oblik komande DELETE izgleda ovako: DELETE FROM Artikl; i njome su uklonjeni svi zapisi iz tabele Artikl. Ukoliko želimo da uklanjenje ograničimo samo na određene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1): DELETE FROM Artikl WHERE ZemljaPorekla='Germany'; Parametar LIMIT (videti deo 4.3.3) služi za ograničavanje broja kolona na koje ćemo primeniti uklanjanje: DELETE FROM Artikl LIMIT 10;

Page 125: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 116 -

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

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

Kreiranje novih korisničkih naloga nije neophodno zasebno obaviti pre izmene privilegija već se novi nalog (ili nova varijanta postojećeg naloga) može kreirati samom dodelom privilegija. Prve tri naredbe su dostupne počev od verzije MySql-a 5.0 sa određenim izmenama u verziji 5.0.2. Osnovne naredbe za rad sa privilegijama su:

● GRANT ● REVOKE ● FLUSH PRIVILEGES

Page 126: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 117 -

7.1. Naredba CREATE USER Naredba CREATE USER služi za kreiranje novih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju INSERT privilegiju za sistemsku mysql bazu podataka. CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...

Slika 8.1 Dokumentovana struktura naredbe CREATE USER

Osnovni oblik korišćenja ove naredbe je: CREATE USER 'korisnik'; Ukoliko želimo da korisničkom nalogu pridružimo i hostname računara sa koga je dozvoljen pristup, naredba je: CREATE USER '[email protected]'; Ukoliko želimo da korisničkom nalogu pridružimo i lozinku, naredba je: CREATE USER 'korisnik' IDENTIFIED BY 'lozinka'; Ukoliko želimo da istovremeno kreiramo više korisničkih naloga, naredba je: CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1', 'korisnik2' IDENTIFIED BY 'lozinka2';

Page 127: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 118 -

7.2. Naredba RENAME USER Naredba RENAME USER služi za izmenu postojećih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju UPDATE privilegiju za sistemsku mysql bazu podataka. RENAME USER old_user TO new_user [, old_user TO new_user] ...

Slika 8.2 Dokumentovana struktura naredbe RENAME USER

Osnovni oblik korišćenja ove naredbe je: RENAME USER 'korisnik1' TO 'korisnik2';

Page 128: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 119 -

7.3. Naredba DROP USER Naredba DROP USER služi za izmenu postojećih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju DELETE privilegiju za sistemsku mysql bazu podataka. DROP USER user [, user] ...

Slika 8.3 Dokumentovana struktura naredbe DROP USER

Osnovni oblik korišćenja ove naredbe je: DROP USER 'korisnik1'; Ukoliko želimo da istovremeno uklonimo više korisničkih naloga, naredba je: DROP USER 'korisnik1', 'korisnik2';

Page 129: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 120 -

7.4. Naredba SET PASSWORD Naredba SET PASSWORD služi za promenu pristupne lozinke postojećih korisničkih naloga na SUBP. Ovom naredbom je moguće promeniti lozinku za sopstveni nalog kao i lozinku za ostale korisničke naloge ukoliko aktivni korisnički nalog ima UPDATE privilegiju za sistemsku mysql bazu podataka. SET PASSWORD [FOR user] = PASSWORD('some password')

Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD

Osnovni oblik korišćenja ove naredbe je: SET PASSWORD = PASSWORD('nova lozinka'); Ukoliko želimo da promenimo lozinku za tuđi korisnički nalog, naredba je: SET PASSWORD FOR 'korisnik2' = PASSWORD('nova lozinka');

Page 130: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 121 -

7.5. Dodela privilegija (GRANT) Naredba GRANT omogućava administratorima SUBP-a da određenom koričkom nalogu dodele određene privliegije nad određenim objektima baze podataka. S obzirom na to da ukoliko se privilegije dodeljuju nalogu koji ne postoji na SUBP on se automatski kreira, ovom naredbom je moguće i kreirati nove korisničke naloge. Za korišćenje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je moguće dodeliti privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom nalogu.

GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE NONE | [{SSL| X509}] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option] ...] object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count

Slika 8.5 Dokumentovana struktura naredbe GRANT

Page 131: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 122 -

Osnovna dodela privilegija se vrši naredbom: GRANT ALL ON database_name.table_name TO 'korisnik@hostname' IDENTIFIED BY 'lozinka'; Dodela privilegija na globalnom nivou (svim objektima - bazama, tabelama, kolonama -u SUBP) se vrši naredbom: GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY 'lozinka' Dodela privilegija na globalnom nivou baze podataka se vrši naredbom: GRANT ALL ON db_name.* TO 'korisnik' IDENTIFIED BY 'lozinka' Dodela privilegija na globalnom nivou tabele u bazi se vrši naredbom: GRANT ALL ON db_name.table_name TO 'korisnik' IDENTIFIED BY 'lozinka' Takođe, moguća je (mada se retko koristi) dodela privilegija i na nivou kolone u tabeli kao i rutine.

Page 132: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 123 -

Privilegije Značenje ALL [PRIVILEGES] Sets all simple privileges except GRANT OPTION ALTER Allows use of ALTER TABLE CREATE Allows use of CREATE TABLE CREATE TEMPORARY TABLES Allows use of CREATE TEMPORARY TABLE

CREATE VIEW Allows use of CREATE VIEW DELETE Allows use of DELETE DROP Allows use of DROP TABLE EXECUTE Allows the user to run stored procedures (MySQL 5.0) FILE Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE INDEX Allows use of CREATE INDEX and DROP INDEX INSERT Allows use of INSERT

LOCK TABLES Allows use of LOCK TABLES on tables for which you have the SELECT privilege

PROCESS Allows use of SHOW FULL PROCESSLIST REFERENCES Not yet implemented RELOAD Allows use of FLUSH REPLICATION CLIENT Allows the user to ask where the slave or master servers are

REPLICATION SLAVE Needed for replication slaves (to read binary log events from the master)

SELECT Allows use of SELECT SHOW DATABASES SHOW DATABASES shows all databases SHOW VIEW Allows use of SHOW CREATE VIEW SHUTDOWN Allows use of mysqladmin shutdown

SUPER 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

UPDATE Allows use of UPDATE USAGE Synonym for ``no privileges'' GRANT OPTION Allows privileges to be granted

Tabela 8.1 Moguće vrednosti za dodelu odnosno oduzimanje privilegija

Page 133: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 124 -

7.6. Oduzimanje privilegija (REVOKE) Naredba REVOKE omogućava administratorima SUBP-a da određenom koričkom nalogu oduzmu određene privliegije nad određenim objektima baze podataka. Za korišćenje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je moguće oduzeti privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom nalogu. REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ...

Slika 8.6 Dokumentovana struktura naredbe REVOKE

Osnovno oduzimanje privilegija se vrši naredbom: REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';

Page 134: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 125 -

7.7. Primena izmena (FLUSH) Naredba FLUSH služi za ponovo učitavanje parametara sistema koji se nalaze keširani u memoriji. Za izvršavanje ove naredbe potrebno je imati RELOAD privilegiju. FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_option [, flush_option] ...

Slika 8.7 Dokumentovana struktura naredbe FLUSH

Flush_option: Objašnjenje: HOSTS Pražnjenje keša host tabele

DES_KEY_FILE Ponovno učitavanje DES ključa

LOGS Zatvaranje i otvaranje svih log fajlova

MASTER Brisanje i ponovno kreiranje svih log fajlova

PRIVILEGES Ponovno učitavanje svih privilegija iz GRANT tabele

QUERY CACHE Defragmentacija keširanih upita

SLAVE Resetovanje svih replikacija sekundardnih parametara

STATUS Resetovanje svih statusnih promenljivu na 0

USER_RESOURCES Resetovanje svih resursa iz prethodnih sati na 0

Tabela 8.2 Moguće vrednosti za flash_option parametar

Page 135: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 126 -

8. Zadaci za vežbu DML

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

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

5 rows in set (0.00 sec)

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

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

6 rows in set (0.00 sec) 3. Prikazati sve podatke sa svim poljima iz tabele Magacin 4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac 5. Prikazati sve podatke iz tabele Dobavljac u sledećem redosledu polja:Naziv, Rb, Telefon, Adresa 6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet po opadajućem redosledu 7.Prikazati iz tabele Dobavljac sledeća polja: Rb, Adresa, Telefon, za dobavljača koji se nalazi u Dalmatinskoj 43 8. Prikazati iz tabele Magacin prva četiri zapisa

Page 136: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 127 -

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

Page 137: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 128 -

9. DODATAK

9.1. Izrazi i funkcije Pored prikazivanja prostih vrednosti memorisanih u tabelama baze podataka, SQL ima više funkcija koje mogu biti korišćene za dobijanje sumarnih informacija, kao i mogućnost primene aritmetičkih funkcija i funkcija nad stringovima (nizovima karaktera).

Aritmetičke funkcije

Funkcije za dobijanje sumarn.ih informacija su: AVG (atribut) - izračunava srednju vrednost SUM (atribut) - izračunava ukupnu vrednost MIN (atribut) - nalazi minimalnu vrednost MAX (atribut) - nalazi maksimalnu vrednost

Ove funkcijesu definisane nad numeričkim kolonama. Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva oblika:

COUNT (*) - nalazi broj n-torki u grupi COUNT (atribut) - nalazi NOT-NULL vrednosti kolone

Funkcije nad nizom karaktera U SQL-u su definisane brojne funkcije nad kolonama tipa character. Najčešće se primenjuju sledeće:

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

Page 138: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 129 -

SQL podržava sledeće aritmetičke funkcije: POWER (broj. e) - diže broj na e-ti stepen ROUND (broj [.d]) - zaokružuje broj na d decimala TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta ABS (broj) - naiazi apsolutnu vrednos; broja SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0, -1 ako je broj <0. MOD (broji, broj2) - izračunava broji moduo broj2 SQRT (broj) - nalazi pozitivan kvadratni koren broja

Page 139: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 130 -

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

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

Page 140: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 131 -

Ukoliko ste prvi put startovali program automatski je otvoren novi projekat na kome možete raditi i kasnije ga sačuvati, a ukoliko ste već radili u ovom programu izaberite iz menije File opciju New posle čega možete početi da radite na projektu. Da bi ste počeli da radite na kreiranju grafičke predstave vaše baze podataka prvo je potrebno kreirati novu regiju u kojoj će se nalaziti elementi vaše baze podataka. To će te uraditi tako što će te izabrati opciju New Region koja se nalazi uz levu ivicu prozora programa, pogledajte sledeću sliku:

Slika 11.2 Kreiranje nove regije

Page 141: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 132 -

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

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

Page 142: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 133 -

Slika 11.4 Promena imena regije

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

Page 143: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 134 -

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

Slika 11.5 Kreiaranje nove tabele

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

Slika 11.5 Prva tabela je kreirana u regiji

Page 144: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 135 -

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

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

Page 145: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 136 -

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

Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu

Kao što možete videti na slici, za polje rb je postavljen atribut DataType automatski na INTEGER, ukoliko želite ovo da promenite kliknite na strelicu pored posle čega će se pojaviti izlistane moguće vrednosti za ovo polje gde je potrebno izabrati željenu vrednost, pogledajte sledeću sliku:

Page 146: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 137 -

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

Page 147: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 138 -

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

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

Slika 11.10 Sve tabele koje je potrebno kreirati

Page 148: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 139 -

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

Slika 11.11 Kreiranje relacije 1:1

Page 149: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 140 -

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

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

Slika 11.13 Prva relacija je kreirana

Page 150: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 141 -

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

Slika 11.15 Izmena svojstava relacije

Page 151: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 142 -

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

Slika 11.16 Druga relacija je kreirana

Page 152: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 143 -

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

Slika 11.17 Kreiranje relacije n:m

Page 153: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 144 -

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

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

Page 154: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 145 -

im imena Rel_03 i Rel_04. Na način koji je objašnjen ranije promenite imena ovih relacija u Relacija3 i Relacija4. Sada je potrebno promeniti i neka svojstva vezne tabele. Pošto je ovde u pitanju tabela kao i svaka druga bez obzira što ona u ovoj relaciji služi kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz padajućeg menija izabrati Edit Object, posle ćega će se na ekranu pojaviti prozor kao na sledećoj slici:

Slika 11.19 Izmena svojstava vezne tabele U polje Table Name upišite Dobavljač_Artikl da bi promenili ime vezne tabele, zatim u polju za rad sa ključevima u delu prozora Indices dva puta kliknite levim tasterom na ključ Dobavljac_Has_Artikl_FKIndex1 i na ekranu će se pojaviti prozor kao na slici:

Page 155: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 146 -

Slika 11.20 Promena imena ključa U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1 da bi promenili ime prvog ključa, isti postupak ponovite ponovo i promenite ime ključa Dobavljac_has_Artikl_FKIndex2 u Dobavljac_Artikl_FKIndex2. Ako ste sve uradili kako treba konačna grafička prezentacija ove baze podataka izgledaće kao na sledećoj slici:

Slika 11.21 Konačna shema BP

Page 156: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 147 -

I na kraju, sada kada imamo kompletnu bazu podataka grafički predstavljenu, kao što se može videti na prethodnoj slici, koja se sastoji od 5 tabela koje su medjusobno povezane, moguće je direktno ovakvu grafičku predstavu uz pomoć DBDesigner-a automatski prevesti u SQL naredbe. Da bi to uradili potrebno je prvo konektovati se na određenu bazu podataka koja je prethodno kreirana u MySQL-u, a to se radi uz pomoć menija Database koji možete pogledati kako izgleda na sledećoj slici:

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

Slika 11.23 Konektovanje na postojeću MySQL bazu podataka

Page 157: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 148 -

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

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

Page 158: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 149 -

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

Slika 11.25 Sinhronizacija sa bazom podataka

Page 159: Praktikum Baze - Finnal · 2017-03-10 · PREDGOVOR Ova skripta je namenjena prevashodno studentima treće godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo

- 150 -

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