Osnove dizajna baza podataka

Pravilno dizajnirana baza podataka omogućuje pristup svježe ažuriranim, točnim informacijama. Budući da je pravilan dizajn ključan za postizanje vaših ciljeva u radu s bazom podataka, ima smisla uložiti dovoljno vremena potrebnog za učenje principa dobrog dizajna. Na kraju, puno lakše ćete se snaći u bazi podataka koja zadovoljava vaše potrebe i lako prihvaća promjene.

Ovaj članak vodič kroz planiranje baze podataka. Naučit ćete kako odlučiti koje su vam informacije potrebne, kako informacije podijeliti u odgovarajuće tablice i stupce i kako se te tablice odnose prema drugima. Ovaj članak pročitajte prije stvaranja svoje prve baze podataka.

U ovom članku

Neki izrazi u bazama podataka koje trebate znati

Što je dobar dizajn baze podataka?

Tijek dizajniranja

Utvrđivanje svrhe baze podataka

Pronalaženje i organiziranje potrebnih informacija

Raspoređivanje informacija u tablice

Stavljanje stavki informacija u stupce

Određivanje primarnih ključeva

Stvaranje odnosa tablice

Poboljšanje dizajna

Primjena pravila normalizacije

Više informacija


Neki izrazi u bazama podataka koje trebate znati

Microsoft Office Access 2007 organizira informacije u tablice: popise redaka i stupaca koji podsjećaju na računovodstveni blok ili radni list programa Microsoft Office Excel 2007. U jednostavnoj bazi podataka, možete imati samo jednu tablicu. Za većinu baza podataka trebat ćete više od jedne. Na primjer, možda imate tablicu koja pohranjuje informacije o proizvodima, drugu tablicu koja pohranjuje informacije o narudžbama i još jednu tablicu s informacijama o korisnicima.

Slika prikazuje tri tablice u podatkovnoj tablici

Svaki redak se također naziva zapis, a svaki stupac se naziva polje. Zapis je osmišljen i konzistentan način kombiniranja informacija o nečemu. Polje je jednostruka stavka informacija — vrsta stavke koja se pojavljuje u svakom zapisu. U tablici Proizvodi, na primjer, svaki redak ili zapis bi sadržavao informacije o jednom proizvodu. Svaki stupac ili polje sadrži neku vrstu informacija o tom proizvodu, kao što je njegov naziv ili cijena.

Vrh stranice

Što je dobar dizajn baze podataka?

Postupak dizajniranja baze podataka provodi se po određenim principima. Prvi princip je da je dvostruka informacija (također se naziva prekomjerni podatak) neispravna, jer zauzima prostor i povećava mogućnost pogrešaka i nekonzistentnosti. Drugi princip je da su važne ispravnost i potpunost informacija. Ako baza podataka sadrži netočne informacije, sva izvješća koji izvlače informacije iz baze podataka će također sadržavati netočne informacije. Kao rezultat, sve odluke koje donesete na osnovi tih izvješća će biti nedovoljno utemeljene.

Dobar dizajn baze podataka je onaj koji:

  • Razdjeljuje informacije u tablice na osnovi predmeta, za smanjenje prekomjernih podataka.

  • Omogućuje programu Access informacije koje on zahtijeva za združivanje informacija u tablicama, ako je potrebno.

  • Pomaže pri podršci i osigurava točnost i cjelovitost informacija.

  • Prilagođava se vašim potrebama obrade podataka i izvještavanja.

Vrh stranice

Tijek dizajniranja

Tijek dizajniranja se sastoji sljedećih koraka:

  • Utvrđivanje svrhe baze podataka    

    Ovo pomaže u pripremi za preostale korake.

  • Pronalaženje i organizacija potrebnih informacija     

    Dobivanje svih vrsta informacija koje možda želite zabilježiti u bazi podataka, kao što su naziv proizvoda i broj narudžbe.

  • Razdjeljivanje informacija u tablice    

    Razdjeljivanje stavki informacija na glavne cjeline ili predmete, kao što je Proizvodi ili Narudžbe. Svaki predmet zatim postaje tablica.

  • Uključivanje stavki informacija u stupce    

    Odlučite koje informacije želite pohraniti u svaku tablicu. Svaka stavka postaje polje i prikazuje se kao stupac u tablici. Na primjer, tablica zaposlenika može uključivati polja kao što su Prezime i Datum zakupa.

  • Određivanje primarnih ključeva    

    Izaberite primarni ključ za svaku tablicu. Primarni ključ je stupac koji se koristi za jedinstvenu identifikaciju svakog retka. Primjer može biti ID oznaka proizvoda ili ID oznaka narudžbe.

  • Postavljanje odnosa tablice    

    Pregledajte svaku tablicu i odlučite kako se podaci iz jedne tablice odnose prema podacima iz druge tablice. Dodajte polja u tablice ili stvorite nove tablice za pojašnjenje odnosa, ako je potrebno.

  • Poboljšanje dizajna    

    Analiziranje dizajna od pogrešaka. Stvaranje tablica i dodavanje nekoliko zapisa uzoraka podataka. Pogledajte možete li iz tablica dobiti rezultate koje ste željeli. Podesite dizajn ako je potrebno.

  • Primjena pravila normalizacije    

    Primjenjuju se pravila normalizacije podataka radi provjere ispravnosti strukture tablica. Podesite tablice ako je potrebno.

