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 Access spôsobom, ako tieto rozdelené informácie znova spojiť – urobíte to umiestnením spoločných polí do súvisiacich tabuliek. 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ý predmet v databáze musíte poskytnúť Access spôsob, ako tieto informácie v prípade potreby znova spojiť. 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:
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.
1. Identifikácia zamestnanca sa zobrazuje v oboch tabuľkách – ako primárny kľúč...
2. ... a ako cudzí kľúč.
Typy vzťahov tabuliek
Existujú tri typy vzťahov tabuliek v Access.
-
Vzťah „one-to-many“
Použijeme ako prí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. Access potom môžete pomocou identifikačného čísla zákazníka v tabuľke Objednávky vyhľadať správneho zákazníka pre každú objednávku.
-
Vzťah „many-to-many“
Teraz sa pozrime 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.
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í. Access používa vzťahy tabuliek na určenie spôsobu spojenia tabuliek, keď ich potrebujete použiť v databázovom objekte. 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 medzi tabuľkami definovaný vzťah, Access poskytuje predvolené spojenie na základe existujúceho vzťahu tabuliek. Okrem toho, ak používate niektorého zo sprievodcov dotazom, Access použije informácie, ktoré zhromažďuje zo vzťahov tabuliek, ktoré ste už definovali na prezentovanie informovaných možností a na vopred vyplnenie nastavení vlastností príslušnými predvolenými hodnotami.
-
Vzťahy tabuliek sú podkladom pre návrhy formulárov a zostáv
Pri navrhovaní formulára alebo zostavy Access používa informácie, ktoré zhromažďuje zo vzťahov tabuliek, ktoré ste už definovali na prezentovanie informovaných možností a na vopred vyplnenie nastavení 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 na hlavný kľúč a cudzí kľúč zostali synchronizované. Referenčná integrita, ktorá je závislá od vzťahov v tabuľkách, pomáha zabezpečiť synchronizáciu odkazov.
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 dáte Access spôsob, ako spojiť údaje tak, že umiestnite spoločné polia do súvisiacich tabuliek. 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“. Ak chcete údaje znova spojiť, Access vezme 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 vynútení Access odmietne akúkoľvek operáciu, ktorá porušuje referenčnú integritu pre daný vzťah tabuliek. To znamená, že Access odmietne aktualizácie, ktoré zmenia cieľ odkazu, ako aj odstránenia, ktoré odstránia cieľ odkazu. Je možné, že budete mať úplne platnú potrebu zmeniť hlavný kľúč pre špeditéera, ktorý má objednávky v tabuľke Objednávky. V takýchto prípadoch naozaj potrebujete, aby Access automaticky aktualizovať všetky riadky, ktoré sa v rámci jednej operácie vykonávali. Týmto spôsobom Access zabezpečí úplné dokončenie aktualizácie, aby databáza zostala v nekonzistentnom stave, pričom niektoré riadky sa aktualizovali a niektoré nie. 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ľúč, Access 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 Access podporuje 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 primárneho kľúča vzťahu, Access automaticky odstráni všetky záznamy, ktoré odkazujú na hlavný kľúč.
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 neboli definované žiadne vzťahy tabuliek a okno Vzťahy otvárate prvýkrát, Access zobrazí výzvu na pridanie tabuľky alebo dotazu do okna.
Otvorenie okna Vzťahy
-
Kliknite na položku Súbor, potom na položku Otvoriť a potom vyberte a otvorte databázu.
-
Na karteDatabázové nástroje v skupine Vzťahy kliknite na položku Vzťahy.
-
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.