Osnove dizajna baza podataka
Applies ToAccess za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Pravilno dizajnirana baza podataka omogućuje pristup ažurnim i točnim informacijama. Budući da je ispravan dizajn ključan za postizanje ciljeva u radu s bazom podataka, ulaganje vremena potrebnog za učenje načela dobrog dizajna ima smisla. Na kraju, veća je vjerojatnost da ćete završiti s bazom podataka koja zadovoljava vaše potrebe i može jednostavno prihvatiti promjene.

Ovaj članak sadrži smjernice za planiranje baze podataka za stolna računala. Naučit ćete kako odlučiti koje su vam informacije potrebne, kako ih podijeliti u odgovarajuće tablice i stupce te kako se te tablice međusobno odnose. Prije stvaranja prve baze podataka za stolna računala pročitajte ovaj članak.

Sadržaj članka

Neki pojmovi baze podataka koje treba znati

Access podatke organizira u tablice: popise redaka i stupaca koji podsjećaju na računovođu ili proračunsku tablicu. U jednostavnoj bazi podataka možda imate samo jednu tablicu. Za većinu baza podataka potrebno vam je više baza podataka. Možda, primjerice, imate tablicu u kojoj su pohranjeni podaci o proizvodima, druga tablica u kojoj su pohranjeni podaci o narudžbama i druga tablica s informacijama o klijentima.

Slika prikazuje tri tablice u podatkovnoj tablici

Svaki se redak pravilno naziva zapisom, a svaki stupac polje. Zapis je smislen i dosljedan način kombiniranje informacija o nečemu. Polje je jedna stavka informacija – vrsta stavke koja se pojavljuje u svakom zapisu. U tablici Proizvodi, primjerice, svaki redak ili zapis sadrži informacije o jednom proizvodu. Svaki stupac ili polje sadrži neku vrstu informacija o tom proizvodu, kao što su naziv ili cijena.

Vrh stranice

Što je dobar dizajn baze podataka?

Određena načela vodi postupak dizajniranja baze podataka. Prvo je načelo da su duplicirane informacije (nazivaju se i redundantni podaci) loše jer troši prostor i povećava vjerojatnost pogrešaka i nedosljednosti. Drugo je načelo da je ispravnost i potpunost informacija važna. Ako baza podataka sadrži netočne podatke, sva izvješća koja izvući podatke iz baze podataka također će sadržavati netočne podatke. Zbog toga će sve odluke koje se temelje na tim izvješćima biti pogrešno oblikovane.

Stoga je dobar dizajn baze podataka onaj koji:

  • Podatke dijeli u tablice utemeljene na predmetu da bi se smanjili redundantni podaci.

  • Programu Access nudi informacije potrebne za spajanje informacija u tablicama po potrebi.

  • Pomaže u podršci i osiguravanju točnosti i integriteta vaših podataka.

  • Odgovara vašim potrebama obrade podataka i izvješćivanja.

Vrh stranice

Postupak dizajniranja

Postupak dizajniranja sastoji se od sljedećih koraka:

  • Određivanje svrhe baze podataka    

    Na taj ćete se način pripremiti za preostale korake.

  • Traženje i organiziranje potrebnih informacija     

    Prikupite sve vrste podataka koje možda želite zabilježiti u bazi podataka, kao što su naziv proizvoda i broj narudžbe.

  • Dijeljenje informacija u tablice    

    Podijelite stavke s informacijama na glavne entitete ili subjekte, kao što su Proizvodi ili Narudžbe. Svaki predmet zatim postaje tablica.

  • Pretvaranje stavki informacija u stupce    

    Odlučite koje podatke želite pohraniti u svaku tablicu. Svaka stavka postaje polje i prikazuje se kao stupac u tablici. Tablica Zaposlenici, primjerice, može sadržavati polja kao što su Prezime i Datum zaposlenika.

  • Određivanje primarnih ključeva    

    Odaberite primarni ključ svake tablice. Primarni je ključ stupac koji se koristi za jedinstvenu identifikaciju svakog retka. Primjer može biti ID proizvoda ili ID narudžbe.

  • Postavljanje odnosa između tablica    

    Pogledajte svaku tablicu i odlučite kako su podaci u jednoj tablici povezani s podacima u drugim tablicama. Dodajte polja u tablice ili stvorite nove tablice da biste po potrebi pojasnili odnose.

  • Sužavanje dizajna    

    Analizirajte dizajn radi pogrešaka. Stvorite tablice i dodajte nekoliko zapisa oglednih podataka. Provjerite možete li dobiti željene rezultate iz tablica. Po potrebi unesite prilagodbe dizajna.

  • Primjena pravila normalizacije    

    Primijenite pravila normalizacije podataka da biste provjerili jesu li tablice pravilno strukturirane. Po potrebi prilagođavajte tablice.

