Osnove dizajna baza podataka

Primjenjuje se na
Access za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Ispravno dizajnirana baza podataka omogućuje vam pristup ažurnim i točnim informacijama. Budući da je ispravan dizajn neophodan za postizanje ciljeva u radu s bazom podataka, potrebno je uložiti vrijeme potrebno za učenje načela dobrog dizajna. Na kraju je vjerojatnije da ćete imati bazu podataka koja zadovoljava vaše potrebe i koja će lako prihvatiti promjene.

Ovaj članak sadrži smjernice za planiranje baze podataka za stolna računala. Saznat ćete kako odlučiti koji su vam podaci potrebni, kako ih podijeliti u odgovarajuće tablice i stupce te kako su te tablice međusobno povezane. Pročitajte ovaj članak prije nego što stvorite prvu bazu podataka za stolna računala.

Sadržaj članka

Neki pojmovi baze podataka koje morate znati

Access organizira podatke 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 trebat će vam više od jedne. Možete, primjerice, imati tablicu u kojoj su pohranjeni podaci o proizvodima, još jednu u kojoj su pohranjeni podaci o narudžbama i još jednu tablicu s podacima o kupcima.

Slika prikazuje tri tablice u podatkovnoj tablici

Svaki se redak ispravnije naziva zapisom, a svaki stupac poljem. Zapis je smislen i dosljedan način kombiniranja informacija o nečemu. Polje je jedna stavka informacije – 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 podataka o proizvodu, kao što su naziv ili cijena.

Vrh stranice

Što je dobar dizajn baze podataka?

Postupak dizajniranja baze podataka vodi se određenim načelima. Prvo je načelo da su duplicirane informacije (koje se nazivaju i redundantnim podacima) loše jer zauzimaju prostor i povećavaju vjerojatnost pojave pogrešaka i nedosljednosti. Drugo načelo je da je točnost i cjelovitost informacija važna. Ako baza podataka sadrži netočne podatke, sva izvješća koja povlače podatke iz baze podataka također će sadržavati netočne podatke. Zato će sve odluke koje donesete na temelju tih izvješća biti pogrešno informirane.

Stoga je dobar dizajn baze podataka:

  • Dijeli informacije u tematske tablice da bi se smanjili suvišni podaci.
  • Daje programu Access informacije potrebne za spajanje informacija u tablicama kada je to potrebno.
  • Pomaže u podršci i osiguravanju točnosti i integriteta vaših podataka.
  • Zadovoljava vaše potrebe za obradom podataka i izvješćivanjem.

Vrh stranice

Postupak dizajniranja

Postupak dizajniranja sastoji se od sljedećih koraka:

  • Određivanje svrhe baze podataka
    Tako ćete se pripremiti za preostale korake.
  • Pronalaženje i organiziranje potrebnih informacija
    Prikupite sve vrste podataka koje biste trebali zabilježiti u bazu podataka, poput naziva proizvoda i broja narudžbe.
  • Podjela informacija u tablice
    Podijelite stavke informacija u glavne entitete ili predmete, kao što su Proizvodi ili Narudžbe. Svaki subjekt 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 zapošljavanja.
  • 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
    Pregledajte svaku tablicu i odlučite kako su podaci u jednoj tablici povezani s podacima u drugim tablicama. Dodajte polja u tablice ili po potrebi stvorite nove tablice da biste pojasnili odnose.
  • Doradite dizajn
    Analizirajte dizajn radi pogrešaka. Stvorite tablice i dodajte nekoliko zapisa oglednih podataka. Pogledajte možete li dobiti željene rezultate iz tablica. Prema potrebi prilagodite dizajn.
  • Primjena pravila normalizacije
    Primijenite pravila normalizacije podataka da biste provjerili jesu li tablice pravilno strukturirane. Prema potrebi prilagodite tablice.

Vrh stranice

Određivanje svrhe baze podataka

