Osnove dizajna baza podataka

Osnove dizajna baza podataka

Pravilno dizajnirana baza podataka omogućuje vam pristup ažurnim, točne podatke. Budući da je ispravan dizajn neophodan za postizanje ciljeva u radu s bazom podataka, investiranje vremena potrebnih za učenje principa dobrog dizajna ima smisla. Na kraju, vjerojatnije je da ćete završiti s bazom podataka koja zadovoljava vaše potrebe i možete jednostavno prilagoditi promjene.

U ovom se članku navode smjernice za planiranje baze podataka za stolna računala. Saznat ćete kako odlučiti koje informacije trebate, kako podijeliti te podatke u odgovarajuće tablice i stupce te kako se te tablice međusobno odnose. Prije stvaranja prve baze podataka za stolna računala trebali biste pročitati ovaj članak.

Važno: Access nudi iskustva dizajna koja omogućuju stvaranje aplikacija baze podataka za web. Mnoga se razmatranja dizajna razlikuju kada dizajnirate za web. U ovom se članku ne raspravljaju o dizajnu aplikacija web-baze podataka. Dodatne informacije potražite u članku Stvaranje baze podataka za zajedničko korištenje na webu.

Sadržaj članka


Neki uvjeti baze podataka koje treba znati

Access organizira vaše podatke u tablice: popisi redaka i stupaca koji podsjećaju na knjigovodstvenog jastučić 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 jednog. Primjerice, možda imate tablicu koja pohranjuje informacije o proizvodima, drugoj tablici koja pohranjuje informacije o narudžbama i drugoj tablici s podacima o kupcima.

Slika prikazuje tri tablice u podatkovnoj tablici

Svaki je redak pravilno nazvan zapis, a svaki stupac, polje. Zapis je smislen i dosljedan način kombiniranja informacija o nečemu. Polje je jedna stavka informacija – vrsta stavke koja se prikazuje u svakom zapisu. U tablici Proizvodi primjerice svaki redak ili zapis zadržat će informacije o jednom proizvodu. Svaki stupac ili polje sadrži neku vrstu podataka o tom proizvodu, kao što je naziv ili cijena.

Vrh stranice

Što je dobar dizajn baze podataka?

Određene principe vode proces dizajna baze podataka. Prvi je princip da su duplicirane informacije (koje se nazivaju i suvišne podatke) loše, jer je to otpad prostora i povećava vjerojatnost pogrešaka i nedosljednosti. Drugi princip je da je točnost i potpunost informacija važna. Ako baza podataka sadrži netočne podatke, sva izvješća koja izvuku podatke iz baze podataka sadržavat će i netočne podatke. Kao rezultat toga, sve odluke koje napravite na temelju tih izvješća bit će pogrešno obaviještene.

Dobar dizajn baze podataka je, Dakle, jedan od njih:

  • Dijeli podatke u tablice temeljene na predmetu da biste smanjili redundantne podatke.

  • Omogućuje pristup podacima koje je potrebno spojiti s podacima u tablicama prema potrebi.

  • Pridonosi potpori i osiguranju točnosti i cjelovitosti podataka.

  • Prima podatke za obradu i potrebe izvješćivanja.

Vrh stranice

Postupak dizajna

Postupak dizajna sastoji se od sljedećih koraka:

  • Određivanje namjene baze podataka    

    Ovo će vam pomoći da vas pripremimo za preostale korake.

  • Pronalaženje i organiziranje potrebnih podataka     

    Sakupite sve vrste podataka koje želite snimiti u bazi podataka, kao što su naziv proizvoda i broj narudžbe.

  • Dijeljenje podataka u tablice    

    Podijelite stavke podataka u glavne subjekte ili predmete, kao što su proizvodi ili narudžbe. Svaki subjekt potom postaje tablica.

  • Uključivanje stavki podataka u stupce    

    Odlučite koje podatke želite pohraniti u svaku tablicu. Svaka stavka postaje polje i prikazuje se kao stupac u tablici. Primjerice, tablica Zaposlenici može uključivati polja kao što su prezime i Datum zapošljavanja.

  • Određivanje primarnih tipki    

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

  • Postavljanje odnosa između tablica    

    Pogledajte svaku tablicu i odlučite kako se podaci u jednoj tablici odnose na podatke u drugim tablicama. Dodajte polja u tablice ili stvorite nove tablice da biste pojašnjavaju odnose kao što je potrebno.

  • Preciziranje dizajna    

    Analizirajte svoj dizajn radi pogrešaka. Stvorite tablice i dodajte nekoliko zapisa oglednih podataka. Pogledajte ako možete dobiti željene rezultate iz tablica. Po potrebi izvršite prilagodbe dizajna.

  • Primjena pravila o normalizaciji    

    Primijenite pravila normalizacije podataka da biste vidjeli jesu li tablice ispravno strukturirane. Po potrebi prilagodite tablice.

