FAKULTET ZA POSLOVNU INFORMATIKU

Size: px
Start display at page:

Download "FAKULTET ZA POSLOVNU INFORMATIKU"

Transcription

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

2 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: Tiraž: 250 primeraka Štampa: CICERO-print Beograd

3 SADRŽAJ: 1. UVOD U BAZE PODATAKA Uvod Osnovni koncepti i definicije Podatak Informacija Metapodaci - podaci o podacima (metadata) Sistem za upravljanje bazama podataka Klasičan sistem zasnovan na datotekama Nedostaci sistema zasnovanog na datotekama Pristup zasnovan na bazama podataka Prednosti pristupa zasnovanog na bazama podataka Troškovi i rizici pristupa zasnovanog na bazama podataka Primene baza podataka Lične baze podataka Baze podataka za radne grupe Baze podataka odeljenja Baze podataka organizacija Internet, Intranet i Extranet baze podataka Tipično okruženje baze podataka Istorija razvoja baza podataka Modelovanje Razvoj konceptualnih modela Entiteti Veze između entiteta Troslojna arhitektura baze podataka Modeli baza podataka Hijerarhijski model Mrežni model Relacioni model Objektni model Transakcije Osobine transakcija

4 COMMIT i ROLLBACK Konkurentno izvršavanje transakcija Oporavak baze podataka Osnovne karaketristike savremenih baza podataka Zaključak Literatura O SQL-U INSTALACIJA, KONFIGURISANJE I POKRETANJE MYSQL-A Proces isntalacije Konfigurisanje MySQL servera Pokretanje MySQL-a SQL TIPOVI PODATAKA Numerički tipovi podataka Tipovi podataka vezani za datum i vreme Binarni i tekstualni tipovi podataka Zahtevi pri skladištenju Izbor adekvatnog tipa podataka Sinhronizacija tipova podataka sa drugim DBMS sistemima Unos različitih tipova podataka DDL (DATA DEFINITION LANGUAGE)

5 5.1. Kreiranje baze podataka Kreiranje tebele u bazi podataka Naredbe za definisanje podataka Kreiranje indeksa u bazi podataka Kreiranje virtuelne tabele - "pogleda" Izmena definicije tabele Izmena pogleda u bazi podataka Promena imena tabele u bazi podataka Brisanje tabele iz baze podataka Uklanjanje indeksa iz tabele Uklanjanje baze podataka DML (DATA MANIPULATION LANGUAGE) Manipulisanja podacima Unos podataka Pregled podataka Klauzula WHERE Klauzula DISTINCT Klauzula LIMIT Klauzule GROUP BY / HAVING Izmena podataka Uklanjanje podataka DCL (DATA CONTROL LANGUAGE) Naredba CREATE USER

6 7.2. Naredba RENAME USER Naredba DROP USER Naredba SET PASSWORD Dodela privilegija (GRANT) Oduzimanje privilegija (REVOKE) Primena izmena (FLUSH) ZADACI ZA VEŽBU DML DODATAK Izrazi i funkcije DB DESINGER

7

8 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 godine Autori

9

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

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

12 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 = 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 = bajtova). U širem smislu, bazu podataka možemo posmatrati kao integrisani skup podataka o nekom sistemu i skup postupaka za njihovo održavanje i korišćenje, organizovan prema potrebama korisnika. To je dobro struktuirana - 3 -

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

14 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

15 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ć Marko Marković Janko Janković 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ć PP 2002 Marko Marković RGD 2001 Janko Janković PP RGD

16 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

17 Broj upisanih studenata po školama Ostali; 63 Ekonomska škola; 45 Gimnazija; 58 Tehnička škola; 79 Gimnazija Tehnička škola Ekonomska škola Ostali Broj upisanih studenata po godinama 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

18 Slika 1.4 Obradom prikupljenih podataka nastaje informacija Metapodaci - podaci o podacima (metadata) Podaci koji se prikupljaju i čuvaju u bazi podataka često se nazivaju i podaci krajnjih korinika (end user data). Metapodaci su podaci koji opisuju svojstva ili karakteristike podataka krajnjih korisnika i kontekst tih podataka. Neka tipična svojstva podataka su naziv (ime) podatka, definicija, dužina (veličina), i dozvoljene vrednosti. Kontekst podataka, koji opisuju metapodaci, podrazumeva izvor podataka, gde se čuvaju podaci, vlasništvo i korišćenje. Tabela 1.1 Primer metapodataka Naziv Tip Duž. Min Max Opis Izvor Ime Text 30 Ime i prezime Lična karta studenta JMBG Integer 1 Jedinstven Lična karta matični broj Smer CHAR 3 Smer na 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 - 9 -

19 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 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

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

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

22 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

23 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

24 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

25 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

26 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

27 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

28 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 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

29 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

30 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 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 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

31 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 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

32 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

33 č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? 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

34 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 telekomunikacionoračunarske mreže 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

35 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

36 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

37 1.6. Tipično okruženje baze podataka Glavni delovi tipičnog okruženja baze podataka i njihove veze su prikazani na slici 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

38 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

39 1.7. Istorija razvoja baza podataka Nastanak baza podataka se vezuje za Herman-a Holerith-a koji je 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 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

40 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 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

41 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 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)

42 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 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

43 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

44 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. Relan svet Izlaz1 Ulaz Cilj svakog modela je da učini da je: Izlaz1~Izlaz2 Programi za održavanje Baza podataka Programi za izveštavanje Izlaz2 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

45 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 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)

46 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 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/ 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

47 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 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

48 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

49 Slika 1.14 Preslikavanje tipa M:N 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,

50 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. Eksterni model (sloj) Konceptualni model (sloj) Interni model (sloj) Model A A Podaci 1 Model B B Podaci 2 Podaci 3 Model C C Podaci N Slika 1.15 Troslojna arhitektura baze podataka

51 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 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

52 Hijerarhijski model Hijerarhijski model je najstariji od svih modela baza podataka, i za razliku od mrežnog, relacionog ili objektno orjentisanog, nema dobro dokumentovanu istoriju svoje koncepcije i početne verzije ovakvog modela. Ovaj model se razvio iz informacionog sistema za upravljanje u 50-tim i 60-tim godinama prošlog veka. Usvojen je u mnogim bankama i osiguravajućim društvima koji ga, kao nasleđe, i danas koriste. U hijerarhijskom modelu podaci su smešteni u seriju slogova (zapisa) Da bi se uspostavila veza između slogova, hijerarhijski model uspostavlja relaciju roditelj naslednik. Ovo je takozvano 1:N mapiranje između slogova koje se radi korišćenjem stabla. U ovom modelu, relacije su takve da jedan naslednik može imati samo jednog roditelja, ali roditelj može imati više naslednika. Roditelji i naslednici su povezani vezama koje se nazivaju pokazivači (u fizičkoj realizaciji to je adresa u memoriji gde se slog nalazi). Roditelj ima listu pokazivača za svakog od svojih naslednika. Hijerarhijski model je dobro uređena struktura, koja podseća na hijerarhijsku strukturu u npr. državi, vojsci ili nekoj velikoj organizaciji. Direktor Zamenik Zamenik Zamenik O O O O O O O O R R R R R R R R R R R R R R R R R R Slika 1.16 Šematski prikaz jednog hijerarhijskog modela Pravilo roditelj naslednik omogućava pristup podacima. Da bi se došlo do tabele na nižem nivou, kreće se od korena i ide prema dole kroz stablo dok se ne dođe do cilja. Naravno, očigledan problem sa ovim modelom je

