You are on page 1of 12

Deo I

Uvod u MySQL i relacione baze


podataka

^as 1 Uvod u MySQL

^as 2 Obja{njenje terminologije baze podataka


^as 3 Savladavanje procesa dizajniranja baze podataka

1
^as 1.
Uvod u MySQL

DOBRODO{LI NA PRVI ~AS! ON PREDSTAVLJA TEMELJ KONCEPATA RELACIONE


baze podataka koje }ete nau~iti u okviru ove knjige. Ako ste do sada koristili bilo koji
tip relacione baze podataka, ovi koncepti Vam ne}e predstavljati novinu. Ina~e, posto-
je neke male razlike izme|u MySQL-a i drugih sistema, koje }e biti obja{njene u toku
predstavljanja MySQL-a. Vide}ete da je on bio razvijen za upotrebu u web aplikacija-
ma, gde su primarni zahtevi za sistem baze podataka brzina, opse`nost i lako}a admin-
istriranja. Pri postizanju ovih ciljeva, neke celine standardne relacione baze podataka
su napu{tene. Ove celine, uklju~uju}i podr{ku transakcijama, korisne spoljne klju~eve
i podselekcije u okviru upita, deo su temeljnog razvojnog plana MySQL-a 4.0 i 4.1.

Napomena
Transakcijski tipovi tabela su spori, ali su zastupljeni u MySQL-u i obra|eni u
ovoj knjizi.

3
^as 1.

Ako je ovo Va{ prvi pohod na baze podataka, obratite posebnu pa`nju i izbacite svoje
selektore. Ali, pre svega, jedan savet: nemojte poku{avati da koncepte na~inite te`im
nego {to oni to jesu. Razumevanje osnova sistema relacionih baza podataka nije nauka
o kosmosu; ono, jednostavno, samo zahteva kori{}enje drugog dela Va{eg mozga - onog
koji se koristi za apstraktna razmi{ljanja.
Na ovom ~asu nau~i}ete slede}e:
l {ta je sistem relacione baze podataka i kako se mo`e upotrebiti
l {ta je SQL
l {ta je MySQL, otvoreni izvorni softverski proizvod
l neke od glavnih celina MySQL-a
l kako se MySQL koristi u svakodnevnom `ivotu

[ta je relaciona baza podataka?


Relaciona baza podataka sadr`i tabele koje su sastavljene od kolona i vrsta, a me|usob-
no su povezane na osnovu vrednosti u odre|enoj koloni.
^ovek koristi pre~ice i asocijacije, a to podr`ava relaciona baza podataka. Da biste
razumeli ne{to {to je slo`eno, ili te{ko, obi~no ga delite na male, povezane delove i
poku{avate da usredsredite svu pa`nju na svaki deli}. Ako razumete pojedina~ne
delove i zamislite me|usobne veze, shvatanje celine bi trebalo da bude olak{ano.
Relaciona baza podataka je, prosto re~eno, kontejner za te male delove i njihove
me|usobne veze.

Prakti~ni primer relacione baze podataka


U realnom svetu razvoja aplikacija jedan od uobi~ajenih poslova koji se izvr{avaju je
izrada kataloga za online prodavnicu (pod pojmom prodavnica podrazumevamo
aplikaciju koja je sastavljena od malih delova podataka).
Na primer, recimo da kreirate katalog sportske opreme. Razmislite {ta ~ini jedan
katalog kvalitetnim. Mo`da }ete do}i na ideju da sastavite listu sli~nu slede}oj:
l ID proizvoda
l naziv proizvoda
l boja proizvoda
l veli~ina proizvoda
l cena proizvoda
l opis proizvoda

4
Uvod u MySQL

Sve ove podatke mo`ete uneti u jednu veliku tabelu. Ako se odlu~ite za takav na~in
rada, odmah }ete se suo~iti sa pitanjima poput ovih:
l Kako da unesem proizvod koji ima vi{estruke boje i veli~ine?
l Kako da predstavim proizvode koji su dostupni u vi{e veli~ina i vi{e boja?
l [ta se de{ava kada su razli~ite cene velike plave i male crvene majice?
Ova pitanja su samo vrh ledenog brega. Bez relacionog dizajna, prove{}ete vi{e vre-
mena tra`e}i odgovore na {ta ako pitanja, nego na razvoj aplikacije i zara|ivanje
novca od svojih proizvoda.
Umesto velike no}ne more u vidu liste, mo`ete kreirati nekoliko malih, povezanih
tabela:
l Master tabela - Svaka vrsta sadr`i jedinstveni ID proizvoda, naziv proizvoda
i generalni opis proizvoda.
l Colors tabela - Kreirajte jednu vrstu za svaku boju za svaki ID proizvoda;
majica koja se pojavljuje u pet boja ima}e pet vrsta.
l Sizes tabela - Kreirajte po jednu vrstu za svaku veli~inu dostupnu za svaki
ID proizvoda; majica koja se pojavljuje u tri veli~ine }e imati tri vrste.
l Price tabela - Kreirajte jednu vrstu za svaku kombinaciju veli~ine i boje
svakog proizvoda; majica koja se pojavljuje u pet boja i tri veli~ine po boji
ima}e 15 razli~itih unosa.
Ove tabele su povezane upotrebom vrednosti klju~a - ID proizvoda. Na slici 1.1
mo`ete videti ove veze.

Slika 1.1
Veze izme|u tabela colors

item_id
item_color

master_item

item_id sizes
item_name
item_description item_id
item_size

prices

item_id
item_price

5
^as 1.

Razbijanjem duge liste ponovljenih podataka na manje, logi~ke strukture, postigli ste
ono {to se zove normalizacija. Ovaj primer nije toliko slo`en koliko }e biti u stvarnom
razvoju, ali o razli~itim nivoima normalizacije }ete u~iti na tre}em ~asu (Savladavanje
procesa dizajniranja baze podataka.

Napomena
SQL (skra}enica od Structured Query Language) je jezik upotrebljen za komu-
nikaciju sa sistemima relacione baze podataka. Mo`ete ga posmatrati kao
zasebna slova, ili kao jednu re~. Svaka komanda koju {aljete MySQL-u }e biti
napisana u obliku SQL-a, tako da je ova knjiga, zapravo delimi~na ~itanka ovog
jezika.
SQL nije jedan od novih Internet koncepata; poti~e iz ranih 70-ih pro{log veka,
kada je kreiran IBM centar za istra`ivanja. SQL je bio prvo, 1979. godine,
predstavljen kao deo komercijalnog sistema baze podataka predstavljanjem
Oraclea, a zatim je 1986. godine ANSI (American National Standards Institute)
usvojio SQL i postao industrijski standard. Va`e}a verzija SQL-a se, uglavnom,
odnosi na ANSI SQL.
^ine}i jezik standardnim, posti`ete prenosivost aplikacija koje razvijate. Ako
treba da izaberete sisteme baze podataka u toku razvojnog procesa, nije
potrebno da ponovo napi{ete celu aplikaciju, da promenite logiku, ili da nau~ite
potpuno nov jezik upita. Iako svaki sistem baza podataka ima sopstveni skup
devijacija u odnosu na standard, osnove su predstavljene u svim popularnim
sistemima i Va{ posao }e biti manji od monumentalnog.

[ta je MySQL?
MySQL je naj{ire upotrebljena Open Source baza podataka, sa nekoliko miliona korisni-
ka, od pojedina~nih korisnika, koji opslu`uju svoje li~ne web stranice, do velikih korpo-
racija, koje opslu`uju web stranice gustog saobra}aja. Jedan od primera je Yahoo! Finance,
koji koristi MySQL za obradu stotina upita u sekundi, ili milione upita u toku dana.
Znate {ta je relaciona baza podataka, a, da biste ta~no razumeli {ta je MySQL, samo
dodajte jo{ jedan par re~i; MySQL je sistem upravljanja relacionom bazom podataka
(RDBMS -relational database managment system).
Pored ~uvanja svih baza podataka, tabela, kolona i vrsta (i njihovih podataka), MySQL
upravlja njima kao jednim entitetom. Korisnicima su pridru`eni nivoi pristupa i dozvole,
a svim tim upravlja MySQL RDBMS. Osim toga, MySQL bele`i akcije ovih korisnika i
upravlja odgovorima na upite.

6
Uvod u MySQL

NOVI TERMIN
Upiti su komande napisane u SQL-u, koje {aljete svom RDBMS-u da biste kreirali
baze podataka i tabele, dodali i izmenili slogove, obrisali slogove, ili izdvojili informa-
cije koje }ete koristiti u aplikaciji.
Ljudi koji se bave razvojem aplikacija koriste MySQL, jer je vrlo brz i nije ni pribli`no
slo`en i konfuzan kao mnogo robustniji sistemi, poput Oraclea. Osim toga, jeftiniji je od
Oraclea za nekoliko desetina hiljada dolara, jer je verzija otvorenog izvora MySQL-a
besplatna u ve}ini slu~ajeva.

Napomena
MySQL AB poseduje izdava~ka prava na MySQL server izvor i licencira ga za
upotrebu u komercijalnim aplikacijama koje koriste MySQL. Osim toga, MySQL
AB prodaje usluge podr{ke i konsultovanja za MySQL korisnike i podr`ava
savr{eno online uputstvo za MySQL, koje se mo`e na}i na adresi
http://www.mysql.com/doc/.

Glavne celine MySQL-a


Ljudi koji se bave razvojem okre}u se MySQL-u zbog nekoliko klju~nih razloga:
l brzine
l prenosivosti
l mogu}nosti interfejsa sa bilo kojim programskim jezikom
l cene.
MySQL je vi{estruko povezan server, {to zna~i da se svaki put kada se uspostavi veza
pokre}e novi server proces. Veze sa MySQL-om ne dele procese - kada se jedan pro-
ces neo~ekivano zavr{i, ili se prekora~i server upotrebom velike koli~ine memorije,
samo taj jedan proces se isklju~uje i ne dolazi do pada celog servera. Ova mogu}nost
pove}ava ukupnu brzinu MySQL-a.
Mogu}nost MySQL-a da postigne interfejs sa virtuelno svakim programskim jezikom
(sa jezicima PHP, Perl, C/C++, Java, Python i Tcl) ~ini ga popularnim izborom me|u
ljudima koji se bave razvojem. Osim toga, prenosivost izme|u operativnih sistema je lako
ostvariva; ako treba da izaberete operativne sisteme, ili jezike, koristite mysqldump pro-
gram da biste izvezli podatke iz sistema i mysqlimport da biste vratili podatke u sistem.
Ove pogodnosti }e biti obja{njene kroz razli~ite lekcije.
Jo{ jedna bitna osobina MySQL-a je da je u ve}ini slu~ajeva besplatan. U predstoje}em
delu ovog ~asa }ete saznati vi{e o razli~itim zahtevima licenciranja MySQL-a.

7
^as 1.

Distribucije MySQL-a
MySQL mo`ete upotrebiti na bilo kom operativnom sistemu, poput UNIX-a i
Windowsa 95/98/NT/2000/XP. Ovaj spisak obuhvata ve}i deo operativnih sistema koji
se koriste. Kada je potrebno da u~itate MySQL, MySQL web stranica je bude prvo
mesto gde treba pogledati - http://www.mysql.com/. Windows korisnici }e skoro
uvek pripasti ovoj kategoriji, a Windows verzija MySQL-a, koja se mo`e u~itati, ima
instalacioni program zasnovan na ~arobnjaku.
Ako koristite MySQL kao deo web-hostuju}eg paketa kroz Internet Service Providera,
ne brinite o u~itavanju i instaliranju aplikacije. Potrebno je samo da radite sa svojim
ISP-om da biste dobili korisni~ko ime i lozinku.
Ako imate Linux radnu stanicu, ili server, MySQL je uklju~en na Va{e OS distribucione
CD-ove kao instalaciona opcija. U tom slu~aju bi trebalo da proverite MySQL web
stranicu da biste uporedili oznaku verzije i u~itali noviju verziju ako je Va{a verzija
prevazi|ena.
Distribucija otvorenog izvora MySQL-a nije jedina verzija MySQL-a koja Vam je
dostupna. Postoje komercijalne verzije MySQL-a, poput distribucija MySQL-a, koje su
dostupne uz aplikacijski server softver. Ove mogu}nosti nude, izme|u ostalih, Abriasoft
(http://www.abriasoft.com/) i NuSphere (http://www.nusphere.com/), o
~emu mo`ete pro~itati ne{to vi{e u dodatku A, Instaliranje MySQL-a.

MySQL licence i podr{ka


Ako koristite otvoreni izvor MySQL-a iz MySQL AB-a, zna~i da Vam nije potrebno
da nabavite licencu i, umesto toga, mo`ete koristiti MySQL besplatno za bilo {ta {to
Vam je potrebno. Naredni slu~ajevi zahtevaju licencu:
l upotreba MySQL-a kao ugra|enog servera u aplikaciji koja nije licencirana
pod GNU Public License
l razvoj komercijalne aplikacije koja }e raditi jedino sa MySQL-om i dostava
MySQL-a kao dela aplikacije
l distribucija MySQL-a, ali ne i obezbe|ivanje njegovog izvornog koda , kao
{to je definisano u GNU Public License.
Upotreba MySQL-a u komercijalne svrhe ne zahteva licencu. Preporu~uje se, ali nije
obavezno, da vratite ne{to od profita MySQL razvojnom timu potpisivanjem ugovora
o podr{ci, ili donacijom.
MySQL AB obezbe|uje nekoliko nivoa ugovora podr{ke, od e-po{te do telefonske
podr{ke. Besplatna podr{ka se mo`e obezbediti pomo}u MySQL liste elektronske
po{te, koja je ekstremno aktivna i vrlo korisna. Mnogi razvojni akteri MySQL-a, kao i
oni koji su poznati kao eksperti u ovoj oblasti, pretpla}uju se na listu elektronske po{te
i odgovaraju na pitanja korisnika, od osnovne instalacije do slo`enih SQL upita.

8
Uvod u MySQL

Komuniciranje sa MySQL-om
Postoji nekoliko metoda za komuniciranje sa MySQL-om radi izdavanja SQL komandi i
postizanja rezultata. MySQL ima interfejs komandne linije za izdavanje komandi, o ~emu
}ete u~iti na ~etvrtom ~asu, Upotreba MySQL klijenta. Neki ISP-ovi obezbe|uju
interfejs zasnovan na Webu za MySQL, ili, ako Vam se ne svi|a web interfejs koji je
obezbedio Va{ ISP, mo`ete u~itati i instalirati dodatni klijent softver. MySQL AB
podr`ava listu klijenata na adresi http://www.mysql.com/downloads/.
Kao i u ve}ini slu~ajeva besplatnog softvera, upotrebljivost i dizajn ovih proizvoda varira-
ju od beskorisnog do perfektnog. Web interfejsi koje obezbe|uje ve}ina ISP-a su
poprili~no dobri, sa velikim skupom mogu}nosti - sve {to obavlja MySQL interfejs
komandne linije, ali sa bojama dodatim prikazu. Ipak kada se pojavi veliki broj korisnika
tog grafickog korisnickog interfejsa, posebno kod Windowsa, morate da pazite, jer ste
sami odgovorni za proveru kvaliteta onoga to kupujete
Drugi metod komunikacije sa MySQL-om je pomo}u izbora programskog jezika. Na
primer, ako kreirate web aplikaciju upotrebom PHP-a za komunikaciju sa MySQL-om,
upotrebi}ete specijalne funkcije u PHP-u za povezivanje sa MySQL-om i za izdavanje
upita. U narednih nekoliko delova dati su kratki opisi kako razli~iti programski jezici
povezuju upite sa MySQL serverom.
Bez obzira na jezik, ili metod koje koristite za komunikaciju sa MySQL-om, bi}ete pri-
morani da izdajete komande u SQL jeziku, prate}i ovu sekvencu:
1. povezivanje
2. upit
3. postizanje rezultata

PHP
PHP skript jezik ima ceo host funkcija za upotrebu sa MySQL-om. Ove funkcije
po~inju mysql_* prefiksom i mogu se na}i u MySQL delu PHP uputstva na adresi
http://www.php.net/manual/en/ref.mysql.php.

Perl
Komuniciranje sa MySQL-om pomo}u Perla zahteva upotrebu MySQL drajvera baze
podataka (DBD::mysql) sa generi~kim Perl interfejsom baze podataka (DBI).
Koriste}i ovaj drajver, mo`ete se povezati na server i izdati upite upotrebom ugra|enih
metoda DBI-a, ili mo`ete koristiti MySQL specifi~ne funkcije.

9
^as 1.

Java
JDBC drajvere za MySQL mo`ete koristiti da biste se povezali kroz Java aplikacije,
aplete i Java Server Pages. Naravno, postoje dva podr`ana JDBC drajvera:
l mm drajver - za vi{e detalja posetite http://mmmysql.sourceforge.net/
l Reisin drajver - posetite http://www.caucho.com/projects/jdbc-mysql/
index.xtp za vi{e detalja.

ODBC
MySQL AB je razvijen za program pod nazivom MyODBC, koji mo`ete koristiti za
povezivanje ODBC aplikacija sa MySQL-om. MyODBC funkcioni{e pod
Windowsom 95/98/NT i pod ve}inom Unix platformi i mo`ete ga na}i na adresi
http://www.mysql.com/downloads/api-myodbc.html.

Dodatni jezici
Pored popularnijih programskih interfejsa koji su ovde navedeni, mo`ete upotrebiti i
MySQL sa C++, Python i Tcl jezicima i mnogim drugim. Svaki jezik ima sopstveni skup
funkcija i metoda za interfejs sa MySQL-om; ako `elite da nau~ite vi{e, mo`ete na}i info-
rmacije u MySQL API delu MySQL uputstva na adresi http://www.mysql.com/doc.

Zaklju~ak
MySQL je popularni sistem upravljanja relacionom bazom podataka otvorenog izvo-
ra, poznat po svojoj brzini, funkcionalnosti, prenosivosti i ceni. MySQL dobro
funkcioni{e kada je re~ o stranicama re|eg i gu{}eg sadr`aja i upotrebljen je za web
stranice koje su pune sadr`aja i web stranice e-trgovine.
Sistem upravljanja relacionom bazom podataka je sa~injen od baza podataka, tabela,
kolona i vrsta podataka. Ove tabele su povezane upotrebom klju~eva. Kori{}enje malih
povezanih tabela, umesto velikih skupova podataka koji se ponavljaju, bi}e korisno pri
oblikovanju Va{e aplikacije i odr`avanju integriteta Va{ih podataka.
Komunikacija sa MySQL RDBMS-om mo`e se pojaviti kroz korisni~ki, ili programi-
rani interfejs. Mnogi popularni programski jezici imaju ugra|ene funkcije posebno
radi komuniciranja sa MySQL-om. Kada komunicirate sa MySQL-om, izdajete
komandu u jeziku koji se naziva SQL, a koji predstavlja industrijski standard.
Na narednom ~asu u~i}ete detaljno o delovima sistema relacione baze podataka: o
tabelama, poljima, slogovima, klju~evima i o jo{ mnogo ~emu.

10
Uvod u MySQL

Pitanja i odgovori
P Ka`ete mi da mogu da izr adim e-tr govins ku s tr anicu vr ednu vi{ e miliona
dolara pomo}u besplatnog softvera?
O Apsolutno! MySQL poseduje brzinu i funkcionalnost da izvr{ava sve
funkcije u okru`enjima e-trgovine gustog saobra}aja. Dobijanje licence je
besplatno, ~ak i u komercijalne svrhe, sve dok ne distribuirate bazu podataka
kao deo gotovog proizvoda.
P K oje celine s u na|ene u dr ug im A NSI SQ L -k o mp lementar nim s is temima
relacione baze podataka, a nema ih u MySQ L-u?
O Neke dodatne funkcije baze podataka, kao {to su transakcije, commit/rollback,
sa~uvane procedure i podselekcije, nisu predstavljene u va`e}oj verziji
otvorenog izvora MySQL. Mnoge od ovih celina }e se pojaviti u narednoj
realizaciji MySQL-a (verzija 4.0), o ~emu }ete u~iti vi{e na ~asu 18, Kratak
pregled transakcija. Za ostale prisutne celine postoje radna okru`enja, koja
}ete po~eti da izu~avate kroz lekcije u ovoj knjizi.

Radionica
Radionica je namenjena da bi pomogla da predvidite mogu}a pitanja, pregledate {ta ste
nau~ili i da po~nete da u~ite kako da svoje znanje primenite u praksi.

Kviz
1. U sistemu relacione baze podataka imate skupove tabela koje su me|usobno
povezane. [ta povezuje ove tabele?
2. Koja su tri generi~ka metoda za komunikaciju sa MySQL-om?
3. Ako koristite MySQL u jednostavnoj web aplikaciji koja Vam donosi milion
dolara, da li ste du`ni da kupite licencu?

Odgovori
1. Klju~evi su upotrebljeni za formiranje veza izme|u tabela.
2. MySQL klijent, klijent tre}e generacije, uklju~uju}i web interfejse, i brojni
dostupni programski jezici.
3. Ne, ali mo`ete razmi{ljati o kupovini ugovora o podr{ci od MySQL AB-a i
o na~inu na koji }ete saop{titi: Hvala za odli~an, besplatan proizvod!

11
^as 1.

Aktivnosti
1. Objasnite prijatelju koncept relacionih baza podataka. Mo`ete slobodno
koristiti ruke, nacrtane kutije i linije na papiru, ili tablu. Obja{njavanje
koncepta }e Vam pomo}i da ga bolje shvatite.
2. Razmislite o kreiranju skupa tabela baze podataka za online adresar.
Koriste}i svoje osnovno znanje o normalizaciji baze podataka, razmislite
koliko malih, logi~kih celina bi trebalo da kreirate.

12

You might also like