Vrh stranice

Određivanje namjene baze podataka

Preporučujemo da zapisujete svrhu baze podataka na papiru – njegova svrha, način na koji očekujete da ćete je koristiti i tko će je koristiti. Za malu bazu podataka za kućnu poslovnu tvrtku, na primjer, možete zapisati nešto jednostavno: "baza podataka korisnika čuva popis korisničkih podataka u svrhu proizvodnje skupnih pisama i izvješća." Ako je baza podataka složenija ili je koriste mnogi korisnici, što se često događa u postavci tvrtke, svrha bi mogla biti samo odlomak ili više i trebalo bi uključivati kada i kako će svaka osoba koristiti bazu podataka. Ideja je da se dobro razvijena izjava o misiji koja se može uputiti tijekom procesa dizajna. Imajući takvo priopćenje olakšava vam fokus na ciljeve prilikom donošenja odluka.

Vrh stranice

Pronalaženje i organiziranje potrebnih podataka

Da biste pronašli i organizirali potrebne informacije, počnite s postojećim podacima. Na primjer, narudžbenice možete zabilježiti u analitiku ili zadržati podatke o kupcu na papirnatim obrascima u ormariću za datoteke. Sakupite te dokumente i navedite svaku vrstu podataka koja je prikazana (na primjer, svaki okvir koji ispunjavate na obrascu). Ako nemate postojeće obrasce, zamislite da morate dizajnirati obrazac da biste snimili podatke o kupcu. Koje informacije možete staviti na obrazac? Koje biste okvire za popunjavanje stvorili? Identificiraj i popisni svaku od tih stavki. Pretpostavimo, primjerice, da popis kupaca trenutno držite na karticama indeksa. Pregledom ovih kartica može se prikazati da svaka kartica sadrži naziv korisnika, adresu, grad, državu, poštanski broj i telefonski broj. Svaki od tih stavki predstavlja potencijalni stupac u tablici.

Kao što ste pripremili ovaj popis, ne brinite se da biste ga isprva mogli učiniti savršenima. Umjesto toga, navedite svaku stavku koja vam padne na pamet. Ako će netko drugi koristiti bazu podataka, zatražite i njihove ideje. Popis možete fino podesiti kasnije.

Zatim razmotrite vrste izvješća ili skupnih pisama koje biste mogli proizvesti iz baze podataka. Primjerice, možete poželjeti da izvješće o prodaji proizvoda prikazuje prodaju prema regiji ili izvješće sažetka zaliha koje prikazuje razine zaliha proizvoda. Možda želite i generirati slova obrasca da biste ih mogli uputiti kupcima koji najavljuju prodajni događaj ili nude premiju. Dizajnirajte izvješće u mislima i zamislite kako bi to izgledalo. Koje informacije želite smjestiti u izvješće? Navedite svaku stavku. Učinite isto za pismo obrasca i za bilo koje drugo izvješće koje očekujete stvoriti.

Osobno zamišljanje izvješća o zalihama proizvoda

Prilikom razmišljanja o izvješćima i skupnim pismima koje možda želite stvoriti pomoći će vam identificirati stavke koje će vam biti potrebne u bazi podataka. Pretpostavimo, primjerice, da kupcima dodijelite priliku da se odluče za periodična ažuriranja e-pošte (ili izvan nje) i želite ispisati popis onih koji su se uključili u njih. Da biste snimili te informacije, dodajte stupac "Pošalji e-poštu" u tablicu Kupac. Za svakog klijenta možete postaviti polje na da ili ne.

