Vyzkoušejte to!
Co je relace M:N?
Relace M:N jsou nejčastěji používané relace mezi tabulkami. Poskytují důležité informace, například které zákazníky vaši prodejci kontaktovali a které produkty jsou v zákaznických objednávkách.
Relace M:N existuje, když jedna nebo více položek v jedné tabulce může mít relaci s jednou nebo více položkami v jiné tabulce. Například:
-
Tabulka Objednávky obsahuje objednávky vytvořené více zákazníky (kteří jsou uvedení v tabulce Zákazníci) a zákazník může zadat více než jednu objednávku.
-
Tabulka Produkty obsahuje jednotlivé produkty, které prodáváte, které jsou součástí mnoha objednávek v tabulce Objednávky.
-
Jedna objednávka může zahrnovat jednu instanci (nebo více než jednu instanci) konkrétního produktu a/nebo jednu instanci (nebo více než jednu instanci) více produktů.
Například objednací číslo 1012 zákazníka Elizabeth Andersen může obsahovat jeden z produktů 12 a 15 a pět produktů 30.
Vytváření relací M:N
Relace M:N se vytvářejí jinak než relace 1:1 nebo 1:N. U těchto relací jednoduše propojíte příslušná pole s čárou. Pokud chcete vytvořit relace M:N, musíte vytvořit novou tabulku, která propojí další dvě. Tato nová tabulka se nazývá zprostředkující tabulka (někdy také propojovací nebo spojovací tabulka).
Ve scénáři popsaném výše vytvoříte tabulku Podrobnosti objednávky se záznamy, které pro každou položku v dané objednávce obsahují ID z tabulky Order (Objednávka) a ID z tabulky Products (Produkty). Primární klíč pro tuto tabulku vytvoříte pomocí kombinovaných klíčů z těchto dvou tabulek.
V našem scénáři se objednací číslo 1012 Elizabeth Andersen skládá z produktů 12, 15 a 30. To znamená, že naše položky Podrobnosti objednávky vypadají takto:
ID objednávky |
Product ID |
---|---|
1012 |
12 |
1012 |
15 |
1012 |
30 |
Elizabeth si objednala jeden z produktů 12 a 15 a pět produktů 30. Nemůžeme přidat další řádek se 1012 a 30, protože ID objednávky a ID produktu společně tvoří náš primární klíč a primární klíče musí být jedinečné. Místo toho přidáme pole Quantity do tabulky Podrobnosti objednávky.
ID objednávky |
Product ID |
Mnozstvi |
---|---|---|
1012 |
12 |
1 |
1012 |
15 |
1 |
1012 |
30 |
5 |
Vytvoření zprostředkující tabulky
-
Vyberte Vytvořit > tabulku.
-
Vyberte Uložit .
-
Do pole Název tabulky zadejte popisný název. Chcete-li označit jeho účel, můžete do názvu tabulky zahrnout spojení nebo zprostředkující .
Vytvoření polí v zprostředkující tabulce
Jako první sloupec tabulky Access automaticky přidá pole ID. Změňte toto pole tak, aby odpovídalo ID první tabulky v relaci M:N. Pokud je první tabulka například tabulka Objednávky s názvem ID objednávky a jejím primárním klíčem je číslo, změňte název pole ID v nové tabulce na ID objednávky a jako datový typ použijte Číslo.
-
V zobrazení Datový list vyberte záhlaví sloupce ID a zadejte nový název pole.
-
Vyberte pole, které jste právě přejmenovali.
-
Na kartě Pole tabulky v části Datový typ vyberte datový typ, který odpovídá poli v původní tabulce, například Číslo nebo Krátký text.
-
Vyberte Kliknutím přidat a pak vyberte datový typ, který odpovídá primárnímu klíči v druhé tabulce. Do záhlaví sloupce, které je už vybrané, zadejte název pole primárního klíče z druhé tabulky, například ID produktu.
-
Pokud potřebujete sledovat jakékoli další informace o těchto záznamech, například množství položek, vytvořte další pole.
Kombinování polí primárního ID
Teď, když máte pole obsahující ID ze dvou tabulek, které chcete propojit, vytvořte v zprostředkující tabulce primární klíč založený na těchto ID.
-
V návrhovém zobrazení otevřete zprostředkující tabulku.
-
Vyberte oba řádky, které obsahují ID. (Pokud jste postupovali podle předchozího postupu, jedná se o první dva řádky.)
-
Vyberte Návrh tabulky > Primární klíč.
Vedle obou polí ID se zobrazí ikony kláves.
Propojením tří tabulek vytvořte relaci M:N.
Pokud chcete dokončit relaci M:N, vytvořte relaci 1:N mezi polem primárního klíče v každé tabulce a odpovídajícím polem v zprostředkující tabulce. Podrobnosti o tom, jak to udělat, najdete v tématu Začínáme s relacemi mezi tabulkami.
Po dokončení by relace měly vypadat nějak takto: