Eden od ciljev dobrega načrta zbirke podatkov je odstraniti odvečne podatke (podvojene podatke). Če želite doseči ta cilj, podatke razdelite v več tabel na osnovi zadeve tako, da je vsak podatek predstavljen samo enkrat. Programu Access zagotovite sredstva, s katerimi lahko razdeljene informacije znova združi: to naredite tako, da skupna polja postavite v sorodne tabele. Če želite ta korak pravilno izpolniti, pa morate razumeti relacije med tabelami in nato relacije navesti v zbirki podatkov.
V tem članku
Uvod
Ko ste v zbirki podatkov ustvarili tabelo za vsako zadevo, morate programu Access omogočiti, da informacije znova združi. To naredite tako, da skupna polja postavite v sorodne tabele, in z določanjem relacij med tabelami. Nato lahko ustvarite poizvedbe, obrazce in poročila, ki prikažejo informacije iz več tabel hkrati. Obrazec, prikazan tukaj, na primer prikazuje informacije iz več tabel hkrati:
1. Podatki v tem obrazcu so iz tabele »Stranke«,
2. tabele »Naročila«,
3. tabele »Izdelki«
4. in tabele »Podrobnosti o naročilu«.
Ime stranke v polju Zaračunaj pridobite iz tabele »Stranke«, vrednosti »ID naročila« in »Datum naročila« so iz tabele »Naročila«, ime izdelka je iz tabele »Izdelki« in vrednosti »Cena enote« ter »Količina« pa so iz tabele »Podrobnosti o naročilu«. Te tabele so povezane druga z drugo na več načinov, da so v obrazcu združene informacije iz vsake od njih.
V zgornjem primeru morajo biti polja v tabelah usklajena, da prikažejo informacije o istem naročilu. Uskladitev dosežemo z relacijami tabel. Relacija tabele deluje tako, da poveže ujemajoče se podatke v poljih ključa – po navadi polje z istim imenom v obeh tabelah. V večini primerov so ujemajoča se polja, polje s primarnim ključem ene tabele, kar je enoličen identifikator vsakega zapisa in polje s tujim ključem v drugi tabeli. Zaposleni na primer so lahko povezani z naročili, za katere so odgovorni tako, da ustvarite relacijo tabele med polji »IDZaposlenega« v tabelah »Zaposleni« in »Naročila«.
1. »IDZaposlenega« se prikaže v obeh tabelah – kot primarni ključ
2. in kot tuji ključ.
Vrste relacij tabele
V Accessu poznamo tri vrste relacij tabele.
-
Relacija »ena proti mnogo«
Zamislite si na primer zbirko podatkov, ki bi sledila naročilom in vključuje tabelo »Stranke« in »Naročila«. Stranka lahko opravi neomejeno število naročil. Iz tega sledi, da je za vsako stranko v tabeli »Stranke«, lahko prikazanih veliko naročil v tabeli »Naročila«. Relacija med tabelo »Stranke« in tabelo »Naročila« je relacija »ena proti mnogo«.
Če želite v načrtu zbirke podatkov predstaviti relacijo »ena proti mnogo«, vzemite primarni ključ na strani »ena« relacije in ga dodajte kot dodatno polje ali polja v tabelo na strani »mnogo« relacije. V tem primeru tako dodate novo polje – polje ID iz tabele »Stranke« – v tabelo »Naročila« in ga poimenujete »ID stranke«. Access lahko uporabi številko »ID stranke« v tabeli »Naročila«, da za vsako naročilo poišče ustrezno stranko.
-
Relacija »mnogo proti mnogo«
Zdaj si oglejmo relacijo med tabelama »Izdelki« in »Naročila«. Eno naročilo lahko vključuje več kot en izdelek. Po drugi strani se lahko isti izdelek pojavi v več naročilih. Zato lahko za vsak zapis v tabeli »Naročila« ustreza več zapisov v tabeli »Izdelki«. Poleg tega lahko vsak zapis v tabeli »Izdelki« ustreza več zapisom v tabeli »Naročila«. To vrsto relacije imenujemo »mnogo proti mnogo«. Če želite odkriti obstoječe relacije »mnogo proti mnogo« med tabelami, upoštevajte, da si je pomembno pogledati obe strani relacije.
Če želite predstaviti relacijo »mnogo proti mnogo«, morate ustvariti tretjo tabelo, ki jo imenujemo tudi stična tabela in ki relacijo »mnogo proti mnogo« razdeli v dve relaciji »ena proti mnogo«. Primarni ključ iz obeh tabel vstavite v tretjo tabelo. V tretji tabeli je tako zabeležena vsaka ponovitev ali primerek relacije. Tabeli »Naročila« in »Izdelki« imata na primer relacijo »mnogo proti mnogo«, ki jo določite z ustvarjanjem dveh relacij »ena proti mnogo« do tabele »Podrobnosti naročila«. Eno naročilo ima lahko več izdelkov, vsak izdelek pa se lahko pojavi v več naročilih.
-
Relacija »ena proti ena«
V relaciji »ena proti ena« ima lahko vsak zapis iz prve tabele le en ujemajoči se zapis v drugi tabeli, vsak zapis v drugi tabeli pa ima lahko le en ujemajoči se zapis v prvi tabeli. Ta relacija ni pogosta, ker so informacije, ki so povezane na tak način, pogosto shranjene v isti tabeli. Relacijo »ena proti ena« lahko uporabite, če želite razdeliti tabelo s številnimi polji, ker želite iz varnostnih razlogov izolirati en del tabele, ali shraniti informacije, ki veljajo le za podnabor glavne tabele. Ko določite takšno relacijo, morata imeti obe tabeli skupno polje.
Zakaj ustvariti relacije tabele?
Relacije tabele lahko ustvarite neposredno v oknu z relacijami ali če povlečete polje iz podokna Seznam polj. Access uporablja relacije tabele za način združevanja tabel, ko jih je treba uporabiti v predmetu zbirke podatkov. Več razlogov je, zakaj morate ustvariti relacije tabele, preden ustvarite druge predmete zbirke podatkov, na primer obrazce, poizvedbe ali poročila.
-
Relacije tabele obveščajo načrte poizvedb
Če želite delati z zapisi iz več tabel, morate ponavadi ustvariti poizvedbo, s katero združite tabele. Poizvedba deluje tako, da poišče vrednosti v polju s primarnim ključem prve tabele, ki se ujemajo z vrednostmi v polju s tujim ključem v drugi tabeli. Če želite na primer, da vrne vrstice, v katerih so za vsako stranko navedena vsa naročila, ustvarite poizvedbo, s katero na osnovi polja »ID stranke« združite tabeli »Stranke« in »Naročila«. V oknu z relacijami lahko ročno navedete polja, ki jih želite združiti. Če imate med tabelami že določeno relacijo, Access na osnovi relacije tabele določi privzeto združevanje. Poleg tega, če uporabite čarovnika za poizvedbe, vam Access nudi informacije, ki jih je zbral iz relacij tabele, ki ste jih že določili, da vas obvesti o izbiri in da vnaprej napolni nastavitve lastnosti z ustreznimi vrednostmi.
-
Relacije tabele obveščajo načrte obrazcev in poročil
Ko naredite načrt obrazca ali poročila, Access prikaže informacije, ki jih je zbral iz relacij tabele, ki ste jih že določili, da vas obvesti o izbiri in da vnaprej napolni nastavitve lastnosti z ustreznimi vrednostmi.
-
Relacije tabele so osnova, s katero lahko vsilite referenčno integriteto, da preprečite osamljene zapise v zbirki podatkov. Osamljeni zapis je zapis, ki se sklicuje na drug zapis, ki ne obstaja – na primer zapis o naročilih, ki se sklicuje na neobstoječ zapis o strankah.
Ko načrtujete zbirko podatkov, informacije razdelite v tabele, od katerih ima vsaka primarni ključ. Nato v sorodne tabele, ki se sklicujejo na te primarne ključe, dodate tuje ključe. Ti pari tujega in primarnega ključa oblikujejo osnovo za relacije tabele in poizvedbe z več tabelami. Pomembno je, da so sklici primarnega in tujega ključa sinhronizirani. Referenčna integriteta je odvisna od relacij tabele in zagotovi, da so sklici sinhronizirani.
Razumevanje referenčne integritete
Ko oblikujete zbirko podatkov, razdelite informacije iz zbirke podatkov v več tabel, ki temeljijo na zadevi, da zmanjšate nepotrebne podatke. Nato omogočite Access, da znova združi podatke, tako da umestite skupna polja v povezane tabele. Ko želite na primer predstaviti relacijo »ena proti mnogo«, vzamete primarni ključ iz tabele »ena« in ga dodate kot dodatno polje v tabelo »mnogo«. Pri združevanju podatkov Access vzame vrednost v tabeli »mnogo« in poišče ustrezno vrednost v tabeli »ena«. Na ta način se vrednosti v tabeli »mnogo« sklicujejo na ustrezne vrednosti v tabeli »ena«.
Recimo, da je med pošiljatelji in naročili relacija »ena proti mnogo«, pošiljatelje pa želite izbrisati. Če ima pošiljatelj, ki ga želite izbrisati naročila v tabeli »Naročila«, bodo naročila »osamljena«, ko izbrišete zapis »Pošiljatelj«. Naročila bodo vsebovala »ID pošiljatelja«, vendar ID ne bo več veljaven, ker zapis, na katerega se sklicuje več ne obstaja.
Namen referenčne integritete je preprečevanje osamljenih zapisov in ohranitev sinhroniziranih sklicev tako, da ne pride do takih hipotetičnih primerov.
Referenčno integriteto vsilite tako, da jo omogočite v relaciji tabele. Ko je referenčna integriteta vzpostavljena, Access zavrne vse operacije, ki kršijo referenčno integriteto za relacijo tabele. To pomeni, da Access zavrne tako posodobitve, ki spremenijo cilj sklicevanja, kot tudi brisanja, s katerimi se odstrani cilj sklicevanja. Lahko se zgodi, da je treba povsem utemeljeno spremeniti primarni ključ pošiljatelja, ki ima naročila v tabeli »Naročila«. V takih primerih mora Access z eno operacijo samodejno posodobiti vse vrstice. S tem Access zagotovi, da se posodobitev dokonča v celoti, da zbirka podatkov ni v nedoslednem stanju, kjer so nekatere vrstice posodobljene, nekatere pa ne. Zato ta Access podpira možnost Kaskadno posodabljanje polj v relaciji. Ko vzpostavite referenčno integriteto, izberite možnost Kaskadno posodabljanje polj v relaciji in posodobite primarni ključ, Access samodejno posodobi vsa polja, ki se sklicujejo na primarni ključ.
Možno je tudi, da je treba vrstico in vse sorodne zapise izbrisati – na primer zapis »Pošiljatelj« in vsa podobna naročila za tega pošiljatelja. Zaradi tega je v programu Access podprta možnost Kaskadno brisanje polj v relaciji. Ko referenčno integriteto vsilite in izberete možnost Kaskadno brisanje polj v relaciji in nato zapis na strani primarnega ključa relacije izbrišete, Access samodejno izbriše vse zapise, ki se sklicujejo na primarni ključ.
Ogled relacij tabele
Če si želite ogledati relacije tabele, na zavihku Orodja zbirke podatkov kliknite Relacije. Odpre se okno z relacijami in prikažejo se vse obstoječe relacije. Če še ni določena nobena relacija tabele in okno z relacijami prvič odprete, vas Access pozove, da v okno dodate tabelo ali poizvedbo.
Odpiranje okna z relacijami
-
Kliknite Datoteka, Odpri, nato pa izberite in odprite zbirko podatkov.
-
Na zavihku Orodja za zbirke podatkov v skupini Relacije kliknite Relacije.
-
Na zavihku Načrt relacij v skupini Relacije kliknite Vse relacije.
S tem prikažete vse določene relacije v zbirki podatkov. Bodite pozorni, da skrite tabele (tabele, za katere v pogovornem oknu Lastnosti potrdite polje Skrita) in njihove relacije ne bodo prikazane, razen če v pogovornem oknu Možnosti krmarjenja potrdite polje Pokaži skrite predmete.
Relacijo tabele predstavlja črta, ki povezuje tabele v oknu z relacijami. Relacija, ki ne vsili referenčne integritete je prikazana kot tanka črta med skupnimi polji, v katerih je relacija podprta. Ko izberete relacijo tako, da kliknete črto, je ta prikazana odebeljeno, da je razvidno, da ste jo izbrali. Če vsilite referenčno integriteto za to relacijo, je črta prikazana odebeljeno na koncu obeh strani. Poleg tega se nad odebeljenim delom črte na eni strani relacije prikaže številka 1 in znak za neskončnost (∞) nad odebeljenim delom črte na drugi strani.
Ko je okno z relacijami aktivno, lahko na traku izbirate med temi ukazi:
Na zavihku Načrt relacij v skupini Orodja :
-
Urejanje relacij Odpre se pogovorno okno Urejanje relacij . Ko izberete relacijsko črto, lahko kliknete Urejanje relacij, če želite spremeniti relacijo tabele. Lahko tudi dvokliknete relacijsko črto.
-
Počisti postavitev Vse tabele in relacije odstrani iz prikaza v oknu z relacijami. S tem ukazom samo skrijete tabele in relacije – jih ne izbrišete.
-
Poročilo o relacijah Ustvari poročilo, ki prikaže tabele in relacije v zbirki podatkov. Poročilo pokaže samo tabele in relacije, ki niso skrite v oknu z relacijami.
Na zavihku Načrt relacij v skupini Relacije :
-
Dodajanje tabel Omogoča izbiro tabel, ki jih želite prikazati v oknu »Relacije«.
-
Skrij tabelo Skrije izbrano tabelo v oknu z relacijami.
-
Neposredne relacije Prikaže vse relacije in sorodne tabele, če že niso prikazane, izbrane tabele v oknu z relacijami.
-
Vse relacije V oknu z relacijami prikaže vse relacije in sorodne tabele v zbirki podatkov. Upoštevajte, da skrite tabele (tabele, za katere v pogovornem oknu Lastnosti tabele potrdite polje Skrita) in relacije ne bodo prikazane, razen, če v pogovornem oknu »Možnosti krmarjenja« ni izbrana možnost »Pokaži skrite predmete«.
-
Zapri Okno z relacijami se zapre. Če ste naredili kaj sprememb pri postavitvi okna z relacijami, boste vprašani, ali želite spremembe shraniti.