Název projektu Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast - téma DUM Inovace ŠVP na OA a JŠ Třebíč CZ.1.07/1.5.00/34.0143 Access II Označení materiálu (přílohy) 13 RelaceN:N 1 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Relace Relace typu N:N V relaci typu N:N odpovídá jednomu záznamu v tabulce A více záznamů v tabulce B a naopak jednomu záznamu v tabulce B více záznamů v tabulce A (někdy se používá označení M:N). To je možné pouze pomocí definice třetí tabulky (nazývané spojovací tabulka), jejíž primární klíč se skládá ze dvou polí cizích z tabulek A a B. Relace N:N jsou ve skutečnosti dvě relace 1:N s třetí tabulkou. V relaci N:N jsou například tabulky Dodavatelé a Výrobky a tato relace je definována vytvořením dvou relací 1:N s tabulkou Objednávky. V tabulkách je potřeba mít vytvořen primární a cizí klíč: Primární klíč - jedno nebo více polí (sloupců), jejichž hodnota nebo kombinace hodnot jedinečným způsobem identifikuje každý záznam v tabulce. Primární klíč nepovoluje hodnoty Null a musí mít vždy jedinečný index. Slouží k vytvoření relace tabulky na cizí klíče v jiných tabulkách. Cizí klíč - jedno nebo více polí (sloupců) tabulky odkazující na jedno nebo více polí primárního klíče jiné tabulky. Cizí klíč vyjadřuje, jak spolu tabulky souvisejí. Propojení si ukážeme na třech tabulkách z databázového souboru Objednavky.mdb. Dodavatelé Číslo dodavatele Firma Adresa Město 1 Extrudo Bečice, s.r.o. Bečice 7 Týn nad Vltavou 2 DANONE, a.s. Konopišťská 905 Benešov 3 Intersnack, a.s. Jindrova 25 Praha 5 1
Datum Objednávky Text KódDodavatel KódVýrobek 1.9.2013 jogurt 2 D1 1.9.2013 smetana 2 D1 1.9.2013 chips 3 I1 2.9.2013 zelenina 1 E1 2.9.2013 sýr 1 E2 2.9.2013 lupeto 3 I4 3.9.2013 kaše 1 E4 3.9.2013 tvaroh 2 D2 3.9.2013 pom bar 3 I5 Výrobky Kód výrobku Název výrobku Jednotková cena Jednotky na skladě D1 Activia bílá 12 226 D2 Activia tvarohová jahoda 13 1229 D3 Kysaná smetana klasik 21 1331 D4 Jogurt Prince-frutáci 11 1234 E1 Jarní zelenina 150 g 20 117 E2 3 druhy sýra 150 g 22 253 E3 Bisquit perníkový polomáčený 180 g 45 120 E4 Kaše jáhlová snídaňová 500 g 110 120 E5 Kaše rýžová s jogurtem 500 g 120 215 E6 BIO Tyčka kukuřičná natur 15 2276 E7 CRISPINS BIO tyčka žitná 50 g 20 334 I1 Bohemia Chips horská sůl 24 322 I2 Bohemia chips solené 21 486 I3 Brambůrky Grande 25 224 I4 Lupeto snack solené 31 235 I5 Pom bar bramborové lupínky 34 439 Propojení relaci provedeme dvakrát. 1. přes primární klíč = pole Číslo dodavatele z tabulky Dodavatelé a cizí klíč = pole KódDodavatel z tabulky Objednávky. 2. přes primární klíč = pole Kód výrobku z tabulky ýrobky a cizí klíč = pole KódVýrobek z tabulky Objednávky. Vidíme, že tabulka Objednávky má dvě relace (každá s jednou ze zbývajících tabulek). Při vytváření relace mezi tabulkami není nutné, aby pole, která jsou v relaci, měla shodné názvy. Pole v relaci však musí mít shodný typ dat. 2
Definování relace typu 1:N 1. Zavřete všechny otevřené tabulky. Relaci mezi otevřenými tabulkami nelze vytvořit ani upravit. 2. Přejděte do okna Databáze. 3. Klepněte na tlačítko Relace či vyberte volbu Nástroje - relace. 4. Pokud jste ještě v databázi nedefinovali žádné relace, zobrazí se automaticky dialogové okno Zobrazit tabulku. 5. Poklepejte na názvy všech tří požadovaných tabulek a poté zavřete dialogové okno Zobrazit tabulku. Chcete-li vytvořit relaci v rámci téže tabulky, přidejte tuto tabulku dvakrát. 6. Přetáhněte požadované pole z jedné tabulky na související pole v druhé tabulce. Přetahujte vždy pole s primárním klíčem na propojovací tabulku s cizím klíčem. Zobrazí se dialogové okno Upravit relace. Zkontrolujte názvy polí zobrazené v obou sloupcích. V případě potřeby proveďte požadované změny. V případě potřeby nastavte možnosti relace. ( Referenční integrita - pravidla, jejichž dodržení při přidávání, aktualizaci nebo odstraňování záznamů zachová definované relace mezi tabulkami). 7. Klepnutím na tlačítko Vytvořit potvrdíte vytvoření relace. 3
Výhody propojení tabulek si ukážeme na následujících dotazech (formuláře a sestavy si vytvoříme v příští lekci) Vytvořte následující dotazy a uložte je pod příslušným názvem 1. Objednávky vypíše všechny objednávky jak s výrobky tak s dodavateli a jejich adresami 2. Počet vypočítá kolik výrobků bylo objednáno od každého z dodavatelů (využijte sekupení) 3. Počet s dodavatelem zobrazí počet objednaných výrobků od dodavetelů i s jejich názvem 4. DPH zobrazí objenávky s názvem výrobku, cenou a novou položkou DPH jako 20% z ceny výrobku 5. Zisk Extrudo vypočte možný zisk za prodané zboží (= v objednávce) od firmy Extrudo (zisk je 15% z ceny výrobku) 6. Vytvor vytvoří novou tabulku s názvem Intersnack, která bude obsahovat pouze objednané zboží od firmy Intersnack, a.s. 7. Intersnack zobrazí pouze objednávky pro firmu Intersnack 8. Danone sleva sníží u výrobků od Danone cenu o 10%. 9. Levné vytvoří novou tabulku s levnými výrobky (cena do 20Kč) i s dodavateli 10. Smaz odstraň z tabulky Objednávky objednávky od firmy Danone (vyzkoušejte varianty relací s a bez referenční integrity) 4
Př. ad 1: 5