Vrh stranice

Određivanje svrhe baze podataka

Dobro je zapisati svrhu baze podataka na papir – njezinu svrhu, kako je očekujete koristiti i tko će je koristiti. Za malu bazu podataka za kućnu tvrtku, primjerice, možete napisati nešto jednostavno kao što je "Baza podataka klijenata čuva popis informacija o klijentima u svrhu izrade poruka e-pošte i izvješća". Ako je baza podataka složenija ili je koristi mnogo ljudi, što se često događa u korporacijskom okruženju, svrha može jednostavno biti odlomak ili više te bi trebala obuhvaćati kada i kako će svaka osoba koristiti bazu podataka. Ideja je imati dobro razvijenu izjavu o misiji na koju se može odnositi tijekom postupka dizajniranja. Ako imate takvu izjavu, lakše ćete se usredotočiti na ciljeve prilikom donošenja odluka.

Vrh stranice

Pronalaženje i organiziranje potrebnih informacija

Da biste pronašli i organizirali potrebne informacije, počnite s postojećim podacima. Možete, primjerice, zabilježiti narudžbenice u glavnu knjigu ili zadržati podatke o klijentima na papirnatim obrascima u ormariću za datoteke. Prikupite te dokumente i napišite sve prikazane vrste informacija (na primjer, svaki okvir koji ispunite na obrascu). Ako nemate postojeće obrasce, zamislite da morate dizajnirati obrazac da biste zabilježeli podatke o klijentu. Koje biste podatke stavili na obrazac? Koje okvire za ispunu želite stvoriti? Odredite i napišite svaku od tih stavki. Pretpostavimo, primjerice, da popis klijenata trenutno držite na karticama indeksa. Pregled tih kartica može pokazati da svaka kartica sadrži ime, adresu, grad, državu, poštanski broj i telefonski broj korisnika. Svaka od tih stavki predstavlja potencijalni stupac u tablici.

Dok pripremate ovaj popis, ne brinite o tome da li ćete ga prvo savršeno posavršati. Umjesto toga, napišite sve stavke koje vam imajte na umu. Ako će netko drugi koristiti bazu podataka, zatražite i njihove ideje. Kasnije možete precizno podesiti popis.

Zatim razmotrite vrste izvješća ili poruka e-pošte koje želite stvoriti iz baze podataka. Možda ćete, primjerice, htjeti da izvješće o prodaji proizvoda prikazuje prodaju po regiji ili izvješće sažetka zaliha koje prikazuje razine zaliha proizvoda. Možda ćete htjeti generirati pisma obrasca za slanje korisnicima koji izgovaraju događaj prodaje ili nude premium. Dizajnirajte izvješće u svom umu i zamislite kako će izgledati. Koje podatke želite s mjesta na izvješće? Napišite svaku stavku. Isto učinite za slovo obrasca i za bilo koje drugo izvješće koje očekujete da će se stvoriti.

Osobno zamišljanje izvješća o zalihama proizvoda

Uočnjavanje izvješća i poruka e-pošte koje želite stvoriti olakšava prepoznavanje stavki koje su vam potrebne u bazi podataka. Pretpostavimo, primjerice, da korisnicima date priliku da se odluče za (ili od) povremenih ažuriranja e-pošte i želite ispisati popis onih koji su se odlučili za to. Da biste snimili te podatke, u tablicu korisnika dodajte stupac "Pošalji e-poštu". Za svakog kupca polje možete postaviti na Da ili Ne.

Preduvjet slanja poruka e-pošte korisnicima predlaže drugu stavku za snimanje. Kada znate da korisnik želi primati poruke e-pošte, morat ćete znati i adresu e-pošte na koju ih želite poslati. Stoga morate zabilježiti adresu e-pošte za svakog klijenta.

Dobro je konstruirati prototip svakog izvješća ili izlaznog unosa te razmotriti koje ćete stavke trebati za izradu izvješća. Na primjer, kada pregledate pismo obrasca, na umu može doći do nekoliko stvari. Ako želite uvrstiti odgovarajući pozdrav – na primjer, niz "Mr.", "Mrs." ili "Ms." koji započinje pozdrav, morat ćete stvoriti stavku pozdrava. Također, obično možete započeti pismo s "Dragi g. Smith", a ne "Dragi. G. Sylvester Smith. To vam predlaže da obično želite pohraniti prezime odvojeno od imena.