53 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 Mrežni model Mrežni model je prvi put predstavljen 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

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

55 U srcu relacionog modela nalazi se koncept tabele (koja se naziva i relacija) u kojoj su smešteni svi podaci. Svaka tabela je načinjena od slogova (redova u tabeli), a svaki slog ima svoja polja (atribute). Osnovne karakteristike relacionog modela podataka su sledeće: Sve se predstavlja relacijama (tabelama) Zasniva se na strogoj matematičkoj teoriji Minimalna redudansa podataka Jednostavno ažuriranje podataka Izbegnute su anomalije ažuriranja Redosled kolona i redova ne utiče na informacioni sadržaj tabele Ne mogu da egzistiraju dva identična reda (rekorda) u jednoj tabeli Svaki red se može jednoznačno odrediti (postoji primarni ključ)... U relacionom modelu podataka klase objekata se predstavljaju tabelama. Na primer klasa STUDENT se može opisati atributima BROJ INDEKSA i IME i klasa KNJIGA sa itributima ŠIFRA KNJIGE i NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele može biti sledeće: Student BrInd Ime 75/01 Marko 22/02 Petar 156/03 Milan 112/02 Dragan Knjiga SifK Naziv 001 Računovodstvo 002 Baze podataka 003 Osnove finansija Poslovna i f ik Marketing Slika 1.18 Tabela je osnovni objekat relacione baze podataka Prethodna dva objekta sa svojim atributima grafički se mogu predstaviti na sledeći način:

56 BrInd SifK Student Knjiga Ime Naziv Slika 1.19 Grafički prikaz objekata i njihovih atributa U realnom svetu objekti međusobno stupaju u veze. Na jednom fakultetu studenti drže (pozajmljuju iz biblioteke) pojedine knjige. Može se uočiti da je veza između ova dva posmatrana objekta tipa M:N, tj. više studenata mogu da drže jednu knjigu, a jedna knjiga može biti kod više studenata. Neka je trenutna situacija iz realnog sveta prikazana na sledećoj slici: Student Knjiga BrInd Ime SifK Naziv 75/01 Marko 22/02 Petar 156/03 Milan 112/02 Dragan 001 Računovodstvo 002 Baze podataka 003 Osnove finansija 004 Poslovna informatika 005 Marketing Slika 1.20 Veze između objekata realnog sveta formira se klasa veza Klasa veza se može posmatrati kao zaseban entitet, a taj entitet može da ima svoje posebne atribute. U našem primeru, klasa veza DRŽI može da ima kao atribut DATUM od kada student drži određenu knjigu. Neka je trenutna situacija iz realnog sveta prikazana sledećom slikom:

57 Student BrInd Ime 75/01 Marko 22/02 Petar 156/03 Milan 112/02 Dragan Drži Knjiga SifK Naziv 001 Računovodstvo 002 Baze podataka 003 Osnove finansija 004 Poslovna informatika 005 Marketing Slika 1.21 Klasa veza može da ima svoje atribute Grafički prikaz navedenog dat je na sledećoj slici BrInd Datum SifK Student Drži Knjiga Ime Naziv Slika 1.22 Klasa veza može da ima svoje atribute Suština relacionog modela je da se i klase objekata i klase veza između objekata predstavljaju na jedinstven način, tj. preko tabela. U našem primeru postoje tri tabele: STUDENT, KNJIGA i DRŽI. U relacionom modelu podataka tabela se definiše kao relacija, koja mora da ispuni odgovarajuće uslove. Svaka relacija mora da ima primarni ključ jedan ili više atributa koji na jedinstven način opisuju svaki zapis u jednoj tabeli. Primarni ključ se pažljivo bira. Na primer u klasi studenata loš izbor primarnog ključa bi bio atribut IME, zato što se mogu pojaviti dva studenta sa istim imenom. Dobar izbor primarnog ključa je atribut Broj indeksa, zato što ne postoje dva studenta sa istim brojem indeksa. Za klase objekata Student i Knjiga vrši se prevođenje u relacioni model na sledeći način (podvlačenjem su označeni atributi koji čine primarni ključ):

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

59 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 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

60 drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP rezultuje boljim performansama baze podataka. Posmatrajmo primer u kome se vodi evidencija o Studentima sa svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji student poseduje. Dalje, vodi se evidencija o Automobilima sa svojstvima Naziv automobila, Registarski broj, Boja, Godište i Vlasnik. Prethodni primer se može prikazati na sledeći način Student BrInd Ime Prezime Fakultet Automobil 123/05 Marko Marković FPI Golf Automobil Naziv RegBr Boja Godište Vlasnik Golf BG Belo 1993 Marko Slika 1.24 U objektno orijentisanim BP tip podatka može biti drugi objekat Objektno orjentisani DBMS-ovi omogućavaju čuvanje objekata direktno, bez mapiranja za različite strukture podataka. Relacioni DBMS zahteva mapiranje iz objekata u tabele. U objektno orijentisanom modelu, informacija je sačuvana kao stalni objekt, a ne kao red u tabeli. Ovo sistem čini efikasnijim u smislu prostora potrebnog za smeštanje i čuvanje podataka i osigurava da korisnik manipuliše podacima samo na onaj način koji je programer odredio. S druge strane, obzirom da se kontrola vrši na veoma niskom nivou, mnogo je teže za treću stranu da napravi neki dodatak. Dok kod

61 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 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

62 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 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

63 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 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

64 vrednosti posle sa log fajla, što omogućava očuvanje konzistentnog stanja Konkurentno izvršavanje transakcija Nad modernim bazama podataka transakcije se ne obavljaju u izolovanosti već konkurentno. Više transakcija mogu istovremeno zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama otvara se mogućnost da nekontrolisan međusobni uticaj transakcija dovede do nekonzistentnog stanja. Transakcija1 Transakcija2 Istovremeno izvršavanje sve tri transakcije Paralelno izvršavanje transakcija vreme Transakcija3 Transakcija1 Transakcija2 Transakcija3 Serijsko izvršavanje transakcija Slika 1.25 Paralelno i serijsko izvršavanje transakcija DBMS upravlja konkurentnim radom više aplikacija (korisnika), obezbeđuje sinhronizaciju njihovog rada, a sve u cilju sprečavanja štetnih posledica pri promenama koje se vrše nad bazom podataka u višekorisničkom okruženju. Komponente DBMS koje učestvuju u ovom procesu su: Planer (Scheduler), Menadžer transakcija (Transaction manager). Planer vodi računa o redosledu akcija kod više konkurentnih transakcija. Ako čitanje ili upisivanje može da naruši integritet baze podataka, zahtev

65 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 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 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

66 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 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

67 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

68 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

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

