Příručka k relacím mezi tabulkami

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 prostředek, jak rozdělené informace opět spojit, a to umístěním společných polí do souvisejících tabulek. Nicméně abyste tento krok provedli správně, je nutné pochopit vztahy (relace) mezi tabulkami a tyto relace potom určit v databázi.

Další informace získáte v článku Základy návrhu databáze.

Tento článek se nezabývá relacemi ve webové databázi. Webové databáze okno Relace nepodporuje. K vytvoření relací ve webové databázi se používají vyhledávací pole. Další informace naleznete v článku Vytvoření databáze pro sdílení na webu.

V tomto článku

Úvod

Typy relací mezi tabulkami

Proč vytvářet relace mezi tabulkami?

Význam referenční integrity

Zobrazení relací mezi tabulkami

Otevření okna Relace

Vytvoření relace mezi tabulkami

Vytvoření relace tabulky pomocí okna Relace

Vytvoření relace tabulky pomocí podokna Seznam polí

Otevření tabulky v zobrazení Datový list

Otevření podokna Seznam polí

Přidání pole a vytvoření relace v podokně Seznam polí

Odstranění relace mezi tabulkami

Změna relace mezi tabulkami

Proveďte požadované změny v dialogovém okně Upravit relace.

Nastavení typu spojení

Nastavení typu spojení

Změny v dialogovém okně Vlastnosti spojení

Vynucení referenční integrity

Zapnutí nebo vypnutí referenční integrity

Nastavení kaskádových možností

Vypnutí nebo zapnutí kaskádových aktualizací či odstranění

Úvod

Po vytvoření tabulky pro jednotlivé předměty databáze je třeba aplikaci Access poskytnout prostředky k opětovnému seskupení těchto informací. To lze provést vložením společných polí do příbuzných tabulek a definováním vzájemných relací tabulek. Pak můžete vytvářet dotazy, formuláře a sestavy zobrazující informace z několika tabulek současně. Například znázorněný formulář 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í.

Číslo 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

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 proto 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 N:N

    Vezměme si jako příklad 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. Tento typ relace se nazývá N:N, protože pro každý výrobek může existovat mnoho objednávek a pro každou objednávku mnoho výrobků. Všimněte si, že ke zjištění existující relace typu N:N mezi tabulkami je důležité vzít v úvahu obě strany relace.

    Chcete-li vyjádřit relaci typu N:N, je nutné vytvořit třetí tabulku, která se často nazývá spojená tabulka, jež rozdělí relaci typu N: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 N: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. Tento typ 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 ke spojování tabulek, 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, často je 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. Například pokud 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 již 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 jeden 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 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 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. Proto je důležité, aby byly tyto reference cizího a primárního klíče udržovány synchronní. Referenční integrita pomáhá zajistit, aby byly reference synchronní, a závisí na relacích mezi tabulkami.

Začátek stránky

Význam referenční integrity

Při navrhování databáze minimalizujete redundanci dat rozdělením informací do mnoha tabulek s různými předměty. Potom je nutné aplikaci Access poskytnout prostředek, jak rozdělená data opět spojit, a to umístěním společných polí do souvisejících tabulek. Například relaci typu 1:N vyjádříte tak, že primární klíč z tabulky „1“ přidáte jako další pole do tabulky „N“. Aplikace Access data opět spojí tak, že vezme hodnotu z tabulky „N“ a vyhledá odpovídající hodnotu v tabulce „1“. Tímto způsobem hodnoty v tabulce „N“ odkazují na odpovídající hodnoty 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.

Vynucování referenční integrity zajistíte tak, že ji pro relaci mezi tabulkami povolíte (podrobné pokyny najdete v části Vynucování referenční integrity). Po vynucení aplikace Access odmítne jakoukoli operaci, která by způsobila porušení referenční integrity pro danou relaci tabulky. To znamená, že aplikace Access odmítne aktualizace, které mění cíl odkazu, i odstranění, která cíl odkazu odebírají. Je však 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 zaručí, 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 aplikace 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 u záznamu Přepravce a všech souvisejících objednávek tohoto přepravce. Z tohoto důvodu aplikace Access podporuje možnost Kaskádové odstranění souvisejících záznamů. Pokud aktivujete vynucování referenční integrity, zaškrtnete políčko Kaskádové odstranění souvisejících záznamů a odstraníte záznam s primárním klíčem, aplikace Access automaticky odstraní všechny záznamy, které na 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 zatím 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. Na kartě Soubor klikněte na možnost Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

  4. Pokud databáze obsahuje relace, zobrazí se okno Relace. Pokud databáze neobsahuje žádné relace a otevíráte okno Relace poprvé, otevře se dialogové okno Zobrazit tabulku. Zavřete dialogové okno kliknutím na tlačítko Zavřít.

  5. Na kartě Návrh ve skupině Zobrazit či skrýt klikněte na položku Všechny relace.

    Zobrazí se všechny definované relace 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í, pokud nebude zaškrtnuto 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 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é dvakrát kliknout.

  • 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 ve skupině Relace:

  • Zobrazit tabulku:    Otevře dialogové okno Zobrazit tabulku, ve kterém můžete vybrat tabulky a dotazy pro zobrazení 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