Vrh stranice

Utvrđivanje svrhe baze podataka

Dobra je ideja napisati svrhu baze podataka na papir — njezinu svrhu, kako je namjeravate koristiti i tko će je koristiti. Za male baze podataka za kućne djelatnosti, na primjer, možete napisati nešto kao "Korisnička baza podataka sadrži popis korisničkih informacija za upotrebu pri izradi skupnih pisama i izvješća." Ako je baza podataka složenija i ako je koristi veći broj ljudi, što se često događa kod zajedničkih postavki, svrha lako može činiti cijeli odlomak ili više i uključuje način korištenja baze podataka za svaku osobu. Ideja je imati dobro razvijeno izvješće zadataka koje se može uputiti tijekom postupka dizajniranja. Postojanje takvog izvješća olakšava vam usredotočivanje na ciljeve prilikom donošenja odluka.

Vrh stranice

Pronalaženje i organiziranje potrebnih informacija

Za pronalaženje i organiziranje potrebnih informacija započnite s postojećim informacijama. Na primjer, narudžbenice možete zapisati u knjige salda ili možete zadržati korisničke informacije u papirnatom obliku u kabinetu s datotekama. Sakupite te dokumente i prikažite na popisu svaku vrstu informacija (na primjer, svaki okvir koji popunjavate na obrascu). Ako nemate nijedan postojeći obrazac, umjesto toga zamislite da morate dizajnirati obrazac za zapisivanje korisničkih informacija. Koje informacije želite staviti u obrazac? Koje okvire za popunjavanje ćete stvoriti? Prepoznajte i navedite svaku od tih stavki. Na primjer, pretpostavimo da popis korisnika trenutno držite na karticama indeksa. Razmatranjem tih kartica možete uočiti da svaka od tih kartica sadrži ime korisnika, adresu, grad, državu, poštanski broj i telefonski broj. Svaka od tih stavki predstavlja potencijalni stupac u tablici.

Dok pripremate ovaj popis, nemojte se brinuti ako ne bude savršen. Umjesto toga, navedite svaku stavku koje se sjetite. Ako netko drugi koristi bazu podataka, pitajte i njega za ideje. Kasnije možete dotjerati popis.

Zatim, razmotrite vrste izvješća ili skupnih pisama koje možete proizvesti iz baze podataka. Na primjer, možda želite proizvesti izvješće o prodaji proizvoda za prikaz prodaje po područjima ili izvješće sažetka zaliha, koje prikazuje razine zaliha proizvoda. Možda također želite proizvesti pisma obrazaca za slanje korisnicima koji najavljuju prodajne događaje ili nude premiju. Izvješće dizajnirajte u glavi i zamislite kako će izgledati. Koje informacije ćete staviti na izvješće? Navedite svaku stavku. Isto učinite za pismo na obrascu i za svako drugo izvješće koje namjeravate stvoriti.

Osobno zamišljanje izvješća o zalihama proizvoda

Davanje mišljenja o izvješćima i skupnim pismima koja možda želite stvoriti pomaže pri identifikaciji stavki koje će biti potrebne u bazi podataka. Na primjer, pretpostavimo da korisnicima dajete mogućnost pristupanja (ili odstupanja) u periodična ažuriranja e-pošte i želite ispisati popise onih koji su pristupili. Za zapisivanje tih informacija dodajte stupac “Slanje e-pošte” u tablicu korisnika. Za svakog korisnika polje možete postaviti na Da ili Ne.

Zahtjev za slanje poruka e-pošte korisnicima predlaže drugu stavku za zapisivanje. Jednom kad znate da korisnik želi primati poruke e-pošte, potrebno je znati adresu e-pošte na koju ih šaljete. Zato za svakog korisnika morate zapisati adresu e-pošte.

Dobro je konstruirati prototip svakog izvješća ili skicu izvješća i razmotriti koje su stavke potrebne za proizvodnju izvješća. Na primjer, kad razmotrite pismo na obrascu, može vam pasti na pamet nekoliko stvari. Želite li uključiti odgovarajući pozdravni niz — na primjer, "Mr.", "Mrs." ili "Ms." kojim započinje pozdrav, morat ćete stvoriti stavku pozdrava. Pismo obično započinjete s “Poštovani Mr. Smith”, bolje nego “Poštovani Mr. Sylvester Smith”. Zato se preporučuje pohranjivanje prezimena odvojeno od imena.