Zahtjev za slanje poruka e-pošte kupcima sugerira neku drugu stavku za snimanje. Kada budete znali da kupac želi primati poruke e-pošte, morat ćete znati i adresu e-pošte na koju ćete ih poslati. Zbog toga morate snimati adresu e-pošte za svakog klijenta.

Ima smisla konstruirati prototip svakog izvješća ili izlaznog popisa te razmotriti koje će stavke morati proizvesti izvješće. Ako, primjerice, pregledate pismo obrasca, moglo bi vam se dogoditi nekoliko mogućnosti. Ako želite uvrstiti odgovarajuću pozdravnu poruku, primjerice, niz "Gospodin", "Gđa" ili "Ms." koji započinje pozdrav, morat ćete stvoriti stavku oslovljavanja. Također, obično možete početi s slovom "Dear g. Smith", a ne "draga. G. Sylvester Smith ". To sugerira da biste obično željeli pohraniti prezime odvojeno od imena.

Ključna je točka da biste zapamtili da svaki dio podataka možete prekinuti u najmanjim korisnim dijelovima. Da bi prezime bilo dostupno, u slučaju naziva možete ga slomiti na dva dijela – ime i prezime. Da bi se izvješće sortirali po prezimenu, na primjer, on pridonosi klijentu da se prezime pohranjuje odvojeno. U principu, ako želite sortirati, pretraživati, izračunavati ili prijaviti na temelju stavke informacija, tu stavku smjestite u vlastito polje.

Razmislite o pitanjima na koja možda želite odgovoriti na bazu podataka. Na primjer, koliko ste prodaja istaknutog proizvoda zatvorili prošlog mjeseca? Gdje žive vaši najbolji klijenti? Tko je dobavljač za najprodavaniji proizvod? Predviđanje tih pitanja pomoći će vam da unesete dodatne stavke u zapis.

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

Vrh stranice

Dijeljenje podataka u tablice

Da biste podatke podijelili u tablice, odaberite glavne subjekte ili predmete. Primjerice, nakon pronalaženja i organiziranja informacija za bazu podataka prodaje proizvoda, preliminarni popis može izgledati ovako:

Ručno pisane stavke informacija grupirane u predmete

Ovdje su prikazani glavni subjekti proizvodi, dobavljači, kupci i narudžbe. Dakle, ima smisla započeti s ovim četiri tablice: jedna 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šuje popis, to je dobra polazna točka. Ovaj popis možete nastaviti precizirati dok ne postignete dizajn koji dobro funkcionira.

Kada prvi put pregledate preliminarni popis stavki, možda ćete ih u iskušenju smjestiti u jednu tablicu, a ne četiri prikazane na prethodnoj ilustraciji. Ovdje ćete naučiti zašto je to loša ideja. Imajte na umu da se ovdje prikazuje tablica:

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

U ovom slučaju svaki redak sadrži informacije o proizvodu i dobavljaču. Budući da možete imati mnoge proizvode iz istog dobavljača, naziv dobavljača i informacije o adresi moraju se ponavljati više puta. Ovo otpada na diskovni razmak. Snimanje informacija o dobavljaču samo jednom u zasebnom tablici dobavljača, a zatim povezivanje te tablice s tablicom proizvodi znatno je bolje rješenje.

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

Kada dizajnirate bazu podataka, uvijek pokušate snimati svake činjenice samo jednom. Ako vam se ponavljaju iste informacije na više mjesta, kao što je adresa određenog dobavljača, postavite te podatke u zasebnu tablicu.

Konačno, pretpostavimo da postoji samo jedan proizvod koji sadrži vinarija Coho, a želite izbrisati proizvod, ali zadržite naziv dobavljača i podatke o adresi. Kako izbrisati zapis proizvoda bez gubitka podataka 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, a da ne izbrišete drugu. Da biste ove činjenice zadržali odvojeno, morate podijeliti jednu tablicu u dva: jedna tablica za informacije o proizvodu i drugu tablicu za informacije o dobavljaču. Brisanjem zapisa proizvoda 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 pohraniti samo činjenice o predmetu. Primjerice, tablica proizvoda trebala bi pohraniti samo činjenice o proizvodima. Budući da je adresa dobavljača činjenica o dobavljaču, a nije činjenica o proizvodu, ona pripada u tablicu dobavljač.