Ključna točka koju treba zapamtiti jest da svaku informaciju razlomite u njegove najmanje korisne dijelove. U slučaju imena, da bi prezime bilo lako dostupno, ime ćete razlomiti na dva dijela – ime i prezime. Da biste izvješće sortirali prema prezimenu, korisno je, primjerice, zasebno pohraniti korisnikov prezime. Općenito, ako želite sortirati, pretraživati, izračunavati ili izvješća na temelju stavke informacija, trebali biste tu stavku staviti u vlastito polje.

Razmislite o pitanjima na koja želite odgovoriti u bazi podataka. Na primjer, koliko ste prodaje istaknutog proizvoda zatvorili prošlog mjeseca? Gdje žive vaši najbolji klijenti ? Tko je dobavljač za vaš najprodavaniji proizvod? Predviđanje tih pitanja omogućuje vam da nula u vezi s dodatnim stavkama za snimanje.

Nakon prikupljanja podataka spremni ste za sljedeći korak.

Vrh stranice

Dijeljenje informacija u tablice

Da biste podijelili informacije u tablice, odaberite glavne entitete ili teme. Na primjer, nakon pronalaženja i organiziranja informacija za bazu podataka o prodaji proizvoda preliminarni popis može izgledati ovako:

Ručno pisane stavke informacija grupirane u predmete

Glavni entiteti prikazani ovdje su proizvodi, dobavljači, kupci i narudžbe. Stoga, ima smisla početi s ove četiri tablice: jedan za činjenice o proizvodima, jedan za činjenice o dobavljačima, jedan za činjenice o kupcima, a jedan za činjenice o narudžbama. Iako to ne dovršavanje popisa, to je dobra početna točka. Taj popis možete nastaviti sužavati sve dok ne otvorite dizajn koji dobro funkcionira.

Kada prvi put pregledate preliminarni popis stavki, možda ćete biti u iskušenju da ih sve smjestite u jednu tablicu umjesto četiri prikazane na prethodnoj ilustraciji. Ovdje ćete saznati zašto je to loša ideja. Razmislite na trenutak, tablicu koja je ovdje prikazana:

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

U tom slučaju svaki redak sadrži informacije o proizvodu i o njegovu dobavljaču. Budući da možete imati mnogo proizvoda istog dobavljača, naziv dobavljača i informacije o adresi moraju se ponavljati više puta. Time se troši prostor na disku. Snimanje podataka o dobavljaču samo jednom u zasebnoj tablici Dobavljači, a zatim povezivanje te tablice s tablicom Proizvodi puno je bolje rješenje.

Drugi problem s tim dizajnom dolazi kada trebate izmijeniti informacije o dobavljaču. Pretpostavimo, primjerice, da morate promijeniti adresu dobavljača. Budući da se prikazuje na mnogim mjestima, adresu možete slučajno promijeniti na jednom mjestu, ali je zaboravite promijeniti na drugim mjestima. Snimanje adrese dobavljača na samo jednom mjestu rješava problem.

Prilikom dizajniranja baze podataka uvijek pokušajte snimiti svaku činjenicu samo jedanput. Ako iste podatke ponavljate na više mjesta, kao što je adresa određenog dobavljača, te podatke smjestite u zasebnu tablicu.

Naposljetku, pretpostavimo da postoji samo jedan proizvod koji isporučuje vinarija Coho i želite izbrisati proizvod, ali zadržati naziv dobavljača i podatke o adresi. Kako biste izbrisali zapis o proizvodu, a da pritom ne izgubite podatke o dobavljaču? Ne možeš. Budući da svaki zapis sadrži činjenice o proizvodu, kao i činjenice o dobavljaču, ne možete ga izbrisati bez brisanja drugog. Da biste te činjenice razdvojili, morate podijeliti jednu tablicu na dvije: jednu tablicu za informacije o proizvodu, a drugu za informacije o dobavljaču. Brisanjem zapisa o proizvodu brišu se samo činjenice o proizvodu, a ne i činjenice o dobavljaču.

Kada odaberete predmet koji predstavlja tablica, stupci u toj tablici trebali bi pohraniti samo podatke o predmetu. Tablica proizvoda, primjerice, mora pohraniti podatke samo o proizvodima. Budući da je adresa dobavljača činjenica o dobavljaču, a ne o proizvodu, ona pripada u tablicu dobavljača.

Vrh stranice

Pretvaranje stavki informacija u stupce

Da biste odredili stupce u tablici, odlučite koje podatke morate pratiti o predmetu zabilježenom u tablici. Na primjer, za tablicu Kupci, Naziv, Adresa, Grad-State-Zip, Slanje e-pošte, Pozdrav i Adresa e-pošte čine dobar početni popis stupaca. Svaki zapis u tablici sadrži isti skup stupaca, pa za svaki zapis možete pohraniti podatke o nazivu, adresi, poštanskom poštanskom mjestu u saveznoj državi, e-pošti, pozdravu i adresi e-pošte. Stupac adresa, primjerice, sadrži adrese korisnika. Svaki zapis sadrži podatke o jednom klijentu, a polje adresa sadrži adresu tog klijenta.