Ključna točka za zapamtiti je da svaki dio informacije morate rascjepkati na manje upotrebljive dijelove. U slučaju imena, kako bi prezime postalo brzo dostupno, ime ćete prelomiti na dva dijela — Ime i Prezime. Za sortiranje izvješća po prezimenu korisno je prezimena korisnika pohraniti odvojeno. Općenito, ako želite razvrstati, pretražiti, izračunati ili izvijestiti na osnovi stavke informacija, tu stavku smjestite u zasebno polje.

Razmislite o pitanjima na koja želite da baza podataka odgovori. Na primjer, koliko prodaja vašeg proizvoda ste zaključili prošli mjesec? Gdje žive vaši najbolji kupci? Tko je dobavljač proizvoda koji se najbolje prodaje? Predviđanje ovih pitanja pomaže pri zapisivanju dodatnih stavki.

Nakon dobivanja tih informacija, spremni ste za idući korak.

Vrh stranice

Raspoređivanje informacija u tablice

Za raspodjelu informacija u tablicama izaberite glavne cjeline ili predmete. Na primjer, nakon pronalaženja i organiziranja informacija za bazu podataka prodaje proizvoda, preliminarni popis će izgledati kao ovaj:

Ručno pisane stavke informacija grupirane u predmete

Glavne cjeline koje su ovdje prikazane su proizvodi, dobavljači, kupci i narudžbe. Zato je logično započeti s ove četiri tablice: jedna s podacima o proizvodima, jedna s podacima o dobavljačima, jedna s podacima o kupcima i jedna s podacima o narudžbama. Iako ovime popis nije gotov, dobro je započeti na taj način. Popis možete nastaviti dotjerivati dok ne postignete dizajn koji dobro radi.

Kad pregledate preliminarni popis stavki, možete pokušati staviti ih sve u jednu tablicu, umjesto u četiri kako je prikazano na prethodnom prikazu. Time ćete naučiti zašto to nije dobra ideja. Proučite ukratko ovdje prikazanu tablicu:

Slika prikazuje tablicu koja sadrži proizvode i dobavljače

U ovom slučaju, svaki redak sadrži informacije i o proizvodu i o dobavljaču. Budući da možete imati više proizvoda od istog dobavljača, informacije o imenu i adresi dobavljača se ponavljaju više puta. Time se zauzima prostor na disku. Puno bolje rješenje je zapisivanje informacija o dobavljaču samo jednom u odvojenoj tablici Dobavljači, a zatim povezivanje te tablice s tablicom Proizvodi.

Drugi problem s ovim dizajnom se javlja u slučaju da trebate izmijeniti informacije o dobavljaču. Na primjer, pretpostavimo da trebate promijeniti adresu dobavljača. Budući da se ona pojavljuje na mnogo mjesta, slučajno možete promijeniti adresu na jednom mjestu, a zaboraviti je promijeniti na drugom. Zapisivanje adrese dobavljača na samo jednom mjestu će riješiti problem.

Prilikom dizajniranja baze podataka, uvijek pokušajte zapisati svaki podatak samo jednom. Ako istu informaciju smještate na više od jednog mjesta, kao što je adresa pojedinog dobavljača, tu informaciju smjestite u zasebnu tablicu.

Zaključno, pretpostavimo da je Coho Winery dobavljač samo jednog proizvoda i taj proizvod želite izbrisati, ali zadržati informacije o imenu i adresi dobavljača. Kako izbrisati zapis o proizvodu bez gubitka informacija o dobavljaču? Nikako, jer svaki zapis sadrži podatke o proizvodu, kao i podatke o dobavljaču pa ne možete izbrisati jedno, a da ne izbrišete drugo. Kako bi ovi podaci bili odvojeni, jednu tablicu morate podijeliti u dvije: jednu tablicu za informacije o proizvodu i drugu tablicu za informacije o dobavljaču. Brisanjem zapisa proizvoda će se izbrisati samo podaci o proizvodu, a neće se izbrisati podaci o dobavljaču.

Jednom kad ste izabrali predmet predstavljen tablicom, stupci u toj tablici će pohranjivati podatke samo o predmetu. Na primjer, tablica proizvoda će pohranjivati podatke samo o proizvodima. Budući da je adresa dobavljača podataka o dobavljaču, a ne o proizvodu, ona pripada u tablicu dobavljača.

Vrh stranice

Stavljanje stavki informacija u stupce

Za utvrđivanje stupaca u tablici odlučite koje informacije o predmetu, zapisanom u tablici, trebate pratiti. Na primjer, za tablicu Kupci dobar početni popis stupaca bi bio: Ime, Adresa, Poštanski broj grada, Adresa e-pošte za slanje, Oslovljavanje i Adresa e-pošte. Svaki zapis u tablici sadrži isti skup stupaca, tako da za svaki zapis možete pohraniti sljedeće informacije: ime, adresa, poštanski broj grada, adresa e-pošte za slanje, oslovljavanje i adresa e-pošte. Na primjer, stupac Adresa sadrži adrese kupaca. Svaki zapis sadrži podatke o jednom kupcu, a polje Adresa sadrži adresu toga kupca.

