Databáze
Témata k procvičování v distančním studiu
Doc. Dr. Vladimír Homola, Ph.D.
První kapitola procvičuje práci v prostředí databázového programu. Zároveň testuje alespoň minimální schopnost analýzy úlohy při stanovení typů a významu jednotlivých datových polí. Podstatný je pak úkol vytvoření relací a správné stanovení jejich vlastností.
Na první kapitolu pak navazují příklady druhé kapitoly, situačně (a tedy i datově) totožné. Procvičují zápis a funkčnost dotazů jakožto příkazů SQL. Proto už při řešení úloh první kapitoly by na to měl být brán ohled, např. při volbě jmen datových polí.
Třetí kapitola obchází nutnost kompletní analýzy a vytvoření databáze. Simuluje velmi častou situaci u reálných zaměstnavatelů: Zaměstnance posadí k aktuálním firemním datům, sdělí požadované dotazy, a ty zaměstnanče získej odpovědi. Tak jsou ve třetí kapitole postaveny jednotlivé příklady k procvičení: tady je databáze, tady jsou formulovány verbálně dotazy - a jaképak jsou SQL odpovědi?
Poznámka: Pokud se v zadáních objevuje text podobný tomuto:
... máte spoustu zaměstnanců (asi 10) ...
není to pokus o nepovedený šprým. Protože se předpokládá, že některý z
obdobných příkladů budou studenti řešit u zkoušky a u ní si budou data
vymýšlet sami, je to pro ně vodítko: kolik asi dat by si měli vymyslet,
aby to prokázalo funkčnost jejich řešení.
Poznámka a upozornění: V jednotlivých příkladech této první kapitoly jsou úkoly 2 a 3 pro procvičení práce s datovým listem, nikoliv s dotazy. Naopak úkoly 5 a 6 jsou téměř totožně znějící úkoly, ale právě na dotazy. Zde se procvičuje práce v grafickém návrhovém prostředí dotazu, nikoliv zápisem SQL.
V distanční výuce bylo odkazováno na skripta Homola, Drozdová: Databáze - upraveno pro distanční výuku (2020), ke stažení jako DBASGMT.PDF zde. Úloh v této první části procvičování se týkají následující kapitoly skript:
Jste majitelem rozsáhlé firmy mající spoustu zaměstnanců (asi 10) pracujících v mnoha odděleních (asi 3). Vytvořte databázi, která vám umožní sledovat u zaměstnanců alespoň jméno, datum nástupu, plat a oddělení, u oddělení alespoň název, datum zřízení, předpokládané datum zrušení a celkový zisk v [mil.Kč]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem obrovské automobilky, která prodala mnoho aut (asi 10) nejrůznějších modelů (asi 3) různých barev. Vytvořte databázi, která vám umožní sledovat u každého prodeje alespoň datum prodeje, jméno zákazníka, prodaný model a jeho cenu a barvu, u každého modelu alespoň jeho obchodní jméno, datum náběhu a (předpokládaného) ukončení výroby, a váhu v [Kg]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem rozsáhlé knihovny mající spoustu knih (asi 10) od různých autorů nakoupených v mnoha knihkupectvích (asi 3). Vytvořte databázi, která vám umožní sledovat u knih alespoň titul, jméno autora, cenu, datum nákupu a knihkupectví; u knihkupectví alespoň název, datum poslední a předpokládané další inventury, a počet nabízených titulů. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste náruživým rybářem, který strávil spoustu dní (asi 10) u mnoha rybníků (asi 3). Vytvořte databázi, která vám umožní sledovat, který den jste u kterého rybníka nalovil kolik ryb a kolik hodin jste tam ten den proseděl. U rybníků sledujte alespoň název, největší hloubku v [m], a datum posledního a datum předpokládaného následujícího vypuštění. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem obrovské vinotéky mající spoustu lahví vín (asi 10) mnoha odrůd (asi 3). Vytvořte databázi, která vám umožní sledovat u jednotlivých lahví vín alespoň obchodní název vína vytištěný na etiketě lahve, datum sklizně, cenu této lahve, a název odrůdy; u odrůd alespoň název, datum vysazení, datum první kvalitní sklizně a celkovou plochu v [ha]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste hudebním fandou a máte neuvěřitelné množství hudebních CD alb (asi 3). Na každém z nich je spousta skladeb (tak tři, čtyři). Vytvořte databázi, která vám umožní sledovat u jednotlivých skladeb alespoň název skladby, interpreta, dobu trvání v minutách, album a pořadí na CD nosiči, u každého alba alespoň název alba, datum vydání, datum zakoupení a cenu v Kč. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem proslulého penzionu majícího množství pokojů (asi 3) a ubytováváte spoustu hostů (asi 10). Vytvořte databázi, která vám umožní u hostů sledovat alespoň jméno, datumy příjezdu a odjezdu, zaplacenou zálohu a pokoj, kde jste je bytovali; u pokojů alespoň označení (apartmán, turistický, business), počet lůžek, cenu za noc a zda má připojení na Internet. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste neúnavný turista, který ve svém hornatém regionu s množstvím pohoří (asi 3) vystoupá snad na všechny jejich vrcholy (celkem asi 10). Vytvořte databázi, která vám umožní sledovat u vrcholů alespoň název, nadmořskou výšku v metrech, ve kterém je pohoří, datum poslední návštěvy a kolik km je od vašeho domova; u pohoří alespoň název, rozlohu v km2, nejvyšší nadmořskou výšku, a zda je v něm CHKO. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Poznámka: Přesně opačná situace než v předchozí kapitole. Jde skutečně o procvičení tvorby kompletního příkazu SQL vytvořeného vlastní hlavou. Takže, prosím, ne že si dotaz sestavím v grafickém prostředí, pak se podívám na vygenerovaný text SQL a jen si ho zkopíruju :-(
Stejný zdroj jako shora ke stažení zde. Úloh v této druhé části procvičování se týkají následující kapitoly skript:
Jste majitelem rozsáhlé firmy mající spoustu zaměstnanců (asi 10) pracujících v mnoha odděleních (asi 3). Vytvořte databázi, která vám umožní sledovat u zaměstnanců alespoň jméno, datum nástupu, plat a oddělení, u oddělení alespoň název, datum zřízení, předpokládané datum zrušení a celkový zisk v [mil.Kč]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem obrovské automobilky, která prodala mnoho aut (asi 10) nejrůznějších modelů (asi 3) různých barev. Vytvořte databázi, která vám umožní sledovat u každého prodeje alespoň datum prodeje, jméno zákazníka, prodaný model a jeho cenu a barvu, u každého modelu alespoň jeho obchodní jméno, datum náběhu a (předpokládaného) ukončení výroby, a váhu v [Kg]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem rozsáhlé knihovny mající spoustu knih (asi 10) od různých autorů nakoupených v mnoha knihkupectvích (asi 3). Vytvořte databázi, která vám umožní sledovat u knih alespoň titul, jméno autora, cenu, datum nákupu a knihkupectví; u knihkupectví alespoň název, datum poslední a předpokládané další inventury, a počet nabízených titulů. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste náruživým rybářem, který strávil spoustu dní (asi 10) u mnoha rybníků (asi 3). Vytvořte databázi, která vám umožní sledovat, který den jste u kterého rybníka nalovil kolik ryb a kolik hodin jste tam ten den proseděl. U rybníků sledujte alespoň název, největší hloubku v [m], a datum posledního a datum předpokládaného následujícího vypuštění. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem obrovské vinotéky mající spoustu lahví vín (asi 10) mnoha odrůd (asi 3). Vytvořte databázi, která vám umožní sledovat u jednotlivých lahví vín alespoň obchodní název vína vytištěný na etiketě lahve, datum sklizně, cenu této lahve, a název odrůdy; u odrůd alespoň název, datum vysazení, datum první kvalitní sklizně a celkovou plochu v [ha]. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste hudebním fandou a máte neuvěřitelné množství hudebních CD alb (asi 3). Na každém z nich je spousta skladeb (tak tři, čtyři). Vytvořte databázi, která vám umožní sledovat u jednotlivých skladeb alespoň název skladby, interpreta, dobu trvání v minutách, album a pořadí na CD nosiči, u každého alba alespoň název alba, datum vydání, datum zakoupení a cenu v Kč. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitelem proslulého penzionu majícího množství pokojů (asi 3) a ubytováváte spoustu hostů (asi 10). Vytvořte databázi, která vám umožní u hostů sledovat alespoň jméno, datumy příjezdu a odjezdu, zaplacenou zálohu a pokoj, kde jste je bytovali; u pokojů alespoň označení (apartmán, turistický, business), počet lůžek, cenu za noc, a zda má připojení na Internet. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste neúnavný turista, který ve svém hornatém regionu s množstvím pohoří (asi 3) vystoupá snad na všechny jejich vrcholy (celkem asi 10). Vytvořte databázi, která vám umožní sledovat u vrcholů alespoň název, nadmořskou výšku v metrech, ve kterém je pohoří, datum poslední návštěvy a kolik km je od vašeho domova; u pohoří alespoň název, rozlohu v km2, nejvyšší nadmořskou výšku, a zda je v něm CHKO. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitel rozsáhlé autobusové přepravy na mnoha linkách (asi 3) se značným množstvím autobusů, každý jezdí pořád na stejné lince (asi 3 až 4 na každé lince). Vytvořte databázi, která vám umožní sledovat u každého autobusu alespoň evidenční číslo, linku, počet míst k sezení, počet míst celkem, zda je bezbariérový a max. rychlost; u linek alespoň číslo, délku v km, počet zastávek a datum zprovoznění. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste majitel obrovské obchodní firmy mající spoustu kanceláří (asi 3) vybavených dohromady množstvím nábytku (asi 10 kusů). Vytvořte databázi, která vám umožní sledovat u každého kusu nábytku alespoň název, cenu, místnost, váhu v kg a datum pořízení; u každé místnosti alespoň číslo, způsob využití, počet zaměstnanců a plochu v m2. Databázi koncipujte jako dvoutabulkovou, mezi tabulkami vytvořte vazbu (relaci).
Jste vášnivou čtenářkou. Doma máte řadu knih (asi patnáct) od různých autorů (asi od čtyřech), které jste nakoupila v různých dnech v různých knihkupectvích (asi čtyřech) za různou cenu. Knihy vydávají různá vydavatelství. Každý autor má uzavřenou exkluzivní smlouvu s jediným vydavatelem, ve které se zavazuje vydávat své knihy pouze u něj a oznámit to případným jiným vydavatelům - jinak jim hrozí vymahatelná pokuta za porušení vydavatelských práv za každý kus knihy prodané jiným než smluvním vydavatelem.
Stáhněte a otevřete databázi
a sestavte v ní dotazy, které odpoví na otázky:
Jste úspěšnou modelkou. Různé evropské agentury (asi čtyři) se zprostředkovatelskou službou po celém světě vás angažují pro různé módní návrháře (asi pro čtyři) z různých zemí. Ti jsou na rozdíl od agentur peciválové, své modely prezentují jen ve své zemi. Za zprostředkování každé akce pro některého návrháře, trvající i několik dnů, platíte každé agentuře jednorázově jí požadovaný poplatek. Naopak od každého návrháře dostáváte za každý den jeho akce jím nabízenou denní odměnu.
Stáhněte a otevřete databázi
a sestavte v ní dotazy, které odpoví na otázky:
Pokud se některá akce koná alespoň jeden den v roce 2022, považujte ji celou za akci roku 2022. Pokud se některá akce koná alespoň jeden den v únoru, považujte ji celou za únorovou.
Dotazy řešte kartézským součinem nebo pomocí join, pro zdokonalení si nejlépe vyzkoušejte obojí.
Jste ředitelem prestižního vzdělávacího ústavu, který ve svých mnoha třídách (asi čtyřech) různých ročníků (asi třech) vyučuje nepřeberné davy studentů (dohromady asi deset). Pro jejich závratný počet můžete vytvářet i několik tříd stejného ročníku a stanovujete pro každou třídu maximální počet studentů a jejich třídního učitele. Protože ve vašem městě není tak velká budova, která by pojala všechny vaše třídy, jsou třídy umístěny na různých místech v různých městských čtvrtích.
Studenti nejen studují, ale také vykonávají zkoušky z mnoha náročných předmětů (asi třech) s různým výsledkem. Zkoušející jsou odborníci minimálně ve zkoušených předmětech, ale vůbec to nemusí být třídní učitelé.
Stáhněte a otevřete databázi
a sestavte v ní dotazy, které odpoví na závažné otázky, jako např.:
Jste fanda do nakupování, který v republice prošmejdí kdejaký obchod (asi 5) a koupí kdejaký druh (asi 3) zboží. Zároveň jste ale pečlivý systematik, který nejen své nákupy (asi 15) z účtenek vzorně eviduje, ale také nákupy plánuje. Musí tedy počítat s tím, že obchody s prodejní plochou nad 200 m2 mají podle zákona o svátcích zavřeno. Jako zkušený nakupovatel už máte prodejní plochy vámi navštěvovaných obchodů zmáknuté.
Stáhněte a otevřete databázi
a sestavte v ní dotazy, které odpoví na několik otázek:
Rev. 6 / 2024