Sprievodca vzťahmi tabuliek
Applies ToAccess pre Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jedným z cieľov dobrého návrhu databázy je odstrániť redundanciu údajov (duplicitné údaje). Na dosiahnutie tohto cieľa rozdelíte údaje do mnohýcho tematických tabuliek tak, že každá skutočnosť bude zastúpená len raz. Potom poskytnete programu Access spôsob, ako tieto rozdelené informácie opäť spojiť – môžete to urobiť tak, že umiestnite spoločné polia do tabuliek, ktoré navzájom súvisia. Aby ste však mohli tento krok vykonať správne, musíte pochopiť vzťahy medzi vašimi tabuľkami a potom určiť tieto vzťahy v databáze.

Obsah tohto článku

Úvod

Po vytvorení tabuľky pre každú tému v databáze musíte programu Access poskytnúť prostriedky, pomocou ktorých sa tieto informácie znova podľa potreby spoja. Dosiahnete to tak, že do navzájom súvisiacich tabuliek vložíte spoločné polia a určíte vzťahy medzi tabuľkami. Potom môžete vytvoriť dotazy, formuláre a zostavy, ktoré zobrazia informácie z niekoľkých tabuliek súčasne. Napríklad formulár, ktorý je uvedený nižšie, obsahuje informácie získané z niekoľkých tabuliek:

Objednávkový formulár, ktorý zobrazuje súvisiace informácie z piatich tabuliek súčasne

1. Informácie v tomto formulári pochádzajú z tabuľky Zákazníci...

2. ...tabuľky Objednávky...

3. ...tabuľky Produkty...

4. ...a tabuľky Podrobnosti objednávok...

Meno zákazníka v poli Príjemca je vybraté z tabuľky Zákazníci, hodnoty identifikácie objednávky a dátumu objednávky pochádzajú z tabuľky Objednávky, názov produktu pochádza z tabuľky Produkty a hodnoty jednotkovej ceny a množstva pochádzajú z tabuľky Podrobnosti objednávok. Tieto tabuľky sú navzájom prepojené mnohými spôsobmi tak, aby boli informácie z každej tabuľky prenesené do formulára.

V predchádzajúcom príklade musia byť polia v tabuľkách koordinované, aby uvádzali informácie o tej istej objednávke. Táto koordinácia sa dosiahne pomocou vzťahov tabuliek. Vzťah tabuliek funguje na základe priradenia údajov v poliach kľúčov, pričom často ide o pole s tým istým názvom v obidvoch tabuľkách. Vo väčšine prípadov predstavujú tieto priradené polia primárny kľúč v jednej tabuľke, ktorý poskytuje jedinečný identifikátor pre každý záznam, a cudzí kľúč v druhej tabuľke. Zamestnanci môžu byť napríklad priradení k objednávkam, za ktoré sú zodpovední, pomocou vytvorenia vzťahu tabuliek medzi poľami identifikácie zamestnancov v tabuľke Zamestnanci a tabuľke Objednávky.

Identifikácia zamestnanca použitá ako primárny kľúč v tabuľke Zamestnanci a cudzí kľúč v tabuľke Objednávky.

1. Identifikácia zamestnanca sa zobrazuje v oboch tabuľkách – ako primárny kľúč...

2. ... a ako cudzí kľúč.

Na začiatok stránky

Typy vzťahov tabuliek