Kada odredite početni skup stupaca za svaku tablicu, možete dodatno suziti stupce. Na primjer, ima smisla pohraniti ime klijenta kao dva zasebna stupca: ime i prezime da biste sortirali, pretražili i indeksirali samo po tim stupcima. Isto tako, adresa se zapravo sastoji od pet zasebnih komponenti, adrese, grada, države, poštanskog broja i države/regije, a ima smisla i pohraniti ih u zasebne stupce. Ako, primjerice, želite izvršiti postupak pretraživanja, filtriranja ili sortiranja po stanju, potrebne su vam informacije o stanju pohranjene u zasebnom stupcu.

Razmislite i o tome hoće li baza podataka sadržavati samo podatke domaćeg podrijetla ili međunarodne podatke. Ako, primjerice, planirate pohranjivati međunarodne adrese, bolje je imati stupac Regija umjesto Država jer takav stupac može sadržavati i domaće države i regije drugih država/regija. Slično tome, poštanski broj ima više smisla od poštanskog broja ako želite pohraniti međunarodne adrese.

Na sljedećem se popisu prikazuje nekoliko savjeta za određivanje stupaca.

  • Nemoj uvrstiti izračunate podatke    

    U većini slučajeva ne biste trebali spremati rezultat izračuna u tablice. Umjesto toga, Access može izvesti izračune kada želite vidjeti rezultat. Pretpostavimo, primjerice, da postoji izvješće Proizvodi po narudžbi koje prikazuje podzbroj jedinica po narudžbi za svaku kategoriju proizvoda u bazi podataka. No u bilo kojoj tablici nema stupca podzbrojeva Jedinica po narudžbi. Umjesto toga, tablica Proizvodi sadrži stupac Jedinice po narudžbi u kojem se jedinice pohranjuju po narudžbi za svaki proizvod. Pomoću njih Access izračunava podzbroj svaki put kada ispisujete izvješće. Sam podzbroj ne smije se pohraniti u tablicu.

  • Pohrana informacija u najmanjim logičkim dijelovima    

    Možda ćete biti u iskušenju da imate jedno polje za pune nazive ili nazive proizvoda zajedno s opisima proizvoda. Ako kombinirate više vrsta podataka u polju, kasnije je teško dohvatiti pojedinačne podatke. Pokušajte razlomiti informacije na logičke dijelove; na primjer, stvorite zasebna polja za ime i prezime ili za naziv proizvoda, kategoriju i opis.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Nakon sužavanja stupaca podataka u svakoj tablici spremni ste za odabir primarnog ključa svake tablice.

Vrh stranice

Određivanje primarnih ključeva

Svaka tablica mora sadržavati stupac ili skup stupaca koji jedinstveno identificira svaki redak pohranjen u tablici. To je često jedinstveni identifikacijski broj, kao što je identifikacijski broj zaposlenika ili serijski broj. U terminologiji baze podataka ti se podaci nazivaju primarnim ključem tablice. Access koristi polja primarnog ključa za brzo povezivanje podataka iz više tablica i objedujte podatke umjesto vas.

Ako već imate jedinstveni identifikator za tablicu, kao što je broj proizvoda koji jedinstveno identificira svaki proizvod u katalogu, taj identifikator možete koristiti kao primarni ključ tablice , ali samo ako će se vrijednosti u tom stupcu uvijek razlikovati za svaki zapis. U primarnom ključu ne možete imati duplicirane vrijednosti. Nemojte, primjerice, koristiti imena osoba kao primarni ključ jer nazivi nisu jedinstveni. U istoj tablici možete jednostavno imati dvije osobe istog imena.

Primarni ključ uvijek mora imati vrijednost. Ako vrijednost stupca u nekom trenutku može postati nedodijeljena ili nepoznata (vrijednost koja nedostaje), ne može se koristiti kao komponenta u primarnom ključu.

Uvijek odaberite primarni ključ čija se vrijednost neće promijeniti. U bazi podataka koja koristi više tablica primarni ključ tablice može se koristiti kao referenca u drugim tablicama. Ako se primarni ključ promijeni, promjena se mora primijeniti svugdje gdje se ključ referencira. Korištenje primarnog ključa koji se neće promijeniti smanjuje mogućnost da primarni ključ postane izvan sinkronizacije s drugim tablicama koje se pozivaju na njega.