70 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 godine. Što je na istom mestu gde je i E.F. Codd 1970 definisao osnovne koncepte relacionog modela podataka SQL koji su bili osnova za dalji razvoj relacionih baza podataka. SQL je uspešno primenjen u sistemima za upravljanje bazom podataka kao što su MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase itd. Osnovne karakteristike SQL-a: 1. Jednostavnost i jednobraznost pri korišćenju Tabela (relacija) se kreira jednom izvršnom naredbom. Odmah po kreiranju tabela je raspoloživa za korišćenje. Svi podaci memorisani su u tabelama i rezultat bilo koje operacije se logički prikazuje u obliku tabele. 2. Mogućnost interaktivnog i klasičnog (aplikativnog) programiranja Koristeći SQL dobijaju se odgovori na trenutne, unapred ne predvidene zahteve ili se SQL blokovi "ugrađuju" u klasični viši programski jezik (FORTRAN, COBOL. PL/I, C) omogućujući klasičnu obradu gde korisnik same aplikacije najčešće uopšte nije ni svestan da koristi SQL. 3. Neproceduralnost (tj. proceduralnost u minimalnom stepenu). Ni za jedan jezik se ne može reći da je potpuno neproceduralan, već da je neproceduralan u većem ili manjem stepenu. SQL je u velikoj meri neproceduralan jer definiše ŠTA, a ne KAKO: koji podaci se žele, koje tabele se referenciraju i koji uslovi treba da budu ispunjeni, bez precizne specifikacije procedure za dobijanje željenih podataka. Preciznije rečeno SQL je na višem nivou apstrakcije nego klasični viši programski jezici, odnosno mnogi

71 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

72 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:

73 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:

74 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:

75 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:

76 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

77 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:

78 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:

79 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:

80 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:

81 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

82 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:

83 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

84 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) 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 tinyint 1 smallint 2 mediumint 3 int 4 bigint 8 Signed/Unsigned Signed/Unsigned Tabela 4.1 Integer tipovi podataka

85 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 podrazumeva tip DOUBLE. MySql automatski podržava zaokruživanje tako da će se vrednost uneta u polje definisano kao ime_polja DOUBLE(5,4) sačuvati kao 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)) 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 je prikazan format podataka vezanih za datum i vreme

86 Tip podataka DATETIME DATE TIME TIMESTAMP YEAR 0000 nula vrednost ' :00:00' ' ' '00:00:00' ' :00:00' 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 se konvertuju u dok se vrednosti konvertuju u 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

87 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 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 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

88 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 DATE DATETIME TIMESTAMP TIME YEAR Zahtev pri skladištenju 3 bajta 8 bajtova 4 bajta 3 bajta 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 <=

89 Tip podataka Zahtev pri skladištenju M <= 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 <= TINYBLOB, TINYTEXT L+1 bajtova, gde je L < 2 8 BLOB, TEXT L+2 bajtova, gde je L < 2 16 MEDIUMBLOB, MEDIUMTEXT L+3 bajtova, gde je L < 2 24 LONGBLOB, LONGTEXT L+4 bajtova, gde je L < 2 32 ENUM('vrednost1','vred nost2',...) SET('vrednost1',vredno st2',...) 1 ili 2 bajta, u zavisnosti od broja članova 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

90 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 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 BOOL BOOLEAN CHAR VARYING(M) DEC FIXED FLOAT4 FLOAT8 INT1 INT2 INT3 INT4 INT8 LONG VARBINARY LONG VARCHAR LONG MIDDLEINT NUMERIC MySql DBMS TINYINT TINYINT VARCHAR(M) DECIMAL DECIMAL FLOAT DOUBLE TINYINT SMALLINT MEDIUMINT INT BIGINT MEDIUMBLOB MEDIUMTEXT MEDIUMTEXT MEDIUMINT DECIMAL Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS sistemima

91 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) 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', , 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', , 100, 'Germany'); U prethodnom primeru polja Naziv i ZamljaPorekla su tekstualnog tipa i unose se između jednostrukih znakova navoda

92 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)

93 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]

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

95 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, 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

96 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

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

98 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;

99 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

100 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 VARCHAR(40);

101 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;

102 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;

103 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;

104 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;

105 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;

106 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

107 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', , 100, 'Germany'); ili INSERT INTO Artikl VALUES (1, 123, 'Artikl br. 1', , 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

108 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 Artikl br Serbian Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk To ćemo uraditi uz pomoć sledećih naredbi: INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (124, 'Artikl br. 2', , 103, 'Serbian'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (127, 'Artikl br. 3', , 170, 'USA');

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

110 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' [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;

111 Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim kolonama) iz tabele Artikl rb Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk 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;

112 Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen parametar rb: Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Germany 124 Artikl br Srbija 127 Artikl br USA 127 Artikl br Germany 132 Artikl br Switzerland 135 Artikl br France 137 Artikl br Dansk 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk 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;

113 U rezultat ove naredbe: rb Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Dansk Artikl br France Artikl br Germany Artikl br Germany Artikl br Srbija Artikl br Switzerland Artikl br USA 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

114 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 Artikl br Switzerland row in set (0.00 sec) Osim poređenja po numeričkoj jednakosti moguće je koristiti i sledeće numeričke operatore: EEN = SELECT * FROM Artikl WHERE rb=1; <> SELECT * FROM Artikl WHERE rb<>1; < SELECT * FROM Artikl WHERE rb<1; > SELECT * FROM Artikl WHERE rb>1; <= SELECT * FROM Artikl WHERE rb<=1; >= SELECT * FROM Artikl WHERE rb>=1; BETW SELECT * FROM Artikl WHERE rb BETWEEN 1 AND 5; LIKE SELECT * FROM Artikl WHERE Naziv LIKE 'Artik%'; Jednako Nije jednako Veće od Manje od Veće ili jednako Manje ili jednako Između dve vrednosti SIMBOLIČK O POREĐENJE IN SELECT * FROM Artikl WHERE rb IN (1,3,5); Univerzalno poređenje

115 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)

116 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 Artikl br Srbija Artikl br Germany 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

117 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 rows in set (0.00 sec) sadrži listu svih zemalja iz kojih artikli potiču ali bez ponavljanja

118 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland 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 Artikl br France Artikl br Dansk rows in set (0.00 sec)

119 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 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 rows in set (0.02 sec)

120 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= ; i njome su je vrednost svih vrednosti u koloni Cena postavljena na Ukoliko želimo da izmenu primenimo samo na određene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1): UPDATE Artikl SET Cena= WHERE ZemljaPorekla='Germany';

121 rb Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk 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= , Kolicina=46 WHERE ZemljaPorekla='Germany'; rb Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk rows in set (0.00 sec)

122 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk rows in set (0.00 sec) ili UPDATE Artikl SET Cena=Kolicina+10; rb Magacin_rb Naziv Cena Kolicina ZemljaPorekla Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk rows in set (0.00 sec)

123 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 Artikl br Germany Artikl br Srbija Artikl br USA Artikl br Germany Artikl br Switzerland Artikl br France Artikl br Dansk rows in set (0.00 sec)

124 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;

125 7. DCL (Data Control Language) Osim manipulacije podacima (DML), jedna od bitnih karakteristika SUBPa je kontrola podataka (DCL), pre svega kontrola pristupa podacima. Kontrola pristupa podacima 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 Osnovne naredbe za rad sa privilegijama su: GRANT REVOKE FLUSH PRIVILEGES

126 7.1. Naredba CREATE USER Naredba CREATE USER služi za kreiranje novih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju INSERT privilegiju za sistemsku mysql bazu podataka. CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']]... Slika 8.1 Dokumentovana struktura naredbe CREATE USER Osnovni oblik korišćenja ove naredbe je: CREATE USER 'korisnik'; Ukoliko želimo da korisničkom nalogu pridružimo i hostname računara sa koga je dozvoljen pristup, naredba je: CREATE USER 'korisnik@racunar1.mreza.edu'; Ukoliko želimo da korisničkom nalogu pridružimo i lozinku, naredba je: CREATE USER 'korisnik' IDENTIFIED BY 'lozinka'; Ukoliko želimo da istovremeno kreiramo više korisničkih naloga, naredba je: CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1', 'korisnik2' IDENTIFIED BY 'lozinka2';

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

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

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

130 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

