Prijeđi na sadržaj

MySQL

Izvor: Wikipedija

MySQL je besplatna baza podataka, open source. Temeljni je dio Linuxa, no pomoću nekih aplikacija kao npr. "AppServ" pod operativnim sistemom Windows možete imati tu bazu.

MySQL baza je slobodna za većinu uporaba. Ranije u svom razvoju, MySQL baza podataka se suoćila s raznim protivnicima MySQL sustava organiziranja podataka jer su joj nedostajale neke osnovne funcije definirane SQL standardom. Naime, MySQL baza je optimizirana kako bi bila brza nauštrb funkcionalnosti. Nasuprot tome, vrlo je stabilna i ima dobro dokumentirane module i ekstenzije te podršku od brojnih programskih jezika: PHP, Java , Perl, Python...

MySQL baze su relacionog tipa, koji se pokazao kao najbolji način skladištenja i pretraživanja velikih količina podataka i u suštini predstavljaju osnovu svakog informacijskog sustava, tj temelj svakog poslovnog subjekta koji svoje poslovanje bazira na dostupnosti kvalitativnih i brzih informacija.

MySQL i PHP su osvojili veliki dio tržišta jer su open source, dakle, mogu se besplatno koristiti.


Osnovi pojmovi o projektovanju baza podataka

Prije upuštanja u rad sa bilo kojim DBMS sistemom, pa tako i sa MySQL-om potrebno je dizajnirati odgovarajući izgled baze podataka, odnosno napraviti šemu baze, koja se u kasnijem postupku prevodi u određen broj tabela koje se koriste za pohranjivanje podataka. Osnovi element koji se pohranjuje u bazi naziva se entitet, entitet može biti bilo što: osoba, neki objekat, događaj, služba u nekoj organizaciji isl. dakle stvari iz stvarnog života o kojima želimo čuvati informacije. Drugi važan pojam u teoriji baza podataka jeste relacija. Kao što u stvarnom životu postoje određeni međusobni odnosi između dvije ili više osoba, događaja isl. tako se i u bazama podataka mogu pojaviti određeni odnosi ili relacije između raznih entiteta, koji se na odgovarajući način predstavljaju unutar same baze.

Prema vrsti, relacije se mogu podijeliti na relacije jedan prema jedan, jedan prema više odnosno više prema jedan te više prema više. Uzmimo za primjer da modeliramo bazu koja sadrži dvije tabele, jedna za pohranu informacija o zaposlenim licima, a druga informacije o službama koje postoje u toj određenoj organizaciji, šema baze bi mogla izgledati ovako:


uposlenici(PK IDuposlenika,IDsluzbe,ime,prezime,adresa)
sluzbe(PK IDsluzbe,naziv,broj_telefona)


Stavke ispred koji stoji PK predstavljaju, tzv. primarne ključeve ili jedinstvene identifikatore koji se određenoj tabeli mogu pojaviti samo jedanput, tako npr. kao primarni ključ tabele uposlenici može poslužiti JMBG broj, boldirane stavke predstavljaju tzv. vanjske ključeve prema primarnom ključu druge tabele. Ovakvom šemom baze smo dobili relaciju jedan prema više, drugim riječima jedan uposlenik može raditi isključivo u jednoj službi, jedna služba može imati nula uposlenih ili veći broj uposlenih. Ukoliko želimo napraviti takvu relaciju gdje će jedna služba moći zaposliti isključivo jedno lice, dok jedan uposlenik može pripadati većem broju službi, šema baze bi u tom slučaju mogla izgledati ovako:

uposlenici(PK IDuposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,IDuposlenika,naziv,broj_telefona)

Šta ako želimo modelirati situaciju gdje jedan uposlenik može pripadati samo jednoj službi, dok s druge strane jedna služba može sadržavati samo jednog uposlenika, što bi predstavljalo ralaciju jedan prema jedan.U tom slučaju bismo morali uvesti dodatnu tabelu, koja bi sadržavala kao jedinstvene identifikatore dvije vrijednosti, s jedne strane IDuposlenika (odnosno JMBG) i IDsluzbe, te eventualno dodatne informacije kao npr. datum zapošljavanja. Tu dodatnu tabelu bi mogli nazvati uposlenik_u_sluzbi kako bismo lakše shvatili svrhu relacije, a šema bi tada izgledala ovako:

uposlenici(PK IDuposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,naziv,broj_telefona)
uposlenik_u_sluzbi(PK IDuposlenika, PK IDsluzbe, datum_zaposlenja)


Kao što vidimo moguće je kombinirati, dva ili po potrebi više primarnih ključeva. Za relaciju više prema više, u okviru relacije uposlenik_u_službi mogli bi ubaciti dodatni primarni ključ, tipa npr. auto_increment, čime postižemo da više uposlenika može raditi u većem broju službi, te svaka služba može sadržavati veći broj uposlenika, šema bi izgledala ovako:

uposlenici(PK IDuposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,naziv,broj_telefona)
uposlenik_u_sluzbi(PK IDrelacije,PK IDuposlenika, PK IDsluzbe, datum_zaposlenja)


Tabele

--Damirmerdan (razgovor) 21:41, 16. srpnja 2009. (CEST)

Logotip Zajedničkog poslužitelja
Logotip Zajedničkog poslužitelja
Zajednički poslužitelj ima još gradiva o temi MySQL
Članak MySQL koji govori o računarstvu je mrva. Dopunite ga prema pravilima Wikipedije.