You are on page 1of 31

OBLIKOVANJE BAZE

PODATAKA
primjer: eMatica
• osnovni podatci o učenicima : ime, prezime, OIB, adresa, imena
roditelja . . .
• ocjene iz pojedinih predmeta za svaki razred školovanja
• izostanci i vladanje za svakog učenika za svaki razred
• podatci o svim nastavnicima
• podatci o svim razredima : oznake razreda, popis učenika, ime
razrednika, predsjednik razreda...
• podatci o svim korisnicima koji imaju pravo pristupa na eMaticu te
pripadna prava korisnika (što može raditi u aplikaciji)
PROBLEM
• izrazito velika količini podataka
• pohraniti, pretraživati, mijenjati i sl.
• nužna dobra organizacija podataka – postupci vremenski optimalni
• Primjerice, svi učenici zapisani u tekstualnoj datoteci, neorganizirani
- traženje - učitavanje podataka redom
• puno podataka – datoteka - izuzetno velika i nespretna za rad
• rješenje - baza podataka
BAZA PODATAKA
• jedna ili više tablica u koje se spremaju podatci organizirani na način
da se poštuju dva osnovna načela:
• rad s podatcima (dodavanje novih podataka, izmjena, brisanje i pretraživanje
postojećih podataka) - maksimalno efikasni
• traženje nekog podatka u bazi - najbrže moguće
• nema redundancije (ponavljanja) podataka
• kod dizajniranja baze podataka važno da se podatci nepotrebno ne ponavljaju
KONCEPTI DIZAJNRANJA BP
• PRIMJER: pohranjivanje podataka o učenicima neke škole
• ime učenika
• prezime učenika
• datum rođenja učenika
• razredna odjeljenje
• ime razrednika
• prezime razrednika.
Najjednostavnije i najlošije rješenje 
1 tablica npr. Excel
REDUNDANCIJA – ponavljanje podataka
Modeliranje podataka
• osnovni elementi
(ENTITETI):
• podatci o učenicima
(ime, prezime, razredna
odjeljenje)
• podatci o razredima
(oznaka razreda, ime i
prezime razrednika)
• entitet - sadrži po nekoliko podataka koje čuvamo
• npr. ent. učenik - ime, prezime, datum rođenja, razredno
odjeljenje – atributi
• model za problem koji rješavamo
• osnova za kreiranje baze podataka
• jedan entitet u BP - jedna tablica
• atributi entiteta - stupci tablice
• nemamo redundantnosti podataka
• primjerice: lako je saznati ime i prezime razrednika učenice Ines
Marković (4.c razredu, razrednik Petar Nikolić)
Malo složenija situacija!?
• DODAJEMO i razrede po generacijama (npr. tko je išao u 1.f šk.g.
2011./12.)
• sada su entiteti:
• učenik (ime, prezime, datum rođenjanastavnik (ime, prezime)
• školska godina (oznaka školske godine)
• razred (oznaka, razrednik, školska godina).
Veze između entiteta i atributa
• Kod kreiranja baze podataka - odgovori na pitanja poput:
• Tko je išao u 1 .f razred u školskoj godini 2011./12 . ?
• Tko je bio razrednik 1.f razreda u školskoj godini 2011./12.?
• ...
• Da bismo to mogli moramo uspostaviti jedinstvene/nedvosmislene
veze između entiteta

2 nastavnika mogu
imati isto ime i
prezime!!!??
• za vezu među podacima koristimo ključ (key)
• jedinstvena identifikacija – primarni ključ (Primary Key)
• može biti neki postojeći podatak npr. OIB (jedinstven za svaku osobu)
• „umjetni ključ” – dodajemo jedinstvenu oznaku (najčešće brojevi koji se
automatski povećavaju pri dodavanju novoga retka – imenu stupca dodajemo
prefiks ili sufiks ID )
Primjerice
• Razrednik (Razredi) – vrijednost nekog primarnog ključa IDNastavnika
(Nastavnici)
• SkolskeGodine u Razredi bit će stupac IDGodine iz tablice SkolskeGodine
• stupce čija je vrijednost primarni ključ u nekoj drugoj - strani ključ (Foreign Key)
• dobra praksa - isti naziv stranog ključa kao u tablici u kojoj je primarni ključ
ključevi te je zgodno posebnim linijama naglasiti veze među primarnim i
stranim ključevima
Tipovi veze

• 1 : 1 - jedan na jedan (engl. One to One) jedan redak unutar tablice A povezan je samo s
jednim retkom unutar tablice B, isto tako jedan redak iz tablice B povezan je s najviše
jednim retkom unutar tablice A,
• npr.jedna škola ima jednog ravnatelja, a jedna osoba može biti ravnatelj najviše jedne škole.
• 1 : N - jedan na više (engl. One to Many) - jedan redak iz tablice A povezan je s više
redaka u tablici B dok je jedan redak iz tablice B povezan s najviše jednim u tablici A.
• Primjerice, u jednoj školskoj godini ima više razrednih odjeljenja, dok jedno razredna odjeljenje može
pripadati samo jednoj školskoj godini.
• • N : M - više na više (engl. Many to Many) - jedan redak iz tablice A može biti povezan je
s više redaka u tablici B i jedan redak iz tablice B može biti povezan s više redaka u tablici
A.
• Dakle jedan učenik ide u više različitih odjeljenja tijekom školovanja - u školskoj godini 2011./12. je primjerice
u 1.e razredu, u školskoj godini 2012./13. u 2.e itd. S druge strane, u jedno razredna odjeljenje
ide više učenika.
• treba povezati razrede i učenike da možemo dobiti odgovore na neka
pitanja, kao što su :
• Koji su sve učenici išli u primjerice 4.a razred u školskoj godini
2015./16.?
• Koje je sve razrede pohađao neki učenik?
• Tko je bio razrednik nekom učeniku u školskoj godini 2015./16.?
• ....
• kreirati posebnu tablicu - vezu između učenika i razreda
• jedan učenik - tijekom školovanja pohađa više razrednih odjeljenja, a
isto tako u jedan razred ide više učenika.
• veza između učenika i razreda je N : M
• kod takvih veza potrebno je kreirati posebnu tablicu UceniciRazredi, i
u njoj će se nalaziti samo strani ključevi iz tablice Ucenici i Razredi.
• Takva tablica, koja služi samo kao veza između dviju tablica ne mora
imati primarni ključ.
Podatci poslagani u više tablica, a veze među
tablicama su primarni i strani ključevi-
relacijska baza podataka
Normalizacija baze podataka
izbjegavanje ponavljanja
• S obzirom na efikasnost organizacije podataka u bazi
• lNF ( Prva normalna forma),
• 2NF ( Druga normalna forma),
• 3NF (Treća normalna forma)
• ....
• 6NF (Šesta normalna forma),
• dodatne poput BCNF (engl. Boyce-Codd Norma/ Form)
• Svaka sljedeća normalna forma nadskup je prethodne normalne
forme.
Primjer normalizacije
• podaci o upisima na fakultete

ne zadovoljava niti prvu normalnu formu


• svaka ćelija sadrži najviše jednu vrijednost
• redci su jedinstvena određeni tj. postoje zapisi koji jedinstvena određuju retke.
Odabir_fakulteta
• podatci se ponavljaju
• fakultet promijeni naziv, (npr. FER promijeni u ETF) - mijenjati u više redaka
• ako Damir odluči odustati od studiranja, u potpunosti nestaje referenca s fakulteta
PMF-Matematika.
zadovoljiti 2NF - Odabir_fakulteta podijeliti
• razdvojiti atribute koji ovise o oba ključa tj. svi atributi tablice ovise
izravno o ključu tablice
• 3NF - svaki atribut može biti određen jedino primarnim ključem
tablice i niti jednim drugim ključem (npr. ako Damira nestaje Split)
tablicu Ucenik dijelimo na dvije tablice
SQL - jezik za rad s bazama podataka
• modeliranje baze podataka
• osmišljavamo tablice entiteta s pripadnim atributima i primarnim ključevima za svaki entitet,
veze među tablicama i slično
• rad s podatcima
• dodajemo podatke, pretražujemo, brišemo i mijenjamo
• SQL jezik (engl. Structured Query Language)
• univerzalni jezik - sličan ili u potpunosti isti za većinu sustava za rad s bazama podataka
• specijalne naredbe i pravila za pisanje
• kreirati bazu podataka ili tablicu sa svim atributima,
• mijenjanje tablice,
• dodavati podatke itd.
• Ispravno napisanu naredbu za dizajniranje baze ili za rad s podatcima zvat ćemo SQL upit
(engl. SQL query )
SQL upiti za modeliranje podataka
• najčešća grafička sučelja za modeliranje baze podataka
• MS SQL,
• MySQL (npr. phpmysql),
• Oracle,
• MS Access, itd.
• u pozadini svakog od tih sučelja - naredbe
ORACLE
PHPMySQL
MS Access
Mi ćemo
pretpostaviti da ne
postoji grafičko
sučelje kojim ćemo
vizualno modelirati
bazu podataka, već
ćemo sve
manipulacije raditi
izravno s
odgovarajućim SQL
naredbama.
SQLite
• nije potrebno instalirati nikakav dodatni softver
• jedna datoteka kojoj se pristupa s pomoću drugih aplikacija
• čitava baza podataka, (može imati više tablica) u jednoj datoteci
• zbog svoje jednostavnosti pogodan npr. za mobilne aplikacije
• SQLite nije primjeren za veće sustave kod kojih ćemo imati više tablica
s puno podataka
https://sqlitebrowser.org/

You might also like