Dobro je na papir zapisati svrhu baze podataka – njezinu svrhu, način na koji je očekujete koristiti i tko će je koristiti. Za malu bazu podataka za kućnu tvrtku, na primjer, možete napisati nešto jednostavno kao što je: "Baza podataka kupaca vodi popis podataka o klijentima radi 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 biti odlomak ili više njih, a trebala bi sadržavati vrijeme i način korištenja baze podataka. Ideja je imati dobro razvijenu izjavu o misiji na koju se može pozivati tijekom cijelog procesa dizajna. Takva izjava pomaže vam da se usredotočite na svoje ciljeve kada donosite odluke.

Vrh stranice

Pronalaženje i organiziranje potrebnih informacija

Da biste pronašli i organizirali potrebne informacije, započnite s postojećim podacima. Narudžbenice možete, primjerice, evidentirati u knjižnu knjigu ili čuvati podatke o kupcima na papirnatim obrascima u ormariću za spise. Prikupite te dokumente i sastavite popis svih prikazanih informacija (na primjer, svaki okvir koji ispunite u obrascu). Ako nemate nijedan postojeći obrazac, zamislite da morate dizajnirati obrazac za bilježenje podataka o klijentima. Koje biste podatke naveli na obrascu? Koje biste okvire za ispunjavanje stvorili? Identificirajte i sastavite svaku od tih stavki. Pretpostavimo, primjerice, da trenutno držite popis klijenata na indeksnim karticama. Pregledom tih kartica može se pokazati da se na svakoj kartici nalazi ime, adresa, grad, država, poštanski broj i telefonski broj. Svaka stavka predstavlja potencijalni stupac u tablici.

Dok pripremate ovaj popis, nemojte brinuti hoćete li ga isprva postići savršenim. Umjesto toga navedite svaku stavku koja vam padne na pamet. Ako će netko drugi koristiti bazu podataka, upitajte i njihove ideje. Popis kasnije možete precizno prilagoditi.

Zatim razmislite o vrstama izvješća ili poruka e-pošte koje biste mogli stvoriti iz baze podataka. U izvješću o prodaji proizvoda, primjerice, možete vidjeti podatke o prodaji po regijama ili sažeto izvješće o zalihama koje prikazuje razine zaliha proizvoda. Možete i generirati pisma obrasca koja ćete klijentima poslati u kojima se najavljuje rasprodajni događaj ili nudi premija. Dizajnirajte izvješće u vlastitom umu i zamislite kako bi ono izgledalo. Koje biste podatke smjestili u izvješće? Navedite svaku stavku. Isto učinite za pismo obrasca i za svako drugo izvješće koje ste očekivali stvoriti.

Osobno zamišljanje izvješća o zalihama proizvoda

Razmišljanjem o izvješćima i porukama e-pošte koje ćete možda htjeti stvoriti lakše ćete prepoznati stavke koje će vam trebati u bazi podataka. Pretpostavimo, na primjer, da korisnicima dajete mogućnost pristanka na primanje (ili isključivanje) periodičnih ažuriranja e-poštom, a želite ispisati popis onih koji su pristali na pohranu. Da biste zabilježili te informacije, u tablicu Kupci dodajte stupac "Pošalji e-poštu". Za svakog klijenta polje možete postaviti na Da ili Ne.

Preduvjet slanja poruke e-pošte klijentima predlaže drugu stavku za zapis. Kada znate da korisnik želi primati poruke e-pošte, morat ćete znati i adresu e-pošte na koju ga želite poslati. Stoga je potrebno zabilježiti adresu e-pošte za svakog klijenta.

Može se izraditi prototip svakog izvješća ili popisa rezultata i razmotriti koje će vam stavke trebati za izradu izvješća. Kada, primjerice, pregledavate pismo obrasca, nekoliko vam stvari može pasti na pamet. Ako želite uvrstiti prikladan pozdrav, na primjer, niz "gospodin", "gđa" ili "gospođa" koji započinje pozdrav, morat ćete stvoriti stavku pozdrava. Također, obično biste mogli započeti pismo s "Dragi gospodine Smith", a ne s "Dragi. Gospodin Sylvester Smith". To sugerira da biste prezime obično htjeli pohraniti odvojeno od imena.