131 Osnovna dodela privilegija se vrši naredbom: GRANT ALL ON database_name.table_name TO 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

132 Privilegije Značenje ALL [PRIVILEGES] Sets all simple privileges except GRANT OPTION ALTER Allows use of ALTER TABLE CREATE Allows use of CREATE TABLE CREATE TEMPORARY Allows use of CREATE TEMPORARY TABLE TABLES CREATE VIEW Allows use of CREATE VIEW DELETE Allows use of DELETE DROP Allows use of DROP TABLE EXECUTE Allows the user to run stored procedures (MySQL 5.0) FILE Allows use of SELECT... INTO OUTFILE and LOAD DATA INFILE INDEX Allows use of CREATE INDEX and DROP INDEX INSERT Allows use of INSERT 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 Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET SUPER GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached UPDATE Allows use of UPDATE USAGE Synonym for ``no privileges'' GRANT OPTION Allows privileges to be granted Tabela 8.1 Moguće vrednosti za dodelu odnosno oduzimanje privilegija

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

134 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

135 8. Zadaci za vežbu DML 1. Uneti podatke iz sledeće tabele u tabelu Dobavljac: rb Naziv Adresa Telefon Dobavljac1 Beogradska Dobavljac2 Bac Dobavljac3 Uzicka Dobavljac4 Knez Mihajlova Dobavljac5 Nehruova 62b rows in set (0.00 sec) 2. Uneti podatke iz sledeće tabele u tabelu Magacin: rb Adresa Telefon Kapacitet bac Beogradska Dalmatinska Vojvodanska Francuska Nusiceva 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 Prikazati iz tabele Magacin prva četiri zapisa

136 9.Prikazati iz tabele Dobavljac zapise od 2 do 4 10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude 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

137 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

138 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

139 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

140 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

141 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:

142 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

143 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

144 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

145 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:

146 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

147 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 Sve tabele koje je potrebno kreirati

148 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 Kreiranje relacije 1:

149 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 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 Prva relacija je kreirana

150 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 Izmena svojstava relacije

151 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 Druga relacija je kreirana

152 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 Kreiranje relacije n:m

153 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 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

154 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 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:

155 Slika 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 Konačna shema BP

156 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 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 Konektovanje na postojeću MySQL bazu podataka

157 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 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

158 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 Sinhronizacija sa bazom podataka

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije Biznis scenario: U školi postoje četiri sekcije sportska, dramska, likovna i novinarska. Svaka sekcija ima nekoliko aktuelnih projekata. Likovna ima četiri projekta. Za projekte Pikaso, Rubens i Rembrant

More information

Podešavanje za eduroam ios

Podešavanje za eduroam ios Copyright by AMRES Ovo uputstvo se odnosi na Apple mobilne uređaje: ipad, iphone, ipod Touch. Konfiguracija podrazumeva podešavanja koja se vrše na računaru i podešavanja na mobilnom uređaju. Podešavanja

More information

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. 1) Kod pravilnih glagola, prosto prošlo vreme se gradi tako

More information

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević GUI Layout Manager-i Bojan Tomić Branislav Vidojević Layout Manager-i ContentPane Centralni deo prozora Na njega se dodaju ostale komponente (dugmići, polja za unos...) To je objekat klase javax.swing.jpanel

More information

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd, AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje Marko Eremija Sastanak administratora, Beograd, 12.12.2013. Sadržaj eduroam - uvod AMRES eduroam statistika Novine u okviru eduroam

More information

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB. 9.72 8.24 6.75 6.55 6.13 po 9.30 7.89 5.86 10.48 8.89 7.30 7.06 6.61 11.51 9.75 8.00 7.75 7.25 po 0.38 10.21 8.66 7.11 6.89 6.44 11.40 9.66 9.73 7.69 7.19 12.43 1 8.38 7.83 po 0.55 0.48 0.37 11.76 9.98

More information

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri. Potprogrami su delovi programa. Često se delovi koda ponavljaju u okviru nekog programa. Logično je da se ta grupa komandi izdvoji u potprogram, i da se po želji poziva u okviru programa tamo gde je potrebno.

More information

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI Za pomoć oko izdavanja sertifikata na Windows 10 operativnom sistemu možete se obratiti na e-mejl adresu esupport@eurobank.rs ili pozivom na telefonski broj