Često se kao primarni ključ koristi proizvoljni jedinstveni broj. Možete, primjerice, svakoj narudžbi dodijeliti jedinstveni broj narudžbe. Jedina je svrha broja narudžbe prepoznavanje narudžbe. Nakon dodjele nikad se ne mijenja.

Ako nemate na umu stupac ili skup stupaca koji bi mogli biti dobar primarni ključ, razmislite o korištenju stupca s vrstom podataka Automatsko numeriranje. Kada koristite vrstu podataka Automatsko numeriranje, Access automatski dodjeljuje vrijednost umjesto vas. Takav identifikator nema činjenice; ne sadrži informacije koje opisuju redak koji predstavlja. Identifikatori bez činjenica idealni su za korištenje kao primarni ključ jer se ne mijenjaju. Primarni ključ koji sadrži, primjerice, činjenice o retku – telefonski broj ili korisničko ime – vjerojatnije je da će se promijeniti jer bi se same činjenice mogle promijeniti.

Slika prikazuje tablicu Proizvodi s poljem primarnog ključa.

1. Stupac postavljen na vrstu podataka Automatsko numeriranje često čini dobar primarni ključ. Dva ID-a proizvoda nisu ista.

U nekim slučajevima možda ćete htjeti koristiti dva ili više polja koja zajedno sadrže primarni ključ tablice. Na primjer, tablica Detalji narudžbe u kojoj su pohranjene stavke redaka za narudžbe koristit će dva stupca u primarnom ključu: ID narudžbe i ID proizvoda. Kada primarni ključ koristi više stupaca, naziva se i složeni ključ.

Za bazu podataka o prodaji proizvoda možete stvoriti stupac Automatsko numeriranje za svaku tablicu koja služi kao primarni ključ: IDProizvoda za tablicu Proizvodi, IDNarudžbe za tablicu Narudžbe, IDKupca za tablicu Kupci i IDDobavljanja za tablicu Dobavljači.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Vrh stranice

Stvaranje odnosa između tablica

Sada kada ste podijelili podatke u tablice, potreban vam je način za ponovno objedu informacija na smislene načine. Na primjer, sljedeći obrazac sadrži informacije iz nekoliko tablica.

Obrazac narudžbe

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

2. ... tablica Zaposlenici...

3. ... tablica Narudžbe...

4. ... u tablici Proizvodi...

5. ... i tablicu Detalji narudžbe.

Access je sustav za upravljanje relacijskim bazama podataka. U relacijskim bazama podataka podatke dijelite u zasebne tablice utemeljene na predmetu. Zatim pomoću odnosa između tablica objedujte informacije prema potrebi.

Vrh stranice

Stvaranje odnosa jedan-prema-više

Uzmite u obzir ovaj primjer: tablice Dobavljači i proizvodi u bazi podataka s narudžbama proizvoda. Dobavljač može dostaviti bilo koji broj proizvoda. Slijedi da za sve dobavljače predstavljene u tablici Dobavljači u tablici Proizvodi može biti predstavljeno mnogo proizvoda. Odnos između tablice Dobavljači i tablice Proizvodi stoga je odnos jedan-prema-više.

Koncept jedan prema više

Da biste u dizajnu baze podataka predstavljali odnos jedan-prema-više, uzmite primarni ključ na strani odnosa "jedan" i dodajte ga kao dodatni stupac ili stupce u tablicu na strani odnosa "više". U tom slučaju, primjerice, u tablicu Proizvodi dodajete stupac ID dobavljača iz tablice Dobavljači. Access zatim može koristiti ID broj dobavljača u tablici Proizvodi da bi locirao odgovarajućeg dobavljača za svaki proizvod.

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

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Navedite osnovu za spajanje povezanih tablica uspostavom uparivanja primarnih ključeva i vanjskih ključeva. Ako niste sigurni koje bi tablice trebale zajednički koristiti stupac, prepoznavanje odnosa jedan-prema-više jamči da će te dvije tablice, doista, zahtijevati zajednički stupac.

Vrh stranice

Stvaranje odnosa više-prema-više

Razmislite o odnosu između tablice Proizvodi i tablice Narudžbe.

Jedna narudžba može sadržavati više od jednog proizvoda. S druge strane, jedan se proizvod može pojavljivati u više narudžbi. Stoga za svaki zapis u tablici Narudžbe može biti više zapisa u tablici Proizvodi. A za svaki zapis u tablici Proizvodi u tablici Narudžbe može biti mnogo zapisa. Ta se vrsta odnosa naziva odnos više-prema-više jer za bilo koji proizvod može biti više narudžbi; i za bilo koju narudžbu, može biti mnogo proizvoda. Imajte na umu da je za prepoznavanje odnosa više-prema-više između tablica važno uzeti u obzir obje strane odnosa.