Vrh stranice

Pretvaranje stavki podataka u stupce

Da biste odredili stupce u tablici, odlučite koje podatke morate pratiti o predmetu zabilježenom u tablici. Primjerice, za tablicu Kupci, ime, adresu, grad-stanje-zip, slanje e-pošte, pozdravni broj i adresa e-pošte sadrže dobar početni popis stupaca. Svaki zapis u tablici sadrži isti skup stupaca, tako da možete pohraniti naziv, adresu, grad-State-zip, poslati e-poštu, pozdravnu adresu i podatke o adresi e-pošte za svaki zapis. Na primjer, stupac adresa sadrži adrese kupaca. Svaki zapis sadrži podatke o jednom klijentu, a polje adresa sadrži adresu tog kupca.

Kada odredite početni skup stupaca za svaku tablicu, možete dodatno precizirati stupce. Primjerice, ima smisla pohraniti naziv kupca kao dva odvojena stupca: ime i prezime, tako da možete sortirati, pretraživati i indeksirati samo one stupce. Na sličan se način adresa sastoji od pet zasebnih komponenti, adresa, grada, stanja, poštanskog broja i države/regije, a ima i smisla pohraniti ih u zasebne stupce. Ako želite izvršiti pretraživanje, filtrirati ili sortirati operacije prema državi, primjerice, potrebne su vam informacije o stanju pohranjene u zasebnom stupcu.

Trebali biste razmotriti i hoće li baza podataka sadržavati informacije koje se nalaze samo u domaćem podrijetlu, kao i međunarodni. Ako, primjerice, planirate pohraniti međunarodne adrese, bolje je imati stupac regija umjesto stanja, jer takav stupac može ugostiti i domaće države i regije drugih država/regija. Isto tako, poštanski broj ima više smisla od poštanskog koda ako želite pohraniti međunarodne adrese.

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

  • Ne uvrstite izračunate podatke    

    U većini slučajeva, rezultat izračuna u tablicama nije potrebno pohraniti. Umjesto toga, možete imati Access da izvrši izračuni kada želite vidjeti rezultat. Pretpostavimo, primjerice, da postoje proizvodi u izvješću narudžbe koji prikazuje podukupni zbroj jedinica na porudžbinu za svaku kategoriju proizvoda u bazi podataka. No u bilo kojoj tablici ne postoje jedinice u stupcu SUBTOTAL narudžbe. Umjesto toga, tablica proizvodi sadrži stupac jedinice u kojoj se spremaju jedinice po narudžbi za svaki proizvod. Pomoću tih podataka Access izračunava podzbroj prilikom svakog ispisa izvješća. Sam SUBTOTAL ne smije biti pohranjen u tablicu.

  • Pohrana informacija u najmanjim logičkim dijelovima    

    Možda ćete u iskušenju imati jedno polje za puna imena ili za nazive proizvoda uz opise proizvoda. Ako kombinirate više vrsta podataka u polju, kasnije je teško dohvatiti pojedinačne činjenice. Pokušajte prekinuti informacije u logičke dijelove; primjerice, stvorite odvojena polja za ime i prezime ili za naziv proizvoda, kategoriju i opis.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Nakon što ste rafinirani stupci podataka u svakoj tablici, spremni ste odabrati primarni ključ svake tablice.

Vrh stranice

Određivanje primarnih tipki

Svaka tablica mora uključivati stupac ili skup stupaca koji jedinstveno identificira svaki redak spremljen u tablici. To je često jedinstveni identifikacijski broj, kao što je identifikacijski broj zaposlenika ili serijski broj. U terminologiji baze podataka taj se podatak naziva primarnim ključem tablice. Access koristi polja primarnog ključa da bi brzo povezao podatke iz više tablica i objedinila podatke za vas.

Ako već imate jedinstveni identifikator tablice, 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 ovom stupcu uvijek biti različite za svaki zapis. U primarnom ključu nije moguće duplicirati vrijednosti. Primjerice, ne koristite imena osoba kao primarni ključ jer nazivi nisu jedinstveni. Možete jednostavno imati dvije osobe s istim nazivom u istoj tablici.

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

