Določanje relacij med tabelami v zbirki podatkov programa Microsoft Access

Prevodi člankov Prevodi člankov
ID članka: 304466 - Oglejte si izdelke, na katere se nanaša ta članek.
Začetniki: Zahteva znanje o uporabniškem vmesniku v računalniku, ki ga uporablja en uporabnik.

Ta članek velja le za zbirke podatkov programa Microsoft Access (.mdb ali .accdb).
Za enak postopek v programu Microsoft Access 2000 glejte članek 304467 (Ta povezava lahko vodi k besedilu, ki je delno ali v celoti v angleščini).
Za enak postopek v programu Microsoft Access 97 glejte članek 304468 (Ta povezava lahko vodi k besedilu, ki je delno ali v celoti v angleščini).
Razširi vse | Zmanjšaj

Na tej strani

POVZETEK

V tem članku je opisano, kako določiti relacije v zbirki podatkov programa Microsoft Access. Vanj so vključene te teme:
  • Kaj so relacije med tabelami
  • Vrste relacij med tabelami
    • Relacija »ena proti mnogo«
    • Relacije »mnogo proti mnogo«
    • Relacija »ena proti ena«

  • Določanje relacij med tabelami
    • Določanje relacij »ena proti mnogo« ali »ena proti ena«
    • Določanje relacij »mnogo proti mnogo«

  • Referenčna integriteta
  • Kaskadne posodobitve in brisanja
  • Vrste združitev

DODATNE INFORMACIJE

Kaj so relacije med tabelami

V relacijski zbirki podatkov relacije omogočajo, da preprečite odvečne podatke. Če na primer oblikujete zbirko podatkov, ki bo sledila informacijam o knjigah, lahko ustvarite tabelo, imenovano »Naslovi«, v kateri bodo shranjeni podatki o posamezni knjigi, na primer naslov knjige, datum izdaje in založnik. Morda želite shraniti tudi podatke o založniku, kot so na primer založnikova telefonska številka, naslov in poštna številka. Če bi želeli shraniti vse te podatke v tabelo z naslovi, bi bila založnikova telefonska številka podvojena za vsako knjigo, ki bi jo natisnil založnik.

Boljša rešitev je, da podatke o založniku shranite le enkrat, in sicer v ločeno tabelo, imenovano »Založniki« Nato bi v tabelo »Naslovi« vstavili kazalec, ki bi za sklic uporabil vnos v tabeli »Založniki«.

Če želite zagotoviti nenehno sinhronizacijo podatkov, lahko med tabelama »Naslovi« in »Založniki« vsilite referenčno integriteto. Relacije z referenčnimi integritetami omogočajo, da se podatki v eni tabeli ujemajo s podatki v drugi tabeli. Vsak naslov v tabeli »Naslovi« mora biti na primer povezan z določenim založnikom v tabeli »Založniki«. V zbirko podatkov ni mogoče dodati naslova za založnika, ki ne obstaja v zbirki podatkov.

Vrste relacij med tabelami

Relacija deluje tako, da poišče ujemajoče se podatke v ključnih stolpcih, po navadi v stolpcih z istim imenom v obeh tabelah. V večini primerov relacija poišče ujemajoči se primarni ključ iz ene tabele, ki zagotavlja enolični identifikator za posamezno vrstico, z vnosom v tujem ključu v drugi tabeli. Prodajo je mogoče na primer povezati z določenimi prodanimi knjigami tako, da ustvarite relacijo med stolpcem »ID naslova« v tabeli »Naslovi« (primarni ključ) in stolpcem »ID naslova« v tabeli »Prodaja« (tuji ključ).

Na voljo so tri vrste relacij med tabelami. Vrsta ustvarjene relacije je odvisna od tega, kako so sorodni stolpci določeni.

Relacija »ena proti mnogo«

Relacija »ena proti mnogo« je najpogostejša vrsta relacije. V tej vrsti relacije ima vrstica v tabeli A lahko mnogo ujemajočih se vrstic v tabeli B, vendar pa ima vrstica v tabeli B lahko le eno ujemajočo se vrstico v tabeli A. Tabeli »Založniki« in »Naslovi« imata na primer relacijo »ena proti mnogo«: vsak založnik ustvari veliko knjig, vendar pa je vsaka knjiga le od enega založnika.

Relacija »ena proti mnogo« je ustvarjena, če je le eden od stolpcev v relaciji primarni ključ ali ima enolično omejitev.

