Vodič kroz odnose između tablica
Applies ToAccess za Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jedan od ciljeva dobrog dizajna baze podataka uklanjanje je redundantnih podataka (duplih podataka). Da biste to postigli, podatke podijelite u mnogo tematskih tablica tako da se svaka činjenica predstavlja samo jedanput. Zatim programu Access pružite sredstva pomoću kojih se podijeljeni podaci ponovno spajaju – to radite tako da smještate zajednička polja u povezane tablice. Da biste to napravili točno, morate najprije razumjeti odnose između tablica, a zatim specificirati te odnose u svojoj bazi podataka.

Sadržaj članka

Uvod

Kada u svojoj bazi podataka stvorite tablicu za svaku temu, morate programu Access ponuditi sredstva za ponovno spajanje tih podataka kada to bude potrebno. To ćete učiniti smještanjem zajedničkih polja u povezane tablice i definiranjem odnosa između tablica. Nakon toga možete stvarati upite, obrasce i izvješća u kojima se prikazuju podaci iz nekoliko tablica istodobno. Na primjer, ovdje prikazani obrazac sadrži podatke povučene iz nekoliko tablica:

Redoslijedi za prikaz podataka iz pet tablica istodobno

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

2. ... tablice Narudžbe...

3. ... tablice Proizvodi...

4. ... i tablice Detalji narudžbe.

Ime klijenta u okviru Račun poslati izvučeno je iz tablice Kupci, vrijednosti ID narudžbe i ID datuma narudžbe dolaze iz tablice Narudžbe, naziv proizvoda dolazi iz tablice Proizvodi, a vrijednosti cijena količina jedinica dolaze iz tablice Detalji narudžbe. Ove su tablice vezane jedna za drugu na razne načine kako bi se iz svake donijelo informacije u obrazac.

U prethodnom primjeru polja u tablicama moraju biti usklađena kako bi pokazivala informacije o istoj narudžbi. Usklađenost se postiže korištenjem odnosa između tablica. Odnos između tablica radi tako da uspoređuje podatke u poljima-ključevima  — najčešće polje istog naziva u obje tablice. U većini slučajeva, ova odgovarajuća polja su primarni ključ iz jedne tablice, što osigurava jedinstveni identifikator za svaki zapis i vanjski ključ u drugoj tablici. Na primjer, zaposlenici mogu biti povezani s narudžbama za koje su odgovorni na način da se stvori odnos između tablica korištenjem polja ZaposlenikID u tablicama Zaposlenici i Narudžbe.

IDZaposlenika koristi se kao primarni ključ u tablici Zaposlenici i vanjski ključ u tablici Narudžbe.

1. IDZaposlenika pojavljuje se u obje tablice – kao primarni ključ...

2. ... i kao vanjski ključ.

Vrh stranice

Vrste odnosa između tablica

U programu Access postoje tri vrste odnosa između tablica.

  • Odnos jedan-prema-više

    Poslužimo se primjerom baze podataka koja prati narudžbe, a uključuje tablice Kupci i Narudžbe. Kupac može postaviti bilo koji broj narudžbi. Proizlazi to da svaki kupac predstavljen u tablici Kupci može imati više narudžbi. Odnos između tablice Kupci i tablice narudžbe stoga je odnos 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 dodatno polje ili polja u tablici na strani odnosa "više". U ovom slučaju, na primjer, dodajete novo polje — ID polje iz tablice Kupci — u tablicu Narudžbe i nazivate ga ID kupca. Access onda može koristiti broj iz ID-a kupca u tablici Narudžbe kako bi pronašao točnog klijenta za svaku narudžbu.

  • Odnos više-prema-više

    Zamislite 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. Nadalje, za svaki zapis u tablici Proizvodi može biti više zapisa u tablici Narudžbe. Ova vrsta odnosa naziva se više-prema-više. Imajte na umu je za otkrivanje postojećeg odnosa više-prema-više između vaših tablica važno uzeti u obzir obje strane odnosa.

    Kako biste prikazali odnos više-prema-više u svom dizajnu baze podataka, morate 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. Na primjer, tablica Narudžbe i tablica Proizvodi imaju odnos više-prema-više definiran stvaranjem dvaju odnosa jedan-prema-više u tablici Detalji narudžbe. Jedna narudžba može imati više proizvoda, a jedan proizvod se može pojaviti u više narudžbi.

  • Odnos jedan-prema-jedan

    U odnosu jedan-prema-jedan svaki zapis u prvoj tablici može imati samo jedan odgovarajući zapis u drugoj tablici, a svaki zapis u drugoj tablici može imati samo jedan odgovarajući zapis u prvoj tablici. Ta vrsta odnosa nije uobičajena jer su najčešće informacije povezane na ovaj način spremljene u istoj tablici. Odnos jedan-prema-jedan možete koristiti kako biste podijelili tablicu s mnogo polja, kako biste izdvojili dio tablice iz sigurnosnih razloga ili kako biste spremili informacije koje se primjenjuju samo na podskup glavne tablice. Prilikom identifikacije takvog odnosa obje tablice moraju dijeliti zajedničko polje.