Predmeti dviju tablica – narudžbe i proizvodi – imaju odnos više-prema-više. To predstavlja problem. Da biste razumjeli problem, zamislite što bi se dogodilo kada biste pokušali stvoriti odnos između dviju tablica dodavanjem polja ID proizvoda u tablicu Narudžbe. Da biste imali više proizvoda po narudžbi, potrebno vam je više zapisa u tablici Narudžbe po narudžbi. Ponavljali biste informacije o redoslijedu za svaki redak koji se odnosi na jedan redoslijed – što bi rezultiralo neučinkovitim dizajnom koji bi mogao dovesti do netočnih podataka. Naiđete na isti problem ako polje ID narudžbe postavite u tablicu Proizvodi – u tablici Proizvodi za svaki proizvod bilo bi više zapisa. Kako riješiti taj problem?

Odgovor je stvoriti treću tablicu, koja se često naziva tablicom spajanja, koja razgrađuje odnos više-prema-više na dva odnosa jedan-prema-više. Unesete primarni ključ iz svake od dviju tablica u treću tablicu. Zbog toga treća tablica bilježi svako pojavljivanje ili instancu odnosa.

Odnos više-prema-više

Svaki zapis u tablici Detalji narudžbe predstavlja jednu stavku retka narudžbe. Primarni ključ tablice Detalji narudžbe sastoji se od dva polja – vanjskih ključeva iz tablica Narudžbe i Proizvodi. Samo polje ID narudžbe ne funkcionira kao primarni ključ za ovu tablicu jer jedan redoslijed može sadržavati mnogo stavki retka. ID narudžbe ponavlja se za svaku stavku retka narudžbe, pa polje ne sadrži jedinstvene vrijednosti. Korištenje samo polja ID proizvoda ne funkcionira jer se jedan proizvod može pojaviti na više različitih narudžbi. No ta dva polja uvijek daju jedinstvenu vrijednost za svaki zapis.

U bazi podataka o prodaji proizvoda tablica Narudžbe i tablica Proizvodi nisu izravno međusobno povezani. Umjesto toga, oni su povezani neizravno putem tablice Detalji narudžbe. Odnos više-prema-više između narudžbi i proizvoda predstavljen je u bazi podataka pomoću dva odnosa jedan-prema-više:

  • Tablica Narudžbe i Detalji narudžbe imaju odnos jedan-prema-više. Svaka narudžba može imati više stavki, ali svaka stavka retka povezana je samo s jednom narudžbom.

  • Tablica Proizvodi i Detalji narudžbe imaju odnos jedan-prema-više. Svakom proizvodu može biti pridruženo mnogo stavki, ali svaka stavka retka odnosi se samo na jedan proizvod.

U tablici Detalji narudžbe možete odrediti sve proizvode na određenoj narudžbi. Možete i odrediti sve narudžbe za određeni proizvod.

Nakon uključivanja tablice Detalji narudžbe popis tablica i polja može izgledati ovako:

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Vrh stranice

Snimka zaslona s prikazom dostupnih emotikona i kontrole za uključivanje i isključivanje

Druga je vrsta odnosa odnos jedan-prema-jedan. Na primjer, pretpostavimo da morate zabilježiti neke posebne dodatne informacije o proizvodu koje će vam trebati rijetko ili koje se odnose samo na nekoliko proizvoda. Budući da vam informacije nisu često potrebne i zbog toga što bi pohrana informacija u tablici Proizvodi rezultirala praznim prostorom za svaki proizvod na koji se ne primjenjuju, smjestite ih u zasebnu tablicu. Kao i u tablici Proizvodi, kao primarni ključ koristite IDproizvoda. Odnos između ove dodatne tablice i tablice Proizvod odnos je jedan-prema-jedan. Za svaki zapis u tablici Proizvod postoji jedan podudarni zapis u dodatnoj tablici. Prilikom identifikacije takvog odnosa obje tablice moraju dijeliti zajedničko polje.

Kada otkrijete potrebe za odnosom jedan-prema-jedan u bazi podataka, razmislite o tome možete li objedujte informacije iz dviju tablica u jednu tablicu. Ako to ne želite učiniti iz nekog razloga, možda zato što bi to rezultiralo mnogo praznog prostora, na sljedećem je popisu prikazano kako biste predstavljali odnos u dizajnu:

  • Ako dvije tablice imaju isti predmet, odnos vjerojatno možete postaviti pomoću istog primarnog ključa u obje tablice.

  • Ako dvije tablice imaju različite teme s različitim primarnim ključevima, odaberite jednu od tablica (bilo koje) i umetnite njegov primarni ključ u drugu tablicu kao vanjski ključ.