Vytvoření relace mezi tabulkami

Relaci mezi tabulkami můžete vytvořit v okně Relace nebo přetažením pole či datového listu z podokna Seznam polí. Při vytvoření relace mezi tabulkami nemusí mít společná pole stejné názvy, i když se často stává, že je mají. Tato pole však musí mít stejný datový typ. Pokud je pole primárního klíče polem Automatické číslo, může být pole cizího klíče také číselným polem v případě, že je vlastnost .Velikostpole v obou polích stejná. Můžete například porovnat pole Automatické číslo a Číslo v případě, že je vlastnost .Velikostpole obou polí Dlouhé celé číslo. Když jsou obě společná pole číselnými poli, musí mít stejné nastavení vlastnosti .Velikost pole.

Vytvoření relace tabulky pomocí okna Relace

  1. Na kartě Soubor klikněte na možnost Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

  4. Pokud jste dosud nedefinovali žádnou relaci, automaticky se zobrazí dialogové okno Zobrazit tabulku. Jestliže se toto okno nezobrazí, klikněte na kartě Návrh ve skupině Relace na tlačítko Zobrazit tabulku.

Dialogové okno Zobrazit tabulku zobrazuje všechny tabulky a dotazy v databázi. Chcete-li zobrazit pouze tabulky, klikněte na kartu Tabulky. Chcete-li zobrazit pouze dotazy, klikněte na kartu Dotazy. Chcete-li zobrazit tabulky i dotazy, klikněte na kartu Oboje.

  1. Vyberte jednu nebo více tabulek či dotazů a klikněte na tlačítko Přidat. Po přidání tabulek a dotazů do okna Relace klikněte na tlačítko Zavřít.

  2. Přetáhněte pole (zpravidla primární klíč) z jedné tabulky do společného pole (cizí klíč) v druhé tabulce. Chcete-li přetáhnout více polí zároveň, stiskněte a podržte klávesu CTRL a postupně klikněte na všechna požadovaná pole. Poté je přetáhněte.

Zobrazí se dialogové okno Upravit relace.

  1. Ověřte, zda jsou zobrazenými názvy polí společná pole relace. Pokud není název pole správný, klikněte na něj a ze seznamu vyberte nové pole.

Chcete-li vynutit referenční integritu pro tuto relaci, zaškrtněte políčko Zajistit referenční integritu. Další informace o referenční integritě najdete v částech Význam referenční integrity a Vynucení referenční integrity

  1. Klikněte na tlačítko Vytvořit.

    Mezi dvěma tabulkami je zakreslena čára relace. Pokud jste zaškrtnuli políčko Zajistit referenční integritu, bude čára na obou koncích silnější. Navíc, pokud zaškrtnete pouze políčko Zajistit referenční integritu, zobrazí se nad silnější částí na jedné straně čáry relace hodnota 1 a nad silnější částí na druhé straně znak nekonečna (?).

    Poznámky : 

    • Vytvoření relace 1:1:    Obě společná pole (zpravidla pole primárního a cizího klíče) musí mít jedinečný index. To znamená, že by vlastnost Indexováno těchto polí měla být nastavena na hodnotu Ano (bez duplicity). Mají-li obě pole jedinečný index, aplikace Access vytvoří relaci 1:1.

    • Vytvoření relace 1:N:    Pole na jedné straně (zpravidla primární klíč) relace musí mít jedinečný index. To znamená, že by vlastnost Indexováno pro toto pole měla být nastavena na hodnotu Ano (bez duplicity). Pole na straně N by nemělo mít jedinečný index. Může mít index, ale musí umožňovat duplicity. To znamená, že vlastnost Indexováno tohoto pole by měla být nastavena na hodnotu Ne nebo Ano (duplicita povolena). Jakmile má jedno pole jedinečný index a druhé nikoli, aplikace Access vytvoří relaci 1:N.

