Uvod

Baza podataka je strukturirana skupina podataka pohranjena na računalnom sustavu. Postoji više vrsta modela baza podataka, a to su: plošni, hijerarhijski, mrežni, relacijski, objektni, objektno relacijski. U nastavku će se govoriti o najzastupljenijem od njih, a to je relacijski model.

Dizajn baze podataka je proces osmišljavanja i izrade detaljnog modela baze podataka. Ovo je važan korak jer dobar dizajn baze podataka daje aplikaciji visoku učinkovitost, smanjuje ponavljanje odnosno redundanciju podataka te osigurava brzo i lako izvršavanje upita. Također, dobro dizajnirana baza podataka smanjuje vrijeme, ali i glavobolje, prilikom same izrade baze. Dizajn manjih i jednostavnijih baza može se jednostavno skicirati na papiru.

Relacijska baza podataka

Relacijska baza podataka organizira podatke u tablice, tzv. relacije, koje se sastoje od stupaca i redova. Tablica je zapravo entitet, to jest bilo što o čemu želimo prikupljati i pohranjivati podatke. Atributi su stupci u tablici i oni opisuju entitet. Dok se u redove tablice upisuju podaci.

Za početak trebamo znati svrhu baze i zašto ju izrađujemo, a potom definirati entitete i njihove atribute. Kao primjer uzet ćemo bazu škola u kojoj želimo pohraniti podatke o učiteljima, učenicima i razredima, koji su nam ujedno i entiteti odnosno tablice u bazi.

Kod učitelja atributi će nam biti šifra, ime, prezime, predmet koji predaje i da li je razrednik nekom razredu ili nije. Šifra je jedinstveni broj koji će biti dodijeljen svakom učitelju kako bismo ih mogli razlikovati u slučaju da npr. postoje dva učitelja s istim imenom i prezimenom te predaju isti predmet. Zatim učenici također imaju šifru, ime, prezime, datum rođenja te razred koji pohađaju. Dok će razredi imat atribute šifra, naziv razreda i razrednika.

Slika 1. - Entiteti i atributi

Baze podataka sadrže više tablica i one mogu, ali i ne moraju, biti povezane. Postoje tri vrste veza, a to su: veza jedan naprama jedan (1:1), veza jedan naprama više (1:N) i veza više naprama više (M:N). Važno je naglasiti da ukoliko imamo vezu više naprama više (M:N) tada se kreira nova tablica tako da dobijemo dvije veze jedan naprama više (1:N) kao što se može vidjeti na Slici 2. Način na koji se čita veza 1:1 sa primjera glasi: „jedna škola ima jednog ravnatelja“, a veza 1:N glasi: „jedan razred ima više učenika“.

Slika 2. - Primjeri veza i oznaka

ERA dijagram

ERA dijagrama (Entity Relationship Attribute Diagram) je shematski prikaz baze podataka. Entiteti su prikazani kao pravokutnici u kojima su ispisani nazivi njihovih atributa. Entitete povezuju ravne linije odnosno veze, koje na krajevima imaju oznake po čemu znamo o kakvoj se vrsti veze radi.

Na Slici 3. prikazan je prvi korak u izradi ERA dijagrama baze škola. Nakon što se odrede entiteti i njihovi atributi potrebno je odrediti primarne i vanjske ključeve, tipove podataka te obavezna i neobavezna polja o čemu će se govoriti u nastavku. Ovaj primjer izrađen je u MySQL-u, no, jednako tako se može i skicirati rukom na papiru.

Slika 3. - ERA dijagram baze škola

Dodjeljivanje ključeva

Primarni ključ je jedan ili više stupaca koji jedinstveno određuju svaki red u tablici. Dakle, primarni ključ je uglavnom broj i jedinstven je za svaki red u tablici, uvijek sadrži neku vrijednost i vrlo rijetko se mijenja.

Vanjski ili strani ključ je jedan ili više stupaca tablice čije se vrijednosti podudaraju s primarnim ključem iste ili druge tablice. Njega uglavnom stavljamo u drugu tablicu kako ne bismo morali ponavljati podatke koje već imamo u jednoj tablici i to na način da se vrijednost primarnog ključa iz jedne tablice upisuje kao vrijednost stranog ključa druge tablice.

