Professional Documents
Culture Documents
Praktikum Baze SQL
Praktikum Baze SQL
Praktikum Baze SQL
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/235735105
CITATIONS READS
0 2,539
3 authors:
Aleksandar Jevremovic
Singidunum University
66 PUBLICATIONS 65 CITATIONS
SEE PROFILE
Some of the authors of this publication are also working on these related projects:
Sinteza - International Scientific Conference on ICT and Data Related Research View project
All content following this page was uploaded by Igor Franc on 21 May 2014.
BAZE PODATAKA
- PRAKTIKUM -
Prvo izdanje
Beograd 2006.
Autori:
Prof. dr Mladen Veinović
Igor Franc
Aleksandar Jevremović
Recenzent:
Prof. dr Milan Milosavljević
Izdavač:
UNIVERZITET SINGIDUNUM
FAKULTET ZA POSLOVNU INFORMATIKU
Za izdavača:
Prof. dr Milovan Stanišić
Dizajn korica:
Aleksandar Mihajlović
Goran Latinović
Godina izdanja:
2006.
Tiraž:
250 primeraka
Štampa:
CICERO-print
Beograd
SADRŽAJ:
1.10. Transakcije............................................................................... - 52 -
1.10.1. Osobine transakcija ................................................................................... - 53 -
1.10.2. COMMIT i ROLLBACK ......................................................................... - 54 -
1.10.3. Konkurentno izvršavanje transakcija ........................................................ - 55 -
2. O SQL-U ............................................................................... - 61 -
1.1. Uvod
-1-
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.
-2-
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).
-3-
kolekcija podataka, koja postoji jedno određeno vreme, koja se održava i
koju koristi više korisnika ili programa.
-4-
1.2.1. Podatak
-5-
1.2.2. Informacija
-6-
Slika 1.2 Tabelarni prikaz podataka iz BP - informacija o upisu
-7-
Broj upisanih studenata po školama
Gimnazija;
Ostali; 63 58
Gimnazija
Tehnička škola
Ekonomska škola
Ekonomska Ostali
škola; 45 Tehnička
škola; 79
300
245
250
198
200
100
76
50
30
0
2001 2002 2003 2004 2005
-8-
Slika 1.4 Obradom prikupljenih podataka nastaje informacija
-9-
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.
- 10 -
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.
Aplikacija Y
Aplikacija X Aplikacija Z
Baza podataka
- 11 -
1.3. Klasičan sistem zasnovan na datotekama
Aplikacija Y
Aplikacija X Aplikacija Z
Datoteka X1 Datoteka Z1
Datoteka Y4
Datoteka X2 Datoteka Z2
Datoteka Y5
Datoteka X3 Datoteka Z3
Datoteke – podaci na disku
- 12 -
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.
- 13 -
1.3.1. Nedostaci sistema zasnovanog na datotekama
- 14 -
• Ograničenost deljenja podataka
Korišćenjem klasičnog sistema zasnovanog na datotekama, svaki
proces ima svoje datoteke i korisnici nemaju šansu da međusobno
dele podatke sa korisnicima iz drugih procesa. Na slici 1.7 se vidi da
radnici u računovodstvu imaju pristup samo procesu naplate, dok
nemaju pristup procesima porudžbina i plata. Menadžeri su imali
velike probleme pri sastavljenju izveštaja za koje su im bili potrebni
podaci iz različitih procesa, jer bi se često desilo da su dokumenta
nekompatibilna i da je potrebno dosta programiranja kako bi se svi ti
podaci sakupili u jedan izveštaj. Takođe, dodatni problem je bio u
tome što su se željeni podaci često nalazili u različitim odeljenjima
organizacije.
• Dugo vreme za razvoj
Sa klasičnim sistemom zasnovanom na datotekama postoji mala
šansa za korišćenje prethodnih razvojnih dostiguća. Svaka nova
aplikacija zahteva od projektanta da krene od nule. Svaki put je
neophodno definisati nove formate i opise podataka i pisati kod za
pristup podacima za svaki program. Ovako veliko potrebno vreme za
razvoj nije u skladu sa današnjim poslovnim potrebama, gde je svaki
minut bitan da bi se postigao uspeh.
• Teško održavanje programa
Skup svih prethodno navedenih nedostataka dovodi do preterane
potrebe za održavanjem programa. Čak 80% budžeta predviđenog za
razvoj sistema zasnovanog na datotekama odlazi na njegovo
održavanje. Zbog toga, naravno, ostaje jako malo prostora za razvoj
novih aplikacija.
- 15 -
1.4. Pristup zasnovan na bazama podataka
- 16 -
1.4.1. Prednosti pristupa zasnovanog na bazama podataka
- 17 -
• 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:
- 18 -
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.
- 19 -
• Troškovi i složenost instaliranja, upravljanja i rada sistema sa
bazama podataka
Višekorisnički sistem za upravljanje bazama podataka je veliki i
složen softver koji u startu mnogo košta, zahteva obučeno osoblje
za instaliranje i rad i ima značajne godišnje troškove za
održavanje i tehničku podršku. Instaliranje ovakvog sistema može
zahtevati nadogradnju hardvera. Stalne obuke se podrazumevaju,
da bi se mogle pratiti nove verzije i nadogradnje softvera. Takođe
se može pojaviti potreba za dodatnim i skupljim softverom za
baze podataka radi veće sigurnosti podataka.
• Troškovi prilagođavanja (konvertovanja) podataka
Termin nasleđeni sistemi se uglavnom koristi kada se govori o
starijim aplikacijama u preduzeću koje su bazirane na datotečnom
pristupu ili starijim bazama podataka. Troškovi prilagođavanja
ovakvih starijih sistema za rad sa modernim bazama podataka
(mereni u novcu, vremenu i zahtevnosti posla) često deluju kao
velika prepreka za preduzeće.
• Potreba za izradom sigurnosnih kopija i oporavkom
podataka (backup)
Deljena baza podataka preduzeća uvek mora biti tačna i dostupna.
To zahteva razvijanje i korišćenje jasnih procedura izrade
sigurnosnih kopija kao i oporavak baze podataka kada neko
oštećenje nastane. U današnjem okruženju, gde postoje raznovrsni
bezbednosni rizici, rešavanje ovog problema je od izuzetne
važnosti. Moderan sistem za upravljanje bazama podataka obično
sam obavlja izradu sigurnosnih kopija i oporavak podataka u
slučaju havarija.
• Konflikti u organizaciji
Deljena baza podataka zahteva saglasnost u vezi sa definicijama i
vlasništvom podataka, kao i utvrđenu osobu ili osobe odgovorne
za održavanje podataka. Iskustvo je pokazalo da nesuglasice u
pogledu definicija podataka, formata i kodiranja podataka, prava
na ažuriranje deljenih podataka i sl. su česta i vrlo teška tema za
rešavanje. Da bi se ovi problemi rešili potrebno je da je
organizacija u potpunosti posvećena uvođenju/korištenju pristupa
zasnovanog na bazama podataka. Zatim je potreban sposoban
administrator baze podataka kao i smislen pristup razvoju baza
- 20 -
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.
- 21 -
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.
Radnu grupu čini relativno mali broj ljudi koji sarađuju na jednom
projektu ili aplikaciji ili na grupi sličnih projekata ili aplikacija. Radna
grupa obično sadrži desetak ljudi. Oni mogu biti uključeni u npr.
planiranje, projektovanje ili razvoj novog računarskog programa. Baza
podataka za radne grupe služi za podršku zajedničkog rada jedne takve
grupe. Uzmimo za primer, radnu grupu koja pravi i standardne i
programe po porudžbini, koji se prodaju softverskim kompanijama kao i
krajnjim korisnicima. Obično, jedna ili više osoba rade na datom
programu, ili dele programe, u isto vreme. Grupi je potrebna baza
podataka koja će da prati razvoj svakog dela i koja će da omogući da se
podaci što lakše razmenjuju među članovima tima.
Svaki član radne grupe ima svoj računar, a računari su umreženi putem
LAN-a. Baza podataka se nalazi na centralnom računaru koji se zove
server baze podataka, koji je takođe na mreži. Stoga, svaki član grupe
ima pristup podacima. Različiti članovi grupe (u zavisnoti da li je u
pitanju rukovodilac projekta ili projektant, programer) mogu imati
različita ovlašćenja (privilegije), a time i različite poglede na podatke.
Primetićete da je glavna mana ličnih baza podataka, teško ostvariva
razmena podataka, ovde prevaziđena (barem je razmena podataka u
okviru grupe lako ostvariva). Međutim, razmena podataka otvara nova
pitanja i probleme koji nisu postojali kod ličnih baza podataka. Glavni
problemi upravljanja podacima su vezani za njihovu bezbednost i
integritet, s obzirom da više korisnika može istovremeno da obavlja
ažuriranje podataka.
- 22 -
1.5.3. Baze podataka odeljenja
- 23 -
č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?
- 24 -
jedinstvenim pogledom na celu organizaciju; na primer, da bi se videla
sva poslovanja sa jednim dobavljačem ili pacijentom. Povaćanje
produktivnosi se može postići uvođenjem, na primer, centralnog sistema
za naručivanje materijala za sve zdravstvene centre i rapoređivanjem
osoblja i usluga koje vrše na sve zdravstvenim centre. ERP sistem
omogućava uvođenje prethodnih promena. Donošenje odluka na nivou
cele organizacije, u vezi sa poslovanjem sa dobavljačima, i podnošenje
izveštaja raznim agencijama zahteva sakupljene svih prethodnih podataka
i informacija. Da bi se zadovoljile ove potrebe, organizacija koristi
skladište podataka koje se održava i nalazi u sedištu organizacije. Podaci
koji se nalaze u skladištu podataka su preuzeti (i potom sumirani) iz
pojedinačnih baza podataka svakog medicinskog centra. Ovaj proces
preuzimanja podataka se odvija periodično putem telekomunikaciono-
računarske mreže.
- 25 -
proizvoda preko Interneta. Internet konekcija je konfigurisana kao
extranet što znači da samo odobrene maloprodaje mogu da pristupe
intranet-u fabrike.
- 26 -
bazama podataka, od strane osoba koje nisu deo organizacije, javljaju se
nova pitanja za rukovođenje informacionim sistemima vezana za
sigurnost i integritet podataka.
- 27 -
1.6. Tipično okruženje baze podataka
- 28 -
Slika 1.9 Komponente okruženja BP
- 29 -
1.7. Istorija razvoja baza podataka
- 30 -
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.
1960’te
- 31 -
1970’te
1980’te
- 32 -
1990’te
Od 2000. godine
- 33 -
centralizovanoj bazi podataka takođe se smanjuje. Manji
troškovi, a visoke performanse svakako ohrabruju ovaj trend.
- 34 -
1.8. Modelovanje
Izlaz1
Relan svet
Ulaz
Cilj svakog modela je da učini da je: Izlaz1~Izlaz2
- 35 -
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.
• strukturu podataka,
• operacije nad podacima,
• ograničenja (constraints).
- 36 -
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
- 37 -
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.
- 38 -
samo jednom fakultetu. Takvi odnosi između entiteta su retki, a mogu se
predstaviti sledećom slikom:
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.
- 39 -
Slika 1.14 Preslikavanje tipa M:N
- 40 -
unose, ažuriraju ili jednostavno koriste baze podataka na različitim
nivoima organiziranosti poslovnih sistema.
Konceptualni
Eksterni model model Interni model
(sloj) (sloj) (sloj)
Model A A Podaci 1
B Podaci 2
Model B
Podaci 3
C
Model C Podaci N
- 41 -
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.
- 42 -
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
O O O O O O O O
R R R R R R R R
R R R R R R R
R R R
- 43 -
da korisnik mora da zna kako je stablo organizovano da bi pronašao bilo
šta.
- 44 -
Direktor
O O O O O O O O
R R R R R R R R
R R R R R R R
R R R
- 45 -
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:
Student Knjiga
BrInd Ime SifK Naziv
75/01 Marko 001 Računovodstvo
- 46 -
BrInd SifK
Student Knjiga
Ime
Naziv
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 -
Student Drži Knjiga
BrInd Ime 12.09.2005
SifK Naziv
75/01 Marko 12.09.2005 001 Računovodstvo
12.09.2005
22/02 Petar 002 Baze podataka
12.09.2005
156/03 Milan 003 Osnove finansija
12.09.2005
112/02 Dragan 004 Poslovna informatika
12.09.2005
005 Marketing
Datum
BrInd SifK
Ime
Naziv
- 48 -
STUDENT (BrInd, Ime),
KNJIGA (SifK, Naziv)
- 49 -
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.
- 50 -
drugi objekat. Direktna veza između objekata u aplikaciji i objekata u BP
rezultuje boljim performansama baze podataka.
Automobil
Naziv RegBr Boja Godište Vlasnik
Golf BG123456 Belo 1993 Marko
- 51 -
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
- 52 -
5. Generiše se izveštaj o transakciji
6. Isplaćuje se novac i daje izveštaj o transakciji
- 53 -
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.
- 54 -
vrednosti posle sa log fajla, što omogućava očuvanje konzistentnog
stanja.
Transakcija1
Istovremeno Paralelno
izvršavanje sve izvršavanje
Transakcija2
tri transakcije transakcija
Transakcija3
vreme
Serijsko izvršavanje
Transakcija1 Transakcija2 Transakcija3
transakcija
• Planer (Scheduler),
• Menadžer transakcija (Transaction manager).
- 55 -
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:
- 56 -
• Stalna pristupačnost
Zbog toga što je uvek aktivan, informacioni sistem mora biti
operativan tokom radnog vremena preduzeća. U nekim
preduzećima, to znači da sistem mora da bude stalno dostupan.
Na primer, kod sistema za rezervaciju avionskih karata, može da
se zatraži rezervacija karata iz agencija raspoređenih u velikom
broju vremenskih zona, tako da se sistem nikada ne gasi. Kada
sistemi dožive kolaps, to dovedi do poremećaja u poslovanju. Na
primer, ukoliko računar za rezervaciju karata ne radi, ne može se
ni uraditi rezervacija. Mogućnost tolerancije pada sistema zavisi
pre svega od prirode preduzeća. Svakako je jasno da sistem
kontrole leta ima manji prag tolerancije u odnosu na onaj koji ima
sistem za rezervacije. VISA je objavila 2002. godine da je njihov
sistem bio isključen na svega osam minuta u poslednjih pet
godina (vreme dostupnosti je u procentima iznosilo 99,9999%). U
osnovi stalno pristupačnih sistema u suštini su kvalitetan hardver i
softver
• Visoka pouzdanost
Sistem mora precizno da prikaže rezultate svih transakcija. To
znači ne samo da transakcija mora da bude tačno programirana,
već i da ne sme doći do greške zbog uporednog (paralelnog)
odvijanja transakcija, ili međusobne komunikacije delova
programa za vreme izvršenja transakcija. Međutim, veliki sistemi
za prenos transakcija uključuje hiljade hardverskih i softverskih
modula, i malo je verovatno da svi rade savršeno precizno. Ipak,
sistem ne sme da zaboravi rezultate bilo koje završene
transakcije. Na primer, baza bodataka u bankarskom sistemu
mora precizno da prikaže efekat svih ulaganja i podizanja novca
koji su se obavili, i ne sme da zaboravi rezultate bilo kakve
transakcije tog tipa.
• Veliki protok informacija
Pošto preduzeća imaju veliki broj klijenata zbog kojih moraju da
koriste sisteme za prenos transakcija, sistem mora da bude u
stanju da obavlja više transakcija u sekundi. Na primer, sistem za
odobravanje kreditnih kartica može da obavlja na hiljade
transakcija u sekundi. Ovaj zahtev ukazuje na to da se transakcije
ne mogu izvršavati serijski, već se moraju izvršavati uporedno;
što sa druge strane značajno komplikuje strukturu sistema.
- 57 -
• Brza reakcija
Sistem mora brzo da odreaguje zbog kupaca koji čekaju na
njegov odgovor. Zahtev za brzinu reakcije varira u zavisnosti od
vrste naredbe koja se zadaje sistemu. Možemo da čekamo
petnaest sekundi ispred bankomata kada podižemo novac, ali
očekujemo, da, kada telefoniramo, poziv bude uspostavljen za
nekoliko sekundi. Isto tako, ukoliko se kod nekih aplikacija,
reakcija sistema ne dogodi u tačno utvrđenom vremenu,
transakcija se neće obavljati pravilno. Na primer, u fabrici sa
automatizovanim sistemom, u transakciji može od sistema da se
zatraži da aktivira neku mašinu pre nego što deo za obradu dođe
do nje. Za aplikacije ovog tipa se kaže da imaju tzv. ’prinudno’
radno vreme.
• Dugotrajnost
Sistemi za prenos transakcija su veoma kopleksni, i nisu lako
zamenljivi. Stoga, oni moraju biti dizajnirani tako da se
pojedinačni hardverski i softverski moduli mogu zameniti novijim
verzijama (koje imaju bolje performanse ili dodatne funkcije) bez
velikih poremećaja unutar sistema.
• Bezbednost
Mnogi sistemi za prenos transakcija sadrže poverljive informacije
o pojedincima (npr. stvari koje su kupili, brojeve kreditnih
kartica, video zapisi, kao i zdravstveni i finansijski dosijei). Pošto
ovim sistemima pristupa veliki broj ljudi sa raznovrsnih mesta
(uključujući i Internet) bezbednost je važna. Korisnici moraju da
se identifikuju (da li su oni ti za koje tvrde da su?) i moraju da
imaju pristup samo onim transakcijama za čije izvršenje su
ovlašćeni (samo službenik u banci može da izvrši transakcije na
nekom računu). Informacije u bazi podataka ne smeju da se
presreću i čitaju od strane hakera, a informacije prenesene između
korisnika i sis-tema se ne smeju menjati i najčešće treba da budu
zaštićene od prisluškivanja.
- 58 -
1.13. Zaključak
- 59 -
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
1.14. Literatura
- 60 -
2. O SQL-u
- 61 -
podjezici relacionih sistema za upravljanje bazama podataka koji
se često koriste.
Režimi rada
- 62 -
3. INSTALACIJA, KONFIGURISANJE I
POKRETANJE MySQL-a
- 63 -
Sika 3.2 Drugi prozor Wizard-a
- 64 -
Sika 3.3 Treći prozor Wizard-a
- 65 -
Sika 3.4 Četvrti prozor Wizard-a
- 66 -
Sika 3.5 Peti prozor Wizard-a
- 67 -
3.2. Konfigurisanje MySQL servera
Ukoliko ste u toku instalacije izabrali gore pomenutu opciju ili ukoliko
ste iz Start menija izabrali MySQL Server Instance Config Wizard
pojaviće se prva stranica ovog Wizarda kao na slici:
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 -
Slika 3.7 Drugi prozor Wizard-a za konfiguraciju MySQL-a
- 69 -
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 -
Slika 3.9 Četvrti prozor Wizard-a za konfiguraciju MySQL-a
- 71 -
Slika 3.10 Peti prozor Wizard-a za konfiguraciju MySQL-a
- 72 -
3.3. Pokretanje MySQL-a
- 73 -
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).
- 74 -
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
- 75 -
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".
● DATETIME
● DATE
● TIME
● TIMESTAMP
● YEAR
- 76 -
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
● CHAR i VARCHAR
● BINARY i VARBINARY
● BLOB i TEXT
● ENUM i SET
- 77 -
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.
- 78 -
4.4. Zahtevi pri skladištenju
Numerički tipovi:
- 79 -
Tip podataka Zahtev pri skladištenju
M <= 65535.
BINARY(M) M bajtova, 0 <= M <= 255
VARBINARY(M) L + 1 bajtova, gde je L <= M i 0 <= M <=
255 ili L + 2 bajtova, gde je L <= M and 256
<= M <= 65535.
TINYBLOB, TINYTEXT L+1 bajtova, gde je L < 28
BLOB, TEXT L+2 bajtova, gde je L < 216
MEDIUMBLOB, MEDIUMTEXT L+3 bajtova, gde je L < 224
LONGBLOB, LONGTEXT L+4 bajtova, gde je L < 232
ENUM('vrednost1','vred 1 ili 2 bajta, u zavisnosti od broja članova
nost2',...)
SET('vrednost1',vredno 1, 2, 3, 4, ili 8 bajtova, u zavisnosti od broja
st2',...) članova
- 80 -
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.
- 81 -
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).
- 82 -
5. DDL (Data Definition Language)
USE PROBA;
- 83 -
5.2. Kreiranje tebele u bazi podataka
- 84 -
| TINYBLOB
| BLOB
| MEDIUMBLOB
| LONGBLOB
| TINYTEXT
| TEXT
| MEDIUMTEXT
| LONGTEXT
| ENUM(value1,value2,value3,...)
| SET(value1,value2,value3,...)
| spatial_type
index_col_name:
col_name [(length)] [ASC | DESC]
reference_definition:
REFERENCES tbl_name [(index_col_name,...)]
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
- 85 -
CREATE TABLE Dobavljac_Artikl (
Dobavljac_rb INTEGER UNSIGNED NOT NULL,
Artikl_rb INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(Dobavljac_rb, Artikl_rb),
INDEX Dobavljac_has_Artikl_FKIndex1(Dobavljac_rb),
INDEX Dobavljac_has_Artikl_FKIndex2(Artikl_rb)
);
- 86 -
5.3. Naredbe za definisanje podataka
1. struktura BP,
2. tabele,
3. atributi,
4. tipovi podataka,
5. ograničenja,
6. pomoćni indeksi za direktan pristup itd.
- 87 -
5.4. Kreiranje indeksa u bazi podataka
- 88 -
5.5. Kreiranje virtuelne tabele - "pogleda"
- 89 -
5.6. Izmena definicije tabele
Funkcija izmene tabele u bazi podataka putem SUBP-a se odnosi na
dodavanje, uklanjanje i modifikovanje kolona u tabeli baze podataka.
Prethodno navedene operacije nad tabelom u bazi podataka se u SQL
jeziku vrši pomoću jedinstvene naredbe ALTER TABLE:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD INDEX [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE
collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
- 90 -
U zavisnosti od toga šta želimo da promenimo u tabeli, koristićemo
različite oblike prethodno navedene naredbe u strukturi koja je prikazana.
- 91 -
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)
● 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 -
6.2. Unos podataka
- 98 -
Druga varijanta predstavlja kraći oblik naredbe koji nije poželjno koristiti
iz sledećih razloga:
- 99 -
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(129, 'Artikl br. 4', 599.05, 340, 'Germany');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(132, 'Artikl br. 5', 179.97, 140, 'Switzerland');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(135, 'Artikl br. 6', 397.00, 390, 'France');
INSERT INTO Artikl
(Magacin_rb, Naziv, Cena, Kolicina, ZemljaPorekla)
VALUES
(137, 'Artikl br. 7', 269.07, 250, 'Dansk');
- 100 -
6.3. Pregled podataka
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]]
- 101 -
Ovom naredbom smo preuzeli sve podatke (sve zapise sa svim
kolonama) iz tabele Artikl.
+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+----+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)
- 102 -
Rezultat ove naredbe je isti kao i kod prethodne naredbe ali je izostavljen
parametar rb:
+------------+--------------+--------+----------+---------------+
| Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+------------+--------------+--------+----------+---------------+
| 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 127 | Artikl br. 3 | 190 | 170 | USA |
| 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 135 | Artikl br. 6 | 397 | 390 | France |
| 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)
- 103 -
U rezultat ove naredbe:
+----+------------+--------------+--------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+--------+----------+---------------+
| 7 | 137 | Artikl br. 7 | 269.07 | 250 | Dansk |
| 6 | 135 | Artikl br. 6 | 397 | 390 | France |
| 1 | 123 | Artikl br. 1 | 199.99 | 100 | Germany |
| 4 | 127 | Artikl br. 4 | 599.05 | 340 | Germany |
| 2 | 124 | Artikl br. 2 | 299.99 | 102 | Srbija |
| 5 | 132 | Artikl br. 5 | 179.97 | 140 | Switzerland |
| 3 | 127 | Artikl br. 3 | 190 | 170 | USA |
+----+------------+--------------+--------+----------+---------------+
7 rows in set (0.00 sec)
1. WHERE
2. DISTINCT
3. LIMIT
4. GROUP BY / HAVING
- 104 -
6.3.1. Klauzula WHERE
- 105 -
Dodatna objašnjenja:
- Simboličko poređenje
-
● Klauzula LIKE omogućuje pretraživanje na osnovu "UZORKA"
odnosno dobijanje informacija i kada ne znamo potpun naziv (tj.
vrednost) odredjenog atributa tipa character. Ona koristi dva specijalna
karaktera ("%","_") sa sledećim značenjem:
"%" predstavlja string od 0 ili više karaktera
"__" predstavlja
poziciju jednog
karaktera.
Ostali karakteri imaju ucbičajeno značenje.
Uslov u WHERE klauzuli navedenog upita kaže da IME treba da liči na
uzorak naveden u jednostrukim navodnicima.
Primeri:
... gde se ime završava sa N.
WHERE IME LIKE '%N'
... gde je treći karakter imena R.
WHERE IME LIKE 'R%'
... gde je ime dugačko 5 karaktera
WHERE IME LIKE ' '
- Univerzalno poređenje
- 106 -
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:
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 -
6.3.2. Klauzula DISTINCT
sadrži listu svih zemalja iz kojih artikli potiču ali bez ponavljanja.
- 108 -
6.3.3. Klauzula LIMIT
- 109 -
6.3.4. Klauzule GROUP BY / HAVING
+---------------+----------+
| ZemljaPorekla | COUNT(*) |
+---------------+----------+
| Dansk | 1 |
| France | 1 |
| Germany | 2 |
| Srbija | 1 |
| Switzerland | 1 |
| USA | 1 |
+---------------+----------+
6 rows in set (0.02 sec)
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 -
6.4. Izmena podataka
UPDATE Artikl
SET Cena=1000.00;
UPDATE Artikl
SET Cena=1000.00
WHERE ZemljaPorekla='Germany';
- 111 -
+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 1000 | 100 | Germany |
| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 1000 | 340 | Germany |
| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)
+----+------------+--------------+------+----------+---------------+
| 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)
+----+------------+--------------+------+----------+---------------+
| rb | Magacin_rb | Naziv | Cena | Kolicina | ZemljaPorekla |
+----+------------+--------------+------+----------+---------------+
| 1 | 123 | Artikl br. 1 | 2000 | 2000 | Germany |
| 2 | 124 | Artikl br. 2 | 1000 | 102 | Srbija |
| 3 | 127 | Artikl br. 3 | 1000 | 170 | USA |
| 4 | 127 | Artikl br. 4 | 2000 | 2000 | Germany |
| 5 | 132 | Artikl br. 5 | 1000 | 140 | Switzerland |
| 6 | 135 | Artikl br. 6 | 1000 | 390 | France |
| 7 | 137 | Artikl br. 7 | 1000 | 250 | Dansk |
+----+------------+--------------+------+----------+---------------+
7 rows in set (0.00 sec)
- 112 -
Ukoliko želimo da u za vrednost koristimo već 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 -
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 -
6.5. Uklanjanje podataka
- 115 -
7. DCL (Data Control Language)
● CREATE USER
● RENAME USER
● DROP USER
● SET PASSWORD
● GRANT
● REVOKE
● FLUSH PRIVILEGES
- 116 -
7.1. Naredba CREATE USER
- 117 -
7.2. Naredba RENAME USER
- 118 -
7.3. Naredba DROP USER
- 119 -
7.4. Naredba SET PASSWORD
- 120 -
7.5. Dodela privilegija (GRANT)
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
- 121 -
Osnovna dodela privilegija se vrši naredbom:
- 122 -
Privilegije Značenje
ALL [PRIVILEGES] Sets all simple privileges except GRANT OPTION
ALTER Allows use of ALTER TABLE
CREATE Allows use of CREATE TABLE
CREATE TEMPORARY
Allows use of CREATE TEMPORARY TABLE
TABLES
CREATE VIEW Allows use of CREATE VIEW
DELETE Allows use of DELETE
DROP Allows use of DROP TABLE
EXECUTE Allows the user to run stored procedures (MySQL 5.0)
FILE Allows use of SELECT ... INTO OUTFILE and LOAD DATA INFILE
INDEX Allows use of CREATE INDEX and DROP INDEX
INSERT Allows use of INSERT
Allows use of LOCK TABLES on tables for which you have the SELECT
LOCK TABLES
privilege
PROCESS Allows use of SHOW FULL PROCESSLIST
REFERENCES Not yet implemented
RELOAD Allows use of FLUSH
REPLICATION
Allows the user to ask where the slave or master servers are
CLIENT
REPLICATION
Needed for replication slaves (to read binary log events from the master)
SLAVE
SELECT Allows use of SELECT
SHOW DATABASES SHOW DATABASES shows all databases
SHOW VIEW Allows use of SHOW CREATE VIEW
SHUTDOWN Allows use of mysqladmin shutdown
Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET
SUPER GLOBAL statements, the mysqladmin debug command; allows you to connect
(once) even if max_connections is reached
UPDATE Allows use of UPDATE
USAGE Synonym for ``no privileges''
GRANT OPTION Allows privileges to be granted
- 123 -
7.6. Oduzimanje privilegija (REVOKE)
- 124 -
7.7. Primena izmena (FLUSH)
Flush_option: Objašnjenje:
HOSTS Pražnjenje keša host tabele
DES_KEY_FILE Ponovno učitavanje DES ključa
LOGS Zatvaranje i otvaranje svih log fajlova
MASTER Brisanje i ponovno kreiranje svih log fajlova
PRIVILEGES Ponovno učitavanje svih privilegija iz GRANT
tabele
QUERY CACHE Defragmentacija keširanih upita
SLAVE Resetovanje svih replikacija sekundardnih
parametara
STATUS Resetovanje svih statusnih promenljivu na 0
USER_RESOURCES Resetovanje svih resursa iz prethodnih sati na 0
- 125 -
8. Zadaci za vežbu DML
+----+------------+------------------+-----------+
| rb | Naziv | Adresa | Telefon |
+----+------------+------------------+-----------+
| 1 | Dobavljac1 | Beogradska 5 | 64123456 |
| 2 | Dobavljac2 | Bac49 | 11256782 |
| 3 | Dobavljac3 | Uzicka 42 | 62564778 |
| 4 | Dobavljac4 | Knez Mihajlova 2 | 112345812 |
| 5 | Dobavljac5 | Nehruova 62b | 637469923 |
+----+------------+------------------+-----------+
5 rows in set (0.00 sec)
+-----+---------------+-----------+-----------+
| 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)
- 126 -
9.Prikazati iz tabele Dobavljac zapise od 2 do 4
- 127 -
9. DODATAK
Aritmetičke funkcije
Funkcija COUNT definisana je nad kolonama bilo kog tipa. Ona ima dva
oblika:
- 128 -
SQL podržava sledeće aritmetičke funkcije:
- 129 -
10. DB Desinger 4.0
- 130 -
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.
- 131 -
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:
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 -
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 -
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:
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:
- 134 -
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:
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 -
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:
- 136 -
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 -
Na prethodno opisan način kreirajte i sledeće kolone sa tipom polja kao
na sledećoj slici:
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:
- 138 -
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.
- 139 -
Kreiranje relacije tipa 1:n
- 140 -
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:
- 141 -
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.
- 142 -
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.
- 143 -
Sada će te kreirati jednu relaciju tipa n:m izmedju tabela Dobavljac i
Artikl tako što će te izabrati opciju sa prethodne slike, a zatim kliknuti
levim tasterom na tabelu Dobavljac pa onda na tabelu Artikl posle čega
će relacija biti kreirana kao i svi potrebni elementi, pogledajte sledeću
sliku:
Kao što možete videti na slici relacija je kreirana, ali pošto je ovo relacija
n:m kreirana je i nova tabela (vezna tabela), koja je već ranije pomenuta
u tekstu o tipovima relacija. Ova tabela sadrži dva polja Dobavljac_rb i
Artikl_rb. Ako pogledate tabele Dobavljac i Artikl možete primetiti da
su to kopije primarnih ključeva ove dve tabele. SUBP je automatski
kreirao ovu tabelu i dodelio joj ime Dobavljac_has_Artikl što je vrlo
lako uočiti zašto, naravno zbog toga što je ovo vezna tabela koja spaja
ove dve tabele. Takođe automatski su kreirane i dve relacije i dodeljena
- 144 -
im imena Rel_03 i Rel_04. Na način koji je objašnjen ranije promenite
imena ovih relacija u Relacija3 i Relacija4.
- 145 -
Slika 11.20 Promena imena ključa
Ako ste sve uradili kako treba konačna grafička prezentacija ove baze
podataka izgledaće kao na sledećoj slici:
- 146 -
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.
- 147 -
Ovde je već kreirana konekcija na bazu podataka koja se zove test.
Ukoliko želite da uspostavite konekciju sa ovom bazom potrebno je samo
da izaberete opciju Connect, koja se nalazi u donjem desnom uglu, posle
čega će se pojaviti prozor gde će se od vas 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:
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 -
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:
- 149 -
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 -