V Accessu je stran primarnega ključa relacije »ena proti mnogo« prikazana s simbolom ključa. Stran tujega ključa relacije je prikazana s simbolom neskončnosti.

Relacije »mnogo proti mnogo«

V relaciji »mnogo proti mnogo« ima lahko vrstica v tabeli A mnogo ujemajočih se vrstic v tabeli B in obratno. Tako relacijo ustvarite tako, da določite tretjo tabelo, imenovano stična tabela, katere primarni ključ sestavljajo tuji ključi iz tabel A in B. Tabeli »Avtorji« in »Naslovi« imata na primer relacijo »mnogo proti mnogo«, ki je določena z relacijo »ena proti mnogo« iz vsake od teh tabel na tabelo »NasloviAvtorji«. Primarni ključ tabele »NasloviAvtorji« je kombinacija stolpca »ID avtorja« (primarni ključ tabele »Avtorji«) in stolpca »ID naslova« (primarni ključ tabele »Naslovi«).

Relacije »ena proti ena«

V relaciji »ena proti ena« ima lahko vrstica v tabeli A največ eno ujemajočo se vrstico v tabeli B in obratno. Relacija »ena proti ena« je ustvarjena, če sta oba stolpca v relaciji primarna ključa ali imata enolične omejitve.

Ta vrsta relacije ni pogosta, ker je mogoče večino podatkov, ki so med sabo v relaciji na ta način, vstaviti v eno tabelo. Relacijo »ena proti ena« lahko uporabite za:
  • razdelitev tabele z veliko stolpci;
  • osamitev dela tabele zaradi varnostnih razlogov;
  • shranjevanje podatkov, ki jih ne boste uporabljali dolgo časa in bi jih bilo mogoče preprosto izbrisati tako, da preprosto izbrišete tabelo; in
  • shranjevanje podatkov, ki veljajo le za podnabor glavne tabele.
V Accessu je stran primarnega ključa relacije »ena proti ena« prikazana s simbolom ključa. Tudi stran tujega ključa je prikazana s simbolom ključa.

Določanje relacij med tabelami

Pri ustvarjanju relacij med tabelami so polja v relaciji lahko poimenovana drugače. Vendar pa morajo polja v relaciji imeti enak podatkovni tip, razen če je primarni ključ polja polje »Samoštevilo«. Polje »Samoštevilo« se lahko ujema s poljem »Število« le, če je lastnost FieldSize obeh ujemajočih se polj enaka. Polje »Samoštevilo« se lahko na primer ujema s poljem »Število«, če je lastnost FieldSize obeh polj »Dolgo celo število«. Tudi če sta obe ujemajoči se polji polji »Število«, morata imeti enako nastavitev lastnosti FieldSize.

Določanje relacij »ena proti mnogo« ali »ena proti ena«

Relacijo »ena proti mnogo« ali »ena proti ena« lahko ustvarite tako:
  1. Zaprite vse odprte tabele. Relacij ni mogoče ustvariti ali spremeniti med odprtimi tabelami.
  2. V Accessu 2002 ali Accessu 2003 sledite tem korakom:
    1. Pritisnite tipko F11, da preklopite v okno zbirke podatkov.
    2. V meniju Orodja kliknite Relacije.
    V Accessu 2007 na kartici Orodja za zbirke podatkov v skupini Pokaži/skrij kliknite Relacije.
  3. Če v zbirki podatkov še niste določili še nobenih relacij, se samodejno prikaže pogovorno okno Pokaži tabelo. Če želite dodati tabele, med katerimi želite ustvariti relacije, vendar pa pogovorno okno Pokaži tabelo ni prikazano, v meniju Relacije kliknite Pokaži tabelo.
  4. Dvokliknite imena tabel, med katerimi želite ustvariti relacije, in nato zaprite pogovorno okno Pokaži tabelo. Če želite ustvariti relacijo med samo tabelo, to tabelo dodajte dvakrat.
  5. Povlecite polje, med katerim želite iz ene tabele ustvariti relacijo s poljem v relaciji v drugi tabeli. Če želite povleči več polj, pritisnite tipko CTRL, kliknite posamezno polje in jih nato povlecite.

    V večini primerov povlečete polje s primarnim ključem (ki je prikazano s krepkim besedilom) iz ene tabele do podobnega polja (pogosto z istim imenom), ki se v drugi tabeli imenuje tuji ključ.
  6. Prikaže se pogovorno okno Urejanje relacij. Preverite, ali so imena polj, ki so prikazana v dveh stolpcih, pravilna. Po potrebi jih lahko spremenite.

    Po potrebi lahko nastavite možnosti relacije. Če želite več informacij o določenem elementu v pogovornem oknu Urejanje relacij, kliknite gumb z vprašajem in nato kliknite element. Te možnosti so opisane podrobneje v nadaljevanju tega članka.
  7. Če želite ustvariti relacijo, kliknite Ustvari.
  8. Ponovite korake od 5 do 8 za vsak par tabel, med katerimi želite ustvariti relacije.

    Ko zaprete pogovorno okno Urejanje relacij, vas Microsoft Access vpraša, ali želite shraniti postavitev. Ne glede na to, ali shranite postavitev ali ne, bodo ustvarjene relacije shranjene v zbirko podatkov.

    OPOMBA: Relacije lahko ustvarite tako v poizvedbah kot tudi tabelah. Vendar pa v poizvedbah ni mogoče vsiliti referenčne integritete.