More information

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings Eduroam O Eduroam servisu Eduroam - educational roaming je besplatan servis za pristup Internetu. Svojim korisnicima omogućava bezbedan, brz i jednostavan pristup Internetu širom sveta, bez potrebe za

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka 25. novembar 2011. godine 7. čas SQL skalarne funkcije, operatori ANY (SOME) i ALL 1. Za svakog studenta izdvojiti ime i prezime i broj različitih ispita koje je pao (ako

More information

Port Community System

Port Community System Port Community System Konferencija o jedinstvenom pomorskom sučelju i digitalizaciji u pomorskom prometu 17. Siječanj 2018. godine, Zagreb Darko Plećaš Voditelj Odsjeka IS-a 1 Sadržaj Razvoj lokalnog PCS

More information

STRUČNA PRAKSA B-PRO TEMA 13

STRUČNA PRAKSA B-PRO TEMA 13 MAŠINSKI FAKULTET U BEOGRADU Katedra za proizvodno mašinstvo STRUČNA PRAKSA B-PRO TEMA 13 MONTAŽA I SISTEM KVALITETA MONTAŽA Kratak opis montže i ispitivanja gotovog proizvoda. Dati izgled i sadržaj tehnološkog

More information

Bušilice nove generacije. ImpactDrill

Bušilice nove generacije. ImpactDrill NOVITET Bušilice nove generacije ImpactDrill Nove udarne bušilice od Bosch-a EasyImpact 550 EasyImpact 570 UniversalImpact 700 UniversalImpact 800 AdvancedImpact 900 Dostupna od 01.05.2017 2 Logika iza

More information

Struktura i organizacija baza podataka

Struktura i organizacija baza podataka Fakultet tehničkih nauka, DRA, Novi Sad Predmet: Struktura i organizacija baza podataka Dr Slavica Aleksić, Milanka Bjelica, Nikola Obrenović Primer radnik({mbr, Ime, Prz, Sef, Plt, God, Pre}, {Mbr}),

More information

BENCHMARKING HOSTELA

BENCHMARKING HOSTELA BENCHMARKING HOSTELA IZVJEŠTAJ ZA SVIBANJ. BENCHMARKING HOSTELA 1. DEFINIRANJE UZORKA Tablica 1. Struktura uzorka 1 BROJ HOSTELA BROJ KREVETA Ukupno 1016 643 1971 Regije Istra 2 227 Kvarner 4 5 245 991

More information

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE CJENOVNIK KABLOVSKA TV Za zasnivanje pretplatničkog odnosa za korištenje usluga kablovske televizije potrebno je da je tehnički izvodljivo (mogude) priključenje na mrežu Kablovskih televizija HS i HKBnet

More information

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a NIS PETROL Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a Beograd, 2018. Copyright Belit Sadržaj Disable... 2 Komentar na PHP kod... 4 Prava pristupa... 6

More information

DEFINISANJE TURISTIČKE TRAŽNJE

DEFINISANJE TURISTIČKE TRAŽNJE DEFINISANJE TURISTIČKE TRAŽNJE Tražnja se može definisati kao spremnost kupaca da pri različitom nivou cena kupuju različite količine jedne robe na određenom tržištu i u određenom vremenu (Veselinović

More information

Windows Easy Transfer

Windows Easy Transfer čet, 2014-04-17 12:21 - Goran Šljivić U članku o skorom isteku Windows XP podrške [1] koja prestaje 8. travnja 2014. spomenuli smo PCmover Express i PCmover Professional kao rješenja za preseljenje korisničkih

More information

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT TRAJANJE AKCIJE 16.01.2019-28.02.2019 ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT Akcija sa poklonima Digitally signed by pki, pki, BOSCH, EMEA, BOSCH, EMEA, R, A, radivoje.stevanovic R, A, 2019.01.15 11:41:02

More information

Otpremanje video snimka na YouTube

Otpremanje video snimka na YouTube Otpremanje video snimka na YouTube Korak br. 1 priprema snimka za otpremanje Da biste mogli da otpremite video snimak na YouTube, potrebno je da imate kreiran nalog na gmailu i da video snimak bude u nekom

More information

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Uvod u GIT Šta je git? Sistem za verzionisanje softvera kao i CVS, SVN, Perforce ili ClearCase Orginalno

More information

SAS On Demand. Video: Upute za registraciju:

SAS On Demand. Video:  Upute za registraciju: SAS On Demand Video: http://www.sas.com/apps/webnet/video-sharing.html?bcid=3794695462001 Upute za registraciju: 1. Registracija na stranici: https://odamid.oda.sas.com/sasodaregistration/index.html U

More information

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA KOŽA I TEKSTIL ALU FELGE CJENIK APLIKACIJE CERAMIC PRO PROIZVODA Radovi prije aplikacije: Prije nanošenja Ceramic Pro premaza površina vozila na koju se nanosi mora bi dovedena u korektno stanje. Proces

More information

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu Marijana Glavica Dobrica Pavlinušić http://bit.ly/ffzg-eprints Definicija

More information

Mogudnosti za prilagođavanje

Mogudnosti za prilagođavanje Mogudnosti za prilagođavanje Shaun Martin World Wildlife Fund, Inc. 2012 All rights reserved. Mogudnosti za prilagođavanje Za koje ste primere aktivnosti prilagođavanja čuli, pročitali, ili iskusili? Mogudnosti

More information

3D GRAFIKA I ANIMACIJA

3D GRAFIKA I ANIMACIJA 1 3D GRAFIKA I ANIMACIJA Uvod u Flash CS3 Šta će se raditi? 2 Upoznavanje interfejsa Osnovne osobine Definisanje osnovnih entiteta Rad sa bojama Rad sa linijama Definisanje i podešavanje ispuna Pregled

More information

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6. KOREKTAN PREVOD? - Reupotrebljiv softver? ( ne postoji prefiks RE u srpskom jeziku ) - Ponovo upotrebljiv softver? ( totalno bezveze ) - Upotrebljiv više puta? - Itd. PLAN RADA 1. Počnimo sa primerom!

More information

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine UNIVERZITETUBEOGRADU RUDARSKOGEOLOŠKIFAKULTET DEPARTMANZAHIDROGEOLOGIJU ZBORNIKRADOVA ZLATIBOR 1720.maj2012.godine XIVSRPSKISIMPOZIJUMOHIDROGEOLOGIJI ZBORNIKRADOVA IZDAVA: ZAIZDAVAA: TEHNIKIUREDNICI: TIRAŽ:

More information

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Struktura indeksa: B-stablo.   ls/swd/btree/btree.html Struktura indeksa: B-stablo http://cis.stvincent.edu/html/tutoria ls/swd/btree/btree.html Uvod ISAM (Index-Sequential Access Method, IBM sredina 60-tih godina 20. veka) Nedostaci: sekvencijalno pretraživanje

More information

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Upute za korištenje makronaredbi gml2dwg i gml2dgn SVEUČILIŠTE U ZAGREBU - GEODETSKI FAKULTET UNIVERSITY OF ZAGREB - FACULTY OF GEODESY Zavod za primijenjenu geodeziju; Katedra za upravljanje prostornim informacijama Institute of Applied Geodesy; Chair

More information

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU (Usaglašeno sa procedurom S.3.04 sistema kvaliteta Megatrend univerziteta u Beogradu) Uvodne napomene

More information

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE) Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE) SISTEMI ZA PODRŠKU ODLUČIVANJU dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za računarstvo i informatiku 2013/2014 Tema 2: Uvod u sisteme

More information

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA Master akademske studije Modul za logistiku 1 (MLO1) POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA angažovani su: 1. Prof. dr Momčilo Miljuš, dipl.inž., kab 303, mmiljus@sf.bg.ac.rs,

More information

Katedra za menadžment i IT. Razvoj poslovnih informacionih sistema

Katedra za menadžment i IT. Razvoj poslovnih informacionih sistema Prezentacija smjera Razvoj poslovnih informacionih sistema Katedra za menadžment i IT Razvoj poslovnih informacionih sistema Zašto... Careercast.com latest report on the ten best jobs of 2011 #1 Software

More information

Tutorijal za Štefice za upload slika na forum.

Tutorijal za Štefice za upload slika na forum. Tutorijal za Štefice za upload slika na forum. Postoje dvije jednostavne metode za upload slika na forum. Prva metoda: Otvoriti nova tema ili odgovori ili citiraj već prema želji. U donjem dijelu obrasca

More information

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći: Pogledi Ciljevi Poslije kompletiranja ove lekcije trebalo bi se moći: Opisati pogled Formirati novi pogled Vratiti podatke putem pogleda Izmijeniti postojeći pogled Insertovani, ažurirati i brisati podatke

More information

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ DIZAJN TRENINGA Model trening procesa FAZA DIZAJNA CILJEVI TRENINGA Vrste ciljeva treninga 1. Ciljevi učesnika u treningu 2. Ciljevi učenja Opisuju željene

More information

MENADŽMENT I INFORMACIONE TEHNOLOGIJE Katedra za menadžment i IT. Menadžment i informacione tehnologije

MENADŽMENT I INFORMACIONE TEHNOLOGIJE Katedra za menadžment i IT. Menadžment i informacione tehnologije Prezentacija smjera MENADŽMENT I INFORMACIONE TEHNOLOGIJE Katedra za menadžment i IT Menadžment i informacione tehnologije Zašto... Careercast.com latest report on the ten best jobs of 2011 #1 Software

More information

11 Analiza i dizajn informacionih sistema

11 Analiza i dizajn informacionih sistema 11 Analiza i dizajn informacionih sistema Informatika V.Prof.dr Kemal Hajdarević dipl.ing.el 25.4.2014 11:58:28 1 1. Kompjuter, Internet, i mrežne osnove 2. Kompjuterska industrija Informatika u stomatologiji

More information

PROJEKTNI PRORAČUN 1

PROJEKTNI PRORAČUN 1 PROJEKTNI PRORAČUN 1 Programski period 2014. 2020. Kategorije troškova Pojednostavlj ene opcije troškova (flat rate, lump sum) Radni paketi Pripremni troškovi, troškovi zatvaranja projekta Stope financiranja

More information

1. Instalacija programske podrške

1. Instalacija programske podrške U ovom dokumentu opisana je instalacija PBZ USB PKI uređaja na računala korisnika PBZCOM@NET internetskog bankarstva. Uputa je podijeljena na sljedeće cjeline: 1. Instalacija programske podrške 2. Promjena

More information

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION VFR AIP Srbija / Crna Gora ENR 1.4 1 ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION 1. KLASIFIKACIJA VAZDUŠNOG PROSTORA