Jednom kad ste utvrdili početni skup stupaca za svaku tablicu, stupce kasnije možete poboljšati. Na primjer, dobro je pohraniti ime kupca kao dva odvojena stupca: ime i prezime, tako da možete razvrstavati, pretraživati i indeksirati upravo na tim stupcima. Slično tome, adresa se zapravo sastoji od pet odvojenih komponenata: adrese, grada, države, poštanskog broja i zemlje/područja te je također dobro pohraniti ih u odvojene stupce. Na primjer, ako želite provesti pretraživanje, filtriranje ili sortiranje prema državi, trebaju vam informacije o državi pohranjene u odvojenom stupcu.

Također trebate razmotriti hoće li baza podataka sadržavati informacije samo iz države domaćina ili i međunarodnog karaktera. Na primjer, ako planirate pohraniti međunarodne adrese, bolje je imati stupac Područje umjesto Država, jer takav stupac može sadržavati i države domaćina i područja drugih država/područja. Slično tome, želite li pohranjivati međunarodne adrese, stupac Poštanski broj ima više smisla nego poštanski broj.

Sljedeći popis prikazuje nekoliko savjeta za utvrđivanje stupaca.

  • Ne uključivanje izračunatih podataka    

    U većini slučajeva, rezultate izračuna nećete pohranjivati u tablice. Umjesto toga, kad želite vidjeti rezultat, Access može provesti izračune. Na primjer, pretpostavimo da postoji izvješće Proizvodi za narudžbu koji prikazuje podzbroj jedinica za narudžbu, za svaku kategoriju proizvoda u bazi podataka. Međutim, ni u jednoj tablici ne postoji stupac podzbroja Jedinice za narudžbu. Umjesto toga, tablica Proizvodi uključuje stupac Jedinice za narudžbu koji pohranjuje jedinice za narudžbu za svaki proizvod. Korištenjem tih podataka, Access izračunava podzbroj pri svakom ispisivanju izvješća. Sam podzbroj neće biti pohranjen u tablici.

  • Pohranjivanje informacija u njihovim najmanjim logičkim dijelovima    

    Možda ćete poželjeti imati jedno polje za puna imena ili za nazive proizvoda zajedno s opisima proizvoda. Ako kombinirate više od jedne vrste informacija u polju, kasnije je teško dohvatiti pojedinačni podatak. Pokušajte raskomadati informacije u logičke dijelove; na primjer, stvorite odvojena polja za ime i prezime ili za naziv proizvoda, kategoriju i opis.

Popis stavki informacija tijekom procesa dizajna

Jednom kad ste poboljšali stupce podataka u svakoj tablici, spremni ste za biranje primarnog ključa za svaku tablicu.

Vrh stranice

Određivanje primarnih ključeva

Svaka tablica će uključivati stupac ili skup stupaca koji jedinstveno identificiraju svaki redak pohranjen u tablici. To je često jedinstveni identifikacijski broj, kao što je ID broj zaposlenika ili serijski broj. U terminologiji baze podataka, ovu informaciju nazivamo primarni ključ tablice. Access koristi primarni ključ polja za brzo pridruživanje podataka iz višestrukih tablica i povezivanje podataka za vas.

Ako već imate jedinstveni identifikator za tablicu, kao što je broj proizvoda koji jedinstveno identificira svaki proizvod u katalogu, identifikator možete koristiti kao primarni ključ tablice — ali samo ako će vrijednosti u tom stupcu uvijek biti različite za svaki zapis. Ne možete imati dvostruke vrijednosti u primarnom ključu. Na primjer, kao primarni ključ nemojte koristiti imena ljudi, jer imena nisu jedinstvena. Moglo bi se dogoditi da imate dvoje ljudi istog imena u istoj tablici.

Primarni ključ uvijek mora imati vrijednost. Ako vrijednost stupca na nekom stupnju može postati nedodijeljena ili nepoznata (nestala vrijednost), ne može se koristiti kao komponenta primarnog ključa.

Uvijek morate izabrati primarni ključ čija vrijednost se ne mijenja. U bazi podataka koja koristi više od jedne tablice, primarni ključ tablice se može koristiti kao referenca u drugoj tablici. Ako se primarni ključ promijeni, promjena se mora primijeniti na sva mjesta na koja se ključ odnosi. Korištenjem primarnog ključa koji se neće mijenjati smanjuje se mogućnost da primarni ključ postane nesinkroniziran s tablicama na koje se odnosi.

Često se kao primarni ključ koristi proizvoljni jedinstveni broj. Na primjer, svakoj narudžbi možete dodijeliti jedinstveni broj narudžbe. Jedina svrha broja narudžbe je identifikacija narudžbe. Kad se jednom dodijeli, više se ne mijenja.

Ako nemate na umu nijedan stupac ni skup stupaca koji bi mogli biti dobri za primarni ključ, razmotrite korištenje stupca koji sadrži vrstu podataka Samonumeriranje. Ako koristite vrstu podataka Samonumeriranje, Access automatski dodjeljuje vrijednost. Ovakav identifikator je bespredmetan; on sadrži bespredmetne informacije koje opisuju redak koji ih predstavlja. Bespredmetni identifikatori su idealni za korištenje kao primarni ključevi jer se oni ne mijenjaju. Primarni ključ koji sadrži činjenice o retku — telefonski broj ili ime kupca, na primjer — puno je lakše promijeniti, jer su činjenične informacije same po sebi promjenjive.