Uvijek odaberite primarni ključ čije se vrijednosti neće promijeniti. U bazi podataka koja koristi više od jedne tablice, primarni ključ tablice može se koristiti kao referenca u drugim tablicama. Ako se primarni ključ promijeni, promjena se mora primijeniti i na svim ključnim referenciranih tipki. Pomoću primarnog ključa koji se neće promijeniti smanjuje se vjerojatnost da primarni ključ može postati nesinkroniziran s drugim tablicama koje ga referenciraju.

Obično se koristi proizvoljni jedinstveni broj kao primarni ključ. Primjerice, svakoj narudžbenici možete dodijeliti jedinstveni broj narudžbe. Jedina svrha broja narudžbe jest identificirati narudžbu. Kada se dodijeli, nikada se ne mijenja.

Ako nemate na umu stupac ili skup stupaca koji bi mogli biti dobar primarni ključ, razmotrite korištenje stupca s vrstom podataka AutoNumber. Kada koristite vrstu podataka AutoNumber, Access automatski dodjeljuje vrijednost za vas. Takav identifikator je neprirodan; Ne sadrži nikakve činjenične informacije koje opisuju redak koji predstavlja. Netočni identifikatori idealni su za korištenje kao primarni ključ jer se ne mijenjaju. Primarni ključ koji sadrži činjenice o retku – telefonski broj ili naziv kupca, na primjer, vjerojatnije je da će se promijeniti, jer se činjenične informacije mogu promijeniti.

Slika prikazuje tablicu Proizvodi s poljem primarnog ključa.

1. stupac postavljen na vrstu podataka za Samonumeriranje često stvara dobar primarni ključ. Ne postoje dva ID-a proizvoda jednaki.

U nekim slučajevima možda želite koristiti dva ili više polja koja, zajedno, omogućuju primarni ključ tablice. Na primjer, tablica Detalji narudžbe koja pohranjuje 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 od jednog stupca, naziva se i složeni ključ.

Za bazu podataka prodaje proizvoda možete stvoriti stupac Samonumeriranje za svaku tablicu koja će služiti kao primarni ključ: IDProizvoda za tablicu proizvodi, ID narudžbe za tablicu Narudžbe, ID-a za tablice 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 podatke podijelili u tablice, potreban vam je način da ponovno objedinite informacije na smislene načine. Na primjer, sljedeći obrazac obuhvaća informacije iz nekoliko tablica.

Obrazac narudžbe

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

2.... tablica Zaposlenici...

3.... Tablica narudžbe...

4.... Tablica proizvodi...

5.... i tablicu Detalji o narudžbi.

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

Vrh stranice

Stvaranje odnosa jedan-prema-više

Imajte na umu ovaj primjer: tablice dobavljači i proizvodi u bazi podataka narudžbe proizvoda. Dobavljač može isporučiti bilo koji broj proizvoda. Slijedi da za bilo kojeg dobavljača predstavljenog u tablici Dobavljači u tablici proizvodi mogu biti zastupljeni mnogi proizvodi. Odnos između tablice dobavljači i tablice Proizvodi znači odnos jedan-prema-više.

Koncept jedan prema više

Da biste predstavili odnos jedan-prema-više u dizajnu baze podataka, uzmite primarni ključ na strani "jedan" u odnosu i dodajte ga kao dodatni stupac ili stupce u tablicu na strani odnosa "više". U ovom slučaju, na primjer, dodajte stupac ID dobavljača iz tablice dobavljači u tablicu Proizvodi. Access može koristiti identifikacijski broj dobavljača u tablici Proizvodi da bi se pronašao odgovarajući dobavljač za svaki proizvod.

Stupac ID dobavljača u tablici Proizvodi zove se vanjski ključ. Vanjski je ključ primarni ključ za drugu tablicu. Stupac ID dobavljača u tablici Proizvodi vanjski je ključ jer je i primarni ključ u tablici Dobavljači.

Slika prikazuje stavke informacija tijekom postupka dizajniranja

