4. Projektovanje baze podataka i modeli podataka
1. Uvod
U prethodnoj temi upoznali smo se sa osnovnim pojmovima baza podataka. Znamo šta je baza podataka, šta su podaci, čemu služi DBMS i gde se baze podataka koriste.
Pitanje: Kako se baza podataka pravi?
Baza podataka se ne pravi tako što odmah otvorimo program za rad sa bazama i počnemo da kreiramo tabele.
Pre nego što napravimo tabele, moramo da razumemo šta treba da čuvamo u bazi, kako su podaci međusobno povezani i koja pravila treba da važe.
Taj proces nazivamo projektovanje baze podataka.
2. Šta je projektovanje baze podataka?
Projektovanje baze podataka je proces planiranja organizacije podataka u bazi tako da podaci budu:
- pravilno organizovani,
- lako dostupni,
- tačni i pouzdani,
- povezani na odgovarajući način,
- zaštićeni,
- pogodni za pretraživanje i menjanje.
Jednostavno rečeno:
Projektovanje baze podataka znači osmisliti kako će podaci biti organizovani pre nego što bazu napravimo.
To je slično projektovanju kuće.
Pre nego što se kuća izgradi, arhitekta pravi plan:
- koliko će biti prostorija,
- gde će se nalaziti prostorije,
- kako će biti povezane,
- gde će biti vrata i prozori,
- koje dimenzije će imati.
Tek kada je plan napravljen, počinje izgradnja.
Kod baze podataka prvo pravimo plan baze, a tek onda kreiramo njene tabele i druge objekte.
3. Primer: školska baza podataka
Zamislimo da treba da napravimo bazu podataka za školu.
Škola ima:
- učenike,
- nastavnike,
- odeljenja,
- predmete,
- ocene.
Ako odmah krenemo da pravimo tabele, možemo napraviti veliki broj grešaka.
Na primer, moramo da odgovorimo na pitanja:
- Koje podatke čuvamo o učeniku?
- Koje podatke čuvamo o nastavniku?
- Kako znamo kom odeljenju učenik pripada?
- Kako znamo koji nastavnik predaje određeni predmet?
- Kako čuvamo ocene?
- Kako povezujemo učenika i njegovu ocenu?
- Kako znamo iz kog je predmeta ocena?
Dakle, pre pravljenja baze moramo da analiziramo sistem.
4. Koraci u projektovanju baze podataka
Projektovanje baze podataka možemo posmatrati kroz nekoliko osnovnih koraka.
1. Analiza problema
Najpre moramo da razumemo sistem za koji pravimo bazu.
Na primer:
Želimo da napravimo bazu podataka za školsku biblioteku.
Moramo da saznamo šta se u biblioteci dešava.
U biblioteci postoje:
- knjige,
- učenici,
- članovi biblioteke,
- pozajmljivanja,
- autori.
Postoje i različite veze između tih objekata.
2. Određivanje podataka
Sledeće pitanje je: Koje podatke treba čuvati?
Na primer, za knjigu možemo čuvati:
- šifru knjige,
- naslov,
- godinu izdanja,
- ISBN,
- izdavača.
Za učenika možemo čuvati:
- šifru učenika,
- ime,
- prezime,
- odeljenje.
Dakle, određujemo koje informacije su nam potrebne.
3. Određivanje odnosa između podataka
Podaci u bazi nisu izolovani.
Na primer:
- učenik pripada odeljenju,
- nastavnik predaje predmet,
- učenik dobija ocenu,
- učenik pozajmljuje knjigu.
Zato moramo utvrditi:
Kako su objekti međusobno povezani?
O ovome ćemo mnogo detaljnije učiti u narednim časovima.
4. Izrada modela baze
Kada razumemo problem, podatke i njihove veze, pravimo model baze podataka.
Model predstavlja pojednostavljeni prikaz sistema.
Na primer, možemo predstaviti:
UČENIK → pripada → ODELJENJU
ili:
UČENIK → pozajmljuje → KNJIGU
Model nam omogućava da bazu sagledamo pre nego što je fizički napravimo.
5. Izrada baze
Tek nakon projektovanja možemo preći na stvarnu implementaciju baze.
Tada se model pretvara u konkretne objekte baze:
- tabele,
- kolone,
- ključeve,
- veze,
- ograničenja i druge objekte.
U ovoj fazi možemo koristiti neki DBMS, na primer Microsoft SQL Server.
5. Šta je model podataka?
Da bismo mogli da projektujemo bazu, potrebno je da znamo šta je model podataka.
Model podataka je način na koji opisujemo podatke, njihove osobine, veze između podataka i pravila koja nad njima važe.
Model možemo zamisliti kao plan ili nacrt baze podataka.
Na primer, kada projektujemo školsku bazu, ne moramo odmah da pravimo stvarne tabele.
Možemo prvo nacrtati:

i prikazati da učenik pripada određenom odeljenju.
6. Zašto su nam potrebni modeli?
Model nam pomaže da:
- razumemo podatke,
- organizujemo podatke,
- uočimo veze između objekata,
- pronađemo moguće probleme,
- dogovorimo izgled buduće baze,
- lakše napravimo stvarnu bazu.
Važna prednost je što model možemo promeniti pre nego što napravimo stvarnu bazu.
Mnogo je lakše promeniti crtež ili plan nego menjati već napravljenu bazu sa velikim brojem tabela i podataka.
7. Tri nivoa modelovanja
Kod projektovanja baze podataka možemo posmatrati tri nivoa:
- konceptualni model
- logički model
- fizički model
Ova tri modela predstavljaju različite nivoe posmatranja iste baze.
Možemo ih zamisliti ovako:
IDEJA SISTEMA
↓
KONCEPTUALNI MODEL
↓
LOGIČKI MODEL
↓
FIZIČKA BAZA PODATAKA
7.1. Konceptualni model
Konceptualni model opisuje sistem sa stanovišta korisnika i stvarnog sveta.
U ovom trenutku ne razmišljamo detaljno o tome da li ćemo koristiti SQL Server, MySQL ili neki drugi DBMS.
Zanima nas:
- koji objekti postoje,
- koje osobine imaju,
- kako su povezani.
Na primer, za školu možemo identifikovati:
- UČENIK
- ODELJENJE
- NASTAVNIK
- PREDMET
- OCENA
I možemo uočiti veze između njih.
Na primer:
UČENIK — pripada — ODELJENJU
NASTAVNIK — predaje — PREDMET
Konceptualni model odgovara na pitanje:
Šta postoji u sistemu i kako je međusobno povezano?
7.2. Logički model
Kada imamo konceptualni model, prelazimo na logički model.
Logički model opisuje kako će podaci biti organizovani u strukturi baze podataka.
Kod relacionih baza podataka to znači da razmišljamo o:
- tabelama,
- kolonama,
- ključevima,
- vezama između tabela,
- ograničenjima.
Na primer, konceptualno imamo:
UČENIK
a u logičkom modelu možemo imati tabelu:
Ucenik
| UcenikID | Ime | Prezime | OdeljenjeID |
|---|---|---|---|
| 1 | Marko | Marković | 3 |
| 2 | Ana | Anić | 2 |
Dakle, konceptualni model govori šta postoji, a logički model detaljnije opisuje kako će podaci biti organizovani u strukturi baze.
7.3. Fizički model
Treći nivo je fizički model.
On opisuje kako će baza zaista biti realizovana u konkretnom DBMS-u.
Na ovom nivou možemo razmišljati o:
- konkretnom DBMS-u,
- tipovima podataka,
- indeksima,
- fizičkom smeštanju podataka,
- performansama,
- drugim tehničkim detaljima.
Na primer, ako koristimo Microsoft SQL Server, možemo definisati:
CREATE TABLE Ucenik
(
UcenikID INT,
Ime VARCHAR(30),
Prezime VARCHAR(30)
);
Ovo je već konkretna implementacija baze.
Napomena: U ovom momentu ne treba da učimo SQL. SQL ćemo koristiti kasnije, kada za to dođe vreme.
7.4. Poređenje tri modela
Možemo ih jednostavno uporediti:
| Model | Osnovno pitanje | Primer |
|---|---|---|
| Konceptualni | Šta postoji u sistemu? | Učenik, predmet, odeljenje |
| Logički | Kako organizujemo podatke? | Tabele, kolone, ključevi |
| Fizički | Kako će baza biti konkretno realizovana? | SQL Server, tipovi podataka, indeksi |
Zapamtite:
Konceptualni model – šta postoji?
Logički model – kako organizujemo podatke?
Fizički model – kako će to biti konkretno realizovano?
8. Primer – biblioteka
Posmatrajmo školsku biblioteku.
Stvarni svet
U biblioteci postoje:
- učenici,
- knjige,
- autori,
- pozajmice.
Učenik može pozajmiti knjigu.
To je stvarna situacija.
Konceptualni model
Možemo izdvojiti:
UČENIK
KNJIGA
POZAJMICA
i njihove veze.
Na primer:
UČENIK → pozajmljuje → KNJIGU
Logički model
Podaci mogu biti organizovani u tabele:
Ucenik
| UcenikID | Ime | Prezime |
|---|
Knjiga
| KnjigaID | Naslov | Godina |
|---|
Pozajmica
| PozajmicaID | UcenikID | KnjigaID | Datum |
|---|
Fizički model
Sada se određuje kako će ove tabele konkretno biti napravljene u izabranom DBMS-u.
Na primer:
- UcenikID – INT
- Ime – VARCHAR(30)
- Datum – DATE
i slično.
9. Veza sa prethodnom temom
U prethodnoj temi smo učili da baza podataka treba da bude:
- organizovana,
- pouzdana,
- bez nepotrebnog ponavljanja podataka,
- bezbedna,
- jednostavna za pretraživanje i ažuriranje.
Sada vidimo da se te osobine ne postižu slučajno.
One zavise od toga kako smo bazu projektovali.
Ako loše projektujemo bazu, kasnije možemo imati:
- nepotrebno ponavljanje podataka,
- teško održavanje,
- greške,
- komplikovane veze,
- probleme prilikom izmene podataka.
Zato je projektovanje veoma važan deo rada sa bazama podataka.
10. Najvažniji pojmovi
Projektovanje baze podataka
Projektovanje baze podataka je proces planiranja organizacije podataka i veza između njih pre izrade stvarne baze.
Model podataka
Model podataka predstavlja način opisivanja podataka, njihovih osobina, veza i pravila.
Konceptualni model
Prikazuje objekte stvarnog sistema i njihove veze.
Logički model
Opisuje organizaciju podataka u strukturi baze, na primer kroz tabele, kolone i ključeve.
Fizički model
Opisuje konkretnu realizaciju baze u izabranom DBMS-u.
11. Pitanja za proveru znanja
- Šta je projektovanje baze podataka? >
- Zašto bazu ne treba praviti bez prethodnog planiranja?
- Šta je model podataka?
- Zašto koristimo modele podataka?
- Koja su tri nivoa modelovanja baze podataka?
- Šta opisuje konceptualni model?
- Šta opisuje logički model?
- Šta opisuje fizički model?
- Koja je osnovna razlika između konceptualnog i logičkog modela?
- Koja je osnovna razlika između logičkog i fizičkog modela?
Zaključak
Kada projektujemo bazu podataka, ne počinjemo od tabela i SQL naredbi.
Prvo posmatramo stvarni sistem.
Pokušavamo da utvrdimo:
Šta postoji?
Koje podatke treba čuvati?
Kako su objekti povezani?
Koja pravila treba da važe?
Tek nakon toga prelazimo na izradu modela, a zatim i na stvarnu bazu podataka.
Zato možemo zapamtiti jednostavan redosled:
STVARNI SISTEM → ANALIZA → MODEL → BAZA PODATAKA
U narednom času počinjemo od jednog od najvažnijih pojmova u konceptualnom modelovanju: ENTITET.