MySQL
MySQL je besplatan sustav za upravljanje bazom podataka otvorenog koda. Uz PostgreSQL, MySQL je čest izbor baze za projekte otvorenog koda, poput Linuxovih servera, no postoje inačice i za ostale operacijske sustave poput macOS-a, Windowsa i dr.
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, Jav, 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.
Kao i ostali sustavi za upravljanje bazama, i MySQL poštuje ACID načela pri izvođenju transakcija nad podatcima.
MySQL i PHP osvojili su veliki dio tržišta jer su otvorenog pristupa i besplatni za korištenje.
Osnovi pojmovi o projektiranju baza podataka
urediPrije upuštanja u rad s bilo kojim DBMS sistemom, pa tako i s 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 objekt, 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. Ako ž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
urediRDBMS sustav kao što je MySQL sve podatke pohranjuje unutar tablica koje se sastoje od stupaca i redaka. Stupci se još nazivaju i poljima ili atributima, a služe za skladištenje pojedinih podataka o određenom entitetu, retci 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 jer je teorija o bazama podataka precizno određena matematičkim pravilima još sedamdesetih godina 20. stoljeća.