More information

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze Trening: Obzor 2020. - financijsko izvještavanje i osnovne ugovorne obveze Ana Ključarić, Obzor 2020. nacionalna osoba za kontakt za financijska pitanja PROGRAM DOGAĐANJA (9:30-15:00) 9:30 10:00 Registracija

More information

IZRADA TEHNIČKE DOKUMENTACIJE

IZRADA TEHNIČKE DOKUMENTACIJE 1 Zaglavlje (JUS M.A0.040) Šta je zaglavlje? - Posebno uokvireni deo koji služi za upisivanje podataka potrebnih za označavanje, razvrstavanje i upotrebu crteža Mesto zaglavlja: donji desni ugao raspoložive

More information

MENADŽMENT INFORMACIONI SISTEMI

MENADŽMENT INFORMACIONI SISTEMI Menadžment informacioni sistemi dr Alempije Veljović dr Miroslav Radojičić dr Jasmina Vesić MENADŽMENT INFORMACIONI SISTEMI Čačak, 2008. 8 Univerzitetski udžbenik MENADŽMENT INFORMACIONI SISTEMI Drugo

More information

AUDIO-VIZUELNA SREDSTVA

AUDIO-VIZUELNA SREDSTVA AUDIO-VIZUELNA SREDSTVA UPUTSTVO ZA PRIPREMU PREDISPITNE OBAVEZE Sremska Mitrovica, 2017. SADRŽAJ 1. Predispitna obaveza... 3 2. Tema predispitne obaveze... 3 3. Parametri video snimka... 4 4. Struktura

More information

msc Velimir Milanovic Unošenje prvih zapisa Kreiranje elektronskih obrazaca - formi Prva forma - Čitaoci U P I T I

msc Velimir Milanovic Unošenje prvih zapisa Kreiranje elektronskih obrazaca - formi Prva forma - Čitaoci U P I T I msc Velimir Milanovic SADRŽAJ: 1. Pojam informacionih sistema... 4 1. 1. Vrste informacionih sistema... 5 1.1.1. Informacioni sistemi za obradu podataka (dp data processing)... 5 1. 1. 2. Upravljački informacioni

More information

Mindomo online aplikacija za izradu umnih mapa

Mindomo online aplikacija za izradu umnih mapa Mindomo online aplikacija za izradu umnih mapa Mindomo je online aplikacija za izradu umnih mapa (vrsta dijagrama specifične forme koji prikazuje ideje ili razmišljanja na svojevrstan način) koja omogućuje

More information

Nejednakosti s faktorijelima

Nejednakosti s faktorijelima Osječki matematički list 7007, 8 87 8 Nejedakosti s faktorijelima Ilija Ilišević Sažetak Opisae su tehike kako se mogu dokazati ejedakosti koje sadrže faktorijele Spomeute tehike su ilustrirae a izu zaimljivih

More information

CILJ UEFA PRO EDUKACIJE

CILJ UEFA PRO EDUKACIJE CILJ UEFA PRO EDUKACIJE Ciljevi programa UEFA PRO M s - Omogućiti trenerima potrebnu edukaciju, kako bi mogli uspešno raditi na PRO nivou. - Utvrdjenim programskim sadržajem, omogućiti im kredibilitet.

More information

PRIMENA RFID TEHNOLOGIJE ZA PRAĆENJE I ARHIVIRANJE DOKUMENATA

PRIMENA RFID TEHNOLOGIJE ZA PRAĆENJE I ARHIVIRANJE DOKUMENATA PRIMENA RFID TEHNOLOGIJE ZA PRAĆENJE I ARHIVIRANJE DOKUMENATA ARHIV INFO 2011 Uvod U ovoj prezentaciji je opisana primena RFID tehnologije za praćenje i arhiviranje dokumenata u papirnom obliku Projekat

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 3 DEFINICIJA KLASE U JAVI Miloš Kovačević Đorđe Nedeljković 1 /18 OSNOVNI KONCEPTI - Polja - Konstruktori - Metode - Parametri - Povratne vrednosti - Dodela

More information

Dimenzija zdravlja populacije infrastrukturni podaci planiranje i zdrav. politika sistemi nadzora podaci o nejednakosti

Dimenzija zdravlja populacije infrastrukturni podaci planiranje i zdrav. politika sistemi nadzora podaci o nejednakosti Zdravstveni informacioni sistem Jelena Marinkovi Institut za mnedicinsku statistiku i informatiku januar, 2008.g. PODACI, ZNANJE, INFORMACIJE Informacioni tokovi LEKARI PACIJENT USLUGE MENADŽMENT Podaci,

More information

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima 1. Uvod 2. Preuzimanje programa i stvaranje mapa 3. Instalacija Apachea 4. Konfiguracija Apachea 5. Instalacija PHP-a 6. Konfiguracija

More information

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik) JEDINSTVENI PORTAL POREZNE UPRAVE Priručnik za instalaciju Google Chrome dodatka (Opera preglednik) V1 OPERA PREGLEDNIK Opera preglednik s verzijom 32 na dalje ima tehnološke promjene zbog kojih nije moguće

More information

Kontroling kao pokretač promjena u Orbico d.o.o. Sarajevo. Orbico Group

Kontroling kao pokretač promjena u Orbico d.o.o. Sarajevo. Orbico Group Kontroling kao pokretač promjena u Orbico d.o.o. Sarajevo Emina Leka Ilvana Ugarak 1 Orbico Group vodeći distributer velikog broja globalno zastupljenih brendova u Europi 5.300 zaposlenika 19 zemalja 646

More information

Uvod u programske pakete

Uvod u programske pakete Predavanje 1 PROGRAMSKI PAKETI 2007/2008 Uvod u programske pakete Tajna privlačnosti kompjuterske tehnologije leži u programskom - korisničkom sadržaju. Programi su neizmerno bogatstvo ljudskog znanja

More information

UNIVERZITET SINGIDUNUM. Tema: ERP Enterprise Resource Planning Istorijat razvoja, polje primene i novi oblici poslovanja primenom cloud rešenja

UNIVERZITET SINGIDUNUM. Tema: ERP Enterprise Resource Planning Istorijat razvoja, polje primene i novi oblici poslovanja primenom cloud rešenja UNIVERZITET SINGIDUNUM Departmant za poslediplomske studije Diplomski akademski Master program Studijski program: Savremene informacione tehnologije MASTER RAD Tema: ERP Enterprise Resource Planning Istorijat

More information

1.7 Predstavljanje negativnih brojeva u binarnom sistemu

1.7 Predstavljanje negativnih brojeva u binarnom sistemu .7 Predstavljanje negativnih brojeva u binarnom sistemu U decimalnom brojnom sistemu pozitivni brojevi se predstavljaju znakom + napisanim ispred cifara koje definišu apsolutnu vrednost broja, odnosno

More information

СТРУКТУРА СТАНДАРДА СИСТЕМАМЕНАЏМЕНТАКВАЛИТЕТОМ

СТРУКТУРА СТАНДАРДА СИСТЕМАМЕНАЏМЕНТАКВАЛИТЕТОМ 1 СТРУКТУРА СТАНДАРДА СИСТЕМАМЕНАЏМЕНТАКВАЛИТЕТОМ 2 ПРИНЦИПИ МЕНАЏМЕНТА КВАЛИТЕТОМ 3 ПРИНЦИПИ МЕНАЏМЕНТА КВАЛИТЕТОМ 4 ПРИНЦИПИ МЕНАЏМЕНТА КВАЛИТЕТОМ Edwards Deming Не морате то чинити, преживљавање фирми