Važno je zapamtiti da biste svaku informaciju trebali razlomiti na najmanje upotrebljive dijelove. Da bi u slučaju imena prezime bilo dostupno, razlomit ćete ga na dva dijela – ime i prezime. Da biste, primjerice, izvješće sortirali po prezimenu, korisno je zasebno pohraniti prezime klijenta. Općenito, ako želite sortirati, pretraživati, izračunavati ili izvješćivati na temelju stavke podataka, tu biste stavku trebali staviti u zasebno polje.

Razmislite o pitanjima na koja bi vam baza podataka trebala dati odgovore. Na primjer, koliko ste prodaja istaknutog proizvoda zaključili prošli mjesec? Gdje žive vaši najbolji kupci ? Tko je dobavljač vašeg najprodavanijeg proizvoda? Predviđanje pitanja pomoći će vam da precizno odredite dodatne stavke koje morate zabilježiti.

Nakon prikupljanja tih podataka spremni ste za sljedeći korak.

Vrh stranice

Podjela podataka u tablice

Da biste informacije podijelili u tablice, odaberite glavne entitete ili predmete. Nakon pronalaženja i organiziranja podataka za bazu podataka o prodaji proizvoda preliminarni bi popis mogao izgledati ovako:

Ručno pisane stavke informacija grupirane u predmete

Glavni entiteti koji se ovdje prikazuju su proizvodi, dobavljači, kupci i narudžbe. Stoga ima smisla započeti s ove četiri tablice: jedna za činjenice o proizvodima, jedna za činjenice o dobavljačima, jedna za činjenice o kupcima i jedna za činjenice o narudžbama. Premda to ne olakšava popis, to je dobra početna točka. Možete nastaviti sa sužavanjem tog popisa dok ne dobijete dizajn koji će dobro funkcionirati.

Kada prvi put pogledate preliminarni popis stavki, možda ćete doći u iskušenje da ih sve smjestite u jednu tablicu, a ne u četiri stavke prikazane na prethodnoj slici. Ovdje ćete saznati zašto je to loša ideja. Razmotrite nakratko ovdje prikazanu tablicu:

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

U tom slučaju svaki redak sadrži podatke i o proizvodu i o njegovom dobavljaču. Budući da možete imati mnogo proizvoda istog dobavljača, podatke o imenu i adresi dobavljača potrebno je ponoviti više puta. Time se troši prostor na disku. Mnogo je bolje rješenje zabilježiti podatke o dobavljaču samo jedanput u zasebnu tablicu Dobavljači, a zatim povezati tu tablicu s tablicom Proizvodi.

Drugi problem s ovim dizajnom nastaje kada trebate izmijeniti podatke o dobavljaču. Pretpostavimo da morate, primjerice, promijeniti dobavljačevu adresu. Budući da se adresa pojavljuje na mnogim mjestima, možda ćete je slučajno promijeniti na jednom mjestu, ali je zaboraviti promijeniti na drugom. Bilježenje adrese dobavljača na samo jednom mjestu rješava problem.

Prilikom dizajniranja baze podataka uvijek pokušajte zabilježiti svaku činjenicu samo jedanput. Ako isti podatak ponavljate na više mjesta, primjerice na adresi određenog dobavljača, stavite te podatke u zasebnu tablicu.

Naposljetku, pretpostavimo da vinarija Coho isporučuje samo jedan proizvod, a vi ga želite izbrisati, ali zadržati ime dobavljača i podatke o adresi. Kako biste izbrisali zapis o proizvodu, a da pritom ne izgubite i podatke o dobavljaču? Ne možete. Budući da svaki zapis sadrži činjenice o proizvodu, kao i činjenice o dobavljaču, ne možete izbrisati jednu od njih, a da ne izbrišete drugu. Da biste te činjenice razdvojili, jednu tablicu morate podijeliti na dvije: jednu za podatke o proizvodu, a drugu za podatke o dobavljačima. Brisanjem zapisa o proizvodu trebali biste izbrisati samo činjenice o proizvodu, a ne i činjenice o dobavljaču.

Kada odaberete predmet koji predstavlja tablica, stupci u toj tablici trebali bi pohranjivati samo podatke o predmetu. U tablici proizvoda, primjerice, trebaju se pohranjivati samo podaci o proizvodima. Budući da je adresa dobavljača činjenica o dobavljaču, a ne činjenica o proizvodu, mjesto je u tablici dobavljača.