Određivanje odnosa između tablica omogućuje vam da provjerite imate li odgovarajuće tablice i stupce. Kada postoji odnos jedan-prema-jedan ili jedan-prema-više, uključene tablice moraju zajednički koristiti zajednički stupac ili stupce. Kada postoji odnos više-prema-više, za predstavljanje odnosa potrebna je treća tablica.

Vrh stranice

Sužavanje dizajna

Kada imate tablice, polja i odnose koji su vam potrebni, trebali biste stvoriti i popuniti tablice oglednim podacima i pokušati raditi s informacijama: stvaranje upita, dodavanje novih zapisa itd. Na taj ćete način istaknuti potencijalne probleme – možda ćete, primjerice, morati dodati stupac koji ste zaboravili umetnuti tijekom faze dizajna ili možda imate tablicu koju biste trebali podijeliti u dvije tablice da biste uklonili dupliciranje.

Provjerite možete li koristiti bazu podataka da biste dobili željene odgovore. Stvorite grube skice obrazaca i izvješća i provjerite prikazuju li podatke koje očekujete. Potražite nepotrebno dupliciranje podataka i, kada ih pronađete, izmijenite dizajn da biste ih uklonili.

Dok isprobate početnu bazu podataka, vjerojatno ćete otkriti prostor za poboljšanje. Evo nekoliko stvari koje možete provjeriti:

  • Jeste li zaboravili neke stupce? Ako jesu, pripadaju li ti podaci u postojeće tablice? Ako se radi o informacijama o nečemu drugom, možda ćete morati stvoriti drugu tablicu. Stvorite stupac za svaku stavku s informacijama koju morate pratiti. Ako se podaci ne mogu izračunati iz drugih stupaca, vjerojatno će vam trebati novi stupac.

  • Jesu li stupci nepotrebni jer se mogu izračunati iz postojećih polja? Ako se stavka s informacijama može izračunati iz drugih postojećih stupaca , primjerice, po sniženoj cijeni izračunatoj na temelju maloprodajne cijene, to je obično bolje učiniti i izbjeći stvaranje novog stupca.

  • Unosite li više puta duplicirane podatke u jednu od tablica? U tom slučaju tablicu vjerojatno morate 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 pojedinačnim zapisima? U tom slučaju razmislite o redizajniranju tablice tako da ima manje polja i više zapisa.

  • Je li svaka stavka s informacijama podijeljena na najmanje korisne dijelove? Ako morate prijaviti, sortirati, pretraživati ili izračunavati stavke informacija, tu stavku smjestite u vlastiti stupac.

  • Sadrži li svaki stupac informaciju o predmetu tablice? Ako stupac ne sadrži informacije o predmetu tablice, pripada drugoj tablici.

  • Jesu li svi odnosi između tablica predstavljeni zajedničkim poljima ili trećom tablicom? Odnosi jedan-prema-jedan i jedan-prema-više zahtijevaju zajedničke stupce. Odnosi više-prema-više zahtijevaju treću tablicu.

Sužavanje tablice Proizvodi

Pretpostavimo da svaki proizvod u bazi podataka za prodaju proizvoda spada u opću kategoriju, kao što su pića, začini ili plodovi mora. Tablica Proizvodi može sadržavati polje koje prikazuje kategoriju svakog proizvoda.

Pretpostavimo da nakon pregleda i sužavanja dizajna baze podataka odlučite pohraniti opis kategorije zajedno s nazivom. Ako u tablicu Proizvodi dodate polje Opis kategorije, morate ponoviti opis svake kategorije za svaki proizvod koji se nalazi u kategoriji – to nije dobro rješenje.

Bolje je rješenje da kategorije postavite kao novi predmet za praćenje baze podataka, s vlastitom tablicom i vlastitim primarnim ključem. Nakon toga primarni ključ iz tablice Kategorije možete dodati u tablicu Proizvodi kao vanjski ključ.

Tablice Kategorije i Proizvodi imaju odnos jedan-prema-više: kategorija može obuhvaćati više proizvoda, ali proizvod može pripadati samo jednoj kategoriji.

Kada pregledavate strukture tablica, potražite ponavljajuće grupe. Razmislite, primjerice, o tablici koja sadrži sljedeće stupce:

  • ID proizvoda

  • Naziv

  • ID proizvoda1

  • Ime1

  • ID proizvoda2

  • Naziv2

  • ID proizvoda3

  • Ime3