Slika prikazuje tablicu Proizvodi s poljem primarnog ključa.

1. Stupac postavljen na vrstu podataka Samonumeriranje često je dobar primarni ključ. Ne postoje dvije iste ID oznake proizvoda.

U nekim slučajevima možda ćete željeti koristiti dva ili više polja koja zajednički daju primarni ključ za tablicu. Na primjer, tablica Detalji narudžbe koja sprema stavke za narudžbe bi za svoj primarni ključ koristila dva stupca: ID narudžbe i ID proizvoda. Kad primarni ključ koristi više od jednog stupca onda se također naziva složeni ključ.

Za bazu podataka prodaje proizvoda možete stvoriti stupac Samonumeriranje za svaku od tablica, koji može služiti kao primarni ključ: ID oznaka proizvoda za tablicu Proizvodi, ID oznaka narudžbe za tablicu Narudžbe, ID oznaka kupca za tablicu Kupci i ID oznaka dobavljača za tablicu Dobavljači.

Slika prikazuje stavke informacija tijekom postupka dizajniranja


Vrh stranice

Stvaranje odnosa tablice

Sada kad ste informacije podijelili u tablice, te informacije morate združiti na smisleni način. Na primjer, sljedeći obrazac uključuje informacija iz nekoliko tablica.

Obrazac narudžbe

1. Informacije u ovom obrascu dolaze iz tablice Kupci...

2. ...tablice Zaposlenici...

3. ...tablice Narudžbe...

4. ...tablice Proizvodi...

5. ...i tablice Detalji narudžbe.

Access sadrži sustav upravljanja relacijskih baza podataka. Kod relacijskih baza podataka, informacije možete podijeliti u odvojene tablice koje se temelje na predmetu. Zatim koristite odnose tablica za povezivanje informacija, ako je potrebno.

Vrh stranice

Stvaranje odnosa jedan prema više

Razmotrite ovaj primjer: Tablice Dobavljači i Proizvodi u bazi podataka narudžbi proizvoda. Dobavljač može dostaviti bilo koji broj proizvoda. Slijedi da za sve dobavljače koji su predstavljeni u tablici Dobavljači postoje mnogi proizvodi predstavljeni u tablici Proizvodi. Odnos između tablice Dobavljači i tablice Proizvodi je zato odnos jedan-prema-više.

Koncept jedan prema više

Za predstavljanje odnosa jedan-prema-više u dizajnu baze podataka odaberite primarni ključ na strani "jedan" u odnosu i dodajte ga kao dodatni stupac ili stupce u tablicu na strani "više" u odnosu. Na primjer, u ovom slučaju dodajte stupac ID oznaka dobavljača iz tablice Dobavljači u tablicu Proizvodi. Access zatim može koristiti ID broj dobavljača u tablici Proizvodi, za pronalazak pravog dobavljača za svaki proizvod.

Stupac ID oznaka dobavljača u tablici Proizvodi se naziva vanjski ključ. Vanjski ključ je drugi primarni ključ tablice. Stupac ID oznaka dobavljača u tablici Proizvodi je vanjski ključ jer je on primarni ključ i u tablici Dobavljači.

Popis stavki informacija tijekom procesa dizajna

Osnovu za udruživanje relacijskih tablica omogućujete uspostavljanjem uparivanja primarnih ključeva i vanjskih ključeva. Ako niste sigurni koje tablice trebaju dijeliti uobičajene stupce, postojanje odnosa jedan-prema-više je siguran znak da dvije tablice koje su u njega uključene trebaju imati zajednički stupac.

Vrh stranice

Stvaranje odnosa više-prema-više

Razmotrite odnos između tablice Proizvodi i tablice Narudžbe.

Pojedinačna narudžba može uključivati više od jednog proizvoda. S druge strane, pojedinačni proizvod se može pojaviti na više narudžbi. Zato, za svaki zapis u tablici Narudžbe može postojati više zapisa u tablici Proizvodi. A za svaki zapis u tablici Proizvodi može postojati više zapisa u tablici Narudžbe. Ova vrsta odnosa se naziva odnos više-prema-više jer za svaki proizvod može postojati više narudžbi; a za svaku narudžbu može postojati više proizvoda. Zapamtite da je za utvrđivanje odnosa više-prema-više između tablica važno razmotriti obje strane odnosa.

