Odnos u aplikaciji Access omogućuje objedinjavanje podataka iz dviju različitih tablica. Svaki se odnos sastoji od polja u dvjema tablicama s odgovarajućim podacima. Moguće je, primjerice, da se u tablici Proizvodi i u tablici DetaljiNarudžbe nalazi polje IDProizvoda. Svaki zapis u tablici DetaljiNarudžbe sadrži IDProizvoda koji odgovara zapisu u tablici Proizvodi s istom vrijednošću za IDProizvoda.
Ako u nekom upitu koristite povezane tablice, odnos programu Access omogućuje da odredite koji se zapisi iz iste tablice kombiniraju u skupu rezultata. Pomoću odnosa prilikom održavanja sinkroniziranosti izbrisanih podataka onemogućuje se njihovo brisanje i to se zove referencijalni integritet.
Da biste mogli raditi s odnosima, morate razumjeti osnovne koncepte. Dodatne informacije potražite u člancima Vodič kroz odnose između tablica i Početak rada s odnosima tablica.
Sadržaj članka
Pregled
U bazi podataka programa Access odnos tablice stvara se na jedan od sljedećih načina:
-
U prozoru Odnosi dodajte tablice koje želite povezati, a potom povucite polje da biste ih povezali s ostalim tablicama.
-
Iz okna Popis polja polje povucite u podatkovnu tablicu.
Kada stvarate odnose između dvije tablice, zajednička polja ne moraju imati iste nazive polja, iako je to često slučaj, ali moraju biti iste vrste podataka. No ako je primarni ključ polje s automatskim numeriranjem, vanjski ključ također može biti numeričko polje ako je svojstvo VeličinaPolja jednako za oba polja. Na primjer, polja s automatskim numeriranjem i numerička polja možete uparivati ako je svojstvo VeličinaPolja za oba polja dugi cijeli broj. Ako su oba zajednička polja numerička polja, moraju imati istu postavku svojstva VeličinaPolja.
Stvaranje odnosa između tablica pomoću prozora Odnosi
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Dodaj tablice.
-
Odaberite jednu ili više tablica ili upita, a zatim kliknite Dodaj. Nakon dovršetka dodavanja tablica i upita na karticu dokumenta Odnosi, kliknite Zatvori.
-
Povucite polje (u pravilu primarni ključ) iz jedne tablice u zajedničko polje (vanjski ključ) druge tablice. Da biste povukli više polja, pritisnite tipku CTRL, kliknite svako polje, a zatim ih povucite.
Pojavit će se dijaloški okvir Uređivanje odnosa. -
Provjerite jesu li prikazani nazivi polja zajednička polja odnosa. Ako naziv polja nije ispravan, kliknite naziv polja i odaberite odgovarajuće polje s popisa.Nametanje referencijalnog integriteta.
Da biste nametnuli referencijalni integritet za taj odnos, potvrdite okvir Nametni referencijalni integritet. Dodatne informacije o referencijalnom integritetu potražite u odjeljku -
Kliknite Stvori.
Access iscrtava crtu odnosa između dviju tablica. Ako potvrdite okvir Nametni referencijalni integritet, crta se podebljava na oba kraja. Osim toga, samo ako ste potvrdili okvir Nametni referencijalni integritet, iznad debljeg dijela jedne strane crte odnosa prikazuje se broj 1, a iznad debljeg dijela na drugoj strani crte simbol beskonačnosti (∞), kao što je prikazano na sljedećoj slici.
Napomene:
-
Stvaranje odnosa jedan-prema-jedan Oba zajednička polja (u pravilu polja primarnog i vanjskog ključa) moraju imati jedinstveni indeks. To znači da bi svojstvo Indeksirano za ta polja trebalo biti postavljeno na Da (bez duplikata). Ako oba polja imaju jedinstveni indeks, Access stvara odnos jedan-prema-jedan.
-
Stvaranje odnosa jedan-prema-više Polje na strani „jedan“ (u pravilu primarni ključ) odnosa mora imati jedinstveni indeks. To znači da bi svojstvo Indeksirano za to polje trebalo biti postavljeno na Da (bez duplikata). Polje na strani „više“ ne bi trebalo imati jedinstveni indeks. Ono može imati indeks, ali mora dopuštati duplikate. To znači da bi svojstvo Indeksirano za to polje trebalo biti postavljeno ili na Ne ili na Da (duplikati dopušteni). Kada jedno polje ima jedinstveni indeks, a drugo ne, Access stvara odnos jedan-prema-više.
-
Stvaranje odnosa između tablica pomoću okna Popis polja radi dodavanja polja
U postojeću tablicu otvorenu u prikazu podatkovne tablice polje možete dodati tako da ga povučete iz okna Popis polja. U oknu Popis polja prikazuju se polja dostupna u povezanim tablicama i polja dostupna u drugim tablicama u bazi podataka.
Kada povlačite polje iz "druge" (nepovezane) tablice, a zatim prođete čarobnjak za traženje vrijednosti, između tablice u oknu Popis polja i tablice u koju ste povukli polje automatski se stvara novi odnos jedan-prema-više. Po zadanim postavkama, taj odnos koji stvara Access ne nameće referencijalni integritet. Da biste nametnuli referencijalni integritet, potrebno je urediti odnos. Dodatne informacije potražite u članku Uređivanje odnosa.
Otvaranje tablice u prikazu podatkovne tablice
-
U navigacijskom oknu dvaput kliknite tablicu.
Otvaranje okna Popis polja
-
Pritisnite ALT+F8. Pojavit će se okno Popis polja.
Okno Popis polja sve ostale tablice u bazi podataka prikazuje grupirane u kategorije. Kad s tablicom radite u prikazu podatkovne tablice, Access polja prikazuje u nekoj od dviju kategorija u oknu Popis polja: Polja dostupna u povezanim tablicama i Polja dostupna u drugim tablicama. U prvoj kategoriji nalaze se sve tablice koje imaju odnos s tablicom s kojom trenutno radite. U drugoj kategoriji nalaze se sve tablice s kojima vaša tablica nema odnos.
Nakon klika na znak plus (+) pokraj naziva tablice u oknu Popis polja prikazuje se popis polja dostupnih u toj tablici. Da biste dodali polje u tablicu, povucite željeno polje iz okna Popis polja u tablicu u prikazu podatkovne tablice.
Dodavanje polja i stvaranje odnosa iz okna Popis polja
-
Kada je tablica otvorena u prikazu podatkovne tablice, pritisnite tipke ALT+F8. Pojavit će se okno Popis polja.
-
Pod Polja dostupna u drugim tablicama kliknite znak plus (+) pokraj naziva tablice za prikazivanje popisa polja u toj tablici.
-
Povucite željeno polje iz okna Popis polja u tablicu otvorenu u prikazu podatkovne tablice.
-
Kad se pojavi redak za umetanje, ispustite polje.
Pokreće se Čarobnjak za traženje vrijednosti.
-
Slijedite upute za dovršavanje čarobnjaka za traženje vrijednosti.
Polje se pojavljuje u tablici u prikazu podatkovne tablice.
Kada povlačite polje iz "druge" (nepovezane) tablice, a zatim prođete čarobnjak za traženje vrijednosti, između tablice u oknu Popis polja i tablice u koju ste povukli polje automatski se stvara novi odnos jedan-prema-više. Po zadanim postavkama, taj odnos koji stvara Access ne nameće referencijalni integritet. Da biste nametnuli referencijalni integritet, potrebno je urediti odnos. Dodatne informacije potražite u članku Uređivanje odnosa.
Uređivanje odnosa
Neki odnos možete promijeniti tako da ga odaberete u prozoru Odnosi i uredite.
-
Pažljivo postavite pokazivač tako da pokazuje na crtu odnosa i zatim je odaberite klikom.
Crta odnosa nakon odabira se prikazuje podebljana.
-
Dvokliknite odabranu crtu odnosa.
(ili)
Na kartici Dizajn odnosa u grupi Alati kliknite Uređivanje odnosa.
Prikazuje se dijaloški okvir Uređivanje odnosa.
Otvaranje dijaloškog okvira Uređivanje odnosa
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.
Prikazuju se sve tablice s odnosima i njihove crte s odnosima. 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.
-
Kliknite crtu odnosa za odnos koji želite promijeniti. Crta odnosa nakon odabira se prikazuje podebljana.
-
Dvokliknite crtu odnosa.
(ili)
Na kartici Dizajn odnosa u grupi Alati kliknite Uređivanje odnosa.
Pojavit će se dijaloški okvir Uređivanje odnosa.
-
Izvršite promjene, a zatim kliknite U redu.
Dijaloški okvir Uređivanje odnosa omogućuje promjenu odnosa između tablica. Možete promijeniti tablice ili upite s obje strane odnosa ili pak polja s obje strane. Osim toga, možete postaviti vrstu spoja ili nametnuti referencijalni integritet i odabrati mogućnost kaskadiranja. Dodatne informacije o vrsti spoja i njezinu postavljanju potražite u odjeljku Postavljanje vrste spoja. Dodatne informacije o nametanju referencijalnog integriteta i odabiru mogućnost kaskadiranja potražite u odjeljku Nametanje referencijalnog integriteta.
Postavljanje vrste spoja
Kada definirate odnos između tablica, činjenice o odnosu koriste se za vaše dizajne upita. Na primjer, ako definirate odnos između dvije tablice, a zatim stvorite upit koji uključuje te tablice, Access automatski odabire zadana odgovarajuća polja na temelju polja određenih u odnosu. Ova inicijalna zadana stanja u svom upitu možete pregaziti, ali često će se vrijednosti ponuđene na temelju odnosa pokazati točnima. S obzirom da ćete vrlo često sparivati i spajati podatke natrag iz više od jedne tablice u svim osim u najjednostavnijim bazama podataka, postavljanje zadanih vrijednosti stvaranjem odnosa može uštedjeti vrijeme i biti jako korisno.
Upit za veći broj tablica spaja podatke iz više tablica uparivanjem vrijednosti u zajedničkim poljima. Operacija koja izvršava uparivanje i spajanje zove se spoj. Na primjer, pretpostavimo da želite prikazati narudžbe kupaca. Stvorite upit koji spaja tablicu Kupci i tablicu Narudžbe na polju ID kupca. Rezultati upita sadrže informacije o kupcu i informacije o narudžbi za samo one retke u kojima je pronađena odgovarajuća podudarnost.
Jedna od vrijednosti koju možete odrediti za svaki odnos je vrsta spoja. Korištenjem vrste spoja Access zna koji zapisi će se uključiti u rezultat upita. Na primjer, zamislite opet upit koji spaja tablicu Kupci i tablicu Narudžbe u zajedničkim poljima koja predstavljaju ID klijenta. Koristeći zadanu vrstu spoja (nazvanu unutarnji spoj), upit vraća retke iz tablice Klijenti i retke iz tablice Narudžbe gdje su zajednička polja (također nazvana spojena polja) jednaka.
Međutim, pretpostavimo da želite uključiti sve kupce — čak i one koji još nisu napravili nijednu narudžbu. Kako biste to postigli, potrebno je promijeniti vrstu spoja iz unutarnjeg spoja u lijevi vanjski spoj. Lijevi vanjski spoj vraća sve retke u tablici na lijevoj strani odnosa i samo one retke koji su parovi u tablici na desnoj strani. Desni vanjski spoj vraća sve retke na desnoj i samo one koji su parovi na lijevoj strani.
Napomena: U ovom slučaju, "lijevo" i "desno" odnosi se na položaj tablica u dijaloškom okviru Uređivanje odnosa, ne u prozoru Odnosi.
Trebali biste razmisliti o rezultatu koji najčešće želite od upita koji spaja tablice u ovom odnosu, a zatim sukladno tome postaviti vrstu spoja.
Postavljanje vrste spoja
-
U dijaloškom okviru Uređivanje odnosa kliknite Vrsta spoja.
Prikazuje se dijaloški okvir Svojstva spoja.
-
Odaberite svoj odabir, a zatim kliknite U redu.
Sljedeća tablica (koja koristi tablice Kupci i Narudžbe) prikazuje tri izbora prikazana u okviru Dijalog svojstava spoja, vrstu spoja koji koriste te vraćaju li se za svaku tablicu svi reci ili upareni reci.
Odabir |
Relacijski spoj |
Lijeva tablica |
Desna tablica |
---|---|---|---|
1. Obuhvaća samo retke u kojima su spojena polja iz obiju tablica jednaka. |
Unutarnji spoj |
Reci koji se podudaraju |
Reci koji se podudaraju |
2. Obuhvaća SVE zapise iz tablice "Kupci" i samo one zapise iz tablice "Narudžbe" u kojima su spojena polja jednaka. |
Lijevi vanjski spoj |
Svi reci |
Reci koji se podudaraju |
3. Obuhvaća SVE zapise iz tablice "Narudžbe" i samo one zapise iz tablice "Kupci" u kojima su spojena polja jednaka. |
Desni vanjski spoj |
Reci koji se podudaraju |
Svi reci |
Kad odaberete mogućnost 2 ili mogućnost 3, na crti odnosa prikazuje se strelica. Ta strelica pokazuje na stranu odnosa koja prikazuje samo retke koji se podudaraju.
Izvođenje promjena u dijaloškom okviru Svojstva spoja
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.
Prikazuju se sve tablice s odnosima i crte odnosa. 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. -
Kliknite crtu odnosa za odnos koji želite promijeniti. Crta odnosa nakon odabira se prikazuje podebljana.
-
Dvokliknite crtu odnosa. Pojavit će se dijaloški okvir Uređivanje odnosa.
-
Kliknite Vrsta spoja.
-
U dijaloškom okviru Svojstva spoja odaberite mogućnost, a zatim kliknite U redu.
-
Dodatno promijenite odnos, a zatim kliknite U redu.
Nametanje referencijalnog integriteta
Svrha je referencijalnog integriteta sprječavanje pojavljivanja „napuštenih“ zapisa, odnosno zapisa koji referenciraju druge zapise koji više ne postoje. Referencijalni integritet namećete tako da ga omogućite za odnos između tablica. Kada nametnete referencijalni integritet, Access odbija sve operacije koje mogu narušiti referencijalni integritet za taj odnos tablica. To znači da će Access odbiti i ažuriranja kojima se mijenja cilj reference i brisanja kojima se uklanja cilj reference. Upute za postavljanje propagacije ažuriranja i brisanja u programu Access tako da svi reci budu promijenjeni na odgovarajući način potražite u članku Postavljanje kaskadnih mogućnosti.
Uključivanje i isključivanje referencijalnog integriteta
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.
Prikazuju se sve tablice s odnosima i prikazuju crte odnosa. 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. -
Kliknite crtu odnosa za odnos koji želite promijeniti. Crta odnosa nakon odabira se prikazuje podebljana.
-
Dvokliknite crtu odnosa. Pojavit će se dijaloški okvir Uređivanje odnosa.
-
Potvrdite ili poništite okvir Nametni referencijalni integritet.
-
Dodatno promijenite odnos, a zatim kliknite U redu.
Ako nametnete referencijalni integritet, primjenjuju se sljedeća pravila:
-
Ne možete unijeti vrijednost u polje vanjskog ključa povezane tablice ako ta vrijednost ne postoji u polju primarnog ključa primarne tablice — u suprotnom se stvaraju zapisi koji nikamo ne pripadaju.
-
Ne možete izbrisati zapis iz primarne tablice ako u povezanoj tablici postoji zapis koji se podudara. Na primjer, ne možete izbrisati zapis o zaposleniku iz tablice Zaposlenici ako su tom zaposleniku dodijeljene narudžbe u tablici Narudžbe. Možete izbrisati primarni zapis i sve povezane zapise u jednoj operaciji ako odaberete potvrdni okvir Kaskadno izbriši srodne zapise.
-
Ne možete promijeniti vrijednost primarnog ključa u primarnoj tablici ako bi to značilo stvaranje napuštenih zapisa. Na primjer, ne možete promijeniti broj narudžbe u tablici Narudžbe ako su s tom narudžbom povezane stavke iz tablice Detalji narudžbe. Možete ažurirati primarni zapis i sve povezane zapise u pojedinačnom postupku odabirom potvrdnog okvira Kaskadno ažuriraj srodna polja.
Napomene: Ako nailazite na poteškoće s omogućivanjem referencijalnog integriteta, imajte na umu da je za nametanje referencijalnog integriteta potrebno ispuniti sljedeće uvjete:
-
Zajedničko polje u primarnoj tablici mora biti primarni ključ ili mora imati jedinstveni indeks.
-
Zajednička polja moraju sadržavati istu vrstu podataka. Iznimka je da polje Samonumeriranje može biti povezano s poljem Broj kojemu je svojstvo FieldSize postavljeno na Dugi cijeli broj.
-
Obje tablice postoje u istoj bazi podataka programa Access. Referencijalni integritet ne može se nametnuti na povezane tablice. Međutim, ako su izvorne tablice u obliku programa Access, možete otvoriti bazu podataka u kojoj su spremljene i omogućiti referencijalni integritet u toj bazi podataka.
-
Postavljanje kaskadnih mogućnosti
Možda ćete naletjeti na situaciju u kojoj ćete imati valjanu potrebu za promjenom vrijednosti na strani odnosa „jedan“. U tom slučaju potrebno je da Access automatski ažurira sve retke kojih se to tiče kao dio jedne operacije. Na taj način ažuriranje je završeno u potpunosti pa vaša baza nije ostala u nedosljednom stanju ― s nekim recima ažuriranim, a nekima ne. Access pomaže u izbjegavanju ovog problema na način da podržava mogućnost Kaskadno ažuriranje srodnih 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č.
Također ćete možda trebati izbrisati redak i sve povezane zapise ― na primjer, zapis Otpremnik i sve povezane narudžbe za tog otpremnika. Zbog toga Access podržava mogućnost Kaskadno brisanje srodnih zapisa. Kada nametnete referencijalni integritet i odaberete mogućnost Kaskadno brisanje srodnih zapisa, Access automatski briše sve zapise koji upućuju na primarni ključ kad izbrišete zapis koji sadrži primarni ključ.
Uključivanje i isključivanje kaskadnog ažuriranja i/ili kaskadnog brisanja
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.
Prikazuju se sve tablice s odnosima i prikazuju crte odnosa. 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. -
Kliknite crtu odnosa za odnos koji želite promijeniti. Crta odnosa nakon odabira se prikazuje podebljana.
-
Dvokliknite crtu odnosa.
Pojavit će se dijaloški okvir Uređivanje odnosa. -
Potvrdite okvir Nametni referencijalni integritet.
-
Potvrdite okvir Kaskadno ažuriranje srodnih polja ili Kaskadno brisanje povezanih zapisa ili pak oba.
-
Dodatno promijenite odnos, a zatim kliknite U redu.
Napomena: Ako je primarni ključ polje sa samonumeriranjem, uključivanje potvrdnog okvira Kaskadno ažuriranje srodnih polja neće imati svrhe jer se vrijednost polja sa samonumeriranjem ne može mijenjati.
Brisanje odnosa između tablica
Važno: Kada uklonite odnos, uklanjate i podršku za referencijalni integritet za taj odnos ako je omogućena. Access stoga više neće automatski sprječavati stvaranje „napuštenih“ zapisa na višestrukoj strani odnosa.
Da biste uklonili odnos između tablica, morate izbrisati crtu odnosa u prozoru Odnosi. Postavite pokazivač tako da pokazuje na crtu odnosa, a zatim kliknite crtu. Kada odaberete crtu, ona se prikazuje podebljana. Kada je crta odabrana, pritisnite DELETE.
-
Na kartici Alati baze podataka u grupi Odnosi kliknite Odnosi.
-
Na kartici Dizajn odnosa u grupi Odnosi kliknite Svi odnosi.
Prikazuju se sve tablice s odnosima i prikazuju crte odnosa. 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. -
Kliknite crtu odnosa za odnos koji želite izbrisati. Kada odaberete crtu, ona se prikazuje podebljana.
-
Pritisnite tipku DELETE.
-
Access može prikazati poruku Jeste li sigurni da iz svoje baze podataka želite trajno izbrisati odabrane odnose?. Ako se pojavi ta poruka o potvrdi, kliknite Da.
Napomena: Ako druga osoba ili proces, ili otvoreni objekt baze podataka (kao što je obrazac), upotrebljava bilo koju od tablica uključenih u odnos između tablica, nećete moći izbrisati odnos. Morate zatvoriti sve otvorene objekte koji koriste ove tablice prije nego što možete ukloniti odnos.
Pogledajte i sljedeće
Dodavanje polja s vrijednostima u tablicu
Usporedba dviju tablica u programu Access i pronalaženje samo podudarnih podataka