Velimir Milanović
DELPHI
baze podataka
2012.
08.02.2012
1/62
Delphi baze podataka - V. Milanovid
2
SADRŽAJ:
1. Pojam informacionih sistema .............................................................................................................. 3
1. 1. Vrste informacionih sistema ....................................................................................................... 4
1.1.1. Informacioni sistemi za obradu podataka (dp – data processing)........................................ 4
1. 1. 2. Upravljački informacioni sistem (mis – management information systems) ...................... 4
1. 1. 3. Informacioni sistemi za podršku odlučivanju (dss – decision support systems).................. 4
1. 1. 4. Ekspertni sistemi (expert systems) ...................................................................................... 5
1. 2. Projektovanje informacionih sistema ......................................................................................... 5
2 . B A Z E P O D A T A K A ........................................................................................................... 6
2. 1. Modeli baza podataka ................................................................................................................. 8
2. 2. Elementi relacione baze podataka ............................................................................................. 8
2.2.1. Šta se podrazumeva pod dobrim dizajnom baze podataka? ................................................ 9
2. 2. 2. Proces dizajniranja .............................................................................................................. 9
2. 2. 3. Određivanje namene baze podataka ................................................................................ 10
2. 2. 4. Pronalaženje i organizovanje potrebnih informacija ........................................................ 10
2. 2. 5. Raspoređivanje informacija u tabele ................................................................................ 12
2. 2. 6. Pretvaranje stavki informacija u kolone ........................................................................... 13
2. 2. 7. Preciziranje primarnih ključeva ......................................................................................... 14
2. 3. Kreiranje relacija između tabela ................................................................................................ 16
2. 3. 1. Kreiranje relacije „jedan-prema-više“ ............................................................................... 17
2. 3. 2. Kreiranje relacije „više-prema-više“ ................................................................................. 18
2. 3. 3. Kreiranje relacije „jedan-prema-jedan“ ............................................................................ 20
2. 4. Pročišdavanje dizajna ................................................................................................................ 21
2. 4. 1. Pročišdavanje tabele „Proizvodi“ ...................................................................................... 21
2. 5. Primenjivanje pravila normalizacije .......................................................................................... 22
2. 5. 1. Prva normalna forma ........................................................................................................ 23
2. 5. 2. Druga normalna forma...................................................................................................... 23
2. 5. 3. Treda normalna forma ...................................................................................................... 23
3. MICROSOFT ACCESS 2007 ................................................................................................................. 24
3. 1. Opis primera na kojem je priručnik baziran .............................................................................. 24
3. 3. Pokretanje programa, pripremne radnje, kreiranje prve tabele .............................................. 25
3. 4. Planiranje tabela ................................................................................................................... 26
3. 5. Kreiranje prve tabele ................................................................................................................. 27
3. 6. Unošenje prvih zapisa ............................................................................................................... 31
4. DELPHI baze podataka ....................................................................................................................... 34
5. SQL ..................................................................................................................................................... 51
Osnove naredbe SELECT.................................................................................................................... 51
Uslovna selekcija podataka ............................................................................................................... 52
Složeni uslovi ................................................................................................................................. 53
Operator LIKE ................................................................................................................................ 53
Agregatne funkcije ............................................................................................................................ 54
Klauzule GROUP BY i HAVING ........................................................................................................... 54
SQL u DELPHI-ju................................................................................................................................. 55
6. Izveštaji u DELPHI - ju ........................................................................................................................ 57
autor: Velja Milanovid
08.02.2012
2/62
Delphi baze podataka - V. Milanovid
3
1. Pojam informacionih sistema
Pod pojmom sistem podrazumevdemo skup elemenata koji su međusobno povezani i
ponašaju se po određenim zakonitostima. U starogrčkom jeziku reč sistem koristila se
prvobitno kao naziv za udruženje, zajednicu ili društvo, da bi kasnije bila u upotrebi i kada se
označavao neki skup, celina, čak i sama država.
Da bi bilo jasno šta čini jedan sistem, sistem se mora posmatrati u odnosu na njegovo
okruženje. Granica sistema razdvaja sistem od spoljnih sistema. Interakcija sistema sa
okruženjem se sastoji iz skupa ulaznih i izlaznih dejstava.
Dejstvo okoline na sistem naziva se ulaz.
Dejstvo sistema na okolinu je izlaz sistema.
Slika 1
Značajnu ulogu imaju informacioni sistemi. U literaturi se nalazi mnogo različitih definicija.
Informacioni sistem najčešde se definiše kao skup ljudi i opreme koji po određenoj
organizaciji i metodama obavljaju prikupljanje, prenos, obradu, čuvanje i dostavljanje
podataka i informacija na korišdenje.
Osnovni cilj informacionog sistema je da omogudi prikupljanje podataka i prikazivanje
dobijenih informacija na najbolji način.
Kao elementi informacionog sistema danas se uglavnom navode:
a)
b)
c)
d)
tehnička oprema (hardware)
programska oprema (software)
organizaciona podrška (orgware)
kadrovska podrška (lifeware).
Svi materijalni delovi računara koji su međusobno povezani ili funkciono usklađeni, naziva se
mašinska oprema ili hardver (hardware).
Sve što je u vezi sa programima nazivasmo programska oprema ili softver (software).
Organizacionu podršku (orgware) čine metode i postupci za usklađivanje svih delova
informacionog sistema u organizovanu celinu.
autor: Velja Milanovid
08.02.2012
3/62
Delphi baze podataka - V. Milanovid
4
Kadrovsku podršku (lifeware) čine kadrovi koji neposredno rade na poslovima i krajnji
korisnici informacionog sistema.
1. 1. Vrste informacionih sistema
Danas je uglavnom prihvadena slededa podela::
1.
2.
3.
4.
informacioni sistemi za obradu podataka (DP – Data processing)
upravljački informacioni sistem (MIS – Management Information Systems),
informacioni sistemi za podršku odlučivanju (DSS – Decision Support Systems)
ekspertni sistem (ES – Expert System)
1.1.1. Informacioni sistemi za obradu podataka (dp – data processing)
Osnovna uloga takvih informacionih sistema bila je prihvatanje i obrada poslovnih
transakcija, tako da se njihova najčešda primena sastojala u zameni ručne obrade
mašinskom, u smislu mehanografske obrade. U središtu pažnje informacionih sistema za
obradu podataka su podaci. Programska rešenja zasnivaju se na klasičnim programskim
jezicima (C++, Delphi, C, Java, Visual Basic, Visual C++ , C#). Osnovni izlazi iz sistema su
štampani izveštaji.
Osnove osobine informacionih sistema za obradu podataka jesu:




pasivan način korišdenja,
korisnici su zaposleni isključivo u posebnom organizacionom delu za elektronsku
obradu podataka (elektronski računarski centar),
mehanička efikasnost u obavljanju posla,
zasnovanost na analizi prošlih događaja
1. 1. 2. Upravljački informacioni sistem (mis – management information systems)
Upravljački informacioni sistem je mreža zasnovana na računarima, koja pruža odgovarajude
podatke rukovodstvu preduzeda u svrhu donošenja odluka. Ti sistemi javljaju se kao druga
faza razvoja informacionih sistema, kao posledica potrebe poslovnih sistema da prikupljene i
obrađene informacije iskoriste u svrhu upravljanja, a takođe i kao posledica razvoja hardvera
i usavršavanja softvera. Podaci se unose tamo gde nastaju, terminalskom mrežom, a proces
izveštavanja je poboljšan jer se osim pisanog izveštaja unosi i ekranski tip izveštaja koji
korisnik dobija na ekranu svog terminala. Upravljački informacioni sistemi orijentisani su ka
informacijama.
1. 1. 3. Informacioni sistemi za podršku odlučivanju (dss – decision support
systems)
Informacioni sistemi za podršku odlučivanju (DSS – Decision Support Systems) počinju da se
razvijaju nastankom programskih jezika četvrte generacije i takozvanih generatora aplikacija.
To su sistemi koji pomažu rukovodstvu preduzeda da rešava probleme koji su specifični.
Korisnik donosi poslovne odluke u interakciji sa izlaznim informacijama iz informacionog
sistema i da pružaju mnoge važne prednosti u odnosu na predhodne vrste informacionih
sistema, u vidu:
raznovrsnijeg izveštavanja
korišdenja grafičkih i drugih izlaznih mogudnosti,
eliminacije vedeg dela papirne dokumentacije na ulazu,
autor: Velja Milanovid
08.02.2012
4/62
Delphi baze podataka - V. Milanovid
5
uvođenja elemenata veštačke inteligencije.
1. 1. 4. Ekspertni sistemi (expert systems)
Ekspertni sistemi su najnovija rešenja u razvoju informacione tehnologije. Oni su povezani sa
nastankom veštačke inteligencije i razvijaju se kao jedan njen deo. Veštačka inteligencija je
termin koji je dodeljen mnogim oblastima istraživanja koje se bave rastudom sposobnošdu
računara da izvršavaju zadatke kako to čovek radi. U izradi ekspertnog sistema učestvuje
vedi broj eksperata za oblast rešavanja problema i za softver.
Za razliku od informacionih sistema za podršku u odlučivanju, gde je korisnik bio u situaciji
da dobije pomod od sistema, ali samo ako je imao ideju za tip izveštaja ili korišdenje nekog
modela, ekspertni sistem mu nudi alternativu, odgovor kako bi drugi eksperti rešili sličan
problem.
Ekspertni sistemi su samoučedi, tako da pamte rešenja korisnika koja mogu da budu od
interesa za obogadivanje baze znanja sistema. Oni koriste prirodan jezik – uglavnom engleski
i na taj način je još manje formalizovano njihovo korišdenje.
Ekspertni sistemi ne zasnivaju se na bazi podataka, ved na bazi znanja.
Veoma se lako menja a kao svoj obavezni deo sadrži objašnjenje odluke. Oni sadrže bazu
znanja organizovanu za korišdenje kao skup pravila. Ekspertni sistemi uključuju osnovne ideje
inteligentnog rešavanja problema. Oni su prirodna faza u evolucuji računara. Slededa faza
predstavlja dalju evoluciju ekspertnih sistema u formu koja se naziva „kreativna
inteligencija“ (CREATIVE INTELLIGENCE), u kojoj nove ideje treba da stvara sam računar.
1. 2. Projektovanje informacionih sistema
Razvoj informacionog sistema je složen zadatak. Uglavnom se taj proces odvija u slededim
fazama:
projektovanje
izgradnja
uvođenje
funkcionisanje.
Projektovanje informacionog sistema mora biti zasnovano na zahtevima korisnika i
prethodnoj analizi postojedeg stanje, na osnovu čega se definiše struktura informacionog
sistema kao i potrebna tehnička oprema, softver, organizaciona i kadrovska podrška.
Izgradnja informacionog sistema se obavlja nabavkom hardvera i sistemskog softvera,
izradom ili nabavkom aplikativnog softvera i obukom kadrova. Za tu fazu neophodno je
napraviti dinamički plan.
Uvođenje informacionog sistema je faza razvoja koja se realizuje kada su obezbeđene sve
komponente informacionog sistema.
Funkcionisanje informacionog sistema započinje posle uspešno obavljenih testova i probnog
rada svih komponenti i dovoljne osposobljenosti kadrova. Za normalno funkcionisanje
informacionog sistema treba obezbediti neprekidno održavanje i potrebne uslove za dalji
razvoj.
autor: Velja Milanovid
08.02.2012
5/62
Delphi baze podataka - V. Milanovid
6
2 . B A Z E P O D ATA K A
Da bi shvatili šta su to baze podataka prvo morate znati da razlikujete podatke od
informacija. Reči “podatak” i “informacija” se često koriste kao sinonimi. Ipak, one imaju
različito značenje. Podatak <> informacija
Podatak može biti
Sirov materijal, iz kojeg mogu da se izvuku zaključci, da se nešto sazna
Podaci su činjenice, iz kojih mogu da se dobiju nove činjenice
Informacija predstavlja:
Znanje
Značenje
Funkcija podatka
Rezultat kombinovanja, upoređivanja i izvođenja zaključaka nad podacima
Sistem baza podataka sadrži 4 osnovne komponente:
korisnici,
aplikacija nad bazom podataka,
sistem za upravljanje bazama podataka (Database Management System - DBMS), i
baza podataka.
Slika 2
Baza podataka je skup podataka koji su povezani određenim relacijama .
Izraz je nastao u kompjuterskoj industriji, njegovo značenje prošireno od strane
običnih korisnika tako da danas označava praktično svaku kolekciju podataka,
elektronsku i neelektronsku, koju je mogude proširivati, menjati i brisati (uništavati).
Osnovne f-je BP su:
Baza podataka obezbeđjuje mogudnosti pretraživanja, dodavanja, modifikovanja i
brisanja podataka kada je to potrebno.
Baza podataka takođe obezbeđejuje mogudnost transformiranja dobijenih podataka
u korisne informacije.
Bazom podataka obično rukuje administrator baze podataka (DBA)
Omogudeno je smeštanje različitih podataka: dokumenti, slike, video, zvuk...
Baza podataka predstavlja organizovan skup logički povezanih podataka koji su smešteni u
jednoj ili više datoteka, tako da se mogu :
pretraživati,
autor: Velja Milanovid
08.02.2012
6/62
Delphi baze podataka - V. Milanovid
7
sortirati,
ažurirati,
grupisati,
transformisati i
štampati.
U vedini modernih baza podataka, može se smestiti i iz njih dobiti veliki broj različitih
podataka i dokumenata. Unutar baze podataka, podaci su smešteni u “sirovoj” formi. Kada
se ti sirovi podaci pretražuju ili dobijaju upitom, oni se transformišu u mnogo korisniju
izlaznu informaciju.
Iz „definicije" baze podataka vidi se da je ona kolekcija međusobno povezanih podataka
organizovanih u tabele. Podaci u bazama podataka su organizovani u dvodimenzionalne
tabele. Tabela može da ima više kolona, gde svaka kolona predstavlja neku osobinu ili
atribut.
Vrste tabele čine konkretni podaci, odnosno konkrente vrednosti osobina/atributa nekog
objekta.
Prava snaga baze podataka ne leži u mogudnosti skladištenja informacija, ved u
sposobnosti pronalaženja i preuzimanja tačno onih informacija koje želimo.
Šta baza podataka ima sa svakodnevnim životom? Više nego što možete zamisliti...
Mnogo veb sajtova koje posedujete je podržano bazom podataka
Mnoga radna mesta na šalterima, u kancelarijama, u proizvodnji koriste baze
podataka
Mnoge usluge koje dobijate svakodnevno u banci, pošti, na autobuskoj stanici ili u
domu zdravlja su podržane bazama podataka.....
Baza podataka može biti organizovana kao kolekcija zapisa u kompjuteru kako bi
kompjuterski program mogao da nađe u BP informacije koje bi potom iskoristio.
Taj tip programa se zove Sistem za upravljanje bazom podataka (DBMS).
DBMS treba da obezbedi sledede funkcije za kontrolisani pristup podacima u bazi
podataka:
Sigurnosni sistem, koji onemogudava pristup bazi podataka neautorizovanim
korisnicima (sigurnosni servisi), odnosno samo autorizovani korisnici mogu da
koriste podatke u skladu sa definisanim privilegijama (autorizacioni servisi)
Integritetni sistem, koji održava konzistentnost podataka u bazi podataka,
odnosno da se sve promene dešavaju u skladu sa definisanim pravilima.
Sistem za kontrolu konkurencije, koji dopušta deljivi pristup podacima iz baze
podataka, tj da se obezbedi korektno ažuriranje podataka kada više korisnika
pokušava istovremeno da vrši ažuriranja.
Sistem za kontrolu oporavka baze podataka, koji omogudava rekonstrukciju
prethodnog konzistentnog stanja u slučaju neke hardverske ili softverske
neispravnosti.
Razne korisničke funkcije, kao što su import, eksport podataka, statističke analize,
funkcije za nadgledanje,...
autor: Velja Milanovid
08.02.2012
7/62
Delphi baze podataka - V. Milanovid
8
2. 1. Modeli baza podataka
Ravni model se sastoji od jednog dvodimenzionalnog niza podataka, gde se smatra da svi
članovi iste kolone imaju slične vrednosti, a za sve članove istog reda se predpostavlja da su
povezani međusobom. Ovaj model je osnova Microsoft Excel spreadsheet-a.
Mrežni model organizuje informacije koristedi dve osnove, zvane podatak i set. Podaci
sadrže polja. Setovi definišu “jedan prema više” odnose između podataka: jedan vlasnik, više
članova. Podatak može biti vlasnik u bilo kojem setu i član bilo kojeg broja setova.
Slika 3
Relacioni model je matematički model definisan u obliku predikatske logike i teorije nizova.
Slika 4
Relaciona BP sadrži više tabela, sličnih onima iz “ravnog” modela BP. Relacije između tabela
nisu eksplicitno definisane, umesto toga se koriste ključevi kojima se omogudava poklapanje
redova podataka u različitim tabelama.
Ključ je skup jedne ili više kolona u jednoj tabeli čije vrednosti se moraju poklapati
u odgovarajudim kolonama druge tabele.
Bilo koja kolona (ili grupisane kolone) može biti ključ. Nije neophodno definisati sve ključeve
unapred, kolona se može koristiti kao ključ iako nije predhodno bila predviđena za to.
Ključ kojim se jedinstveno definiše red u tabeli se naziva jedinstveni ključ ( primarni ključ).
Ključ čije se vrednosti mogu ponavljati naziva se sekundarni ključ.
2. 2. Elementi relacione baze podataka
Access organizuje informacije u tabele: liste redova i kolona koje podsedaju na notes
računovođe ili unakrsnu tabelu. U jednostavnoj bazi podataka možete imati samo jednu
autor: Velja Milanovid
08.02.2012
8/62
Delphi baze podataka - V. Milanovid
9
tabelu. Za vedinu baza podataka bide vam potrebno više od jedne tabele. Na primer, možda
dete imati jednu tabelu za skladištenje informacija o proizvodima, drugu tabelu za
skladištenje informacija o porudžbinama i još jednu sa informacijama o kupcima.
Slika 5
Svaki red se pravilnije zove zapis, a svaka kolona polje. Zapis predstavlja
kombinovanje informacija o nečemu na smislen i dosledan način. Polje je pojedinačna
stavka informacije – tip stavke koji se pojavljuje u svakom zapisu. U tabeli „Proizvodi“,
na primer, svaki red ili zapis sadrži informacije o jednom proizvodu. Svaka kolona ili
polje ima isti tip informacija o tom proizvodu, na primer njegovo ime ili cenu.
2.2.1. Šta se podrazumeva pod dobrim dizajnom baze podataka?
Procesom dizajniranja baze podataka upravljaju određeni principi.
Prvi princip je da su duplirane informacije (koje se nazivaju i redundantni podaci) loša pojava,
jer nepotrebno zauzimaju prostor i povedavaju verovatnodu pojave grešaka i nedoslednosti.
Drugi princip ističe važnost ispravnosti i potpunosti informacija. Ako baza podataka sadrži
neispravne informacije, izveštaji koji izvlače informacije iz baze podataka de takođe sadržati
neispravne informacije. Kao posledica toga, donete odluke koje su zasnovane na tim
izveštajima de u osnovi sadržati pogrešne informacije.
2. 2. 2. Proces dizajniranja
Proces dizajniranja se sastoji iz slededih koraka:

Određivanje namene baze podataka
Ovaj korak doprinosi pripremi za preostale korake.

Pronalaženje i organizovanje potrebnih informacija
autor: Velja Milanovid
08.02.2012
9/62
Delphi baze podataka - V. Milanovid
10
Sakupite sve tipove informacija koje dete možda želeli da zapišete u bazu podataka, poput
imena proizvoda i broja porudžbine.

Raspoređivanje informacija u tabele
Rasporedite stavke informacija po glavnim entitetima ili temama, kao što su „Proizvodi“ ili
„Porudžbine“. Na taj način svaka tema de postati tabela.

Pretvaranje stavki informacija u kolone
Odlučite koje informacije želite da uskladištite u svaku tabelu. Svaka stavka de postati polje i
prikazade se kao kolona u tabeli. Na primer, tabela „Zaposleni“ bi mogla da sadrži polja
poput „Prezime“ i „Datum zapošljavanja“.

Određivanje primarnih ključeva
Odaberite primarni ključ za svaku tabelu. Primarni ključ predstavlja kolonu koja se koristi da
jedinstveno identifikuje svaki red, na primer „ID proizvoda“ ili „ID porudžbine“.

Podešavanje relacija između tabela
Razmotrite svaku tabelu i odlučite na koji način de podaci iz jedne tabele biti povezani sa
podacima u drugoj tabeli. Dodajte polja u tabele ili kreirajte nove tabele kako biste, po
potrebi, objasnili relacije.

Pročišdavanje dizajna
Analizirajte dizajn radi pronalaženja grešaka. Kreirajte tabele i dodajte nekoliko zapisa sa
probnim podacima. Proverite da li iz tabela možete da dobijete željene rezultate. Po potrebi
podesite dizajn.

Primenjivanje pravila normalizacije
Primenite pravila normalizacije podataka kako biste videli da li su tabele ispravno
strukturirane. Po potrebi podesite tabele.
2. 2. 3. Određivanje namene baze podataka
Preporučuje se da zapišete namenu baze podataka na papir – samu namenu, način na koji
planirate da je koristite, kao i ko de je koristiti. Na primer, za malu bazu podataka za posao
koji radite kod kude mogli biste da zapišete nešto jednostavno poput „Baza podataka kupaca
sadrži listu informacija o kupcima sa namenom kreiranja pošiljki i izveštaja“. Ako je baza
podataka složenija ili je koristi vedi broj ljudi, što se često dešava u poslovnom okruženju,
opis namene bi mogao da zauzme jedan ili više pasusa, a trebalo bi takođe da sadrži vreme
kada de i način na koji de svaka osoba koristiti tu bazu podataka. Potrebno je da postoji
precizno definisan cilj zadatka koji dete modi da uzmete u obzir tokom čitavog procesa
dizajniranja. Postojanje tako definisanog cilja vam pomaže da se pri donošenju odluka
usredsredite na ciljeve.
2. 2. 4. Pronalaženje i organizovanje potrebnih informacija
Da biste pronašli i organizovali potrebne informacije, počnite od postojedih informacija. Na
primer, možda izlazne porudžbine zapisujete u registrator ili informacije o kupcima čuvate na
papirnim obrascima u arhivi. Sakupite te dokumente i navedite sve prikazane tipove
informacija (na primer, svako polje koje popunjavate u obrascu). Ako nemate postojede
autor: Velja Milanovid
08.02.2012
10/62
Delphi baze podataka - V. Milanovid
11
obrasce, zamislite da morate da dizajnirate obrazac kako biste zapisali informacije o
kupcima. Koje informacije biste uneli u obrazac? Koja polja za popunjavanje biste kreirali?
Identifikujte i navedite sve te stavke. Na primer, pretpostavite da trenutno listu kupaca
čuvate na karticama za indeksiranje. Pregledanje ovih kartica bi moglo da pokaže da svaka
kartica sadrži ime, adresu, grad, državu, poštanski broj i broj telefona kupca. Svaka od ovih
stavki predstavlja potencijalnu kolonu u tabeli.
Dok pripremate listu, nemojte se truditi da ona odmah bude savršena, ved navedite svaku
stavku koje se setite. Ako de još neke osobe koristiti bazu podataka, i njih upitajte za ideje.
Kasnije možete da preciznije podesite listu.
Nakon toga razmotrite tipove izveštaja i pošiljki koje dete možda želeti da kreirate na osnovu
baze podataka. Na primer, možda biste želeli da kreirate izveštaj o prodaji proizvoda koji de
prodaju prikazivati po regionu ili izveštaj sa rezimeom zaliha koji prikazuje nivoe zaliha
proizvoda. Možda biste želeli da generišete i tipska pisma koja dete slati kupcima najavljujudi
prodajni događaj ili nudedi premiju. Dizajnirajte izveštaj u glavi i zamislite kako de izgledati.
Koje informacije biste obuhvatili izveštajem? Navedite svaku stavku. To isto učinite za tipsko
pismo, kao i za svaki drugi izveštaj čije kreiranje planirate.
Slika 6
Razmišljanje o izveštajima i pošiljkama koje biste želeli da kreirate pomaže vam da
identifikujete stavke koje de vam biti potrebne u bazi podataka. Na primer, pretpostavimo da
ste kupcima omogudili da daju (ili odbiju) saglasnost za periodične ispravke koje se šalju
putem e-pošte i da želite da odštampate listu onih koji su dali saglasnost. U tabelu sa
kupcima dodajte kolonu „Slanje e-pošte“ da biste zapisali te informacije. Polje za svakog
kupca možete da postavite na vrednost „Da“ ili „Ne“.
Potreba da se kupcima šalju e-poruke podrazumeva još jednu stavku koju je potrebno
zapisati. Kada saznate da kupac želi da prima e-poruke, moradete da znate i e-adresu na koju
dete ih poslati. Stoga je potrebno da zapišete e-adresu svakog kupca.
Ključna stvar koju bi trebalo da imate u vidu je da svaku informaciju treba da raščlanite na
najmanje korisne delove. Kad su u pitanju imena, puno ime podelite na dva dela – ime i
prezime, kako bi prezime bilo odmah dostupno. Odvojeno skladištenje prezimena kupaca
može da bude korisno ako, na primer, izveštaj želite da sortirate po prezimenu. Uopšte uzev,
ako želite da sortirate, pretražujete, izračunavate ili izveštavate na osnovu neke stavke sa
informacijama, trebalo bi da tu stavku smestite u posebno polje.
autor: Velja Milanovid
08.02.2012
11/62
Delphi baze podataka - V. Milanovid
12
Razmislite o pitanjima na koja možda želite da baza podataka pruži odgovor. Na primer,
koliko ste prodaja preporučenog proizvoda zaključili prošlog meseca? Gde žive vaši najvažniji
kupci? Ko je dobavljač vašeg najprodavanijeg proizvoda? Ukoliko predvidite ove odgovore,
bidete u mogudnosti da se usredsredite na dodatne stavke koje treba da zapišete.
Posle sakupljanja ovih informacija spremni ste za slededi korak.
2. 2. 5. Raspoređivanje informacija u tabele
Odaberite glavne entitete ili teme kako biste informacije rasporedili u tabele. Na primer,
pošto pronađete i organizujete informacije za bazu podataka prodaje proizvoda,
preliminarna lista bi mogla da izgleda ovako:
Slika 7
Glavni entiteti koje su ovde prikazani su proizvodi, dobavljači, kupci i porudžbine. Stoga,
kreiranje ima smisla početi sa ove četiri tabele: jedna je za činjenice o proizvodima, druga za
činjenice o dobavljačima, treda za činjenice o kupcima, a četvrta za činjenice o
porudžbinama. Iako ovim lista nije dovršena, to je dobar početak. Možete da nastavite s
pročišdavanjem ove liste sve dok ne dobijete dizajn koji dobro funkcioniše.
Kada prvi put budete redigovali preliminarnu listu stavki, možda dete poželeti da ih smestite
u jednu tabelu, umesto u četiri koje su prikazane na prethodnoj slici. Sada dete saznati zašto
bi to bilo loše. Nakratko razmotrite tabelu koja je ovde prikazana:
Slika 8
autor: Velja Milanovid
08.02.2012
12/62
Delphi baze podataka - V. Milanovid
13
U ovom slučaju, svaki red sadrži informacije i o proizvodima i o dobavljačima. Pošto možete
imati veliki broj proizvoda od istog dobavljača, informacije o imenu dobavljača i njegovoj
adresi moraju se ponoviti više puta. Na taj način se zauzima nepotreban prostor na disku.
Mnogo je bolja opcija da samo jednom zapišete informacije o dobavljaču u odvojenu tabelu
„Dobavljači“, a zatim je povežete sa tabelom „Proizvodi“.
Drugi problem sa dizajnom u ovom slučaju javlja se kada je potrebno da izmenite informacije
o dobavljaču. Na primer, pretpostavimo da treba da promenite adresu dobavljača. Pošto se
ona pojavljuje na mnogo mesta, može da se desi da slučajno promenite adresu na jednom
mestu, a da zaboravite da je promenite na ostalim mestima. Zapisivanje adrese dobavljača
na samo jednom mestu rešava taj problem.
Kada dizajnirate bazu podataka, uvek pokušajte da svaku činjenicu zapišete samo jednom.
Ako je potrebno da istu informaciju, poput adrese određenog dobavljača, ponavljate na više
mesta, smestite tu informaciju u odvojenu tabelu.
Na kraju, pretpostavimo da postoji samo jedan proizvod vinarije „Coho Winery“, a vi želite
da ga izbrišete bez gubljenja informacija o imenu i adresi dobavljača. Kako dete izbrisati zapis
o proizvodu, a da pri tome ne izgubite i informacije o dobavljaču? To nije mogude. Pošto
svaki zapis sadrži činjenice o proizvodu, kao i činjenice o dobavljaču, ne možete da izbrišete
jedno, a da ne izbrišete i drugo. Da biste ove činjenice čuvali odvojeno, tabelu morate
podeliti na dva dela: jedna tabela služi za informacije o proizvodu, a druga za informacije o
dobavljačima. Brisanje zapisa o proizvodu bi trebalo da izbriše činjenice o proizvodu, a ne i
činjenice o dobavljaču.
Kada odaberete temu za tabelu, kolone u toj tabeli bi trebalo da skladište samo činjenice o
temi. Na primer, tabela proizvoda bi trebalo da skladišti samo činjenice o proizvodima. Pošto
je adresa dobavljača činjenica o dobavljaču, a ne činjenica o proizvodu, ona pripada tabeli o
dobavljačima.
2. 2. 6. Pretvaranje stavki informacija u kolone
Odlučite koje informacije treba da pratite u vezi sa temom zapisanom u tabeli kako biste
odredili kolone u tabeli. Na primer, kolone „Ime“, „Adresa“, „Grad-država-poštanski broj“,
„Slanje e-pošte“, „Oslovljavanje“ i „E-adresa“ predstavljaju dobru početnu listu kolona za
tabelu „Kupci“. Svaki zapis u tabeli sadrži isti skup kolona tako da za svaki zapis možete da
uskladištite informacije o imenu, adresi, gradu-državi-poštanskom broju, slanju e-pošte,
oslovljavanju i e-adresi. Na primer, kolona sa adresama sadrži adrese kupaca. Svaki zapis
obuhvata podatke o jednom kupcu, a polje za adresu sadrži adresu tog kupca.
Nakon što odredite početni skup kolona za svaku tabelu, kolone možete dodatno da
pročistite. Na primer, dobro je uskladištiti puno ime kupca u dve odvojene kolone – ime i
prezime, kako biste mogli da sortirate, pretražujete i indeksirate samo prema ovim
kolonama. Slično tome, adresa se u stvari sastoji od pet odvojenih komponenti – adrese,
grada, države, poštanskog broja i zemlje/regiona, koje je korisno uskladištiti u odvojene
kolone. Na primer, ako želite da izvršite operaciju pretraživanja, filtriranja ili sortiranja po
državi, potrebna vam je informacija o državi koja je uskladištena u odvojenoj koloni.
Trebalo bi da razmotrite da li de baza podataka sadržati informacije samo domadeg porekla
ili i međunarodnog. Na primer, ako planirate da skladištite međunarodne adrese, bolje je
umesto kolone „Država“ imati kolonu „Region“ jer takva kolona može da prihvati i domade
autor: Velja Milanovid
08.02.2012
13/62
Delphi baze podataka - V. Milanovid
14
države, kao i regione drugih zemalja/regiona. Slično tome, kolona „Poštanski broj“ ima više
smisla nego kolona „Poštanski broj – Srbija“ ako dete skladištiti međunarodne adrese.
Slededa lista sadrži nekoliko saveta za određivanje kolona.

Ne uključujte izračunate podatke
U vedini slučajeva, rezultat računskih operacija ne bi trebalo da skladištite u tabele. Umesto
toga, Access može da izvršava računske operacije kada vi želite da vidite odgovarajudi
rezultat. Na primer, pretpostavimo da postoji izveštaj „Proizvodi u porudžbini“ koji prikazuje
podzbir jedinica u porudžbini za svaku kategoriju proizvoda u bazi podataka. Međutim,
kolona podzbira „Jedinice u porudžbini“ ne postoji ni u jednoj tabeli. Umesto toga, tabela
„Proizvodi“ sadrži kolonu „Jedinice u porudžbini“ koja za svaki proizvod skladišti jedinice u
porudžbini. Koristedi te podatke, Access izračunava podzbir svaki put kada odštampate
izveštaj. Sam podzbir ne bi trebalo skladištiti u tabeli.

Informacije uskladištite u najmanje logičke jedinice
Možda dete poželeti da imate jedno polje za puna lična imena ili imena proizvoda sa opisima
proizvoda. Ako kombinujete više vrsta informacija u jednom polju, kasnije de biti teško
preuzeti pojedinačne činjenice. Potrudite se da informacije raščlanite na logičke jedinice; na
primer, kreirajte odvojena polja za ime i prezime ili ime, kategoriju i opis proizvoda.
Slika 9
Kada pročistite kolone sa podacima u svim tabelama, modi dete da odaberete primarni ključ
za svaku tabelu.
2. 2. 7. Preciziranje primarnih ključeva
Svaka tabela bi trebalo da sadrži kolonu ili skup kolona koji jedinstveno identifikuje svaki red
uskladišten u tabeli. To je često jedinstveni identifikacioni broj, poput ID broja zaposlenog ili
serijskog broja. U terminologiji baze podataka ova informacije se naziva primarni ključ
autor: Velja Milanovid
08.02.2012
14/62
Delphi baze podataka - V. Milanovid
15
tabele. Access polja primarnog ključa koristi za brzo povezivanje podataka iz više tabela, kao i
sakupljanje podataka za vaše potrebe.
Ako ved imate jedinstveni identifikator tabele, kao što je broj proizvoda koji jedinstveno
identifikuje svaki proizvod u katalogu, taj identifikator možete da koristite kao primarni ključ
tabele – ali samo ako de vrednosti za svaki zapis u ovoj koloni uvek biti različite. U
primarnom ključu ne možete imati duplirane vrednosti. Na primer, imena osoba nemojte
koristiti kao primarni ključ jer ona nisu jedinstvena. Lako bi moglo da se desi da dve osobe u
jednoj tabeli imaju isto ime.
Primarni ključ uvek mora da ima vrednost. Ako postoji mogudnost da vrednost kolone u
nekom trenutku postane nedodeljena ili nepoznata (vrednost koja nedostaje), ona ne može
da se koristi kao komponenta u primarnom ključu.
Uvek bi trebalo da odaberete primarni ključ čija se vrednost nede menjati. U bazi podataka
sa više tabela primarni ključ jedne tabele se može koristiti kao referenca u drugim tabelama.
Ako se primarni ključ promeni, promena se mora primeniti i na sva mesta na kojima se
referencira na ključ. Korišdenje primarnog ključa koji se nede menjati smanjuje verovatnodu
da primarni ključ postane nesinhronizovan sa drugim tabelama koje na njega referenciraju.
Kao primarni ključ se često koristi proizvoljni jedinstven broj. Na primer, svakoj porudžbini
možete da dodelite jedinstveni broj porudžbine. Jedina namena broja porudžbine je
identifikacija porudžbine. On se nakon dodeljivanja nikada ne menja.
Ako nemate u vidu kolonu ili skup kolona koje bi mogle da budu dobar primarni ključ,
razmotrite upotrebu kolone koja sadrži tip podataka „Automatsko numerisanje“. Kada
koristite tip podataka „Automatsko numerisanje“, Access de automatski dodeliti vrednost
umesto vas. Takav identifikator nije zasnovan na činjenicama; oni ne sadrže činjenične
informacije koje opisuju red koji predstavljaju. Ti identifikatori su idealni za korišdenje u vidu
primarnih ključeva jer se ne menjaju. Verovatnije je da se primarni ključ koji sadrži činjenice
o redu – npr. broj telefona ili ime kupca – promeni jer se same činjenične informacije mogu
promeniti.
Slika 10
Kolona čiji je tip podataka postavljen na „Automatsko numerisanje“ je često dobar
primarni ključ. Nijedan ID proizvoda se ne ponavlja.
U nekim slučajevima, možda dete želeti da za primarni ključ tabele koristite dva ili više polja.
Na primer, tabela „Detalji porudžbine“ u kojoj su uskladištene stavke za porudžbinu bi za
primarni ključ koristila dve kolone: „ID porudžbine“ i „ID proizvoda“. Kada se primarni ključ
sastoji iz više kolona, naziva se i složeni ključ.
U bazama podataka prodaje proizvoda možete da kreirate kolonu „Automatsko
numerisanje“ koja de u svakoj tabeli služiti kao primarni ključ: „ID proizvoda“ za tabelu
„Proizvodi“, „ID porudžbine“ za tabelu „Porudžbine“, „ID kupca“ za kolonu „Kupci“ i „ID
dobavljača“ za tabelu „Dobavljači“.
autor: Velja Milanovid
08.02.2012
15/62
Delphi baze podataka - V. Milanovid
16
Slika 11
2. 3. Kreiranje relacija između tabela
Nakon raspoređivanja informacija u tabele, potreban vam je metod da ih ponovo povežete
na smislen način. Na primer, slededi obrazac sadrži informacije iz nekoliko tabela.
Slika 12
autor: Velja Milanovid
08.02.2012
16/62
Delphi baze podataka - V. Milanovid
17
Informacije u ovom obrascu potiču iz tabele „Klijenti“…
…tabele „Zaposleni“…
…tabele „Porudžbine“…
…tabele „Proizvodi“…
…i tabele „Detalji porudžbine“.
Access je sistem za upravljanje relacionim bazama podataka. U relacionoj bazi podataka
informacije se na osnovu teme dele u zasebne tabele. Nakon toga se koriste relacije između
tabela kako bi se informacije po potrebi povezale.
2. 3. 1. Kreiranje relacije „jedan-prema-više“
Razmotrite ovaj primer: tabele „Dobavljači“ i „Proizvodi“ u bazi podataka porudžbina
proizvoda. Dobavljač može da dostavlja neograničen broj proizvoda. To znači da za svakog
dobavljača koji je predstavljen u tabeli „Dobavljači“ može da postoji više proizvoda
predstavljanih u tabeli „Proizvodi“. Dakle, relacija između tabele „Dobavljači“ i tabele
„Proizvodi“ je relacija „jedan-prema-više“.
Slika 13
Da biste predstavili relaciju „jedan-prema-više“ u dizajnu baze podataka, primarni ključ sa
strane relacije „jedan“ dodajte u vidu jedne ili više dodatnih kolona u tabelu na strani relacije
„više“. U ovom slučaju, npr. kolonu „ID dobavljača“ dodajete u tabelu „Proizvodi“. Access de
nakon toga modi da koristi ID broj dobavljača u tabeli „Proizvodi“ za pronalaženje
odgovarajudeg dobavljača za svaki proizvod.
Kolona „ID dobavljača“ u tabeli „Proizvodi“ naziva se sporedni ključ. Sporedni ključ je
primarni ključ druge tabele. Kolona „ID Dobavljača“ je sporedni ključ u tabeli „Proizvodi“,
pošto je primarni ključ u tabeli „Dobavljači“.
autor: Velja Milanovid
08.02.2012
17/62
Delphi baze podataka - V. Milanovid
18
Slika 14
Vi obezbeđujete osnovu za spajanje srodnih tabela uparivanjem primarnih i sporednih
ključeva. Ako niste sigurni koje tabele bi trebalo da dele zajedničku kolonu, identifikacija
relacije „jedan-prema-više“ obezbeđuje situaciju u kojoj de dve povezane tabele zaista
zahtevati deljenu kolonu.
2. 3. 2. Kreiranje relacije „više-prema-više“
Razmotrite relaciju između tabele „Proizvodi“ i tabele „Porudžbine“. Jedna porudžbina može
da sadrži više proizvoda, a jedan proizvod može da se pojavi u više porudžbina. Stoga, za
svaki zapis u tabeli „Porudžbine“ može da postoji više zapisa u tabeli „Proizvodi“, dok za
svaki zapis u tabeli „Proizvodi“ može da postoji više zapisa u tabeli „Porudžbine“. Ovaj tip
relacije naziva se relacija „više-prema-više“ jer za svaki proizvod može da postoji više
porudžbina, a za svaku porudžbinu može da postoji više proizvoda. Imajte u vidu da je za
otkrivanje relacije „više-prema-više“ između tabela važno da uzmete u obzir obe strane
relacije.
Teme dveju tabela – tabele porudžbina i proizvoda – imaju relaciju „više-prema-više“. To
predstavlja problem. Kako biste shvatili problem, zamislite šta bi se dogodilo ako biste
pokušali da kreirate relaciju između ove dve tabele dodavanjem polja „ID proizvoda“ u
tabelu „Porudžbine“. Potrebno je da u tabeli „Porudžbine“ postoji više od jednog zapisa po
porudžbini da biste imali više proizvoda po porudžbini. Ponavljadete informacije o porudžbini
za svaki red koji je povezan sa pojedinačnom porudžbinom – što za posledicu ima neefikasan
dizajn koji bi mogao da dovede do netačnih podataka. Srešdete se sa istim problemom ako
polje „ID porudžbine“ smestite u tabelu „Proizvodi“ – za svaki proizvod dete imati više od
jednog zapisa u tabeli „Proizvodi“. Kako rešiti ovakav problem?
autor: Velja Milanovid
08.02.2012
18/62
Delphi baze podataka - V. Milanovid
19
Odgovor leži u kreiranju trede tabele koja se često naziva vezna tabela, a koja relaciju „višeprema-više“ raščlanjuje na dve relacije „jedan-prema-više“. Primarni ključ iz obe tabele
umede se u tredu tabelu. Kao posledica toga, treda tabela de zapisati svako pojavljivanje ili
instancu relacije.
Slika 15
Svaki zapis u tabeli „Detalji porudžbine“ predstavlja jednu stavku u porudžbini. Primarni ključ
tabele „Detalji porudžbine“ sastoji se iz dva polja – sporednih ključeva iz tabele „Porudžbine“
i tabele „Proizvodi“. Kao primarni ključ ove tabele ne možete koristiti samo polje „ID
porudžbine“, jer jedna porudžbina može da ima više stavki. Polje „ID porudžbine“ se ponavlja
za svaku stavku u porudžbini, tako da ono ne sadrži jedinstvene vrednosti. Ne možete
koristiti ni samo polje „ID proizvoda“, jer jedan proizvod može da se pojavi u više
porudžbina. Ali ova dva polja zajedno uvek kreiraju jedinstvenu vrednost za svaki zapis.
U bazi podataka prodaje proizvoda, tabela „Porudžbine“ i tabela „Proizvodi“ nisu direktno
povezane. One su, u stvari, povezane indirektno preko tabele „Detalji porudžbine“. Relacija
„više-prema-više“ između porudžbina i proizvoda predstavljena je u bazi podataka pomodu
dve relacije „jedan-prema-više“:


Između tabela „Porudžbine“ i „Detalji porudžbine“ postoji relacija „jedan-premaviše“. Svaka porudžbina može da ima više stavki, dok je svaka stavka povezana sa
samo jednom porudžbinom.
Između tabela „Proizvodi“ i „Detalji porudžbine“ postoji relacija „jedan-prema-više“.
Svaki proizvod može da ima više pridruženih stavki, ali svaka stavka upuduje samo na
jedan proizvod.
Iz tabele „Detalji porudžbine“ možete da odredite sve proizvode u određenoj porudžbini.
Možete da odredite i sve porudžbine za određeni proizvod. Posle unosa tabele „Detalji
porudžbine“, lista tabela i polja bi mogla da izgleda poput ove:
autor: Velja Milanovid
08.02.2012
19/62
Delphi baze podataka - V. Milanovid
20
Slika 16
2. 3. 3. Kreiranje relacije „jedan-prema-jedan“
Drugi tip relacije jeste relacija „jedan-prema-jedan“. Na primer, pretpostavimo da treba da
zapišete neke specijalne dopunske informacije o proizvodu koje de vam retko biti potrebne ili
koje su primenljive na samo nekoliko proizvoda. Pošto vam te informacije nisu često
potrebne i pošto bi njihovo skladištenje u tabelu „Proizvodi“ dovelo do pojave praznog
prostora za svaki proizvod za koji one ne važe, smestite ih u odvojenu tabelu. Koristite „ID
proizvoda“ kao primarni ključ, kao u tabeli „Proizvodi“. Relacija između ove dopunske tabele
i tabele „Proizvod“ je relacija „jedan-prema-jedan“. Za svaki zapis u tabeli „Proizvod“ postoji
jedan podudarni zapis u dopunskoj tabeli. Kada identifikujete takvu relaciju, obe tabele
moraju da dele zajedničko polje.
Kada otkrijete potrebu za relacijom „jedan-prema-jedan“, razmotrite da li informacije iz dve
tabele možete da smestite u jednu tabelu. Ako to iz nekog razloga ne želite da uradite,
možda zbog toga što bi to proizvelo mnogo praznog prostora, slededa lista sadrži opis načina
na koji biste tu relaciju predstavili u dizajnu:


Ako dve tabele imaju istu temu, verovatno možete da podesite relaciju pomodu istog
primarnog ključa u obe tabele.
Ako dve tabele imaju različite teme sa različitim primarnim ključevima, odaberite
jednu od tabela (bilo koju) i umetnite njen primarni ključ u drugu tabelu kao sporedni
ključ.
autor: Velja Milanovid
08.02.2012
20/62
Delphi baze podataka - V. Milanovid
21
Određivanje relacija između tabela vam pomaže da se uverite da imate odgovarajude tabele
ili kolone. Kada postoji relacija „jedan-prema-jedan“ ili „jedan-prema-više“, bide potrebno da
tabele unutar relacije dele zajedničku kolonu ili kolone. Kada postoji relacija „više-premaviše“, za predstavljanje relacije de biti potrebna treda tabela.
2. 4. Pročišdavanje dizajna
Ako imate potrebne tabele, polja i relacije, trebalo bi da kreirate tabele i popunite ih
probnim podacima, kao i da isprobate rad sa informacijama: kreiranje upita, dodavanje
novih zapisa itd. Na taj način dete doprineti otkrivanju potencijalnih problema – na primer,
možda de biti potrebno da dodate kolonu koju ste zaboravili da umetnete tokom faze
dizajniranja ili možda bi neku tabelu trebalo da podelite na dve tabele kako biste uklonili
dupliranje.
Proverite da li bazu podataka možete da koristite kako biste dobili željene odgovore.
Kreirajte prve radne verzije obrazaca i izveštaja i vidite da li one prikazuju očekivane
rezultate. Potražite nepotrebne duplikate podataka i izmenite dizajn kako biste ih eliminisali
nakon što ih pronađete.
Dok budete isprobavali početnu bazu podataka, verovatno dete otkriti da ima mesta za
poboljšanja. Evo nekoliko stvari koje bi trebalo da proverite:

Da li ste zaboravili neke kolone? Ako je to slučaj, da li te informacije pripadaju
postojedim tabelama? Ukoliko se radi o informacijama o nečem drugom, možda de
biti potrebno da kreirate još jednu tabelu. Kreirajte kolonu za svaku stavku
informacija koju treba da pratite. Ako se ta informacija ne može izračunati na osnovu
drugih kolona, postoji verovatnoda da de vam za nju biti potrebna nova kolona.

Da li su neke kolone nepotrebne jer se mogu izračunati na osnovu postojedih polja?
Ako neka stavka informacija može da se izračuna na osnovu drugih postojedih
kolona – npr. cena sa popustom izračunata na osnovu maloprodajne cene – često je
bolje uraditi samo to i izbedi kreiranje nove kolone.

Da li iznova unosite duplirane informacije u neku tabelu? Ako je to slučaj, verovatno
je potrebno da tabelu podelite na dve tabele između kojih de postojati relacija
„jedan-prema-više“.

Da li ste svaku informaciju raščlanili na najmanje korisnih delova? Ako je potrebno da
izveštavate, sortirate, pretražujete ili izračunavate prema nekoj stavci informacije,
stavite je u zasebnu kolonu.

Da li svaka kolona sadrži činjenicu o temi tabele? Ako kolona ne sadrži informaciju o
temi tabele, ona pripada drugoj tabeli.
2. 4. 1. Pročišdavanje tabele „Proizvodi“
Pretpostavimo da svaki proizvod u bazi podataka prodaje proizvoda spada u opštu
kategoriju, poput alkoholnih i bezalkoholnih pida, začina ili morskih plodova. Tabela
„Proizvodi“ bi mogla da sadrži polje koje prikazuje kategoriju svakog proizvoda.
Pretpostavimo da posle ispitivanja i pročišdavanja dizajna baze podataka odlučite da
uskladištite opis kategorije sa njenim imenom. Ako dodate polje „Opis kategorije“ u tabelu
autor: Velja Milanovid
08.02.2012
21/62
Delphi baze podataka - V. Milanovid
22
„Proizvodi“, moradete da ponavljate opis kategorije za svaki proizvod koji spada u određenu
kategoriju – ovo nije dobro rešenje.
Bolje rešenje je da tabela „Kategorije“ postane nova tema koja de se pratiti u bazi podataka,
sa sopstvenom tabelom i sopstvenim primarnim ključem. Nakon toga primarni ključ iz tabele
„Kategorije“ možete dodati u tabelu „Proizvodi“ kao sporedni ključ.
Tabele „Kategorije“ i „Proizvodi“ imaju relaciju „jedan-prema-više“: kategorija može da
sadrži više proizvoda, ali proizvod može da pripada samo jednoj kategoriji.
Kada redigujete strukture tabela, obratite pažnju na grupe koje se ponavljaju. Na primer,
razmotrite tabelu koja sadrži sledede kolone:
ID proizvoda
Ime
ID1 proizvoda
Ime1
ID2 proizvoda
Ime2
ID3 proizvoda
Ime3
Ovde svaki proizvod predstavlja grupu kolona koja se ponavlja i razlikuje od drugih samo po
broju koji se dodaje na kraj imena kolone. Kada vidite ovako numerisane kolone, trebalo bi
da ponovo razmotrite dizajn.
Takav dizajn ima nekoliko nedostataka. Za početak, primorava vas da postavite gornju
granicu broja proizvoda. Čim prekoračite tu granicu, moradete da dodate novu grupu kolona
u strukturu tabele što predstavlja osnovni administrativni zadatak.
Svaki put kada vidite grupe koje se ponavljaju, pažljivo redigujte dizajn obrativši pažnju na
deljenje jedne tabele na dve. U prethodnom primeru je bolje koristiti dve tabele, jednu za
dobavljače, a drugu za proizvode, pri čemu bi one bile međusobno povezane ID-om
dobavljača.
2. 5. Primenjivanje pravila normalizacije
Pravila normalizacije podataka (ponekad se nazivaju samo pravila normalizacije) možete da
primenite kao slededi korak u dizajnu. Koristite ova pravila da biste proverili da li su tabele
ispravno strukturirane. Proces primenjivanja pravila na dizajn baze podataka naziva se
normalizacija baze podataka ili samo normalizacija.
Normalizacija je najkorisnije pošto predstavite sve stavke informacija i dođete do
preliminarnog dizajna. Cilj je da se uverite da ste informacije podelili u odgovarajude tabele.
Putem normalizacije ne možete da proverite da li imate sve ispravne stavke podataka
potrebne za početak rada. Pravila primenjujete redom, pri čemu se tokom svakog koraka
morate uveriti da je vaš dizajn postigao takozvanu „normalnu formu“. Opšteprihvadeno je
pet takvih formi – od prve do pete normalne forme. Ovaj članak sadrži objašnjenja o prve tri,
jer su one dovoljne za vedinu slučajeva dizajna baze podataka.
autor: Velja Milanovid
08.02.2012
22/62
Delphi baze podataka - V. Milanovid
23
2. 5. 1. Prva normalna forma
Prva normalna forma podrazumeva da u svakom preseku reda i kolone u tabeli postoji jedna
vrednost, a nikada lista vrednosti. Na primer, ne možete imati polje pod nazivom „Cena“ u
koje dete smestiti više cena. Ako svaki presek redova i kolona zamislite kao deliju, svaka delija
može da sadrži jednu vrednost.
2. 5. 2. Druga normalna forma
Druga normalna forma zahteva da svaka kolona bez ključa potpuno zavisi od celog
primarnog ključa, a ne samo nekog njegovog dela. Ovo pravilo se primenjuje kada imate
primarni ključ koji se sastoji od više kolona. Na primer, pretpostavimo da imate tabelu koja
sadrži sledede kolone, pri čemu polja „ID porudžbine“ i „ID proizvoda“ formiraju primarni
ključ:



ID porudžbine (primarni ključ)
ID proizvoda (primarni ključ)
Ime proizvoda
Ovakav dizajn krši pravilo druge normalne forme, jer kolona „Ime proizvoda“ zavisi od polja
„ID proizvoda“, a ne od polja „ID porudžbine“, tako da ne zavisi od celog primarnog ključa.
Potrebno je da iz tabele uklonite kolonu „Ime proizvoda“. Ona pripada dugoj tabeli (tabeli
„Proizvodi“).
2. 5. 3. Treda normalna forma
Treda normalna forma ne zahteva samo da svaka kolona bez ključa bude zavisna od celog
primarnog ključa, ved i da kolone bez ključa zavise jedna od druge. Drugim rečima, svaka
tabela bez ključa mora da zavisi od primarnog ključa i ni od čega drugog. Na primer,
pretpostavimo da imate tabelu koja sadrži sledede kolone:
ID proizvoda (primarni ključ)
Ime
PMC
Popust
Pretpostavimo da kolona „Popust“ zavisi od preporučene maloprodajne cene (PMC). Ova
tabela narušava tredu normalnu formu jer kolona bez ključa „Popust“ zavisi od kolone bez
ključa „PMC“. Nezavisnost kolone znači da bi trebalo da budete u mogudnosti da promenite
svaku kolonu koja ne sadrži ključ ne utičudi na druge kolone. Ako promenite vrednost u polju
„PMC“, kolona „Popust“ de se promeniti u skladu sa tim i na taj način prekršiti to pravilo. U
ovom slučaju, kolonu „Popust“ bi trebalo premestiti u drugu tabelu sa ključem u polju
„PMC“.
autor: Velja Milanovid
08.02.2012
23/62
Download

Delphi baze podataka - V. Milanović