Vytvoření relace tabulky pomocí podokna Seznam polí

Do stávající tabulky, která je otevřená v zobrazení Datový list, můžete přidat pole přetažením z podokna Seznam polí. Podokno Seznam polí zobrazuje pole, která jsou k dispozici v relačních tabulkách spolu s poli, která jsou k dispozici v jiných tabulkách. Přetáhnete-li pole z jiné tabulky, která nemá s vaší tabulkou vytvořenou relaci, a pak dokončíte Průvodce vyhledáváním, vytvoří se automaticky nová relace 1:N mezi tabulkou v podokně Seznam polí a tabulkou, do níž jste pole přetáhli. Tato relace vytvořená v aplikaci Access nevynucuje ve výchozím nastavení referenční integritu. Chcete-li referenční integritu vynutit, je třeba relaci upravit. Další informace uvádí část Změna relace mezi tabulkami.

Otevření tabulky v zobrazení Datový list

  1. Na kartě Soubor klikněte na možnost Otevřít.

  2. V dialogovém okně Otevřít vyberte a otevřete databázi.

  3. V navigačním podokně klikněte pravým tlačítkem myši na tabulku, do které chcete přidat pole a pro kterou chcete vytvořit relaci, a klikněte na tlačítko Otevřít.

Otevření podokna Seznam polí

  • Stiskněte kombinaci kláves ALT+F8.

    Zobrazí se podokno Seznam polí.

V podokně úloh Seznam polí jsou zobrazeny všechny další tabulky databáze seskupené do kategorií. Pracujete-li s tabulkou v zobrazení Datový list, aplikace Access zobrazí pole v podokně úloh Seznam polí v některé ze dvou kategorií: Pole dostupná v souvisejících tabulkách a Pole dostupná v jiných tabulkách. První kategorie obsahuje seznam všech tabulek, které jsou v relaci s tabulkou, se kterou aktuálně pracujete. Druhá kategorie obsahuje seznam všech tabulek, které nejsou v relaci s tabulkou, se kterou aktuálně pracujete.

Kliknete-li v podokně úloh Seznam polí na znaménko plus (+) vedle názvu tabulky, zobrazí se seznam všech polí dostupných v této tabulce. Chcete-li pole připojit k tabulce, přetáhněte požadované pole z podokna úloh Seznam polí do tabulky v zobrazení Datový list.

Přidání pole a vytvoření relace v podokně Seznam polí

  1. V podokně Seznam polí klikněte v části Pole dostupná v jiných tabulkách na symbol plus (+) vedle názvu tabulky. Tím zobrazíte seznam polí v dané tabulce.

  2. Přetáhněte požadované pole z podokna Seznam polí do tabulky otevřené v zobrazení Datový list.

  3. Jakmile se objeví čára označující místo pro vložení, uvolněte tlačítko myši, a vložte tak pole na příslušnou pozici.

    Spustí se Průvodce vyhledáváním.

  4. Postupujte podle pokynů Průvodce vyhledáváním.

    Pole se zobrazí v tabulce v zobrazení Datový list.

Přetáhnete-li pole z jiné tabulky, která nemá s vaší tabulkou vytvořenou relaci, a pak dokončíte Průvodce vyhledáváním, vytvoří se automaticky nová relace 1:N mezi tabulkou v podokně Seznam polí a tabulkou, do níž jste pole přetáhli. Tato relace vytvořená v aplikaci Access nevynucuje ve výchozím nastavení referenční integritu. Chcete-li referenční integritu vynutit, je třeba relaci upravit. Další informace uvádí část Změna relace mezi tabulkami.

Začátek stránky

Odstranění relace mezi tabulkami

Chcete-li odebrat relaci z tabulky, je třeba odstranit čáru relace v okně Relace. Opatrně umístěte ukazatel myši tak, aby ukazoval na čáru relace, a pak čáru kliknutím vyberte. Čára relace se při výběru zobrazuje silněji. Nechte čáru relace vybranou a stiskněte klávesu DELETE. Při odebrání relace odebíráte také podporu referenční integrity dané relace, je-li povolena. Aplikace Access v důsledku toho již nebude automaticky bránit vytváření osiřelých záznamů na straně N relace.

  1. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