Vrh stranice

Pretvaranje stavki informacija u stupce

Da biste odredili stupce u tablici, odlučite koje su vam potrebne informacije o predmetu zabilježene u tablici. Za tablicu Kupci, primjerice, Ime, Adresa, Grad-Država-Poštanski broj, Pošalji e-poštu, 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 imenu, adresi, gradu-državi, slanju e-pošte, pozdravima i adresi e-pošte. Stupac adrese, primjerice, sadrži adrese kupaca. Svaki zapis sadrži podatke o jednom kupcu, a polje adrese sadrži adresu tog klijenta.

Kada odredite početni skup stupaca za svaku tablicu, možete dodatno suziti stupce. Na primjer, ime klijenta ima smisla pohraniti kao dva zasebna stupca: ime i prezime da biste mogli sortirati, pretraživati i indeksirati samo na temelju tih stupaca. Slično tome, adresa se zapravo sastoji od pet zasebnih komponenti, adrese, grada, države, poštanskog broja i države/regije, pa ih ima smisla pohranjivati u zasebne stupce. Ako, primjerice, želite pokrenuti operaciju pretraživanja, filtriranja ili sortiranja po saveznoj državi, potrebne su vam informacije o stanju pohranjene u zasebni stupac.

U obzir uzmite i hoće li baza podataka sadržavati samo podatke domaćeg ili međunarodne. Ako, primjerice, namjeravate pohranjivati međunarodne adrese, bolje je imati stupac Regija umjesto Savezna država jer se u tom stupcu mogu nalaziti i lokalne savezne države i regije drugih država/regija. Slično tome, poštanski broj ima više smisla od poštanskog broja ako namjeravate pohraniti međunarodne adrese.

Na sljedećem je popisu navedeno nekoliko savjeta za određivanje stupaca.

  • Ne uvrštavaj izračunate podatke
    U većini slučajeva rezultate izračuna ne biste smjeli pohranjivati u tablice. Umjesto toga, možete prepustiti programu Access da izvodi izračune kada želite vidjeti rezultat. Pretpostavimo, na primjer, da postoji izvješće Proizvodi po narudžbi koje prikazuje podzbroj jedinica narudžbe za svaku kategoriju proizvoda u bazi podataka. No, ni u jednoj tablici nema stupca podzbroja Jedinice u narudžbi. Umjesto toga, tablica Proizvodi sadrži stupac Jedinice po narudžbi u kojem su pohranjene jedinice naručene za svaki proizvod. Na temelju tih podataka Access izračunava podzbroj svaki put kada ispišete izvješće. Podzbroj se ne smije pohranjivati u tablicu.
  • Pohranjivanje informacija u najmanjim logičkim dijelovima
    Možda ćete doći u iskušenje da imate jedno polje za puna imena ili nazive proizvoda zajedno s opisima proizvoda. Ako u polju kombinirate više vrsta informacija, teško je kasnije dohvatiti pojedinačne činjenice. Pokušajte rastaviti informacije na logičke dijelove; Primjerice, stvorite zasebna polja za ime i prezime ili za naziv proizvoda, kategoriju i opis.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Kada suzite stupce podataka u svakoj tablici, spremni ste odabrati primarni ključ svake tablice.

Vrh stranice

Određivanje primarnih ključeva

Svaka bi tablica trebala sadržavati stupac ili skup stupaca koji utvrđuju jedinstveni identitet svakoga retka pohranjenog u tablici. To je često jedinstveni identifikacijski broj, poput identifikacijskog broja zaposlenika ili serijskog broja. U terminologiji baze podataka taj se podatak naziva primarnim ključem tablice. Access koristi polja primarnih ključeva da bi brzo povezao podatke iz nekoliko tablica i objedinio podatke umjesto vas.

Ako već imate jedinstveni identifikator za tablicu, kao što je broj proizvoda koji jednoznačno identificira svaki proizvod u katalogu, taj identifikator možete koristiti kao primarni ključ tablice, no samo ako će vrijednosti u tom stupcu uvijek biti različite za svaki zapis. Primarni ključ ne može sadržavati dvostruke vrijednosti. Nemojte, primjerice, kao primarni ključ koristiti imena osoba jer imena nisu jedinstvena. Jednostavno možete imati dvije osobe s istim imenom u istoj tablici.

