Příručka k relacím mezi tabulkami
Applies ToAccess pro Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Jedním z cílů kvalitního návrhu databáze je odstranit redundanci dat (duplicitní data). Dosáhnete toho tak, že data rozdělíte do mnoha tabulek s různými předměty, aby byl každý fakt reprezentován pouze jednou. Potom je nutné aplikaci Access poskytnout způsob, jak rozdělené informace opět spojit, a to umístěním společných polí do souvisejících tabulek. Chcete-li však tento krok provést správně, je nutné pochopit vztahy (relace) mezi tabulkami a tyto relace potom určit v databázi.

V tomto článku

Úvod

Po vytvoření tabulek pro jednotlivé předměty databáze je třeba aplikaci Access poskytnout způsob k opětovnému seskupení těchto informací, když je to potřeba. To lze provést vložením společných polí do souvisejících tabulek a definováním vzájemných relací mezi tabulkami. Pak můžete vytvářet dotazy, formuláře a sestavy zobrazující informace z několika tabulek současně. Níže uvedený formulář například obsahuje informace získané z několika tabulek:

Formulář Objednávky zobrazující související informace z pěti tabulek najednou

1. Informace v tomto formuláři pocházejí z tabulky Zákazníci...

2. ...z tabulky Objednávky...

3. ...z tabulky Výrobky...

4. ...a z tabulky Rozpis objednávek.

Jméno zákazníka v poli Pro fakturaci je načteno z tabulky Zákazníci, kód a datum objednávky z tabulky Objednávky, název výrobku z tabulky Výrobky a jednotková cena a množství z tabulky Rozpis objednávek. Tyto tabulky jsou různými způsoby vzájemně propojeny, aby z nich bylo možné načítat informace do formuláře.

V předchozím příkladu musí být pole v jednotlivých tabulkách koordinována, aby zobrazovala informace o téže objednávce. Této koordinace se dosahuje pomocí relací mezi tabulkami. Relace mezi tabulkami pracují na základě porovnání dat v klíčových polích (často v polích se stejným názvem v obou tabulkách). Ve většině případů se jedná o pole primárního klíče jedné tabulky, které poskytuje jedinečný identifikátor každého záznamu, a pole cizího klíče druhé tabulky. Tak mohou být například vytvořením relace mezi poli Kód v tabulkách Zaměstnanci a Objednávky spojeni zaměstnanci s objednávkami, za které odpovídají.

ID zaměstnance použité jako primární klíč v tabulce Zaměstnanci a jako cizí klíč v tabulce Objednávky

1. Pole Kód je obsaženo v obou tabulkách – jako primární klíč...

2. ...a jako cizí klíč.

Začátek stránky

Typy relací mezi tabulkami

V Accessu existují tři typy relací mezi tabulkami.

  • Relace typu 1:N

    Vezměme si jako příklad databázi pro sledování objednávek, jež obsahuje tabulky Zákazníci a Objednávky. Zákazník může vytvořit libovolný počet objednávek. To znamená, že pro každého zákazníka uvedeného v tabulce Zákazníci může existovat celá řada objednávek zaznamenaných v tabulce Objednávky. Typ relace mezi tabulkami Zákazníci a Objednávky je 1:N.

    Chcete-li znázornit relaci 1:N v návrhu databáze, vezměte primární klíč na straně 1 relace a přidejte jej jako další pole do tabulky na straně N relace. V tomto případě například přidáte nové pole – pole Kód z tabulky Zákazníci – do tabulky Objednávky a nazvete je Kód zákazníka. Aplikace Access může potom pomocí kódu zákazníka v tabulce Objednávky vyhledat u každé objednávky správného zákazníka.

  • Relace typu M:N

    Nyní se podívejme na relaci mezi tabulkami Výrobky a Objednávky. Jedna objednávka může obsahovat více výrobků. Na druhou stranu se jeden výrobek může objevit v mnoha objednávkách. Z tohoto důvodu může pro každý záznam v tabulce Objednávky existovat mnoho záznamů v tabulce Výrobky. Navíc pro každý záznam v tabulce Výrobky může existovat celá řada záznamů v tabulce Objednávky. Tato relace se nazývá M:N. Všimněte si, že ke zjištění existující relace typu M:N mezi tabulkami je důležité vzít v úvahu obě strany relace.

    Chcete-li vyjádřit relaci typu M:N, je nutné vytvořit třetí tabulku, která se často nazývá spojená tabulka, jež rozdělí relaci typu M:N na dvě relace typu 1:N. Primární klíč z těchto dvou tabulek vložíte do třetí tabulky. Výsledkem je, že třetí tabulka zaznamená každý výskyt nebo instanci relace. V relaci M:N jsou například tabulky Objednávky a Výrobky a tato relace je definována vytvořením dvou relací 1:N s tabulkou Rozpis objednávek. V každé objednávce může být uvedeno více výrobků a každý výrobek může být uveden ve více objednávkách.

  • Relace typu 1:1

    V relaci 1:1 odpovídá jednomu záznamu v první tabulce maximálně jeden záznam v druhé tabulce a naopak jednomu záznamu v druhé tabulce maximálně jeden záznam v první tabulce. Tato relace není obvyklá, protože většina takto souvisejících informací by byla obvykle uložena ve stejné tabulce. Relaci 1:1 můžete použít k rozdělení rozsáhlé tabulky, k oddělení části tabulky z důvodů zabezpečení nebo k uložení informací, které mají vztah pouze k části hlavní tabulky. Při určování relace musí obě tabulky sdílet společné pole.

