5/17/2018
PraktikumBazeSQL-slidepdf.com
FAKULTET ZA POSLOVNU INFORMATIKU
Prof. dr Mladen Veinović Igor Franc Aleksandar Jevremović
BAZE PODATAKA - PRAKTIKUM Prvo izdanje
Beograd 2006.
http://slidepdf.com/reader/full/praktikum-baze-sql
1/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Autori: Prof. dr Mladen Veinović Igor Franc Aleksandar Jevremović Recenzent: Prof. dr Milan Milosavljević Izdavač : UNIVERZITET SINGIDUNUM FAKULTET ZA POSLOVNU INFORMATIKU Za izdavač a: Prof. dr Milovan Stanišić Dizajn korica: Aleksandar Mihajlović Goran Latinović Godina izdanja: 2006. Tiraž: 250 primeraka Štampa: CICERO-print Beograd
http://slidepdf.com/reader/full/praktikum-baze-sql
2/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
SADRŽAJ: 1. UVOD U BAZE PODATAKA.............................................. - 1 - 1.1. Uvod .............................................................................................. - 1 - 1.2. Osnovni koncepti i definicije ...................................................... - 3 - 1.2.1. Podatak ......................................................................................................... - 5 - 1.2.2. Informacija .................................................................................................... - 6 - 1.2.3. Metapodaci - podaci o podacima (metadata) ................................................ - 9 - 1.2.4. Sistem za upravljanje bazama podataka...................................................... - 10 -
1.3. Klasičan sistem zasnovan na datotekama ............................... - 12 - 1.3.1. Nedostaci sistema zasnovanog na datotekama............................................ - 14 - 1.4. Pristup zasnovan na bazama podataka ................................... - 16 - 1.4.1. Prednosti pristupa zasnovanog na bazama podataka .................................. - 17 - 1.4.2. Troškovi i rizici pristupa zasnovanog na bazama podataka ........................ - 19 - 1.5. Primene baza podataka ............................................................. - 21 - 1.5.1. Lične baze podataka ................................................................................... - 21 - 1.5.2. Baze podataka za radne grupe..................................................................... - 22 - 1.5.3. ............................................................................. 23 - 1.5.4. Baze podataka odeljenja organizacija ........................................................................ - 24 1.5.5. Internet, Intranet i Extranet baze podataka ................................................. - 25 -
1.6. Tipično okruženje baze podataka ............................................ - 28 - 1.7. Istorija razvoja baza podataka................................................. - 30 - 1.8. Modelovanje ............................................................................... - 35 - 1.8.1. Razvoj konceptualnih modela ..................................................................... - 36 - 1.8.2. Entiteti ........................................................................................................ - 37 - 1.8.3. Veze između entiteta ................................................................................... - 38 - 1.8.4. Troslojna arhitektura baze podataka ........................................................... - 40 -
1.9. Modeli baza podataka ............................................................... - 42 - 1.9.1. Hijerarhijski model ..................................................................................... - 43 - 1.9.2. Mrežni model .............................................................................................. - 44 - 1.9.3. Relacioni model .......................................................................................... - 45 - 1.9.4. Objektni model ........................................................................................... - 50 -
1.10. Transakcije............................................................................... - 52 - 1.10.1. Osobine transakcija................................................................................... - 53 -
http://slidepdf.com/reader/full/praktikum-baze-sql
3/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 - 1.10.3. Konkurentno izvršavanje transakcija ........................................................ - 55 -
1.11. Oporavak baze podataka ........................................................ - 56 - 1.12. Osnovne karaketristike savremenih baza podataka ............ - 56 - 1.13. Zaključak ................................................................................. - 59 - 1.14. Literatura ................................................................................. - 60 -
2. O SQL-U ............................................................................... - 61 - 3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MYSQL-A ................................................................................ - 63 - 3.1. Proces isntalacije ....................................................................... - 63 - 3.2. Konfigurisanje MySQL servera ............................................... - 68 - 3.3. Pokretanje MySQL-a ................................................................ - 73 -
4. SQL TIPOVI PODATAKA ................................................ - 75 - 4.1. Numerički tipovi podataka ....................................................... - 75 - 4.2. Tipovi podataka vezani za datum i vreme .............................. - 76 - 4.3. Binarni i tekstualni tipovi podataka ........................................ - 77 - 4.4. Zahtevi pri skladištenju ............................................................ - 79 - 4.5. Izbor adekvatnog tipa podataka .............................................. - 80 - 4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima ..- 81 - 4.7. Unos različitih tipova podataka ............................................... - 82 -
5. DDL ( DATA DEFINITION LANGUAGE) ........................ - 83 -
http://slidepdf.com/reader/full/praktikum-baze-sql
4/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
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 -
http://slidepdf.com/reader/full/praktikum-baze-sql
5/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.2. Naredba RENAME USER ...................................................... - 118 - 7.3. Naredba DROP USER ............................................................ - 119 - 7.4. Naredba SET PASSWORD .................................................... - 120 - 7.5. Dodela privilegija (GRANT) .................................................. - 121 - 7.6. Oduzimanje privilegija (REVOKE) ...................................... - 124 - 7.7. Primena izmena (FLUSH) ...................................................... - 125 -
8. ZADACI ZA VEŽBU DML .............................................. - 126 - 9. DODATAK......................................................................... - 128 - 9.1. Izrazi i funkcije ........................................................................ - 128 -
10. DB DESINGER 4.0 .......................................................... - 130 -
http://slidepdf.com/reader/full/praktikum-baze-sql
6/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
http://slidepdf.com/reader/full/praktikum-baze-sql
7/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
PREDGOVOR Ova skripta je namenjena prevashodno studentima tre će godine Fakulteta za poslovnu informatiku u Beogradu, mada može biti vrlo korisna i svima onima koji žele da savladaju sintaksu i tehniku upotrebe SQL jezika za rad sa relacionim bazama podataka. Skripta može da posluži i kao pomoć profesionalcima u svakodnevnom radu sa bazama podataka. U praktikumu su na jednom mestu date teorijske osnove baza podataka, prikazan je MySQL DBMS softver i softver za dizajniranje č
baza, detaljno je razmatran SQLi programom jezik i na kraju su datibaze prakti ni primeri. U skladu sa nastavnim planom predmeta podataka, svi primeri u SQL jeziku, koji su dati u praktikumu, mogu se izvršiti na MySQL DBMS-u. Moguća su manja odstupanje od sintakse standardnog SQL-a koja ni do danas nije potpuno i precizno definisana. Skripta je podeljena u nekoliko celina. Prvi deo predstavlja teorijski uvod u baze podataka. Drugi deo je uvod u SQL jezik, a u trecem delu prikazuju se i objašnjavaju tipovi podataka koje MySQL koristi. U četvrtom delu se obrađuju naredbe za definisanje podataka, a u petom delu se obrađuju naredbe za manipulaciju podacima, koji je u stvari i najvažniji i najopširniji ove skripte. Na kraju su obra đene naredbe za kontrolne (upravljadeo čke) funkcije. Prvih pet delova su namenjeni svim korisnicima dok je šesti deo, dodela i oduzimanje prava korisnicima, specifičan i potreban samo administratorima baza podataka. U dodatku su nabrojane i objašnjene pojedine funkcije koje mogu biti veoma korisne u radu sa ovim sistemima za upravljanje bazama podataka. Autori su se potrudili da primeri budu što jasniji, izloženi po redosledu i da su povezani, tako da kada se redom unose grade kompletnu bazu podataka koja je potpuno funkcionalna, a uz manje modifikacije se može primeniti i u praksi. Pošto je ovo prvo izdanje praktikuma, svi saveti i eventualne primedbe na tekst su dobrodošle. Beograd, oktobar 2006. godine
http://slidepdf.com/reader/full/praktikum-baze-sql
Autori
8/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
http://slidepdf.com/reader/full/praktikum-baze-sql
9/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1. UVOD U BAZE PODATAKA 1.1. Uvod Baze podataka se koriste za prikupljanje, čuvanje i manipulaciju podacima na osnovu kojih se dobijaju nove informacije u različitim organizacijama, kao što su poslovni sistemi, zdravstvo, školstvo, vladine institucije itd. Svakodnevno ih koriste pojedinci putem ličnih računara, radne grupe putem mrežnih servera i svi zaposleni putem aplikacija koje se nalaze u poslovnim sistemima. Bazama podataka tako đe pristupaju kupci i drugi udaljeni korisnici korišćenjem različitih tehnologija kao što su govorni automati, web čitači (browser -i), digitalni telefoni i sl. Zbog velike konkurencije u svim oblastima poslovanja, može se o čekivati da tehnologija baza podataka dobije još ve ći značaj. Menadžeri traže način da iz baze podataka brže dođu do novih saznanja kako bi bili u prednosti u odnosu na svoju konkurenciju. Na primer, detaljna baza podataka o prodaji se može iskoristiti kako bi se saznalo koji kupci kupuju koje proizvode, što se koristi kao osnova za reklamu i marketinšku kampanju. Organizacije da (uklju svoje baze podataka procedure koje se zovu okidači mogu - trigeri upozoravaju o mogu ćim vanrednim alertsče) ukoji događajima (kao što su predstojeći nedostatak zaliha neke robe ili šansa za prodaju dodatne količine robe) i na osnovu kojih mogu nastati odgovarajuće reakcije. Mnoge organizacije danas prave posebne baze podataka koje se zovu „skladišta podataka“ (data werehouses) koje služe za aplikacije za podršku u odlučivanju. Izučavanje baza podataka i sistema za upravljanje bazama podataka jesu osnova za izučavanje informacionih sistema. Stručnjak za informacione sisteme mora biti spreman da analizira potrebe preduze ća i da dizajnira i implementira baze podataka u okviru sistema jedne organizacije. Takođe, mora biti razvoja spremaninformacionog da se konsultuje sa krajnim korisnicima i da im pokaže kako se korišćenjem baza podataka može imati bolja podrška za odlučivanje, čime se stvara prednost nad konkurencijom. Široko rasprostranjeno korišćenje baza podataka vezanih za Internet sajtove, koji vraćaju dinamičke informacije korisnicima web sajta, zahteva od projektanta da razume ne samo kako da poveže bazu
-1-
http://slidepdf.com/reader/full/praktikum-baze-sql
10/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
podataka sa sajtom već i kako da je obezbedi tako da se njenom sadržaju može pristupiti ali ne i izmeniti od strane spoljnih korisnika. Postoji puno načina kako se može definisati baza podataka. U osnovi to je skup podataka koji su organizovani prema potrebama korisnika, koji se održavaju i koji se koriste za dobijanje informacija. Moderne baze podataka se čuvaju na računaru, ali to nije bitno za samu definiciju. Na primer, adrese poznanika i prijatelja, kolekcija filmova na CD-ovima, telefonski imenik itd. su takođe baze podataka (mada ih većina ljudi tako ne zove). Međutim, smeštanje baze podataka na računar omogućava lakšu i bržu obradu podataka i dobijanje željene informacije. Karakterističan je primer sa telefonskim imenikom koji se nalazi na papiru. Jednostavno je pronaći telefonski broj željene osobe, ali je znatno teže pronaći ime osobe na osnovu telefonskog broja. Ako je telefonski imenik veći (više smeštenih podataka) prethodni problem se dodatno usložnjava. Računarski zasnovane baze podataka omogućavaju jednostavno i brzo dobijanje informacija. Pored osnovnih informacija iz odgovarajuće baze podataka se mogu dobiti i posebne informacije. Na primeru telefonskog imenika mogu se izlistati podaci za sve osobe po imenu npr. Marko, mogu se izlistati sve osobe kojima telefonski broj počinje npr. sa 2, osobe kojima se telefonski broj završava sa 45 i još mnogo toga. Na razvoj baza podataka presudno je uticao razvoj računara, računarskih mreža, kao i klijent/server obrade. Istraživanje, projektovanje i upotreba baza podataka su vrlo brzo pokazali niz svojih dobrih strana kao što su: smanjeni troškovi održavanja; smanjena potreba za mrežnim resursima; poboljšan integritet podataka; donošenje ispravnih odluka na osnovu objektivnih informacija, brža reakcija na tržištu, itd. Baza podataka smeštena u računaru, predstavljena je nizom bita, organizovanih u bajtove, a sa više bajtova u odgovaraju ćem formatu zapisuju se vrednosti pojedinih podataka i predstavljaju jedno polje baze podataka. Niz polja se organizuje u zapise (rekorde) koji imaju značenje jer mogu da predstavljaju opis nekog objekta iz realnog sveta ili neke veze izmedju objekata realnog sveta. Zapisi istog formata se slažu i čine datoteke, koje su fizički zapisane na disku. Baza podataka obuhvata više povezanih datoteka i može biti centralizovana na jednom računaru ili distribuirana na više međusobno udaljenih računara. Pored podataka koji su zapisani u bazi podataka, postoje i posebni podaci kojima se opisuju -2-
http://slidepdf.com/reader/full/praktikum-baze-sql
11/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
pojedinačne datoteke, njene osobine, karakteristični parametri iz datoteka, uspostavljene međusobne veze, pravila koja se odnos na pojave koje postoje i u realnom svetu i sl. Takvi podaci se zovu meta-podaci (metadata), tj. podaci o podacima. Koriste se pri pokretanju rada sa bazom podataka, kako bi se mogli učitati svi konfiguracioni podaci odgovarajuće baze ( self-describing ).
Slika 1.1 Baze podataka nekada i danas
1.2. Osnovni koncepti i definicije Baza podataka se može definisati kao organizovani skup logički povezanih podataka. Ona može biti bilo koje veličine i kompleksnosti. Na primer, prodavac može da ima malu bazu podataka vezanu za kupce na svom notebook računaru koja se sastoji od nekoliko megabajta podataka. Preduzeće koje zapošljava hiljadu i više ljudi može da ima veoma veliku12 bazu podataka od nekoliko terabajta podataka (jedan terabajt = 10 bajtova) na mainframe kompjuteru na kome se nalazi aplikacija za podršku odlučivanju. Veoma velika skladišta podataka imaju više od petabajta podataka (1 petabajt = 1015 bajtova). U širem smislu, bazu podataka možemo posmatrati kao integrisani skup podataka o nekom sistemu i skup postupaka za njihovo održavanje i korišćenje, organizovan prema potrebama korisnika. To je dobro struktuirana
-3-
http://slidepdf.com/reader/full/praktikum-baze-sql
12/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
kolekcija podataka, koja postoji jedno odre đeno vreme, koja se održava i koju koristi više korisnika ili programa.
-4-
http://slidepdf.com/reader/full/praktikum-baze-sql
13/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.2.1. Podatak Istorijski, pod terminom podatak se podrazumeva činjenica o nekom predmetu i/ili događaju koja se može zabeležiti i sačuvati na računaru. Na primer, u bazi podataka nekog prodavca podaci bi bile činjenice kao što su ime, adresa i broj telefona kupca. Ovakav tip podatka se zove struktuirani podatak. Najvažniji struktuirani podaci su brojevi, karakteri i datumi (vreme). Današnje baze podataka pored struktuiranih podataka sadrže i druge vrste podataka kao što su razna dokumenta, mape, fotografije, zvuk, čak i video zapise. Na primer, u bazi podataka nekog prodavca mogla bi se naći i slika kupca. Takođe bi se mogao naći zvučni ili video zapis poslednjeg razgovora sa kupcem. Ova vrsta podatka se naziva nestruktuirani podatak ili multimedijalni podatak. Multimedijalni podaci se najčešće mogu naći na web serverima i u Internet bazama podataka. Danas se podatak definiše kao sa čuvana reprezentacija predmeta i/ili događaja koja ima smisla i važnosti za korisnika baze podataka. Ova č
Č
definicija ukljubaze uje ipodataka struktuirane i nestruktuirane podatke. esto se ui okviru jedne mogu na ći kombinovani struktuirani nestruktuirani podaci kako bi se stvorilo multimedijalno okruženje. Na primer, automehaničarska radnja može kombinovati struktuirane podatke (koji opisuju klijenta i njegova kola) sa multimedijalnim podacima (slika automobila i skenirana kopija osiguranja). Pod podatkom se podrazumeva činjenica prihvaćena kao takva tj. kakva jeste. Podatak sam po sebi nema značenje, tek kada se interpretira nekom vrstom sistema za obradu podataka poprima značenje i postaje informacija. Tipično, termin “podatak” se odnosi na ono što je u bazi podatak. Dakle, podatak je sirova neobrađena Računar vrši obradu podataka, premačinjenica zadatom -programu, te seinformacija. na osnovu saznanja sadržanih u podacima, a kao rezultat njihove obrade, stiču nova saznanja - informacije.
-5-
http://slidepdf.com/reader/full/praktikum-baze-sql
14/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.2.2. Informacija Termini podatak i informacija su usko povezani i često se koriste kao sinonimi. Međutim, korisno je razlikovati termine podatak i informacija. Informaciju definišemo kao podatak koji je bio obrađen na takav način da se znanje osobe koja koristi podatak povećalo. Na primer, razmotrimo sledeći spisak činjenica: Petar Petrović
150698371 0325
Marko Marković
021197985 0123
Janko Janković
111298583 0456
-----------
----------
Slika 1.1 Skup podataka Prikazane činjenice po definiciji pretstavljaju podatke, ali bi se ve ćina složila da su ovi podaci u sadašnjoj formi beskorisni. Čak iako pretpostavljamo da se radi o imenima osoba i njihovim matičnim brojevima, podaci ostaju beskorisni jer ne znamo čemu služe. Pogledajte šta se događa kada stavimo ove iste podatke u kontekst, kao što je pokazano na slici 1.2. Dodavanjem još nekoliko dodatnih podataka i njihovim uređivanjem, prepoznajemo spisak upisanih studenata. Na ovaj način se dolazi do informacije koja je korisna npr. upravi fakulteta, profesorima, studentskoj službi i sl. Ime i prezime
JMBG
Smer
Godina upisa
Petar Petrović
1506983710325
PP
2002
Marko Marković
0211979850123
RGD
2001
Janko Janković
1112985830456
PP
2001
-----------
-----------
RGD
2003
-6-
http://slidepdf.com/reader/full/praktikum-baze-sql
15/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu Drugi način da se iz podataka dobiju informacije je da se podaci sumiraju ili na neki drugi način obrade i prezentuju. Na primer, na slici 1.3 se vide sumirani podaci o upisu studenata prezentirani u vidu grafičke informacije. Ova informacija se može iskoristiti kao osnova za odlučivanje o dodavanju novih predavanja ili o zapošljavanju novog nastavnog kadra. Moderne baze podataka vrlo često sadrže i podatke i informacije. Podaci se često obrađuju i čuvaju u obrađenoj formi i služe za pomopristupa. ć pri donošenju odluka, a takvim podacima (informacijama) se najbrže
-7-
http://slidepdf.com/reader/full/praktikum-baze-sql
16/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Broj upisanih studenata po školama
Gimnazija; 58
Ostali; 63
Gimnazija Tehni čka škola Ekonomska škola Ostali
Ekonomska škola; 45
Tehnička škola; 79
Broj upisanih studenata po godinama 300 245
250 198
200
150
100
50
Broj upisanih studenata
125
76
30
0 2001
2002
2003
2004
2005
Slika 1.3 Grafički prikaz podataka iz BP - informacija o upisu Podaci obrađeni tako da dobijaju značenje čine informaciju. Informacija koja je precizna, relevantna, i dobijena na vreme je ključ za donošenje dobre odluke.
-8-
http://slidepdf.com/reader/full/praktikum-baze-sql
17/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 1.4 Obradom prikupljenih podataka nastaje informacija
1.2.3. Metapodaci - podaci o podacima ( metadata) Podaci koji se prikupljaju i čuvaju u bazi podataka često se nazivaju i podaci krajnjih korinika (end user data). Metapodaci su podaci koji opisuju svojstva ili karakteristike podataka krajnjih korisnika i kontekst tih podataka. Neka tipična svojstva podataka su naziv (ime) podatka, definicija, dužina (veličina), i dozvoljene vrednosti. Kontekst podataka, č
koji opisuju metapodaci, podrazumeva izvor podataka, gde se uvaju podaci, vlasništvo i korišćenje.
Tabela 1.1 Primer metapodataka Naziv
Tip
Duž.
Min
Max
Ime
Text
30
Ime i prezime studenta
Lična karta
JMBG
Integer
1
Jedinstven matični broj
Lična karta
Smer
CHAR
3
Smer na fakultetu
Strudentska služba
GdUpisa
Number
Godina upisa
Studentska služba
2001
Opis
Izvor
Metapodaci opisuju svojstva podatka ali se nalaze odvojeno od tog podatka. Metapodaci iz tabele1.1 ne prikazuju ni jedan podatak. Oni omogućavaju dizajnerima i korisnicima baza podataka da razumeju koji -9-
http://slidepdf.com/reader/full/praktikum-baze-sql
18/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
podaci postoje u bazi, šta oni znače, i koja je razlika između podataka koji na prvi pogled izgledaju isto. Upravljanje metapodacima je veoma bitno jer podaci bez jasnog značenja mogu biti zbunjujući, pogrešno protumačeni ili puni grešaka.
1.2.4. Sistem za upravljanje bazama podataka Sistem za upravljanje bazama podataka (DBMS - Data Base Management System) je softverski sistem koji se koristi za kreiranje, održavanje i manipulisanje podacima, kao i za kontrolu prava pristupa bazi podataka. DBMS omogućava krajnjim korisnicima i programerima da dele podatke, tj. omogućava da se podaci koriste od strane više aplikacija, a ne da svaka aplikacija ima svoju kopiju podatka sačuvanu u posebnim datotekama. DBMS tako đe pruža mogućnost kontrole pristupa podacima, osigurava integritet podataka, uspostavlja kontrolu konkurentnosti i vrši oporavak baze podataka. Programeri aplikacija za rad sa bazama podataka ne moraju da poznaju detalje o na činu zapisa baze podataka na disku, ne moraju da formulišu algoritme za efikasan pristup podacima, niti su opterećeni bilo kakvim aspektima oko upravljanja podacima u bazi podataka. Danas je veoma bitan i značajan koncept baze podataka po kome je to, u stvari, zajednički resurs koga istovremeno (konkurentno) koristi veći broj programa, jer se pravi efekti baze podataka ispoljavaju kada se radi u mrežnom okruženju. Posmatrajmo bazu podataka jedne banke u kojoj se nalaze računi građana. Moguće je da se u istom trenutku na šalteru u jednoj ekspozituri podiže novac sa jednog računa i uplaćuje na drugi račun, a da se istovremeno u sasvim drugoj ekspozituri uplaćuje novac na isti taj račun. Pomenuti DBMS je upravo tu da upravlja konkurentnim radom više korisnika i da obezbeđuje sinhronizaciju njihovog rada. Tako đe, DBMS funkciju da stanje spre či baze...) štetne posledice (narušen integritet baze, ima nekonzistentno pri promenama (transakcijama) koje se vrše nad bazom podataka u višekorisni čkom okruženju. U tu svrhu postoje razne tehnike kao što su tehnika zaključavanja podataka, tehnika vremenskog markiranja itd. Posebno je značajno upravljanje istovremenim (konkurentnim) transakcijama. Tačnost, zaštita i dostupnost baza podataka, kao i korektnost i performanse transakcija koje pristupaja tim bazama su bitni parametri za - 10 -
http://slidepdf.com/reader/full/praktikum-baze-sql
19/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
uspeh svakog poslovnog sistema.Termini baza podataka i upravljanje bazom podataka se ponekad mešaju. Stručno govoreći, baza podataka je uvek skup činjenica, a ne računarski program. DBMS je uveden kao interfejs između korisnika (korisničkih programa, aplikacija) i zapisa baze podataka na disku. Korisnički programi ne pristupaju podacima direktno, već komuniciraju sa ovim softverom (programom). DBMS upravlja strukturom baze podataka: definiše objekte baze, njihova svojstva (atribute), dozvoljene vrednosti atributa, veze između objekata, ograničenja nad objektima i međusobnim vezama. Omogućava manipulaciju podacima u bazi: unošenje, brisanje i izmene, tj. omogućava njeno održavanje. Kontroliše pristup podacima: ko može da pristupi podacima, kojim podacima i šta može sa njima da radi.. DBMS dozvoljava deljenje BP između više aplikacija/korisnika i čini upravljanje podacima uspešnijim i delotvornijim Uobi čajeno je da kada se govori o softveru za baze podataka, onda se misli upravo na DBMS. DBMS upravlja interakcijom između krajnjih korisnika (aplikacija) i baze podataka. Krajnji korisnici imaju bolji pristup većem broju bolje organizovanih podataka
Aplikacija X
Aplikacija Y
Aplikacija Z
Data Base Management System
Baza podataka
Baza podataka – podaci na disku
Slika 1.5 DBMS je interfejs između (aplikacija) korisnika i zapisa baze podataka na disku
- 11 -
http://slidepdf.com/reader/full/praktikum-baze-sql
20/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.3. Klasičan sistem zasnovan na datotekama Kada su se računari počeli koristiti za obradu podataka, nisu postojale baze podataka. Ra čunari su u to vreme bili znatno slabiji nego današnji personalni ra čunari, zauzimali su čitavu prostoriju i koristili su se skoro isključivo za naučna izračunavanja. Postepeno su računari uvođeni u poslovni svet. Da bi bili od koristi za poslovne aplikacije, računari moraju da skladište, manipulišu, i preuzimaju velike datoteke podataka. Kako su poslovne aplikacije postajale sve kompleksnije, postalo je očigledno da klasični sistemi zasnovani na datotekama imaju veliki broj nedostataka i ograničenja. U većini bitnih poslovnih aplikacija danas se umesto klasičnog sistema zasnovanog na datotekama koriste baze podataka. Klasičan sistem obrade podataka zasnovan na datotekama i programskim jezicima prikazan je blok šemom na sledećoj slici. Programi su direktno povezani sa datotekama, svaki program mora da poznaje detaljan zapis podataka na disku . A likaci a Y A likaci a X
Datoteka X1 Datoteka X2
A likaci a Z
Datoteka Y4 Datoteka Y5
Datoteka X3
Datoteka Z1 Datoteka Z2 Datoteka Z3
Datoteke – podaci na disku
Slika 1.6 Klasičan sistem obrade podataka zasnovan na programskim jezicima i datotekama Da bi objasnili osnovne karakteristike sistema zasnovanog na datotekama, posmatrajmo jednu fabriku sa određenim proizvodnim programom. Pretpostavimo da su nabavljene računarske aplikacije za - 12 -
http://slidepdf.com/reader/full/praktikum-baze-sql
21/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
vođenje poslovanja ove fabrike realizovane na klasičnim sistemima koji se zasnivaju na datotekama. Ovaj pristup dizajnu informacionog sistema se fokusira na potrebe za obradom podataka pojedina čnih odeljenja, a ne na potrebe organizacije kao celine. Kada bi se kod korisnika javila potreba za novim sistemima pisali bi se novi računarski programi za individualne aplikacije kao što su kontrola proizvoda, prijem ra čuna, ili kadrovski poslovi. Svaki od programa pravi se tako da odgovara potrebama određenog odeljenja ili radne grupe. Prema tome, ne postoji opšti plan, mapa ili model kojim bi se rukovodili za planiranje razvoja sistema. Tri računarske aplikacije (A, B i C) pomoću kojih se obrađuju podaci zapisani u datotekama su prikazane na slici 1.7. Programima se održavaju tri nezavisna sistema porudžbine, naplate i plate. Na slici se takođe vide osnovne datoteke vezane za svaku aplikaciju. Na primer, proces porudžbina ima tri datoteke: podaci o kupcu, podaci o proizvodima, podaci o porudžbinama. Neke od datoteka se ponavljaju u sva tri procesa (redudansa) što je tipi čno za sistem obrade podataka koji se zasniva na datotekama.
Slika 1.7 Klasična obrada podataka zasnovana na sistemu datoteka
- 13 -
http://slidepdf.com/reader/full/praktikum-baze-sql
22/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.3.1. Nedostaci sistema zasnovanog na datotekama Postoji više mana koje su tipi čne za sistem koji je zasnovan na datotekama i klasičnim programskim jezicima. Ove mane za primer prikazan na slici 1.7 kratko su opisane u nastavku. Zavisnost između programa i podataka
•
Opisi datoteka se čuvaju u okviru svakog programa koji pristupa toj datoteci. Na primer, u procesu porudžbine sa slike 1.7 program A pristupa datoteci sa podacima o kupcu. Stoga, ovaj program sadrži detaljan opis datoteke. Kao posledica ovoga, svaka promena koja se napravi u datoteci, a odnosi se na strukturu, momentalno podrazumeva da se mora menjati i opis datoteka u svakom programu koji pristupa tim podacima. Primetite na slici 1.7 da se podaci o kupcima nalaze i u procesu porudžbine i u procesu naplate. Pretpostavimo da se veličina polja "adresa kupca" menja sa 20 karaktera na 30 karaktera. Opis datoteke u svakom programu (možda čak u svih tri) se mora ažurirati. Često je teško i samo lociranje svih programa na koje je uticala ovakva promena. Što je još gore, pri ažuriranju se često prave greške. Redudansa podataka Kako se u prikazanom sistemu procesi odvijaju nezavisno jedni od drugih, ponavljanje podataka nije izuzetak već je pravilo. Na primer, na slici 1.7 proces porudžbina ima datoteke sa osnovnim podacima o proizvodima dok proces naplate ima datoteku o cenama proizvoda. Dakle, obe ove datoteke sadrže podatke o istim proizvodima kao što su: cena po jedinici proizvoda, opis proizvoda, i koli čina u skladištu. Zbog nepotrebnih duplikata potreban je ve ći prostor za njihovo čuvanje kao i više truda i rada pri njihovom ažuriranju. Neplanirana redudansa podataka može da dovede do gubitka podataka. Na primer, isti podaci mogu se voditi pod različitim imenima atributa u različitim dokumentima, ili obrnuto, isto ime se može koristiti za različite vrste podataka.
•
- 14 -
http://slidepdf.com/reader/full/praktikum-baze-sql
23/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ograničenost deljenja podataka
•
Korišćenjem klasičnog sistema zasnovanog na datotekama, svaki proces ima svoje datoteke i korisnici nemaju šansu da međusobno dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da radnici u računovodstvu imaju pristup samo procesu naplate, dok nemaju pristup procesima porudžbina i plata. Menadžeri su imali velike probleme pri sastavljenju izveštaja za koje su im bili potrebni podaci iz različitih procesa, jer bi se često desilo da su dokumenta nekompatibilna je potrebno kako bi je se bio svi tiu podaci sakupili iudajedan izveštaj.dosta Takoprogramiranja đe, dodatni problem tome što su se željeni podaci često nalazili u različitim odeljenjima organizacije. Dugo vreme za razvoj
•
Sa klasičnim sistemom zasnovanom na datotekama postoji mala šansa za korišćenje prethodnih razvojnih dostiguća. Svaka nova aplikacija zahteva od projektanta da krene od nule. Svaki put je neophodno definisati nove formate i opise podataka i pisati kod za pristup podacima za svaki program. Ovako veliko potrebno vreme za razvoj nije udaskladu sa današnjim minut bitan bi se postigao uspeh.poslovnim potrebama, gde je svaki Teško održavanje programa
•
Skup svih prethodno navedenih nedostataka dovodi do preterane potrebe za održavanjem programa. Čak 80% budžeta predviđenog za razvoj sistema zasnovanog na datotekama odlazi na njegovo održavanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj novih aplikacija. Važno je znati da većina mana klasičnog sitema zasnovanog na datotekama, koječenja smozau bazu prethodnom delupogotovo teksta pominjali, isto tako biti ograni podataka, ako se nemogu promeni pristup razvoju baze podataka. Na primer, ukoliko preduzeće razvije nekoliko zasebnih baza podataka (recimo, za svaku radnu jedinicu ili proces po jednu bazu) sa malom ili nikakvom vezom između njih, onda može doći do bespotrebnog ponavljanja istih podataka, ograni čenja deljenja podataka, produžavanja vremena potrebnog za razvoj i preterane potrebe za održavanjem programa. - 15 -
http://slidepdf.com/reader/full/praktikum-baze-sql
24/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.4. Pristup zasnovan na bazama podataka Pristup zasnovan na bazama podataka potencira integraciju i deljenje podataka između svih odeljenja jedne organizacije. Ovaj pristup zahteva potpunu promenu u načinu razmišljanja, počevši od najvišeg nivoa upravljanja. Takva promena načina razmišljanja za većinu organizacija je veoma teška. Da bi objasnili pristup zasnovan na bazama podataka posmatrajmo prethodno razmatrani zastareli informacioni sistem fabrike koji se klasično zasnivao na datotekama. Koncept pristupa razvoju informacionog sistema zasnovanog na bazama podataka prikazan je na slici 1.8. Odmah se može uočiti da podaci koji su prethodno čuvani u više različitih datoteka, sada su integrisani u jedinstvenu bazu podataka. Takođe, metapodaci koji opisuju ove podatke se nalaze zajedno sa njima u bazi podataka. Sistem za upravljanje bazama podataka pruža mogućnost stvaranja različitih pogleda na istu bazu podataka (ili baze podataka) za različite korisnike u organizaciji. DBMS dozvoljava korisnicima da dele, pretražuju, pristupaju i ažuriraju integrisanim podacima.
sistema zasnovanog na bazama Slika 1.8 Blok šema informacionog podataka
- 16 -
http://slidepdf.com/reader/full/praktikum-baze-sql
25/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.4.1. Prednosti pristupa zasnovanog na bazama podataka Pristup zasnovan na bazama podataka ima mnogo potencionalnih prednosti u odnosu na pristup zasnovan na datotekama. Te potencionalne prednosti su sledeće: Nezavisnost između programa i podataka
•
Odvajanje metapodataka od aplikacija koje koriste podatke naziva se nezavisnost podataka. Ova osobina kod baza podataka dozvoljava promenubez i prenos organizacije na druge računarske sisteme potrebepodataka za promenom programa koji obrađuje ove podatke. Minimalna redudansa podataka
•
Cilj pristupa zasnovanog na bazama podataka je da se podaci koji su se u prethodnom pristupu čuvali odvojeno (i više puta su zbog toga ponavljani) sada integrišu u jedinstvenu logi čku strukturu. Svaki podatak se nalazi samo na jednom mestu u bazi podataka. Pristup zasnovan na bazama podataka ne uklanja redudansu u potpunosti, ali omogućava projektantu baze podataka da pažljivo č
č
isplanira napraviti vrstu i koli inučenu redudanse. nekim sluperformanse ajevima je poželjno ograni redudansuU kako bi se baze podataka poboljšale (npr. brža pretraga). Poboljšana konzistentnost podataka
•
Eliminisanjem (ili kontrolisanjem) redudanse podataka, u velikoj meri se smanjuju šanse za nekonzistentnošću podataka. Na primer, ukoliko je adresa kupca zapisana na samo jednom mestu ne može da postoji ne podudaranje u podacima u bazi podataka. Takođe, ažuriranje podataka je u velikoj meri uprošćeno, kada je svaka vrednost zapisana na samo jednom mestu. Na kraju, uklanjanjem redudanse podataka dolazi do uštede memorije.
- 17 -
http://slidepdf.com/reader/full/praktikum-baze-sql
26/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Poboljšana razmena podataka
•
Baza podataka je dizajnirana kao resus organizacije koji koriste svi njeni zaposleni (kojima je ona neophodna u opisu posla). Određenim internim i eksternim korisnicima je dozvoljeno korišćenje baze podataka, i svaki od njih (bio u pitanju jedan korisnik ili grupa) ima jedan ili više pogleda koji mu olakšavaju korišćenje baze podataka. Korisnički pogled je logički opis jednog dela baze podataka koji je neophodan korisniku da obavi neki zadatak.
Povećana produktivnost u razvoju aplikacija
•
Velika prednost pristupa zasnovanog na bazama podataka je ta što se u znatnoj meri smanjuju troškovi i vreme potrebno za razvoj novih poslovnih aplikacija. Postoje dva važna razloga zašto se aplikacije baza podataka razvijaju znatno brže nego kod klasičnih sistema sa datotekama: 1. Pretpostavljajući da su baza podataka i sve propratne aplikacije već napravljene i implementirane, programer se može koncetrisati na određenu funkciju koja je neophodna za novu aplikaciju, a ne mora da razmišlja o definisanju podataka ili o detaljima vezanim za implementaciju. 2. DBMS pruža veliki broj alata za izveštavanje, kao što su generatori formi i izveštaja, i jezike uz pomoć kojih se automatizuju neke od aktivnosti kao što su dizajn i implementacija baza podataka. Smanjena potreba za održavanjem programa
•
Sačuvani podaci se moraju često menjati iz velikog broja razloga: nove vrste podataka se dodaju, formati podataka se menjaju, i tako dalje. Poznat primer ovoga problema je ulazak u 2000-tu godinu, kada se sa uobičajenog sistema prikazivanja godina sa dve cifre moralo preći na četiri cifre. U sistemu obrade datoteka, metapodaci i logika pristupanju podacima se nalaze u individualnim aplikacionim programima (ovo je zavisnost između programa i podataka o kojoj je ranije bilo reči). Kao rezultat ovoga, promena formata podataka i metoda pristupanja momentalno dovodi do potrebe menjanja aplikativnih programa. - 18 -
http://slidepdf.com/reader/full/praktikum-baze-sql
27/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Kod baza podataka, podaci su znatno više nezavisni od aplikativnih programa koji ih koriste. U okviru određenih granica, možemo da promenimo jednu od stavki, format podataka ili aplikativni program, a da ne moramo da promenimo drugu stavku. Kao rezultat ovoga, javlja se smanjenje potreba za održavanjem programa.
1.4.2. Troškovi i rizici pristupa zasnovanog na bazama podataka U prethodnom delu teksta navedeno je nekoliko glavnih potencijalnih prednosti pristupa zasnovanog na bazama podataka. Međutim, kod velikog broja organizacija bilo je razli čitih problema kod ostvarenja i iskorišćenja tih prednosti. Na primer, postizanje nezavisnosti podataka (i stoga, smanjene potrebe za održavanjem programa) se pokazalo kao teško ostvarivo zbog ograničenja starijih modela baza podataka i softvera za upravljanje bazama podataka. Na sreću, relacioni modeli (kao i noviji objektno-orjentisani modeli) nemaju ovih problema. Drugi razlog za neuspeh da se iskoriste ove prednosti, je loše planiranje i implementacija č
baza podataka – akđeniovakve najboljimanjkavosti. softver za upravljanje bazamanapodataka ne može da prevazi Pristup zasnovan bazama podataka sadrži neke dodatne troškove i rizike koji se moraju rešavati kada se sistem počne primenjivati. Novo, obučeno osoblje
•
Često
se dešava da preduze će, koje se odluči za pristup zasnovan na bazama podataka, mora da anagažuje ili obu či ljude za projektovanje, implementiranje i održavanje baza podataka, kao i da te ljude uključi u postojeću radnu organizaciju. Dalje, zbog čestih izmena i brzine razvoja tehnologije, znanje ovog novog osoblja zahteva stalnu nadgradnju i unapređivanje. Jedino obučeno osoblje može da izvuče maksimum korisnosti iz novih tehnologija.
- 19 -
http://slidepdf.com/reader/full/praktikum-baze-sql
28/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Troškovi i složenost instaliranja, upravljanja i rada sistema sa
•
bazama podataka Višekorisnički sistem za upravljanje bazama podataka je veliki i složen softver koji u startu mnogo košta, zahteva obučeno osoblje za instaliranje i rad i ima značajne godišnje troškove za održavanje i tehničku podršku. Instaliranje ovakvog sistema može zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju, da bi se mogle pratiti nove verzije i nadogradnje softvera. Takođe se može pojaviti za dodatnim i skupljim softverom za baze podataka radipotreba veće sigurnosti podataka. Troškovi prilagođavanja (konvertovanja) podataka
•
Termin nasleđeni sistemi se uglavnom koristi kada se govori o starijim aplikacijama u preduzeću koje su bazirane na datotečnom pristupu ili starijim bazama podataka. Troškovi prilagođavanja ovakvih starijih sistema za rad sa modernim bazama podataka (mereni u novcu, vremenu i zahtevnosti posla) često deluju kao velika prepreka za preduzeće. Potreba za izradom sigurnosnih kopija i oporavkom
•
podataka ( backup ) preduzeća uvek mora biti tačna i dostupna. Deljena baza podataka To zahteva razvijanje i korišćenje jasnih procedura izrade sigurnosnih kopija kao i oporavak baze podataka kada neko oštećenje nastane. U današnjem okruženju, gde postoje raznovrsni bezbednosni rizici, rešavanje ovog problema je od izuzetne važnosti. Moderan sistem za upravljanje bazama podataka obično sam obavlja izradu sigurnosnih kopija i oporavak podataka u slučaju havarija. Konflikti u organizaciji
•
Deljena bazapodataka, podataka kao zahteva saglasnost u vezi sa definicijama vlasništvom i utvr đenu osobu ili osobe odgovornei za održavanje podataka. Iskustvo je pokazalo da nesuglasice u pogledu definicija podataka, formata i kodiranja podataka, prava na ažuriranje deljenih podataka i sl. su česta i vrlo teška tema za rešavanje. Da bi se ovi problemi rešili potrebno je da je organizacija u potpunosti posvećena uvođenju/korištenju pristupa zasnovanog na bazama podataka. Zatim je potreban sposoban administrator baze podataka kao i smislen pristup razvoju baza - 20 -
http://slidepdf.com/reader/full/praktikum-baze-sql
29/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
podataka. Ukoliko podrška i posvećenost glavnih menadžera za pristup okrenut bazama podataka izostane, velika je šansa da će krajnji korisnici razviti veći broj samostalnih baza podataka. Ove baze podataka će teško pružiti prednosti koje smo prethodno opisali. U krajnosti, one mogu da dovedu do donošenja loših odluka što naravno ugrožava celu organizaciju.
1.5. Primene baza podataka Vrste baza podataka variraju od onih pravljenih za jednog korisnika PC računara do baza koje su smeštene na glavni računar (mainframe) i kojima pristupaju hiljade korisnika. Po broju korisnika koji im pristupaju, baze podataka se mogu podeliti u više kategorija: lične baze podataka, baze podataka za radne grupe, baze podataka odeljenja, baze podataka preduzeća i Internet, intranet i ekstranet baze podataka.
1.5.1. Lične baze podataka Lične baze podataka se prave za korišćenje od strane jednog korisnika i ve ć su dugo prisutne korišćenju računara. Pojavom ličnih digitalnih pomo ćnika u(PDA), ličnepersonalnih baze podataka su našle primenu iu nizu mobilnih uređaja koji osim računarskih imaju i neke druge primene npr. mobilni telefoni, faks mašine, Internet čitači. Jednostavne aplikacije sa bazom podataka u kojoj čuvaju informacije i detalje o komunikaciji sa svakim klijentom, mogu da se koriste i sa ra čunara i sa ličnog digitalnog pomoćnika, kao i da se prebacuju sa jednog na drugi uređaj radi izrade sigurnosnih kopija (backup) ili zbog zahteva posla. Uzmimo za primer preduzeće koje ima određeni broj prodavaca koji su u kontaktu sa postojećim i potencijalnim klijentima. Ako svaki prodavac ima još neke aplikacije, npr. grafičke prezentacije, cenovnik sa uslovima prodaje po kojem klijentu može ponuditi najpovoljniju kombinaciju proizvoda i količina za naručivanje, onda bi mu za takav posao prenosni ra čunar, zbog svojih performansi i skladišnog prostora, mogao biti optimalno rešenje. S druge strane, ako prodavac ima samo listu klijenata i kontakata, njemu bi lični digitalni pomoćnik i aplikacija koja koristi malu bazu podataka bili najbolje rešenje.
- 21 -
http://slidepdf.com/reader/full/praktikum-baze-sql
30/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Lične baze podataka se široko primenjuju jer često mogu bitno unaprediti produktivnost pojedinca. Međutim, one sadrže jedan faktor rizika: podatke ovih baza nije lako deliti sa drugim korisnicima. Na primer, ako bi menadžer prodaje želeo celokupan spisak klijenata i kontakata, to se ne bi moglo ni brzo ni lako uraditi uzimanjem podataka iz li čnih baza svakog od prodavaca. Ovo ilustruje veoma čest problem: ako su neki podaci od interesa jednom čoveku, onda su verovatno (ili će brzo postati) od interesa i drugim ljudima. Zbog toga, lične baze podataka bi trebalo svesti na korišćenje pod posebnim okolnostima (npr. u veoma malim preduzećima) gde je verovatnoća potreba za deljenjem podataka izme đu korisnika izuzetno mala.
1.5.2. Baze podataka za radne grupe Radnu grupu čini relativno mali broj ljudi koji sara đuju na jednom projektu ili aplikaciji ili na grupi sličnih projekata ili aplikacija. Radna grupa obično sadrži desetak ljudi. Oni mogu biti uklju čeni u npr. planiranje, projektovanje ili razvoj novog računarskog programa. Baza podataka za radne grupe služi za podršku zajedničkog rada jedne takve grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i programe po porudžbini,Obi koji se prodaju kompanijama kao i krajnjim korisnicima. čno, jedna ilisoftverskim više osoba rade na datom programu, ili dele programe, u isto vreme. Grupi je potrebna baza podataka koja će da prati razvoj svakog dela i koja će da omogući da se podaci što lakše razmenjuju među članovima tima. Svaki član radne grupe ima svoj računar, a računari su umreženi putem LAN-a. Baza podataka se nalazi na centralnom računaru koji se zove server baze podataka, koji je takođe na mreži. Stoga, svaki član grupe ima pristup podacima. Različiti članovi grupe (u zavisnoti da li je u pitanju rukovodilac projekta ili projektant, programer) mogu imati razli čitaćete ovlaš (privilegije), i razlipodataka, čite poglede na ostvariva podatke. Primeti daćenja je glavna mana lia čtime nih baza teško razmena podataka, ovde prevaziđena (barem je razmena podataka u okviru grupe lako ostvariva). Međutim, razmena podataka otvara nova pitanja i probleme koji nisu postojali kod ličnih baza podataka. Glavni problemi upravljanja podacima su vezani za njihovu bezbednost i integritet, s obzirom da više korisnika može istovremeno da obavlja ažuriranje podataka. - 22 -
http://slidepdf.com/reader/full/praktikum-baze-sql
31/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.5.3. Baze podataka odeljenja Odeljenje je funkcionalna radna jedinica u okviru organizacije. Tipi čni primeri odeljenja su: kadrovsko, marketing, proizvodnja, računovodstvo i sl. Odeljenje je obično veće od radne grupe (nekada se sastoji i do 100 osoba) i odgovorno je za veći broj različitih poslova. Baze podataka odeljenja su napravljene da podrže različite oblike poslova i aktivnosti koje obavlja to odeljenje. Uzmimo za primer bazu podataka kadrovskog odeljenja u kojoj se prate podaci vezani za zaposlene, vrste poslova, stručnu spremu i poslovna zaduženja. Kada su svi relevantni podaci sačuvani u bazi podataka, korisnici mogu da pretražuju bazu podataka u cilju dobijanja odgovora na pitanja kao što su sledeća: Za određenu vrstu zanimanja (npr programer) kakve prilike za zaposlenje trenutno postoje u organizaciji? Za tu istu vrstu posla koja stru čna sprema ili veština je neophodna? Koje veštine, znanje poseduje određeni radnik? I obrnuto, koji radnici poseduju određenu veštinu, znanje? Koji sve radnici su obavljali određeni posao u organizaciji? I obrnuto, koje sve poslove je određeni radnik obavljao u •
•
•
•
organizaciji?
Koje sve zaposlene nadgleda odre đeni menadžer?
•
Tipična pitanja na koja se treba odgovoriti pri pravljenju baze podataka odeljenja su: 1. Kako baza podataka i njeno okruženje trebaju da budu organizovani da bi se ostvarile zadovoljavajuće performanse, uzimajući u obzir veliki broj korisnika i veliki broj transakcija? 2. Kako na odgovarajući način obezbediti podatke od nedozvoljenog pristupa i/ili distribucije? 3. Koje alate za razvoj baze podataka i aplikacija treba koristiti u slučaju ovako kompleksnog okruženja? 4. Da li i druga odeljenja koriste iste vrste podataka, i ako je to slučaj, kako se najbolje može upravljati podacima po pitanju njihove redudantnosti i konzistentnosti i metapodacima po pitanju njihove konzistentnosti? 5. Da li su korisnici baze podataka geografski jedni od drugih udaljeni ili je veličina baze podataka tolika da se podaci moraju - 23 -
http://slidepdf.com/reader/full/praktikum-baze-sql
32/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
čuvati na više računara, tako stvarajući distribuirane baze podataka? 6. Da li se bazi podataka može pristupati preko Interneta i da li ona treba da bude uključena u intranet organizacije?
1.5.4. Baze podataka organizacija Baza podataka organizacije obuhvata čitavu organizaciju ili više njenih odeljenja. Ova vrsta baza podataka je namenjena da podrži sve procese organizacije i proces donošenja odluka. Važno je istaći da jedna organizacija može imati više baza podataka, tako da jedna takva baza podataka ne sadrži sve podatke jedne organizacije. Jedna baza podataka za celu organizaciju srednjih do velikih dimenzija ne bi bila prakti čna iz mnogo razloga. Kao prvo zbog razli čitih potreba različitih korisnika, kompleksnosti stvaranja jedinstvenih metapodataka za sve korisnike baze podataka je ogromna. Baza podataka organizacije pruža podršku za jedan odre đeni broj (skup) odeljenja. Tokom poslednje decenije, razvoj baza podataka organizacije je doveo do dva najvažnija oblika: 1. Enterprise resource planning (ERP) sistem 2. Implementacija skladišta podataka (data werehouses) ERP sistemi rade sa tekućim podacima organizacije, dok skladišta podataka sakupljaju podatke iz raznih operativnih baza podataka, uključujući i lične, radnih grupa, odeljenja i ERP baze podataka. Skladišta podataka pružaju mogućnost korisnicima da rade sa prethodnim podacima kako bi pronašli obrazce i trendove događaja i kako bi odgovorili na pitanja koja su vezana za strategiju poslovanja. Uzmimo za primer veliku organizaciju kojabolnice, upravljaklinike grupomi medicinskih centara, u štazdravstvenu spadaju domovi zdravlja, starački domovi. Svaki od ovih medicinskih centara ima svoju bazu podataka (ili baze podataka) koja pruža podršku u obavljanju raznih poslova. Ove baze podataka imaju podatke o pacijentima, doktorima, medicinskim uslugama, poslovanju i drugim bitnim entitetima. Baza podataka pruža adekvatnu podršku za većinu poslova u svakom pojedinačnom medicinskom centru. Međutim, postoji potreba za - 24 -
http://slidepdf.com/reader/full/praktikum-baze-sql
33/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla sva poslovanja sa jednim dobavljačem ili pacijentom. Povaćanje produktivnosi se može postići uvođenjem, na primer, centralnog sistema za naručivanje materijala za sve zdravstvene centre i rapoređivanjem osoblja i usluga koje vrše na sve zdravstvenim centre. ERP sistem omogućava uvođenje prethodnih promena. Donošenje odluka na nivou cele organizacije, u vezi sa poslovanjem sa dobavlja čima, i podnošenje izveštaja raznim agencijama zahteva sakupljene svih prethodnih podataka i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi skladište podataka koje se održava i nalazi u sedištu organizacije. Podaci koji se nalaze u skladištu podataka su preuzeti (i potom sumirani) iz pojedinačnih baza podataka svakog medicinskog centra. Ovaj proces preuzimanja podataka se odvija periodično putem telekomunikacionoračunarske mreže.
1.5.5. Internet, Intranet i Extranet baze podataka Internet tehnologije služe za olakšavanje deljenja podataka i informacija. Na primer, u okviru fabrike može se koristiti lokalna mreža (LAN) koja povezuje radne baza stanice zaposlenih raznihđuje odeljenja sa serverom na kome se nalazi podataka. LANizunapre komunikaciju i proces donošenja odluka u okviru same kompanije. Ako se uvede Intranet koji se zasniva na Web tehnologiji, njemu se može pristupati samo u okvirima kompanije. Radna stanica svakog zaposlenog se može koristiti kao web browser , i na taj način se dobija brz pristup informacijama kompanije, uključujući i telefonski adresar, specifikacije proizvoda, elektronsku poštu i tome slično. Takođe se radne stanice mogu koristiti i kao personalni računari koji povezani preko LAN-a pristupaju serveru na kome se nalazi baza podataka. Moguće je dodati i Web interfejse nekim poslovnim aplikacijama, kao što su unošenje porudžbina, da bi na taj na čin više internih poslovnih aktivnosti moglo biti obavljano od strane zaposlenih preko intraneta. U cilu efikasnijeg ukupnog poslovanja intranet sistem se može otvoriti ka kupcima preko Interneta. Ovo omogućava maloprodajama da pretražuju katalog proizvoda (uključujući slike i specifikacije proizvoda) i utvrde da li željenog proizvoda ima u skladištu. Tada radnici u maloprodajnim objektima mogu da obaveste svoje kupce i da poruče željeni komad - 25 -
http://slidepdf.com/reader/full/praktikum-baze-sql
34/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
proizvoda preko Interneta. Internet konekcija je konfigurisana kao extranet što znači da samo odobrene maloprodaje mogu da pristupe intranet-u fabrike. Sve veće korišćenje Interneta, svetske mreže koja povezuje korisnike, nebitno koje platforme je dovelo i do promena u okruženju baza podataka. Prihvatanje Interneta od strane poslovnog sveta je dovelo do bitnih promena u davno utvr đenim modelima poslovanja. Veoma uspešne kompanije su bile ugrožene zbog novih kompanija koje su prihvatile Internet pomoću koga su unapredile informisanje i usluge koje su pružale svojim klijentima, i koje su zaobišle tipične tokove marketinga i distribucije proizvoda. Na primer, kupci konfigurišu i poručuju svoj PC računar direktno od proizvođača računara. Informacije o upražnjenim mestima i aktivnostima organizacije se mogu dobiti preko Interneta za većinu organizacija. Svaka od ovih radnji zahteva podršku baze podataka. Lak pristup Internetu svih vrsta platformi omogućava kompanijama da reorganizuju svoje poslove i razviju brže aplikacije i to po manjim troškovima. Standardni interfejsi omogućavaju veću produktivnost korisnika, uz manje provedenog vremena na obuci, i manju potrebnu podršku. Osnova razvoja korisnikove aplikacije je priključivanje baze podataka iz koje se mogu dobiti sveže informacije. Kada je baza podataka povezana sa nekom Internet lokacijom, korisnici preko Web browser-a mogu da postavljaju određena pitanja na koja će dobiti odgovore bazirane na svežim informacijama. Odgovaranje na pitanja je automatsko; nema potrebe da se putem telefona prolazi kroz niz opcija da bi se postavilo pitanje nekoj osobi i da bi se zatim od nje čekao odgovor. Internet baze podataka su nezamenljive u razvoju sajtova za kupovinu preko Interneta. Kompanije prate sva dešavanja na sajtu kako bi došli do što više informacija o svojim klijentima (obrazci pri kupovini, navigacija sajtom, č
dužina zadržavanja svakoj stranici i tome sli no) kako bi što više unapredili svoj odnosnaprema kupcima. Većina primera koji su navedeni prikazuju Business-to-Customer (B2C) veze. Kada su kupci kod nekih firmi druge firme, takav odnos se obi čno naziva B2B ( Business-to-Business) odnos. Internet se koristi da olakša B2C odnos, zato što su kupci obavezno spoljni faktor u odnosu na firmu, i mogućnost kupca da pristupi poslovnim podacima i informacijama je od velike važnosti za uspešan odnos. Dozvoljavanjem pristupa poslovnim - 26 -
http://slidepdf.com/reader/full/praktikum-baze-sql
35/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se nova pitanja za rukovođenje informacionim sistemima vezana za sigurnost i integritet podataka. Kompanije su godinama vršile razmenu informacija putem elektronske razmene podataka (EDI- eletronic data interchange). Mnoge kompanije i dalje koriste EDI sistem za obavljanje B2B poslovanja. Neke kompanije, uglavnom nove ili one koje nisu imale EDI sistem, koriste extranet za obavljanje B2B razmena podataka i informacija. Extranet koristi Internet tehnologiju, međutim, pristup extranetu je, za razliku od Interneta kome mogu svi pristupiti, ograničen. Ustvari, pristup je ograničen na kompanije koje su u ulozi dobavlja ča i kupca i koje imaju međusobni dogovor o pristupu podacima i informacijama jednih drugima. Obi čno, prethodno pomenuti akteri imaju pristup delu intranet-a drugog aktera. Ovaj način pristupa olakšava poslovne odnose tako što pruža brži i efikasniji način obrade i pristupanja podacima. Kao što je prethodno pomenuto mnoge organizacije su koristile Internet tehnologiju za stvaranje privatne mreže namenjene za upravljanje informacijama u okviru organizacije. Po izgledu ne postoji razlika između intranet i Internet stranica, ali pristup intranet stranici je ograničen samo na korisnike u okviru te organizacije. Stoga je i pristup bazi podataka organizacije ograničen. Intranet može da ostvari Internet konekciju ali ta konekcija će biti zaštićena firewall-om koji sprečava neovlašćeni pristup intranetu.
- 27 -
http://slidepdf.com/reader/full/praktikum-baze-sql
36/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.6. Tipično okruženje baze podataka Glavni delovi tipičnog okruženja baze podataka i njihove veze su prikazani na slici 1.9. 1. Baza podataka Organizovan skup logički povezanih podataka, obično napravljena da zadovolji potrebe za informacijama više korisnika u organizaciji. 2. Skladište podataka Centralna baza „znanja“ za sve definicije podataka, njihova ograničenja, veze između podataka, izgleda ekrana i izveštaja i drugih sistemskih komponenti. Uskladišteni podaci iz prethodnog perioda. 3. DBMS Sistem za upravljanje bazama podataka (SUBP). Softverski sistem koji se koristi za kreiranje, održavanje i kontrolu pristupa korisnika baze podataka. 4. Aplikativni programi Računarski programi koji služe za kreiranje i održavanje baze podataka i pružaju informacije korisnicima. 5. podataka Administratori Administratori podataka i baza podataka svim su osobe odgovorne za upravljanje izvorima podataka u organizaciji. Administratori podataka su odgovorni za fizički dizajn baza podataka i za upravljanje tehni čkim problematikama u okruženju baza podataka. 6. Projektanti sistema Osobe kao što su sistemski analitičari i programeri koji dizajniraju nove aplikativne programe. Projektanti sistema često koriste CASE alate za analizu potreba sistema i dizajn programa. 7. Korisnički interfejs Jezici, meniji, i itd. pomoću kojih korisnici koriste različite komponente sistema, kao što su CASE alati, programi, DBMS i metapodaci. 8. aplikativni Computer-aided softver engineering (CASE) alati Alati koji se koriste za dizajniranje baza podataka i aplikativnih programa. 9. Krajnji korisnici Osobe koje dodaju, brišu i modifikuju/ažuriraju podatke u bazi podataka i koje zahtevaju ili primaju podatke iz njih. Svaka interakcija između korisnika i baze podataka dešava se preko DBMS-a.
- 28 -
http://slidepdf.com/reader/full/praktikum-baze-sql
37/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 1.9 Komponente okruženja BP Sa unapređenjem softvera, korisnički interfejs postaje sve lakši za upotrebu. Primeri za ovakav napredak su sistemi zasnovani na menijima, ć
ć
sistemi sa mogu noš komande). u pristupa Internetu, i sistemijekoji govor (prihvataju govorne Cilj ovih sistema da prepoznaju što više krajnjih korisnika može da koristi računar, što znači da korisnici koji nisu računarski eksperti mogu sami da naprave izveštaje i koriste jednostave aplikacije. Naravno, u ovakvom okruženju administratori baza podataka moraju da obrate pažnju na bezbednost baze podataka. Okruženje baze podataka prikazano na slici 1.9 predstavlja integrisani sistem hardvera, softvera i ljudi koji je napravljen da olakša skladištenje, preuzimanje, i kontrolu izvora informacija i da poveća produktivnost preduzeća. - 29 -
http://slidepdf.com/reader/full/praktikum-baze-sql
38/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.7. Istorija razvoja baza podataka Nastanak baza podataka se vezuje za Herman-a Holerith-a koji je 1884. godine prijavio patent – sistem za automatsku obradu podataka (AOP) o popisu stanovništva u SAD. Podaci na bušenim karticama su ručno ubacivani u uređaj za očitavanje, a obrada podataka se odnosila na prebrojavanje. Programiranje se svodilo na izbor vrste prebrojavanja, a radilo se ručnim prespajanjem kontakata. Dotadašnja obrada podataka popisa trajala je 10-tak godina, a sa Holerith-ovim izumom vreme obrade bilo je smanjeno na šest nedelja. Herman Hollerith je osmislio ideju po kojoj se svaki stanovnik SAD predstavlja nizom od 80 karaktera – ime, godište itd. popunjenih praznim prostorima da bi se za sva imena obezbedila ista dužina, tako da baza podataka bude „poravnata“. On je uspeo da proda koncept svoje mašine i bušene kartice koje su služile za čuvanje podataka u statističkom birou SAD. Tako je popis stanovništva iz 1890. godine bio prva automatizovana baza podataka, koja se u suštini sastojala od hiljada kutija punih bušenih kartica. Od Holerith-ove kompanije nastao je današnji IBM.
Slika 1.10 Izgled Holerith-ove bušene kartice i mašine za očitavanje kartica - 30 -
http://slidepdf.com/reader/full/praktikum-baze-sql
39/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Nakon Drugog svetskog rata, u kompanijama i vladinim institucijama počeli su se pojavljivati prvi elektronski računari. Oni su se često koristili upravo za jednostavne linearne baze podataka, naj češće za računovodstvo. Ipak, vrlo brzo, bogati kupci su po čeli da zahtevaju više od njihovih ekstremno skupih mašina. Sve je to vodilo do ranih baza podataka. Zanimljivo, ove rane aplikacije su nastavile da koriste Hollerith-ove bušene kartice, neznatno modifikovane u odnosu na originalni dizajn. Nefleksibilnost polja iste dužine, baze podataka pokretane 80 kolonskim bušenim karticama, učinile su rane računare metom napada i šala i potpunom misterijom za običnog čoveka. Većina prvobitnih baza podataka se odnosila na specifi čne programe napisane za specifične baze podataka. Za razliku od modernih sistema koji mogu biti primenjeni na potpuno različite baze podataka, ovi sistemi su bili usko povezani za bazu podataka da bi osigurali brzinu na uštrb fleksibilnosti. Sistemi upravljanja bazama podataka su se prvi put pojavili tokom 1960-tih godina i nastavili su da se razvijaju tokom sledećih decenija. U većini slučajeva, period uvođenja je dugo trajao, skoro deceniju pre navedene godine početka upotrebe. Na primer, relacioni model je prvi put definisan od strane E.F.Codd u tekstu objavljenom 1970 godine. Međutim, relacioni model nije bio široko prihvaćen sve do 1980-tih godina.
1960’te Tokom ovog perioda, sistemi zasnovani na datotekama su i dalje imali dominantnu ulogu. Pa ipak, prvi sistemi za upravljanje bazom podataka su uvedeni u ovoj deceniji, i korišćeni su najpre samo kod velikih i složenih projekata, kao što je to bio projekat sletanja Apollo-a na Mesec. Ovaj period možemo posmatrati kao period ’dokazivanja’, u kom je demonstrirana sposobnost sistema dastandardizuju upravljaju poduzet ogromnim koli činama podataka. Takođe,ovih prvi napor da se je sa formiranjem DBT Grupe ( Data Base Task Group), tokom kasnih ’60ih godina.
- 31 -
http://slidepdf.com/reader/full/praktikum-baze-sql
40/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1970’te Tokom ove decenije, upotreba sistema za upravljanje bazom podataka je postajala komercijalna stvarnost. Hijerarhijski i mrežni sistemi za upravljanje podacima su uvedeni, velikim delom zbog potrebe za sistemom koji će moći da upravlja složenim strukturama podataka, kao što su računi fabrika pri nabavci sirovina, kojima je bilo izuzetno teško upravljati preko konvencionalnih metoda. Ovi modeli se i suštinski smatraju prvom generacijom sistema za upravljanje bazom podataka. Oba pristupa su se široko primenjivala, zapravo, mnogi od tih sistema su u upotrebi i danas. Pa ipak, imali su nekoliko velikih nedostataka: Težak pristup podacima. Za pristup i najjednostavnijim podacima
•
bili su potrebni izuzetno složeni programi. Veoma ograničena nezavisnost podataka, tako da se programi nisu mogli izolovati od promena u formatu podataka. Nije postojala nijedna široko prihvaćena teorijska podloga za bilo koji od ovih modela, za razliku od relacionog modela podataka.
•
•
1980’te Da bi se prevazišla ova ograni čenja, E. F. Codd, kao i mnogi drugi, razvili su model relacionih podataka tokom ’70-ih godina. Ovaj model, koji se smatra drugom generacijom DBMS-a, doživeo je široku komercijalnu upotrebu u poslovnom svetu tokom ’80-ih godina. Sa relacionim modelom svi podaci su predstavljeni u formi tabele. Relativno jednostavan programski jezik četvrte generacije, nazvan SQL, korišćen je za dobijanje informacija. Ovaj model je obezbedio jednostavan pristup podacima i onim ljudima koji nisu bili programeri, prevazilazeći na taj način jednu od najvećih primedbi koja je pratila sisteme prvih generacija. Model je takođe pokazao i svoju pogodnost za komunikaciju na relaciji klijent/server, paralelni korisničkog interfejsa (GUI).prenos podataka, i upotrebu grafičkog
- 32 -
http://slidepdf.com/reader/full/praktikum-baze-sql
41/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1990’te Ove godine se označavaju kao nova računarska era, najpre na nivou računarske komunikacije na relaciji klijent/server, a potom sa stvaranjem skladišta za podatke i upotrebom Internet aplikacija, koji su dobijali sve više na važnosti u ovom periodu. Kao što je upravljanje podacima od strane DBMS-a postalo visoko primenjivo (npr., u računovodstvu) tokom osamdesetih godina, multimedijalni podaci (uključujući i grafiku, zvuk, slike i video zapis) su postali uobičajena stvar tokom devedesetih godina. Kako bi se izborili sa sve složenijim podacima, tokom devedesetih su uvedeni sistemi okrenuti ka objektu, koji se smatraju tre ćom generacijom. Zbog velike potrebe za organizacijom ogromne koli čine podataka kako strukturisanih, tako i nestrukturisanih podataka, ovaj i prethodni sistem su u upotrebi i danas. Neki proizvođači čak rade na razvoju kombinovanih sistema za upravljanje bazama podataka, kako bi mogli da upravljaju obema vrstama istih.
Od 2000. godine Naravno, navodimo se na razmišljanje u kom pravcu će da krene razvoj DBMS tehnologija tokom naredne decenije. Iako će nesumnjivo doći do novih iznenađenja, možemo očekivati nastavak dobro uspostavljenih trendova: 1. Mogućnost upravljanja sve složenijim tipovima podataka. Ovi tipovi uključuju i multidimenzionalne podatke, koji su ve ć dobili na važnosti u aplikacijama skladištenja podataka. 2. Nastavak razvoja ’univerzalnih servera’. Zasnovani na sistemu treće generacije DBMs-a, to su serveri koji mogu da upravljaju širokom lepezom raznih tipova podataka, tako da budu ć
č
transparentni svim korisnicima. Bi e naro ito važni kod Internet aplikacija. 3. Dok su realnost, Kako se porastu
u potpunosti distribuirane baze podataka postale trenutni trend ka cenrtalizaciji istih će se nastaviti. troškovi komunikacije sve više smanjuju, nasuprot tipova podataka,vrednost lociranja i pristupa - 33 -
http://slidepdf.com/reader/full/praktikum-baze-sql
42/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
centralizovanoj bazi podataka takođe se smanjuje. Manji troškovi, a visoke performanse svakako ohrabruju ovaj trend. 4. Skladišta sa adresiranim sadržajem će postajati sve popularnija. Sa ovakvim pristupom, korisnik može da izvuče bilo kakav podatak specifikacijom kakvu vrstu podatka želi, umesto kako da dođe do njega. Na primer, korisnik može da skenira fotografiju i da traži od kompjutera pretragu, kako bi pronašao istu takvu, ili njoj sličnu. 5. Baza podataka i druge tehnologije, poput veštačke inteligencije i televizije, kao informacionog servisa, olakšaće pristup podacima neobučenim korisnicima. Na primer, korisnik će biti u mogućnosti da zahteva podatak na više jezika, a tehnologija baza podataka će da uključuje potrebe korisnika za podacima, na osnovu upita koji se čuvaju, i menjati se na taj način. 6. Rad na tehnologijama algoritama za tehniku analize podataka, koji teže ka upravljanju veoma velikim paketima podataka, kako bi organizacije što lakše analizirale svoja ogromna skladišta podataka. To će u velikoj meri olakšati u planiranju strategije oraganizacija za njihovo poslovanje za duže vremenske periode. 7. I na kraju skale se nalazi dalje širenje PDA, što će dovesti do poboljšane sinhronizacije malih baza podataka i poboljšanje brzine bežičnog prenosa. Bluetooth i drugi bežični standardi će u velikoj meri ubrzati razvoj beži čnog povezivanja na Internet, ali će i nametnuti pitanje daljeg razvoja zaštite podataka.
- 34 -
http://slidepdf.com/reader/full/praktikum-baze-sql
43/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.8. Modelovanje Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima koji su bitni za njeno poslovanje. Međutim, broj internih podataka i podataka iz okruženja je ogroman te je nemoguće sve podatke i sve uočene detalje opisati i sačuvati unutar informacionog sistema. Postupkom selekcije identifikuju se i čuvaju samo relevantni podaci. Time se dolazi do pojma modela podataka. On je izraz i posledica zahteva za obradom podataka relevantnih za određeno područ je primene. Modeli su čovekovo sredstvo pojednostavljivanja problema i njegovo posmatranje samo sa stanovišta bitnih za ciljeve analize. Objekt posmatranja (npr. automobil) ima uvek više osobina (atributa) od kojih u datom trenutku analize može biti dovoljan samo njihov manji broj (npr. samo registarski broj, tip automobila, ime i prezime vlasnika ). To su najvažniji atributi potrebni u postupku pretraživanja i pronalaženja vlasnika vozila na osnovu registarskog broja vozila unutar jednog informacionog sistema. Ostali atributi kao što su boja, godina proizvodnje, broj sedišta i sl. nisu bitni (mogu se zanemariti ) za takav postupak. Čovek, obdaren sposobnostima apstraktnog načina mišljenja, stvara jedan apstraktni model realnog sveta. Takav model realnog sveta (objekta posmatranja) zasniva se na simbolima i zove se konceptualni model podataka. Izlaz1
Relan svet Ulaz
Cilj svakog modela je da učini da je: Izlaz1~Izlaz2 Programi za održavanje
Baza podataka
Programi za izveštavanje
Izlaz2
Slika 1.11 Realan svet i njegov model Modelovanje podataka se radi paralelno sa analizom potreba. Kako se informacije prikupljaju, objekti se identifikuju, dodjeljuju im se imena koristeći termine bliske krajnjim korisnicima. Objekti se onda modeluju i analiziraju korištenjem dijagrama objekti-veze (ER dijagrami). Dijagram se može pregledati od strane dizajnera i krajnjeg korisnika da bi se - 35 -
http://slidepdf.com/reader/full/praktikum-baze-sql
44/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
osigurala njegova kompletnost i tačnost. Ako model nije tačan, modifikuje se, što ponekad zahteva da se prikupe dodatne informacije. Ciklus pregledanja i modifikovanja se nastavlja sve dok se ne dobije potvrda da je model korektan.
1.8.1. Razvoj konceptualnih modela Objekti iz relnog sveta se u ra čunarskoj primeni opisuju pomoću podataka. Podaci su zato apstrakcija realnosti, tj. sredstva za kodiranje osobina objekata iz realnog sveta. Modelovane, kao postupak kojim se realni svet svodi na određeni broj podataka, predstavlja kompleksan posao i sastoji se iz više koraka: Izbor (selekcija). U prvom koraku se mnoštvo objekata iz
•
realnog sveta redukuje na manji skup objekata, koji će činiti objekte modela. Npr. objekti mogu biti student, predmet, profesor, studentska služba, polaganje ispita i sl. U procesu selekcije ovaj broj objekata se može redukovati na manji broj, ako je cilj praćenje uspešnosti studiranja na fakultetu. Time se složenost realnog sistema smanjuje. Selekcija se ne odnosi samo na objekte nego i na njihove osobine, kao i na međusobne veze (relacije) između objekata. Imenovanje. Svakom objektu u realnom svetu, svakoj vezi između uočenih objekata, kao i svakom atributu (svojstvu) uočenog objekta ili veze dodeljuje se ime. Klasifikacija. Nehomogeni skup objekata i odnosa se svrstava u homogene klase i tipove objekata. Klasifikacija uvek zavisi od područ ja primene.
•
•
Rezultat navedenih koraka modelovanja zove se konceptualni model. On sadrži, za posmatrani problem iz realnog sveta, sve relevantne tipove objekata, njihove osobine i međusobne veze. Rezultati proučavanja modela podataka doveli su do saznanja da svaki model podataka ima tri neodvojive komponente: strukturu podataka, operacije nad podacima, ograničenja (constraints).
• • •
- 36 -
http://slidepdf.com/reader/full/praktikum-baze-sql
45/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Struktura i ograničenja, za razliku od operacija, opisuju stanje realnog sistema, tj. predstavljaju statički opis stanja sistema. Strukturu modela čine objekti, njihova svojstva, veze između objekata i njihovih svojstava. Operacije nad podacima u modelu su, u stvari, operacije nad strukturom modela kojima se izražava dinamika realnog sistema. Operacije izražavaju kretanje i promene tj. dinamiku realnog sistema. Ograni čenja su pravila koja razdvajaju dopuštena od nedopuštenih stanja realnog sistema i u svojoj prirodi deo su strukture modela podataka. Ponekad se ne posmatraju kao odvojene komponenta, nego kao deo strukture modela podataka.
1.8.2. Entiteti Modelima podataka nastoji se preslikati realan sistem. Realan sistem sastoji se od objekata iz realnog sveta i njihovih veza između kojih se uspostavljaju različiti odnosi. Pod entitetom se podrazumeva sve što se može jednoznačno odrediti, identifikovati i razlikovati. Tako široko postavljena definicija pokazuje da entitet može biti svaki "realan" ili "apstraktan" objekt o kojem u određenom trenutku razmišljamo. Entitet je realan ako fizički, stvarno postoji. Najopštije se može tvrditi da su granice entiteta u modelu podataka odre đene ljudskim pogledom i načinom razmišljanja. Svaki entitet uočen u realnom sistemu ima svoje osobine koje ga čine složenim i njihove vrednosti omogućavaju razlikovanje entiteta. Svojstvo entiteta uključuje dva elementa - atribut i vrednost atributa (npr. entitet Student ima atribute: Ime, Prezime, Broj indeksa, Adresu, Telefon i sl. i vrednosti Marko, Marković , 123/03, Danijelova, 15, 011/376-543 respektivno). Svaki put kada se promeni vrednost atributa, potrebno je promenu evidentirati, tj. ažurirati tu vrednost atributa za dati entitet. Precizno govoreSvaki ći, objekti se osobine označe pojmom zvati klase entiteta. objektkoji ima (atribute)entiteta klase mogu entitetase kojoj pripada. Npr. klasu entiteta Student čine pojedinačni entiteti od kojih svaki ima zajedničke atribute: Ime, Prezime, Broj indeksa, Adresa, Telefon i sl. Svaki pojedinačni entitet ima sve navedene atribute, ali će se razlikovati od drugih entiteta po vrednostima pojedinih atributa.
- 37 -
http://slidepdf.com/reader/full/praktikum-baze-sql
46/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Atribut opisuje entitet. Jedno konkretno pojavljivanje atributa naziva se vrednost. Ako je atribut dovoljno složen, tako da ima svoje dodatne atribute, može se posmatrati kao novi entitet. Domen atributa je skup svih mogućih vrednosti koje atribut može poprimiti. Primarni ključ je jedan ili više atributa čija vrednost jednoznačno određuje primerak entiteta. Na primer, za entitet Auto, primarni ključ je atribut registarski broj. Dva različita člana ili primerka entiteta ne mogu imati isti primarni ključ. Primarni ključ je jedinstven za svakog člana entiteta. Na primer, za entitet Student primarni ključ bi mogao biti broj indeksa.
1.8.3. Veze između entiteta Baza podataka se ne odnosi samo na pojedinačne objekte nego i na odnose između objekata. U realnom sistemu objekti nisu me đusobno izolovani, nego se nalaze u međusobnoj interakciji. Student se upisuje na fakultet, sluša predavanja iz pojedinih predmeta, prijavljuje polaganje ispita, polaže ispit itd. To su primeri logi čkih i realnih veza između objekata, koje slede iz realnih odnosa u posmatranom sistemu studiranja na jednom fakultetu. Istražimo jedan skup odnosa izme đu studenata koji slušaju predavanja kod određenog profesora. Postavlja se pitanje šta su u takvim odnosima objekti, koje su njihove osobine (atributi) i kako prikazati njihove odnose. Identifikovati objekte, njihove osobine i odnose zna či praktično izgraditi model podataka. U modelu podataka ne postoje samo atributi objekta, nego i veze između objekata. Prvo se selektuju objekti, imenuju se, a zatim se analiziraju tipovi odnosa koji se uspostavljaju izme đu objekata. đ
č ć
Odnosiskupova izme ui objekata posmatranja logike preslikavanja njihovih prikazuju elemenata.se naj eš e primenom Najjednostavniji odnos između ta dva tipa objekata naziva se preslikavanje 1:1. Kod takvog preslikavanja svaki se element skupa X može preslikati na najviše jedan element skupa Y. Istovremeno, i svaki element skupa Y može biti preslikan na najviše jedan element skupa X. Karakterističan primer bi bio sa entitetima Fakultet i Dekan. Na jednom fakultetu može biti samo jedan dekan, a jedan dekan može biti dekan na - 38 -
http://slidepdf.com/reader/full/praktikum-baze-sql
47/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
samo jednom fakultetu. Takvi odnosi između entiteta su retki, a mogu se predstaviti sledećom slikom:
Slika 1.12 Preslikavanje entiteta 1:1 Druga vrsta odnosa naziva se preslikavanje N:1 (ili 1:N). Više elementa skupa X može se preslikati na najviše jedan element skupa Y. Istovremeno jedan element skupa Y može se preslikati na više elemenata skupa X. Pogodan primer za ovu vrstu odnosa izme đu entiteta je odnos između entiteta Student i Dekan. Više studenata na jednom fakultetu ima samo jednog dekana, a jedan dekan je dekan za više studenata na svom fakultetu.
Slika 1.13 Preslikavanje entiteta N:1 Najsloženije preslikavanje je tipa M:N. Svaki element prvog skupa može se preslikati na više elemenata drugog skupa, ali se i svaki element drugog skupa može preslikati na više elemenata prvog skupa. Karakterističan primer ovakvih veza postoji ako se uoče entiteti Student i Profesor. Jednom studentu predaje više profesora, a ujedno jedan profesor predaje za više studenata. - 39 -
http://slidepdf.com/reader/full/praktikum-baze-sql
48/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 1.14 Preslikavanje tipa M:N
1.8.4. Troslojna arhitektura baze podataka Osnovni koncept baze podataka je ideja o skupu činjenica ili delova znanja. Činjenice mogu da budu struktuirane na različite načine koji se nazivaju modeli podataka. Model podataka nije statična struktura nego se menja kako bi odražavao promene koje se dešavaju i u realnom sistemu. Na primeru informacionog sistema jednog fakulteta, studenti polažu pojedine ispite, neke poništavaju i dobijaju drugačije ocene, upisuju se novi studenti, drugi diplomiraju, neki asistenti postaju profesori itd. Za jednostavne slučajeve, kao i mali broj promena relacija i entiteta, moguće je ažuriranje podataka vršiti ručno. Za kompleksnije sisteme (sa nekoliko stotina ili hiljada entiteta ili relacija) ažuriranje podataka postaje ogroman problem. Jedino se uz pomo ć računara može održavati ažurnost podataka u velikim informacionim sistemima. Obrada podataka postaje ne samo pitanje produktivnosti neke firme ili organizacije, nego i opstanka, rasta i razvoja u okruženju s intenzivnom konkurencijom. Obrada podataka je deo svakog poslovnog procesa, stoga je poznavanje baza podataka bitno ne samo za projektante informacionih sistema i programere, nego i za krajnje korisnike rezultata takvih obrada. Oni nisu samo skup povremenih korisnika baza podataka, kao što se to može re ći za programere ili projektante informacionih sistema. Danas veliki broj zaposlenih, koji nisu upoznati sa konceptualnom šemom BP, kreiraju, - 40 -
http://slidepdf.com/reader/full/praktikum-baze-sql
49/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
unose, ažuriraju ili jednostavno koriste baze podataka na različitim nivoima organiziranosti poslovnih sistema. Model baze podataka koji je danas poznat kao ANSI/X3/SPARC model prikazan je na slici 1.x. Na bazi tog modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući korisnički model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Konceptualni nivo je najbliži stvarnosti. Taj se nivo definiše u procesu kreiranja modela podataka. Jedan od ciljeva modela podataka je oblikovanje podataka za sadašnje i buduće aplikacije. Može se reći da konceptualni nivo čine sve relacione šeme modela podataka, sve relacije i ograničenja. Spoljašnji nivoi (modeli A, B i C) formiraju se na temelju konceptualnog nivoa i predstavljaju samo pogled (VIEW) prema potrebama pojedinih korisnika. Eksterni model (sloj)
Konceptualni model (sloj)
A
Model A
Interni model (sloj)
Podaci 1 B
Podaci 2
Model B Podaci 3
Model C
C Podaci N
Slika 1.15 Troslojna arhitektura baze podataka
- 41 -
http://slidepdf.com/reader/full/praktikum-baze-sql
50/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Unutrašnji (interni) sloj baze odnosi se na zapisivanje konceptualnog sloja na nekom medijumu za čuvanje (najčešće disku). Radi se o slogovima zapisanim u datotekama. Niži sloj, uslovno re čeno, ili nivo bliži disku od internog sloja BP, je operativni sistem , koji na osnovu logičkih adresa slogova čita sadržaj diska.
1.9. Modeli baza podataka Za modelovanje strukture podataka koriste se razli čite tehnike. Određeni modeli se lakše koriste za neke tipove sistema upravljanja bazama podataka nego drugi modeli. Model čini osnovu za osmišljavanje, definisanje i implementaciju baze podataka. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledeće osnovne modele: Hijerarhijski model – čine ga podaci složeni u hijerarhijsku
•
strukturu; Mrežni model – može se predstaviti usmerenim grafom u kojem
•
su čvorišta podaci, a lukovi me đu čvorištima definišu veze među podacima; Relacioni model – zasnovan na matematičkom pojmu relacije. Podaci i veze među podacima se prikazuju preko dvodimenzionalnih tabela. Objektni model – bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvršavati.
•
•
- 42 -
http://slidepdf.com/reader/full/praktikum-baze-sql
51/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.9.1. Hijerarhijski model Hijerarhijski model je najstariji od svih modela baza podataka, i za razliku od mrežnog, relacionog ili objektno orjentisanog, nema dobro dokumentovanu istoriju svoje koncepcije i po četne verzije ovakvog modela. Ovaj model se razvio iz informacionog sistema za upravljanje u 50-tim i 60-tim godinama prošlog veka. Usvojen je u mnogim bankama i osiguravajućim društvima koji ga, kao nasleđe, i danas koriste. U hijerarhijskom modelu podaci su smešteni u seriju slogova (zapisa) Da bi se uspostavila veza između slogova, hijerarhijski model uspostavlja relaciju roditelj – naslednik. Ovo je takozvano 1:N mapiranje između slogova koje se radi korišćenjem stabla. U ovom modelu, relacije su takve da jedan naslednik može imati samo jednog roditelja, ali roditelj može imati više naslednika. Roditelji i naslednici su povezani vezama koje se nazivaju pokazivači (u fizičkoj realizaciji to je adresa u memoriji gde se slog nalazi). Roditelj ima listu pokaziva ča za svakog od svojih naslednika. Hijerarhijski model je dobro uređena struktura, koja podseća na hijerarhijsku strukturu u npr. državi, vojsci ili nekoj velikoj organizaciji
.
Direktor Zamenik O
O
Zamenik O
O R
R
R
R
R
R
R
R
Zamenik
O
O
O
O
R
R
R
R
R
R
R
R
R
R
Slika 1.16 Šematski prikaz jednog hijerarhijskog modela Pravilo roditelj – naslednik omogu ćava pristup podacima. Da bi se došlo do tabele na nižem nivou, kreće se od korena i ide prema dole kroz stablo dok se ne dođe do cilja. Naravno, očigledan problem sa ovim modelom je
- 43 -
http://slidepdf.com/reader/full/praktikum-baze-sql
52/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
da korisnik mora da zna kako je stablo organizovano da bi pronašao bilo šta. Hijerarhijski model ima ozbiljnih nedostataka. Na primer, ne može se dodati slog u tabelu naslednika dok se ne uklju či u roditeljsku tabelu. Hijerarhijski model je sposoban da radi jedino sa jednostrukim stablima, ali ne može da se nosi sa povezivanjem ogranaka ili stvaranjem višestrukih veza. Zbog toga se stvara redudansa (višestruko pojavljivanje) podataka i mogućnost netačnog ažuriranja. Na primeru hijerarhijske organizacije nekog fakulteta koji ima katedre, profesore, studente itd. mogu se lako uočiti navedene slabosti. Lako je predstaviti da na jednoj katedri ima više profesora, ali se ne može predstaviti da jedan profesor radi na više katedri. Da bi se ovo uradilo, mora postojati dva pojavljivanja istog profesora. To može dovesti do netačnosti kod ažuriranja podataka, npr. moguće je da informacije budu različite u dva zapisa, što vodi do konfuzije. Hijerarhijski model se više ne koristi kao osnova za trenutne komercijalne sisteme, ali još uvek postoji mnogo nasleđenih sistema baziranih na ovom modelu. Zbog svih nedostataka koji postoje u hijerarhijskom modelu, razvijen je mrežni model.
1.9.2. Mrežni model Mrežni model je prvi put predstavljen 1971. godine. Može se smatrati savremenikom relacionog modela, gledajući starost i prva istraživanja učinjena u 60-tim godinama prošlog veka.Omogućava da se višestruki skupovi podataka koriste zajedno putem pokazivača (ili pointera). Neke kolone sadrže pokazivače na druge tabele umesto samih podataka. način, tabele su pokazivamodelu čima i svaki moguslog se posmatrati Na kao taj mrežna struktura. Dokpovezane u hijerarhijskom ima jedan „roditeljski“ slog i neograničeno „naslednika“, mrežni model omogućava svakom zapisu da ima višestruke roditelje i naslednike, kreirajući mrežastu strukturu.
- 44 -
http://slidepdf.com/reader/full/praktikum-baze-sql
53/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Direktor Zamenik O
O
Zamenik O
O R
R
R
R
R
R
R
R
Zamenik
O
O
O
O
R
R
R
R
R
R
R
R
R
R
Slika 1.17 Šema mrežnog modela Mrežni model se danas uglavnom ne upotrebljava za dizajniranje baza podataka, ali ipak ima slučajeva gde se kao deo nasleđa koristi u nekim kompanijama. Predstavlja unapređenje hijerarhijskog modela, ali je kompleksan i težak za upotrebu. Pored toga, teško ga je podržati matematičkim aparatom, što onemogućava kasnije efikasno programiranje.
1.9.3. Relacioni model Kao i mnoge druge tehnologije u računarskoj industriji, koreni relacionih baza podataka potiču iz IBM-a i njihovog istraživanja automatizovanja kancelarijskih operacija u 60-tim i 70-tim godinama XX veka. 1970. godine, IBM-ov istraživač Ted Codd je prezentovao prvi rad o relacionim bazama podataka. Zbog same tehničke prirode rada i oslanjanja na matematički aparat, njegova važnost nije odmah shvaćena. Ipak, doveo je do formiranja IBM-ove istraživačke grupe System R. Od projekta System R se očekivalo da stvori sistem relacione baze podataka koji bi mogao postati proizvod. Prvi prototip prezentovan je 1974/75. godine i eksperimentalno je korišćen. Nakon što je definisan relacioni model, napravljeni su neformalni modeli da bi se opisali hijerarhijski i mrežni model. Hijerarhijske i mrežne baze podataka su postojale pre relacionih baza podataka, ali su kao modeli opisani tek nakon što je relacioni model definisan, da bi se napravila osnova za poređenje. - 45 -
http://slidepdf.com/reader/full/praktikum-baze-sql
54/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
U srcu relacionog modela nalazi se koncept tabele (koja se naziva i relacija) u kojoj su smešteni svi podaci. Svaka tabela je na činjena od slogova (redova u tabeli), a svaki slog ima svoja polja (atribute). Osnovne karakteristike relacionog modela podataka su sledeće: Sve se predstavlja relacijama (tabelama) Zasniva se na strogoj matematičkoj teoriji Minimalna redudansa podataka Jednostavno ažuriranje podataka Izbegnute su anomalije ažuriranja Redosled kolona i redova ne uti če na informacioni sadržaj tabele Ne mogu da egzistiraju dva identična reda (rekorda) u jednoj tabeli Svaki red se može jednoznačno odrediti (postoji primarni ključ) ...
• • • • • • •
• •
U relacionom modelu podataka klase objekata se predstavljaju tabelama. Na primer klasa STUDENT se može opisati atributima BROJ INDEKSA i IME i klasa KNJIGA sa itributima ŠIFRA KNJIGE i NAZIV. Trenutno stanje studenata i knjiga koje je uneseno u ove tabele može biti sledeće: Student
Knjiga
BrInd
Ime
SifK
Naziv
75/01
Marko
001
Računovodstvo
22/02
Petar
002
Baze podataka
156/03
Milan
003
Osnove finansija
112/02
Dragan
004
Poslovna
005
Marketing
Slika 1.18 Tabela je osnovni objekat relacione baze podataka Prethodna dva objekta sa svojim atributima grafički se mogu predstaviti na sledeći način: - 46 -
http://slidepdf.com/reader/full/praktikum-baze-sql
55/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
BrInd
SifK Student
Knjiga
Ime
Naziv
Slika 1.19 Grafički prikaz objekata i njihovih atributa U realnom svetu objekti međusobno stupaju u veze. Na jednom fakultetu studenti drže (pozajmljuju iz biblioteke) pojedine knjige. Može se uo čiti da je veza između ova dva posmatrana objekta tipa M:N, tj. više studenata mogu da drže jednu knjigu, a jedna knjiga može biti kod više studenata. Neka je trenutna situacija iz realnog sveta prikazana na sledećoj slici: Student
Knjiga
BrInd
Ime
SifK
Naziv
75/01
Marko
001
Računovodstvo
22/02
Petar
002
Baze podataka
156/03
Milan
003
Osnove finansija
112/02
Dragan
004
Poslovna informatika
005
Marketing
Slika 1.20 Veze između objekata realnog sveta – formira se klasa veza Klasa veza se može posmatrati kao zaseban entitet, a taj entitet može da ima svoje posebne atribute. U našem primeru, klasa veza DRŽI može da ima kao atribut DATUM od kada student drži odre đenu knjigu. Neka je trenutna situacija iz realnog sveta prikazana sledećom slikom:
- 47 -
http://slidepdf.com/reader/full/praktikum-baze-sql
56/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Student
Drži
BrInd
Ime
75/01
Marko
22/02
Petar
156/03
Milan
112/02
Dragan
Knjiga
12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005 12.09.2005
SifK
Naziv
001
Računovodstvo
002
Baze podataka
003
Osnove finansija
004
Poslovna informatika
005
Marketing
Slika 1.21 Klasa veza može da ima svoje atribute Grafički prikaz navedenog dat je na sledećoj slici Datum
BrInd
SifK Student
Drži
Knjiga
Ime Naziv
Slika 1.22 Klasa veza može da ima svoje atribute Suština relacionog modela je da se i klase objekata i klase veza izme đu objekata predstavljaju na jedinstven na čin, tj. preko tabela. U našem primeru postoje tri tabele: STUDENT, KNJIGA i DRŽI. U relacionom modelu podataka tabela se definiše kao relacija, koja mora da ispuni odgovarajuće uslove. Svaka relacija mora da ima primarni klju č – jedan ili više atributa koji na jedinstven način opisuju svaki zapis u jednoj tabeli. Primarni klju bira. Nazato primer u klasi loš izbor primarnog ključčasebi pažljivo bio atribut IME, što se mogustudenata pojaviti dva studenta sa istim imenom. Dobar izbor primarnog klju ča je atribut Broj indeksa, zato što ne postoje dva studenta sa istim brojem indeksa. Za klase objekata Student i Knjiga vrši se prevo đenje u relacioni model na sledeći način (podvlačenjem su označeni atributi koji čine primarni ključ):
- 48 -
http://slidepdf.com/reader/full/praktikum-baze-sql
57/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
STUDENT (BrInd, Ime), KNJIGA (SifK, Naziv) Za klasu veza Drži, može se difinisati prirodan primarni klju č u odnosu na objekte koje povezuje. U našem primeru relacija Drži bi glasila: DRŽI(BrInd, SifK, Datum) Dakle, za posmatrani realan slučaj gde sudenti drže pojedine knjige, izvršeno je modelovanje preko tri tabele tj. relacije. Tabele STUDENT i KNJIGA imaju dve kolone, a tabela DRŽI tri kolone. Sve tabele su povezane. Povezivanje se vrši preko vrednosti atributa u relacijama. na sledeći način: STUDENT (BrInd, Ime)
KNJIGA (SifK, Naziv) DRŽI (BrInd, SifK, Ime) Strani ključ relacije Drži koji pokazuje na primarni ključ relacije Student
Strani ključ relacije Drži koji pokazuje na primarni ključ relacije Knjiga
Slika 1.23 Relacije se povezuju vrednostima stranih i primarnih ključeva Veoma je važno zapaziti da kako i gde su tabele smeštene ne pravi nikakvu razliku. Svaka tabela se identifikuje jedinstvenim imenom koje baza podataka koristi da bi pronašla tabelu. Korisniku je potrebno samo da zna ime tabele. Nema potrebe da se vodi ra čuna o tome kako su podaci smešteni na disku. Ovo je različito od hijerarhijskog i mrežnog modela u kojima korisnik mora da razume kako su podaci struktuirani unutar baze podataka da bi mogao da ih pretražuje, unosi nove, ažurira ili briše postojeće slogove. Relaciona baza podataka standardno se satoji iz više tabela. Ipak, za razliku od mrežne baze podataka, tabele nisu povezane pokaziva čima. Umesto toga koriste se „ključevi“ da upare redove podataka u različitim tabelama. Ključ je samo još jedna ili više kolona u tabeli, koja odgovara kolonama u drugim tabelama. - 49 -
http://slidepdf.com/reader/full/praktikum-baze-sql
58/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Zahtev za podatkom iz relacione baze podataka se dobija izvršavanjem upita koji je napisan u posebnom jeziku, obi čno nekom od dijalekata SQL-a. Iako je SQL originalno namenjen za krajnje korisnike, mnogo češće se SQL upiti ugrađuju u softver koji omogućava lakši korisnički interfejs. Kao odgovor na upit, baza podataka vraća skup podataka, koji je u stvari lista redova koji sadrže odgovor. Najjednostavniji upit je da se dobiju svi redovi iz tabele, ali češće, redovi se filtriraju na neki na čin da bi se dobio traženi odgovor. Često se podaci iz više tabela kombinuju u jednu, procesom udruživanja. Fleksibilnost relacionih baza podataka dozvoljava programerima da pišu upite koji nisu bili predviđeni od strane dizajnera baze podataka. Kao rezultat, relacione baze podataka mogu da se koriste u više aplikacija koje originalni dizajneri nisu predvideli, što je posebno važno za baze podataka koje se mogu koristiti decenijama. Ovo je model relacionih baza podataka učinilo veoma popularnim u poslovnoj primeni.
1.9.4. Objektni model Objektno je zainteresovani jedan od novijih modela bazai po podataka. Istraživačiorjentisani su za njegamodel postali krajem 70-tih četkom 80-tih godina prošlog veka, kada se po čeo pojavljivati koncept objektno orjentisanih sistema. Bazira se na konceptu objekata, koji predstavljaju skup podataka i operacija koje se na njima mogu izvršavati. Istraživanje se radilo i da bi se prevazišla mnoga ograničenja u relacionom modelu na određenim tipovima podataka. Tipovi podataka koji se mogu koristiti u relacionim bazama su veoma ograničeni. Svaki atribut (polje) može da poprimi samo jednu vrednost. U objektno orijentisanom modelu podataka entitet se predstavlja klasom. Klasa obuhvata iNpr. atribute ponašanje entiteta (moguće operacije nad podacima). Klasa: istudent Atributi: BrInd, Ime, Prezime, Fakultet Procedura: polaganjeIspita()
• •
Objekti su samo jedno pojavljivanje u odgovarajućoj klasi. Objektno orijentisan model karakteriše bogatsvo tipova podataka – tip može biti i - 50 -
http://slidepdf.com/reader/full/praktikum-baze-sql
59/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP rezultuje boljim performansama baze podataka. Posmatrajmo primer u kome se vodi evidencija o Studentima sa svojstvima: Broj indeksa, Ime, Prezime, Fakultet i Tip automobila koji student poseduje. Dalje, vodi se evidencija o Automobilima sa svojstvima Naziv automobila, Registarski broj, Boja, Godište i Vlasnik. Prethodni primer se može prikazati na sledeći način Student
BrInd
Ime
Prezime
Fakultet
Automobil
123/05
Marko
Marković
FPI
Golf
------
-----
-----
-----
-----
Automobil Naziv Golf
RegBr
BG123456
Boja Belo
Godište 1993
Vlasnik Marko
------
-----
-----
-----
-----
Slika 1.24 U objektno orijentisanim BP tip podatka može biti drugi objekat Objektno orjentisani DBMS-ovi omogućavaju čuvanje objekata direktno, bez mapiranja za različite strukture podataka. Relacioni DBMS zahteva mapiranje iz objekata u tabele. U objektno orijentisanom modelu, informacija je sačuvana kao stalni objekt, a ne kao red u tabeli. Ovo sistem čini efikasnijim u smislu prostora potrebnog za smeštanje i čuvanje podataka i osigurava da korisnik manipuliše podacima samo na onaj način koji je programer odredio. S druge strane, obzirom da se kontrola vrši na veoma niskom nivou, mnogo je teže za treću stranu da napravi neki dodatak. Dok kod - 51 -
http://slidepdf.com/reader/full/praktikum-baze-sql
60/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
relacionih baza podataka možemo imati korist od softvera izrađenog od strane trećeg dobavljača, korisnici objektno orjentisanih sistema za upravljanje bazama podataka ili moraju da naru če dodatni softver od originalnog programera ili da ga razviju u saradnji sa drugim firmama koje koriste isti sistem.
1.10. Transakcije Baze podataka kontinuirano skladište informacije koje opisuju trenutno stanje preduzeća. Na primer, baza podataka banke čuva trenutni bilans na svakom računu deponenta. Kada se u stvarnom svetu dogodi nešto što menja stanje preduzeća, mora da se uradi odgovarajuća promena podataka u bazi podataka. Ove promene se dešavaju uz pomoć programa koji se nazivaju transakcije koje deluju kada dođe do promena u stvarnom svetu. Na primer, kada klijent polaže novac u banku (događaj u stvarnom svetu), izvršava se transakcija depozita. Svaka transakcija mora biti uređena tako da održava nepogrešivost veze izme đu stanja baze podataka preduzeća koje je kreira iz stvarnog sveta. Pored toga što menja stanje baze podataka, transakcija sama po sebi može da inicira neke đ
doga aje u inicira stvarnom Nanovca. primer, izdvojena transakcija kod bankomata, događsvetu. aj odliva Obično se transakcijom naziva niz operacija nad bazom podataka koji odgovara jednoj logičkoj jedinici posla u realnom sistemu. Važno je istaći da se ta logička jedinica posla izvršava do kraja ili se poništava u celini. Drugim rečima, zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze. Primer Podizanjeslede novca sa računa u banci. Kada banka primi zahtev, transakcije: transakcija obuhvata će korake: 1. Provera bankarske kartice 2. Provera računa (stanje) 3. Ako je stanje ispod minimuma odbija se zahtev, u suprotnom se nastavlja 4. Smanjuje se stanje na računu za zahtevani iznos - 52 -
http://slidepdf.com/reader/full/praktikum-baze-sql
61/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5. Generiše se izveštaj o transakciji 6. Isplaćuje se novac i daje izveštaj o transakciji Transakcija mora da kompletira sve korake, inače bi jedna od strana u transakciji imala štetu. Obrada transakcija je izuzetno važna u višekorisni čkim aplikacijama. Kada više korisnika istovremeno unosi izmene u bazu podataka, više se ne možemo pouzdati u to da će uvek jedna izmena biti trajno upisana u bazu pre nego što započne naredna. Zbog toga u bazama podataka postoje mehanizmi kojima se može obezbediti da konkurentno izvršavanje transakcija daje iste rezultate kao kada se transakcije izvršavaju u serijskom redosledu.
1.10.1. Osobine transakcija Transakcije imaju sledeće osobine (ACID osobine): Atomnost ( atomicity),
•
Atomnost podrazumeva skup aktivnosti nad bazom podataka po principu „sve ili ništa“. Ili su sve aktivnosti uspešno obavljene ili je baza podataka ostala nepromenjena. Kada dođe do promene u bazi podataka, tada su sve promene dostupne korisnicima ili niti jedna promena nije dostupna korisnicima. To znači da se ne može desiti da se samo deo promene desi u bazi podataka u slučaju softverske ili hardverske greške. Konzistentnost ( consistency),
•
Konzistentnost znači da transakcija treba da prevede bazu podataka iz jednog u drugo konzistentno stanje. Na primer, ako se transakcijom vrši prebacivanje novca sa jednog ra čuna na drugi ra čun u banci, suma novca preu itoku posle izvršenja transakcije se ne ukupna može promeniti. Ukoliko transakcione obrade dodje do greške, podaci moraju biti vraćeni u stanje pre početka transakcije. Izolacija (izolation),
•
Izolacija znači da kada se dve ili više transakcija izvršavaju istovremeno, njihovi efekti moraju biti međusobno izolovani. Efekti koje izazovu transakcije koje se obavljaju istovremeno - 53 -
http://slidepdf.com/reader/full/praktikum-baze-sql
62/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
moraju biti jednaki efektima nekog njihovog serijskog (jedna posle druge) izvršenja. Zbog povećanja paralelizma u obradi transakcija dozvoljavaju se različiti nivoi izolovanosti. Trajnost ( durability).
•
Trajnost znači da kada se transakcija završi (potvr đene promene), njeni efekti ne mogu biti izgubljeni, čak i ako se neposredno po njenom okončanju desi neki ozbiljan otkaz sistema.
1.10.2. COMMIT i ROLLBACK Obezbeđenje ACID osobina transakcije se radi upotrebom odre đenih metoda i instrukcija: transakcija počinje sa BEGIN TRANSACTION, završava se sa COMMIT, čime se potvr đuju promene u bazi
• •
podataka ako su sve instrukcije uspešno izvršene, završava se sa ROLLBACK, ako sve instrukcije nisu uspešno
•
završene. Transakcija počinje pozivanjem metode BEGIN TRANSACTION, čime se označava početak niza operacija koje čine jednu logičku jedinicu. Metoda COMMIT preuzima sve izmene načinjene od poslednjeg mesta na kome je bila pozvana metoda BEGIN TRANSACTION i upisuje ih na disk. Metoda ROLLBACK deluje na suprotan način od COMMIT – ona poništava sve izmene i vraća stanje kakvo je bilo pre poslednjeg poziva metode COMMIT. DBMS poseduje i održava dnevnik transakcija (tj. dnevnik aktivnosti, log file). Za svaku transakciju i za svaki objekat baze podataka koji je DBMS ažurirao čuva se: vrednost pre ažuriranja (before-image) vrednost posle ažuriranja (after-image)
• •
Na naredbu ROLLBACK, DBMS koristi vrednosti pre za datu transakciju. Pre COMMIT naredbe sistem prvo upisuje vrednosti pre i posle u log fajl. Ako se prekine COMMIT naredba, mogu se pročitati - 54 -
http://slidepdf.com/reader/full/praktikum-baze-sql
63/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
vrednosti posle sa log fajla, što omogućava očuvanje konzistentnog stanja.
1.10.3. Konkurentno izvršavanje transakcija Nad modernim bazama podataka transakcije se ne obavljaju u izolovanosti već konkurentno. Više transakcija mogu istovremeno zahtevati iste resurse, isti zapis baze podataka, itd. U takvim situacijama otvara se mogućnost da nekontrolisan međusobni uticaj transakcija dovede do nekonzistentnog stanja.
Transakcija1 Transakcija2
Paralelno izvršavanje transakcija
Istovremeno izvršavanje sve tri transakcije
Transakcija3 vreme Transakcija1
Transakcija2
Transakcija3
Serijsko izvršavanje transakcija
Slika 1.25 Paralelno i serijsko izvršavanje transakcija DBMS upravlja konkurentnim radom više aplikacija (korisnika), obezbeđuje sinhronizaciju njihovog rada, a sve u cilju sprečavanja štetnih posledica pri promenama koje se vrše nad bazom podataka u višekorisničkom okruženju. Komponente DBMS koje učestvuju u ovom procesu su: Planer (Scheduler ), Menadžer transakcija (Transaction manager ).
• •
Planer vodi računa o redosledu akcija kod više konkurentnih transakcija. Ako čitanje ili upisivanje može da naruši integritet baze podataka, zahtev - 55 -
http://slidepdf.com/reader/full/praktikum-baze-sql
64/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
se ili vremenski odlaže ili se poništava cela transakcija. Menadžer transakcija upravlja celokupnim izvršenjem transakcija. Idealan slučaj izvršavanja transakcija je serijsko izvršavanje, ali je to neefikasno i nije u skladu sa zahtevima iz realnog sveta. Posledica je korektan rezultat. Serijsko izvršavanje transakcija, u stvari, znači da: nema preplitanja transakcija, prvo se završi jedna, zatim počinje druga transakcija
• •
Konkurentno izvršavanje transakcija je serijabilno (linearno) ako daje isti rezultat kao i serijsko izvršavanje svih transakcija.
1.11. Oporavak baze podataka Opravak baze podataka (RECOVERY) predstavlja proces vraćanja baze podataka u korektno stanje. Sasvim je realno, i dešava se, da usled otkaza sistema mora da se uradi oporavak baze podataka. Uzroci otkaza mogu biti različiti: greške u programiranju, greške u operativnom sistemu, nestanak napajanja, havarije i sl. Proces oporavka se zasniva na redudansi podataka, tj. postojanju rezervnih kopija (backup), koje mogu da se čuvaju na disku, traci i sl. Tako, u slučaju otkaza sistema, oštećena baza podataka se rekonstruiše u ispravno stanje na osnovu poslednje kopije, a nekonzistentno stanje se rešava tako što se poništavaju nekonzistentne promene, a transakcije se ponavljaju.
1.12. Osnovne karaketristike savremenih baza podataka Savremeni računari i komunikaciona tehnologija značajno su uticali na napredak arhitekture, dizajna, kao i na upotrebu baza podataka i sistema za obradu transakcija. Njihova unapređena funkcionalnost stvorila je nove poslovne mogućnosti za preduzeća koja ih koriste, ali isto tako prouzrokovan je popriličan broj dodatnih zahteva za njihovom operativnošću.
- 56 -
http://slidepdf.com/reader/full/praktikum-baze-sql
65/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Stalna pristupačnost
•
Zbog toga što je uvek aktivan, informacioni sistem mora biti operativan tokom radnog vremena preduze ća. U nekim preduzećima, to znači da sistem mora da bude stalno dostupan. Na primer, kod sistema za rezervaciju avionskih karata, može da se zatraži rezervacija karata iz agencija raspoređenih u velikom broju vremenskih zona, tako da se sistem nikada ne gasi. Kada sistemi dožive kolaps, to dovedi do poreme ćaja u poslovanju. Na primer, ukoliko računar za rezervaciju karata ne radi, ne može se ni uraditi rezervacija. Mogućnost tolerancije pada sistema zavisi pre svega od prirode preduzeća. Svakako je jasno da sistem kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima sistem za rezervacije. VISA je objavila 2002. godine da je njihov sistem bio isključen na svega osam minuta u poslednjih pet godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U osnovi stalno pristupačnih sistema u suštini su kvalitetan hardver i softver Visoka pouzdanost Sistem mora precizno da prikaže rezultate svih transakcija. To znači ne samo da transakcija mora da bude tačno programirana,
•
ć
ć
ve i da netransakcija, sme do i do zbog uporednog (paralelnog) odvijanja ili greške međusobne komunikacije delova programa za vreme izvršenja transakcija. Međutim, veliki sistemi za prenos transakcija uključuje hiljade hardverskih i softverskih modula, i malo je verovatno da svi rade savršeno precizno. Ipak, sistem ne sme da zaboravi rezultate bilo koje završene transakcije. Na primer, baza bodataka u bankarskom sistemu mora precizno da prikaže efekat svih ulaganja i podizanja novca koji su se obavili, i ne sme da zaboravi rezultate bilo kakve transakcije tog tipa. Veliki protok informacija
•
Pošto preduzeća imaju veliki broj klijenata zbog kojih moraju da koriste sisteme za prenos transakcija, sistem mora da bude u stanju da obavlja više transakcija u sekundi. Na primer, sistem za odobravanje kreditnih kartica može da obavlja na hiljade transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije ne mogu izvršavati serijski, već se moraju izvršavati uporedno; što sa druge strane značajno komplikuje strukturu sistema.
- 57 -
http://slidepdf.com/reader/full/praktikum-baze-sql
66/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Brza reakcija
•
Sistem mora brzo da odreaguje zbog kupaca koji čekaju na njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od vrste naredbe koja se zadaje sistemu. Možemo da čekamo petnaest sekundi ispred bankomata kada podižemo novac, ali očekujemo, da, kada telefoniramo, poziv bude uspostavljen za nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija, reakcija sistema ne dogodi u tačno utvr đenom vremenu, transakcija se neće obavljati pravilno. Na primer, u fabrici sa automatizovanim sistemom, u transakciji može od sistema da se zatraži da aktivira neku mašinu pre nego što deo za obradu dođe do nje. Za aplikacije ovog tipa se kaže da imaju tzv. ’prinudno’ radno vreme. Dugotrajnost
•
Sistemi za prenos transakcija su veoma kopleksni, i nisu lako zamenljivi. Stoga, oni moraju biti dizajnirani tako da se pojedinačni hardverski i softverski moduli mogu zameniti novijim verzijama (koje imaju bolje performanse ili dodatne funkcije) bez velikih poremećaja unutar sistema. Bezbednost
•
Mnogi sistemi za prenos transakcija sadrže poverljive informacije o pojedincima (npr. stvari koje su kupili, brojeve kreditnih kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Pošto ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta (uključujući i Internet) bezbednost je važna. Korisnici moraju da se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da imaju pristup samo onim transakcijama za čije izvršenje su ovlašćeni (samo službenik u banci može da izvrši transakcije na nekom računu). Informacije u bazi podataka ne smeju da se presre ću i ičsis-tema itaju od strane a informacije izme đu korisnika se ne hakera, smeju menjati i najčešprenesene će treba da budu zaštićene od prisluškivanja.
- 58 -
http://slidepdf.com/reader/full/praktikum-baze-sql
67/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
1.13. Zaključak Tokom proteklih decenija došlo je do naglog porasta u broju i važnosti aplikacija baza podataka. Baze se koriste za skladištenje, manipulaciju i dobijanje podataka u organizacijama svih vrsta. Baza podataka je organizovan skup logički povezanih podataka. Podatak definišemo kao kao predstavnika objekta ili nekog događaja, koji bi bili od važnosti u korisnikovom realnom okruženju. Informacija je podatak koji je tako obrađen da nakon njegove upotrebe, korisnik oplemenjuje svoja č
saznanja. I podatak, kao i informacija se mogu uvati u bazi podataka. Metapodatak jeste onaj podatak koji opisuje karakteristike korisničkih podataka i kontekst tih podataka. Sistem za upravljanje bazom podataka (DBMS) je softverski sistem koji se koristi da stvara, održava i obezbeđuje kontrolu nad pristupom bazama podataka. DBMS skladišti metapodatke u delu koji je centralno skladište za sve definicije podataka, njihove veze, monitoring i formati izveštaja kao i ostale komponente sistema. Klasični sistemi zasnovani na datotekama i programskim jezicima su razvijeni u ranijoj eri, kako bi računari manipulišu i izvlačraečunarskoj velike fajlove podataka. Ovi mogli sistemida(i skladište, danas u upotrebi) su imali veliki niz nedostataka kao što su zavisnost izme đu podataka i programa, dupliranje podataka, njihova podela, kao i vreme izvršenja. Pristu preko baza podataka nastao je kao odgovor na te nedostatke. Vrste baza podataka: personalne baze, baze za radne grupe, poslovne baze i Internet baze. U poslovne baze ulaze i skladišta podataka i integrisani programi za podršku u odlučivanju. Tehnologija baza podataka je počela sa razvojem tokom šezdesetih godina prošlog veka, i od tada se razvija bez prekida, sa tendencijama ka daljem usavršavanju i uklanjanju bilo kakvih poteškoća kada su u pitanju upravljanje, pristup i održavanje podataka u bazi podataka. Informacioni sistemi pojedinih firmi omogućavaju upravljanje podacima koji su bitni za njeno poslovanje. Kako je broj internih podataka i podataka iz okruženja ogroman nemoguće je sve podatke i sve uočene detalje opisati i sačuvati unutar informacionog sistema. Postupkom selekcije identifikuju se i čuvaju samo relevantni podaci i stvaraju modeli - 59 -
http://slidepdf.com/reader/full/praktikum-baze-sql
68/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
realnog sveta. Oni su izraz i posledica zahteva za obradom podataka relevantnih za određeno područ je primene. Istorijski gledano sistemi za upravljanje bazama podataka mogu se podeliti u sledeće osnovne modele: hijerarhijski model, mrežni model, relacioni model i objektni model Na bazi ANSI/X3/SPARC modela razvijeni su sistemi za upravljanje bazama podataka koji imaju troslojnu arhitekturu ili varijantu te arhitekture. Aplikativni programi komuniciraju s bazom podataka preko odgovarajućeg eksternog modela. Zahtev za učitavanje određenih podataka aplikativni sloj upućuje na eksterni sloj, odnosno odgovarajući korisnički model. DBMS preslikava eksterni model na konceptualni i konceptualni na interni model. Transakcija je niz operacija nad bazom podataka i odgovara jednoj logičkoj jedinici posla u realnom sistemu, koja se izvršava do kraja ili se poništava u celini. Zahteva se da transakcija bude atomska (nedeljiva) i da svi koraci jedne transakcije moraju biti izvršeni ili ni jedan. U tom smislu, transakcija predstavlja osnovnu programsku jedinicu kojom se obezbeđuje očuvanje konzistentnosti baze.
1.14. Literatura [1] James L. Johnson, Database: Models, Languages, Design, Oxford University Press, 1997., London. [2] Michael Kifer, A. Bernstein, P.M. Lewis, Database, Systems, Pearson, Addison Wesley, 2004. [3] S. Abiteboul, R. Hull, V.Vianu, Fundation of Databases, Addison Wesley, Boston, MA [4] Branislav Lazarević, Z. Marjanović, N. Aničić, S. Babarogić, Baze podataka, FON, Beograd, 2003. [5] Vladimir Blagojević, Relacione baze podataka, Klub Nikola Tesla, Beograd, 2001. [6] Jeffrey A. Hoffer, M.B. Prescott, F.R. McFadden, Modern Database Management , Pearson, Prentice Hall, 2005. [7] B. Thalheim, Fundamentals of ER Modeling , Springer Verlag, Berlin [8] Craig S. Mullins, Administracija baza podataka, Kompjuter biblioteka, 2003. - 60 -
http://slidepdf.com/reader/full/praktikum-baze-sql
69/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
2. O SQL-u SQL (Stuctiured Query Language) je standardni relacioni upitni jezik (ANSI - American National Standards Institute - standard). Ovaj jezik se koristi za pristup i manipulaciju sistemima za upravljanje bazom podataka (DBMS - DataBase Management System), što najčešće podrazumeva čitanje i izmenu podataka u različitim bazama podataka. Tvorcem SQL-a se smatra Chamberlin, a SQL je nastao u iBM-ovoj istraživačkoj laboratoriji (IBM Research Laboratori) u San Jose-u, Kalifornija 1974. godine. Štorelacionog je na istom mestupodataka gde je i E.F. definisao osnovne koncepte modela SQLCodd koji su1970 bili osnova za dalji razvoj relacionih baza podataka. SQL je uspešno primenjen u sistemima za upravljanje bazom podataka kao što su MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase itd.
Osnovne karakteristike SQL-a: 1. Jednostavnost i jednobraznost pri koriš ć enju Tabela (relacija) se kreira jednom izvršnom naredbom. Odmah po kreiranju tabela je raspoloživa za korišćenje. Svi podaci memorisani su u tabelama i rezultat bilo koje operacije se logički prikazuje u obliku tabele. 2. Mogu ć nost interaktivnog i klasi č nog (aplikativnog) programiranja Koristeći SQL dobijaju se odgovori na trenutne, unapred ne predvidene zahteve ili se SQL blokovi "ugra đuju" u klasični viši programski jezik (FORTRAN, COBOL. PL/I, C) omogućujući klasičnu obradu gde korisnik same aplikacije najčešće uopšte nije ni svestan da koristi SQL. 3. Neproceduralnost (tj. se proceduralnost stepenu). Ni za jedan jezik ne može reći udaminimalnom je potpuno neproceduralan, već da je neproceduralan u većem ili manjem stepenu. SQL je u velikoj meri neproceduralan jer definiše ŠTA, a ne KAKO: koji podaci se žele, koje tabele se referenciraju i koji uslovi treba da budu ispunjeni, bez precizne specifikacije procedure za dobijanje željenih podataka. Preciznije rečeno SQL je na višem nivou apstrakcije nego klasični viši programski jezici, odnosno mnogi - 61 -
http://slidepdf.com/reader/full/praktikum-baze-sql
70/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
podjezici relacionih sistema za upravljanje bazama podataka koji se često koriste.
Osnovne mogućnosti SQL-a su:
• • • • •
•
•
SQL omogućava pristup bazi podataka SQL je jedan od ANSI standardardnih racunarskih jezika SQL može da izvršava upite nad bazom podataka SQL može da prikazuje podatke iz baze podataka SQL može da unosi nove podatke u bazu podataka SQL iz baze podataka SQL može može da da obriše izmenipostoje podatkećeuzapise bazi podataka
Režimi rada SQL podržava dva režima rada sa BP:
•
•
Interaktivni: korisnik zadaje jednu po jednu SQL naredbu, preko tastature a rezultati se prikazuju na monitoru, pristup BP je ograničen jedino pravima korisnika Programski (BASH): korisnik pokreće program u kome su ugra đene iSQL naredbe, pristupkojiBPse je ograni korisnika sadržajem programa pokre će čen pored prava
- 62 -
http://slidepdf.com/reader/full/praktikum-baze-sql
71/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
3. INSTALACIJA, KONFIGURISANJE I POKRETANJE MySQL-a 3.1. Proces isntalacije Procedura instalacije ovog pageta se kao i kod većine pokreće na standardni način, pokretanjem fajl setup.exe. Posle startovanja ovog fajla pojaviće se prozor kao na slici:
Slika 3.1 Prvi prozor Wizard-a Ovo je prva stranica Setup Wizarda koji će vam pomoći da na svoj Windows sistem instalirate MySQL serverski program. Da bi ste nastavili dalje kliknite na dugme Next, posle čega će se pojaviti sledeći prozor kao na slici:
- 63 -
http://slidepdf.com/reader/full/praktikum-baze-sql
72/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Sika 3.2 Drugi prozor Wizard-a Na ovom prozoru je potrebno izabrati tip instalacije koju želite. Prva opcija je Typical koja je tipična i vrlo upotrebljiva za većinu korisnika pa je poželjno nju izabrati. Pored nje tu je i Complete instalacija koja će instalirati sve programe koji postoje u ovom paketu, i na kraju je opcija Custom kod koje možete ručno izabrati šta od komponenata želite da se instalira a šta ne. Izaberite Typical ako već nije izabrana i kliknite na dugme Next da bi nastavili instalaciju. Pojaviće se treća stranica Wizarda koja izgleda kao na slici:
- 64 -
http://slidepdf.com/reader/full/praktikum-baze-sql
73/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
ć
Sika 3.3 Tre i prozor Wizard-a Da bi instalirali MySQL server kliknite na dugme Install posle čega je potrebno sačekati neko vreme dok se ne završi proces instalacije (ovo može potrajati neko vreme u zavisnosti od brzine vašeg ra čunara). Po završetku instalacije pojaviće se prozor kao na slici:
- 65 -
http://slidepdf.com/reader/full/praktikum-baze-sql
74/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Č
Sika 3.4 etvrti prozor Wizard-a Ovde imamo tri opcije. Prva je da kreiramo novi account za MySQL, druga je da koristimo neki koji smo već ranije kreirali a treća je da preskočimo ovaj korak jer on nije neophodan ako ne želimo da kreiramo svoj account na MySQL.com-u. Ovde ćemo preskočiti ovaj korak i nećemo kreirati novi account, izaberite opcije Skip Sign-Up i kliknite na dugme Next, posle čega će se pojaviti prozor kao na slici:
- 66 -
http://slidepdf.com/reader/full/praktikum-baze-sql
75/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Sika 3.5 Peti prozor Wizard-a Na ovom prozoru vidimo da je proces instalacije završen i možete izabrati ukoliko želite da konfigurišete server (potrebno je da opcija Configure the MySQL Server now bude izabrana kao na slici). Ukoliko ne želite da sada konfigurišete server ve ć kasnije dečekirajte ovu opciju. Za sada će te ovu opciju ostaviti uključenu da bi demonstrirali kako se konfiguriše server. Kliknitu na taster Next da bi se pojavio prvi prozor Wizard-a koji će vam pomoći da konfigurišete server.
- 67 -
http://slidepdf.com/reader/full/praktikum-baze-sql
76/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
3.2. Konfigurisanje MySQL servera Ukoliko ste u toku instalacije izabrali gore pomenutu opciju ili ukoliko ste iz Start menija izabrali MySQL Server Instance Config Wizard pojaviće se prva stranica ovog Wizarda kao na slici:
Slika 3.6 Prvi prozor Wizard-a za konfiguraciju MySQL-a Ovde možete primetiti da postoje dve opcije koje možete izabrati. Prva je Detailed Configuration čijim izborom će te moći do detalja ručno da podesite svoj server. Druga je Standrad Configuration koja je preporučljiva za većinu instalacija. Izaberite Standard Configuration i zatim kliknite na dugme Next posle čega će se pojaviti prozor kao na slici:
- 68 -
http://slidepdf.com/reader/full/praktikum-baze-sql
77/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 3.7 Drugi prozor Wizard-a za konfiguraciju MySQL-a Ovde je potrebno da sve ostavite kako jeste, samo uklju čite opciju Include Bin Directory in Windows Path (ovo nije obavezno ali je poželjno da bi kasnije mogli iz komandne linije lakše da pozivate klijentski program). Takođe proverite da li je izabrana opcija Lanch the MySQL Server automatically koja znači će pri svakom pokretanju operativnog sistema automatski biti pokrenut i server, a zatim kliknite na taster Next da bi se pojavio sledeći prozor kao na slici:
- 69 -
http://slidepdf.com/reader/full/praktikum-baze-sql
78/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
ć
Slika 3.8 Tre i prozor Wizard-a za konfiguraciju MySQL-a Ovde je vrlo bitno u polje New root password upisati šifru koju će te koristiti kasnije za rad sa bazom podataka i u slede ćem polju Confirm potvrditi to jest još jednom uneti istu šifru a zatim kliknite na Next da bi nastavili dalje (ovde je moguće izabrati i opciju Create An Anonymous Account što znači da će svako moći da se loguje kao Anonymous bez šifre, ovo je poželjno izbegavati). Posle izbora opcije Next pojaviće se prozro kao na slici:
- 70 -
http://slidepdf.com/reader/full/praktikum-baze-sql
79/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 3.9 Četvrti prozor Wizard-a za konfiguraciju MySQL-a Ovo je u stvari statusni prozor koji će prikazivati tok konfigurisanja to jest pojedinačnih stavki i primenu podešavanja. Da bi konfigurisali vaš server potrebno je izabrati dugme Execute i sačekati nekoliko trenutaka da se konfigurisanje završi posle čega će se ukoliko je sve u redu pojaviti prozor kao na slici:
- 71 -
http://slidepdf.com/reader/full/praktikum-baze-sql
80/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 3.10 Peti prozor Wizard-a za konfiguraciju MySQL-a Ovim ste završili proces instalacije i konfigurisanja. Startujete MySQL i možete početi sa radom.
- 72 -
http://slidepdf.com/reader/full/praktikum-baze-sql
81/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
3.3. Pokretanje MySQL-a Posle završene instalacije i konfigurisanja samog servera potrebno je pokrenuti klijentski program koji će vam omogućiti rad sa bazom podataka. Da bi ste startovali program idite na Start meni, zatim Programs, pa onda MySQL, pa MySQL Server 5.0 i na kraju MySQL Command Line Client posle čega će se pojaviti prozor kao na slici:
Slika 3.11 Prvi prozor MySQL-a Ovde je potrebno uneti root password koji ste zadali prilikom instalacije, unesite šifru i pritisnite taster Enter na tastaturi posle čega će se pojaviti prozor kao na sledećoj slici:
- 73 -
http://slidepdf.com/reader/full/praktikum-baze-sql
82/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 3.12 Prvi prozor MySQL-a Ukoliko je sve u redu pojaviće se prozor koji izgleda isto ovako i to znači da ste se upravo uspešno ulogovali i da vam je sada omogućen rad sa ovim SUBP-om. Sada možete izabrati neku od postojećih baza ili kreirati novu i raditi sa njom (izbor i kreiranje baze podataka pogledajte u delu DDL gde je to objašnjeno). Ukoliko ne znate koje se baze nalaze trenutno na sistemu to možete proveriti kucanjem naredbe: SHOW DATABASES; posle čega će se na ekranu pojaviti spisak svih postojećih baza na ovom sistemu.
- 74 -
http://slidepdf.com/reader/full/praktikum-baze-sql
83/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
4. SQL TIPOVI PODATAKA MySQL DBMS podržava veći broj tipova podataka koje možemo svrstati u tri osnovne kategorije:
• • •
Numerički tipovi podataka Vremenski tipovi podataka Binarni i tekstualni tipovi podataka
MySQL podržava i proširenja za podršku podataka većeg obima. Takođe, osim tipa podataka skup vrednosti se može dodatno definisati i korišćenjem atributa koji mogu biti opšti (npr. da je unos vrednosti obavezan) i specifični za određeni tip podataka (npr. Signed/Unsigned za tip Integer).
4.1. Numerički tipovi podataka MySQL u potpunosti podržava SQL standard vezan za numeričke tipove podataka. U numeričke tipove podataka spadaju celobrojne vrednosti (INTEGER, SMALLINT, DECIMAL i NUMERIC) kao i aproksimativne vrednosti (FLOAT, REAL i DOUBLE PRECISION). Sinonim za INTEGER je INT dok je sinonim za DECIMAL DEC. Tip
Bajtova
tinyint
1
smallint
2
mediumint
3
int
bigint
4
8
Min. vrednost
Maks. vrednost
Signed/Unsigned
Signed/Unsigned
-128
127
0
255
-32768
32767
0
65535
-8388608
8388607
0
16777215
-2147483648
2147483647
0
4294967295
-9223372036854775808
92233720368547758
0
18446744073709551 615
Tabela 4.1 Integer tipovi podataka - 75 -
http://slidepdf.com/reader/full/praktikum-baze-sql
84/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Najbitniji atributi numeričkih tipova podataka su "Signed/Unsigned" i "Zerrofil". "Signed/Unsigned" atribut označava da li će se u poljima tog tipa čuvati samo pozitivne ili i pozitivne i negativne vrednosti. U zavisnosti od ovog parametra se određuje i donja/gornja granica unetih vrednosti (videti tabelu 2.1.1). Parametar "Zerofill" svih vrednostima dodaje nule do definisane dužine (npr. unos vrednosti "4" u polje tipa INT(5) će se odraziti kao vrednost "00004") i automatski postavlja i parametar "Unsigned". Tipovi FLOAT i DOUBLE se koriste za predstavljanje približnih vrednosti. Preciznost je opcionalni parametear i ona za vrednosti od 0-23 podrazumeva tip FLOAT a za vrednosti od 24-53 podrazumeva tip DOUBLE. MySql automatski podržava zaokruživanje tako da će se vrednost 999.00009 uneta u polje definisano kao ime_polja DOUBLE(5,4) sačuvati kao 999.0001 . Tipovi DECIMAL i NUMERIC se koriste za predstavljanje ta čnih numeričkih vrednosti. Razlika između ovih tipova i tipova FLOAT i DOUBLE je u tome što se kod tipova DECIMAL i NUMERIC parametar preciznost zahteva kao statički (npr. kurs_dinara DECIMAL(3,2)).
4.2. Tipovi podataka vezani za datum i vreme U tipove podataka namenjenih skladištenju vrednosti vezanih za vreme spadaju:
●
●
●
●
DATETIME DATE TIME TIMESTAMP
YEAR Svaki od navedenih tipova podataka ima sopstveni skup validnih vrednosti kao i “nula” vrednost koja zamenjuje unešene vrednosti koje nisu validne. Tip TIMESTAMP poseduje automatsko ponašanje tj. automatski unosi vrednost sa sistemskog časovnika. U Tabeli 2.2.1 je prikazan format podataka vezanih za datum i vreme. ●
- 76 -
http://slidepdf.com/reader/full/praktikum-baze-sql
85/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Tip podataka
“nula” vrednost
DATETIME
'0000-00-00 00:00:00'
DATE
'0000-00-00'
TIME
'00:00:00'
TIMESTAMP
'0000-00-00 00:00:00'
YEAR
0000
Tabela 4.2 – Format podataka vezanih za datum i vreme Navedeni tipovi podataka vezani za datum i vreme nemaju specifične parametre osim tipova TIMESTAMP i YEAR koji mogu imati parametar “length”. Podrazumevana vrednost parametar “length” kod tipa TIMESTAMP je 14 a može biti i dodatno navedena: 14 (format YYYYMMDDHHMMSS) 12 (format YYYYMMDDHHMM) 10 (format YYYYMMDDHH) 8 (format YYYYMMDD) 6 (format YYYYMM) 4 (format YYYY) 2 (format YY) ● ● ● ● ● ● ●
Podrazumevana vrednost parametar “length” kod tipa YEAR je 4 a može biti i dodatno navedena kao vrednost 4 (format YYYY) ili 2 (format YY). U slučaju kada je parametar “length” postavljen na vrednost 4 kod YEAR tipa podataka, unešene vrednosti u opsegu 00-69 se konvertuju u 2000-2069 dok se vrednosti 70-99 konvertuju u 1970-1999.
4.3. Binarni i tekstualni tipovi podataka U tipove podataka namenjenih skladištenju binarnih i tekstualnih vrednosti spadaju:
●
●
●
●
CHAR i VARCHAR BINARY i VARBINARY BLOB i TEXT ENUM i SET - 77 -
http://slidepdf.com/reader/full/praktikum-baze-sql
86/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
CHAR i VARCHAR tipovi podataka su namenjeni za skladištenje kraćih nizova karaktera. Oba tipa imaju parametar “length” (npr. ime CHAR(20), prezime VARCHAR(30)) koji kod CHAR tipa može biti numerička vrednost u opsegu od 0 do 256 a kod VARCHAR tipa od 0 do 65.536. Osim razlike u dužini stringa koji se skladišti, osnovna razlika između između ovih tipova je način na koji se podaci skladište u bazi. Naime, vrednost parametra “length” se kod tipa CHAR koristi statički tj. razlika između maksimalne dužine i unete dužine stringa se popunjava znakom razmaka. Kod VARCHAR tipa se dužina prilagođava unetoj dužini stringa. BINARY i VARBINARY tipovi su veoma sli čni CHAR i VARCHAR tipovima sa tom razlikom što su BINARY i VARBINARY tipovi namenjeni skladištenju binarnih podataka. Ova dva tipa podataka su namenjena uglavnom za skladištenje manjih količina podataka. Za skladištenje fajlova u bazi podataka se radije koristi BLOB tip podataka. BLOB tip podataka (Binary Large OBject) i njegove podvarijante (TINYBLOB, BLOB, MEDIUMBLOB, i LONGBLOB) su namenjene za skladištenje binarnih nizova. TEXT tip podataka i njegove podvarijante (TINYTEXT, TEXT, MEDIUMTEXT, i LONGTEXT) su namenjene za skladištenje nizova karaktera različite veličine. BLOB i TEXT tipovi podataka ne mogu imati "default" vrednosti. ENUM tip podataka je namenjen za skladištenje tekstualnih vrednosti s tom razlikom da se vrednosti koje se unose moraju biti na listi vrednosti koja se kreira pri definisanju polja (npr. godina ENUM("prva", "druga", "treca")). Lista dozvoljenih elemenata kod ENUM tipa podataka je ograničena na maksimalno 65.536 elemenata. SET tip podataka je sli čan ENUM tipu podataka s tom razlikom da je lista dozvoljenih elemenata č
đ
ograni ena na 64 elementa indeksiranju elemenata liste. kao i da postoje odre ene razlike pri
- 78 -
http://slidepdf.com/reader/full/praktikum-baze-sql
87/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
4.4. Zahtevi pri skladištenju Numerički tipovi: Tip podataka
Zahtev pri skladištenju
TINYINT
1 bajt
SMALLINT
2 bajta
MEDIUMINT INT, INTEGER
3 bajta 4 bajta
BIGINT
8 bajtova
FLOAT(p)
4B za 0 <= p <= 24; 8B za 25 <= p <= 53
FLOAT
4 bajta
DOUBLE [PRECISION], REAL
8 bajta
DECIMAL(M,D) , NUMERIC(M, D)
Varira; dato je naknadno objašnjenje
BIT(M)
približno ( M +7)/8 bajtova
Tipovi podataka vezani za datum i vreme: Tip podataka
Zahtev pri skladištenju
DATE
3 bajta
DATETIME
8 bajtova
TIMESTAMP
4 bajta
TIME
3 bajta
YEAR
1 bajt
Binarni i tekstualni tipovi podataka: Tip podataka
Zahtev pri skladištenju
CHAR(M)
M bajtova, 0 <= M <= 255
VARCHAR( M)
L + 1 bajtova, gde je L <= M i 0 <= M <=
255 ili L + 2 bajtova, gde je L <= M i 256 <=
- 79 -
http://slidepdf.com/reader/full/praktikum-baze-sql
88/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Tip podataka
Zahtev pri skladištenju M <= 65535.
BINARY(M)
M bajtova, 0 <= M <= 255
VARBINARY( M )
L + 1 bajtova, gde je L <= M i 0 <= M <=
255 ili L + 2 bajtova, gde je L <= M and 256 <= M <= 65535. TINYBLOB, TINYTEXT
L+1 bajtova, gde je L < 28
BLOB, TEXT
L+2 bajtova, gde je L < 216
MEDIUMBLOB, MEDIUMTEXT
L+3 bajtova, gde je L < 224
LONGBLOB, LONGTEXT
L+4 bajtova, gde je L < 232
ENUM('vrednost 1','vred nost2',... )
1 ili 2 bajta, u zavisnosti od broja članova
SET('vrednost1',vredno st2',...)
1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja članova
4.5. Izbor adekvatnog tipa podataka Pri modeliranju baze podataka veoma je važno odabrati adekvatne tipove podataka tj. definisati tipove i atribute koji odgovaraju potrebama rada sa bazom podataka. U slučaju da kreirani model ne odgovara realnim potrebama u daljem radu se mogu javiti netačne vrednosti u bazi kao i nemogućnost korišćenja svih prednosti DBMS-a.
Primer 1: Polje starost (pod kojim podrazumevamo broj godina osobe) je u bazi moguće čuvati i u polju tipa Integer i u polju tipa String . Međutim, odabir tekstualnog tipa podatka onemogu ćava korišćenje upita tipa:
●
●
●
prikaži sve osobe mlađe od 30 godina prikaži sve osobe stare između 20 i 50 godina ...
Primer 2: Polje datum (pod kojim planiramo čuvanje informacije o datumu i vremenu nekog događaja) je u bazi moguće čuvati i u polju tipa Integer i u polju tipa DATETIME ili TIMESTAMP . Odabir numeričkog ili - 80 -
http://slidepdf.com/reader/full/praktikum-baze-sql
89/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
tekstualnog tipa podatka umesto vremenskog onemogu ćava funkcija vezanih za vremenski tip podatka. Međutim, odabir INTEGER tipa u ovakvim situacijama nije redak slučaj jer se izgubljena funkcionalnost DMBS-a nadoknađuje korišćenjem nekog od programskih jezika koji imaju mogućnost rada sa pomenutim DBMS-om. Takođe, pri izboru tipa podataka treba imati u vidu i zahteve za skladištenjem određenih tipova kao i brzinu rada.
4.6. Sinhronizacija tipova podataka sa drugim DBMS sistemima
Da bi se olakšalo importovanje modela rađenih za druge DBMS sisteme u MySQL DBMS, MySQL podržava sledeće mapiranje tipova:
Ostali DBMS
MySql DBMS
BOOL
TINYINT
BOOLEAN
TINYINT
CHAR VARYING( M )
VARCHAR( M)
DEC
DECIMAL
FIXED
DECIMAL
FLOAT4
FLOAT
FLOAT8
DOUBLE
INT1
TINYINT
INT2
SMALLINT
INT3
MEDIUMINT
INT4
INT
INT8
BIGINT
LONG VARBINARY
MEDIUMBLOB
LONG VARCHAR
MEDIUMTEXT
LONG
MEDIUMTEXT
MIDDLEINT
MEDIUMINT
NUMERIC
DECIMAL
Tabela 4.3 Mapiranje tipova za sinhronizaciju sa ostalim DBMS sistemima - 81 -
http://slidepdf.com/reader/full/praktikum-baze-sql
90/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
U praksi ovo znači da je moguće iskoristiti strane definicije tipova (navedenih u levoj koloni) za kreiranje tabela s tim da će se one automatski prevesti u MySql tipove podataka (navedene u desnoj koloni).
4.7. Unos različitih tipova podataka U zavisnosti od tipa podataka, različiti tipovi podataka imaju različit način unosa pomoću SUBP-a u bazu podataka.
•
Numerički tipovi podataka Unose se na klasičan način, na primer:
INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Magacin_rb, Cena i Količina su numeričkog tipa i unose se na klasičan način, bez ikakvih specijalnih znakova.
•
Vremenski tipovi podataka Unose se na klasičan način, na primer:
INSERT INTO Magacin (Magacin_rb, Naziv, Cena, Datum) VALUES (12, 'Disketa', 59.99, 12/09/2005); U prethodnom primeru polje Datum je vremenskog tipa.
•
Binarni i tekstualni tipovi podataka
Unose se obavezno između jednostrukih znakova novoda, na primer: INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany'); U prethodnom primeru polja Naziv i ZamljaPorekla su tekstualnog tipa i unose se između jednostrukih znakova navoda. - 82 -
http://slidepdf.com/reader/full/praktikum-baze-sql
91/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5. DDL ( Data Definition Language) 5.1. Kreiranje baze podataka Funkcija kreiranja baze podataka putem SUBP-a se odnosi na kreiranje nove prazne baze sa svim potrebnim elementima da je posle toga mogu ć rad sa njom. Kreiranje baze podataka se u SQL jeziku vrši pomo ću naredbe CREATE DATABASE. CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification ] ...] create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
Slika 5.1 Dokumentovana struktura naredbe CREATE DATABASE Da bi se kreirala baza podataka u skladu sa strukturom naredbe potrebno je ukucati sledeće: CREATE DATABASE PRODAJA;
Ovom naredbom kreirana je nova prazna baza podataka pod imenom PRODAJA. Sada je moguće koristiti ovu bazu podataka za dalji rad. Sve što je potrebno jeste izabrati bazu sa kojom želite da radite, samim kreiranjem baze ne podrazumeva se da vi automatski hoćete sa njom da nastavite da radite pa je zato potrebno ukucati sledeću naredbu: USE PROBA;
Ovom naredbom izabrali smo bazu podataka pod imenom PROBA sa kojom želimo da radimo (ovo je analogno kada u nekom programu izaberemo opciju Open pa izaberemo određeni fajl sa kojim želimo da radimo).
- 83 -
http://slidepdf.com/reader/full/praktikum-baze-sql
92/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.2. Kreiranje tebele u bazi podataka Funkcija kreiranja nove tabele u bazi podataka putem SUBP-a se odnosi na kreiranje nove prazne tabele u bazi podataka. Kreiranje nove tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe CREATE TABLE. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; create_definition: column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name ,...) | KEY [index_name ] [index_type ] (index_col_name ,...) | INDEX [index_name] [index_type] (index_col_name ,...) | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name ] [index_type ] (index_col_name ,...) | [FULLTEXT|SPATIAL] [INDEX] [index_name ] (index_col_name ,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name ] (index_col_name ,...) [reference_definition ]
| CHECK (expr ) column_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT ' string '] [reference_definition ] type: TINYINT[(length)] [UNSIGNED] [ZEROFILL] | SMALLINT[(length )] [UNSIGNED] [ZEROFILL] | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL] | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | BIGINT[(length )] [UNSIGNED] [ZEROFILL] | REAL[(length ,decimals )] [UNSIGNED] [ZEROFILL] | | | | | | | | | |
DOUBLE[(length ,decimals )] [UNSIGNED] [ZEROFILL] FLOAT[(length,decimals )] [UNSIGNED] [ZEROFILL] DECIMAL(length ,decimals ) [UNSIGNED] [ZEROFILL] NUMERIC(length ,decimals ) [UNSIGNED] [ZEROFILL] DATE TIME TIMESTAMP DATETIME CHAR(length) [BINARY | ASCII | UNICODE] VARCHAR(length ) [BINARY]
- 84 -
http://slidepdf.com/reader/full/praktikum-baze-sql
93/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
| | | | | | | | | | |
TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT ENUM(value1,value2 ,value3 ,...) SET(value1 ,value2,value3,...) spatial_type index_col_name : col_name [(length)] [ASC | DESC] reference_definition : REFERENCES tbl_name [(index_col_name ,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE] [ON DELETE reference_option ] [ON UPDATE reference_option ] reference_option : RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
Slika 5.2 Dokumentovana struktura naredbe CREATE TABLE Ukucajte sledeće primere i napravićete nekoliko tabela u bazi podataka PRODAJA koja je kreirana u prvom primeru. CREATE TABLE Artikl ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Magacin_rb INTEGER UNSIGNED NOT NULL, Naziv VARCHAR(255) NULL, Cena FLOAT NULL, Kolicina INTEGER UNSIGNED NOT NULL DEFAULT 0, ZemljaPorekla VARCHAR(50) NULL, PRIMARY KEY(rb), INDEX Artikl_FKIndex1(Magacin_rb) ); CREATE TABLE Dobavljac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Naziv VARCHAR(255) NOT NULL, Adresa VARCHAR(255) NULL, Telefon VARCHAR(30) NULL, PRIMARY KEY(rb) );
- 85 -
http://slidepdf.com/reader/full/praktikum-baze-sql
94/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
CREATE TABLE Dobavljac_Artikl ( Dobavljac_rb INTEGER UNSIGNED NOT NULL, Artikl_rb INTEGER UNSIGNED NOT NULL, PRIMARY KEY(Dobavljac_rb, Artikl_rb), INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb), INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb) ); CREATE TABLE Kupac ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Artikl_rb INTEGER UNSIGNED NOT NULL, Ime VARCHAR(25) NOT NULL, Prezime VARCHAR(25) NOT NULL, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, email VARCHAR(30) NULL, PRIMARY KEY(rb), INDEX Kupac_FKIndex1(Artikl_rb) ); CREATE TABLE Magacin ( rb INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, Adresa VARCHAR(50) NOT NULL, Telefon VARCHAR(30) NOT NULL, Kapacitet INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY(rb) );
U prethodnim primerima ukucali ste naredbe kojima je kreirano pet različitih tabela u bazi podataka PRODAJA koje ćemo koristiti i u daljim primerima za vežbanje.
- 86 -
http://slidepdf.com/reader/full/praktikum-baze-sql
95/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.3. Naredbe za definisanje podataka Omogućuju definisanje resursa relacione baze podataka. Pod resursima BP se najčešće podrazumevaju: 1. struktura BP, 2. tabele, 3. atributi, 4. tipovi podataka, 5. ograničenja, 6. pomoćni indeksi za direktan pristup itd. Efikasan sistem za upravljanje bazom podataka SUBP-a treba da omogu ći da izvršimo sledeće operacije: 1. kreiranje baze podataka 2. kreiranje tebele baze podataka 3. kreiranje indeksa nad kombinacijom kolona tabele 5. izmena 4. kreiranjedefinicije virtuelnetabele tabele - "pogleda" 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 -
http://slidepdf.com/reader/full/praktikum-baze-sql
96/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.4. Kreiranje indeksa u bazi podataka Funkcija kreiranja indeksa u tabeli u baze podataka putem SUBP-a se odnosi na kreiranje novog indeksa u tabeli u bazi podataka (iako se on uglavnom kreira pri samom kreiranju tabela baze podataka (pogledajte prethodne primere gde će te primetiti da se često na kraju navodi primarni ključ i ako postoje i ostali indeksi), koji će omogućiti lakše pretraživanje i ostale funkcije koje se dobijaju indeksiranjem nekog od polja u tabeli baze podataka. Kreiranje novog indeksa u tabele baze podataka se u SQL jeziku vrši pomoću naredbe CREATE INDEX. CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name (index_col_name ,...) index_col_name : col_name [(length)] [ASC | DESC]
Slika 5.3 Dokumentovana struktura naredbe CREATE INDEX Kreiraćemo indeks u tabeli Magacin nad poljem Telefon (strukturu tabele pogledajte tamo gde je ona kreirana) sledećom naredbom: CREATE INDEX K2 ON Magacin(Telefon);
- 88 -
http://slidepdf.com/reader/full/praktikum-baze-sql
97/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.5. Kreiranje virtuelne tabele - "pogleda" Funkcija kreiranja pogleda (VIEW) u bazi podataka putem SUBP-a se odnosi na kreiranje pogleda tj. virtualne tabele koja se koristi u slučajevima kada se često izvršavana neki isti upit nad odre đenom tabelom ili više tabela u bazi podataka. Tada se kreira pogled tj. view koji se kasnije koristi u radu sa bazom podataka. Kreiranje pogleda bazi podataka se u SQL jeziku vrši pomoću naredbe CREATE VIEW. CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
Slika 5.4 Dokumentovana struktura naredbe CREATE VIEW Kao što u gore navedenoj strukturi možete primetiti da ovde postoji select_statement što je u stvari SELECT naredba koja je posebno i detaljno u četvrtom delu o DML-u a ovde će biti više reči o tome (zaobjašnjena više informacija pogledajte poglavlje 4.3negde će te videti detaljno objašnjenje ove naredbe i svih njenih opcija. Kreiraćemo pogled nad tabelom magacin (najjednostavnijim oblikom SELECT naredbe) koji će prikazivati sve podatke koji se nalaze u istoimenoj tabeli sledećom naredbom: CREATE VIEW SPISAK AS SELECT * FROM MAGACIN;
- 89 -
http://slidepdf.com/reader/full/praktikum-baze-sql
98/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.6. Izmena definicije tabele Funkcija izmene tabele u bazi podataka putem SUBP-a se odnosi na dodavanje, uklanjanje i modifikovanje kolona u tabeli baze podataka. Prethodno navedene operacije nad tabelom u bazi podataka se u SQL jeziku vrši pomoću jedinstvene naredbe ALTER TABLE: ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] ( column_definition,...) | ADD INDEX [ index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [ symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [ symbol]] UNIQUE [index_name] [index_type] (index_col_name,...) | ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...) | ADD [CONSTRAINT [ symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name] | | | | | | | | | |
column_definition
col_name
MODIFY [COLUMN] [FIRST | AFTER ] DROP [COLUMN] col_name DROP PRIMARY KEY DROP INDEX index_name DROP FOREIGN KEY fk_symbol DISABLE KEYS ENABLE KEYS RENAME [TO] new_tbl_name ORDER BY col_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE | table_options
Slika 5.5 Dokumentovana struktura naredbe ALTER TABLE
- 90 -
http://slidepdf.com/reader/full/praktikum-baze-sql
99/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
U zavisnosti od toga šta želimo da promenimo u tabeli, koristićemo različite oblike prethodno navedene naredbe u strukturi koja je prikazana. Za dodavanje nove kolone koristi se ADD: ALTER TABLE Kupac ADD ime_oca CHAR(25);
Za uklanjanje kolone iz tabele koristi se DROP: ALTER TABLE Kupac DROP ime_oca;
Za izmenu svojstava kolone iz tabele koristi se MODIFY: ALTER TABLE Kupac MODIFY email VARCHAR(40);
- 91 -
http://slidepdf.com/reader/full/praktikum-baze-sql
100/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.7. Izmena pogleda u bazi podataka Funkcija izmene pogleda u bazi podataka putem SUBP-a se odnosi na izmenu pogleda koji je prethodno kreiran u bazi podataka. Izmena pogleda bazi podataka se u SQL jeziku vrši pomoću naredbe ALTER VIEW. ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
Slika 5.6 Dokumentovana struktura naredbe ALTER VIEW Primenićemo gore navedenu naredbu da bi promenili pogled pod nazivom SPISAK tako da prikazuje sve iz tabele Dobavljač a ne Magacin kako je ranije bilo, u skladu sa prethodno navedenom strukturom potrebno je ukucati: ALTER VIEW SPISAK AS SELECT * FROM Dobavljac;
- 92 -
http://slidepdf.com/reader/full/praktikum-baze-sql
101/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.8. Promena imena tabele u bazi podataka Funkcija promene imena tabele u bazi podataka putem SUBP-a se odnosi na promenu inema neke od tabela koja je prethodno kreirana u bazi podataka. Izmena imena tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe RENAME TABLE. RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2 ] ...
Slika 5.7 Dokumentovana struktura naredbe RENAME TABLE Iskoristićemo prethodno opisanu naredbu da bi promenili ime tabele Kupac u Klijent, u skladu sa prethodnom strukturom potrebno je ukucati: RENAME TABLE Kupac TO Klijent;
- 93 -
http://slidepdf.com/reader/full/praktikum-baze-sql
102/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.9. Brisanje tabele iz baze podataka Funkcija brisanja tabele iz baze podataka putem SUBP-a se odnosi na uklanjenje neke od tabela koja je prethodno kreirana u bazi podataka tako da ona više fizički ne postoji u bazi podataka.. Ovde je potrebno uočiti bitnu razliku između naredbe DROP TABLE i naredbe DELETE FROM TABLE. Naredbom DROP TABLE briše se tabela iz baze podataka (napomena: korišćenjem ove naredbe nad tabelom u kojoj se nalaze podaci doći će do gubljenja tih podataka) dok se naredbom DELETE FROM TABLE brišu se svi podaci iz tabele ali se prazna tabela i dalje čuva u bazi podataka tako da se kasnije ponovo može koristiti. Uklanjanje tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe DROP TABLE. DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name ] ... [RESTRICT | CASCADE]
Slika 5.8 Dokumentovana struktura naredbe DROP TABLE Korišćenjem prethodno navedene naredbe uklonićemo tabelu Klijent iz baze podataka, u skladu sa prethodno navedenost strukturom potrebno je ukucati: DROP TABLE Klijent;
- 94 -
http://slidepdf.com/reader/full/praktikum-baze-sql
103/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.10. Uklanjanje indeksa iz tabele Funkcija uklanjanja indeksa iz tabele u bazi podataka putem SUBP-a se odnosi na uklanjenje indeksa u nekoj od tabela koji je prethodno kreiran u bazi podataka. Uklanjanje indeksa u nekoj od tabele u bazi podataka se u SQL jeziku vrši pomoću naredbe DROP INDEX. DROP INDEX index_name ON tbl_name
Slika 5.9 Dokumentovana struktura naredbe DROP INDEX Korišćenjem prethodne naredbe uklonićemo indeks pod nazivom K2, koji je kreiran nad tabelom Magacin, u skladu sa prethodno navedenom strukturom potrebno je ukucati: DROP INDEX K2 ON Magacin;
- 95 -
http://slidepdf.com/reader/full/praktikum-baze-sql
104/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
5.11. Uklanjanje baze podataka Funkcija uklanjanja baze podataka putem SUBP-a se odnosi na uklanjenje kompletne baze podataka koja je prethodno kreirana (Ovom naredbom uklanjamo čitavu bazu podataka i sve njene resurse (tabele, atribute, tipove podataka, ograničenja, indekse itd.)). Uklanjanje baze podataka se u SQL jeziku vrši pomoću naredbe DROP DATABASE. DROP {DATABASE | SCHEMA} [IF EXISTS] db_namež
Slika 5.10 Dokumentovana struktura naredbe DROP DATABASE Korišćenjem prethodne naredbe obrisaćemo čitavu bazu podataka koju smo na početku kreirali (PAŽNJA: posle izvršenja ove naredbe baza će biti uništena i dalji rad neće biti moguć), u skladu sa gore navedenom strukturom potrebno je ukucati: DROP DATABASE PRODAJA;
- 96 -
http://slidepdf.com/reader/full/praktikum-baze-sql
105/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6. DML (Data Manipulation Language) 6.1. Manipulisanja podacima Osnovni razlog korišćenja Sistema za Upravljanje Bazama Podataka (SUBP) je jednostavan i lak rad sa podacima koji se nalaze u bazi podataka. Pod manipulisanjem (rukovanjem) podacima se podrazumeva:
●
●
●
●
Unos (dodavanje) podataka Pregled (korišćenje) podataka Izmena podataka Uklanjanje podataka
Efikasnost sistema za upravljanje bazama podataka (SUBP) se može meriti preko sledećih kriterijuma:
●
●
●
●
●
●
jednostavnost upotrebe preciznost podataka održavanje integriteta podataka brzina rada (izvršavanja upita) podržana količina podataka u bazi specifične funkcije i mogućnosti
- 97 -
http://slidepdf.com/reader/full/praktikum-baze-sql
106/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.2. Unos podataka Funkcija unosa podataka u bazu putem SUBP-a se odnosi na unos podataka u neku (jednu ili više) od tabela u bazi podataka. Unos podataka se u SQL jeziku vrši pomoću naredbe INSERT. INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Slika 7.1 Dokumentovana struktura naredbe INSERT Da bi ste u tabelu Artikl uneli novi zapis, u skladu sa strukturom naredbe INSERT, to možete uraditi na sledeća dva načina: INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (123, 'Artikl br. 1', 199.99, 100, 'Germany');
ili INSERT INTO Artikl VALUES (1, 123, 'Artikl br. 1', 199.99, 100, 'Germany');
Postoje dve osnovne razlike između ove dve navedene varijante: U prvoj varijanti smo pre vrednosti koje želimo da unesemo u tabelu Artikl naveli kolone u koje želimo da smestimo te vrednosti dok u drugoj varijanti nismo eksplicitno navodili imena kolona već smo samo naveli vrednosti po redosledu u kom se kolone nalaze u tabeli. U drugoj varijanti smo zadali vrednost i za polje rb da bi smo ispoštovali broj i redosled kolona pošto ih nismo eksplicitno naveli. Međutim, na ovaj način smo izgubili funkcionalnost parametra AUTO_INCREMENT koji je postavljen na ovu kolonu. ●
●
- 98 -
http://slidepdf.com/reader/full/praktikum-baze-sql
107/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Druga varijanta predstavlja kraći oblik naredbe koji nije poželjno koristiti iz sledećih razloga:
●
●
●
Gubi se funkcionalnost parametra AUTO_INCREMENT i DEFAULT. Ukoliko naredbu u ovakvom obliku sačuvamo u nekoj internoj ili eksternoj proceduri, nakon izmene tabele (dodavanja/uklanjanja neke od kolona) ta procedura ne će biti validna. Moraju se unositi vrednosti za sva polja i to u odgovarajućem redosledu.
Na prethodno opisan način uneti i sledeće podatke: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Serbian | +----+------------+--------------+--------+----------+---------------+ +----+------------+--------------+--------+----------+---------------+ | 3 | 127 | Artikl br. 3 | 190.00 | 170 | USA | +----+------------+--------------+--------+----------+---------------+ +----+------------+--------------+--------+----------+---------------+ | 4 | 129 | Artikl br. 4 | 599.05 | 340 | Germany | +----+------------+--------------+--------+----------+---------------+ +----+------------+--------------+--------+----------+---------------+ | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ +----+------------+--------------+--------+----------+---------------+ | 6 | 135 | Artikl br. 6 | 397.00 | 390 | France | +----+------------+--------------+--------+----------+---------------+ +----+------------+--------------+--------+----------+---------------+ | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+
To ćemo uraditi uz pomoć sledećih naredbi: INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (124, 'Artikl br. 2', 299.99, 103, 'Serbian'); INSERT INTO Artikl (Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla) VALUES (127, 'Artikl br. 3', 190.00, 170, 'USA');
- 99 -
http://slidepdf.com/reader/full/praktikum-baze-sql
108/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
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 -
http://slidepdf.com/reader/full/praktikum-baze-sql
109/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.3. Pregled podataka Funkcija pregleda podataka u bazi putem SUBP-a se odnosi na uzimanje podataka iz neke (jedne ili više) od tabela u bazi podataka. Pregled podataka se u SQL jeziku vrši pomoću naredbe SELECT. SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]
Slika 7.2 Dokumentovana struktura naredbe SELECT Da bi smo izvršili pregled svih podataka iz tabele Artikl iskoristićemo najosnovniji oblik naredbe SELECT: SELECT * FROM Artikl;
- 101 -
http://slidepdf.com/reader/full/praktikum-baze-sql
110/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim kolonama) iz tabele Artikl. +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
Identična naredba (tj. naredba sa identičnim rezultatom) u ovom slučaju bi bila: SELECT rb, Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla FROM Artikl;
Iako su rezultati isti: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
razlika između ove i prethodne naredbe je u tome što smo u prethodnoj naredbi koristili simbol '*' da bi smo ozna čili sve kolone (sva polja zapisa). Ukoliko želimo da iz prikaza izbacimo kolonu rb, potrebno je samo da je izostavimo iz liste kolona: u ovom slu čaju bi bila: SELECT Magacin_rb, FROM Artikl;
Naziv,
Cena,
Kolicina,
ZemljaPorekla
- 102 -
http://slidepdf.com/reader/full/praktikum-baze-sql
111/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen parametar rb: +------------+--------------+--------+----------+---------------+ | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +------------+--------------+--------+----------+---------------+ | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 127 | Artikl br. 3 | 190 | 170 | USA | | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 135 | Artikl br. 6 | 397 | 390 | France | | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
Rezultate možemo sortirati vertikalno i horizontalno. Vertikalno sortiranje se izvodi preko navođenja kolona u redosledu u kom želimo da se prikazuju parametri zapisa: SELECT Kolicina, FROM Artikl;
Cena,
Naziv,
Magacin_rb,
ZemljaPorekla
U rezultat ove naredbe: +----------+--------+--------------+------------+---------------+ | Kolicina | Cena | Naziv | Magacin_rb | ZemljaPorekla | +----------+--------+--------------+------------+---------------+ | 100 | 199.99 | Artikl br. 1 | 123 | Germany | | 102 | 299.99 | Artikl br. 2 | 124 | Srbija | | 170 | 190 | Artikl br. 3 | 127 | USA | | 340 | 599.05 | Artikl br. 4 | 127 | Germany | | 140 | 179.97 | Artikl br. 5 | 132 | Switzerland | | 390 | 397 | Artikl br. 6 | 135 | France | | 250 | 269.07 | Artikl br. 7 | 137 | Dansk | +----------+--------+--------------+------------+---------------+ 7 rows in set (0.00 sec)
ulaze svi zapisi vertikalno poređani po redosledu u kom su unošeni u tabelu ali je redosled njihovih parametara promenjen u Kolicina, Cena, Naziv, Magacin_rb, ZemljaPorekla. Horizontalno sortiranje se vrši zadavanjem jedne ili više kolona na osnovu čijeg sadržaja će sortiranje biti obavljeno u zadatom smeru: SELECT * FROM Artikl ORDER BY ZemljaPorekla ASC;
- 103 -
http://slidepdf.com/reader/full/praktikum-baze-sql
112/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
U rezultat ove naredbe: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | +----+------------+--------------+--------+----------+---------------+ 7 rows in set (0.00 sec)
ulaze svi zapisi sortirani po parametru ZemljaPorekla u rastućem redosledu. Ukoliko želimo da zapise pore đamo u opadajućem redosledu parametar ASC ćemo zameniti sa DESC. Osim vertikalnog ograničavanja rezultata (ograničavanja kolona/parametara zapisa koji ulaze u rezultat) SQL jezik podržava i horizontalno ograničavanje (ograničavanje zapisa koji ulaze u rezultat) preko sledećih parametara naredbe SELECT:
1. 2. 3. 4.
WHERE DISTINCT LIMIT GROUP BY / HAVING
- 104 -
http://slidepdf.com/reader/full/praktikum-baze-sql
113/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.3.1. Klauzula WHERE Ova klauzula se koristi za zadavanje odredjenog uslova koji zapis mora da ispuni da bi ušao u rezultat: SELECT * FROM Artikl WHERE rb=5;
Ovakvim korišćenje WHERE klauzule smo rezultat ograničili samo na zapise kod kojih je parametar rb (vrednost u koloni rb) jednak 1: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 1 row in set (0.00 sec)
Osim poređenja po numeričkoj jednakosti moguće je koristiti i sledeće numeričke operatore: =
SELECT
*
FROM
Artikl
WHERE
SELECT
*
FROM
Artikl
WHERE
SELECT
*
FROM
Artikl
WHERE
SELECT
*
FROM
Artikl
WHERE
SELECT
*
FROM
Artikl
WHERE
*
FROM
Artikl
WHERE
rb=1; <>
rb<>1; <
rb<1; >
rb>1; <=
rb<=1; >=
SELECT rb>=1;
BETW EEN LIKE
Veće od
Manje od
Veće ili jednako Manje
ili
Između
dve
vrednosti Artikl
WHERE
Naziv LIKE 'Artik%';
IN
Nije jednako
jednako
SELECT * FROM Artikl WHERE rb BETWEEN 1 AND 5; SELECT * FROM
Jednako
SIMBOLIČK O POREĐENJE
SELECT * FROM Artikl WHERE rb
Univerzalno poređenje
IN (1,3,5);
- 105 -
http://slidepdf.com/reader/full/praktikum-baze-sql
114/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Dodatna objašnjenja:
Simboličko poređenje -
-
●
Klauzula LIKE omogućuje pretraživanje na osnovu "UZORKA" odnosno dobijanje informacija i kada ne znamo potpun naziv (tj. vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna karaktera ("%","_") sa sledećim značenjem:
"%" "__" predstavlja predstavlja string od 0 ili više karaktera poziciju jednog karaktera. Ostali karakteri imaju ucbičajeno značenje. Uslov u WHERE klauzuli navedenog upita kaže da IME treba da li či na uzorak naveden u jednostrukim navodnicima.
Primeri:
... gde se ime završava sa N. WHERE IME LIKE '%N' ... gde je tre ćIME i karakter WHERE LIKE imena 'R%' R. ... gde je ime dugačko 5 karaktera WHERE IME LIKE ' ' ... gde ime nije dugačko 5 karaktera. WHERE IME NOT LIKE '__' ... gde je u imenu slovo G posle R. WHERE IME LIKE '%R%G%'
- Univerzalno poređenje
●
IN koristimo da prikažemo zapise koje pripadaju skupu vrednosti (ovo je zamena za više OR klauzula)
- 106 -
http://slidepdf.com/reader/full/praktikum-baze-sql
115/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Klauzula WHERE nije ograničena na postavljanje samo jednog uslova (što se može primetiti već kod parametra IN). Više uslova se može kombinovati pomoću logičkih operatora AND i OR : SELECT * FROM Artikl WHERE ( (rb>1 AND rb<3) OR (rb>3 AND rb<5) AND Naziv LIKE 'Artik%' );
Ovom naredbom smo dobili rezultat: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | +----+------------+--------------+--------+----------+---------------+
2 rows in set (0.02 sec)u koji su uklju čeni svi zapisi kod kojih parametar rb ima vrednost 2 ili 4 i kod kojih parametar Naziv počinje sa Artik .
- 107 -
http://slidepdf.com/reader/full/praktikum-baze-sql
116/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.3.2. Klauzula DISTINCT Ova klauzula se koristi za eliminisanje duplih zapisa iz prikaza: SELECT DISTINCT ZemljaPorekla FROM Artikl;
Rezultat ove komande: +---------------+ | ZemljaPorekla | +---------------+ | Germany | | Srbija | | USA | | Switzerland | | France | | Dansk | +---------------+
6 rows in set (0.00 sec) sadrži listu svih zemalja iz kojih artikli poti ču ali bez ponavljanja.
- 108 -
http://slidepdf.com/reader/full/praktikum-baze-sql
117/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.3.3. Klauzula LIMIT Ova klauzula se koristi za ograničavanje broja zapisa koji ulaze u rezultat bez obzira da li su ispunili eventualni uslov. Parametar LIMIT može imati jedan ili dva naknadna parametra (prvi koji definiše koliko prvih zapisa treba preskočiti i drugi koji definiše koliko zapisa treba prikazati). Ukoliko se zada samo jedan parametar on se odnosi na broj zapisa koje treba prikazati počev od prvog zapisa. Naredba sa jednim parametrom: SELECT * FROM Artikl LIMIT 5;
vraća prvih 5 zapisa: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 190 | 170 | USA | | 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland | +----+------------+--------------+--------+----------+---------------+ 5 rows in set (0.00 sec)
dok ista naredba sa dva parametra: SELECT * FROM Artikl LIMIT 5,10;
vraća zapise od 6. do 15.: +----+------------+--------------+--------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+--------+----------+---------------+ | 6 | 135 | Artikl br. 6 | 397 | 390 | France | | 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk | +----+------------+--------------+--------+----------+---------------+ 2 rows in set (0.00 sec)
- 109 -
http://slidepdf.com/reader/full/praktikum-baze-sql
118/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.3.4. Klauzule GROUP BY / HAVING Klauzula GROUP BY se koristi za grupisanje podataka koji se dobijaju kao rezultat upita, a klauzula HAVING se koristi za selekciju određenih grupa koje su već kreirane GROUP BY klauzulom. SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla;
ć
ć
Koriš enjem inaredbe u ovakvom kaozemlje. rezultat dobi emo spisak svih zemalja broj artikala koji poti obliku če iz koje +---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Germany | 2 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 6 rows in set (0.02 sec)
Ukoliko želimo da iz rezultata prikažemo samo podatke koji ispunjavaju određeni kriterijum, to će mo uraditi uz pomoć klauzule HAVING, na sledeći način: SELECT ZemljaPorekla, COUNT(*) FROM Artikl GROUP BY ZemljaPorekla HAVING COUNT(*)=1;
Na ovaj na čin kao rezultat dobićemo spisak zemalja iz kojih dolazi samo po jedan proizvod. +---------------+----------+ | ZemljaPorekla | COUNT(*) | +---------------+----------+ | Dansk | 1 | | France | 1 | | Srbija | 1 | | Switzerland | 1 | | USA | 1 | +---------------+----------+ 5 rows in set (0.02 sec)
- 110 -
http://slidepdf.com/reader/full/praktikum-baze-sql
119/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.4. Izmena podataka Funkcija izmene podataka u bazi putem SUBP-a se odnosi na izmenu podataka u nekoj (jednoj ili više) od tabela u bazi podataka. Moguće je izmeniti jedan ili više parametara (kolona) jednog ili više zapisa (reda). Izmena podataka se u SQL jeziku vrši pomoću naredbe UPDATE. UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Slika 7.3 Dokumentovana struktura naredbe UPDATE za jednu tabelu UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition]
Slika 7.4 Dokumentovana struktura naredbe UPDATE za više tabela Osnovni oblik komande UPDATE izgleda ovako: UPDATE Artikl SET Cena=1000.00;
i njome su je vrednost svih vrednosti u koloni Cena postavljena na 1000.00. Ukoliko želimo da izmenu primenimo samo na određene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1): UPDATE Artikl SET Cena=1000.00 WHERE ZemljaPorekla='Germany';
- 111 -
http://slidepdf.com/reader/full/praktikum-baze-sql
120/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
+----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
Ukoliko želimo da više parametara (kolona) izmenimo jednim upitom, navešćemo više kolona i vrednosti odvojenih zarezom: UPDATE Artikl SET Cena=2000.00, Kolicina=46 WHERE ZemljaPorekla='Germany'; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 46 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 46 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
Ukoliko želimo da u za vrednost koristimo ve ć postojeću vrednost u nekoj od kolona za vrednost ćemo navesti kolonu zapisa čiju vrednost želimo da primenimo: UPDATE Artikl SET Kolicina=Cena WHERE ZemljaPorekla='Germany'; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1000 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1000 | 390 | France | | 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 112 -
http://slidepdf.com/reader/full/praktikum-baze-sql
121/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ukoliko želimo da u za vrednost koristimo ve ć postojeću vrednost uz primenu matematičke operacije: UPDATE Artikl SET Cena=Cena*1.18; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2360 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 1180 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 1180 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2360 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 1180 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 1180 | 390 | France | | 7 | 137 | Artikl br. 7 | 1180 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
ili UPDATE Artikl SET Cena=Kolicina+10; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 2010 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 112 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 180 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 400 | 390 | France | | 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 113 -
http://slidepdf.com/reader/full/praktikum-baze-sql
122/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Parametar LIMIT (videti deo 4.3.3) služi za ograničavanje broja kolona na koje ćemo primeniti izmenu: UPDATE Artikl SET Cena=100 LIMIT 3; +----+------------+--------------+------+----------+---------------+ | rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla | +----+------------+--------------+------+----------+---------------+ | 1 | 123 | Artikl br. 1 | 100 | 2000 | Germany | | 2 | 124 | Artikl br. 2 | 100 | 102 | Srbija | | 3 | 127 | Artikl br. 3 | 100 | 170 | USA | | 4 | 127 | Artikl br. 4 | 2010 | 2000 | Germany | | 5 | 132 | Artikl br. 5 | 150 | 140 | Switzerland | | 6 | 135 | Artikl br. 6 | 400 | 390 | France | | 7 | 137 | Artikl br. 7 | 260 | 250 | Dansk | +----+------------+--------------+------+----------+---------------+ 7 rows in set (0.00 sec)
- 114 -
http://slidepdf.com/reader/full/praktikum-baze-sql
123/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
6.5. Uklanjanje podataka Funkcija uklanjanja podataka u bazi putem SUBP-a se odnosi na uklanjanje podataka iz neke (jedne ili više) od tabela u bazi podataka. Moguće je ukloniti samo kompletne redove tabela (uklanjanje vrednosti parametara zapisa se vrši pomoću naredbe UPDATE). Uklanjanje podataka se u SQL jeziku vrši pomoću naredbe DELETE. DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
Slika 7.5 Dokumentovana struktura naredbe DELETE za jednu tabelu Osnovni oblik komande DELETE izgleda ovako: DELETE FROM Artikl;
i njome su uklonjeni svi zapisi iz tabele Artikl. Ukoliko želimo da uklanjenje ograni čimo samo na određene zapise (redove) moramo koristiti klauzulu WHERE (videti deo 4.3.1): DELETE FROM Artikl WHERE ZemljaPorekla='Germany';
Parametar LIMIT (videti deo 4.3.3) služi za ograničavanje broja kolona na koje ćemo primeniti uklanjanje: DELETE FROM Artikl LIMIT 10;
- 115 -
http://slidepdf.com/reader/full/praktikum-baze-sql
124/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7. DCL ( Data Control Language) Osim manipulacije podacima (DML), jedna od bitnih karakteristika SUBPa je kontrola podataka (DCL), pre svega kontrola pristupa podacima. Kontrola pristupa podacima obično podrazumeva mogućnost kreiranja više korisničkih profila (naloga) sa određenim pristupnim podacima (korisničko ime i lozinka) i pridruženim privilegijama. Neki SUBP imaju mogu ćnost povezivanja internih korisničkih naloga i privilegija sa nekim spoljnim sistemom za proveru autentičnosti korisnika (npr. povezivanje sa sistemskim nalozima, Active Directory-jem i sl.). korisni MySqlčko SUBP interni sistem korisničkih naloga (sa parametrima: ime,poseduje lozinka, mrežna lokacija klijenta) sa privilegijama (izlistani u tabeli 5.1) na nivou jedne ili više baza, tabela i/ili kolona. Podaci vezani za korisničke naloge i privilegije su skladišteni u sistemskoj bazi "mysql". Osnovne naredbe za rad sa korisničkim nalozima:
●
●
●
●
CREATE USER RENAME USER DROP USER SET PASSWORD
Kreiranje novih korisničkih naloga nije neophodno zasebno obaviti pre izmene privilegija već se novi nalog (ili nova varijanta postojećeg naloga) može kreirati samom dodelom privilegija. Prve tri naredbe su dostupne počev od verzije MySql-a 5.0 sa odre đenim izmenama u verziji 5.0.2. Osnovne naredbe za rad sa privilegijama su:
●
GRANT
●
●
REVOKE FLUSH PRIVILEGES
- 116 -
http://slidepdf.com/reader/full/praktikum-baze-sql
125/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.1. Naredba CREATE USER Naredba CREATE USER služi za kreiranje novih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na ovu privilegiju i korisnici koji imaju INSERT privilegiju za sistemsku mysql bazu podataka. CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
Slika 8.1 Dokumentovana struktura naredbe CREATE USER Osnovni oblik korišćenja ove naredbe je: CREATE USER 'korisnik';
Ukoliko želimo da korisničkom nalogu pridružimo i hostname računara sa koga je dozvoljen pristup, naredba je: CREATE USER '
[email protected]';
Ukoliko želimo da korisničkom nalogu pridružimo i lozinku, naredba je: CREATE USER 'korisnik' IDENTIFIED BY 'lozinka';
Ukoliko želimo da istovremeno kreiramo više korisničkih naloga, naredba je: CREATE USER 'korisnik1' IDENTIFIED BY 'lozinka1', 'korisnik2' IDENTIFIED BY 'lozinka2';
- 117 -
http://slidepdf.com/reader/full/praktikum-baze-sql
126/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.2. Naredba RENAME USER Naredba RENAME USER služi za izmenu postojećih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju UPDATE privilegiju za sistemsku mysql bazu podataka. RENAME USER old_user TO new_user [, old_user TO new_user] ...
Slika 8.2 Dokumentovana struktura naredbe RENAME USER Osnovni oblik korišćenja ove naredbe je: RENAME USER 'korisnik1' TO 'korisnik2';
- 118 -
http://slidepdf.com/reader/full/praktikum-baze-sql
127/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.3. Naredba DROP USER Naredba DROP USER služi za izmenu postojećih korisničkih naloga na SUBP. Pravo na korišćenje ove naredbe ima administrator sistema kao i korisnici koji imaju globalno pravo na CREATE USER privilegiju i korisnici koji imaju DELETE privilegiju za sistemsku mysql bazu podataka. DROP USER user [, user] ...
Slika 8.3 Dokumentovana struktura naredbe DROP USER Osnovni oblik korišćenja ove naredbe je: DROP USER 'korisnik1';
Ukoliko želimo da istovremeno uklonimo više korisničkih naloga, naredba je: DROP USER 'korisnik1', 'korisnik2';
- 119 -
http://slidepdf.com/reader/full/praktikum-baze-sql
128/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.4. Naredba SET PASSWORD Naredba SET PASSWORD služi za promenu pristupne lozinke postojećih korisničkih naloga na SUBP. Ovom naredbom je moguće promeniti lozinku za sopstveni nalog kao i lozinku za ostale korisničke naloge ukoliko aktivni korisnički nalog ima UPDATE privilegiju za sistemsku mysql bazu podataka. SET PASSWORD [FOR user] = PASSWORD('some password')
Slika 8.4 Dokumentovana struktura naredbe SET PASSWORD Osnovni oblik korišćenja ove naredbe je: SET PASSWORD = PASSWORD('nova lozinka');
Ukoliko želimo da promenimo lozinku za tuđi korisnički nalog, naredba je: SET PASSWORD FOR 'korisnik2' = PASSWORD('nova lozinka');
- 120 -
http://slidepdf.com/reader/full/praktikum-baze-sql
129/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.5. Dodela privilegija (GRANT) Naredba GRANT omogućava administratorima SUBP-a da određenom koričkom nalogu dodele određene privliegije nad određenim objektima baze podataka. S obzirom na to da ukoliko se privilegije dodeljuju nalogu koji ne postoji na SUBP on se automatski kreira, ovom naredbom je moguće i kreirati nove korisničke naloge. Za korišćenje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je moguće dodeliti privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom nalogu. GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE NONE | [{SSL| X509}] [CIPHER 'cipher' [AND]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']] [WITH with_option [with_option] ...] object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
Slika 8.5 Dokumentovana struktura naredbe GRANT - 121 -
http://slidepdf.com/reader/full/praktikum-baze-sql
130/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Osnovna dodela privilegija se vrši naredbom: GRANT ALL ON database_name.table_name TO 'korisnik@hostname' IDENTIFIED BY 'lozinka';
Dodela privilegija na globalnom nivou (svim objektima - bazama, tabelama, kolonama -u SUBP) se vrši naredbom: GRANT ALL ON *.* TO 'korisnik' IDENTIFIED BY 'lozinka'
Dodela privilegija na globalnom nivou baze podataka se vrši naredbom: GRANT ALL ON db_name.* TO 'korisnik' IDENTIFIED BY 'lozinka'
Dodela privilegija na globalnom nivou tabele u bazi se vrši naredbom: GRANT ALL ON db_name.table_name TO 'korisnik' IDENTIFIED BY 'lozinka'
Takođe, moguća je (mada se retko koristi) dodela privilegija i na nivou kolone u tabeli kao i rutine.
- 122 -
http://slidepdf.com/reader/full/praktikum-baze-sql
131/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
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
Značenje Sets all simple privileges except GRANT OPTION Allows use of ALTER TABLE Allows use of CREATE TABLE Allows use of CREATE TEMPORARY TABLE Allows use of CREATE VIEW Allows use of DELETE Allows use of DROP TABLE Allows the user to run stored procedures (MySQL 5.0) Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE Allows use of CREATE INDEX and DROP INDEX Allows use of INSERT Allows use of LOCK TABLES on tables for which you have the SELECT privilege Allows use of SHOW FULL PROCESSLIST Not yet implemented Allows use of FLUSH Allows the user to ask where the slave or master servers are Needed for replication slaves (to read binary log events from the master) Allows use of SELECT SHOW DATABASES shows all databases Allows use of SHOW CREATE VIEW Allows use of mysqladmin shutdown Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached Allows use of UPDATE Synonym for ``no privileges'' Allows privileges to be granted
Tabela 8.1 Moguće vrednosti za dodelu odnosno oduzimanje privilegija
- 123 -
http://slidepdf.com/reader/full/praktikum-baze-sql
132/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.6. Oduzimanje privilegija (REVOKE) Naredba REVOKE omogućava administratorima SUBP-a da određenom koričkom nalogu oduzmu određene privliegije nad određenim objektima baze podataka. Za korišćenje ove naredbe neophodno je biti administrator sistema ili imati GRANT OPTION privilegiju kojom je moguće oduzeti privilegije iz skupa privilegija koje su dodeljene aktivnom korisničkom nalogu. REVOKE priv_type ... [(column_list)] [, priv_type [(column_list)]] ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ...
Slika 8.6 Dokumentovana struktura naredbe REVOKE Osnovno oduzimanje privilegija se vrši naredbom: REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'korisnik';
- 124 -
http://slidepdf.com/reader/full/praktikum-baze-sql
133/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
7.7. Primena izmena (FLUSH) Naredba FLUSH služi za ponovo učitavanje parametara sistema koji se nalaze keširani u memoriji. Za izvršavanje ove naredbe potrebno je imati RELOAD privilegiju. FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_option [, flush_option] ...
Slika 8.7 Dokumentovana struktura naredbe FLUSH
Flush_option:
Objašnjenje:
HOSTS
Pražnjenje keša host tabele
DES_KEY_FILE
Ponovno učitavanje DES ključa
LOGS
Zatvaranje i otvaranje svih log fajlova
MASTER
Brisanje i ponovno kreiranje svih log fajlova
PRIVILEGES
Ponovno učitavanje svih privilegija iz GRANT tabele
QUERY CACHE
Defragmentacija keširanih upita
SLAVE
Resetovanje parametara
STATUS
Resetovanje svih statusnih promenljivu na 0
USER_RESOURCES
Resetovanje svih resursa iz prethodnih sati na 0
svih
replikacija
sekundardnih
Tabela 8.2 Moguće vrednosti za flash_option parametar
- 125 -
http://slidepdf.com/reader/full/praktikum-baze-sql
134/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
8. Zadaci za vežbu DML 1.
Uneti podatke iz sledeće tabele u tabelu Dobavljac: +----+------------+------------------+-----------+ | rb | Naziv | Adresa | Telefon | +----+------------+------------------+-----------+ | 1 | Dobavljac1 | Beogradska 5 | 64123456 | | 2 | Dobavljac2 | Bac49 | 11256782 | | 3 | Dobavljac3 | Uzicka 42 | 62564778 | | | Dobavljac4 | Knez Mihajlova 2 | 112345812 | | 4 5 | Dobavljac5 | Nehruova 62b | 637469923 | +----+------------+------------------+-----------+ 5 rows in set (0.00 sec)
2.
Uneti podatke iz sledeće tabele u tabelu Magacin: +-----+---------------+-----------+-----------+ | rb | Adresa | Telefon | Kapacitet | +-----+---------------+-----------+-----------+ | 124 | bac26 | 11145856 | 2000 | | 127 | Beogradska 5 | 635844535 | 1000 | | 129 | Dalmatinska43 | 633463 | 1500 | | 132 | Vojvodanska2 | 642888158 | 460 | | 135 | Francuska6 | 11136845 | 1200 | | 137 | Nusiceva24 | 23425698 | 900 | +-----+---------------+-----------+-----------+ 6 rows in set (0.00 sec)
3. Prikazati sve podatke sa svim poljima iz tabele Magacin 4. Prikazati sve podatke sa svim poljima iz tabele Dobavljac 5. Prikazati sve podatke iz tabele Dobavljac u sledećem redosledu polja:Naziv, Rb, Telefon, Adresa 6. Prikazati sve podatke iz tabele Magacin sortirane po polju Kapacitet po opadajućem redosledu 7.Prikazati iz tabele Dobavljac sledeća polja: Rb, Adresa, Telefon, za dobavljača koji se nalazi u Dalmatinskoj 43 8. Prikazati iz tabele Magacin prva četiri zapisa - 126 -
http://slidepdf.com/reader/full/praktikum-baze-sql
135/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
9.Prikazati iz tabele Dobavljac zapise od 2 do 4 10.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude 2000 11.Izmeniti tabelu Magacin tako da polje Kapacitet bude 500 za magacin koji se nalazi u Francuskoj 6 12.Izmeniti tabelu Magacin tako da polje Kapacitet kod svih zapisa bude bude povećano za 30 % 13.Izmeniti tabelu Magacin tako da polje Kapacitet bude umanjeno za 20 % prva dva zapisa 14.Izmeniti tabelu Magacin tako da polje Kapacitet bude povećano za 50 jedinica kod magacina sa rednim brojem 2, 3 i 4 15.Ukloniti poslednji zapis iz tabele Dobavljac 16.Ukloniti sve zapise iz tabele Magacin
- 127 -
http://slidepdf.com/reader/full/praktikum-baze-sql
136/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
9. DODATAK 9.1. Izrazi i funkcije Pored prikazivanja prostih vrednosti memorisanih u tabelama baze podataka, SQL ima više funkcija koje mogu biti korišćene za dobijanje sumarnih informacija, kao i mogućnost primene aritmetičkih funkcija i funkcija nad stringovima (nizovima karaktera).
Aritmetičke funkcije Funkcije za dobijanje sumarn.ih informacija su: AVG (atribut) SUM (atribut) MIN (atribut) MAX (atribut)
- izračunava srednju vrednost - izračunava ukupnu vrednost - nalazi minimalnu vrednost - nalazi maksimalnu vrednost
Ove funkcijesu definisane nad numeričkim kolonama. Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva oblika: COUN T (*) - nalazi broj n-torki u grupi COUNT (atribut) - nalazi NOT-NULL vrednosti kolone
Funkcije nad nizom karaktera U SQL-u su definisane brojne funkcije nad kolonama tipa character. Najčešće se primenjuju sledeće: -
stringi || string2 LENGTH (string) UPPER (str) LOWER (str) TO_NUM (str) TO_CHAR (str)
- spaja stringove karaktera - nalazi dužinu stringa - menja sva mala slova u velika - menja sva velika slova u mala - pretvara niz karaktera (numeričkih) u broj - pretvara broj u niz karaktera
- 128 -
http://slidepdf.com/reader/full/praktikum-baze-sql
137/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
SQL podržava sledeće aritmetičke funkcije: POWER (broj. e) - diže broj na e-ti stepen ROUND (broj [.d]) - zaokružuje broj na d decimala TRUNC (broj [.d]) - odbacuje ostatak od d-tog decimalnog mesta ABS (broj) - naiazi apsolutnu vrednos; broja SIGN (broj) - daje +1 ako je broj >0. 0 ako je broj =0, -1 ako je broj <0. MOD (broji, broj2) - izračunava broji moduo broj2 SQRT (broj) - nalazi pozitivan kvadratni koren broja
- 129 -
http://slidepdf.com/reader/full/praktikum-baze-sql
138/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
10. DB Desinger 4.0 Ovo je program koji se koristi za grafi čko predstavljanje elemenata baze podataka (tabela i veza izmedju tabela). Ovaj program je potpuno besplatan ali je prekinuto sa njegovim razvojem i taj posao je preuzeo tim koji je razvio i MySQL SUBP. Startovanje ovog programa je klasično kao i za bilo koji drugi Windows program Start meni, pa zatim Programs, pa onda fabForce pa na kraju
DBDesigner 4. Posle ovoga će se na ekranu pojaviti prozor kao na slici:
Slika 11.1 Početni prozor DBDesigner-a Ovo je početni prozor koji se pojavljuje odmah posle startovanja ovog programa. Na njemu možete videti da je ovo program koji liči na mnoge druge programe za windows to jest ima klasi čan sistem menija (na primer: meni File se koristi kao i u ostalim programima za otvaranje postojećeg Open ili čuvanje Save projekta, kao i New za kreiranje novog praznog projekta) kao i neki meniji koji su specifični za ovakav program. - 130 -
http://slidepdf.com/reader/full/praktikum-baze-sql
139/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ukoliko ste prvi put startovali program automatski je otvoren novi projekat na kome možete raditi i kasnije ga sačuvati, a ukoliko ste već radili u ovom programu izaberite iz menije File opciju New posle čega možete početi da radite na projektu. Da bi ste počeli da radite na kreiranju grafičke predstave vaše baze podataka prvo je potrebno kreirati novu regiju u kojoj će se nalaziti elementi vaše baze podataka. To će te uraditi tako što će te izabrati opciju New Region koja se nalazi uz levu ivicu prozora programa, pogledajte sledeću sliku:
Slika 11.2 Kreiranje nove regije
- 131 -
http://slidepdf.com/reader/full/praktikum-baze-sql
140/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Posle izbora ove opcije kao što možete pro čitati na prethodnoj slici potrebno je u glavnom prozoru programa nacrtati željenju regiju upotrebom levog tastera miša, kao na sledećoj slici:
Slika 11.3 Roze bojom označena je nova regija Kao što možete videti na slici, kreirana je nova regija za vašu bazu podataka. Po podrazumevanoj vrednosti program je regiji dao ime Region_01 a vi to možete promeniti tako što će te kliknuti desnim klikom negde na regiji i zatim iz menija izabrati opciju Edit Object posle čega će se na ekranu pojaviti prozor kao na slici:
- 132 -
http://slidepdf.com/reader/full/praktikum-baze-sql
141/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 11.4 Promena imena regije Kao što možete videti na slici u polje Regionname možete upisati novo ime za regiju, upišite na primer Regija1 i bi će promenjeno ime regiji. Ovde je takodje moguće promeniti i boju za određenu regiju a podrazumevana je crvena (Red), ukoliko to želite da promenite možete kliknuti na strelicu pored i izabrati neku drugu boju.
- 133 -
http://slidepdf.com/reader/full/praktikum-baze-sql
142/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Posle kreiranja regije možete pristupiti kreiranju elemenata vaše baze podataka. Za početak će te kreirati prvu tabelu. Da bi ste to uradili potrebno je izabrati opciju New Table koja se nalazi odmah ispod opcije New Region koju ste već ranije koristili, pogledajte sledeću sliku:
Slika 11.5 Kreiaranje nove tabele Posle izbora ove opcije potrebno je kliknuti levim tasterom miša negde na već kreiranu regiju posle čega će se pojaviti tabela kao na slici:
Slika 11.5 Prva tabela je kreirana u regiji - 134 -
http://slidepdf.com/reader/full/praktikum-baze-sql
143/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Kao što možete videti na slici kreirana je prva tabela u vašoj regiji. Program je automatski dao ime tabeli ime Table_01 a vi to možete odmah promeniti tako što će kliknuti dva puta na tabelu ili tako što će te kliknuti desnim klikom na tabelu pa zatim iz padaju ćeg menija izabrati Edit Object posle čega će se pojaviti prozor kao na slici:
Slika 11.6 Dijalog za Izmenu svojstava tabele Kao što možtete videti na slici ovde možete promeniti ime tabeli tako što će te u polje Table Name ukucati željeno ime. U našem slu čaju prva tabela će se zvati Artikl pa to unesite u ovo polje. Ovaj dijalog se ne koristi samo za izmenu imena tabele već i svih njenih svojstava. Ovde se dodaju ili menjaju polja u tabelu, podešavaju svojstva odre đenih polja, postavljaju ili uklanjaju ključevi za izabranu tabelu. Ono što je ovde potrebo uraditi pošto je ovo prazna tabela jeste kreirati određena polja za izabranu tabelu.
- 135 -
http://slidepdf.com/reader/full/praktikum-baze-sql
144/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
To će te uraditi tako što će te kliknuti levim tasterom miša na prvo mestu u kolonu Column Name i tu ukucati ime za prvu kolonu odnosno polje, unesite rb jer je to prvo polje koje se nalazi u tabeli Artikl, zatim kliknite na taster Enter posle čega će se postaviti podrazumevana polja u ostalim kolonama za ovo polje, pogledajte sledeću sliku:
Slika 11.7 Kreiranje kolona (polja) za izabranu tabelu Kao što možete videti na slici, za polje rb je postavljen atribut DataType automatski na INTEGER, ukoliko želite ovo da promenite kliknite na strelicu pored posle čega će se pojaviti izlistane moguće vrednosti za ovo polje gde je potrebno izabrati željenu vrednost, pogledajte sledeću sliku:
- 136 -
http://slidepdf.com/reader/full/praktikum-baze-sql
145/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 11.8 Promena tipa polja za izabranu kolonu (polje) U ovoj listi možete izabrati tip polja koji vam je potreban, u ovom slučaju je potrebno da ovo polje bude integer pa će te ga tako i postaviti. Na slici možete primetiti i mali žuti ključ koji se nalazi u koloni Column Name ispred imena kolone. Ovo je oznaka da je ovo primarni klju č a DBDesigner je automatski postavio ovaj atribut koji kasnije možete ukloniti ukoliko želite da promenite primarni ključ, takođe možete primetiti u donjem delu da stoje informacije o primarnom ključu u delu Indices.
- 137 -
http://slidepdf.com/reader/full/praktikum-baze-sql
146/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Na prethodno opisan način kreirajte i sledeće kolone sa tipom polja kao na sledećoj slici:
Slika 11.9 Tabela Artikl Na isti način kao što se kreirali tabelu Artikl kreirati i ostale tabele sa odgovarajućim poljima kao što se može videti na sledećoj slici:
Slika 11.10 Sve tabele koje je potrebno kreirati - 138 -
http://slidepdf.com/reader/full/praktikum-baze-sql
147/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Sada se u bazi podataka nalaze sve tabele koje su vam potrebne za dalji rad. Kao što se na slici može videti tabele nisu medjusobno povezane, a kao što je poznato bazu podataka čini više medjusobno povezanih tabela. Sada je potrebno povezati tabele ne čim što je poznato kao relacija odnosno veza. Ovde je potrebno reći da postoji više tipova relacija I to 1:1, 1:m I m:n. Relacija tipa 1:1 znači da svakom zapisu u prvoj tabeli odgovara jedan I samo jedan zapis u drugoj tabeli. Relacija tipa 1:m zna či da svakom zapisu u prvoj tabeli odgovara jedan ili više zapisa u drugoj tabeli. I na kraju relacija tipa m:n je takav tip relacije gde za više zapisa u prvoj tabeli može postojati I više zapisa u drugoj tabeli. Prva dva tipa relacia je lako napraviti dok je za treću potrebno kreirati veznu tabelu koja sadrži primarne ključeve prve I druge tabele.
Kreiranje relacije tipa 1:1 Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:1 Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
Slika 11.11 Kreiranje relacije 1:1
- 139 -
http://slidepdf.com/reader/full/praktikum-baze-sql
148/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Kreiranje relacije tipa 1:n Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New 1:n Non-Identifyng-Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
Slika 11.12 Kreiranje relacije 1:n Kreiraćemo dve relacije na ovaj način. Prva relacije je izmedju tabela Magacin i Artikl. Da bi kreirali ovu relaciju izabraćemo opciju koja je na prethodnoj slici a zatim kliknuti na tabelu Magacin pa onda na tabelu Artikl posle čega će se pojaviti relacija kao na slici:
Slika 11.13 Prva relacija je kreirana
- 140 -
http://slidepdf.com/reader/full/praktikum-baze-sql
149/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ako pogledate sliku možete videti da je relacija uspostavljena, pored toga automatski je SUBP postavio njeno ime na Rel_01 i formirao neophodan strani ključ u tabeli Artikl pod imenom Artikl_FKIndex1. Ukoliko želite da izmenite svojstva relacije kliknite desnim klikom miša na nju i iz padajućeg menija izaberite Edit Object posle čega će se pojaviti prozor kao na slici:
Slika 11.15 Izmena svojstava relacije
- 141 -
http://slidepdf.com/reader/full/praktikum-baze-sql
150/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ovde je moguće postaviti novo ime za relaciju umesto podrazumevanog, tako što će te u polje Relation Name uneti Relacija1 posle čega će ime biti promenjeno. Ovde je takođe moguće promeniti i tip relacije u listi koja se dobija levim klikom miša na strelicu u polju Relation Kind, kao i to da li će relacija biti vidljiva ili ne Visible. Druga relacija tipa 1:n je izmedju tabela Artikl i Kupac i nju će te kreirati na isti način kao i prethodnu. Posle izbora opcije New 1:n NonIdentifyng-Relation potrebno je prvo kliknuti levim tasterom miša na tabelu Artikal pa onda na tabelu Kupac posle čega će relacija biti kreirana kao i spoljni ključ (FK) u drugoj tabeli, ovo je ilustrovano sledećom slikom:
Slika 11.16 Druga relacija je kreirana
- 142 -
http://slidepdf.com/reader/full/praktikum-baze-sql
151/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Kao što možete videti relacija je kreirana, pored toga automatski je SUBP postavio njeno ime na Rel_02 i formirao neophodan strani ključ u tabeli Kupac pod imenom Kupac_FKIndex1. Ukoliko želite da izmenite svojstva relacije kliknite desnim klikom miša na nju i iz padaju ćeg menija izaberite Edit Object i promeniti njeno ime u Relacija2.
Kreiranje relacije tipa n:m Za kreiranje ovakvog tipa relacija potrebno je izabrati opciju New n:m Relation koja se nalazi uz desnu ivicu glavnog prozora programa, pogledajte sliku.
Slika 11.17 Kreiranje relacije n:m
- 143 -
http://slidepdf.com/reader/full/praktikum-baze-sql
152/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Sada će te kreirati jednu relaciju tipa n:m izmedju tabela Dobavljac i Artikl tako što će te izabrati opciju sa prethodne slike, a zatim kliknuti levim tasterom na tabelu Dobavljac pa onda na tabelu Artikl posle čega će relacija biti kreirana kao i svi potrebni elementi, pogledajte sledeću sliku:
Slika 11.18 Treća relacija je kreirana Kao što možete videti na slici relacija je kreirana, ali pošto je ovo relacija n:m kreirana je i nova tabelaOva (vezna tabela), ve ć ranije pomenutai u tekstu o tipovima relacija. tabela sadržikoja dvajepolja Dobavljac_rb Artikl_rb. Ako pogledate tabele Dobavljac i Artikl možete primetiti da su to kopije primarnih ključeva ove dve tabele. SUBP je automatski kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl što je vrlo lako uočiti zašto, naravno zbog toga što je ovo vezna tabela koja spaja ove dve tabele. Takođe automatski su kreirane i dve relacije i dodeljena
- 144 -
http://slidepdf.com/reader/full/praktikum-baze-sql
153/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
im imena Rel_03 i Rel_04. Na način koji je objašnjen ranije promenite imena ovih relacija u Relacija3 i Relacija4. Sada je potrebno promeniti i neka svojstva vezne tabele. Pošto je ovde u pitanju tabela kao i svaka druga bez obzira što ona u ovoj relaciji služi kao vezna, potrebno je kliknuti desnim klikom na nju i zatim iz padajućeg menija izabrati Edit Object, posle ćega će se na ekranu pojaviti prozor kao na sledećoj slici:
Slika 11.19 Izmena svojstava vezne tabele U polje Table Name upišite Dobavljač _Artikl da bi promenili ime vezne tabele, zatim u polju za rad sa klju čevima u delu prozora Indices dva puta kliknite levim tasterom na ključ Dobavljac_Has_Artikl_FKIndex1 i na ekranu će se pojaviti prozor kao na slici:
- 145 -
http://slidepdf.com/reader/full/praktikum-baze-sql
154/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Slika 11.20 Promena imena ključa U polje Name of Index unesite kao na slici Dobavljac_Artikl_FKIndex1 da bi promenili ime prvog klju ča, isti postupak ponovite ponovo i promenite ime ključa Dobavljac_Artikl_FKIndex2.
Dobavljac_has_Artikl_FKIndex2
u
Ako ste sve uradili kako treba kona čna grafička prezentacija ove baze podataka izgledaće kao na sledećoj slici:
Slika 11.21 Konačna shema BP - 146 -
http://slidepdf.com/reader/full/praktikum-baze-sql
155/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
I na kraju, sada kada imamo kompletnu bazu podataka grafi čki predstavljenu, kao što se može videti na prethodnoj slici, koja se sastoji od 5 tabela koje su medjusobno povezane, mogu će je direktno ovakvu grafičku predstavu uz pomoć DBDesigner-a automatski prevesti u SQL naredbe. Da bi to uradili potrebno je prvo konektovati se na određenu bazu podataka koja je prethodno kreirana u MySQL-u, a to se radi uz pomoć menija Database koji možete pogledati kako izgleda na sledećoj slici:
Slika 11.22 Database meni Da bi se konektovali na određenu bazu potrebno je iz prethodnog menija izabrati Connect to Database, posle čega će se pojaviti prozor kao na slici:
Slika 11.23 Konektovanje na postojeću MySQL bazu podataka
- 147 -
http://slidepdf.com/reader/full/praktikum-baze-sql
156/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Ovde je već kreirana konekcija na bazu podataka koja se zove test. Ukoliko želite da uspostavite konekciju sa ovom bazom potrebno je samo da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle čega će se pojaviti prozor gde će se od vas tražiti da unesete User Name i Password. U slučaju da želite da kreirate novu konekciju potrebno je da izaberete opciju New Database Connection posle čega će se na ekranu pojaviti prozor kao na sledećoj slici:
Slika 11.24 Kreiranje nove konekcije Kao što vidite na slici, potrebno je zadati u polju Connection Name ime za novu konekciju koju želite da kreirate, zatim u polje Driver je potrebno izabrati tip drajvera koji će se koristiti (ovde možete koristiti ili MySQL drajver koji ne radi baš najbolje ili još bolje klasičan ODBC drajver, s tim što je u tom slu čaju potrebno u Control Panel-u konfigurisati ODBC). U polju Hostname treba da stoji localhost ukoliko je baza na istom računaru kao i klijent ili određeni IP broj ukoliko je u pitanju baza na drugom računaru. Potrebno je u polju Database Name - 148 -
http://slidepdf.com/reader/full/praktikum-baze-sql
157/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
uneti ime baze koja je prethodno kreirana uz pomoć MySQL-a, kao i polja User Name i Password koji su neophodni za pristup bazi podataka. I na kraju se nalazi polje Description koje nije neophodno popunjavati jer služi čisto kao neki dodatni opis i nema drugu funkciju. Posle izbora opcije OK u donjem desnom uglu prozora pojaviće se nova konekcija sa imenom koje će te izabrati a zatim opciju Connect kao što je već ranije objašnjeno. Sledeće što je potrebno uraditi posle uspostavljanja konekcije jeste izbor opcije Database Synchronization iz menija Database (pogledajte sliku 22) i po izboru ove opcije pojaviće se prozor kao na slici:
Slika 11.25 Sinhronizacija sa bazom podataka
- 149 -
http://slidepdf.com/reader/full/praktikum-baze-sql
158/159
5/17/2018
PraktikumBazeSQL-slidepdf.com
Kao što se može videti na slici DBDesigner će na ovaj način kreirati pet tabela i dodati ih na postojećih 23 koliko ih već ima u bazi podataka (ovo će se razlikovati u zavisnosti od toga na koju bazu ste bili konektovani pre poziva ove opcije). Sve što je potrebno uraditi da bi se izvršila sinhronizacija sa izabranom bazom podataka jesti kliknuti na opciju Execute posle čega će se izvršiti potrebne SQL naredbe automatski i na taj način kreirati određene elemente, ili ukoliko oni već postoje, izmeniti ih ukoliko je to potrebno.
- 150 -
http://slidepdf.com/reader/full/praktikum-baze-sql
159/159