Primarni ključ mora uvijek 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 i svugdje gdje se ključ referencira. Korištenje primarnog ključa koji se neće promijeniti smanjuje mogućnost da primarni ključ neće biti sinkroniziran s drugim tablicama koje ga referenciraju.

Proizvoljni jedinstveni broj često se koristi kao primarni ključ. Na primjer, svakoj narudžbi možete dodijeliti jedinstveni broj narudžbe. Jedina je svrha broja narudžbe identifikacija narudžbe. Kada se jednom dodijeli, 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 vam automatski dodjeljuje vrijednost. Takav identifikator nema činjenica; Ne sadrži činjenične 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 činjenice o nekom retku – telefonski broj ili ime klijenta – vjerojatnije je da će se promijeniti jer bi se mogao promijeniti sam činjenični podaci.

Slika prikazuje tablicu Proizvodi s poljem primarnog ključa.

1. Stupac postavljen na vrstu podataka s automatskim numeriranjem često je dobar primarni ključ. Ne postoje dva ista ID-a proizvoda.

U nekim slučajevima možda će vam biti dobro koristiti dva ili više polja koja zajedno čine primarni ključ tablice. Na primjer, tablica Detalji narudžbe u koju se spremaju reci sa stavkama narudžbe u primarnom bi ključu koristila dva stupca: ID narudžbe i ID proizvoda. Kada primarni ključ koristi više od jednog stupca, naziva se i složeni ključ.

Za bazu podataka prodaje proizvoda možete stvoriti stupac s automatskim numeriranjem za svaku tablicu koji će služiti kao primarni ključ: IDProizvoda za tablicu Proizvodi, IDNarudžbe za tablicu Narudžbe, IDKlijenta za tablicu Kupci i IDdobavljača za tablicu Dobavljači.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Vrh stranice

Stvaranje odnosa između tablica

Sada kada ste podijelili informacije u tablice, potreban vam je način da ih ponovno spojite na smislen način. Sljedeći obrazac, primjerice, sadrži podatke iz nekoliko tablica.

Obrazac narudžbe

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

2. ... tablica Zaposlenici...

3. ... tablici Narudžbe...

4. ... tablica Proizvodi...

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

Access je sustav za upravljanje relacijskim bazama podataka. U relacijskoj bazi podataka podatke dijelite u zasebne tablice utemeljene na predmetu. Zatim koristite odnose između tablica da biste po potrebi spojili informacije.

Vrh stranice

Stvaranje odnosa jedan-prema-više

Pogledajte ovaj primjer: tablice Dobavljači i Proizvodi u bazi podataka narudžbi proizvoda. Dobavljač može isporučiti bilo koji broj proizvoda. Proizlazi to da svaki dobavljač predstavljen u tablici Dobavljači može imati više proizvoda u tablici Proizvodi. Odnos između tablice Dobavljači i tablice Proizvodi stoga je odnos jedan-prema-više.

Koncept jedan prema više

Kako biste prikazali odnos jedan-prema-više u svom dizajnu baze podataka, uzmite primarni ključ na strani odnosa "jedan" i dodajte ga kao dodatni stupac ili stupce u tablici na strani odnosa "više". U ovom slučaju, na primjer, stupac ID dobavljača iz tablice Dobavljači dodajete u tablicu Proizvodi. Access zatim može koristiti ID broj dobavljača u tablici Proizvodi kako bi pronašao točnog dobavljača za svaki proizvod.

Stupac ID dobavljača u tablici Proizvodi naziva se vanjskim ključem. Vanjski je ključ primarni ključ neke 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

Osnovu za spajanje povezanih tablica pružate uspostavljanjem parova primarnih i vanjskih ključeva. Ako niste sigurni koje bi tablice trebale dijeliti zajednički stupac, određivanje odnosa jedan-prema-više jamči da će za te dvije navedene tablice doista trebati zajednički stupac.

Vrh stranice