More information

1.UVOD. Ključne reči: upotrebljivost, praćenje, korisnički interfejs, aplikacija

1.UVOD. Ključne reči: upotrebljivost, praćenje, korisnički interfejs, aplikacija EVALUACIJA UPOTREBLJIVOSTI KORISNIČKOG INTERFEJSA VEB APLIKACIJA UZ POMOĆ METODA ZA AUTOMATSKO PRIKUPLJANJE PODATAKA O KORIŠĆENJU EVALUATION USABILITY OF USER INTERFACE WEB APPLICATIONS BY METHODS FOR

More information

Klasterizacija. NIKOLA MILIKIĆ URL:

Klasterizacija. NIKOLA MILIKIĆ   URL: Klasterizacija NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Klasterizacija Klasterizacija (eng. Clustering) spada u grupu tehnika nenadgledanog učenja i omogućava grupisanje

More information

Sadržaj. Projektovanje informacionih sistema Information Systems Design - uvodno predavanje - Prof. drlatinović Tihomir

Sadržaj. Projektovanje informacionih sistema Information Systems Design - uvodno predavanje - Prof. drlatinović Tihomir Information Systems Design - uvodno predavanje - Prof. dr Latinović Tihomir Banja Luka, 2015. Sadržaj Uvod: Osnovni pojmovi, modeliranje Osnove razvoja IS: Životni ciklus IS, Prototipski razvoj Arhitektura

More information

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET! WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET! WELLNESS & SPA DNEVNA KARTA DAILY TICKET 35 BAM / 3h / person RADNO VRIJEME OPENING HOURS 08:00-21:00 Besplatno za djecu do 6 godina

More information

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY Softverski sistem Survey za geodeziju, digitalnu topografiju i projektovanje u niskogradnji instalira se na sledeći način: 1. Instalirati grafičko okruženje pod

More information

Optimizacija lanca snabdevanja implementacijom savremenih informaciono komunikacionih tehnologija

Optimizacija lanca snabdevanja implementacijom savremenih informaciono komunikacionih tehnologija Optimizacija lanca snabdevanja implementacijom savremenih informaciono komunikacionih tehnologija DRAGO S. SOLDAT, Visoka tehnička škola strukovnih studija, Zrenjanin Stručni rad MARIJA Đ. MATOTEK, Visoka

More information

Osnovni koncepti Data Warehouse sistema

Osnovni koncepti Data Warehouse sistema Automatizacija procesa poslovanja Osnovni koncepti Data Warehouse sistema Sistemi skladišta podataka BPA Osnovni koncepti DW Sadržaj Motivacija nastanka DW sistema Koncepcija DW sistema Tematske karakteristike

More information

GIGABIT PASSIVE OPTICAL NETWORK

GIGABIT PASSIVE OPTICAL NETWORK GIGABIT PASSIVE OPTICAL NETWORK O NAMA Ključni element savremenih sistema za isporuku sadržaja putem Interneta (Data, Voice, Video) je interakcija sa krajnjim korisnikom. Iza nas je vreme kada je svaki

More information

Univerzitet Singidunum MASTER RAD

Univerzitet Singidunum MASTER RAD Univerzitet Singidunum Departman za poslediplomske studije Master akademski program Poslovni sistemi u turizmu i hotelijerstvu MASTER RAD ANALIZA UTICAJA SAVREMENIH INFORMACIONIH SISTEMA NA HOTELSKO POSLOVANJE

More information

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. Idejno rješenje: Dubrovnik 2020. Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. vizualni identitet kandidature dubrovnika za europsku prijestolnicu kulture 2020. visual

More information

POSLOVNA INTELIGENCIJA

POSLOVNA INTELIGENCIJA VISOKA TEHNIČKA ŠKOLA STRUKOVNIH STUDIJA KRAGUJEVAC Dr Miroljub Banković, prof. POSLOVNA INTELIGENCIJA Kragujevac, 2012. 1. ŠTA JE POSLOVNA INTELIGENCIJA? Poslovna inteligencija (engl. Business Intelligence)

More information

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB UPUTSTVO za ruter TP-LINK TD-854W/ TD-W8951NB Uputstvo za ruter TP-Link TD-854W / TD-W8951NB 2 PRAVILNO POVEZIVANJE ADSL RUTERA...4 PODEŠAVANJE KONEKCIJE PREKO MREŽNE KARTE ETHERNET-a...5 PODEŠAVANJE INTERNET

More information

Automatske Maske za zavarivanje. Stella, black carbon. chain and skull. clown. blue carbon

Automatske Maske za zavarivanje. Stella, black carbon. chain and skull. clown. blue carbon Automatske Maske za zavarivanje Stella Podešavanje DIN: 9-13 Brzina senzora: 1/30.000s Vidno polje : 98x55mm Četiri optička senzora Napajanje : Solarne ćelije + dve litijumske neizmenjive baterije. Vek

More information

INTEGRACIJA MOBILNIH UREĐAJA U KORPORATIVNI SISTEM

INTEGRACIJA MOBILNIH UREĐAJA U KORPORATIVNI SISTEM ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU INTEGRACIJA MOBILNIH UREĐAJA U KORPORATIVNI SISTEM Master rad Kandidat: Mladen Steljić 2012/3260 Mentor: doc. dr Zoran Čiča Beograd, Septembar 2015. SADRŽAJ

More information

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU KONFIGURACIJA MODEMA ZyXEL Prestige 660RU Sadržaj Funkcionalnost lampica... 3 Priključci na stražnjoj strani modema... 4 Proces konfiguracije... 5 Vraćanje modema na tvorničke postavke... 5 Konfiguracija

More information

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA CRNA GORA (1}(02.17&r/4 Ver. O;:, fjr}/ ~ AGENCUA ZA ELEKTRONSKE KOM~~IKACUE J.O.O "\\ L\lax Montenegro" BrOJ o/-lj Podoor'ca.d:ioL 20/1g0d I POSTANSKU DEJATELNOST DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO

More information

FAKULTET TEHNIČKIH NAUKA

FAKULTET TEHNIČKIH NAUKA UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA Nastavni predmet: Vežba br 6: Automatizacija projektovanja tehnoloških procesa izrade alata za brizganje plastike primenom ekspertnih sistema Doc. dr Dejan

More information

CIM KONCEPT PREDUZEĆA - OSNOVNI TERMINI I DEFINICIJE CIM COMPANY CONCEPT, FUNDAMENTAL TERMS AND DEFINITIONS 1. UVOD

CIM KONCEPT PREDUZEĆA - OSNOVNI TERMINI I DEFINICIJE CIM COMPANY CONCEPT, FUNDAMENTAL TERMS AND DEFINITIONS 1. UVOD CIM KONCEPT PREDUZEĆA - OSNOVNI TERMINI I DEFINICIJE CIM COMPANY CONCEPT, FUNDAMENTAL TERMS AND DEFINITIONS 1. UVOD Mr Predrag V. Dašić 1 Rezime: CIM koncept preduzeća predstavlja novu filozofiju vođenja

More information

Priprema podataka. NIKOLA MILIKIĆ URL:

Priprema podataka. NIKOLA MILIKIĆ   URL: Priprema podataka NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Normalizacija Normalizacija je svođenje vrednosti na neki opseg (obično 0-1) FishersIrisDataset.arff

More information

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09 MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09 LAB 09 Fizički model podatka 1. Fizički model podataka Fizički model podataka omogućava da se definiše struktura baze podataka sa stanovišta fizičke

