Košík je prázdný

Kurzy na míru

MS Access - vytvoření relace typu N:N

Vytvoření relace typu N:N - MS Accessalt

Zvažte vytvoření relace mezi tabulkou Produkty a tabulkou Objednávky.

Jedna objednávka může obsahovat více produktů. Na druhou stranu se jeden produkt 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 Produkty. A naopak - pro každý záznam v tabulce Produkty může existovat celá řada záznamů v tabulce Objednávky. Tento typ relace se nazývá N:N, protože pro každý produkt může existovat mnoho objednávek a pro každou objednávku mnoho produktů. Všimněte si, že ke zjištění relace typu N:N mezi tabulkami je důležité vzít v úvahu obě strany relace.

Předměty ve dvou tabulkách — objednávky a produkty — obsahují relaci typu N:N. To představuje problém. Představte si například, že se pokusíte vytvořit relaci mezi dvěma tabulkami tak, že přidáte pole ID produktu do tabulky Objednávky. Chcete-li do každé objednávky umístit více produktů, je třeba vytvořit více záznamů v jedné objednávce v tabulce Objednávky. Opakovali byste informace o objednávce u každého řádku, který se vztahuje k jedné objednávce. Výsledkem bude neefektivní návrh, který může vést k nepřesným datům. Ke stejnému problému dojde, jestliže přidáte pole ID objednávky do tabulky Produkty — pro každý produkt bude v tabulce Produkty existovat více záznamů. Jak tento problém vyřešit?

Vytvořte třetí tabulku, která se často nazývá spojená tabulka, jež rozdělí relaci typu N:N na dvě relace typu 1:N. Vložíte primární klíč z těchto dvou tabulek do třetí tabulky. Výsledkem je, že třetí tabulka zaznamená každý výskyt nebo instanci relace.

Každý záznam v tabulce Podrobnosti objednávky představuje jednu řádkovou položku v objednávce. Primární klíč tabulky Podrobnosti objednávky se skládá ze dvou polí — cizích klíčů z tabulek Objednávky a Produkty. Použití samotného pole ID objednávky nefunguje jako primární klíč této tabulky, protože jedna objednávka může obsahovat mnoho řádkových položek. ID objednávky se opakuje u každé řádkové položky v objednávce, takže pole neobsahuje jedinečné hodnoty. Ani použití samotného pole ID produktu nefunguje, protože jeden produkt se může vyskytnout v mnoha různých objednávkách. Společně však obě pole vždy vytvoří jedinečnou hodnotu pro každý záznam.

V databázi prodeje produktů spolu tabulky Objednávky a Produkty přímo nesouvisejí. Namísto toho jsou spojeny nepřímo prostřednictvím tabulky Podrobnosti objednávky. Relace typu N:N mezi objednávkami a produkty je v databázi znázorněna pomocí dvou relací typu 1:N:

• Tabulky Objednávky a Podrobnosti objednávky jsou propojeny relací typu 1:N. Každá objednávka může obsahovat více řádkových položek, ale každá řádková položka je spojena pouze s jednou objednávkou.

• Tabulky Produkty a Podrobnosti objednávky jsou propojeny relací typu 1:N. Každý produkt může obsahovat mnoho přidružených řádkových položek, ale každá řádková položka odkazuje pouze na jeden produkt.

Z tabulky Podrobnosti objednávky můžete určit všechny produkty v konkrétní objednávce. Také můžete určit všechny objednávky u konkrétního produktu.

Po začlenění tabulky Podrobnosti objednávky může seznam tabulek a polí vypadat například takto:


Toto téma je součástí kurzů: MS Access základní

Budeme rádi když se s námi podělíte o své názory na naší FACEBOOK stránce.