Příručka k relacím mezi tabulkami
Platí pro
Access 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 Access poskytnete způsob, jak rozdělené informace znovu spojit – uděláte to tak, že do tabulek, které spolu souvisejí, umístíte společná pole. 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

Jakmile vytvoříte tabulku pro každý předmět v databázi, musíte Access poskytnout způsob, jak v případě potřeby znovu spojit informace. 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 Access existují tři typy relací mezi tabulkami.

  • Relace typu 1:N

    Jako příklad použijeme databázi pro sledování objednávek, která obsahuje tabulku Customers (Zákazníci) a Orders (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. Access pak můžete pomocí id zákazníka v tabulce Objednávky vyhledat správného zákazníka pro každou objednávku.

  • Relace typu M:N

    Teď se podíváme na relaci mezi tabulkou Products (Produkty) a tabulkou Orders (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í. Access pomocí relací mezi tabulkami rozhoduje o tom, jak tabulky spojit, když 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 už ale máte mezi tabulkami definovanou relaci, Access poskytne výchozí spojení na základě existující relace tabulky. Pokud navíc použijete některého z průvodců dotazem, Access použije informace, které shromažďuje z relací mezi tabulkami, které jste už definovali, k tomu, aby vám předložil informované volby a předem vyplní nastavení vlastností odpovídajícími výchozími hodnotami.

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

    Při návrhu formuláře nebo sestavy používá Access informace shromážděné z relací mezi tabulkami, které jste už definovali, k tomu, aby vám předložily informované volby a předem vyplní nastavení vlastností odpovídající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 tyto odkazy cizího klíče a primárního klíče zůstaly synchronizované. 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. Potom Access poskytnete způsob, jak data znovu spojit tak, že umístíte společná pole do souvisejících tabulek. 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“. Pokud chcete data znovu spojit, Access vezme hodnotu v tabulce "N" a vyhledá odpovídající hodnotu v tabulce "jedna". 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 vynucení Access odmítne všechny operace, které porušují referenční integritu dané relace tabulky. To znamená, že Access odmítne aktualizace, které mění cíl odkazu, i odstranění, která odeberou cíl odkazu. Je možné, že máte naprosto platnou potřebu změnit primární klíč pro dopravce, který má objednávky v tabulce Objednávky. V takových případech skutečně potřebujete, aby Access automaticky aktualizovat všechny ovlivněné řádky v rámci jedné operace. Tímto způsobem Access zajistí, že se aktualizace dokončí v plném rozsahu, aby vaše databáze nezůstala v nekonzistentním stavu, přičemž některé řádky byly aktualizovány a některé ne. Z tohoto důvodu Access podporuje možnost Kaskádová aktualizace souvisejících polí . Když vynutíte referenční integritu a zvolíte možnost Kaskádová aktualizace souvisejících polí a pak aktualizujete primární klíč, Access automaticky aktualizuje všechna pole, která odkazují na primární klíč.

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 Access podporuje možnost Kaskádové odstranění souvisejících záznamů . Když vynutíte referenční integritu a zvolíte možnost Kaskádové odstranění souvisejících záznamů a pak odstraníte záznam na straně primárního klíče relace, Access automaticky odstraní všechny záznamy, které odkazují na primární klíč.

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 okno Relace otevíráte poprvé, Access vás vyzve k přidání tabulky nebo dotazu do 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.