More information

Rešavanje problema pomoću računara

Rešavanje problema pomoću računara Rešavanje problema pomoću računara Vladimir Filipović vladaf@matf.bg.ac.rs Softversko inženjerstvo Šta podrazumevamo pod softverskim inženjerstvom? vladaf@matf.bg.ac.rs 2/16 Konstrukcija prevodilaca Prevođenje

More information

ZNANJE ČINI RAZLIKU!!!!

ZNANJE ČINI RAZLIKU!!!! ZNANJE ČINI RAZLIKU!!!! www.ricotrainingcentre.co.rs RICo Training Centre ATI Beograd, Republika Srbija ZNAČAJ OBUKE ZA DRUMSKU BEZBEDNOST? Drumska bezbednost je zajednička obaveza - preventivno delovati

More information

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

STABLA ODLUČIVANJA. Jelena Jovanovic.   Web: STABLA ODLUČIVANJA Jelena Jovanovic Email: jeljov@gmail.com Web: http://jelenajovanovic.net 2 Zahvalnica: Ovi slajdovi su bazirani na materijalima pripremljenim za kurs Applied Modern Statistical Learning

More information

CALCULATION OF COSTS BY ABC METHODS

CALCULATION OF COSTS BY ABC METHODS UDK: 657.474.5 DOI: 10.7251/APE1818014B Stručni rad OBRAČUN TROŠKOVA ABC METODOM CALCULATION OF COSTS BY ABC METHODS Sažetak Nemanja Budimir 8 Agencija za knjigovodstvene poslove BUDIMIR Tradicionalni

More information

SIMULACIONI MODELI ZASNOVANI NA AGENTIMA KAO PODRŠKA ODLUČIVANJU U ELEKTRONSKOM POSLOVANJU

SIMULACIONI MODELI ZASNOVANI NA AGENTIMA KAO PODRŠKA ODLUČIVANJU U ELEKTRONSKOM POSLOVANJU UNIVERZITET U BEOGRADU FAKULTET ORGANIZACIONIH NAUKA Sava K. Čavoški SIMULACIONI MODELI ZASNOVANI NA AGENTIMA KAO PODRŠKA ODLUČIVANJU U ELEKTRONSKOM POSLOVANJU Doktorska disertacija Beograd, 2016 1 UNIVERSITY

More information

Karakteristike marketinga u sferi usluga

Karakteristike marketinga u sferi usluga Karakteristike marketinga u sferi usluga Specifičnosti usluga: 1) Neopipljivost 2) Neodvojivost proizvodnje od potrošnje 3) Heterogenost 4) Kvarljivost Specifičnosti bankarskih usluga Predmet usluge je

More information

Office 365, upute za korištenje elektroničke pošte

Office 365, upute za korištenje elektroničke pošte Office 365, upute za korištenje elektroničke pošte Naša ustanova koristi uslugu elektroničke pošte u oblaku, u sklopu usluge Office 365. To znači da elektronička pošta više nije pohranjena na našem serveru

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Istorijat programskih jezika Programski jezici Programski jezici su veštački jezici koji se mogu koristiti za kontrolu ponašanja mašine, naročito

More information

Iskustva video konferencija u školskim projektima

Iskustva video konferencija u školskim projektima Medicinska škola Ante Kuzmanića Zadar www.medskolazd.hr Iskustva video konferencija u školskim projektima Edin Kadić, profesor mentor Ante-Kuzmanic@medskolazd.hr Kreiranje ideje 2003. Administracija Učionice

More information

RANI BOOKING TURSKA LJETO 2017

RANI BOOKING TURSKA LJETO 2017 PUTNIČKA AGENCIJA FIBULA AIR TRAVEL AGENCY D.O.O. UL. FERHADIJA 24; 71000 SARAJEVO; BIH TEL:033/232523; 033/570700; E-MAIL: INFO@FIBULA.BA; FIBULA@BIH.NET.BA; WEB: WWW.FIBULA.BA SUDSKI REGISTAR: UF/I-1769/02,

More information

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 LAB 08 Konceptualni model podataka Logički model podataka 1. Konceptualni model podataka Modeli podataka omogućavaju modelovanje semantičke i logičke

More information

Pravljenje Screenshota. 1. Korak

Pravljenje Screenshota. 1. Korak Prvo i osnovno, da biste uspesno odradili ovaj tutorijal, morate imati instaliran GOM Player. Instalacija je vrlo jednostavna, i ovaj player u sebi sadrzi sve neophodne kodeke za pustanje video zapisa,

More information

KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES

KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES INFOTEH-JAHORINA Vol. 10, Ref. E-I-11, p. 441-445, March 2011. KREIRANJE DINAMIČKIH INTERFEJSA ZASNOVANIH NA META-ŠEMAMA CREATION OF DYNAMIC INTERFACES BASED ON META-SCHEMES Vladimir Vujović, Elektrotehnički

More information

- UVOD U INFORMACIONE SISTEME -

- UVOD U INFORMACIONE SISTEME - - UVOD U INFORMACIONE SISTEME - Sadržaj 1. Uvod u informacione sisteme...3 2. Modeli razvoja informacionog sistema...5 3. Modeliranje podataka...10 4. Fizičko modeliranje: Arhitektura IS...12 5. Standardizacija

More information

Advertising on the Web

Advertising on the Web Advertising on the Web On-line algoritmi Off-line algoritam: ulazni podaci su dostupni na početku, algoritam može pristupati podacima u bilo kom redosljedu, na kraju se saopštava rezultat obrade On-line

More information

Direktan link ka kursu:

Direktan link ka kursu: Alat Alice može da se preuzme sa sledeće adrese: www.alice.org Kratka video uputstva posvećena alatu Alice: https://youtu.be/eq120m-_4ua https://youtu.be/tkbucu71lfk Kurs (engleski) posvećen uvodu u Java

More information

UNIVERZITET UNION RAČUNARSKI FAKULTET Knez Mih a ilova 6/V I DIPLOMSKI RAD

UNIVERZITET UNION RAČUNARSKI FAKULTET Knez Mih a ilova 6/V I DIPLOMSKI RAD UNIVERZITET UNION RAČUNARSKI FAKULTET Knez Mih a ilova 6/V I 110 00 BEOGRAD Broj: Datum: UNIVERZITET UNION RAČUNARSKI FAKULTET BEOGRAD Informacioni sistemi DIPLOMSKI RAD Kandidat: Mladen Panić Broj indeksa:

More information

komponente DSS 2016/2017 dr Vladislav Miškovic SISTEMI ZA PODRŠKU ODLUČIVANJU Fakultet za informatiku u računarstvo

komponente DSS 2016/2017 dr Vladislav Miškovic SISTEMI ZA PODRŠKU ODLUČIVANJU Fakultet za informatiku u računarstvo Tema 5: Arhitektura i funkcionalne komponente DSS SISTEMI ZA PODRŠKU ODLUČIVANJU dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za informatiku u računarstvo 2016/2017 1. Uvod Tema 5: Arhitektura

More information

STATISTIKA U OBLASTI KULTURE U BOSNI I HERCEGOVINI

STATISTIKA U OBLASTI KULTURE U BOSNI I HERCEGOVINI Bosna i Hercegovina Agencija za statistiku Bosne i Hercegovine Bosnia and Herzegovina Agency for Statistics of Bosnia and Herzegovina STATISTIKA U OBLASTI KULTURE U BOSNI I HERCEGOVINI Jahorina, 05.07.2011

More information