Zobrazí se okno Relace. Pokud jste dosud nedefinovali žádné relace a otevíráte okno Relace poprvé, otevře se dialogové okno Zobrazit tabulku. Pokud se otevře, klikněte na tlačítko Zavřít.

  • Na kartě Návrh ve skupině Zobrazit či skrýt klikněte na položku Všechny relace.

Zobrazí se všechny tabulky s relacemi a znázorněnými čarami relace.

  1. Klikněte na čáru relace, kterou chcete odstranit. Čára relace se při výběru zobrazuje silněji.

  2. Stiskněte klávesu DELETE.

    – nebo –

Klikněte na relaci pravým tlačítkem myši a poté klikněte na příkaz Odstranit.

  1. Aplikace Access může zobrazit zprávu Opravdu chcete trvale odstranit vybranou relaci z databáze. Pokud se zobrazí tato zpráva s potvrzením, klikněte na tlačítko Ano.

Poznámka : Pokud některou z tabulek použitých v relaci tabulky využívá například jiná osoba nebo proces nebo se používá v otevřeném databázovém objektu (například formuláři), nebudete tuto relaci moci odstranit. Před odebráním relace je třeba nejprve zavřít všechny otevřené objekty, které tyto tabulky využívají.

Začátek stránky

Změna relace mezi tabulkami

Relaci tabulky můžete změnit výběrem tabulky v okně Relace a její následnou úpravou. Opatrně umístěte ukazatel myši tak, aby ukazoval na čáru relace, a pak čáru kliknutím vyberte. Čára relace se při výběru zobrazuje silněji. Dvakrát klikněte na vybranou čáru relace nebo klikněte na tlačítko Upravit relace ve skupině Nástroje na kartě Návrh. Zobrazí se dialogové okno Upravit relace.

Proveďte požadované změny v dialogovém okně Upravit relace.

  1. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

Zobrazí se okno Relace. Pokud jste dosud nedefinovali žádné relace a otevíráte okno Relace poprvé, otevře se dialogové okno Zobrazit tabulku. Pokud se otevře, klikněte na tlačítko Zavřít.

  • Na kartě Návrh ve skupině Zobrazit či skrýt klikněte na položku Všechny relace.

  • Zobrazí se všechny tabulky s relacemi a znázorněnými čarami relace.

  • Klikněte na čáru relace, kterou chcete změnit. Čára relace se při výběru zobrazuje silněji.

  • Dvakrát klikněte na čáru relace.

  • Proveďte požadované změny a klikněte na tlačítko OK.

    Dialogové okno Upravit relace umožňuje provádět změny relací tabulky. Konkrétně můžete měnit tabulky nebo dotazy na některé ze stran relace nebo pole na některé straně. Můžete také zobrazit typ spojení nebo vynutit referenční integritu a zvolit kaskádovou možnost. Další informace o typu spojení a jeho nastavení uvádí část Nastavení typu spojení. Další informace o vynucení referenční integrity a výběru kaskádové volby uvádí část Vynucení referenční integrity.

Nastavení typu spojení

Při definování relace tabulky informují skutečnosti týkající se relace návrháře dotazu. Pokud například definujete relaci mezi dvěma tabulkami a následně vytvoříte dotaz, který s těmito tabulkami pracuje, vybere aplikace Access automaticky výchozí odpovídající pole na základě polí zadaných v relaci. Tyto počáteční výchozí hodnoty v dotazu můžete změnit, ale hodnoty získané z relace budou často správné. Protože porovnání a seskupení dat z více než jedné tabulky představuje často prováděnou akci ve všech kromě těch nejjednodušších databází, může vám nastavení výchozích hodnot vytvořením relací ušetřit čas a ukázat se jako přínosné.

Dotaz s více tabulkami kombinuje informace z několika tabulek porovnáním hodnot ve společných polích. Operace, při které porovnání a kombinování probíhá, se označuje jako spojení. Předpokládejme například, že chcete zobrazit objednávky zákazníka. Vytvoříte dotaz, který spojuje tabulku Zákazníci s tabulkou Objednávky v poli Kód zákazníka. Výsledek dotazu obsahuje informace o zákazníkovi a objednávce pouze pro ty řádky, v nichž byla nalezena odpovídající položka.