Vrh stranice

Zašto stvoriti odnose između tablica?

Odnose između tablica možete stvarati izričito pomoću prozora Odnosi ili povlačenjem polja iz okna Popis polja. Access koristi odnose između tablica da bi spojio tablice kada ih je potrebno koristiti u objektima baze podataka. Postoji nekoliko razloga za stvaranje odnosa između tablica prije nego što stvorite ostale objekte baze podataka, kao što su obrasci, upiti i izvješća.

  • Iz odnosa između tablica crpe se podaci za dizajne upita

    Da biste radili sa zapisima iz više od jedne tablice, često morate stvoriti upit koji spaja tablice. Upit funkcionira tako da uspoređuje vrijednosti primarnog ključa prve tablice s vanjskim ključem u drugoj tablici. Na primjer, da biste dobili retke koji popisuju sve narudžbe svakog klijenta, stvarate upit koji spaja tablicu Kupci s tablicom Narudžbe na temelju polja ID kupca. U prozoru Odnosi možete ručno odrediti polja koja treba spojiti. No ako već postoji odnos između tablica, Access omogućuje zadano spajanje na temelju postojećeg odnosa između tablica. Nadalje, ako koristite neki čarobnjak za upite, Access koristi podatke koje prikuplja iz odnosa između tablica koji ste već definirali da bi vam predstavio odabire koje je prikupio iz podataka i unaprijed unio odgovarajuće zadane vrijednosti u postavke svojstava.

  • Iz odnosa između tablica crpe se podaci za dizajne upita

    Kada dizajnirate obrazac ili izvješće, Access koristi podatke koje prikuplja iz odnosa između tablica koje ste već definirali da bi vam prikazao odabire koje je prikupio iz podataka i unaprijed unio odgovarajuće zadane vrijednosti u postavke svojstava.

  • Odnosi između tablica temelj su kojim možete nametnuti referencijalni integritet kako biste pomogli spriječiti "napuštene" zapise u svojoj bazi podataka. "Napušteni" zapis je zapis s referencom na neki drugi zapis koji ne postoji — na primjer, zapis o narudžbi koji ima referencu na zapis o klijentu koji ne postoji.

    Kad dizajnirate bazu podataka, dijelite informacije u tablice od kojih svaka ima primarni ključ. Zatim dodajete vanjske ključeve u povezane tablice koje imaju referencu na te primarne ključeve. Ti parovi primarni ključ-vanjski ključ tvore osnovu za odnose između tablica i upite na više tablica. Zato je važno da te reference vanjski ključ-primarni ključ ostanu sinkronizirane. Referencijalni integritet pomaže osiguravanju da reference ostaju sinkronizirane i ovisi o odnosima između tablica.

Vrh stranice

Objašnjenje referencijalnog integriteta

Kada dizajnirate bazu podataka, podatke dijelite u mnogo tematskih tablica da biste redundantnost podataka sveli na minimum. Zatim programu Access pružate sredstva pomoću kojih se podaci ponovno spajaju tako da smještate zajednička polja u povezane tablice. Na primjer, da biste prikazali vezu jedan-prema-više, uzet ćete primarni ključ iz tablice "jedan" i dodati ga kao dodatno polje u tablicu "više". Da bi ponovno spojio podatke, Access uzima vrijednost iz tablice "više" i traži odgovarajuću vrijednost u tablici "jedan". Na taj se način vrijednosti iz tablice "više" pozivaju na odgovarajuće vrijednosti u tablici "jedan".

Pretpostavimo da imate odnos jedan-prema-više između tablice Dostavljači i tablice Narudžbe i želite izbrisati jednog dostavljača. Ako dostavljač kojeg želite izbrisati ima narudžbe u tablici Narudžbe, te će narudžbe ostati "napuštene" kad izbrišete zapis o dostavljaču. Tablica Narudžbe još uvijek će sadržavati ID dostavljača, ali ID više neće vrijediti jer zapis na koji se upućuje više ne postoji.

Svrha je referencijalnog integriteta sprječavanje nastanka "napuštenih" zapisa i očuvanje sinkroniziranosti referenci tako da se takva hipotetska situacija nikad ne dogodi.