Določanje relacij »mnogo proti mnogo«

Relacijo »mnogo proti mnogo« lahko ustvarite tako:
  1. Ustvarite dve tabeli, ki bosta imeli relacijo »mnogo proti mnogo«.
  2. Ustvarite tretjo tabelo, imenovano stična tabela, in vanjo dodajte nova polja z istimi definicijami, kot so v poljih s primarnim ključem iz vsake od obeh tabel. V stični tabeli polja s primarnim ključem delujejo kot tuji ključi. V stično tabelo lahko dodate tudi druga polja, tako kot v kateri koli drugi tabeli.
  3. V stični tabeli nastavite primarni ključ tako, da bodo vanj vključena polja s primarnim ključem iz drugih dveh tabel. V stični tabeli »NaslovAvtorji« bi primarni ključ sestavljali na primer polji »IDNaročila« in »IDIzdelka«.

    OPOMBA: Primarni ključ lahko ustvarite tako:
    1. Odprite tabelo v pogledu načrta.
    2. Izberite polje ali polja, ki jih želite določiti kot primarni ključ. Če želite izbrati eno polje, kliknite izbirnik vrstic za želeno polje.

      Če želite izbrati več polj, pridržite tipko CTRL in nato kliknite izbirnik vrstic za posamezno polje.
    3. V Accessu 2002 ali Accessu 2003 v orodni vrstici kliknite Primarni ključ.

      V Accessu 2007 na kartici Načrt v skupini Orodja kliknite Primarni ključ.

      Opomba Če želite, da se vrstni red polj s primarnim ključem razlikuje od vrstnega reda polj v tabeli, v orodni vrstici kliknite Indeksi, da prikažete pogovorno okno Indeksi, in nato spremenite vrstni red imen polj za indeks, imenovan PrimaryKey (PrimarniKljuč).
  4. Določite relacijo »ena proti mnogo« za obe primarni tabeli in stično tabelo.

Referenčna integriteta

Referenčna integriteta je sistem pravil, s katerim Microsoft Access zagotovi, da so relacije med zapisi v tabelah v relaciji veljavne in da nenamerno ne izbrišete ali spremenite podatkov v relaciji. Referenčno integriteto lahko nastavite, če so izpolnjeni vsi ti pogoji:
  • Ujemajoče se polje iz primarne tabele je primarni ključ ali ima enoličen indeks.
  • Polja v relaciji imajo isti podatkovni tip. Obstaja dve izjemi. Polje »Samoštevilo« je mogoče povezati s poljem »Število«, čigar lastnost FieldSize je nastavljena na »Dolgo celo število«, polje »Samoštevilo«, čigar lastnost FieldSize je nastavljena na »ID replikacije«, pa je mogoče povezati s poljem »Število«, čigar lastnost FieldSize je nastavljena na »ID replikacije«.
  • Obe tabeli sta v isti zbirki podatkov programa Microsoft Access. Če so tabele povezane tabele, morajo imeti obliko zapisa programa Microsoft Access, poleg tega pa morate odpreti zbirko podatkov, v kateri so shranjene, če želite nastaviti referenčno integriteto. Referenčne integritete ni mogoče vsiliti za povezane tabele iz zbirk podatkov v drugih oblikah zapisa.