Jednou z hodnot, které můžete v každé relaci zadat, je typ spojení. Ten sděluje aplikaci Access, které záznamy mají být ve výsledku dotazu zahrnuty. Vezměte například znovu v úvahu dotaz, který spojuje tabulku Zákazníci s tabulkou Objednávky ve společných polích, která představují kód zákazníka. Pomocí výchozího typu spojení (nazvaného vnitřní spojení) vrátí dotaz pouze řádky zákazníka a objednávky, v nichž jsou společná pole (označovaná také jako propojená pole) stejná.

Předpokládejme však, že chcete zahrnout všechny zákazníky – i takové, kteří dosud nezadali objednávky. K tomu je třeba změnit typ spojení z vnitřního na takzvané levé vnější. Levé vnější spojení vrátí všechny řádky v tabulce vlevo relace a pouze odpovídající řádky z tabulky vpravo. Pravé vnější spojení vrátí všechny řádky vpravo a pouze odpovídající řádky vlevo.

Poznámka : V tomto případě vypovídají hodnoty vlevo a vpravo o pozicích tabulek v dialogovém okně Upravit relace, nikoli v okně Relace.

Měli byste vždy popřemýšlet o tom, jaký výsledek od dotazu, který propojuje tabulky v této relaci, očekáváte a podle toho nastavit typ spojení.

Nastavení typu spojení

  1. V dialogovém okně Upravit relace klikněte na tlačítko Typ spojení.

    Zobrazí se dialogové okno Vlastnosti spojení.

  2. Klikněte na přepínač a potom na tlačítko OK.

Následující tabulka (pomocí tabulky Zákazníci a objednávky) znázorňuje tři možnosti, které se zobrazují v dialogovém okně Vlastnosti spojení, typ spojení, který používají, a informaci, zda jsou pro každou tabulku zahrnuty všechny nebo pouze odpovídající řádky.

Přepínač

Relační spojení

Levá tabulka

Pravá tabulka

1. Zahrnout pouze řádky, v nichž jsou spojená pole z obou tabulek shodná

Vnitřní spojení

Odpovídající řádky

Odpovídající řádky

2. Zahrnout všechny záznamy z tabulky Zákazníci a z tabulky Objednávky pouze ty záznamy, ve kterých jsou spojená pole shodná

Levé vnější spojení

Všechny řádky

Odpovídající řádky

3. Zahrnout všechny záznamy z tabulky Objednávky a z tabulky Zákazníci pouze ty záznamy, ve kterých jsou spojená pole shodná

Pravé vnější spojení

Odpovídající řádky

Všechny řádky

Pokud zvolíte možnost 2 nebo 3, zobrazí se v řádku relace šipka. Ta ukazuje na stranu relace, která znázorňuje pouze odpovídající řádky.

Změny v dialogovém okně Vlastnosti spojení

  1. Na kartě Databázové nástroje klikněte ve skupině Relace na položku Relace.

Zobrazí se okno Relace. Pokud jste dosud nedefinovali žádné relace a otevíráte okno Relace poprvé, otevře se dialogové okno Zobrazit tabulku. Pokud se otevře, klikněte na tlačítko Zavřít.

  • Na kartě Návrh ve skupině Zobrazit či skrýt klikněte na položku Všechny relace.

    Zobrazí se všechny tabulky s relacemi a znázorněnými čarami relace.

  • Klikněte na čáru relace, kterou chcete změnit. Čára relace se při výběru zobrazuje silněji.

  • Dvakrát klikněte na čáru relace.

Zobrazí se dialogové okno Upravit relace.

  1. Klikněte na tlačítko Typ spojení.

  2. V dialogovém okně Vlastnosti spojení klikněte na přepínač a potom klikněte na tlačítko OK.

  3. Proveďte další změny relace a klikněte na tlačítko OK.

Začátek stránky

Vynucení referenční integrity

Účelem referenční integrity je zabránit výskytu osiřelých záznamů a zajistit synchronizaci záznamů, abyste neměli záznamy odkazující na jiné záznamy, které již neexistují. Referenční integrita se vynucuje tak, že ji povolíte v relaci tabulky. Po nastavení vynucování aplikace Access odmítne jakoukoli operaci, která by způsobila porušení referenční integrity pro danou relaci tabulky. Aplikace Access odmítne aktualizace, které mění cíl odkazu, i odstranění, která cíl odkazu odebírají. Chcete-li, aby aplikace Access podporovala referenční aktualizace a odstranění tak, aby se odpovídajícím způsobem měnily všechny související řádky, přečtěte si část Nastavení kaskádových možností.

