Professional Documents
Culture Documents
BAZE PODATAKA
- PRAKTIKUM Prvo izdanje
Beograd 2006.
Autori: Prof. dr Mladen Veinovi Igor Franc Aleksandar Jevremovi Recenzent: Prof. dr Milan Milosavljevi Izdava: UNIVERZITET SINGIDUNUM FAKULTET ZA POSLOVNU INFORMATIKU Za izdavaa: Prof. dr Milovan Stanii Dizajn korica: Aleksandar Mihajlovi Goran Latinovi Godina izdanja: 2006. Tira: 250 primeraka tampa: CICERO-print Beograd
SADRAJ:
1. UVOD U BAZE PODATAKA .............................................. - 1 1.1. Uvod .............................................................................................. - 1 1.2. Osnovni koncepti i definicije ...................................................... - 3 1.2.1. Podatak ......................................................................................................... - 5 1.2.2. Informacija.................................................................................................... - 6 1.2.3. Metapodaci - podaci o podacima (metadata) ................................................ - 9 1.2.4. Sistem za upravljanje bazama podataka...................................................... - 10 -
1.3. Klasian sistem zasnovan na datotekama ............................... - 12 1.3.1. Nedostaci sistema zasnovanog na datotekama............................................ - 14 -
1.4. Pristup zasnovan na bazama podataka ................................... - 16 1.4.1. Prednosti pristupa zasnovanog na bazama podataka .................................. - 17 1.4.2. Trokovi i rizici pristupa zasnovanog na bazama podataka ........................ - 19 -
1.5. Primene baza podataka............................................................. - 21 1.5.1. Line baze podataka ................................................................................... - 21 1.5.2. Baze podataka za radne grupe..................................................................... - 22 1.5.3. Baze podataka odeljenja ............................................................................. - 23 1.5.4. Baze podataka organizacija ........................................................................ - 24 1.5.5. Internet, Intranet i Extranet baze podataka ................................................. - 25 -
1.6. Tipino okruenje baze podataka ............................................ - 28 1.7. Istorija razvoja baza podataka................................................. - 30 1.8. Modelovanje ............................................................................... - 35 1.8.1. Razvoj konceptualnih modela ..................................................................... - 36 1.8.2. Entiteti ........................................................................................................ - 37 1.8.3. Veze izmeu entiteta................................................................................... - 38 1.8.4. Troslojna arhitektura baze podataka ........................................................... - 40 -
1.9. Modeli baza podataka ............................................................... - 42 1.9.1. Hijerarhijski model ..................................................................................... - 43 1.9.2. Mreni model .............................................................................................. - 44 1.9.3. Relacioni model .......................................................................................... - 45 1.9.4. Objektni model ........................................................................................... - 50 -
1.11. Oporavak baze podataka ........................................................ - 56 1.12. Osnovne karaketristike savremenih baza podataka ............ - 56 1.13. Zakljuak ................................................................................. - 59 1.14. Literatura ................................................................................. - 60 -
2. O SQL-U ............................................................................... - 61 3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MYSQL-A ................................................................................ - 63 3.1. Proces isntalacije ....................................................................... - 63 3.2. Konfigurisanje MySQL servera ............................................... - 68 3.3. Pokretanje MySQL-a ................................................................ - 73 -
4. SQL TIPOVI PODATAKA ................................................ - 75 4.1. Numeriki tipovi podataka ....................................................... - 75 4.2. Tipovi podataka vezani za datum i vreme .............................. - 76 4.3. Binarni i tekstualni tipovi podataka ........................................ - 77 4.4. Zahtevi pri skladitenju ............................................................ - 79 4.5. Izbor adekvatnog tipa podataka .............................................. - 80 4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima..- 81 4.7. Unos razliitih tipova podataka ............................................... - 82 -
5.1. Kreiranje baze podataka .......................................................... - 83 5.2. Kreiranje tebele u bazi podataka ............................................. - 84 5.3. Naredbe za definisanje podataka ............................................. - 87 5.4. Kreiranje indeksa u bazi podataka .......................................... - 88 5.5. Kreiranje virtuelne tabele - "pogleda".................................... - 89 5.6. Izmena definicije tabele ............................................................ - 90 5.7. Izmena pogleda u bazi podataka .............................................. - 92 5.8. Promena imena tabele u bazi podataka................................... - 93 5.9. Brisanje tabele iz baze podataka .............................................. - 94 5.10. Uklanjanje indeksa iz tabele ................................................... - 95 5.11. Uklanjanje baze podataka ...................................................... - 96 -
6. DML (DATA MANIPULATION LANGUAGE) ............. - 97 6.1. Manipulisanja podacima .......................................................... - 97 6.2. Unos podataka ........................................................................... - 98 6.3. Pregled podataka ..................................................................... - 101 6.3.1. Klauzula WHERE ..................................................................................... - 105 6.3.2. Klauzula DISTINCT ................................................................................. - 108 6.3.3. Klauzula LIMIT ........................................................................................ - 109 6.3.4. Klauzule GROUP BY / HAVING ............................................................ - 110 -
6.4. Izmena podataka ..................................................................... - 111 6.5. Uklanjanje podataka ............................................................... - 115 -
7. DCL (DATA CONTROL LANGUAGE) ........................... - 116 7.1. Naredba CREATE USER ....................................................... - 117 -
7.2. Naredba RENAME USER ...................................................... - 118 7.3. Naredba DROP USER ............................................................ - 119 7.4. Naredba SET PASSWORD .................................................... - 120 7.5. Dodela privilegija (GRANT) .................................................. - 121 7.6. Oduzimanje privilegija (REVOKE) ...................................... - 124 7.7. Primena izmena (FLUSH) ...................................................... - 125 -
8. ZADACI ZA VEBU DML .............................................. - 126 9. DODATAK ......................................................................... - 128 9.1. Izrazi i funkcije ........................................................................ - 128 -
PREDGOVOR
Ova skripta je namenjena prevashodno studentima tree godine Fakulteta za poslovnu informatiku u Beogradu, mada moe biti vrlo korisna i svima onima koji ele da savladaju sintaksu i tehniku upotrebe SQL jezika za rad sa relacionim bazama podataka. Skripta moe da poslui i kao pomo profesionalcima u svakodnevnom radu sa bazama podataka. U praktikumu su na jednom mestu date teorijske osnove baza podataka, prikazan je MySQL DBMS softver i softver za dizajniranje baza, detaljno je razmatran SQL jezik i na kraju su dati praktini primeri. U skladu sa nastavnim planom i programom predmeta baze podataka, svi primeri u SQL jeziku, koji su dati u praktikumu, mogu se izvriti na MySQL DBMS-u. Mogua su manja odstupanje od sintakse standardnog SQL-a koja ni do danas nije potpuno i precizno definisana. Skripta je podeljena u nekoliko celina. Prvi deo predstavlja teorijski uvod u baze podataka. Drugi deo je uvod u SQL jezik, a u trecem delu prikazuju se i objanjavaju tipovi podataka koje MySQL koristi. U etvrtom delu se obrauju naredbe za definisanje podataka, a u petom delu se obrauju naredbe za manipulaciju podacima, koji je u stvari i najvaniji i najopirniji deo ove skripte. Na kraju su obraene naredbe za kontrolne (upravljake) funkcije. Prvih pet delova su namenjeni svim korisnicima dok je esti deo, dodela i oduzimanje prava korisnicima, specifian i potreban samo administratorima baza podataka. U dodatku su nabrojane i objanjene pojedine funkcije koje mogu biti veoma korisne u radu sa ovim sistemima za upravljanje bazama podataka. Autori su se potrudili da primeri budu to jasniji, izloeni po redosledu i da su povezani, tako da kada se redom unose grade kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje modifikacije se moe primeniti i u praksi. Poto je ovo prvo izdanje praktikuma, svi saveti i eventualne primedbe na tekst su dobrodole. Beograd, oktobar 2006. godine Autori
-1-
podataka sa sajtom ve i kako da je obezbedi tako da se njenom sadraju moe pristupiti ali ne i izmeniti od strane spoljnih korisnika. Postoji puno naina kako se moe definisati baza podataka. U osnovi to je skup podataka koji su organizovani prema potrebama korisnika, koji se odravaju i koji se koriste za dobijanje informacija. Moderne baze podataka se uvaju na raunaru, ali to nije bitno za samu definiciju. Na primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima, telefonski imenik itd. su takoe baze podataka (mada ih veina ljudi tako ne zove). Meutim, smetanje baze podataka na raunar omoguava laku i bru obradu podataka i dobijanje eljene informacije. Karakteristian je primer sa telefonskim imenikom koji se nalazi na papiru. Jednostavno je pronai telefonski broj eljene osobe, ali je znatno tee pronai ime osobe na osnovu telefonskog broja. Ako je telefonski imenik vei (vie smetenih podataka) prethodni problem se dodatno uslonjava. Raunarski zasnovane baze podataka omoguavaju jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz odgovarajue baze podataka se mogu dobiti i posebne informacije. Na primeru telefonskog imenika mogu se izlistati podaci za sve osobe po imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj poinje npr. sa 2, osobe kojima se telefonski broj zavrava sa 45 i jo mnogo toga. Na razvoj baza podataka presudno je uticao razvoj raunara, raunarskih mrea, kao i klijent/server obrade. Istraivanje, projektovanje i upotreba baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao to su: smanjeni trokovi odravanja; smanjena potreba za mrenim resursima; poboljan integritet podataka; donoenje ispravnih odluka na osnovu objektivnih informacija, bra reakcija na tritu, itd. Baza podataka smetena u raunaru, predstavljena je nizom bita, organizovanih u bajtove, a sa vie bajtova u odgovarajuem formatu zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze podataka. Niz polja se organizuje u zapise (rekorde) koji imaju znaenje jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke veze izmedju objekata realnog sveta. Zapisi istog formata se slau i ine datoteke, koje su fiziki zapisane na disku. Baza podataka obuhvata vie povezanih datoteka i moe biti centralizovana na jednom raunaru ili distribuirana na vie meusobno udaljenih raunara. Pored podataka koji su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju
-2-
pojedinane datoteke, njene osobine, karakteristini parametri iz datoteka, uspostavljene meusobne veze, pravila koja se odnos na pojave koje postoje i u realnom svetu i sl. Takvi podaci se zovu meta-podaci (metadata), tj. podaci o podacima. Koriste se pri pokretanju rada sa bazom podataka, kako bi se mogli uitati svi konfiguracioni podaci odgovarajue baze (self-describing).
-3-
kolekcija podataka, koja postoji jedno odreeno vreme, koja se odrava i koju koristi vie korisnika ili programa.
-4-
1.2.1. Podatak
Istorijski, pod terminom podatak se podrazumeva injenica o nekom predmetu i/ili dogaaju koja se moe zabeleiti i sauvati na raunaru. Na primer, u bazi podataka nekog prodavca podaci bi bile injenice kao to su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove struktuirani podatak. Najvaniji struktuirani podaci su brojevi, karakteri i datumi (vreme). Dananje baze podataka pored struktuiranih podataka sadre i druge vrste podataka kao to su razna dokumenta, mape, fotografije, zvuk, ak i video zapise. Na primer, u bazi podataka nekog prodavca mogla bi se nai i slika kupca. Takoe bi se mogao nai zvuni ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni podaci se najee mogu nai na web serverima i u Internet bazama podataka. Danas se podatak definie kao sauvana reprezentacija predmeta i/ili dogaaja koja ima smisla i vanosti za korisnika baze podataka. Ova definicija ukljuuje i struktuirane i nestruktuirane podatke. esto se u okviru jedne baze podataka mogu nai kombinovani struktuirani i nestruktuirani podaci kako bi se stvorilo multimedijalno okruenje. Na primer, automehaniarska radnja moe kombinovati struktuirane podatke (koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika automobila i skenirana kopija osiguranja). Pod podatkom se podrazumeva injenica prihvaena kao takva tj. kakva jeste. Podatak sam po sebi nema znaenje, tek kada se interpretira nekom vrstom sistema za obradu podataka poprima znaenje i postaje informacija. Tipino, termin podatak se odnosi na ono to je u bazi podatak. Dakle, podatak je sirova injenica - neobraena informacija. Raunar vri obradu podataka, prema zadatom programu, te se na osnovu saznanja sadranih u podacima, a kao rezultat njihove obrade, stiu nova saznanja - informacije.
-5-
1.2.2. Informacija
Termini podatak i informacija su usko povezani i esto se koriste kao sinonimi. Meutim, korisno je razlikovati termine podatak i informacija. Informaciju definiemo kao podatak koji je bio obraen na takav nain da se znanje osobe koja koristi podatak povealo. Na primer, razmotrimo sledei spisak injenica: Petar Petrovi Marko Markovi 0123 Janko Jankovi 0456 -------------------Slika 1.1 Skup podataka Prikazane injenice po definiciji pretstavljaju podatke, ali bi se veina sloila da su ovi podaci u sadanjoj formi beskorisni. ak iako pretpostavljamo da se radi o imenima osoba i njihovim matinim brojevima, podaci ostaju beskorisni jer ne znamo emu slue. Pogledajte ta se dogaa kada stavimo ove iste podatke u kontekst, kao to je pokazano na slici 1.2. Dodavanjem jo nekoliko dodatnih podataka i njihovim ureivanjem, prepoznajemo spisak upisanih studenata. Na ovaj nain se dolazi do informacije koja je korisna npr. upravi fakulteta, profesorima, studentskoj slubi i sl. Ime i prezime Petar Petrovi Marko Markovi Janko Jankovi ----------JMBG 1506983710325 0211979850123 1112985830456 -----------6-
Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu Drugi nain da se iz podataka dobiju informacije je da se podaci sumiraju ili na neki drugi nain obrade i prezentuju. Na primer, na slici 1.3 se vide sumirani podaci o upisu studenata prezentirani u vidu grafike informacije. Ova informacija se moe iskoristiti kao osnova za odluivanje o dodavanju novih predavanja ili o zapoljavanju novog nastavnog kadra. Moderne baze podataka vrlo esto sadre i podatke i informacije. Podaci se esto obrauju i uvaju u obraenoj formi i slue za pomo pri donoenju odluka, a takvim podacima (informacijama) se najbre pristupa.
-7-
Ostali; 63
Ekonomska kola; 45
250 198
200
150
125
100
76 30
50
Slika 1.3 Grafiki prikaz podataka iz BP - informacija o upisu Podaci obraeni tako da dobijaju znaenje ine informaciju. Informacija koja je precizna, relevantna, i dobijena na vreme je klju za donoenje dobre odluke.
-8-
Metapodaci opisuju svojstva podatka ali se nalaze odvojeno od tog podatka. Metapodaci iz tabele1.1 ne prikazuju ni jedan podatak. Oni omoguavaju dizajnerima i korisnicima baza podataka da razumeju koji
-9-
podaci postoje u bazi, ta oni znae, i koja je razlika izmeu podataka koji na prvi pogled izgledaju isto. Upravljanje metapodacima je veoma bitno jer podaci bez jasnog znaenja mogu biti zbunjujui, pogreno protumaeni ili puni greaka.
uspeh svakog poslovnog sistema.Termini baza podataka i upravljanje bazom podataka se ponekad meaju. Struno govorei, baza podataka je uvek skup injenica, a ne raunarski program. DBMS je uveden kao interfejs izmeu korisnika (korisnikih programa, aplikacija) i zapisa baze podataka na disku. Korisniki programi ne pristupaju podacima direktno, ve komuniciraju sa ovim softverom (programom). DBMS upravlja strukturom baze podataka: definie objekte baze, njihova svojstva (atribute), dozvoljene vrednosti atributa, veze izmeu objekata, ogranienja nad objektima i meusobnim vezama. Omoguava manipulaciju podacima u bazi: unoenje, brisanje i izmene, tj. omoguava njeno odravanje. Kontrolie pristup podacima: ko moe da pristupi podacima, kojim podacima i ta moe sa njima da radi.. DBMS dozvoljava deljenje BP izmeu vie aplikacija/korisnika i ini upravljanje podacima uspenijim i delotvornijim Uobiajeno je da kada se govori o softveru za baze podataka, onda se misli upravo na DBMS. DBMS upravlja interakcijom izmeu krajnjih korisnika (aplikacija) i baze podataka. Krajnji korisnici imaju bolji pristup veem broju bolje organizovanih podataka
Aplikacija Y Aplikacija X Aplikacija Z
Slika 1.5 DBMS je interfejs izmeu (aplikacija) korisnika i zapisa baze podataka na disku
- 11 -
Slika 1.6 Klasian sistem obrade podataka zasnovan na programskim jezicima i datotekama Da bi objasnili osnovne karakteristike sistema zasnovanog na datotekama, posmatrajmo jednu fabriku sa odreenim proizvodnim programom. Pretpostavimo da su nabavljene raunarske aplikacije za
- 12 -
voenje poslovanja ove fabrike realizovane na klasinim sistemima koji se zasnivaju na datotekama. Ovaj pristup dizajnu informacionog sistema se fokusira na potrebe za obradom podataka pojedinanih odeljenja, a ne na potrebe organizacije kao celine. Kada bi se kod korisnika javila potreba za novim sistemima pisali bi se novi raunarski programi za individualne aplikacije kao to su kontrola proizvoda, prijem rauna, ili kadrovski poslovi. Svaki od programa pravi se tako da odgovara potrebama odreenog odeljenja ili radne grupe. Prema tome, ne postoji opti plan, mapa ili model kojim bi se rukovodili za planiranje razvoja sistema. Tri raunarske aplikacije (A, B i C) pomou kojih se obrauju podaci zapisani u datotekama su prikazane na slici 1.7. Programima se odravaju tri nezavisna sistema porudbine, naplate i plate. Na slici se takoe vide osnovne datoteke vezane za svaku aplikaciju. Na primer, proces porudbina ima tri datoteke: podaci o kupcu, podaci o proizvodima, podaci o porudbinama. Neke od datoteka se ponavljaju u sva tri procesa (redudansa) to je tipino za sistem obrade podataka koji se zasniva na datotekama.
- 13 -
- 14 -
Ogranienost deljenja podataka Korienjem klasinog sistema zasnovanog na datotekama, svaki proces ima svoje datoteke i korisnici nemaju ansu da meusobno dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da radnici u raunovodstvu imaju pristup samo procesu naplate, dok nemaju pristup procesima porudbina i plata. Menaderi su imali velike probleme pri sastavljenju izvetaja za koje su im bili potrebni podaci iz razliitih procesa, jer bi se esto desilo da su dokumenta nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti podaci sakupili u jedan izvetaj. Takoe, dodatni problem je bio u tome to su se eljeni podaci esto nalazili u razliitim odeljenjima organizacije. Dugo vreme za razvoj Sa klasinim sistemom zasnovanom na datotekama postoji mala ansa za korienje prethodnih razvojnih dostigua. Svaka nova aplikacija zahteva od projektanta da krene od nule. Svaki put je neophodno definisati nove formate i opise podataka i pisati kod za pristup podacima za svaki program. Ovako veliko potrebno vreme za razvoj nije u skladu sa dananjim poslovnim potrebama, gde je svaki minut bitan da bi se postigao uspeh. Teko odravanje programa Skup svih prethodno navedenih nedostataka dovodi do preterane potrebe za odravanjem programa. ak 80% budeta predvienog za razvoj sistema zasnovanog na datotekama odlazi na njegovo odravanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj novih aplikacija.
Vano je znati da veina mana klasinog sitema zasnovanog na datotekama, koje smo u prethodnom delu teksta pominjali, mogu isto tako biti ogranienja za bazu podataka, pogotovo ako se ne promeni pristup razvoju baze podataka. Na primer, ukoliko preduzee razvije nekoliko zasebnih baza podataka (recimo, za svaku radnu jedinicu ili proces po jednu bazu) sa malom ili nikakvom vezom izmeu njih, onda moe doi do bespotrebnog ponavljanja istih podataka, ogranienja deljenja podataka, produavanja vremena potrebnog za razvoj i preterane potrebe za odravanjem programa.
- 15 -
- 16 -
- 17 -
Poboljana razmena podataka Baza podataka je dizajnirana kao resus organizacije koji koriste svi njeni zaposleni (kojima je ona neophodna u opisu posla). Odreenim internim i eksternim korisnicima je dozvoljeno korienje baze podataka, i svaki od njih (bio u pitanju jedan korisnik ili grupa) ima jedan ili vie pogleda koji mu olakavaju korienje baze podataka. Korisniki pogled je logiki opis jednog dela baze podataka koji je neophodan korisniku da obavi neki zadatak. Poveana produktivnost u razvoju aplikacija Velika prednost pristupa zasnovanog na bazama podataka je ta to se u znatnoj meri smanjuju trokovi i vreme potrebno za razvoj novih poslovnih aplikacija. Postoje dva vana razloga zato se aplikacije baza podataka razvijaju znatno bre nego kod klasinih sistema sa datotekama: 1. Pretpostavljajui da su baza podataka i sve propratne aplikacije ve napravljene i implementirane, programer se moe koncetrisati na odreenu funkciju koja je neophodna za novu aplikaciju, a ne mora da razmilja o definisanju podataka ili o detaljima vezanim za implementaciju. 2. DBMS prua veliki broj alata za izvetavanje, kao to su generatori formi i izvetaja, i jezike uz pomo kojih se automatizuju neke od aktivnosti kao to su dizajn i implementacija baza podataka.
Smanjena potreba za odravanjem programa Sauvani podaci se moraju esto menjati iz velikog broja razloga: nove vrste podataka se dodaju, formati podataka se menjaju, i tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu godinu, kada se sa uobiajenog sistema prikazivanja godina sa dve cifre moralo prei na etiri cifre. U sistemu obrade datoteka, metapodaci i logika pristupanju podacima se nalaze u individualnim aplikacionim programima (ovo je zavisnost izmeu programa i podataka o kojoj je ranije bilo rei). Kao rezultat ovoga, promena formata podataka i metoda pristupanja momentalno dovodi do potrebe menjanja aplikativnih programa.
- 18 -
Kod baza podataka, podaci su znatno vie nezavisni od aplikativnih programa koji ih koriste. U okviru odreenih granica, moemo da promenimo jednu od stavki, format podataka ili aplikativni program, a da ne moramo da promenimo drugu stavku. Kao rezultat ovoga, javlja se smanjenje potreba za odravanjem programa.
- 19 -
Trokovi i sloenost instaliranja, upravljanja i rada sistema sa bazama podataka Viekorisniki sistem za upravljanje bazama podataka je veliki i sloen softver koji u startu mnogo kota, zahteva obueno osoblje za instaliranje i rad i ima znaajne godinje trokove za odravanje i tehniku podrku. Instaliranje ovakvog sistema moe zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju, da bi se mogle pratiti nove verzije i nadogradnje softvera. Takoe se moe pojaviti potreba za dodatnim i skupljim softverom za baze podataka radi vee sigurnosti podataka. Trokovi prilagoavanja (konvertovanja) podataka Termin nasleeni sistemi se uglavnom koristi kada se govori o starijim aplikacijama u preduzeu koje su bazirane na datotenom pristupu ili starijim bazama podataka. Trokovi prilagoavanja ovakvih starijih sistema za rad sa modernim bazama podataka (mereni u novcu, vremenu i zahtevnosti posla) esto deluju kao velika prepreka za preduzee. Potreba za izradom sigurnosnih kopija i oporavkom podataka (backup) Deljena baza podataka preduzea uvek mora biti tana i dostupna. To zahteva razvijanje i korienje jasnih procedura izrade sigurnosnih kopija kao i oporavak baze podataka kada neko oteenje nastane. U dananjem okruenju, gde postoje raznovrsni bezbednosni rizici, reavanje ovog problema je od izuzetne vanosti. Moderan sistem za upravljanje bazama podataka obino sam obavlja izradu sigurnosnih kopija i oporavak podataka u sluaju havarija. Konflikti u organizaciji Deljena baza podataka zahteva saglasnost u vezi sa definicijama i vlasnitvom podataka, kao i utvrenu osobu ili osobe odgovorne za odravanje podataka. Iskustvo je pokazalo da nesuglasice u pogledu definicija podataka, formata i kodiranja podataka, prava na auriranje deljenih podataka i sl. su esta i vrlo teka tema za reavanje. Da bi se ovi problemi reili potrebno je da je organizacija u potpunosti posveena uvoenju/koritenju pristupa zasnovanog na bazama podataka. Zatim je potreban sposoban administrator baze podataka kao i smislen pristup razvoju baza
- 20 -
podataka. Ukoliko podrka i posveenost glavnih menadera za pristup okrenut bazama podataka izostane, velika je ansa da e krajnji korisnici razviti vei broj samostalnih baza podataka. Ove baze podataka e teko pruiti prednosti koje smo prethodno opisali. U krajnosti, one mogu da dovedu do donoenja loih odluka to naravno ugroava celu organizaciju.
- 21 -
Line baze podataka se iroko primenjuju jer esto mogu bitno unaprediti produktivnost pojedinca. Meutim, one sadre jedan faktor rizika: podatke ovih baza nije lako deliti sa drugim korisnicima. Na primer, ako bi menader prodaje eleo celokupan spisak klijenata i kontakata, to se ne bi moglo ni brzo ni lako uraditi uzimanjem podataka iz linih baza svakog od prodavaca. Ovo ilustruje veoma est problem: ako su neki podaci od interesa jednom oveku, onda su verovatno (ili e brzo postati) od interesa i drugim ljudima. Zbog toga, line baze podataka bi trebalo svesti na korienje pod posebnim okolnostima (npr. u veoma malim preduzeima) gde je verovatnoa potreba za deljenjem podataka izmeu korisnika izuzetno mala.
uvati na vie raunara, tako stvarajui distribuirane baze podataka? 6. Da li se bazi podataka moe pristupati preko Interneta i da li ona treba da bude ukljuena u intranet organizacije?
jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla sva poslovanja sa jednim dobavljaem ili pacijentom. Povaanje produktivnosi se moe postii uvoenjem, na primer, centralnog sistema za naruivanje materijala za sve zdravstvene centre i raporeivanjem osoblja i usluga koje vre na sve zdravstvenim centre. ERP sistem omoguava uvoenje prethodnih promena. Donoenje odluka na nivou cele organizacije, u vezi sa poslovanjem sa dobavljaima, i podnoenje izvetaja raznim agencijama zahteva sakupljene svih prethodnih podataka i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi skladite podataka koje se odrava i nalazi u seditu organizacije. Podaci koji se nalaze u skladitu podataka su preuzeti (i potom sumirani) iz pojedinanih baza podataka svakog medicinskog centra. Ovaj proces preuzimanja podataka se odvija periodino putem telekomunikacionoraunarske mree.
proizvoda preko Interneta. Internet konekcija je konfigurisana kao extranet to znai da samo odobrene maloprodaje mogu da pristupe intranet-u fabrike. Sve vee korienje Interneta, svetske mree koja povezuje korisnike, nebitno koje platforme je dovelo i do promena u okruenju baza podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do bitnih promena u davno utvrenim modelima poslovanja. Veoma uspene kompanije su bile ugroene zbog novih kompanija koje su prihvatile Internet pomou koga su unapredile informisanje i usluge koje su pruale svojim klijentima, i koje su zaobile tipine tokove marketinga i distribucije proizvoda. Na primer, kupci konfiguriu i poruuju svoj PC raunar direktno od proizvoaa raunara. Informacije o upranjenim mestima i aktivnostima organizacije se mogu dobiti preko Interneta za veinu organizacija. Svaka od ovih radnji zahteva podrku baze podataka. Lak pristup Internetu svih vrsta platformi omoguava kompanijama da reorganizuju svoje poslove i razviju bre aplikacije i to po manjim trokovima. Standardni interfejsi omoguavaju veu produktivnost korisnika, uz manje provedenog vremena na obuci, i manju potrebnu podrku. Osnova razvoja korisnikove aplikacije je prikljuivanje baze podataka iz koje se mogu dobiti svee informacije. Kada je baza podataka povezana sa nekom Internet lokacijom, korisnici preko Web browser-a mogu da postavljaju odreena pitanja na koja e dobiti odgovore bazirane na sveim informacijama. Odgovaranje na pitanja je automatsko; nema potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo pitanje nekoj osobi i da bi se zatim od nje ekao odgovor. Internet baze podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta. Kompanije prate sva deavanja na sajtu kako bi doli do to vie informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom, duina zadravanja na svakoj stranici i tome slino) kako bi to vie unapredili svoj odnos prema kupcima. Veina primera koji su navedeni prikazuju Business-to-Customer (B2C) veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obino naziva B2B (Business-to-Business) odnos. Internet se koristi da olaka B2C odnos, zato to su kupci obavezno spoljni faktor u odnosu na firmu, i mogunost kupca da pristupi poslovnim podacima i informacijama je od velike vanosti za uspean odnos. Dozvoljavanjem pristupa poslovnim
- 26 -
bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se nova pitanja za rukovoenje informacionim sistemima vezana za sigurnost i integritet podataka. Kompanije su godinama vrile razmenu informacija putem elektronske razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije, uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za obavljanje B2B razmena podataka i informacija. Extranet koristi Internet tehnologiju, meutim, pristup extranetu je, za razliku od Interneta kome mogu svi pristupiti, ogranien. Ustvari, pristup je ogranien na kompanije koje su u ulozi dobavljaa i kupca i koje imaju meusobni dogovor o pristupu podacima i informacijama jednih drugima. Obino, prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera. Ovaj nain pristupa olakava poslovne odnose tako to prua bri i efikasniji nain obrade i pristupanja podacima. Kao to je prethodno pomenuto mnoge organizacije su koristile Internet tehnologiju za stvaranje privatne mree namenjene za upravljanje informacijama u okviru organizacije. Po izgledu ne postoji razlika izmeu intranet i Internet stranica, ali pristup intranet stranici je ogranien samo na korisnike u okviru te organizacije. Stoga je i pristup bazi podataka organizacije ogranien. Intranet moe da ostvari Internet konekciju ali ta konekcija e biti zatiena firewall-om koji spreava neovlaeni pristup intranetu.
- 27 -
- 28 -
Slika 1.9 Komponente okruenja BP Sa unapreenjem softvera, korisniki interfejs postaje sve laki za upotrebu. Primeri za ovakav napredak su sistemi zasnovani na menijima, sistemi sa mogunou pristupa Internetu, i sistemi koji prepoznaju govor (prihvataju govorne komande). Cilj ovih sistema je da to vie krajnjih korisnika moe da koristi raunar, to znai da korisnici koji nisu raunarski eksperti mogu sami da naprave izvetaje i koriste jednostave aplikacije. Naravno, u ovakvom okruenju administratori baza podataka moraju da obrate panju na bezbednost baze podataka. Okruenje baze podataka prikazano na slici 1.9 predstavlja integrisani sistem hardvera, softvera i ljudi koji je napravljen da olaka skladitenje, preuzimanje, i kontrolu izvora informacija i da povea produktivnost preduzea.
- 29 -
Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama poeli su se pojavljivati prvi elektronski raunari. Oni su se esto koristili upravo za jednostavne linearne baze podataka, najee za raunovodstvo. Ipak, vrlo brzo, bogati kupci su poeli da zahtevaju vie od njihovih ekstremno skupih maina. Sve je to vodilo do ranih baza podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste Hollerith-ove buene kartice, neznatno modifikovane u odnosu na originalni dizajn. Nefleksibilnost polja iste duine, baze podataka pokretane 80 kolonskim buenim karticama, uinile su rane raunare metom napada i ala i potpunom misterijom za obinog oveka. Veina prvobitnih baza podataka se odnosila na specifine programe napisane za specifine baze podataka. Za razliku od modernih sistema koji mogu biti primenjeni na potpuno razliite baze podataka, ovi sistemi su bili usko povezani za bazu podataka da bi osigurali brzinu na utrb fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom sledeih decenija. U veini sluajeva, period uvoenja je dugo trajao, skoro deceniju pre navedene godine poetka upotrebe. Na primer, relacioni model je prvi put definisan od strane E.F.Codd u tekstu objavljenom 1970 godine. Meutim, relacioni model nije bio iroko prihvaen sve do 1980-tih godina. 1960te Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka su uvedeni u ovoj deceniji, i korieni su najpre samo kod velikih i sloenih projekata, kao to je to bio projekat sletanja Apollo-a na Mesec. Ovaj period moemo posmatrati kao period dokazivanja, u kom je demonstrirana sposobnost ovih sistema da upravljaju ogromnim koliinama podataka. Takoe, prvi napor da se standardizuju poduzet je sa formiranjem DBT Grupe (Data Base Task Group), tokom kasnih 60ih godina.
- 31 -
1970te Tokom ove decenije, upotreba sistema za upravljanje bazom podataka je postajala komercijalna stvarnost. Hijerarhijski i mreni sistemi za upravljanje podacima su uvedeni, velikim delom zbog potrebe za sistemom koji e moi da upravlja sloenim strukturama podataka, kao to su rauni fabrika pri nabavci sirovina, kojima je bilo izuzetno teko upravljati preko konvencionalnih metoda. Ovi modeli se i sutinski smatraju prvom generacijom sistema za upravljanje bazom podataka. Oba pristupa su se iroko primenjivala, zapravo, mnogi od tih sistema su u upotrebi i danas. Pa ipak, imali su nekoliko velikih nedostataka: Teak pristup podacima. Za pristup i najjednostavnijim podacima bili su potrebni izuzetno sloeni programi. Veoma ograniena nezavisnost podataka, tako da se programi nisu mogli izolovati od promena u formatu podataka. Nije postojala nijedna iroko prihvaena teorijska podloga za bilo koji od ovih modela, za razliku od relacionog modela podataka.
1980te Da bi se prevazila ova ogranienja, E. F. Codd, kao i mnogi drugi, razvili su model relacionih podataka tokom 70-ih godina. Ovaj model, koji se smatra drugom generacijom DBMS-a, doiveo je iroku komercijalnu upotrebu u poslovnom svetu tokom 80-ih godina. Sa relacionim modelom svi podaci su predstavljeni u formi tabele. Relativno jednostavan programski jezik etvrte generacije, nazvan SQL, korien je za dobijanje informacija. Ovaj model je obezbedio jednostavan pristup podacima i onim ljudima koji nisu bili programeri, prevazilazei na taj nain jednu od najveih primedbi koja je pratila sisteme prvih generacija. Model je takoe pokazao i svoju pogodnost za komunikaciju na relaciji klijent/server, paralelni prenos podataka, i upotrebu grafikog korisnikog interfejsa (GUI).
- 32 -
1990te Ove godine se oznaavaju kao nova raunarska era, najpre na nivou raunarske komunikacije na relaciji klijent/server, a potom sa stvaranjem skladita za podatke i upotrebom Internet aplikacija, koji su dobijali sve vie na vanosti u ovom periodu. Kao to je upravljanje podacima od strane DBMS-a postalo visoko primenjivo (npr., u raunovodstvu) tokom osamdesetih godina, multimedijalni podaci (ukljuujui i grafiku, zvuk, slike i video zapis) su postali uobiajena stvar tokom devedesetih godina. Kako bi se izborili sa sve sloenijim podacima, tokom devedesetih su uvedeni sistemi okrenuti ka objektu, koji se smatraju treom generacijom. Zbog velike potrebe za organizacijom ogromne koliine podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i prethodni sistem su u upotrebi i danas. Neki proizvoai ak rade na razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi mogli da upravljaju obema vrstama istih. Od 2000. godine Naravno, navodimo se na razmiljanje u kom pravcu e da krene razvoj DBMS tehnologija tokom naredne decenije. Iako e nesumnjivo doi do novih iznenaenja, moemo oekivati nastavak dobro uspostavljenih trendova: 1. Mogunost upravljanja sve sloenijim tipovima podataka. Ovi tipovi ukljuuju i multidimenzionalne podatke, koji su ve dobili na vanosti u aplikacijama skladitenja podataka. 2. Nastavak razvoja univerzalnih servera. Zasnovani na sistemu tree generacije DBMs-a, to su serveri koji mogu da upravljaju irokom lepezom raznih tipova podataka, tako da budu transparentni svim korisnicima. Bie naroito vani kod Internet aplikacija. 3. Dok su realnost, Kako se porastu u potpunosti distribuirane baze podataka postale trenutni trend ka cenrtalizaciji istih e se nastaviti. trokovi komunikacije sve vie smanjuju, nasuprot tipova podataka,vrednost lociranja i pristupa
- 33 -
centralizovanoj bazi podataka takoe se smanjuje. Manji trokovi, a visoke performanse svakako ohrabruju ovaj trend. 4. Skladita sa adresiranim sadrajem e postajati sve popularnija. Sa ovakvim pristupom, korisnik moe da izvue bilo kakav podatak specifikacijom kakvu vrstu podatka eli, umesto kako da doe do njega. Na primer, korisnik moe da skenira fotografiju i da trai od kompjutera pretragu, kako bi pronaao istu takvu, ili njoj slinu. 5. Baza podataka i druge tehnologije, poput vetake inteligencije i televizije, kao informacionog servisa, olakae pristup podacima neobuenim korisnicima. Na primer, korisnik e biti u mogunosti da zahteva podatak na vie jezika, a tehnologija baza podataka e da ukljuuje potrebe korisnika za podacima, na osnovu upita koji se uvaju, i menjati se na taj nain. 6. Rad na tehnologijama algoritama za tehniku analize podataka, koji tee ka upravljanju veoma velikim paketima podataka, kako bi organizacije to lake analizirale svoja ogromna skladita podataka. To e u velikoj meri olakati u planiranju strategije oraganizacija za njihovo poslovanje za due vremenske periode. 7. I na kraju skale se nalazi dalje irenje PDA, to e dovesti do poboljane sinhronizacije malih baza podataka i poboljanje brzine beinog prenosa. Bluetooth i drugi beini standardi e u velikoj meri ubrzati razvoj beinog povezivanja na Internet, ali e i nametnuti pitanje daljeg razvoja zatite podataka.
- 34 -
1.8. Modelovanje
Informacioni sistemi pojedinih firmi omoguavaju upravljanje podacima koji su bitni za njeno poslovanje. Meutim, broj internih podataka i podataka iz okruenja je ogroman te je nemogue sve podatke i sve uoene detalje opisati i sauvati unutar informacionog sistema. Postupkom selekcije identifikuju se i uvaju samo relevantni podaci. Time se dolazi do pojma modela podataka. On je izraz i posledica zahteva za obradom podataka relevantnih za odreeno podruje primene. Modeli su ovekovo sredstvo pojednostavljivanja problema i njegovo posmatranje samo sa stanovita bitnih za ciljeve analize. Objekt posmatranja (npr. automobil) ima uvek vie osobina (atributa) od kojih u datom trenutku analize moe biti dovoljan samo njihov manji broj (npr. samo registarski broj, tip automobila, ime i prezime vlasnika). To su najvaniji atributi potrebni u postupku pretraivanja i pronalaenja vlasnika vozila na osnovu registarskog broja vozila unutar jednog informacionog sistema. Ostali atributi kao to su boja, godina proizvodnje, broj sedita i sl. nisu bitni (mogu se zanemariti ) za takav postupak. ovek, obdaren sposobnostima apstraktnog naina miljenja, stvara jedan apstraktni model realnog sveta. Takav model realnog sveta (objekta posmatranja) zasniva se na simbolima i zove se konceptualni model podataka.
Relan svet Ulaz Cilj svakog modela je da uini da je: Izlaz1~Izlaz2 Programi za odravanje Baza podataka Programi za izvetavanje Izlaz2 Izlaz1
Slika 1.11 Realan svet i njegov model Modelovanje podataka se radi paralelno sa analizom potreba. Kako se informacije prikupljaju, objekti se identifikuju, dodjeljuju im se imena koristei termine bliske krajnjim korisnicima. Objekti se onda modeluju i analiziraju koritenjem dijagrama objekti-veze (ER dijagrami). Dijagram se moe pregledati od strane dizajnera i krajnjeg korisnika da bi se
- 35 -
osigurala njegova kompletnost i tanost. Ako model nije taan, modifikuje se, to ponekad zahteva da se prikupe dodatne informacije. Ciklus pregledanja i modifikovanja se nastavlja sve dok se ne dobije potvrda da je model korektan.
Rezultat navedenih koraka modelovanja zove se konceptualni model. On sadri, za posmatrani problem iz realnog sveta, sve relevantne tipove objekata, njihove osobine i meusobne veze. Rezultati prouavanja modela podataka doveli su do saznanja da svaki model podataka ima tri neodvojive komponente: strukturu podataka, operacije nad podacima, ogranienja (constraints).
- 36 -
Struktura i ogranienja, za razliku od operacija, opisuju stanje realnog sistema, tj. predstavljaju statiki opis stanja sistema. Strukturu modela ine objekti, njihova svojstva, veze izmeu objekata i njihovih svojstava. Operacije nad podacima u modelu su, u stvari, operacije nad strukturom modela kojima se izraava dinamika realnog sistema. Operacije izraavaju kretanje i promene tj. dinamiku realnog sistema. Ogranienja su pravila koja razdvajaju doputena od nedoputenih stanja realnog sistema i u svojoj prirodi deo su strukture modela podataka. Ponekad se ne posmatraju kao odvojene komponenta, nego kao deo strukture modela podataka.
1.8.2. Entiteti
Modelima podataka nastoji se preslikati realan sistem. Realan sistem sastoji se od objekata iz realnog sveta i njihovih veza izmeu kojih se uspostavljaju razliiti odnosi. Pod entitetom se podrazumeva sve to se moe jednoznano odrediti, identifikovati i razlikovati. Tako iroko postavljena definicija pokazuje da entitet moe biti svaki "realan" ili "apstraktan" objekt o kojem u odreenom trenutku razmiljamo. Entitet je realan ako fiziki, stvarno postoji. Najoptije se moe tvrditi da su granice entiteta u modelu podataka odreene ljudskim pogledom i nainom razmiljanja. Svaki entitet uoen u realnom sistemu ima svoje osobine koje ga ine sloenim i njihove vrednosti omoguavaju razlikovanje entiteta. Svojstvo entiteta ukljuuje dva elementa - atribut i vrednost atributa (npr. entitet Student ima atribute: Ime, Prezime, Broj indeksa, Adresu, Telefon i sl. i vrednosti Marko, Markovi, 123/03, Danijelova, 15, 011/376-543 respektivno). Svaki put kada se promeni vrednost atributa, potrebno je promenu evidentirati, tj. aurirati tu vrednost atributa za dati entitet. Precizno govorei, objekti koji se oznae pojmom entiteta mogu se zvati klase entiteta. Svaki objekt ima osobine (atribute) klase entiteta kojoj pripada. Npr. klasu entiteta Student ine pojedinani entiteti od kojih svaki ima zajednike atribute: Ime, Prezime, Broj indeksa, Adresa, Telefon i sl. Svaki pojedinani entitet ima sve navedene atribute, ali e se razlikovati od drugih entiteta po vrednostima pojedinih atributa.
- 37 -
Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se vrednost. Ako je atribut dovoljno sloen, tako da ima svoje dodatne atribute, moe se posmatrati kao novi entitet. Domen atributa je skup svih moguih vrednosti koje atribut moe poprimiti. Primarni klju je jedan ili vie atributa ija vrednost jednoznano odreuje primerak entiteta. Na primer, za entitet Auto, primarni klju je atribut registarski broj. Dva razliita lana ili primerka entiteta ne mogu imati isti primarni klju. Primarni klju je jedinstven za svakog lana entiteta. Na primer, za entitet Student primarni klju bi mogao biti broj indeksa.
samo jednom fakultetu. Takvi odnosi izmeu entiteta su retki, a mogu se predstaviti sledeom slikom:
Slika 1.12 Preslikavanje entiteta 1:1 Druga vrsta odnosa naziva se preslikavanje N:1 (ili 1:N). Vie elementa skupa X moe se preslikati na najvie jedan element skupa Y. Istovremeno jedan element skupa Y moe se preslikati na vie elemenata skupa X. Pogodan primer za ovu vrstu odnosa izmeu entiteta je odnos izmeu entiteta Student i Dekan. Vie studenata na jednom fakultetu ima samo jednog dekana, a jedan dekan je dekan za vie studenata na svom fakultetu.
Slika 1.13 Preslikavanje entiteta N:1 Najsloenije preslikavanje je tipa M:N. Svaki element prvog skupa moe se preslikati na vie elemenata drugog skupa, ali se i svaki element drugog skupa moe preslikati na vie elemenata prvog skupa. Karakteristian primer ovakvih veza postoji ako se uoe entiteti Student i Profesor. Jednom studentu predaje vie profesora, a ujedno jedan profesor predaje za vie studenata.
- 39 -
- 40 -
unose, auriraju ili jednostavno koriste baze podataka na razliitim nivoima organiziranosti poslovnih sistema. Model baze podataka koji je danas poznat kao ANSI/X3/SPARC model prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajueg eksternog modela. Zahtev za uitavanje odreenih podataka aplikativni sloj upuuje na eksterni sloj, odnosno odgovarajui korisniki model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Konceptualni nivo je najblii stvarnosti. Taj se nivo definie u procesu kreiranja modela podataka. Jedan od ciljeva modela podataka je oblikovanje podataka za sadanje i budue aplikacije. Moe se rei da konceptualni nivo ine sve relacione eme modela podataka, sve relacije i ogranienja. Spoljanji nivoi (modeli A, B i C) formiraju se na temelju konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema potrebama pojedinih korisnika.
Konceptualni model (sloj)
Model A
Podaci 1 B
Podaci 2 Podaci 3
Model B
Model C
C Podaci N
- 41 -
Unutranji (interni) sloj baze odnosi se na zapisivanje konceptualnog sloja na nekom medijumu za uvanje (najee disku). Radi se o slogovima zapisanim u datotekama. Nii sloj, uslovno reeno, ili nivo blii disku od internog sloja BP, je operativni sistem , koji na osnovu logikih adresa slogova ita sadraj diska.
- 42 -
Slika 1.16 ematski prikaz jednog hijerarhijskog modela Pravilo roditelj naslednik omoguava pristup podacima. Da bi se dolo do tabele na niem nivou, kree se od korena i ide prema dole kroz stablo dok se ne doe do cilja. Naravno, oigledan problem sa ovim modelom je
- 43 -
da korisnik mora da zna kako je stablo organizovano da bi pronaao bilo ta. Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne moe se dodati slog u tabelu naslednika dok se ne ukljui u roditeljsku tabelu. Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima, ali ne moe da se nosi sa povezivanjem ogranaka ili stvaranjem viestrukih veza. Zbog toga se stvara redudansa (viestruko pojavljivanje) podataka i mogunost netanog auriranja. Na primeru hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore, studente itd. mogu se lako uoiti navedene slabosti. Lako je predstaviti da na jednoj katedri ima vie profesora, ali se ne moe predstaviti da jedan profesor radi na vie katedri. Da bi se ovo uradilo, mora postojati dva pojavljivanja istog profesora. To moe dovesti do netanosti kod auriranja podataka, npr. mogue je da informacije budu razliite u dva zapisa, to vodi do konfuzije. Hijerarhijski model se vie ne koristi kao osnova za trenutne komercijalne sisteme, ali jo uvek postoji mnogo nasleenih sistema baziranih na ovom modelu. Zbog svih nedostataka koji postoje u hijerarhijskom modelu, razvijen je mreni model.
- 44 -
Slika 1.17 ema mrenog modela Mreni model se danas uglavnom ne upotrebljava za dizajniranje baza podataka, ali ipak ima sluajeva gde se kao deo naslea koristi u nekim kompanijama. Predstavlja unapreenje hijerarhijskog modela, ali je kompleksan i teak za upotrebu. Pored toga, teko ga je podrati matematikim aparatom, to onemoguava kasnije efikasno programiranje.
- 45 -
U srcu relacionog modela nalazi se koncept tabele (koja se naziva i relacija) u kojoj su smeteni svi podaci. Svaka tabela je nainjena od slogova (redova u tabeli), a svaki slog ima svoja polja (atribute). Osnovne karakteristike relacionog modela podataka su sledee: Sve se predstavlja relacijama (tabelama) Zasniva se na strogoj matematikoj teoriji Minimalna redudansa podataka Jednostavno auriranje podataka Izbegnute su anomalije auriranja Redosled kolona i redova ne utie na informacioni sadraj tabele Ne mogu da egzistiraju dva identina reda (rekorda) u jednoj tabeli Svaki red se moe jednoznano odrediti (postoji primarni klju) ...
U relacionom modelu podataka klase objekata se predstavljaju tabelama. Na primer klasa STUDENT se moe opisati atributima BROJ INDEKSA i IME i klasa KNJIGA sa itributima IFRA KNJIGE i NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele moe biti sledee: Student BrInd
75/01 22/02 156/03 112/02
Knjiga SifK
001 002 003 004 005
Ime
Marko Petar Milan Dragan
Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna i f ik Marketing
Slika 1.18 Tabela je osnovni objekat relacione baze podataka Prethodna dva objekta sa svojim atributima grafiki se mogu predstaviti na sledei nain:
- 46 -
SifK
Naziv
Slika 1.19 Grafiki prikaz objekata i njihovih atributa U realnom svetu objekti meusobno stupaju u veze. Na jednom fakultetu studenti dre (pozajmljuju iz biblioteke) pojedine knjige. Moe se uoiti da je veza izmeu ova dva posmatrana objekta tipa M:N, tj. vie studenata mogu da dre jednu knjigu, a jedna knjiga moe biti kod vie studenata. Neka je trenutna situacija iz realnog sveta prikazana na sledeoj slici: Student Knjiga
BrInd
75/01 22/02 156/03 112/02
Ime
Marko Petar Milan Dragan
SifK
001 002 003 004 005
Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna informatika Marketing
Slika 1.20 Veze izmeu objekata realnog sveta formira se klasa veza Klasa veza se moe posmatrati kao zaseban entitet, a taj entitet moe da ima svoje posebne atribute. U naem primeru, klasa veza DRI moe da ima kao atribut DATUM od kada student dri odreenu knjigu. Neka je trenutna situacija iz realnog sveta prikazana sledeom slikom:
- 47 -
Student BrInd
75/01 22/02 156/03 112/02
Dri
12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005
Knjiga SifK
001 002 003 004 005
Ime
Marko Petar Milan Dragan
Naziv
Raunovodstvo Baze podataka Osnove finansija Poslovna informatika Marketing
Slika 1.21 Klasa veza moe da ima svoje atribute Grafiki prikaz navedenog dat je na sledeoj slici
BrInd Student Ime
Datum
SifK Dri Knjiga Naziv
Slika 1.22 Klasa veza moe da ima svoje atribute Sutina relacionog modela je da se i klase objekata i klase veza izmeu objekata predstavljaju na jedinstven nain, tj. preko tabela. U naem primeru postoje tri tabele: STUDENT, KNJIGA i DRI. U relacionom modelu podataka tabela se definie kao relacija, koja mora da ispuni odgovarajue uslove. Svaka relacija mora da ima primarni klju jedan ili vie atributa koji na jedinstven nain opisuju svaki zapis u jednoj tabeli. Primarni klju se paljivo bira. Na primer u klasi studenata lo izbor primarnog kljua bi bio atribut IME, zato to se mogu pojaviti dva studenta sa istim imenom. Dobar izbor primarnog kljua je atribut Broj indeksa, zato to ne postoje dva studenta sa istim brojem indeksa. Za klase objekata Student i Knjiga vri se prevoenje u relacioni model na sledei nain (podvlaenjem su oznaeni atributi koji ine primarni klju):
- 48 -
STUDENT (BrInd, Ime), KNJIGA (SifK, Naziv) Za klasu veza Dri, moe se difinisati prirodan primarni klju u odnosu na objekte koje povezuje. U naem primeru relacija Dri bi glasila: DRI(BrInd, SifK, Datum) Dakle, za posmatrani realan sluaj gde sudenti dre pojedine knjige, izvreno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i KNJIGA imaju dve kolone, a tabela DRI tri kolone. Sve tabele su povezane. Povezivanje se vri preko vrednosti atributa u relacijama. na sledei nain:
STUDENT (BrInd, Ime) DRI (BrInd, SifK, Ime)
Strani klju relacije Dri koji pokazuje na primarni klju relacije Student Strani klju relacije Dri koji pokazuje na primarni klju relacije Knjiga
Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih kljueva Veoma je vano zapaziti da kako i gde su tabele smetene ne pravi nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje baza podataka koristi da bi pronala tabelu. Korisniku je potrebno samo da zna ime tabele. Nema potrebe da se vodi rauna o tome kako su podaci smeteni na disku. Ovo je razliito od hijerarhijskog i mrenog modela u kojima korisnik mora da razume kako su podaci struktuirani unutar baze podataka da bi mogao da ih pretrauje, unosi nove, aurira ili brie postojee slogove. Relaciona baza podataka standardno se satoji iz vie tabela. Ipak, za razliku od mrene baze podataka, tabele nisu povezane pokazivaima. Umesto toga koriste se kljuevi da upare redove podataka u razliitim tabelama. Klju je samo jo jedna ili vie kolona u tabeli, koja odgovara kolonama u drugim tabelama.
- 49 -
Zahtev za podatkom iz relacione baze podataka se dobija izvravanjem upita koji je napisan u posebnom jeziku, obino nekom od dijalekata SQL-a. Iako je SQL originalno namenjen za krajnje korisnike, mnogo ee se SQL upiti ugrauju u softver koji omoguava laki korisniki interfejs. Kao odgovor na upit, baza podataka vraa skup podataka, koji je u stvari lista redova koji sadre odgovor. Najjednostavniji upit je da se dobiju svi redovi iz tabele, ali ee, redovi se filtriraju na neki nain da bi se dobio traeni odgovor. esto se podaci iz vie tabela kombinuju u jednu, procesom udruivanja. Fleksibilnost relacionih baza podataka dozvoljava programerima da piu upite koji nisu bili predvieni od strane dizajnera baze podataka. Kao rezultat, relacione baze podataka mogu da se koriste u vie aplikacija koje originalni dizajneri nisu predvideli, to je posebno vano za baze podataka koje se mogu koristiti decenijama. Ovo je model relacionih baza podataka uinilo veoma popularnim u poslovnoj primeni.
Objekti su samo jedno pojavljivanje u odgovarajuoj klasi. Objektno orijentisan model karakterie bogatsvo tipova podataka tip moe biti i
- 50 -
drugi objekat. Direktna veza izmeu objekata u aplikaciji i objekata u BP rezultuje boljim performansama baze podataka. Posmatrajmo primer u kome se vodi evidencija o Studentima sa svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji student poseduje. Dalje, vodi se evidencija o Automobilima sa svojstvima Naziv automobila, Registarski broj, Boja, Godite i Vlasnik. Prethodni primer se moe prikazati na sledei nain
Student BrInd
123/05 ------
Ime
Marko -----
Prezime
Markovi -----
Fakultet
FPI -----
Automobil
Golf -----
Automobil Naziv
Golf ------
RegBr
BG123456 -----
Boja
Belo -----
Godite
1993 -----
Vlasnik
Marko -----
Slika 1.24 U objektno orijentisanim BP tip podatka moe biti drugi objekat Objektno orjentisani DBMS-ovi omoguavaju uvanje objekata direktno, bez mapiranja za razliite strukture podataka. Relacioni DBMS zahteva mapiranje iz objekata u tabele. U objektno orijentisanom modelu, informacija je sauvana kao stalni objekt, a ne kao red u tabeli. Ovo sistem ini efikasnijim u smislu prostora potrebnog za smetanje i uvanje podataka i osigurava da korisnik manipulie podacima samo na onaj nain koji je programer odredio. S druge strane, obzirom da se kontrola vri na veoma niskom nivou, mnogo je tee za treu stranu da napravi neki dodatak. Dok kod
- 51 -
relacionih baza podataka moemo imati korist od softvera izraenog od strane treeg dobavljaa, korisnici objektno orjentisanih sistema za upravljanje bazama podataka ili moraju da narue dodatni softver od originalnog programera ili da ga razviju u saradnji sa drugim firmama koje koriste isti sistem.
1.10. Transakcije
Baze podataka kontinuirano skladite informacije koje opisuju trenutno stanje preduzea. Na primer, baza podataka banke uva trenutni bilans na svakom raunu deponenta. Kada se u stvarnom svetu dogodi neto to menja stanje preduzea, mora da se uradi odgovarajua promena podataka u bazi podataka. Ove promene se deavaju uz pomo programa koji se nazivaju transakcije koje deluju kada doe do promena u stvarnom svetu. Na primer, kada klijent polae novac u banku (dogaaj u stvarnom svetu), izvrava se transakcija depozita. Svaka transakcija mora biti ureena tako da odrava nepogreivost veze izmeu stanja baze podataka preduzea koje je kreira iz stvarnog sveta. Pored toga to menja stanje baze podataka, transakcija sama po sebi moe da inicira neke dogaaje u stvarnom svetu. Na primer, izdvojena transakcija kod bankomata, inicira dogaaj odliva novca. Obino se transakcijom naziva niz operacija nad bazom podataka koji odgovara jednoj logikoj jedinici posla u realnom sistemu. Vano je istai da se ta logika jedinica posla izvrava do kraja ili se ponitava u celini. Drugim reima, zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvreni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeuje ouvanje konzistentnosti baze. Primer transakcije: Podizanje novca sa rauna u banci. Kada banka primi zahtev, transakcija obuhvata sledee korake: 1. Provera bankarske kartice 2. Provera rauna (stanje) 3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se nastavlja 4. Smanjuje se stanje na raunu za zahtevani iznos
- 52 -
5. Generie se izvetaj o transakciji 6. Isplauje se novac i daje izvetaj o transakciji Transakcija mora da kompletira sve korake, inae bi jedna od strana u transakciji imala tetu. Obrada transakcija je izuzetno vana u viekorisnikim aplikacijama. Kada vie korisnika istovremeno unosi izmene u bazu podataka, vie se ne moemo pouzdati u to da e uvek jedna izmena biti trajno upisana u bazu pre nego to zapone naredna. Zbog toga u bazama podataka postoje mehanizmi kojima se moe obezbediti da konkurentno izvravanje transakcija daje iste rezultate kao kada se transakcije izvravaju u serijskom redosledu.
moraju biti jednaki efektima nekog njihovog serijskog (jedna posle druge) izvrenja. Zbog poveanja paralelizma u obradi transakcija dozvoljavaju se razliiti nivoi izolovanosti. Trajnost (durability). Trajnost znai da kada se transakcija zavri (potvrene promene), njeni efekti ne mogu biti izgubljeni, ak i ako se neposredno po njenom okonanju desi neki ozbiljan otkaz sistema.
Transakcija poinje pozivanjem metode BEGIN TRANSACTION, ime se oznaava poetak niza operacija koje ine jednu logiku jedinicu. Metoda COMMIT preuzima sve izmene nainjene od poslednjeg mesta na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na disk. Metoda ROLLBACK deluje na suprotan nain od COMMIT ona ponitava sve izmene i vraa stanje kakvo je bilo pre poslednjeg poziva metode COMMIT. DBMS poseduje i odrava dnevnik transakcija (tj. dnevnik aktivnosti, log file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS aurirao uva se: vrednost pre auriranja (before-image) vrednost posle auriranja (after-image)
Na naredbu ROLLBACK, DBMS koristi vrednosti pre za datu transakciju. Pre COMMIT naredbe sistem prvo upisuje vrednosti pre i posle u log fajl. Ako se prekine COMMIT naredba, mogu se proitati
- 54 -
Transakcija1 Transakcija2 Istovremeno izvravanje sve tri transakcije Paralelno izvravanje transakcija
Slika 1.25 Paralelno i serijsko izvravanje transakcija DBMS upravlja konkurentnim radom vie aplikacija (korisnika), obezbeuje sinhronizaciju njihovog rada, a sve u cilju spreavanja tetnih posledica pri promenama koje se vre nad bazom podataka u viekorisnikom okruenju. Komponente DBMS koje uestvuju u ovom procesu su: Planer (Scheduler), Menader transakcija (Transaction manager).
Planer vodi rauna o redosledu akcija kod vie konkurentnih transakcija. Ako itanje ili upisivanje moe da narui integritet baze podataka, zahtev
- 55 -
se ili vremenski odlae ili se ponitava cela transakcija. Menader transakcija upravlja celokupnim izvrenjem transakcija. Idealan sluaj izvravanja transakcija je serijsko izvravanje, ali je to neefikasno i nije u skladu sa zahtevima iz realnog sveta. Posledica je korektan rezultat. Serijsko izvravanje transakcija, u stvari, znai da: nema preplitanja transakcija, prvo se zavri jedna, zatim poinje druga transakcija
Konkurentno izvravanje transakcija je serijabilno (linearno) ako daje isti rezultat kao i serijsko izvravanje svih transakcija.
- 56 -
Stalna pristupanost Zbog toga to je uvek aktivan, informacioni sistem mora biti operativan tokom radnog vremena preduzea. U nekim preduzeima, to znai da sistem mora da bude stalno dostupan. Na primer, kod sistema za rezervaciju avionskih karata, moe da se zatrai rezervacija karata iz agencija rasporeenih u velikom broju vremenskih zona, tako da se sistem nikada ne gasi. Kada sistemi doive kolaps, to dovedi do poremeaja u poslovanju. Na primer, ukoliko raunar za rezervaciju karata ne radi, ne moe se ni uraditi rezervacija. Mogunost tolerancije pada sistema zavisi pre svega od prirode preduzea. Svakako je jasno da sistem kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima sistem za rezervacije. VISA je objavila 2002. godine da je njihov sistem bio iskljuen na svega osam minuta u poslednjih pet godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U osnovi stalno pristupanih sistema u sutini su kvalitetan hardver i softver Visoka pouzdanost Sistem mora precizno da prikae rezultate svih transakcija. To znai ne samo da transakcija mora da bude tano programirana, ve i da ne sme doi do greke zbog uporednog (paralelnog) odvijanja transakcija, ili meusobne komunikacije delova programa za vreme izvrenja transakcija. Meutim, veliki sistemi za prenos transakcija ukljuuje hiljade hardverskih i softverskih modula, i malo je verovatno da svi rade savreno precizno. Ipak, sistem ne sme da zaboravi rezultate bilo koje zavrene transakcije. Na primer, baza bodataka u bankarskom sistemu mora precizno da prikae efekat svih ulaganja i podizanja novca koji su se obavili, i ne sme da zaboravi rezultate bilo kakve transakcije tog tipa. Veliki protok informacija Poto preduzea imaju veliki broj klijenata zbog kojih moraju da koriste sisteme za prenos transakcija, sistem mora da bude u stanju da obavlja vie transakcija u sekundi. Na primer, sistem za odobravanje kreditnih kartica moe da obavlja na hiljade transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije ne mogu izvravati serijski, ve se moraju izvravati uporedno; to sa druge strane znaajno komplikuje strukturu sistema.
- 57 -
Brza reakcija Sistem mora brzo da odreaguje zbog kupaca koji ekaju na njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od vrste naredbe koja se zadaje sistemu. Moemo da ekamo petnaest sekundi ispred bankomata kada podiemo novac, ali oekujemo, da, kada telefoniramo, poziv bude uspostavljen za nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija, reakcija sistema ne dogodi u tano utvrenom vremenu, transakcija se nee obavljati pravilno. Na primer, u fabrici sa automatizovanim sistemom, u transakciji moe od sistema da se zatrai da aktivira neku mainu pre nego to deo za obradu doe do nje. Za aplikacije ovog tipa se kae da imaju tzv. prinudno radno vreme. Dugotrajnost Sistemi za prenos transakcija su veoma kopleksni, i nisu lako zamenljivi. Stoga, oni moraju biti dizajnirani tako da se pojedinani hardverski i softverski moduli mogu zameniti novijim verzijama (koje imaju bolje performanse ili dodatne funkcije) bez velikih poremeaja unutar sistema. Bezbednost Mnogi sistemi za prenos transakcija sadre poverljive informacije o pojedincima (npr. stvari koje su kupili, brojeve kreditnih kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Poto ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta (ukljuujui i Internet) bezbednost je vana. Korisnici moraju da se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da imaju pristup samo onim transakcijama za ije izvrenje su ovlaeni (samo slubenik u banci moe da izvri transakcije na nekom raunu). Informacije u bazi podataka ne smeju da se presreu i itaju od strane hakera, a informacije prenesene izmeu korisnika i sis-tema se ne smeju menjati i najee treba da budu zatiene od prislukivanja.
- 58 -
1.13. Zakljuak
Tokom proteklih decenija dolo je do naglog porasta u broju i vanosti aplikacija baza podataka. Baze se koriste za skladitenje, manipulaciju i dobijanje podataka u organizacijama svih vrsta. Baza podataka je organizovan skup logiki povezanih podataka. Podatak definiemo kao kao predstavnika objekta ili nekog dogaaja, koji bi bili od vanosti u korisnikovom realnom okruenju. Informacija je podatak koji je tako obraen da nakon njegove upotrebe, korisnik oplemenjuje svoja saznanja. I podatak, kao i informacija se mogu uvati u bazi podataka. Metapodatak jeste onaj podatak koji opisuje karakteristike korisnikih podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka (DBMS) je softverski sistem koji se koristi da stvara, odrava i obezbeuje kontrolu nad pristupom bazama podataka. DBMS skladiti metapodatke u delu koji je centralno skladite za sve definicije podataka, njihove veze, monitoring i formati izvetaja kao i ostale komponente sistema. Klasini sistemi zasnovani na datotekama i programskim jezicima su razvijeni u ranijoj raunarskoj eri, kako bi raunari mogli da skladite, manipuliu i izvlae velike fajlove podataka. Ovi sistemi (i danas u upotrebi) su imali veliki niz nedostataka kao to su zavisnost izmeu podataka i programa, dupliranje podataka, njihova podela, kao i vreme izvrenja. Pristu preko baza podataka nastao je kao odgovor na te nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe, poslovne baze i Internet baze. U poslovne baze ulaze i skladita podataka i integrisani programi za podrku u odluivanju. Tehnologija baza podataka je poela sa razvojem tokom ezdesetih godina prolog veka, i od tada se razvija bez prekida, sa tendencijama ka daljem usavravanju i uklanjanju bilo kakvih potekoa kada su u pitanju upravljanje, pristup i odravanje podataka u bazi podataka. Informacioni sistemi pojedinih firmi omoguavaju upravljanje podacima koji su bitni za njeno poslovanje. Kako je broj internih podataka i podataka iz okruenja ogroman nemogue je sve podatke i sve uoene detalje opisati i sauvati unutar informacionog sistema. Postupkom selekcije identifikuju se i uvaju samo relevantni podaci i stvaraju modeli
- 59 -
realnog sveta. Oni su izraz i posledica zahteva za obradom podataka relevantnih za odreeno podruje primene. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledee osnovne modele: hijerarhijski model, mreni model, relacioni model i objektni model Na bazi ANSI/X3/SPARC modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajueg eksternog modela. Zahtev za uitavanje odreenih podataka aplikativni sloj upuuje na eksterni sloj, odnosno odgovarajui korisniki model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Transakcija je niz operacija nad bazom podataka i odgovara jednoj logikoj jedinici posla u realnom sistemu, koja se izvrava do kraja ili se ponitava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvreni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeuje ouvanje konzistentnosti baze.
1.14. Literatura
[1] James L. Johnson, Database: Models, Languages, Design, Oxford University Press, 1997., London. [2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems, Pearson, Addison Wesley, 2004. [3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison Wesley, Boston, MA [4] Branislav Lazarevi, Z. Marjanovi, N. Anii, S. Babarogi, Baze podataka, FON, Beograd, 2003. [5] Vladimir Blagojevi, Relacione baze podataka, Klub Nikola Tesla, Beograd, 2001. [6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern Database Management, Pearson, Prentice Hall, 2005. [7] B. Thalheim, Fundamentals of ER Modeling, Springer Verlag, Berlin [8] Craig S. Mullins, Administracija baza podataka, Kompjuter biblioteka, 2003.
- 60 -
2. O SQL-u
SQL (Stuctiured Query Language) je standardni relacioni upitni jezik (ANSI - American National Standards Institute - standard). Ovaj jezik se koristi za pristup i manipulaciju sistemima za upravljanje bazom podataka (DBMS - DataBase Management System), to najee podrazumeva itanje i izmenu podataka u razliitim bazama podataka. Tvorcem SQL-a se smatra Chamberlin, a SQL je nastao u iBM-ovoj istraivakoj laboratoriji (IBM Research Laboratori) u San Jose-u, Kalifornija 1974. godine. to je na istom mestu gde je i E.F. Codd 1970 definisao osnovne koncepte relacionog modela podataka SQL koji su bili osnova za dalji razvoj relacionih baza podataka. SQL je uspeno primenjen u sistemima za upravljanje bazom podataka kao to su MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase itd. Osnovne karakteristike SQL-a: 1. Jednostavnost i jednobraznost pri kori enju Tabela (relacija) se kreira jednom izvrnom naredbom. Odmah po kreiranju tabela je raspoloiva za korienje. Svi podaci memorisani su u tabelama i rezultat bilo koje operacije se logiki prikazuje u obliku tabele. 2. Mogu nost interaktivnog i klasi nog (aplikativnog) programiranja Koristei SQL dobijaju se odgovori na trenutne, unapred ne predvidene zahteve ili se SQL blokovi "ugrauju" u klasini vii programski jezik (FORTRAN, COBOL. PL/I, C) omoguujui klasinu obradu gde korisnik same aplikacije najee uopte nije ni svestan da koristi SQL. 3. Neproceduralnost (tj. proceduralnost u minimalnom stepenu). Ni za jedan jezik se ne moe rei da je potpuno neproceduralan, ve da je neproceduralan u veem ili manjem stepenu. SQL je u velikoj meri neproceduralan jer definie TA, a ne KAKO: koji podaci se ele, koje tabele se referenciraju i koji uslovi treba da budu ispunjeni, bez precizne specifikacije procedure za dobijanje eljenih podataka. Preciznije reeno SQL je na viem nivou apstrakcije nego klasini vii programski jezici, odnosno mnogi
- 61 -
podjezici relacionih sistema za upravljanje bazama podataka koji se esto koriste. Osnovne mogunosti SQL-a su:
SQL omoguava pristup bazi podataka SQL je jedan od ANSI standardardnih racunarskih jezika SQL moe da izvrava upite nad bazom podataka SQL moe da prikazuje podatke iz baze podataka SQL moe da unosi nove podatke u bazu podataka SQL moe da obrie postojee zapise iz baze podataka SQL moe da izmeni podatke u bazi podataka
Reimi rada
SQL podrava dva reima rada sa BP:
Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko tastature a rezultati se prikazuju na monitoru, pristup BP je ogranien jedino pravima korisnika Programski (BASH): korisnik pokree program u kome su ugraene SQL naredbe, pristup BP je ogranien pored prava korisnika i sadrajem programa koji se pokree
- 62 -
Slika 3.1 Prvi prozor Wizard-a Ovo je prva stranica Setup Wizarda koji e vam pomoi da na svoj Windows sistem instalirate MySQL serverski program. Da bi ste nastavili dalje kliknite na dugme Next, posle ega e se pojaviti sledei prozor kao na slici:
- 63 -
Sika 3.2 Drugi prozor Wizard-a Na ovom prozoru je potrebno izabrati tip instalacije koju elite. Prva opcija je Typical koja je tipina i vrlo upotrebljiva za veinu korisnika pa je poeljno nju izabrati. Pored nje tu je i Complete instalacija koja e instalirati sve programe koji postoje u ovom paketu, i na kraju je opcija Custom kod koje moete runo izabrati ta od komponenata elite da se instalira a ta ne. Izaberite Typical ako ve nije izabrana i kliknite na dugme Next da bi nastavili instalaciju. Pojavie se trea stranica Wizarda koja izgleda kao na slici:
- 64 -
Sika 3.3 Trei prozor Wizard-a Da bi instalirali MySQL server kliknite na dugme Install posle ega je potrebno saekati neko vreme dok se ne zavri proces instalacije (ovo moe potrajati neko vreme u zavisnosti od brzine vaeg raunara). Po zavretku instalacije pojavie se prozor kao na slici:
- 65 -
Sika 3.4 etvrti prozor Wizard-a Ovde imamo tri opcije. Prva je da kreiramo novi account za MySQL, druga je da koristimo neki koji smo ve ranije kreirali a trea je da preskoimo ovaj korak jer on nije neophodan ako ne elimo da kreiramo svoj account na MySQL.com-u. Ovde emo preskoiti ovaj korak i neemo kreirati novi account, izaberite opcije Skip Sign-Up i kliknite na dugme Next, posle ega e se pojaviti prozor kao na slici:
- 66 -
Sika 3.5 Peti prozor Wizard-a Na ovom prozoru vidimo da je proces instalacije zavren i moete izabrati ukoliko elite da konfiguriete server (potrebno je da opcija Configure the MySQL Server now bude izabrana kao na slici). Ukoliko ne elite da sada konfiguriete server ve kasnije deekirajte ovu opciju. Za sada e te ovu opciju ostaviti ukljuenu da bi demonstrirali kako se konfigurie server. Kliknitu na taster Next da bi se pojavio prvi prozor Wizard-a koji e vam pomoi da konfiguriete server.
- 67 -
Slika 3.6 Prvi prozor Wizard-a za konfiguraciju MySQL-a Ovde moete primetiti da postoje dve opcije koje moete izabrati. Prva je Detailed Configuration ijim izborom e te moi do detalja runo da podesite svoj server. Druga je Standrad Configuration koja je preporuljiva za veinu instalacija. Izaberite Standard Configuration i zatim kliknite na dugme Next posle ega e se pojaviti prozor kao na slici:
- 68 -
Slika 3.7 Drugi prozor Wizard-a za konfiguraciju MySQL-a Ovde je potrebno da sve ostavite kako jeste, samo ukljuite opciju Include Bin Directory in Windows Path (ovo nije obavezno ali je poeljno da bi kasnije mogli iz komandne linije lake da pozivate klijentski program). Takoe proverite da li je izabrana opcija Lanch the MySQL Server automatically koja znai e pri svakom pokretanju operativnog sistema automatski biti pokrenut i server, a zatim kliknite na taster Next da bi se pojavio sledei prozor kao na slici:
- 69 -
Slika 3.8 Trei prozor Wizard-a za konfiguraciju MySQL-a Ovde je vrlo bitno u polje New root password upisati ifru koju e te koristiti kasnije za rad sa bazom podataka i u sledeem polju Confirm potvrditi to jest jo jednom uneti istu ifru a zatim kliknite na Next da bi nastavili dalje (ovde je mogue izabrati i opciju Create An Anonymous Account to znai da e svako moi da se loguje kao Anonymous bez ifre, ovo je poeljno izbegavati). Posle izbora opcije Next pojavie se prozro kao na slici:
- 70 -
Slika 3.9 etvrti prozor Wizard-a za konfiguraciju MySQL-a Ovo je u stvari statusni prozor koji e prikazivati tok konfigurisanja to jest pojedinanih stavki i primenu podeavanja. Da bi konfigurisali va server potrebno je izabrati dugme Execute i saekati nekoliko trenutaka da se konfigurisanje zavri posle ega e se ukoliko je sve u redu pojaviti prozor kao na slici:
- 71 -
Slika 3.10 Peti prozor Wizard-a za konfiguraciju MySQL-a Ovim ste zavrili proces instalacije i konfigurisanja. Startujete MySQL i moete poeti sa radom.
- 72 -
Slika 3.11 Prvi prozor MySQL-a Ovde je potrebno uneti root password koji ste zadali prilikom instalacije, unesite ifru i pritisnite taster Enter na tastaturi posle ega e se pojaviti prozor kao na sledeoj slici:
- 73 -
Slika 3.12 Prvi prozor MySQL-a Ukoliko je sve u redu pojavie se prozor koji izgleda isto ovako i to znai da ste se upravo uspeno ulogovali i da vam je sada omoguen rad sa ovim SUBP-om. Sada moete izabrati neku od postojeih baza ili kreirati novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu DDL gde je to objanjeno). Ukoliko ne znate koje se baze nalaze trenutno na sistemu to moete proveriti kucanjem naredbe: SHOW DATABASES; posle ega e se na ekranu pojaviti spisak svih postojeih baza na ovom sistemu.
- 74 -
Numeriki tipovi podataka Vremenski tipovi podataka Binarni i tekstualni tipovi podataka
MySQL podrava i proirenja za podrku podataka veeg obima. Takoe, osim tipa podataka skup vrednosti se moe dodatno definisati i korienjem atributa koji mogu biti opti (npr. da je unos vrednosti obavezan) i specifini za odreeni tip podataka (npr. Signed/Unsigned za tip Integer).
smallint
mediumint
int
bigint
Najbitniji atributi numerikih tipova podataka su "Signed/Unsigned" i "Zerrofil". "Signed/Unsigned" atribut oznaava da li e se u poljima tog tipa uvati samo pozitivne ili i pozitivne i negativne vrednosti. U zavisnosti od ovog parametra se odreuje i donja/gornja granica unetih vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima dodaje nule do definisane duine (npr. unos vrednosti "4" u polje tipa INT(5) e se odraziti kao vrednost "00004") i automatski postavlja i parametar "Unsigned". Tipovi FLOAT i DOUBLE se koriste za predstavljanje priblinih vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23 podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip DOUBLE. MySql automatski podrava zaokruivanje tako da e se vrednost 999.00009 uneta u polje definisano kao ime_polja DOUBLE(5,4) sauvati kao 999.0001. Tipovi DECIMAL i NUMERIC se koriste za predstavljanje tanih numerikih vrednosti. Razlika izmeu ovih tipova i tipova FLOAT i DOUBLE je u tome to se kod tipova DECIMAL i NUMERIC parametar preciznost zahteva kao statiki (npr. kurs_dinara DECIMAL(3,2)).
Svaki od navedenih tipova podataka ima sopstveni skup validnih vrednosti kao i nula vrednost koja zamenjuje uneene vrednosti koje nisu validne. Tip TIMESTAMP poseduje automatsko ponaanje tj. automatski unosi vrednost sa sistemskog asovnika. U Tabeli 2.2.1 je prikazan format podataka vezanih za datum i vreme.
- 76 -
Tabela 4.2 Format podataka vezanih za datum i vreme Navedeni tipovi podataka vezani za datum i vreme nemaju specifine parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar length. Podrazumevana vrednost parametar length kod tipa TIMESTAMP je 14 a moe biti i dodatno navedena: 14 (format YYYYMMDDHHMMSS) 12 (format YYYYMMDDHHMM) 10 (format YYYYMMDDHH) 8 (format YYYYMMDD) 6 (format YYYYMM) 4 (format YYYY) 2 (format YY) Podrazumevana vrednost parametar length kod tipa YEAR je 4 a moe biti i dodatno navedena kao vrednost 4 (format YYYY) ili 2 (format YY). U sluaju kada je parametar length postavljen na vrednost 4 kod YEAR tipa podataka, uneene vrednosti u opsegu 00-69 se konvertuju u 2000-2069 dok se vrednosti 70-99 konvertuju u 1970-1999.
CHAR i VARCHAR tipovi podataka su namenjeni za skladitenje kraih nizova karaktera. Oba tipa imaju parametar length (npr. ime CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa moe biti numerika vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do 65.536. Osim razlike u duini stringa koji se skladiti, osnovna razlika izmeu izmeu ovih tipova je nain na koji se podaci skladite u bazi. Naime, vrednost parametra length se kod tipa CHAR koristi statiki tj. razlika izmeu maksimalne duine i unete duine stringa se popunjava znakom razmaka. Kod VARCHAR tipa se duina prilagoava unetoj duini stringa. BINARY i VARBINARY tipovi su veoma slini CHAR i VARCHAR tipovima sa tom razlikom to su BINARY i VARBINARY tipovi namenjeni skladitenju binarnih podataka. Ova dva tipa podataka su namenjena uglavnom za skladitenje manjih koliina podataka. Za skladitenje fajlova u bazi podataka se radije koristi BLOB tip podataka. BLOB tip podataka (Binary Large OBject) i njegove podvarijante (TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene za skladitenje binarnih nizova. TEXT tip podataka i njegove podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su namenjene za skladitenje nizova karaktera razliite veliine. BLOB i TEXT tipovi podataka ne mogu imati "default" vrednosti. ENUM tip podataka je namenjen za skladitenje tekstualnih vrednosti s tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga", "treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je ograniena na maksimalno 65.536 elemenata. SET tip podataka je slian ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata ograniena na 64 elementa kao i da postoje odreene razlike pri indeksiranju elemenata liste.
- 78 -
- 79 -
Zahtev pri skladitenju M <= 65535. M bajtova, 0 <= M <= 255 L + 1 bajtova, gde je L <= M i 0 <= M <= 255 ili L + 2 bajtova, gde je L <= M and 256 <= M <= 65535. L+1 bajtova, gde je L < 28 L+2 bajtova, gde je L < 216 L+3 bajtova, gde je L < 224 L+4 bajtova, gde je L < 232
ENUM('vrednost1','vred 1 ili 2 bajta, u zavisnosti od broja lanova nost2',...) SET('vrednost1',vredno 1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja lanova st2',...)
prikai sve osobe mlae od 30 godina prikai sve osobe stare izmeu 20 i 50 godina ...
Primer 2: Polje datum (pod kojim planiramo uvanje informacije o datumu i vremenu nekog dogaaja) je u bazi mogue uvati i u polju tipa Integer i u polju tipa DATETIME ili TIMESTAMP. Odabir numerikog ili
- 80 -
tekstualnog tipa podatka umesto vremenskog onemoguava funkcija vezanih za vremenski tip podatka. Meutim, odabir INTEGER tipa u ovakvim situacijama nije redak sluaj jer se izgubljena funkcionalnost DMBS-a nadoknauje korienjem nekog od programskih jezika koji imaju mogunost rada sa pomenutim DBMS-om. Takoe, pri izboru tipa podataka treba imati u vidu i zahteve za skladitenjem odreenih tipova kao i brzinu rada.
MySql DBMS
TINYINT TINYINT VARCHAR(M) DECIMAL DECIMAL FLOAT DOUBLE TINYINT SMALLINT MEDIUMINT INT BIGINT MEDIUMBLOB MEDIUMTEXT MEDIUMTEXT MEDIUMINT DECIMAL
U praksi ovo znai da je mogue iskoristiti strane definicije tipova (navedenih u levoj koloni) za kreiranje tabela s tim da e se one automatski prevesti u MySql tipove podataka (navedene u desnoj koloni).
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Magacin_rb, Cena i Koliina su numerikog tipa i unose se na klasian nain, bez ikakvih specijalnih znakova.
INSERT INTO Magacin (Magacin_rb, Naziv, Cena, Datum) VALUES (12, 'Disketa', 59.99, 12/09/2005); U prethodnom primeru polje Datum je vremenskog tipa.
Binarni i tekstualni tipovi podataka Unose se obavezno izmeu jednostrukih znakova novoda, na primer:
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Naziv i ZamljaPorekla su tekstualnog tipa i unose se izmeu jednostrukih znakova navoda.
- 82 -
Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno je ukucati sledee:
CREATE DATABASE PRODAJA;
Ovom naredbom kreirana je nova prazna baza podataka pod imenom PRODAJA. Sada je mogue koristiti ovu bazu podataka za dalji rad. Sve to je potrebno jeste izabrati bazu sa kojom elite da radite, samim kreiranjem baze ne podrazumeva se da vi automatski hoete sa njom da nastavite da radite pa je zato potrebno ukucati sledeu naredbu:
USE PROBA;
Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa kojom elimo da radimo (ovo je analogno kada u nekom programu izaberemo opciju Open pa izaberemo odreeni fajl sa kojim elimo da radimo).
- 83 -
- 84 -
| TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT | ENUM(value1,value2,value3,...) | SET(value1,value2,value3,...) | spatial_type index_col_name: col_name [(length)] [ASC | DESC] reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option] [ON UPDATE reference_option] reference_option: RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE Ukucajte sledee primere i napraviete nekoliko tabela u bazi podataka PRODAJA koja je kreirana u prvom primeru.
CREATE TABLE Artikl ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Magacin_rb INTEGER UNSIGNED NOT NULL, Naziv VARCHAR(255) NULL, Cena FLOAT NULL, Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0, ZemljaPorekla VARCHAR(50) NULL, PRIMARY KEY(rb), INDEX Artikl_FKIndex1(Magacin_rb) ); CREATE TABLE Dobavljac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Naziv VARCHAR(255) NOT NULL, Adresa VARCHAR(255) NULL, Telefon VARCHAR(30) NULL, PRIMARY KEY(rb) );
- 85 -
CREATE TABLE Dobavljac_Artikl ( Dobavljac_rb INTEGER UNSIGNED NOT NULL, Artikl_rb INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Dobavljac_rb, Artikl_rb), INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb), INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb) ); CREATE TABLE Kupac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Artikl_rb INTEGER UNSIGNED NOT NULL, Ime VARCHAR(25) NOT NULL, Prezime VARCHAR(25) NOT NULL, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, email VARCHAR(30) NULL, PRIMARY KEY(rb), INDEX Kupac_FKIndex1(Artikl_rb) ); CREATE TABLE Magacin ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY(rb) );
U prethodnim primerima ukucali ste naredbe kojima je kreirano pet razliitih tabela u bazi podataka PRODAJA koje emo koristiti i u daljim primerima za vebanje.
- 86 -
Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogui da izvrimo sledee operacije: 1. kreiranje baze podataka 2. kreiranje tebele baze podataka 3. kreiranje indeksa nad kombinacijom kolona tabele 4. kreiranje virtuelne tabele - "pogleda" 5. izmena definicije tabele 6. izmena pogleda u bazi podataka 7. promena imena tabeli u bazi podataka 8. brisanje tabele iz baze podataka 9. uklanjanje indeksa iz tabele 10. uklanjanje baze podataka
- 87 -
Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX Kreiraemo indeks u tabeli Magacin nad poljem Telefon (strukturu tabele pogledajte tamo gde je ona kreirana) sledeom naredbom:
CREATE INDEX K2 ON Magacin(Telefon);
- 88 -
Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW Kao to u gore navedenoj strukturi moete primetiti da ovde postoji select_statement to je u stvari SELECT naredba koja je posebno i detaljno objanjena u etvrtom delu o DML-u a ovde nee biti vie rei o tome (za vie informacija pogledajte poglavlje 4.3 gde e te videti detaljno objanjenje ove naredbe i svih njenih opcija. Kreiraemo pogled nad tabelom magacin (najjednostavnijim oblikom SELECT naredbe) koji e prikazivati sve podatke koji se nalaze u istoimenoj tabeli sledeom naredbom:
CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;
- 89 -
- 90 -
U zavisnosti od toga ta elimo da promenimo u tabeli, koristiemo razliite oblike prethodno navedene naredbe u strukturi koja je prikazana. Za dodavanje nove kolone koristi se ADD:
ALTER TABLE Kupac ADD ime_oca CHAR(25);
- 91 -
Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW Primeniemo gore navedenu naredbu da bi promenili pogled pod nazivom SPISAK tako da prikazuje sve iz tabele Dobavlja a ne Magacin kako je ranije bilo, u skladu sa prethodno navedenom strukturom potrebno je ukucati:
ALTER VIEW SPISAK AS SELECT * FROM Dobavljac;
- 92 -
Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE Iskoristiemo prethodno opisanu naredbu da bi promenili ime tabele Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati:
RENAME TABLE Kupac TO Klijent;
- 93 -
Slika 5.8 Dokumentovana struktura naredbe DROP TABLE Korienjem prethodno navedene naredbe ukloniemo tabelu Klijent iz baze podataka, u skladu sa prethodno navedenost strukturom potrebno je ukucati:
DROP TABLE Klijent;
- 94 -
Slika 5.9 Dokumentovana struktura naredbe DROP INDEX Korienjem prethodne naredbe ukloniemo indeks pod nazivom K2, koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom strukturom potrebno je ukucati:
DROP INDEX K2 ON Magacin;
- 95 -
Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE Korienjem prethodne naredbe obrisaemo itavu bazu podataka koju smo na poetku kreirali (PANJA: posle izvrenja ove naredbe baza e biti unitena i dalji rad nee biti mogu), u skladu sa gore navedenom strukturom potrebno je ukucati:
DROP DATABASE PRODAJA;
- 96 -
Unos (dodavanje) podataka Pregled (korienje) podataka Izmena podataka Uklanjanje podataka
Efikasnost sistema za upravljanje bazama podataka (SUBP) se moe meriti preko sledeih kriterijuma:
jednostavnost upotrebe preciznost podataka odravanje integriteta podataka brzina rada (izvravanja upita) podrana koliina podataka u bazi specifine funkcije i mogunosti
- 97 -
Slika 7.1 Dokumentovana struktura naredbe INSERT Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe INSERT, to moete uraditi na sledea dva naina:
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany');
ili
INSERT INTO Artikl VALUES (1, 123, 'Artikl br. 1', 199.99, 100, 'Germany');
Postoje dve osnovne razlike izmeu ove dve navedene varijante: U prvoj varijanti smo pre vrednosti koje elimo da unesemo u tabelu Artikl naveli kolone u koje elimo da smestimo te vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena kolona ve smo samo naveli vrednosti po redosledu u kom se kolone nalaze u tabeli. U drugoj varijanti smo zadali vrednost i za polje rb da bi smo ispotovali broj i redosled kolona poto ih nismo eksplicitno naveli. Meutim, na ovaj nain smo izgubili funkcionalnost parametra AUTO_INCREMENT koji je postavljen na ovu kolonu.
- 98 -
Druga varijanta predstavlja krai oblik naredbe koji nije poeljno koristiti iz sledeih razloga:
Gubi se funkcionalnost parametra AUTO_INCREMENT i DEFAULT. Ukoliko naredbu u ovakvom obliku sauvamo u nekoj internoj ili eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja neke od kolona) ta procedura nee biti validna. Moraju se unositi vrednosti za sva polja i to u odgovarajuem redosledu.
- 99 -
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (129, 'Artikl br. 4', 599.05, 340, 'Germany'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (132, 'Artikl br. 5', 179.97, 140, 'Switzerland'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (135, 'Artikl br. 6', 397.00, 390, 'France'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (137, 'Artikl br. 7', 269.07, 250, 'Dansk');
- 100 -
Slika 7.2 Dokumentovana struktura naredbe SELECT Da bi smo izvrili pregled svih podataka iz tabele Artikl iskoristiemo najosnovniji oblik naredbe SELECT:
SELECT * FROM Artikl;
- 101 -
Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim kolonama) iz tabele Artikl.
+----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
razlika izmeu ove i prethodne naredbe je u tome to smo u prethodnoj naredbi koristili simbol '*' da bi smo oznaili sve kolone (sva polja zapisa). Ukoliko elimo da iz prikaza izbacimo kolonu rb, potrebno je samo da je izostavimo iz liste kolona: u ovom sluaju bi bila:
SELECT Magacin_rb, FROM Artikl; Naziv, Cena, Kolicina, ZemljaPorekla
- 102 -
Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen parametar rb:
+------------+--------------+--------+----------+---------------+ | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +------------+--------------+--------+----------+---------------+ | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 127 | Artikl br. 3 | 190 | 170 | USA | | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 135 | Artikl br. 6 | 397 | 390 | France | | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
Rezultate moemo sortirati vertikalno i horizontalno. Vertikalno sortiranje se izvodi preko navoenja kolona u redosledu u kom elimo da se prikazuju parametri zapisa:
SELECT Kolicina, FROM Artikl; Cena, Naziv, Magacin_rb, ZemljaPorekla
ulaze svi zapisi vertikalno poreani po redosledu u kom su unoeni u tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla. Horizontalno sortiranje se vri zadavanjem jedne ili vie kolona na osnovu ijeg sadraja e sortiranje biti obavljeno u zadatom smeru:
SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;
- 103 -
ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastuem redosledu. Ukoliko elimo da zapise poreamo u opadajuem redosledu parametar ASC emo zameniti sa DESC. Osim vertikalnog ograniavanja rezultata (ograniavanja kolona/parametara zapisa koji ulaze u rezultat) SQL jezik podrava i horizontalno ograniavanje (ograniavanje zapisa koji ulaze u rezultat) preko sledeih parametara naredbe SELECT: 1. 2. 3. 4. WHERE DISTINCT LIMIT GROUP BY / HAVING
- 104 -
Ovakvim korienje WHERE klauzule smo rezultat ograniili samo na zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1:
+----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 1 row in set (0.00 sec)
SELECT * FROM Artikl WHERE rb BETWEEN 1 AND 5; SELECT * FROM Naziv LIKE 'Artik%'; Artikl WHERE
SIMBOLIK O POREENJE
Univerzalno poreenje
IN
- 105 -
Dodatna objanjenja:
Simboliko poreenje Klauzula LIKE omoguuje pretraivanje na osnovu "UZORKA" odnosno dobijanje informacija i kada ne znamo potpun naziv (tj. vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna karaktera ("%","_") sa sledeim znaenjem: "%" predstavlja string od 0 ili vie karaktera "__" predstavlja poziciju jednog karaktera. Ostali karakteri imaju ucbiajeno znaenje. Uslov u WHERE klauzuli navedenog upita kae da IME treba da lii na uzorak naveden u jednostrukim navodnicima.
Primeri:
... gde se ime zavrava sa N. WHERE IME LIKE '%N' ... gde je trei karakter imena R. WHERE IME LIKE 'R%' ... gde je ime dugako 5 karaktera WHERE IME LIKE ' ' ... gde ime nije dugako 5 karaktera. WHERE IME NOT LIKE '__' ... gde je u imenu slovo G posle R. WHERE IME LIKE '%R%G%'
Univerzalno poreenje IN koristimo da prikaemo zapise koje pripadaju skupu vrednosti (ovo je zamena za vie OR klauzula)
- 106 -
Klauzula WHERE nije ograniena na postavljanje samo jednog uslova (to se moe primetiti ve kod parametra IN). Vie uslova se moe kombinovati pomou logikih operatora AND i OR:
SELECT * FROM Artikl WHERE ( (rb>1 AND rb<3) OR (rb>3 AND rb<5) AND Naziv LIKE 'Artik%' );
2 rows in set (0.02 sec)u koji su ukljueni svi zapisi kod kojih parametar rb ima vrednost 2 ili 4 i kod kojih parametar Naziv poinje sa Artik.
- 107 -
6 rows in set (0.00 sec) sadri listu svih zemalja iz kojih artikli potiu ali bez ponavljanja.
- 108 -
- 109 -
Korienjem naredbe u ovakvom obliku kao rezultat dobiemo spisak svih zemalja i broj artikala koji potie iz koje zemlje.
+---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Germany | 2 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 6 rows in set (0.02 sec)
Ukoliko elimo da iz rezultata prikaemo samo podatke koji ispunjavaju odreeni kriterijum, to e mo uraditi uz pomo klauzule HAVING, na sledei nain:
SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla HAVING COUNT(*)=1;
Na ovaj nain kao rezultat dobiemo spisak zemalja iz kojih dolazi samo po jedan proizvod.
+---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 5 rows in set (0.02 sec)
- 110 -
Slika 7.4 Dokumentovana struktura naredbe UPDATE za vie tabela Osnovni oblik komande UPDATE izgleda ovako:
UPDATE Artikl SET Cena=1000.00;
i njome su je vrednost svih vrednosti u koloni Cena postavljena na 1000.00. Ukoliko elimo da izmenu primenimo samo na odreene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):
UPDATE Artikl SET Cena=1000.00 WHERE ZemljaPorekla='Germany';
- 111 -
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
Ukoliko elimo da vie parametara (kolona) izmenimo jednim upitom, naveemo vie kolona i vrednosti odvojenih zarezom:
UPDATE Artikl SET Cena=2000.00, Kolicina=46 WHERE ZemljaPorekla='Germany';
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
Ukoliko elimo da u za vrednost koristimo ve postojeu vrednost u nekoj od kolona za vrednost emo navesti kolonu zapisa iju vrednost elimo da primenimo:
UPDATE Artikl SET Kolicina=Cena WHERE ZemljaPorekla='Germany';
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 112 -
ili
UPDATE Artikl SET Cena=Kolicina+10;
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2010 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 112 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 180 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 400 | 390 | France | | 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 113 -
Parametar LIMIT (videti deo 4.3.3) slui za ograniavanje broja kolona na koje emo primeniti izmenu:
UPDATE Artikl SET Cena=100 LIMIT 3;
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 100 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 100 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 100 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 400 | 390 | France | | 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 114 -
Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu Osnovni oblik komande DELETE izgleda ovako:
DELETE FROM Artikl;
i njome su uklonjeni svi zapisi iz tabele Artikl. Ukoliko elimo da uklanjenje ograniimo samo na odreene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1):
DELETE FROM Artikl WHERE ZemljaPorekla='Germany';
Parametar LIMIT (videti deo 4.3.3) slui za ograniavanje broja kolona na koje emo primeniti uklanjanje:
DELETE FROM Artikl LIMIT 10;
- 115 -
Kreiranje novih korisnikih naloga nije neophodno zasebno obaviti pre izmene privilegija ve se novi nalog (ili nova varijanta postojeeg naloga) moe kreirati samom dodelom privilegija. Prve tri naredbe su dostupne poev od verzije MySql-a 5.0 sa odreenim izmenama u verziji 5.0.2. Osnovne naredbe za rad sa privilegijama su:
- 116 -
Slika 8.1 Dokumentovana struktura naredbe CREATE USER Osnovni oblik korienja ove naredbe je:
CREATE USER 'korisnik';
Ukoliko elimo da korisnikom nalogu pridruimo i hostname raunara sa koga je dozvoljen pristup, naredba je:
CREATE USER 'korisnik@racunar1.mreza.edu';
- 117 -
Slika 8.2 Dokumentovana struktura naredbe RENAME USER Osnovni oblik korienja ove naredbe je:
RENAME USER 'korisnik1' TO 'korisnik2';
- 118 -
Slika 8.3 Dokumentovana struktura naredbe DROP USER Osnovni oblik korienja ove naredbe je:
DROP USER 'korisnik1';
- 119 -
Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD Osnovni oblik korienja ove naredbe je:
SET PASSWORD = PASSWORD('nova lozinka');
- 120 -
Dodela privilegija na globalnom nivou (svim objektima - bazama, tabelama, kolonama -u SUBP) se vri naredbom:
GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY 'lozinka'
Takoe, mogua je (mada se retko koristi) dodela privilegija i na nivou kolone u tabeli kao i rutine.
- 122 -
Privilegije ALL [PRIVILEGES] ALTER CREATE CREATE TEMPORARY TABLES CREATE VIEW DELETE DROP EXECUTE FILE INDEX INSERT LOCK TABLES PROCESS REFERENCES RELOAD REPLICATION CLIENT REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW SHUTDOWN SUPER UPDATE USAGE GRANT OPTION
Znaenje Sets all simple privileges except GRANT OPTION Allows use of ALTER TABLE Allows use of CREATE TABLE Allows use of CREATE TEMPORARY TABLE Allows use of CREATE VIEW Allows use of DELETE Allows use of DROP TABLE Allows the user to run stored procedures (MySQL 5.0) Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE Allows use of CREATE INDEX and DROP INDEX Allows use of INSERT Allows use of LOCK TABLES on tables for which you have the SELECT privilege Allows use of SHOW FULL PROCESSLIST Not yet implemented Allows use of FLUSH Allows the user to ask where the slave or master servers are Needed for replication slaves (to read binary log events from the master) Allows use of SELECT SHOW DATABASES shows all databases Allows use of SHOW CREATE VIEW Allows use of mysqladmin shutdown Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached Allows use of UPDATE Synonym for ``no privileges'' Allows privileges to be granted
- 123 -
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ...
Slika 8.6 Dokumentovana struktura naredbe REVOKE Osnovno oduzimanje privilegija se vri naredbom:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';
- 124 -
Objanjenje:
Pranjenje kea host tabele Ponovno uitavanje DES kljua Zatvaranje i otvaranje svih log fajlova Brisanje i ponovno kreiranje svih log fajlova Ponovno uitavanje svih privilegija iz GRANT tabele Defragmentacija keiranih upita Resetovanje parametara svih replikacija sekundardnih
- 125 -
2.
3. Prikazati sve podatke sa svim poljima iz tabele Magacin 4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac 5. Prikazati sve podatke iz tabele Dobavljac u sledeem redosledu polja:Naziv, Rb, Telefon, Adresa 6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet po opadajuem redosledu 7.Prikazati iz tabele Dobavljac sledea polja: Rb, Adresa, Telefon, za dobavljaa koji se nalazi u Dalmatinskoj 43 8. Prikazati iz tabele Magacin prva etiri zapisa
- 126 -
9.Prikazati iz tabele Dobavljac zapise od 2 do 4 10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude 2000 11.Izmeniti tabelu Magacin tako da polje Kapacitet bude 500 za magacin koji se nalazi u Francuskoj 6 12.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude bude poveano za 30 % 13.Izmeniti tabelu Magacin tako da polje Kapacitet bude umanjeno za 20 % prva dva zapisa 14.Izmeniti tabelu Magacin tako da polje Kapacitet bude poveano za 50 jedinica kod magacina sa rednim brojem 2, 3 i 4 15.Ukloniti poslednji zapis iz tabele Dobavljac 16.Ukloniti sve zapise iz tabele Magacin
- 127 -
9. DODATAK
9.1. Izrazi i funkcije
Pored prikazivanja prostih vrednosti memorisanih u tabelama baze podataka, SQL ima vie funkcija koje mogu biti koriene za dobijanje sumarnih informacija, kao i mogunost primene aritmetikih funkcija i funkcija nad stringovima (nizovima karaktera). Aritmetike funkcije Funkcije za dobijanje sumarn.ih informacija su: AVG (atribut) SUM (atribut) MIN (atribut) MAX (atribut) - izraunava srednju vrednost - izraunava ukupnu vrednost - nalazi minimalnu vrednost - nalazi maksimalnu vrednost
Ove funkcijesu definisane nad numerikim kolonama. Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva oblika: COUNT (*) - nalazi broj n-torki u grupi COUNT (atribut) - nalazi NOT-NULL vrednosti kolone Funkcije nad nizom karaktera U SQL-u su definisane brojne funkcije nad kolonama tipa character. Najee se primenjuju sledee: stringi || string2 LENGTH (string) UPPER (str) LOWER (str) TO_NUM (str) TO_CHAR (str) - spaja stringove karaktera - nalazi duinu stringa - menja sva mala slova u velika - menja sva velika slova u mala - pretvara niz karaktera (numerikih) u broj - pretvara broj u niz karaktera
- 128 -
SQL podrava sledee aritmetike funkcije: POWER (broj. e) - die broj na e-ti stepen ROUND (broj [.d]) - zaokruuje broj na d decimala TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta ABS (broj) - naiazi apsolutnu vrednos; broja SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0, -1 ako je broj <0. MOD (broji, broj2) - izraunava broji moduo broj2 SQRT (broj) - nalazi pozitivan kvadratni koren broja
- 129 -
Slika 11.1 Poetni prozor DBDesigner-a Ovo je poetni prozor koji se pojavljuje odmah posle startovanja ovog programa. Na njemu moete videti da je ovo program koji lii na mnoge druge programe za windows to jest ima klasian sistem menija (na primer: meni File se koristi kao i u ostalim programima za otvaranje postojeeg Open ili uvanje Save projekta, kao i New za kreiranje novog praznog projekta) kao i neki meniji koji su specifini za ovakav program.
- 130 -
Ukoliko ste prvi put startovali program automatski je otvoren novi projekat na kome moete raditi i kasnije ga sauvati, a ukoliko ste ve radili u ovom programu izaberite iz menije File opciju New posle ega moete poeti da radite na projektu. Da bi ste poeli da radite na kreiranju grafike predstave vae baze podataka prvo je potrebno kreirati novu regiju u kojoj e se nalaziti elementi vae baze podataka. To e te uraditi tako to e te izabrati opciju New Region koja se nalazi uz levu ivicu prozora programa, pogledajte sledeu sliku:
- 131 -
Posle izbora ove opcije kao to moete proitati na prethodnoj slici potrebno je u glavnom prozoru programa nacrtati eljenju regiju upotrebom levog tastera mia, kao na sledeoj slici:
Slika 11.3 Roze bojom oznaena je nova regija Kao to moete videti na slici, kreirana je nova regija za vau bazu podataka. Po podrazumevanoj vrednosti program je regiji dao ime Region_01 a vi to moete promeniti tako to e te kliknuti desnim klikom negde na regiji i zatim iz menija izabrati opciju Edit Object posle ega e se na ekranu pojaviti prozor kao na slici:
- 132 -
Slika 11.4 Promena imena regije Kao to moete videti na slici u polje Regionname moete upisati novo ime za regiju, upiite na primer Regija1 i bie promenjeno ime regiji. Ovde je takodje mogue promeniti i boju za odreenu regiju a podrazumevana je crvena (Red), ukoliko to elite da promenite moete kliknuti na strelicu pored i izabrati neku drugu boju.
- 133 -
Posle kreiranja regije moete pristupiti kreiranju elemenata vae baze podataka. Za poetak e te kreirati prvu tabelu. Da bi ste to uradili potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije New Region koju ste ve ranije koristili, pogledajte sledeu sliku:
Slika 11.5 Kreiaranje nove tabele Posle izbora ove opcije potrebno je kliknuti levim tasterom mia negde na ve kreiranu regiju posle ega e se pojaviti tabela kao na slici:
Kao to moete videti na slici kreirana je prva tabela u vaoj regiji. Program je automatski dao ime tabeli ime Table_01 a vi to moete odmah promeniti tako to e kliknuti dva puta na tabelu ili tako to e te kliknuti desnim klikom na tabelu pa zatim iz padajueg menija izabrati Edit Object posle ega e se pojaviti prozor kao na slici:
Slika 11.6 Dijalog za Izmenu svojstava tabele Kao to motete videti na slici ovde moete promeniti ime tabeli tako to e te u polje Table Name ukucati eljeno ime. U naem sluaju prva tabela e se zvati Artikl pa to unesite u ovo polje. Ovaj dijalog se ne koristi samo za izmenu imena tabele ve i svih njenih svojstava. Ovde se dodaju ili menjaju polja u tabelu, podeavaju svojstva odreenih polja, postavljaju ili uklanjaju kljuevi za izabranu tabelu. Ono to je ovde potrebo uraditi poto je ovo prazna tabela jeste kreirati odreena polja za izabranu tabelu.
- 135 -
To e te uraditi tako to e te kliknuti levim tasterom mia na prvo mestu u kolonu Column Name i tu ukucati ime za prvu kolonu odnosno polje, unesite rb jer je to prvo polje koje se nalazi u tabeli Artikl, zatim kliknite na taster Enter posle ega e se postaviti podrazumevana polja u ostalim kolonama za ovo polje, pogledajte sledeu sliku:
Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu Kao to moete videti na slici, za polje rb je postavljen atribut DataType automatski na INTEGER, ukoliko elite ovo da promenite kliknite na strelicu pored posle ega e se pojaviti izlistane mogue vrednosti za ovo polje gde je potrebno izabrati eljenu vrednost, pogledajte sledeu sliku:
- 136 -
Slika 11.8 Promena tipa polja za izabranu kolonu (polje) U ovoj listi moete izabrati tip polja koji vam je potreban, u ovom sluaju je potrebno da ovo polje bude integer pa e te ga tako i postaviti. Na slici moete primetiti i mali uti klju koji se nalazi u koloni Column Name ispred imena kolone. Ovo je oznaka da je ovo primarni klju a DBDesigner je automatski postavio ovaj atribut koji kasnije moete ukloniti ukoliko elite da promenite primarni klju, takoe moete primetiti u donjem delu da stoje informacije o primarnom kljuu u delu Indices.
- 137 -
Na prethodno opisan nain kreirajte i sledee kolone sa tipom polja kao na sledeoj slici:
Slika 11.9 Tabela Artikl Na isti nain kao to se kreirali tabelu Artikl kreirati i ostale tabele sa odgovarajuim poljima kao to se moe videti na sledeoj slici:
Sada se u bazi podataka nalaze sve tabele koje su vam potrebne za dalji rad. Kao to se na slici moe videti tabele nisu medjusobno povezane, a kao to je poznato bazu podataka ini vie medjusobno povezanih tabela. Sada je potrebno povezati tabele neim to je poznato kao relacija odnosno veza. Ovde je potrebno rei da postoji vie tipova relacija I to 1:1, 1:m I m:n. Relacija tipa 1:1 znai da svakom zapisu u prvoj tabeli odgovara jedan I samo jedan zapis u drugoj tabeli. Relacija tipa 1:m znai da svakom zapisu u prvoj tabeli odgovara jedan ili vie zapisa u drugoj tabeli. I na kraju relacija tipa m:n je takav tip relacije gde za vie zapisa u prvoj tabeli moe postojati I vie zapisa u drugoj tabeli. Prva dva tipa relacia je lako napraviti dok je za treu potrebno kreirati veznu tabelu koja sadri primarne kljueve prve I druge tabele. Kreiranje relacije tipa 1:1 Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:1 Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
- 139 -
Kreiranje relacije tipa 1:n Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
Slika 11.12 Kreiranje relacije 1:n Kreiraemo dve relacije na ovaj nain. Prva relacije je izmedju tabela Magacin i Artikl. Da bi kreirali ovu relaciju izabraemo opciju koja je na prethodnoj slici a zatim kliknuti na tabelu Magacin pa onda na tabelu Artikl posle ega e se pojaviti relacija kao na slici:
- 140 -
Ako pogledate sliku moete videti da je relacija uspostavljena, pored toga automatski je SUBP postavio njeno ime na Rel_01 i formirao neophodan strani klju u tabeli Artikl pod imenom Artikl_FKIndex1. Ukoliko elite da izmenite svojstva relacije kliknite desnim klikom mia na nju i iz padajueg menija izaberite Edit Object posle ega e se pojaviti prozor kao na slici:
- 141 -
Ovde je mogue postaviti novo ime za relaciju umesto podrazumevanog, tako to e te u polje Relation Name uneti Relacija1 posle ega e ime biti promenjeno. Ovde je takoe mogue promeniti i tip relacije u listi koja se dobija levim klikom mia na strelicu u polju Relation Kind, kao i to da li e relacija biti vidljiva ili ne Visible. Druga relacija tipa 1:n je izmedju tabela Artikl i Kupac i nju e te kreirati na isti nain kao i prethodnu. Posle izbora opcije New 1:n NonIdentifyng-Relation potrebno je prvo kliknuti levim tasterom mia na tabelu Artikal pa onda na tabelu Kupac posle ega e relacija biti kreirana kao i spoljni klju (FK) u drugoj tabeli, ovo je ilustrovano sledeom slikom:
- 142 -
Kao to moete videti relacija je kreirana, pored toga automatski je SUBP postavio njeno ime na Rel_02 i formirao neophodan strani klju u tabeli Kupac pod imenom Kupac_FKIndex1. Ukoliko elite da izmenite svojstva relacije kliknite desnim klikom mia na nju i iz padajueg menija izaberite Edit Object i promeniti njeno ime u Relacija2. Kreiranje relacije tipa n:m Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New n:m Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
- 143 -
Sada e te kreirati jednu relaciju tipa n:m izmedju tabela Dobavljac i Artikl tako to e te izabrati opciju sa prethodne slike, a zatim kliknuti levim tasterom na tabelu Dobavljac pa onda na tabelu Artikl posle ega e relacija biti kreirana kao i svi potrebni elementi, pogledajte sledeu sliku:
Slika 11.18 Trea relacija je kreirana Kao to moete videti na slici relacija je kreirana, ali poto je ovo relacija n:m kreirana je i nova tabela (vezna tabela), koja je ve ranije pomenuta u tekstu o tipovima relacija. Ova tabela sadri dva polja Dobavljac_rb i Artikl_rb. Ako pogledate tabele Dobavljac i Artikl moete primetiti da su to kopije primarnih kljueva ove dve tabele. SUBP je automatski kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl to je vrlo lako uoiti zato, naravno zbog toga to je ovo vezna tabela koja spaja ove dve tabele. Takoe automatski su kreirane i dve relacije i dodeljena
- 144 -
im imena Rel_03 i Rel_04. Na nain koji je objanjen ranije promenite imena ovih relacija u Relacija3 i Relacija4. Sada je potrebno promeniti i neka svojstva vezne tabele. Poto je ovde u pitanju tabela kao i svaka druga bez obzira to ona u ovoj relaciji slui kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz padajueg menija izabrati Edit Object, posle ega e se na ekranu pojaviti prozor kao na sledeoj slici:
Slika 11.19 Izmena svojstava vezne tabele U polje Table Name upiite Dobavlja_Artikl da bi promenili ime vezne tabele, zatim u polju za rad sa kljuevima u delu prozora Indices dva puta kliknite levim tasterom na klju Dobavljac_Has_Artikl_FKIndex1 i na ekranu e se pojaviti prozor kao na slici:
- 145 -
Slika 11.20 Promena imena kljua U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1 da bi promenili ime prvog kljua, isti postupak ponovite ponovo i promenite ime kljua Dobavljac_has_Artikl_FKIndex2 u Dobavljac_Artikl_FKIndex2. Ako ste sve uradili kako treba konana grafika prezentacija ove baze podataka izgledae kao na sledeoj slici:
I na kraju, sada kada imamo kompletnu bazu podataka grafiki predstavljenu, kao to se moe videti na prethodnoj slici, koja se sastoji od 5 tabela koje su medjusobno povezane, mogue je direktno ovakvu grafiku predstavu uz pomo DBDesigner-a automatski prevesti u SQL naredbe. Da bi to uradili potrebno je prvo konektovati se na odreenu bazu podataka koja je prethodno kreirana u MySQL-u, a to se radi uz pomo menija Database koji moete pogledati kako izgleda na sledeoj slici:
Slika 11.22 Database meni Da bi se konektovali na odreenu bazu potrebno je iz prethodnog menija izabrati Connect to Database, posle ega e se pojaviti prozor kao na slici:
- 147 -
Ovde je ve kreirana konekcija na bazu podataka koja se zove test. Ukoliko elite da uspostavite konekciju sa ovom bazom potrebno je samo da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle ega e se pojaviti prozor gde e se od vas traiti da unesete User Name i Password. U sluaju da elite da kreirate novu konekciju potrebno je da izaberete opciju New Database Connection posle ega e se na ekranu pojaviti prozor kao na sledeoj slici:
Slika 11.24 Kreiranje nove konekcije Kao to vidite na slici, potrebno je zadati u polju Connection Name ime za novu konekciju koju elite da kreirate, zatim u polje Driver je potrebno izabrati tip drajvera koji e se koristiti (ovde moete koristiti ili MySQL drajver koji ne radi ba najbolje ili jo bolje klasian ODBC drajver, s tim to je u tom sluaju potrebno u Control Panel-u konfigurisati ODBC). U polju Hostname treba da stoji localhost ukoliko je baza na istom raunaru kao i klijent ili odreeni IP broj ukoliko je u pitanju baza na drugom raunaru. Potrebno je u polju Database Name
- 148 -
uneti ime baze koja je prethodno kreirana uz pomo MySQL-a, kao i polja User Name i Password koji su neophodni za pristup bazi podataka. I na kraju se nalazi polje Description koje nije neophodno popunjavati jer slui isto kao neki dodatni opis i nema drugu funkciju. Posle izbora opcije OK u donjem desnom uglu prozora pojavie se nova konekcija sa imenom koje e te izabrati a zatim opciju Connect kao to je ve ranije objanjeno. Sledee to je potrebno uraditi posle uspostavljanja konekcije jeste izbor opcije Database Synchronization iz menija Database (pogledajte sliku 22) i po izboru ove opcije pojavie se prozor kao na slici:
- 149 -
Kao to se moe videti na slici DBDesigner e na ovaj nain kreirati pet tabela i dodati ih na postojeih 23 koliko ih ve ima u bazi podataka (ovo e se razlikovati u zavisnosti od toga na koju bazu ste bili konektovani pre poziva ove opcije). Sve to je potrebno uraditi da bi se izvrila sinhronizacija sa izabranom bazom podataka jesti kliknuti na opciju Execute posle ega e se izvriti potrebne SQL naredbe automatski i na taj nain kreirati odreene elemente, ili ukoliko oni ve postoje, izmeniti ih ukoliko je to potrebno.
- 150 -