Stvaranje odnosa više-prema-više

Razmotrite odnos 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. Za svaki zapis u tablici Proizvodi može biti više zapisa u tablici Narudžbe. Ta vrsta odnosa naziva se više-prema-više jer za svaki proizvod može biti više narudžbi; A za svaku narudžbu može biti mnogo proizvoda. Imajte na umu je za otkrivanje odnosa više-prema-više između vaših tablica važno uzeti u obzir obje strane odnosa.

Subjekti dviju tablica – narudžbe i proizvodi – imaju odnos više-prema-više. To predstavlja problem. Da biste shvatili u čemu je problem, zamislite što bi se dogodilo kada pokušate stvoriti odnos između dviju tablica dodavanjem polja ID proizvoda u tablicu Narudžbe. Da biste imali više od jednog proizvoda po narudžbi, potrebno vam je više zapisa u tablici Narudžbe po narudžbi. Ponavljali biste podatke o redoslijedu za svaki redak koji se odnosi na jednu narudžbu, što bi rezultiralo neučinkovitim dizajnom koji bi mogao dovesti do netočnih podataka. Na isti ćete problem naići i ako polje ID narudžbe stavite u tablicu Proizvodi – imat ćete više zapisa u tablici Proizvodi za svaki proizvod. Kako riješiti taj problem?

Rješenje je stvoriti treću tablicu, često nazivanu tablica stjecišta, koja razlama odnos više-prema-više u dva odnosa jedan-prema više. Unesete primarni ključ iz svake od dviju tablica u treću tablicu. Kao rezultat toga, treća tablica zapisuje svaku pojavu 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 dvaju polja – vanjskih ključeva iz tablica Narudžbe i Proizvodi. Korištenje samo polja ID narudžbe ne funkcionira kao primarni ključ za ovu tablicu jer jedna narudžba može imati više stavki redaka. ID narudžbe ponavlja se za svaku stavku retka narudžbe pa polje ne sadrži jedinstvene vrijednosti. Ne funkcionira ni korištenje samo polja ID proizvoda jer se jedan proizvod može pojaviti u više različitih narudžbi. No ta dva polja zajedno uvijek stvaraju jedinstvenu vrijednost za svaki zapis.

U bazi podataka o prodaji proizvoda tablice Narudžbe i Proizvodi nisu izravno povezane. Umjesto toga, povezane su neizravno putem tablice Pojedinosti o narudžbi. Odnos više-prema-više između narudžbi i proizvoda u bazi podataka se prikazuje pomoću 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 stavki, no svaka je stavka povezana samo s jednom narudžbom.
  • Tablica Proizvodi i tablica Detalji narudžbe imaju odnos jedan-prema-više. Uz svaki proizvod može biti povezano više stavki, no svaka stavka se odnosi samo na jedan proizvod.

Iz tablice Detalji narudžbe možete odrediti sve proizvode u određenoj narudžbi. Možete odrediti i sve narudžbe za određeni proizvod.

Nakon ugradnje tablice Detalji narudžbe popis tablica i polja može izgledati ovako nekako:

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 jedan-prema-jedan. Pretpostavimo, na primjer, da morate zabilježiti neke posebne dopunske informacije o proizvodu koje će vam rijetko trebati ili koje se odnose samo na određene proizvode. Budući da vam informacije nisu često potrebne i budući da bi pohranjivanjem podataka u tablicu Proizvodi stvorio se prazan prostor za svaki proizvod na koji se ne odnosi, smjestite ih u zasebnu tablicu. Kao i u tablici Proizvodi, kao primarni ključ koristite ID proizvoda. Odnos između ove dodatne tablice i tablice Proizvod jest odnos jedan-prema-jedan. Za svaki zapis u tablici Proizvodi postoji jedan odgovarajući zapis u dodatnoj tablici. Prilikom identifikacije takvog odnosa obje tablice moraju dijeliti zajedničko polje.