Predmeti dviju tablica — narudžbe i proizvodi — sadrže odnos više-prema-više. To predstavlja problem. Za razumijevanje problema zamislite što bi se dogodilo ako pokušate stvoriti odnos između dviju tablica dodavanjem polja ID oznaka proizvoda u tablicu Narudžbe. Za više od jednog proizvoda po narudžbi trebate više od jednog zapisa u tablici Narudžbe po narudžbi. Informacije o narudžbi biste ponavljali za svaki redak koji se odnosi na pojedinu narudžbu — što rezultira neučinkovitim dizajnom, koji dovodi do pojave netočnih podataka. Isti problem se pojavljuje ako smjestite polje ID oznaka narudžbe u tablicu Proizvodi — morali biste imati više od jednog zapisa za svaki proizvod u tablici Proizvodi. Kako ćete riješiti ovaj problem?

Rješenje je u stvaranju treće tablice, koja se često naziva tablica stjecišta, koja odnos više-prema-više rastavlja u dva odnosa jedan-prema-više. Primarni ključ iz svake od dviju tablica umetnite u treću tablicu. Kao rezultat, treća tablica zapisuje svaku pojavu ili instancu odnosa.

Odnos više-prema-više

Svaki zapis u tablici Detalji narudžbe predstavlja jedan stavku na narudžbi. Primarni ključ tablice Detalji narudžbe se sastoji od dva polja — vanjski ključevi iz tablica Narudžbe i Proizvodi. Korištenje samo polja ID oznaka narudžbe ne može funkcionirati kao primarni ključ za tu tablicu, jer narudžba može imati više stavki. ID oznaka narudžbe se ponavlja za svaku stavku na narudžbi, tako da polje ne sadrži jedinstvene vrijednosti. Korištenje samo polja ID oznaka proizvoda ne funkcionira, jer se jedan proizvod pojavljuje na više različitih narudžbi. Dva polja zajedno uvijek proizvode jedinstvenu vrijednost za svaki zapis.

U bazi podataka prodaje proizvoda, tablica Narudžbe i tablica Proizvodi nisu izravno povezane. Umjesto toga, povezane su neizravno putem tablice Detalji narudžbe. Odnos više-prema-više između narudžbi i proizvoda je predstavljen u bazi podataka, korištenjem dvaju odnosa jedan-prema-više:

  • Tablica Narudžbe i tablica Detalji narudžbe imaju odnos jedan-prema-više. Svaka narudžba može imati više od jednog proizvoda, ali je svaki proizvod povezan samo s jednom narudžbom.

  • Tablica Proizvodi i tablica Detalji narudžbe imaju odnos jedan-prema-više. Svaki proizvod može imati više pridruženih stavki asortimana, ali se svaka stavka asortimana odnosi na samo jedan proizvod.

Iz tablice Detalji narudžbe možete utvrditi sve proizvode na pojedinačnim narudžbama. Također možete utvrditi sve narudžbe za pojedinačni proizvod.

Nakon ugradnje tablice Detalji narudžbe, popis tablica i polja će izgledati poput ovih:

Popis stavki informacija tijekom procesa dizajna


Vrh stranice

Stvaranje odnosa jedan-prema-jedan

Druga vrsta odnosa je odnos jedan prema jedan. Na primjer, pretpostavimo da trebate zapisati neke određene dodatne informacije o proizvodu, koje rijetko upotrebljavate ili koje primjenjujete za samo nekoliko proizvoda. Budući da te informacije ne trebate često i da pohranjivanje informacija u tablicu Proizvodi može proizvesti prazan prostor za svaki proizvod na koji se one ne primjenjuju, smjestite ih u zasebnu tablicu. Kao i u tablici Proizvodi, kao primarni ključ koristite stupac ID oznaka proizvoda. Odnos između dodatne tablice i tablice Proizvod je odnos jedan-prema-jedan. Za svaki zapis u tablici Proizvod postoji podudarni zapis u dodatnoj tablici. Prilikom identifikacije takvog odnosa, obje tablice moraju dijeliti uobičajeno polje.

Kad utvrdite potrebu za odnosom jedan-prema-jedan u bazi podataka, razmotrite možete li informacije iz dviju tablica staviti zajedno u jednu tablicu. Ako iz nekog razloga to ne želite učiniti, vjerojatno zbog puno praznog prostora koji se stvara, sljedeći popis prikazuje kako ćete odnos predstaviti u dizajnu:

  • Ako dvije tablice imaju isti predmet, odnos možete postaviti korištenjem istog primarnog ključa u obje tablice.

  • Ako dvije tablice sadrže različite predmete s različitim primarnim ključevima, izaberite jednu od tablica (bilo koju) i umetnite njezin primarni ključ u drugu tablicu kao vanjski ključ.

Utvrđivanje odnosa između tablica pomaže pri utvrđivanju radite li s pravim tablicama i stupcima. Ako postoji odnos jedan-prema-jedan ili jedan-prema-više, tablice koje su uključene u njega moraju imati zajednički najčešći stupac ili stupce. Ako postoji odnos više-prema-više, za predstavljanje odnosa je potrebna i treća tablica.

Vrh stranice

Poboljšanje dizajna