Na primjer u tablici razredi povezali smo razrednika sa šifrom iz tablice učitelji kako ne bismo morali ponavljati podatke o razredniku u tablici razredi, već ih možemo pronaći putem šifre. Šifre su primarni ključevi i označeni su zlatnim ključem. Dok su vanjski ključevi razrednik u tablici razredi i razred u tablici učenici, koje možemo prepoznati po tome što im romb ima crveni obrub (bolje se vidi na Slici 7.).

Slika 4. - Dodijeljeni primarni i vanjski ključevi

Tipovi podataka i not null/null vrijednosti

Prilikom izrade dizajna baze podataka također je potrebno odrediti tipove podataka za svaki atribut kako bi znali koje vrijednosti ćemo upisivat za određeni atribut. Postoji nekoliko vrsta tipova podataka, a to su: znakovni, brojčani, logički, datumski i binarni. Svaki od njih ima nekoliko tipova podataka, koje možete vidjeti na Slici 5.

Slika 5. - Tipovi podataka

Šifra ima brojčani tip podatka int, koji se koristi za cijele brojeve. Ime, prezime, predmet i naziv imaju znakovni tip podatka do najviše 30 znakova. Razrednik u tablici učitelji ima logički tip podatka boolean u koji će se upisat 1 u slučaju da je neki učitelj razrednik, a 0 ako nije razrednik. Razrednik u tablici razredi i razred imaju brojčani tip podatka int jer su oni strani ključevi i njihova vrijednost se podudara sa šifrom.

Slika 6. - Dodijeljeni tipovi podataka

Uz tipove podataka potrebno je odrediti i da li je neki podatak obavezno unijeti. To se radi pomoću not null i null vrijednosti. Null vrijednost označava da neki podatak ne mora biti unesen, to jest dozvoljeno je ne poznavanje njegove vrijednosti. Dok not null označava da je obavezan unos određenog podatka. Not null vrijednost je potrebno definirati prilikom same izrade baze, no, null vrijednost je zadana po defaultu i stoga se ne mora upisivati. Najčešći primjer gdje se stavlja not null je polje primarnog ključa.

Na Slici 7. može se vidjeti da kolone u tablicama kojima je dodijeljena not null vrijednost imaju ispunjeni romb zeleno, odnosno crveno ukoliko se radi o vanjskom ključu.

Slika 7. - Dodijeljene not null vrijednosti i kompletan prikaz ERA dijagrama

Normalizacija

Normalizacije je postupak prevođenja baze podataka iz niže u višu normalnu formu s ciljem smanjenja redundantnosti, to jest ponavljanja podataka. Osim toga, cilj normalizacije je i poboljšati integritet podataka i stabilnost dizajna te identificirati nepotrebne tablice, kolone i slično.

Normalne forme:

1NF je kada u tablici ne postoje dva ista atributa i ne postoje dva istovrsna podatka u jednom polju jednog zapisa.

2NF je kada ne postoji atribut koji opisuje neki drugi entitet.

3NF je kada se svi atributi koji ne ovise neposredno o primarnom ključu moraju izbaciti te ne postoje atributi koji nisu neophodni u smislu da podatak već postoji u nekom drugom atributu.

4NF, 5NF, … rijetko se koriste jer se smatra da je 3NF zadovoljavajuća.

Normalizacija povećava broj entiteta i relacija u bazi i samim time povećava i kompleksnost. Stoga se ponekad koristi denormalizacija, što je namjerno zadržavanje u nižoj normalnoj formi iz razloga što prednosti koje donosi normalizacija ne opravdavaju povećanu kompleksnost.

Literatura

Introduction to database design.

URL:http://www.datanamic.com/support/lt-dez005-introduction-db-modeling.html

A Quick-Start Tutorial on Relational Database Design.

URL:http://www.ntu.edu.sg/home/ehchua/programming/sql/relational_database_design.html

Mileusnić, Vatroslav. Modeliranje i dizajn baze podataka: završni rad.

URL:https://moodle.srce.hr/eportfolio/artefact/file/download.php?file=31207&view=7460