V Accesse existujú tri typy vzťahov tabuliek.

  • Vzťah „one-to-many“

    Použiť môžeme napríklad databázu sledovania objednávok, ktorá obsahuje tabuľku Zákazníci a tabuľku Objednávky. Zákazník môže zadať ľubovoľný počet objednávok. Z toho vyplýva, že každý zákazník uvedený v tabuľke Zákazníci môže mať veľa objednávok uvedených v tabuľke Objednávky. Vzťah medzi tabuľkou Zákazníci a tabuľkou Objednávky je preto „one-to-many“.

    Ak chcete v návrhu databázy vyjadriť vzťah „one-to-many“, použite primárny kľúč na strane „one“ tohto vzťahu a pridajte ho v danom vzťahu ako ďalšie pole alebo polia do tabuľky na strane „many“. V tomto prípade napríklad pridáte nové pole  (pole Identifikácia z tabuľky Zákazníci) do tabuľky Objednávky a pomenujete ho Identifikácia zákazníka. V programe Access potom môžete použiť na vyhľadanie správneho zákazníka pre každú objednávku číslo v poli Identifikácia zákazníka v tabuľke Objednávky.

  • Vzťah „many-to-many“

    Pozrime sa teraz na vzťah medzi tabuľkou Produkty a tabuľkou Objednávky. Jedna objednávka môže obsahovať viac ako jeden produkt. Na druhej strane, jeden produkt sa môže objaviť v mnohých objednávkach. Preto pre každý záznam v tabuľke Objednávky môže existovať veľa záznamov v tabuľke Produkty. Okrem toho, pre každý záznam v tabuľke Produkty môže existovať veľa záznamov v tabuľke Objednávky. Tento vzťah sa nazýva „many-to-many“. Nezabúdajte, že ak chcete zistiť medzi tabuľkami existujúci vzťah „many-to many“, je dôležité vziať do úvahy obidve strany vzťahu.

    Ak chcete vyjadriť vzťah „many-to-many“, musíte vytvoriť tretiu tabuľku (často nazývaná spojovacia tabuľka), ktorá rozloží vzťah „many-to-many“ na dva vzťahy „one-to-many“. Do tretej tabuľky vložíte hlavný kľúč z obidvoch tabuliek. Výsledkom toho bude, že tretia tabuľka zaznamená každý výskyt alebo inštanciu tohto vzťahu. Tabuľky Objednávky a Produkty môžu mať napríklad vzťah „many-to-many“, ktorý je určený vytvorením dvoch vzťahov „one-to-many“ v tabuľke Podrobnosti objednávok. Jedna objednávka môže mať veľa produktov a každý produkt sa môže zobraziť na viacerých objednávkach.

  • Vzťah „one-to-one“

    Vo vzťahu „one-to-one“ môže mať každý záznam v prvej tabuľke len jeden zodpovedajúci záznam v druhej tabuľke a každý záznam v druhej tabuľke môže mať len jeden zodpovedajúci záznam v prvej tabuľke. Tento vzťah nie je bežný, pretože najčastejšie sú informácie spojené týmto spôsobom uložené v tej istej tabuľke. Vzťah „one-to-one“ môžete použiť na rozdelenie tabuľky s mnohými poľami s cieľom oddelenia časti tabuľky z bezpečnostných dôvodov alebo uloženia informácií, ktoré sa týkajú iba podmnožiny hlavnej tabuľky. Keď určíte takýto vzťah, obidve tabuľky musia obsahovať spoločné pole.

Na začiatok stránky

Dôvody na vytváranie vzťahov tabuliek

Vzťahy tabuliek môžete vytvoriť explicitne pomocou okna Vzťahy alebo presunutím poľa z tably Zoznam polí. Program Access používa vzťahy medzi tabuľkami na určenie spôsobu spájania tabuliek, keď ich je potrebné použiť v objekte databázy. Existuje niekoľko dôvodov na vytvorenie vzťahov medzi tabuľkami pred vytvorením ďalších objektov databázy, ako sú napríklad formuláre, dotazy a zostavy.

  • Vzťahy tabuliek sú podkladom pre návrhy dotazov

    Ak chcete pracovať so záznamami z viacerých tabuliek, často musíte vytvoriť dotaz, ktorý spája tieto tabuľky. Dotaz priraďuje hodnoty v poli hlavného kľúča prvej tabuľky poľu cudzieho kľúča v druhej tabuľke. Ak chcete napríklad prejsť na riadky zoznamu všetkých objednávok pre všetkých zákazníkov, vytvoríte dotaz, ktorý spojí tabuľku Zákazníci s tabuľkou Objednávky na základe identifikačného poľa zákazníka. V okne Vzťahy môžete manuálne určiť polia, ktoré sa majú spojiť. Ak však už máte určené vzťahy tabuliek, program Access poskytne predvolené spojenie na základe existujúceho vzťahu tabuliek. Okrem toho, ak použijete jedného zo sprievodcov dotazom, program Access použije informácie, ktoré získa zo vzťahov tabuliek, ktoré ste už určili, aby vás informoval o možnostiach a vopred vyplnil nastavenie vlastností príslušnými predvolenými hodnotami.

  • Vzťahy tabuliek sú podkladom pre návrhy formulárov a zostáv

    Keď navrhujete formulár alebo zostavu, program Access používa informácie získané zo vzťahov tabuliek, ktoré ste už určili, aby vás informoval o možnostiach a vopred vyplnil nastavenie vlastností príslušnými predvolenými hodnotami.

  • Vzťahy tabuliek sú základom zabezpečenia referenčnej integrity na zabránenie výskytu záznamov bez párov v databáze. Záznam bez páru je záznam, ktorý odkazuje na ďalší záznam, ktorý neexistuje (napríklad záznam objednávky, ktorý odkazuje na záznam zákazníka, ktorý neexistuje).

    Keď navrhujete databázu, rozdelíte informácie do tabuliek, z ktorých každá má hlavný kľúč. Potom pridáte cudzie kľúče do súvisiacich tabuliek, ktoré odkazujú na tieto hlavné kľúče. Tieto páry hlavných a cudzích kľúčov tvoria základ vzťahov tabuliek a dotazov pre viaceré tabuľky. Je dôležité, aby tieto odkazy hlavných a cudzích kľúčov zostali synchronizované. Referenčná integrita, ktorá je závislá od vzťahov v tabuľkách, pomáha zabezpečiť synchronizáciu odkazov.