Kada u bazi podataka uočite potrebu za odnosom jedan-prema-jedan, razmislite možete li podatke iz dviju tablica objediniti u jednu tablicu. Ako to zbog nekog razloga ne želite učiniti, možda zato što bi to rezultiralo mnogo praznog prostora, na sljedećem je popisu prikazano kako biste prikazali 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 predmete s različitim primarnim ključevima, odaberite jednu od tablica (bilo jednu) i njezin primarni ključ umetnite u drugu tablicu kao vanjski ključ.

Utvrđivanjem odnosa između tablica lakše ćete imati odgovarajuće tablice i stupce. Kada postoji odnos jedan-prema-jedan ili jedan-prema-više, uključene tablice moraju dijeliti zajednički stupac ili stupce. Kada postoji odnos više-prema-više, potrebna je treća tablica koja će predstavljati odnos.

Vrh stranice

Sužavanje dizajna

Kada unesete potrebne tablice, polja i odnose, stvorite i popunite tablice oglednim podacima te pokušajte s njima raditi: stvarati upite, dodavati nove zapise i tako dalje. Time se ističu potencijalni problemi – možda, primjerice, trebate dodati stupac koji ste zaboravili umetnuti tijekom faze dizajna ili imate tablicu koju je potrebno podijeliti na dvije tablice da biste uklonili duplikate.

Provjerite možete li korištenjem baze podataka dobiti željene odgovore. Stvorite grube skice obrazaca i izvješća i provjerite prikazuju li one očekivane podatke. Potražite nepotrebno dupliciranje podataka pa kad ga pronađete, izmijenite dizajn da biste ga eliminirali.

Prilikom isprobavanja početne baze podataka vjerojatno ćete otkriti prostor za poboljšanja. Evo nekoliko stvari koje treba provjeriti:

  • Jeste li zaboravili neke stupce? Ako pripadaju, pripadaju li informacije u postojeće tablice? Ako je riječ o nečemu drugom, možda ćete morati stvoriti drugu tablicu. Stvorite stupac za svaku informaciju koju morate pratiti. Ako se podaci ne mogu izračunati iz drugih stupaca, vjerojatno će vam za njih trebati novi stupac.
  • Jesu li stupci nepotrebni jer se mogu izračunati iz postojećih polja? Ako je stavku informacija moguće izračunati iz drugih postojećih stupaca (npr. diskontne cijene izračunate iz maloprodajne cijene), obično je bolje učiniti upravo to i izbjegavati stvaranje novog stupca.
  • Unosite li često duplicirane podatke u neku tablicu? Ako je tako, tablicu vjerojatno morate podijeliti na dvije tablice koje imaju odnos jedan-na-više.
  • Imate li tablice s mnogo polja, ograničenim brojem zapisa i mnogo praznih polja u pojedinačnim zapisima? Ako je tako, razmislite o redizajniranju tablice da bi imala manje polja i više zapisa.
  • Je li svaka stavka informacija razlomljena na najmanje upotrebljive dijelove? Ako morate napraviti izvješće, sortirati, pretraživati ili izvršiti izračun na stavki podataka, smjestite tu stavku u zaseban stupac.
  • Sadrži li svaki stupac neku činjenicu o predmetu tablice? Ako stupac ne sadrži podatke 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. Za odnose više-prema-više potrebna je treća tablica.

Sužavanje tablice Proizvodi

Pretpostavimo da svaki proizvod u bazi podataka o prodaji proizvoda pripada općenitoj kategoriji, kao što su pića, začini ili plodovi mora. Tablica Proizvodi može sadržavati polje koje pokazuje kategoriju svakog proizvoda.

Pretpostavimo da nakon proučavanja i sužavanja dizajna baze podataka odlučite pohraniti opis kategorije uz njezin naziv. Ako u tablicu Proizvodi dodate polje Opis kategorije, morate ponoviti svaki opis kategorije za svaki proizvod koji pripada toj kategoriji – to nije dobro rješenje.

Bolje je rješenje kategorije pretvoriti u novi predmet koji će baza podataka pratiti, s zasebnom tablicom i vlastitim primarnim ključem. Nakon toga možete dodati primarni ključ iz tablice Kategorije u tablicu Proizvodi kao vanjski ključ.

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