Začátek stránky

Proč vytvářet relace mezi tabulkami?

Relace mezi tabulkami můžete explicitně vytvářet pomocí okna Relace nebo přetažením pole z podokna Seznam polí. Aplikace Access používá relace mezi tabulkami k určení způsobu spojení tabulek v případě, že je potřebujete použít v databázovém objektu. Existuje několik důvodů, proč byste relace mezi tabulkami měli vytvořit před vytvořením ostatních objektů databáze, například formulářů, dotazů a sestav.

  • Relace mezi tabulkami informují návrhy dotazů.

    Chcete-li pracovat se záznamy z více než jedné tabulky, je často nutné vytvořit dotaz, který tabulky spojí. Dotaz funguje tak, že porovnává hodnoty v poli primárního klíče první tabulky s polem cizího klíče ve druhé tabulce. Pokud například chcete vrátit řádky, jež uvádějí všechny objednávky každého zákazníka, vytvoříte dotaz, který spojí tabulku Zákazníci s tabulkou Objednávky na základě pole Kód zákazníka. V okně Relace můžete ručně určit pole, jež mají být spojena. Pokud však už jsou definovány relace mezi tabulkami, aplikace Access doplní výchozí spojení na základě existující relace mezi tabulkami. Pokud navíc použijete některého z průvodců dotazem, aplikace Access vám na základě informací získaných z relací mezi tabulkami, které jste již nadefinovali, nabídne informované možnosti volby a předem vyplní nastavení vlastností příslušnými výchozími hodnotami.

  • Relace mezi tabulkami informují návrhy formulářů a sestav.

    Aplikace Access vám při navrhování formuláře nebo sestavy na základě informací získaných z relací mezi tabulkami, které jste už nadefinovali, nabídne informované možnosti volby a předem vyplní nastavení vlastností příslušnými výchozími hodnotami.

  • Relace mezi tabulkami jsou základnou, na které můžete vynucovat referenční integritu a zabránit tak vytváření osiřelých záznamů v databázi. Osiřelým záznamem se rozumí záznam s referencí na neexistující záznam – například záznam objednávky, který odkazuje na neexistující záznam zákazníka.

    Při navrhování databáze rozdělíte informace do tabulek, z nichž každá má primární klíč. Potom do souvisejících tabulek přidáte cizí klíče, které na primární klíče odkazují. Tyto páry cizích a primárních klíčů jsou základem relací mezi tabulkami a dotazů napříč několika tabulkami. Je důležité, aby byly tyto reference cizího a primárního klíče udržovány synchronní. Referenční integrita, která je závislá na relacích mezi tabulkami, pomáhá zajistit, aby byly reference synchronní.

Začátek stránky

Význam referenční integrity

Když navrhujete databázi, rozdělíte informace o databázi do mnoha tabulek s různými předměty, abyste minimalizovali redundanci dat. Pak dáte aplikaci Access možnost dát data zase dohromady tak, že do tabulek v relaci vložíte společná pole. Tak například vyjádření relace typu 1:N: vezmete primární klíč z tabulky „1“ a přidáte ho jako další pole do tabulky „N“. Aby Access data znovu spojil, vezme hodnotu v tabulce „N“ a najde odpovídající hodnotu v tabulce „1“. Tak hodnoty v tabulce „N“ odpovídají souvisejícím hodnotám v tabulce „1“.

Řekněme, že mezi tabulkami Přepravci a Objednávky máte relaci typu 1:N a chcete odstranit jednoho přepravce. Pokud pro tohoto přepravce existují objednávky v tabulce Objednávky, stanou se z těchto objednávek po odstranění záznamu přepravce osiřelé záznamy. Budou nadále obsahovat kód přepravce, ale ten nebude platný, protože záznam, na který odkazuje, již nebude existovat.

Účelem referenční integrity je zabránit vzniku osiřelých záznamů a udržovat reference synchronní, aby k této hypotetické situaci nikdy nedošlo.