Na začiatok stránky

Vysvetlenie referenčnej integrity

Keď navrhujete databázu, rozdelíte informácie v databáze do mnohých tematických tabuliek, čím sa minimalizujú nadbytočné údaje. Potom poskytnete programu Access prostriedky, pomocou ktorých má údaje spojiť, a to tak, že do súvisiacich tabuliek umiestnite spoločné polia. Ak chcete napríklad vyjadriť vzťah „one-to-many“, zoberiete hlavný kľúč z tabuľky „one“ a pridáte ho ako ďalšie pole do tabuľky „many“. Aby sa údaje opäť spojili, program Access vyberie hodnotu v tabuľke „many“ a vyhľadá zodpovedajúcu hodnotu v tabuľke „one“. Týmto spôsobom hodnoty v tabuľke „many“ odkazujú na zodpovedajúce hodnoty v tabuľke „one“.

Predpokladajme, že máte vzťah „one-to-many“ medzi tabuľkou Špeditéri a tabuľkou Objednávky a chcete odstrániť špeditéra. Ak špeditér, ktorého chcete odstrániť, má objednávky v tabuľke Objednávky, tieto objednávky sa stanú záznamami bez párov, keď odstránite záznam špeditéra. Objednávky budú stále obsahovať identifikáciu špeditéra, ale identifikácia už nebude viac platná, pretože záznam, na ktorý odkazuje, už neexistuje.

Cieľom referenčnej integrity je zabrániť výskytu záznamov bez párov a zachovať synchronizáciu odkazov, aby sa táto hypotetická situácia vôbec nevyskytla.

Referenčnú integritu zabezpečíte tak, že ju povolíte pre vzťahy medzi tabuľkami. Po nastavení presadzovania referenčnej integrity sa v programe Access zamietne každá operácia, ktorá by porušila referenčnú integritu pre tento vzťah medzi tabuľkami. To znamená, že v programe Access sa zamietnu aktualizácie, ktoré menia cieľ odkazu, ako aj odstránenia položiek, ktoré odstraňujú cieľ odkazu. Môže sa však stať, že budete mať úplne opodstatnenú požiadavku na zmenu hlavného kľúča pre špeditéra, ktorý má objednávky v tabuľke Objednávky. V takýchto prípadoch naozaj potrebujete, aby sa v programe Access automaticky aktualizovali všetky ovplyvnené riadky ako súčasť jednej operácie. Týmto spôsobom sa v programe Access zabezpečí úplné dokončenie aktualizácie tak, aby databáza nezostala v nekonzistentnom stave, v ktorom nie sú aktualizované všetky zodpovedajúce riadky. Z tohto dôvodu Access podporuje možnosť Kaskádová aktualizácia súvisiacich polí . Keď presadzujete referenčnú integritu a vyberiete možnosť Kaskádová aktualizácia súvisiacich polí a potom aktualizujete hlavný kľúč, v programe Access sa budú automaticky aktualizovať všetky polia, ktoré odkazujú na hlavný kľúč.

