Cvičení předmětu KIV/DB1
Ukázka semestrální práce předmětu,
cvičící: Ing. Tomáš Kotouč
Podoba
cvičné databáze.
- Budeme chtít sledovat osoby, které chodí do různých hospod. Budeme chtít
též sledovat jaké množství nápojů v daný den zkonzumovali a kolik je to stalo.
- Budeme předpokládat, že osoba přijde do jedné hospody v jeden den pouze
jednou. Jinak daná osoba může v daný den navštívit i více hospod.
- Budeme chtít později zjistit, jakého zboí bylo kolik spotřebováno
- Z tohoto zadání vyplývá, že budeme potřebovat:
- Číselník osob = OSOBY, který bude obsahovat atributy
rodne_cislo, prezdivka, jmeno, prijmeni. U
atributu rodne_cislo předpokládáme také jedinečnost a tak se tento
atribut stane klíčem. U atributu prezdivka budeme předpokládat
jedinečnost. Tento atribut by mohl byt také klíčem, ale přezdívka může být
poměrně dlouhá a může se časem měnit, a proto je lepší mít jako klíč atribut
rodne_cislo.
- Číselník hospod = HOSPODY, který bude obsahovat atributy
ID_hospody, nazev. U atributu nazev budeme předpokládat
jedinečnost, ale protože se nám také může často měnit, stanovíme klíčem
atribut ID_hospody, což bude nějaká sekvence čísel.
- Číselník nápojů = NAPOJE, který bude obsahovat atributy
ID_napoje, popis, obsah, cena. Atribut
popis bude opět jednoznačný, ale opět může být časem měnět, tak bude
lepší stanovit klíčem atribut ID_napoje. Jinak bychom ani atribut
ID_napoje nepotrebovali.
- Nyní budeme potřebovat někde evidovat skutečnost, že daná osoba byla
daný den v dané hospodě. Jedná se o vazbu M:N mezi tabulkami
OSOBY a HOSPODY, protože osoba může navštívit daný den více
hospod a jedna hospoda může být daný den navštívena více osobami. Tato vazba
se rozpadne na tři tabulky a tak nám vznikne tabulka NAVSTEVA, ktera
bude obsahovat atributy rodne_cislo, ID_hospody, datum.
Pomocí atributu rodne_cislo provedeme spojení s tabulkou OSOBY
a pomocí atributu ID_hospody provedeme spojení s tabulkou
HOSPODY. Tyto tři atributy by dohromady mohli tvořit klíč této
tabulky, protože ale mezi touto tabulkou a tabulkou NAPOJE je nutné
ještě vytvořit další tabulku, kde budeme evidovat, co osoba vypila a tak
bychom museli celou trojicí provádět vazbu mezi těmito tabulkami, bude lepší
v tabulce NAVSTEVA vytvořit ještě jeden atribut ID_navstevy,
což bude počítadlo a stanovit ho zástupným klíčem. Zbylé tři atributy
rodne_cislo, ID_hospody, datum však musí splňovat
podmínku jedinečnosti.
- Ještě je třeba sledovat, kolik daná osoba v daný den v dané hospodě
vypila jakých nápojů. Jedná se tedy o vazbu M:N mezi tabulkami
NAVSTEVA a NAPOJE, protože osoba v daný den v dané hospodě
může vypít několik nápojů a daný nápoj může být v pit několika osobami.
Rozkladem této vazby nám vzikne nová tabulka SPOTREBA, která bude
obsahovat atributy ID_napoje, ID_navstevy a pocet.
Pomocí atributu ID_napoje povedeme propojení na tabulku NAPOJE
a pomocí atributu ID_navstevy provedeme propojení na tabulku
NAVSTEVA. Atributy ID_napoje a ID_navstevy tvoří klíč
této tabulky.
- To je vše, co budeme z datévé části potřebovat.
- Nyní si tedy vytvoříme tabulky:
- OSOBY s atributy rodne_cislo = text na 10 míst s maskou
"00000000A9;" a označit jako klíč, prezdivka = text na 50 míst a
indexovat žádná duplicita, jmeno = text na 35 míst, prijmeni =
text na 24 míst
- HOSPODY s atributy ID_hospody = počítadlo a označit jako
klíč, nazev = text na 30 míst a indexovat žádná duplicita
- NAPOJE s atributy ID_napoje = počítadlo a označit jako
klíč, popis = test na 30 míst a indexovat žádná duplicita,
obsah = číslo s dvěmi desetinými místy, cena = měna.
- NAVSTEVA s atributy ID_hospody = počítadlo a označit jako
klíč, rodne_cislo = text na 10 míst, ID_hospody = číslo s
velikostí pole "dlouhé celočíselné" (aby bylo možné vázat na počítadlo),
datum = datum. Atributy rodne_cislo, ID_hospody a
datum spojíme do indexu A (ikona nahoře) a u každé položky
nastavíme jedinečnost.
- SPOTREBA s atributy ID_navstevy = číslo s velikostí pole
"dlouhé celočíselné", ID_napoje = číslo s velikostí pole "dlouhé
celočíselné" (aby bylo možné vázat na počítadlo) a pocet = číslo.
Atributy ID_napoje a ID_navstevy vybereme jako klíč.
- Nyní si vytvoříme relaci:
- Na plochu si vybereme všechny tabulky.
- Myší uchopíme atribut rodne_cislo z tabulky OSOBY a
táhneme ho na atribut rodne_cislo v tabulce NAVSTEVY.
Zaškrneme Zajistit referenční integritu. Protože budeme chtít, aby se
v případě změny rodného čísla v tabulce OSOBY tato vazební hodnota změnila i
v tabulce NAVSTEVY, zaškrtneme Aktualizace svázaných polí v kaskádě.
Protože budeme chtít, aby se v případě odstranění osoby v tabulce OSOBY
odstranily i její záznamy v tabulce NAVSTEVY, zaškrtneme Odstranění
svázaných polí v kaskádě. Klikneme na tlačítko Vytvoř.
- Myší uchopíme atribut ID_hodpody z tabulky HOSPODY a
táhneme ho na atribut ID_hodpody v tabulce NAVSTEVY. Zaškrneme
Zajistit referenční integritu, Aktualizace svázaných polí v
kaskádě a Odstranění svázaných polí v kaskádě a klikneme na
tlačítko Vytvoř.
- Myší uchopíme atribut ID_navstevy z tabulky NAVSTEVY a
táhneme ho na atribut ID_navstevy v tabulce SPOTREBA.
Zaškrneme Zajistit referenční integritu, Aktualizace svázaných
polí v kaskádě a Odstranění svázaných polí v kaskádě a klikneme
na tlačítko Vytvoř.
- Myší uchopíme atribut ID_napoje z tabulky NAPOJE a táhneme
ho na atribut ID_napoje v tabulce SPOTREBA. Zaškrneme
Zajistit referenční integritu a Aktualizace svázaných polí v
kaskádě. Nezaškrtneme Odstranění svázaných polí v kaskádě,
protože nechceme, aby nám někdo odstraňoval nápoj, když už byl někde prodán.
Klikneme na tlačítko Vytvoř.
- Relaci uložíme.
- Vytvoříme si formulář pro osoby:
- Formulář - nový. Vybereme tabulku OSOBY a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název OSOBY a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem OSOBY.
- Vzhled formuláře můžeme později vylepšit, např. češtinu do popisu
položek, položky blíže k sobě, ukončovací tlačítko, atd.
- Vložíme několik záznamů, viz. vzor.
- Vytvoříme si formulář pro hospody:
- Formulář - nový. Vybereme tabulku HOSPODY a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název HOSPODY a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem HOSPODY.
- Číslo hospody nikomu nic neřekne a tak v návrhu formuláře učiníme
položku ID_hospody neviditelnou.
- Opět později můžeme vzhled formuláře vylepšit.
- Vložíme několik záznamů, viz. vzor.
- Vytvoříme si formulář pro nápoje:
- Formulář - nový. Vybereme tabulku NAPOJE a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název NAPOJE a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem NAPOJE.
- Číslo nápoje opět nikomu nic neřekne a tak v návrhu formuláře učiníme
položku ID_napoje neviditelnou.
- Opět později můžeme vzhled formuláře vylepšit.
- Vložíme několik záznamů, viz. vzor.
- Vytvoříme si formulář pro sledování den-hospoda-osoba a co vypila:
- Nejprve vytvoříme podformulář pro zobrazování kolik jakého nápoje kdo
vypil:
- Formulář - nový. Vybereme tabulku SPOTREBA a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název SPOTREBA a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem SPOTREBA.
- Číslo návštěvy opět můžeme schovat, protože to bude sloužit pro spojení
s nadřazeným formulářem. Políčko ID_napoje nám taky nic neřekne, smažeme ho
a místo něj vložíme Kombinované pole. Kombinované pole bude
vyhledávat hodnoty v tabulce NAPOJE. Zobrazovat budeme pouze
popis, ale protože potřebujeme do tabulky SPOTREBA ukládat
hodnotu ID_napoje, je třeba ji také vybírat, ale dá se zúžit na 0 cm.
Hodnotu atributu NAPOJE.ID_napoje budeme tedy ukládat a to do
atributu SPOTREBA.ID_napoje. Smažeme i nápis SPOTREBA.
- Nyní vytvoříme formulář pro zobrazování návštěvy a vložíme mu
podformulář pro spotřebu:
- Formulář - nový. Vybereme tabulku NAVSTEVY a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název NAVSTEVY a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem NAVSTEVY.
- Číslo návštěvy opět můžeme schovat, protože to bude sloužit pro spojení
s podformulářem. Hodnoty do položky rodne_cislo je třeba brát z
číselníku OSOBY. Toto políčko smažeme a místo něj vložíme
Kombinované pole. Kombinované pole bude vyhledávat hodnoty v tabulce
OSOBY. Zobrazovat budeme pouze atribut prezdivka, ale protože
potřebujeme do tabulky NAVSTEVA ukládat hodnotu rodne_cislo,
je třeba ji také vybírat, ale dá se zúžit na 0 cm. Hodnotu atributu
OSOBY.rodne_cislo budeme tedy ukládat a to do atributu
NAVSTEVY.rodne_cislo. Hodnoty do položky ID_hospody je
třeba brát z číselníku HOSPODY. Toto políčko smažeme a místo něj
vložíme Kombinované pole. Kombinované pole bude vyhledávat hodnoty v
tabulce HOSPODY. Zobrazovat budeme pouze atribut nazev, ale
protože potřebujeme do tabulky NAVSTEVA ukládat hodnotu
ID_hospody, je třeba ji také vybírat, ale dá se zúžit na 0 cm.
Hodnotu atributu HOSPODY.ID_hospody budeme tedy ukládat a to
do atributu NAVSTEVY.ID_hospody.
- Ještě je nutné do paty formuláře vložit podformulář SPOTREBA. Po
vyplnění vlastnosti Zdrojový objekt = SPOTREBA se nám hned
nastaví Závislé propojovací pole a Určující propojovací pole =
ID_navstevy a tim se oba formuláře prováží.
- Opět později můžeme vzhled formuláře vylepšit.
- Vložíme několik záznamů, viz. vzor.
- Abychom splnili kritéria semestrální práce, musíme ještě pořídit formulář
nad nějakým dotazem. Také nějaký formulář, ze kterého by ostatní formuláře
byli dostupné, by nebyl k zahození.
- Nyní si budeme chtít v jednom formuláři zobrazit, kolik-kdo-kde-kdy má
zaplatit:
- Nejprve je třeba si vytvořit dotaz. Dotaz - Nový. Přidáme všechny
tabulky. Z tabulky HOSPODY vybereme atribut nazev, z tabulky
OSOBY vybereme atribut prezdivka, z tabulky NAVSTEVY
vybereme atribut datum a protože chceme znát celkovou cenu, kterou
bude daná osoba daný den v dané hospodě platit, je třeba vynásobit cenu se
spotřebovaným množstvím = do dalšího sloupce zapíšeme platba: NAPOJE.CENA
* SPOTREBA.POCET. Protože chceme sečítat, kolik má kdo zaplatit,
klikneme nahoře na ikonu SUMY a v řádce Sourn v posledním sloupci
(platba) nastavíme SUM. Vyzkoušíme, zda máme dotaz dobře
nastavíme a uložíme ho pod názvem PLATIME.
- Nyní vytvoříme formulář pro zobrazování dat z tohoto dotazu:
- Formulář - nový. Vybereme dotaz PLATIME a klikneme na tlačítko
Průvodce formulářem.
- Vybereme typ = Tabelární a klikneme na tlačítko OK.
- Vybereme všechny pole a klikneme na tlačítko Další.
- Necháme Reliéfní styl. Klikneme na tlačítko Další.
- Necháme název PLATIME a klikneme na tlačítko Ukončit.
- Zobrazí se nám náhled formuláře, který stále ještě není uložen. Formulář
uložíme pod názvem PLATIME.
- Opět později můžeme vzhled formuláře vylepšit.
- Na závěr si ještě pořídíme hlavní formulář, ze kterého budou všechny
ostaní formuláře dostupné:
- Formulář - nový. Protože nebude nad žádnou tabulkou, klikneme hned na
tlačítko Prázdný formulář.
- Na plochu vložíme nápis "Co děláme rádi".
- Na plochu vložíme tlačítko kategorie Práce s tabulkami =
Zavřít formulář.
- Na plochu vložíme tlačítko kategorie Práce s tabulkami =
Otevřít formulář = OSOBY a nazveme ho Osoby.
- Přidáme tlačítko kategorie Práce s tabulkami = Otevřít
formulář = HOSPODY a nazveme ho Hospody.
- Přidáme tlačítko kategorie Práce s tabulkami = Otevřít
formulář = NAPOJE a nazveme ho Nápoje.
- Přidáme tlačítko kategorie Práce s tabulkami = Otevřít
formulář = NAVSTEVY a nazveme ho Návštěvy.
- Přidáme tlačítko kategorie Práce s tabulkami = Otevřít
formulář = PLATIME a nazveme ho Platby.
- Formulář uložíme pod názvem HLAVNI.
- Opět později můžeme vzhled formuláře vylepšit.
- Jak by asi mohla vypadat dokumentace
k takovéto semestrální práci.
- Později můžeme přidat ještě pár sestav a například makro autoexec pro
spuštění hlavního formuláře.
- Nyní stačí pořídit stručnou obrázkovou dokumentaci a jít se předvést svému
učiteli, kterého je třeba přesvědčit, že jsme aplikaci dělali samostatně =
učitel bude mít všetečné otázky.
Pokud najdete nějaké nesrovnalosti, zašlete je,
prosím, na e-mailovou adresu kotouc@civ.zcu.cz.