Temelj za pridruživanje povezanim tablicama uspostavljanjem parova osnovnih ključeva i stranih ključeva. Ako niste sigurni koje bi tablice trebale zajednički koristiti zajednički stupac, identificiranje odnosa jedan-prema-više osigurava da su dvije tablice uključene, doista, zahtijevali 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. I za svaki zapis u tablici Proizvodi može biti mnogo zapisa u tablici Narudžbe. Ta se vrsta odnosa naziva odnos više-prema-više jer za bilo koji proizvod može biti mnogo narudžbi; i za bilo koju porudžbinu može biti mnogo proizvoda. Imajte na umu da možete prepoznati odnose više-na-više između tablica, važno je da razmotrite obje strane odnosa.

Subjekti dviju tablica – Narudžbe i proizvodi – imaju odnos više-prema-više. Ovo predstavlja problem. Da biste razumjeli problem, zamislite što će se dogoditi ako pokušate stvoriti odnos između dviju tablica dodavanjem polja ID proizvoda u tablicu Narudžbe. Da biste imali više proizvoda po narudžbenici, potrebno vam je više od jednog zapisa u tablici Narudžbe po narudžbi. Ponavljate informacije o narudžbi za svaki redak koji se odnosi na jedan redoslijed – što rezultira neučinkovitim dizajnom koji može dovesti do točnih podataka. Ako postavite polje ID narudžbe u tablicu proizvodi, nailite na isti problem, u tablici Proizvodi možete imati više zapisa za svaki proizvod. Kako riješiti taj problem?

Odgovor je stvaranje treće tablice, koja se često naziva tablica spajanja, koja prekida odnos više-prema-više u odnose 2 1-na-mnoge. Unesete primarni ključ iz svake od dviju tablica u treću tablicu. Kao rezultat, treća tablica bilježi svaku pojavu ili instancu odnosa.

Odnos više-prema-više

Svaki zapis u tablici Detalji narudžbe predstavlja jednu stavku retka na narudžbenici. Primarni ključ tablice Detalji narudžbe sastoji se od dva polja – stranih ključeva iz tablica Narudžbe i proizvodi. Korištenje polja ID narudžbe ne funkcionira kao primarni ključ za ovu tablicu jer jedan redoslijed može imati mnogo stavki redaka. ID narudžbe ponavlja se za svaku stavku retka na narudžbenici, pa polje ne sadrži jedinstvene vrijednosti. Samo polje ID proizvoda ne funkcionira, jer se jedan proizvod može prikazati na više različitih narudžbi. Ali zajedno, dva polja uvijek stvaraju jedinstvenu vrijednost za svaki zapis.

U bazi podataka prodaje proizvoda tablica Narudžbe i tablica proizvodi nisu izravno povezanu međusobno. Umjesto toga, oni se posredno odnose putem tablice Detalji narudžbe. Odnos više-prema-više između narudžbe i proizvoda predstavlja se u bazi podataka pomoću odnosa 2 1-do-više:

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

  • Tablica proizvodi i Detalji narudžbe imaju odnos jedan-prema-više. Svaki proizvod može imati mnogo stavki koje su povezane s njom, 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 vrsta odnosa predstavlja odnos jedan-prema-jedan. Pretpostavimo, primjerice, da morate snimati neke posebne dodatne informacije o proizvodu koje će vam biti potrebne rijetko ili koje se odnose samo na nekoliko proizvoda. Budući da vam se informacije ne trebaju često, a budući da će pohrana informacija u tablicu Proizvodi rezultirati praznim prostorom za svaki proizvod na koji se ne primjenjuje, postavite ga u zasebnu tablicu. Kao i tablica proizvodi, možete koristiti proizvod kao primarni ključ. Odnos između ove dodatne tablice i tablice proizvoda predstavlja odnos jedan-prema-jedan. Za svaki zapis u tablici proizvoda postoji jedan odgovarajući zapis u dopunsku tablicu. Prilikom identifikacije takvog odnosa obje tablice moraju dijeliti zajedničko polje.

Kada otkrijete potrebu za odnos jedan-prema-jedan u bazi podataka, razmislite o tome možete li podatke iz dviju tablica spojiti u jednu tablicu. Ako ne želite to učiniti iz nekog razloga, možda zato što bi rezultiralo puno praznog prostora, sljedeći popis prikazuje način na koji želite predstavljati odnos u dizajnu:

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

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