Zapnutí nebo vypnutí referenční integrity

  1. V okně Relace klikněte na čáru relace, kterou chcete změnit. Čára relace se při výběru zobrazuje silněji.

  2. Dvakrát klikněte na čáru relace.

Zobrazí se dialogové okno Upravit relace.

  1. Zaškrtněte políčko Zajistit referenční integritu.

  2. Proveďte další změny relace a klikněte na tlačítko OK.

Po vynucení referenční integrity platí následující pravidla:

  • Do pole cizího klíče relační tabulky nelze zadat hodnotu, pokud tato hodnota neexistuje v poli primárního klíče primární tabulky – tím by došlo k vytvoření osiřelých záznamů.

  • Z primární tabulky nelze odstranit záznamy, které mají odpovídající protějšky v tabulce související. V tabulce Zaměstnanci například nelze odstranit záznam, ke kterému existují odpovídající objednávky v tabulce Objednávky. Můžete však odstranit primární záznam a všechny odpovídající záznamy v jedné operaci zaškrtnutím políčka Kaskádové odstranění souvisejících záznamů.

  • Hodnotu primárního klíče v primární tabulce nemůžete změnit, pokud by tím došlo k vytvoření osiřelých záznamů. Nelze například změnit číslo objednávky v tabulce Objednávky, pokud jsou této objednávce přiřazeny položky na čáře v tabulce Rozpis objednávek. Můžete však aktualizovat primární záznam a všechny odpovídající záznamy v jedné operaci zaškrtnutím políčka Kaskádová aktualizace souvisejících polí.

    Poznámky : Pokud se vám nedaří povolit referenční integritu, jsou k jejímu vynucování vyžadovány následující podmínky.

    • Společné pole z primární tabulky musí být primárním klíčem nebo musí mít jedinečný index.

    • Společná pole musí mít stejný datový typ. Jediná výjimka je, že pole Automatické číslo může být spojené s polem Číslo, jehož vlastnost .Velikostpole má nastavení Dlouhé celé číslo.

    • Obě tabulky musí existovat ve stejné databázi aplikace Access. Referenční integritu nelze vynucovat v propojených tabulkách. Pokud jsou však zdrojové tabulky ve formátu aplikace Access, můžete otevřít databázi, v níž jsou uloženy, a povolit v ní referenční integritu.

Nastavení kaskádových možností

Může nastat situace, kdy budete mít oprávněnou potřebu změnit hodnotu na straně 1 relace. V takovém případě je třeba, aby aplikace Access automaticky aktualizovala všechny ovlivněné řádky při jedné operaci. Tímto způsobem je aktualizace zcela dokončena, takže databáze nezůstane v nekonzistentním stavu – s některými řádky aktualizovanými a jinými ne. Aplikace Access vám pomůže se tomuto problému vyhnout tím, že 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í.

Může být také nutné odstranit řádek a všechny související záznamy – například u záznamu dopravce a všech souvisejících objednávek tohoto dopravce. Z tohoto důvodu aplikace Access podporuje možnost Kaskádové odstranění souvisejících záznamů. Pokud nastavíte vynucování referenční integrity a zaškrtnete možnost Kaskádové odstranění souvisejících záznamů, aplikace Access při odstranění záznamu s primárním klíčem automaticky odstraní všechny záznamy, které primární klíč obsahují.

Vypnutí nebo zapnutí kaskádových aktualizací či odstranění

  1. V okně Relace klikněte na čáru relace, kterou chcete změnit. Čára relace se při výběru zobrazuje silněji.

  2. Dvakrát klikněte na čáru relace.

Zobrazí se dialogové okno Upravit relace.

  1. Zaškrtněte políčko Zajistit referenční integritu.

  2. Zaškrtněte políčko Kaskádová aktualizace souvisejících polí nebo Kaskádové odstranění souvisejících záznamů, případně obě tato políčka.

  3. Proveďte další změny relace a klikněte na tlačítko OK.

Poznámka : Jestliže je primárním klíčem pole typu Automatické číslo, nebude mít zaškrtnutí políčka Kaskádová aktualizace souvisejících polí žádný vliv, protože hodnotu v poli typu Automatické číslo nelze změnit.

Začátek stránky

Sdílení Facebook Facebook Twitter Twitter E-mail E-mail

Byly tyto informace užitečné?

Výborně! Je ještě něco dalšího, co byste nám chtěli dát vědět?

Jak bychom ho mohli vylepšit?

Děkujeme vám za zpětnou vazbu.

×