Máme tabulky Studenti, Znamky a Studenti a mezi nimi vazby:
Prijmeni
Jmeno
Student
Krátký
Emil
H98007
Neučesaný
Aleš
K96111
Zmrzlý
Jonáš
K95222
Kovaný
Lumír
E99001
Nohavica
Klement
P00333
1:N
Student
Predmet
Znamka
H98007
KKY-ABC
2
H98007
KKS-QWE
H98007
KIV-DBM1
1
K96111
KIV-DBM1
3
K95222
KIV-DBM1
E99001
KIV-DBM1
3
P00333
KHI-KNEDL
4
N:1
Predmet
Nazev
Kreditu
KKY-ABC
ABC umělé inteligence
6
KKS-QWE
Konstrukce turbíny QWE.14
4
KIV-DBM1
Databázové systémy
6
KHI-KNEDL
Příprava knedlíků
7
Nyní je nutné dané vazby nastavit v aplikaci.
Klikneme si na menu Úpravy - Relace.
Přidáme tabulky Studenti, Predmety a Znamky (vdy vybereme příslunou tabulku a klikneme na tlačítko Přidej, po vloení vech potřebných tabulek potom na tlačítko Zavřít).
Myší uchopíme položku Student v tabulce Studenti a táhneme ji na položku Student v tabulce Znamky. Zobrazí se nám tabulka, kde si zaškrtneme Zajistit referenční integritu (zajistí, aby nebylo možné mít v tabulce Znamky detail pro studenta, který v tabulce Studenti neexistuje) a klikneme na Aktualizace svázaných polí v kaskádě (když se nám změní položka Student v tabulce Studenti, změní se odpovídající položky Student v tabulce Znamky).
Pokud budeme chtít (a to my chtít budeme) nějakým dotazem zobrazovat spojení tabulek Studenti a Znamky a v tabulce Studenti bude existovat nějaký student, který nemá zapsaný žádný předmět, aby se přesto tento záznam vypsal bez vyplnění údajů o předmětu, potom musíme jetě něco donastavit .. Klikneme na tlačítko Typ spojení a zaklikneme 2 dle vzoru. Klikneme na tlačítko OK.
Vrátili jsme se na původní formulářík, kde u máme ve potřebné nastaveno a tak klikneme na tlačítko Vytvořit.
Myší uchopíme položku Predmet v tabulce Predmety a táhneme ji na položku Predmet v tabulce Znamky. Zobrazí se nám tabulka, kde si zaškrtneme Zajistit referenční integritu, klikneme na Aktualizace svázaných polí v kaskádě a klikneme na tlačítko Vytvořit.
Relaci uložíme.
Tím jsme vytvořily vazby mezi tabulkami, pomocí nichž se v tabulkách udržuje pořádek a slouží nám také při návrhu dotazů viz. dále.
Vytvoření dotazu nad více tabulkami. Zobrazení případu, kdy student nemá zapsaný žádý předmět:
Do formuláře Studenti přidáme dalšího studenta Bezpředmětný Ondřej P92777.
Založíme si nový dotaz, který nazveme student_bez_predmetu.
Přidáme tabulky Studenti a Znamky. Při přidávání tabulek se nám hned zobrazují vazby, které jsme nastavili v relaci.
Postupně klikáme na položky Prijmeni a Jmeno z tabulky Studenti, na položky Student, Predmet a Znamka z tabulky Znamky a na položky Nazev. Tím se tyto položky zobrazí v dotazu dole. Když si nyní otevřeme dotaz, vydíme, že ze se nám zobrazil i námi posledně zadaný student, ale bez jakéhokoliv předmětu.
Nezobrazi se nám ale položka Student a to proto, že jsme ji nechali zobrazit z tabulky Znamky, kde vlastně neexistuje žádný detail k mastru. Když si nyní necháme zobrazit položku Student z tabulky Studenti, osobní číslo studenta se zobrazí.
Zobrazení stejné struktury dat jako byla tabulka SPZ ze tří tabulkem pomocí dotazu:
Založíme si nový dotaz, který nazveme SPZ_DOTAZ.
Přidáme tabulky Studenti, Znamky a Predmety. Při přidávání tabulek se nám hned zobrazují vazby, které jsme nastavili v relaci.
Postupně klikáme na položky Prijmeni a Jmeno z tabulky Studenti, na položky Student, Predmet a Znamka z tabulky Znamky a na položky Nazev a Kreditu z tabulky Predmety. Tím se tyto položky zobrazí v dotazu dole.
Když se nyní budeme snažit otevřít dotaz SPZ_DOTAZ, zjistíme, že nám systém hlasí chybu. Je to proto, že k neexistujícímu záznamu v tabulce Znamky hledá záznam v tabulce Predmety, který tam samozřejmě také není. Napravíme to tak, že změníme spojení mezi těmito tabulkami (zakrtneme 3):
Když si nyní otevřeme dotaz, vydíme, že ze tři tabulek nám zobrazil stejná data jako kdybychom se koukali na tabulku SPZ, kterou jsme si vytvářeli v předchozím cvičení.
Vytvoření dotazu s odvozenými sloupci:
Založíme si nový dotaz, který nazveme odvozene_sloupce.
Přidáme tabulky Studenti, Znamky a Predmety. Při přidávání tabulek se nám hned zobrazují vazby, které jsme nastavili v relaci.
Nyní chceme, aby se nám sloupce Student, Prijmeni a Jmeno nezobrazovali jako samostatné sloupce, ale aby se tyto údaje spojili do jednoho sloupce (např. H98007..Krátký Ale). To samé chceme se sloupci Predmet, Nazev a Kreditu (např. KIV-DBM1..Databázové systémy (6)). Do sloupců dole popíšeme zobrazované sloupce dle vzoru. Zápis [Studenti].[Student] ([Predmety].[Predmet]) je nutné, protože systém by jinak nevěděl, z jaké tabulky má položku Student brát, zda z tabulky Studenti či tabulky Znamky. Při otevření dotazu se nám zobrazí toto:
Takovéto dotazy jsou vhodné zejména pro tisk sestav.
Pokud najdete nějaké nesrovnalosti, zašlete je, prosím, na e-mailovou adresu kotouc@civ.zcu.cz.