Određivanje odnosa između tablica olakšava vam korištenje odgovarajućih tablica i stupaca. Kada postoji odnos jedan-prema-jedan ili jedan-prema-više, tablice uključene moraju zajednički koristiti zajednički stupac ili stupce. Kada postoji odnos više-prema-više, potrebna je treća tablica da bi se prikazala veza.

Vrh stranice

Usavršavanje dizajna

Kada vam budu potrebne tablice, polja i odnosi, trebali biste stvarati i ispunjavati tablice pomoću oglednih podataka i pokušati raditi s podacima: stvaranje upita, dodavanje novih zapisa i tako dalje. Time se olakšava isticanje mogućih problema – primjerice, možda ćete morati dodati stupac koji ste zaboravili umetnuti tijekom faze dizajna ili možete imati tablicu koju biste trebali podijeliti u dvije tablice da biste uklonili dupliciranje.

Saznajte možete li koristiti bazu podataka da biste dobili željene odgovore. Stvorite grube skice obrazaca i izvješća i pogledajte prikazuju li se podaci koje očekujete. Potražite nepotrebno dupliciranje podataka i kada ga pronađete, promijenite svoj dizajn da biste ga uklonili.

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

  • Jeste li zaboravili neku kolumnu? Ako jesu, pripadaju li informacije u postojeće tablice? Ako se radi o podacima o nečem drugom, možda ćete morati stvoriti drugu tablicu. Stvorite stupac za svaku stavku informacija koju trebate pratiti. Ako se podaci ne mogu izračunati iz drugih stupaca, vjerojatno će vam biti potreban novi stupac.

  • Jesu li stupci nepotrebni jer se mogu izračunati iz postojećih polja? Ako se stavka podataka može izračunati iz drugih postojećih stupaca – Diskontirana cijena izračunata iz maloprodajne cijene, na primjer – obično je bolje to učiniti i izbjegavati stvaranje novog stupca.

  • Opetovano unosite duplicirane informacije u jednu od tablica? Ako je tako, vjerojatno ćete morati podijeliti tablicu u dvije tablice koje imaju odnos jedan-prema-više.

  • Imate li tablice s brojnim poljima, ograničenim brojem zapisa i mnogim praznim poljima u pojedinačnim zapisima? Ako je tako, razmislite o ponovnom dizajniranju tablice tako da ima manje polja i više zapisa.

  • Je li svaka stavka podataka prekinuta u najmanjim korisnim dijelovima? Ako morate prijaviti, sortirati, pretraživati ili izračunati stavku informacija, postavite tu stavku u vlastiti stupac.

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

  • Jesu li svi odnosi između tablica zastupljeni u uobičajenim poljima ili po trećoj tablici? Odnos jedan-prema-jedan i jedan-prema-više zahtijevaju česte stupce. Odnosi više-na-više zahtijevaju treću tablicu.

Usavršavanje tablice Proizvodi

Pretpostavimo da svaki proizvod u bazi podataka prodaje proizvoda spada u opću kategoriju, kao što su pića, kondimenti ili plodovi mora. Tablica proizvodi može uključivati polje koje prikazuje kategoriju svakog proizvoda.

Pretpostavimo da nakon pregleda i rafiniranja dizajna baze podataka odlučite pohraniti opis kategorije uz njezino ime. Ako u tablicu Proizvodi dodate polje Opis kategorije, morate ponavljati svaki opis kategorije za svaki proizvod koji spada u kategoriju – to nije dobro rješenje.

Bolje je rješenje stvaranje kategorija za novi predmet za bazu podataka za praćenje, uz vlastitu tablicu i primarni ključ. Nakon toga 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 proizvoda, ali proizvod može pripadati samo jednoj kategoriji.

Kada pregledate strukture tablice, budite na oprezu radi ponavljajućih grupa. Primjerice, razmotrite tablicu koja sadrži sljedeće stupce:

  • ID proizvoda

  • Naziv

  • Product ID1

  • Name1

  • Product ID2

  • Name2

  • Product ID3

  • Name3

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

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