Kada pregledavate strukture tablica, pripazite na ponavljajuće grupe. Pogledajte, primjerice, tablicu koja sadrži sljedeće stupce:

  • ID proizvoda
  • Name (Naziv)
  • ID proizvoda 1
  • Ime i prezime1
  • ID proizvoda2
  • Ime2
  • ID proizvoda 3
  • Ime i prezime 3

Ovdje je svaki proizvod ponavljajuća grupa stupaca koja se od ostalih razlikuje samo dodavanjem broja na kraj naziva stupca. Kada ugledate stupce numerirane na ovaj način, trebali biste preispitati dizajn.

Takav dizajn ima nekoliko nedostataka. Za početak, prisiljava vas da postavite gornju granicu broja proizvoda. Čim prekoračite to ograničenje, u strukturu tablice morate dodati novu grupu stupaca, što je veliki administrativni zadatak.

Drugi je problem što će oni dobavljači koji imaju manje od maksimalnog broja proizvoda izgubiti malo prostora, jer će dodatni stupci biti prazni. Najozbiljnija mana takvog dizajna je ta što otežava obavljanje mnogih zadataka, poput sortiranja ili indeksiranja tablice prema ID-u proizvoda ili nazivu.

Kad god ugledate ponavljajuće grupe, pažljivo pregledajte dizajn s ciljem dijeljenja tablice na dva dijela. U gornjem je primjeru bolje koristiti dvije tablice, jednu za dobavljače i jednu za proizvode, povezane ID-om dobavljača.

Vrh stranice

Primjena pravila normalizacije

Pravila normalizacije podataka (ponekad se nazivaju samo pravilima normalizacije) 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 zove se normalizacija baze podataka ili samo normalizacija.

Normalizacija je najkorisnija nakon što predstavite sve stavke informacija i dođete do preliminarnog dizajna. Svrha je te funkcije pobrinuti se da ste podijelili podatkovne stavke u odgovarajuće tablice. Normalizacija ne može osigurati da imate sve točne podatkovne stavke.

Pravila primjenjujete uzastopno, u svakom koraku osiguravajući da vaš dizajn dođe do jednog od onoga što je poznato kao "normalni oblici". Pet normalnih oblika je široko prihvaćeno - prvi normalni oblik do petog normalnog oblika. U ovom se članku proširuje prva tri članka jer su to sve što je potrebno za većinu dizajna baza podataka.

Prvi normalni oblik

Prvi, normalni oblik kaže da na svakom sjecištu retka i stupca u tablici postoji jedna vrijednost, a nikako popis vrijednosti. Na primjer, ne možete imati polje s nazivom Cijena u koje postavljate više od jedne Cijene. Ako svako sjecište redaka i stupaca zamislite kao ćeliju, svaka ćelija može sadržavati samo jednu vrijednost.

Drugi normalni oblik

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

  • ID narudžbe (primarni ključ)
  • ID proizvoda (primarni ključ)
  • Naziv proizvoda

Ovaj dizajn krši drugi uobičajeni 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. Iz tablice morate ukloniti Naziv proizvoda. Pripada drugoj tablici (Proizvodi).

Treći normalni oblik

Treći, normalni oblik ne samo da svaki stupac bez ključa mora biti ovisan o cijelom primarnom ključu, nego i da stupci bez ključa moraju biti neovisni jedni o drugima.

Drugi je način da se to kaže da svaki stupac bez ključa mora ovisiti o primarnom ključu i samo o primarnom ključu. Pretpostavimo, primjerice, da imate tablicu koja sadrži sljedeće stupce:

  • ID proizvoda (primarni ključ)
  • Name (Naziv)
  • SRP
  • Diskont

Pretpostavimo da popust ovisi o predloženoj maloprodajnoj cijeni (SRP). Ova tablica krši treći normalni oblik jer neključni stupac, Discount, ovisi o drugom neključnom stupcu, SRP-u. Neovisnost o stupcu znači da biste trebali moći promijeniti bilo koji stupac koji nije ključan bez utjecaja na bilo koji drugi stupac. Ako promijenite vrijednost polja SRP, popust će se promijeniti u skladu s tim, čime se krši to pravilo. U tom slučaju Diskont treba premjestiti u drugu tablicu koja se uključuje na SRP.

Vrh stranice