Referencijalni integritet namećete tako da ga omogućite za odnos između tablica. Nakon nametanja Access odbacuje sve operacije koje bi narušile referencijalni integritet za taj odnos tablice. To znači da će Access odbiti i ažuriranja kojima se mijenja cilj reference i brisanja kojima se uklanja cilj reference. No moguće je da imate savršeno valjanu potrebu za promjenom primarnog ključa za dostavljača koji ima narudžbe u tablici Narudžbe. U takvim slučajevima Access zapravo mora automatski ažurirati sve retke na koje se to odnosi u sklopu jedne operacije. Na taj način Access jamči da je ažuriranje u potpunosti dovršeno te da baza podataka nije ostavljena u nedosljednom stanju, tj. u stanju u kojem su neki reci ažurirani, a neki ne. Zbog toga Access mogućnost Kaskadno ažuriranje povezanih polja. Kada nametnete referencijalni integritet i odaberete mogućnost Kaskadno ažuriranje povezanih polja, a zatim ažurirate primarni ključ, Access automatski ažurira sva polja koja se pozivaju na primarni ključ.

Moguće je i da ćete imati legitimnu potrebu za brisanjem retka i svih povezanih zapisa – na primjer, zapisa o dostavljaču i svih povezanih narudžbi za tog dostavljača. Zbog toga Access podržava mogućnost Kaskadno brisanje srodnih zapisa. Kada nametnete referencijalni integritet i odaberete mogućnost Kaskadno brisanje srodnih zapisa te potom izbrišete zapis na onoj strani odnosa na kojoj se nalazi primarni ključ, Access automatski briše sve zapise koji se pozivaju na taj primarni ključ.

Vrh stranice

Prikaz odnosa između tablica

Da biste pogledali odnose između tablica, kliknite Odnosi na kartici Alati baze podataka. Otvara se prozor Odnosi i prikazuje sve postojeće odnose. Ako još nije definiran nijedan odnos između tablica, a prozor Odnosi otvarate prvi put, Access vas pita želite li u prozor dodati tablicu ili upit.

Otvaranje prozora Odnosi

  1. Kliknite Datoteka, zatim Otvori, a zatim odaberite i otvorite bazu podataka.

  2. Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.

  3. Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.Time se prikazuju svi definirani odnosi u bazi podataka. Imajte na umu da skrivene tablice (one uz koje je potvrđen okvir Skriveno u sklopu Svojstva tablice) ali njihovi odnosi neće biti prikazani osim ako je potvrđen okvir Pokaži skrivene objekte u dijaloškom okviru Mogućnosti navigacije.

Odnos između tablica predstavlja se crtom odnosa nacrtanom između tablica u prozoru Odnosi. Odnos koji ne nameće referencijalni integritet pojavljuje se kao tanka crta između zajedničkih polja koja podržavaju odnos. Kada odaberete odnos klikom na njegovu crtu, crta se podeblja da bi se pokazalo da je odabrana. Ako nametnete referencijalni integritet za taj odnos, crta izgleda deblje na svakom kraju. Uz to se pojavljuje broj 1 iznad debljeg dijela crte na jednoj strani odnosa i simbol beskonačnosti () iznad podebljanog dijela crte na drugoj strani odnosa.

Kada je prozor Odnosi aktivan, na vrpci su vam na raspolaganju sljedeće naredbe:

Na kartici Dizajn odnosau grupi Alati učinite sljedeće:

  • Uredi odnose Otvara dijaloški okvir Uređivanje odnosa. Kada odaberete crtu odnosa, možete kliknuti Uredi odnose da biste promijenili odnose između tablica. Umjesto toga, možete dvokliknuti crtu odnosa.

  • Očisti raspored Uklanja sve tablice i odnose iz prikaza u prozoru Odnosi. Imajte na umu da ta naredba samo sakriva tablice i odnose te da ih ne briše.

  • Izvješće o odnosima Stvara izvješće koje prikazuje tablice i odnose u bazi podataka. Izvješće prikazuje samo tablice i odnose koji nisu skriveni u prozoru Odnosi.

Na kartici Dizajn odnosa u grupi Odnosi:

  • Dodavanje tablica    Omogućuje prikaz odabira tablica u prozoru Odnosi.

  • Sakrij tablicu Skriva odabranu tablicu u prozoru Odnosi.

  • Izravni odnosi Prikazuje sve odnose i povezane tablice za odabranu tablicu u prozoru Odnosi, ako već nisu prikazani.

  • Svi odnosi Prikazuje sve odnose i povezane tablice u bazi podataka u prozoru Odnosi. Imajte na umu da se skrivene tablice (tablice za koje je u dijaloškom okviru Svojstva za tu tablicu potvrđen okvir Skriveno) i njihovi odnosi neće prikazati osim ako se u dijaloškom okviru Mogućnosti navigacije ne odabere mogućnost Prikaži skrivene objekte.

  • Zatvori Zatvara prozor Odnosi. Ako ste napravili bilo kakve promjene u rasporedu prozora odnosa, upitat će vas se želite li spremiti te promjene.

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.