Referenční integrita se vynucuje tak, že ji povolíte pro relaci mezi tabulkami. Po nastavení vynucování aplikace Access odmítne jakoukoli operaci, která způsobuje porušení referenční integrity pro danou relaci mezi tabulkami. To znamená, že aplikace Access odmítne aktualizace, které mění cíl reference, i odstranění, která odebírají cíl reference. Je možné, že naprosto opodstatněně potřebujete změnit primární klíč přepravce, který má objednávky v tabulce Objednávky. V takových případech je třeba, aby aplikace Access jedinou operací automaticky aktualizovala všechny ovlivněné řádky. Tímto způsobem aplikace Access zajistí, aby byla aktualizace zcela dokončena a databáze nezůstala v nekonzistentním stavu s některými řádky aktualizovanými a jinými ne. Z tohoto důvodu Access podporuje možnost Kaskádová aktualizace souvisejících polí . Pokud vynutíte referenční integritu a zvolíte možnost Kaskádová aktualizace souvisejících polí a následně aktualizujete primární klíč, aplikace Access automaticky aktualizuje všechna pole, která na tento primární klíč odkazují.

Také je možné, že budete opodstatněně potřebovat odstranit řádek a všechny související záznamy – například záznam přepravce a všechny související objednávky tohoto přepravce. Z tohoto důvodu aplikace Access podporuje možnost Kaskádové odstranění souvisejících polí. Pokud aktivujete vynucování referenční integrity, zaškrtnete políčko Kaskádové odstranění souvisejících polí a odstraníte záznam na straně primárního klíče v relaci, aplikace Access automaticky odstraní všechny záznamy, které na daný primární klíč odkazují.

Začátek stránky

Zobrazení relací mezi tabulkami

Chcete-li zobrazit relace mezi tabulkami, klikněte na tlačítko Relace na kartě Databázové nástroje. Otevře se okno Relace se zobrazením všech existujících relací. Pokud nebyly definovány žádné relace mezi tabulkami a otevíráte okno Relace poprvé, aplikace Access vás vyzve k přidání tabulky nebo dotazu do tohoto okna.

Otevření okna Relace

  1. Klikněte na Soubor, klikněte na Otevřít a pak vyberte a otevřete databázi.

  2. Na kartě Databázové nástroje klikněte ve skupině Relace na Relace.

  3. Na kartě Návrh relací klikněte ve skupině Relace na Položku Všechny relace.Zobrazí se všechny definované relace v databázi. Skryté tabulky (tabulky, u kterých je zaškrtnuté políčko Skryté v dialogovém okně Vlastnosti tabulky) a jejich relace se nezobrazí, pokud nebude zaškrtnuté políčko Zobrazit skryté objekty v dialogovém okně Možnosti navigace.

Relaci mezi tabulkami vyjadřuje čára relace mezi tabulkami v okně Relace. Relace, ve které není vynucována referenční integrita, je zobrazena jako tenká čára mezi obvyklými poli podporujícími relaci. Vyberete-li relaci kliknutím na její čáru, zvětší se tloušťka čáry. Pokud pro tuto relaci vynucujete referenční integritu, bude čára na obou koncích silnější. Navíc se nad silnou částí čáry na jedné straně relace zobrazí číslo 1 a nad silnou částí čáry na druhé straně se zobrazí symbol nekonečna (?).

Když je okno Relace aktivní, můžete na pásu karet vybrat následující příkazy:

Na kartě Návrh relací ve skupině Nástroje :

  • Upravit relace: Otevře dialogové okno Upravit relace. Po výběru čáry relace můžete kliknutím na tlačítko Upravit relace změnit relaci tabulky. Na čáru relace můžete také poklikat.

  • Vymazat rozložení: Odebere všechny tabulky a relace ze zobrazení v okně Relace. Tento příkaz tabulky a relace pouze skryje – neodstraní je.

  • Sestava relací: Vytvoří sestavu zobrazující tabulky a relace v databázi. V sestavě budou zobrazeny pouze ty tabulky a relace, které nejsou v okně Relace skryty.

Na kartě Návrh relací ve skupině Relace :

  • Přidat tabulky    Umožňuje výběr tabulek, které se mají zobrazit v okně Relace.

  • Skrýt tabulku: Skryje vybranou tabulku v okně Relace.

  • Přímé relace: Zobrazí všechny relace a související tabulky pro vybranou tabulku v okně Relace, pokud již nejsou zobrazeny.

  • Všechny relace Zobrazí v okně Relace všechny relace a související tabulky v databázi. Skryté tabulky (tabulky, u nichž je zaškrtnuto políčko Skryté v dialogovém okně Vlastnosti tabulky) a jejich relace se nezobrazí, dokud nebude zaškrtnuto políčko Zobrazit skryté objekty v dialogovém okně Možnosti navigace.

  • Zavřít: Zavře okno Relace. Pokud jste provedli jakékoli změny v rozložení okna Relace, budete dotázáni, zda chcete tyto změny uložit.

Začátek stránky

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.