Još jedan problem je u tome što će dobavljači koji imaju manje od maksimalnog broja proizvoda izgubiti neki razmak, budući da će dodatni stupci biti prazni. Najozbiljniji propust u takvom dizajnu jest da se otežava izvođenje mnogih zadataka, kao što su sortiranje ili indeksiranje tablice prema ID-u proizvoda ili imenu.

Kad god pogledate ponavljajuće grupe, pomno Pregledajte dizajn s okom na kojoj se tablica Razdeli na dva. U gornjem primjeru bolje je koristiti dvije tablice, jedan za dobavljače i jedan za proizvode, povezan s ID-om dobavljača.

Vrh stranice

Primjena pravila o normalizaciji

Možete primijeniti pravila normalizacije podataka (ponekad se nazivaju i pravila normalizacije) kao sljedeći korak u dizajnu. Ta pravila koristite da biste vidjeli jesu li tablice ispravno strukturirane. Postupak primjene pravila na dizajn baze podataka naziva se normaliziranjem baze podataka ili samo normalizacija.

Normalizacija je najkorisnija nakon što ste predstavili sve stavke podataka i stigli ste na preliminarni dizajn. Ideja je da vam pomogne da osigurate da ste podatke podijelili u odgovarajuće tablice. Ono što normalizacija ne može učiniti jest osigurati da imate sve ispravne podatkovne stavke za početak.

Pravila primjenjujete u slijedu, na svaki korak koji osigurava da vaš dizajn stigne na jedno od onoga što je poznato kao "normalni obrasci". Pet normalnih obrazaca široko je prihvaćeno – prvi normalni obrazac putem petog normalnog obrasca. Ovaj se članak proširuje na prva tri, jer su to sve što je potrebno za većinu dizajna baze podataka.

Prvi uobičajeni obrazac

Prvi uobičajeni obrazac navodi da na svakom raskršću redaka i stupaca u tablici postoji jedna vrijednost, a nikada popis vrijednosti. Na primjer, ne možete imati polje pod nazivom cijena u kojoj se nalazi više od jedne cijene. Ako pomislite na svako sjecište redaka i stupaca kao ćelije, svaka ćelija može imati samo jednu vrijednost.

Drugi uobičajeni obrazac

Drugi uobičajeni obrazac zahtijeva da svaki stupac koji nije ključ u potpunosti ovisi o cijelom primarnom ključu, a ne samo na dijelu ključa. Ovo se pravilo primjenjuje kada imate primarni ključ koji se sastoji od više stupaca. Na primjer, pretpostavimo da imate tablicu koja sadrži sljedeće stupce, gdje ID narudžbe i ID proizvoda formiraju primarni ključ:

  • ID narudžbe (primarni ključ)

  • ID proizvoda (primarni ključ)

  • Naziv proizvoda

Ovaj dizajn krši drugi uobičajeni obrazac jer naziv proizvoda ovisi o ID-u proizvoda, ali ne i u ID-u narudžbe, tako da ne ovisi o cijelom primarnom ključu. Morate ukloniti naziv proizvoda iz tablice. Pripada u drugu tablicu (proizvode).

Treći uobičajeni obrazac

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

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

  • ProductID (primarni ključ)

  • Naziv

  • SRP

  • Diskont

Pretpostavimo da popust ovisi o predloženoj maloprodajnoj cijeni (SRP). Ova tablica krši Treći normalni obrazac jer stupac koji nije ključan, popust, ovisi o drugom stupcu koji nije ključ, SRP. Neovisnost stupaca znači da možete promijeniti bilo koji stupac koji nije ključan, a da ne utječu na bilo koji drugi stupac. Ako promijenite vrijednost u SRP polju, popust će se promijeniti u skladu s tim, čime se krši to pravilo. U ovom se slučaju popust mora premjestiti u drugu tablicu koja je postavljena na SRP.

Vrh stranice

Potrebna vam je dodatna pomoć?

Proširite svoje vještine korištenja sustava Office
Istražite osposobljavanje

Jesu li vam ove informacije bile korisne?

Hvala vam na povratnim informacijama!

Hvala vam na povratnim informacijama! Čini se da bi vam pomoglo kad bismo vas povezali s nekim od naših agenata podrške za Office.

×