Jednom kad imate tablice, polja i odnose koje trebate, stvorite i napunite tablice s uzorcima podataka i pokušajte raditi s informacijama: stvarati upite, dodavati nove zapise i tako dalje. Time je olakšano otkrivanje mogućih problema — na primjer, možda ćete trebati dodati stupac koji ste zaboravili umetnuti tijekom dizajniranja ili tablicu podijeliti u dvije tablice radi uklanjanja dupliciranja.

Provjerite možete li bazu podataka koristiti za dobivanje podataka koje želite. Stvorite grubu skicu obrazaca i izvješća i pogledajte prikazuju li oni podatke koje očekujete. Provjerite dupliciraju li se podaci nepotrebno; ako neke pronađete, izmijenite dizajn u svrhu njihovog uklanjanja.

Kad isprobate početnu bazu podataka, vjerojatno ćete otkriti mjesta za poboljšanja. Provjerite sljedeće:

  • Jeste li zaboravili koji stupac? Ako jeste, pripadaju li informacije u postojeće tablice? Ako postoje informacije druge teme, možda ćete morati stvoriti još jednu tablicu. Za svaku stavku informacije koju trebate pratiti stvorite stupac. Ako se informacija ne može izračunati iz drugih stupaca, znači da za nju trebate novi stupac.

  • Postoje li stupci koji nisu potrebni jer se mogu izračunati iz postojećih polja? Ako se bilo koja stavka informacija može izračunati iz drugih, postojećih stupaca, — na primjer, snižena cijena koja se izračunava iz prodajne cijene — bolje je to učiniti na taj način i izbjeći stvaranje novog stupca.

  • Jeste li uzastopno unosili dvostruke informacije u jednu od tablica? Ako jeste, vjerojatno je potrebno tablicu podijeliti u dvije tablice koje imaju odnos jedan-prema-više.

  • Imate li tablice s mnogo polja, ograničeni broj zapisa i mnogo praznih polja u pojedinom zapisu? Ako da, razmislite o redizajniranju tablice, tako da ona sadrži nekoliko polja i više zapisa.

  • Je li svaka stavka informacije izlomljena na najmanje upotrebljive dijelove? Ako trebate izvještavati, razvrstavati, pretraživati ili izračunavati korištenjem stavke informacije, stavku smjestite u vlastiti stupac.

  • Sadrži li svaki stupac podatak o predmetu tablice? Ako stupac ne sadrži informacije o predmetu tablice, on pripada u drugu tablicu.

  • Jesu li prikazani svi odnosi između tablica, putem uobičajenih polja ili treće tablice? Odnosi jedan-prema-jedan i jedan-prema-više zahtijevaju uobičajene stupce. Odnos više-prema-više zahtijeva treću tablicu.

Poboljšanje tablice Proizvodi

Pretpostavimo da svaki proizvod u bazi podataka prodaje proizvoda spada pod općenitu kategoriju, kao što je pića, začini ili plodovi mora. Tablica Proizvodi može uključivati polje koje prikazuje kategoriju svakog proizvoda.

Pretpostavimo da nakon proučavanja i poboljšanja dizajna baze podataka odlučite pohraniti opis kategorije, zajedno s njenim nazivom. Ako dodate polje Opis kategorije u tablicu Proizvodi, morate ponoviti opis svake kategorije za svaki proizvod koji pripada toj kategoriji — to nije dobro rješenje.

Bolje rješenje je izrada novog predmeta Kategorije za praćenje u bazi podataka, s vlastitom tablicom i vlastitim primarnim ključem. Zatim možete dodati primarni ključ iz tablice Kategorije u tablicu Proizvodi, kao vanjski ključ.

Tablice Kategorije i Proizvodi imaju odnos jedan-prema-više: kategorija može uključivati više od jednog proizvoda, ali proizvod može pripadati samo jednoj kategoriji.

Prilikom pregleda tablične strukture, obratite pozornost na ponavljajuće grupe. Na primjer, razmotrite tablicu koja sadrži sljedeće stupce:

  • ID proizvoda

  • Naziv

  • ID oznaka proizvoda1

  • Naziv1

  • ID oznaka proizvoda2

  • Naziv2

  • ID oznaka proizvoda3

  • Naziv3

Ovdje je svaki proizvod ponavljajuća grupa stupaca, koja se razlikuje od ostalih dodavanjem broja na kraj naziva stupca. Kad ugledate stupce numerirane na ovaj način, morate preraditi dizajn.

Ovakav dizajn ima mnogo propusta. U početku vas navodi da postavite gornje ograničenje broja proizvoda. Kad prijeđete ograničenje, dodajte novu grupu stupaca u tabličnu strukturu, što je važan administrativni zadatak.

Sljedeći problem je da će oni dobavljači koji imaju više proizvoda od maksimalnog broja zauzimati prostor, dok će dodatni stupci biti prazni. Najozbiljniji propust u takvom dizajnu je da on proizvodi mnoge zadatke koje je teško provesti, kao što je sortiranje ili indeksiranje tablice prema ID oznaci proizvoda ili nazivu.