Môže sa tiež stať, že budete mať opodstatnenú požiadavku na odstránenie riadka a všetkých súvisiacich záznamov , ako napríklad záznam o špeditérovi a všetky súvisiace objednávky pre tohto špeditéra. Z tohto dôvodu je v programe Access podporovaná možnosť Kaskádové odstránenie súvisiacich záznamov. Keď presadzujete referenčnú integritu a vyberiete možnosť Kaskádové odstránenie súvisiacich záznamov a potom odstránite záznam na strane hlavného kľúča tohto vzťahu, v programe Access sa automaticky odstránia všetky záznamy, ktoré odkazujú na hlavný kľúč.

Na začiatok stránky

Zobrazenie vzťahov tabuliek

Ak chcete zobraziť vzťahy tabuliek, kliknite na karte Databázové nástroje na položku Vzťahy. Otvorí sa okno Vzťahy a zobrazia sa existujúce vzťahy. Ak ešte neboli určené žiadne vzťahy tabuliek a okno Vzťahy otvárate prvýkrát, program Access zobrazí výzvu na pridanie tabuľky alebo dotazu do okna.

Otvorenie okna Vzťahy

  1. Kliknite na položku Súbor, potom na položku Otvoriť a potom vyberte a otvorte databázu.

  2. Na karteDatabázové nástroje v skupine Vzťahy kliknite na položku Vzťahy.

  3. Na karte Návrh vzťahov kliknite v skupine Vzťahy na položku Všetky vzťahy.Zobrazia sa všetky definované vzťahy v databáze. Nezabúdajte, že skryté tabuľky (tabuľky, ktoré majú začiarknuté políčko Skryté v okne Vlastnosti) a ich vzťahy sa zobrazia až po začiarknutí políčka Zobraziť skryté objekty v dialógovom okne Možnosti navigácie.

Čiara nakreslená medzi tabuľkami v okne Vzťahy predstavuje vzťah tabuliek. Vzťah, ktorý nie je v súlade s referenčnou integritou, sa zobrazí ako tenká čiara medzi spoločnými poľami, ktoré sú podkladom pre vzťah. Keď vyberiete vzťah kliknutím na jeho čiaru, čiara zhrubne, čo signalizuje, že je vybratá. Ak presadzujete referenčnú integritu pre tento vzťah, čiara sa zobrazí ako hrubšia na obidvoch koncoch. Okrem toho sa nad hrubou časťou čiary na jednej strane vzťahu zobrazí číslica 1 a nad hrubou časťou čiary na druhej strane sa zobrazí symbol nekonečna ().

Keď je okno Vzťahy aktívne, na páse s nástrojmi môžete vybrať nasledujúce príkazy:

Na karte Návrh vzťahov v skupine Nástroje :

  • Upraviť vzťahy Otvorenie dialógového okna Úprava vzťahov. Keď vyberiete čiaru vzťahu, môžete kliknúť na položku Upraviť vzťahy na zmenu vzťahu tabuliek. Môžete tiež dvakrát kliknúť na čiaru vzťahu.

  • Vymazať rozloženie Odstráni všetky tabuľky a vzťahy zo zobrazenia v okne Vzťahy. Upozorňujeme, že tento príkaz len skryje tabuľky a vzťahy – neodstráni ich.

  • Zostava vzťahov Vytvorí zostavu, ktorá zobrazuje tabuľky a vzťahy vo vašej databáze. V zostave sa zobrazujú len tabuľky a vzťahy, ktoré nie sú skryté v okne Vzťahy.

Na karte Návrh vzťahov v skupine Vzťahy :

  • Pridať tabuľky    Umožňuje výber tabuliek, ktoré sa majú zobraziť v okne Vzťahy.

  • Skryť tabuľku Skryje vybratú tabuľku v okne Vzťahy.

  • Priame vzťahy Zobrazí všetky vzťahy a súvisiace tabuľky pre vybratú tabuľku v okne Vzťahy, ak nie sú už zobrazené.

  • Všetky vzťahy Zobrazí všetky vzťahy a súvisiace tabuľky vo vašej databáze v okne Vzťahy. Upozorňujeme, že skryté tabuľky (tabuľky, ktoré majú začiarknuté políčko Skryté v okne Vlastnosti) a ich vzťahy sa zobrazia až po označení možnosti Zobraziť skryté objekty v dialógovom okne Možnosti navigácie.

  • Zavrieť Zatvorenie okna Vzťahy Ak ste urobili akékoľvek zmeny v rozložení okna Vzťahy, zobrazí sa výzva, či chcete uložiť tieto zmeny.

Na začiatok stránky

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.