Ovdje je svaki proizvod ponavljajuće grupe stupaca koje se razlikuju od ostalih samo dodavanjem broja na kraj naziva stupca. Kada vidite stupce numerirane na taj način, trebali biste ponovno pregledati dizajn.

Takav dizajn ima nekoliko mana. Za početak, to vas prisiljava da postavite gornju granicu na broj proizvoda. Čim prekoračite to ograničenje, u strukturu tablice, koja je glavni administrativni zadatak, morate dodati novu grupu stupaca.

Drugi je problem to što će oni dobavljači koji imaju manje od maksimalnog broja proizvoda trošiti nešto prostora jer će dodatni stupci biti prazni. Naj ozbiljnoj mani s takvim dizajnom jest to što otežava izvršavanje mnogih zadataka, kao što su sortiranje ili indeksiranje tablice prema ID-u proizvoda ili nazivu.

Svaki put kada vidite ponavljajuće grupe pažljivo pregledajte dizajn s okom na razdvajanju tablice na dva načina. U prethodnom je primjeru bolje koristiti dvije tablice, jednu za dobavljače, a jednu za proizvode povezane s ID-jem dobavljača.

Vrh stranice

Primjena pravila normalizacije

Pravila normalizacije podataka (koja se ponekad nazivaju samo normalizacijskim pravilima) možete primijeniti kao sljedeći korak u dizajnu. Ta pravila koristite da biste provjerili jesu li tablice pravilno strukturirane. Postupak primjene pravila na dizajn baze podataka naziva se normaliziranje baze podataka ili samo normalizacija.

Normalizacija je najkorisna nakon što ste predstavljeni sve informacije stavke i stigli na preliminarni dizajn. Ideja je da se osigura da ste podijelili stavke s informacijama u odgovarajuće tablice. Normalizacija ne može biti sigurni da imate sve točne podatkovne stavke za početak.

Pravila se primjenjuju uzastopno, u svakom koraku osiguravajući da vaš dizajn pristigne na jedno od poznatih pod nazivom "normalni obrasci". Pet normalni obrasci su široko prihvaćeni - prvi normalni oblik kroz peti normalni oblik. Ovaj se članak proširuje na prva tri jer su sve potrebne za većinu dizajna baze podataka.

Prvi normalni obrazac

Prvi normalni obrazac kaže da na svakom sjecištu redaka i stupaca u tablici postoji jedna vrijednost, a nikad popis vrijednosti. Na primjer, ne možete imati polje s nazivom Cijena u koje postavite više od jedne cijene. Ako svaki presjek redaka i stupaca smatrate ćelijom, svaka ćelija može imati samo jednu vrijednost.

Drugi normalni obrazac

Drugi normalni obrazac zahtijeva da svaki stupac koji nije ključ u potpunosti ovisi o cijelom primarnom ključu, a ne samo o dijelu ključa. To se pravilo primjenjuje kada imate primarni ključ koji se sastoji od više stupaca. Pretpostavimo, primjerice, da imate tablicu koja sadrži sljedeće stupce, pri čemu ID narudžbe i ID proizvoda oblikuju primarni ključ:

  • ID narudžbe (primarni ključ)

  • ID proizvoda (primarni ključ)

  • Naziv proizvoda

Ovaj dizajn krši drugi normalni oblik jer naziv proizvoda ovisi o ID-u proizvoda, ali ne i o ID-u narudžbe, pa ne ovisi o cijelom primarnom ključu. Naziv proizvoda morate ukloniti iz tablice. Pripada drugoj tablici (Proizvodi).

Treći normalni obrazac

Treći normalni obrazac zahtijeva da ne samo svaki stupac koji nije ključ ovisi o cijelom primarnom ključu, već i da stupci koji nisu ključni međusobno neovisni.

Drugi način da to kažete jest da svaki stupac koji nije ključ mora ovisiti o primarnom ključu i ništa osim primarnog ključa. Pretpostavimo, primjerice, da imate tablicu koja sadrži sljedeće stupce:

  • IDproizvoda (primarni ključ)

  • Naziv

  • SRP

  • Diskont

Pretpostavimo da popust ovisi o predloženoj maloprodajnoj cijeni (SRP- u). Ova tablica krši treći normalni obrazac jer stupac koji nije ključ, Popust, ovisi o drugom stupcu koji nije ključ, SRP- u. Neovisnost stupca znači da biste trebali moći promijeniti bilo koji stupac koji nije ključ, a da pritom ne utječe ni na jedan drugi stupac. Ako promijenite vrijednost u polju SRP, popust će se u skladu s tim promijeniti, čime se krši to pravilo. U tom slučaju popust treba premjestiti u drugu tablicu koja je ključana na SRP-u.

Vrh stranice

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.