Kad god primijetite ponavljajuće grupe, pažljivo pregledajte dizajn i provjerite je li potrebno tablicu podijeliti u dvije. U gornjem primjeru je bolje koristiti dvije tablice, jednu za dobavljače i jednu za proizvode, povezane ID oznakom dobavljača.

Vrh stranice

Primjena pravila normalizacije

Kao sljedeći korak u dizajnu, možete primijeniti pravila normalizacije podataka (ponekad se nazivaju samo pravila normalizacije). Ta pravila koristite za provjeru ispravnosti strukturiranja tablica. Postupak primjene pravila na dizajn baze podataka se naziva normalizacija baze podataka ili samo normalizacija.

Normalizacija je puno korisnija ako prikažete sve stavke informacija i dođete do početnog dizajna. Ideja je pomoći vam da budete sigurni da su vaše stavke informacija podijeljene u odgovarajuće tablice. Normalizacijom se ne osigurava ispravnost stavki podataka s kojima se počinje.

Pravila primjenjujete u slijedu, tako da ste u svakom koraku sigurni da vaš dizajn dovodi do dizajna poznatog kao "normalni obrasci." Pet normalnih obrazaca imaju široku prihvaćenost — od prvog normalnog obrasca do petog normalnog obrasca. Ovaj članak se proširuje na prvom stablu, jer su oni sve što je potrebno za glavninu dizajna baze podataka.

Prvi normalni obrazac

Prvi normalni obrazac utvrđuje da se u svakom sjecištu redaka ili stupaca u tablici nalazi pojedinačna vrijednost, a nikada popis vrijednosti. Na primjer, ne možete imati polje naziva Cijena u koje upisujete više od jedne cijene. Ako o sjecištu redaka i stupaca razmišljate kao o ćeliji, svaka ćelija može sadržavati samo jednu vrijednost.

Drugi normalni obrazac

Drugi normalni obrazac zahtijeva da svaki stupac bez ključa bude potpuno ovisan o cijelom primarnom ključu, a ne samo o dijelu ključa. Ovo pravilo se primjenjuje kad imate primarni ključ koji se sastoji od više od jednog stupca. Na primjer, pretpostavimo da imate tablicu koja sadrži sljedeće stupce, gdje ID oznaka narudžbe i ID oznaka proizvoda čine primarni ključ:

  • ID oznaka narudžbe (primarni ključ)

  • ID oznaka proizvoda (primarni ključ)

  • Naziv proizvoda

Dizajn narušava drugi normalni obrazac, je je Naziv Proizvoda ovisan o polju ID oznaka proizvoda, ali nije o polju ID narudžbe, tako da nije ovisan o cijelom primarnom ključu. Iz tablice morate ukloniti Naziv proizvoda. On pripada u drugu tablicu (Proizvodi).

Treći normalni obrazac

Treći normalni obrazac zahtijeva da svaki stupac bez ključa bude ovisan o cijelom primarnom ključu i da ti stupci bez ključa ne budu ovisni jedan o drugome.

Na drugi način se može reći da svaki stupac bez ključa mora biti ovisan o primarnom ključu i ni o čemu osim o primarnom ključu. Na primjer, pretpostavimo da imate tablicu koja sadrži sljedeće stupce:

  • ID oznaka proizvoda (primarni ključ)

  • Naziv

  • SRP

  • Popust

Pretpostavimo da popust ovisi o predloženoj prodajnoj cijeni (suggested retail price-SRP). Ova tablica narušava treći normalni obrazac jer stupac bez ključa, Popust, ovisi o drugom stupcu bez ključa, SRP. Neovisnost stupca podrazumijeva da ćete moći mijenjati sve stupce bez ključa, a da pritom ne utječete ni na jedan drugi stupac. Ako promijenite vrijednost u SRP polju, sukladno tome će se promijeniti i popust, time se narušava pravilo. U tom slučaju, Popust je potrebno premjestiti u drugu tablicu, gdje postoji ključ zajedno sa SRP.

Vrh stranice

Više informacija

Više informacija o osnovama dizajna tablica potražite u članku Stvaranje tablica u bazi podataka.

Dodatne informacije o dizajnu baze podataka potražite u sljedećim knjigama:

  • Hernandez, Michael J. Dizajniranje baza podataka za obične smrtnike: džepni priručnik za dizajn relacijskih baza podataka, drugo izdanje. Addison-Wesley Professional. 2003.

  • Fleming, Candace C. von Halle, Barbara. Priručnik o dizajnu relacijskih baza podataka. Addison-Wesley Professional. 1989.

  • Riordan, Rebecca M. Dizajniranje učinkovitog sustava baza podataka. Addison-Wesley Professional. 2005.

Vrh stranice

Primjenjuje se na sljedeće: Access 2007



Jesu li vam ove informacije bile korisne?

Da Ne

Kako ga možemo poboljšati?

255 preostali broj znakova

Da biste zaštitili svoju privatnost, nemojte u povratnim informacijama navoditi podatke za kontakt. Pročitajte naš pravilnik o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

Resursi za podršku

Promijeni jezik