Access – relace M:N

Relace, či přesněji vazba, M:N vznikne, když jeden záznam z jedné tabulky souvisí s více záznamy z druhé tabulky a zároveň jeden záznam z druhé tabulky může souviset s více záznamy z první tabulky. Dalo by se také nepřesně říct, že několik záznamů z jedné tabulky souvisí s několika záznamy z tabulky druhé.

Příkladem může být například tabulka objednávek s tabulkou výrobků. V jedné objednávce může být více různých výrobků (zákazník nakoupí více druhů zboží). Jeden výrobek však zároveň může být ve více objednávkách (jeden druh zboží nakoupí více zákazníků).

tabulky výrobků a objednávek - relace M:N

V Accessu se tato vazba nedá vytvořit, Access ji totiž neumí rozpoznat. To ale neznamená, že bychom ji v accessovské databázi nemohli mít. Můžeme tento „nedostatek“ Accessu obejít vytvořením třetí (spojovací) tabulky. Ta bude propojena s oběma tabulkami pomocí vazby 1:N.

propojovací tabulky mezi tabulkami výrobků a objednávek

Tato propojovací tabulka bude obsahovat pouze kopie primárních klíčů obou tabulek, které chceme propojit. Pokud v obou tabulkách (objednávky i výrobky) máte jako primární klíč ID, tedy automatické číslo, ve spojovací tabulce budou právě jen tato dvě pole – pole ID výrobků a pole ID objednávek.

Ačkoliv datový typ polí ID je běžně automatické číslo, jejich kopie (ID v propojovací tabulce) musí mít datový typ „obyčejné“ číslo. Proč? Protože automatické číslo nemůže obsahovat duplicity (automaticky vypíše řadu 1, 2, 3, 4, 5, …). My ale v propojovací tabulce mít duplicity povoleny potřebujeme. Na výše uvedeném obrázku můžete vidět duplicity jak v poli pro objednávky (dvě 1, tři 3), tak v poli pro výrobky (dvě A, dvě C, dvě D). Jako velikost pole nastavíme u obou polí „dlouhé celé číslo“, aby se velikost pole shodovala s velikostí pole automatického čísla, se kterým jej budeme propojovat.

nastavení dvou polí jako primární klíč

Nakonec v návrhovém zobrazení tabulky označíme obě pole dohromady a poté klikneme na ikonu klíče (můžete vidět na pohyblivém obrázku). Tak nastavíme obě pole jako jeden primární klíč. V jednom poli (objednávky) tedy mohou být duplicity, stejně tak mohou být duplicity i v druhém poli (výrobky). Ale v kombinaci obou polí (primární klíč) duplicity být nemohou.

Po vytvoření propojovací tabulky stačí už jen vytvořit relace 1:N. Jednu mezi tabulkou výrobků a propojovací tabulkou a druhou mezi propojovací tabulkou a tabulkou objednávek. A v každém poli propojovací tabulky vytvořit pole se seznamem. Obojí jsem již popsal v příslušných článcích.

Na následujícím videu najdete podrobný a kompletní návod, jak relaci M:N vytvořit při propojování tabulky lektorů s tabulkou kurzů.

Soubor používaný ve videu můžete stáhnout zde.