Prijeđi na sadržaj

MySQL

Izvor: Wikipedija
Inačica 2295328 od 21. veljače 2010. u 01:50 koju je unio Loveless (razgovor | doprinosi) (robot Dodaje: mg:MySQL)

MySQL je besplatan, open source sustav za upravljanje bazom podataka. Uz PostgreSQL MySQL je čest izbor baze za projekte otvorenog koda, te se distribuira kao sastavni dio serverskih Linux distribucija, no također postoje inačice i za ostale operacijske sustave poput Mac OS-a, Windowse itd.

MySQL baza je slobodna za većinu uporaba. Ranije u svom razvoju, MySQL baza podataka suočila se 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 relacijskog 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 kvalitetnih 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 projektiranju 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 shemu baze, koja se u kasnijem postupku prevodi u određen broj tablica 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 i sl. 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 osobama, a druga informacije o službama koje postoje u toj određenoj organizaciji, shema baze bi mogla izgledati ovako:


zaposlenici(PK IDzaposlenika,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 tablici mogu pojaviti samo jedanput, tako npr. kao primarni ključ tablice zaposlenici može poslužiti JMBG broj, masne stavke predstavljaju tzv. vanjske ključeve prema primarnom ključu druge tablice. Ovakvom shemom baze smo dobili relaciju jedan prema više, drugim riječima jedan zaposlenik može raditi isključivo u jednoj službi, jedna služba može imati nula ili veći broj zaposlenih. Ukoliko želimo napraviti takvu relaciju gdje će jedna služba moći zaposliti isključivo jednu osobu, dok jedan zaposlenik može pripadati većem broju službi, shema baze bi u tom slučaju mogla izgledati ovako:

zaposlenici(PK IDzaposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,IDzaposlenika,naziv,broj_telefona)

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

zaposlenici(PK IDzaposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,naziv,broj_telefona)
zaposlenik_u_sluzbi(PK IDzaposlenika, 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 zaposlenika može raditi u većem broju službi, te svaka služba može sadržavati veći broj zaposlenika, shema bi izgledala ovako:

zaposlenici(PK IDzaposlenika,ime,prezime,adresa)
sluzbe(PK IDsluzbe,naziv,broj_telefona)
zaposlenik_u_sluzbi(PK IDrelacije,PK IDzaposlenika, PK IDsluzbe, datum_zaposlenja)


Tablice

RDBMS sistemi kao što je MySQL sve podatke pohranjuju unutar tablica koje se sastoje od kolona i redova. Kolone se nazivaju još i poljima ili atributima, a služe za skladištenje pojedinih podataka o određenom entitetu, redovi se nazivaju još zapisima ili slogovima (eng. record) i sadrže sve podatke jednog entiteta. Često se zapisi nazivaju u stručnoj literaturi n-torke, što je preuzeto iz matematike, budući da je teorija o bazama podataka precizno definirana matematičkim pravilima još u davnim 70-tim godinama.

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.