Pri uporabi referenčne integritete morate upoštevati ta pravila:

  • V polje s primarnim ključem v tabeli v relaciji ne morete vnesti vrednosti, ki ne obstaja v primarnem ključu v primarni tabeli. Vendar pa lahko v tuji ključ vnesete ničelno vrednost, ki določa, da zapisi niso v relaciji. Ne morete na primer imeti naročila, ki je dodeljeno neobstoječi stranki, vendar pa imate lahko naročilo, ki je dodeljeno nikomur, in sicer tako, da v polje »IDStranke« vnesete ničelno vrednost.
  • Iz primarne tabele ne morete izbrisati zapisa, če so v tabeli v relaciji ujemajoči se zapisi. Iz tabele »Zaposleni« ne morete na primer izbrisati zapisa o zaposlenem, če so zaposlenemu dodeljena naročila v tabeli »Naročila«.
  • V primarni tabeli ne morete spremeniti primarnega ključa, če ima ta zapis zapise v relaciji. V tabeli »Zaposleni« ne morete na primer spremeniti ID zaposlenega, če so zaposlenemu dodeljena naročila v tabeli »Naročila«.

Kaskadne posodobitve in brisanja

V relacijah, v katerih je vsiljena referenčna integriteta, lahko določite, ali naj Microsoft Access samodejno kaskadno posodobi ali izbriše zapise v relaciji. Če nastavite te možnosti, so operacije brisanja in posodabljanja, ki bi jih po navadi preprečila referenčna integriteta, dovoljene. Ko iz primarne tabele izbrišete zapise ali v njej spremenite vrednosti primarnega ključa, Microsoft Access ustrezno spremeni tabele v relaciji, da ohrani referenčno integriteto.

Če pri določanju relacije potrdite polje Kaskadno posodabljanje polj v relaciji, Microsoft Access pri vsaki spremembi primarnega ključa zapisa v primarni tabeli samodejno posodobi primarni ključ v novo vrednost v vseh zapisih v relaciji. Če na primer v tabeli »Stranke« spremenite ID stranke, je polje »IDStranke« v tabeli »Naročila« samodejno posodobljeno za vsa naročila te stranke, tako da se relacija ne prekine. Microsoft Access izvede kaskadno posodobitev brez kakršnega koli obvestila.

OPOMBA: Če je primarni ključ v primarni tabeli polje »Samoštevilo«, potrditev polja Kaskadno posodabljanje polj v relaciji nima nobenega učinka, ker vrednosti v polju »Samoštevilo« ni mogoče spremeniti.

Če pri določanju relacije potrdite polje Kaskadno brisanje zapisov v relaciji, Microsoft Access pri vsakem brisanju zapisov iz primarne tabele samodejno izbriše zapise v relaciji v tabeli v relaciji. Če na primer iz tabele »Stranke« izbrišete zapis stranke, so vsa naročila te stranke samodejno izbrisana iz tabele »Naročila« (to vključuje tudi zapise v tabeli »Podrobnosti naročila«, ki je v relaciji z zapisi »Naročila«). Če iz obrazca ali podatkovnega lista izbrišete zapise tako, da potrdite polje Kaskadno brisanje zapisov v relaciji, vas Microsoft Access opozori, da bodo morda izbrisani tudi zapisi v relaciji. Vendar če zapise izbrišete s poizvedbo za brisanje, Microsoft Access samodejno izbriše zapise iz tabel v relaciji, ne da bi prikazal opozorilo.

Vrste združitev

Na voljo so tri vrste združitev, in sicer:

1. možnost določa notranje združevanje. Notranje združevanje je združitev, pri kateri so zapisi iz dveh tabel združeni v rezultate poizvedbe le, če vrednosti v združenih poljih izpolnjujejo določene pogoje. V poizvedbi je privzeta združitev notranje združevanje, ki izbere zapise le, če se vrednosti v združenih poljih ujemajo.

2. možnost določa levo zunanje združevanje. Levo zunanje združevanje je združitev, pri kateri so vsi zapisi z leve strani operacije LEFT JOIN v izjavi SQL poizvedbe dodani v rezultate poizvedbe, tudi če v združenih poljih iz tabele na desni strani ni ujemajočih se vrednosti.

3. možnost določa desno zunanje združevanje. Desno zunanje združevanje je združitev, pri kateri so vsi zapisi z desne strani operacije RIGHT JOIN v izjavi SQL poizvedbe dodani v rezultate poizvedbe, tudi če v združenih poljih iz tabele na levi strani ni ujemajočih se vrednosti.

Lastnosti

ID članka: 304466 - Zadnji pregled: 31. januar 2008 - Revizija: 5.1
VELJA ZA:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Ključne besede: 
kbdesign kbdatabase kbhowto KB304466

Pošlji povratne informacije

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com