Stránka archivovna (Databázové systémy - 2022/2023 ZS)
Základní informace
Zdroje:
- Stránka předmětu ve STAGu.
- Informace k předmětu na stránkách přednášejícího.
V akademickém roce 2022/2023 vedu tato cvičení:
V případě jakýchkoliv dotazů ke cvičením nebo jejich obsahu mě neváhejte kontaktovat (kontakty zde).
Účast na cvičeních není povinná, ale důrazně ji doporučuji.
Zápočty
Pro získání zápočtu potřebujete napsat zápočtovou písemku v druhé polovině semestru a odevzdat zápočtový projekt splňující požadavky. Na zápočet budete potřebovat alespoň 70 bodů z celkových 100.
Zápočtová písemka
- Z písemky lze získat 50 bodů.
- Termín: 21.11.2022 (na cvičení)
- Obsah:
- Relační algebra, její operace a odvozené operace, odpovídající operace na tabulkách. Jejich provedení na datech, zápis v SQL, …
- SQL dotazy (zapsat dotaz odpovídající požadavkům, zapsat výsledek zadaného dotazu, …)
- Funkční závislosti, BCNF, normalizace - hledání platných, neoplatných závislotí, dekompozice, …
- Obecně se může objevit cokoliv, co jste probírali na cvičení/přednášce. Zejména pak věci, které jste viděli na tabuli/projektoru na cvičení. Dobrým vodítkem může být přeheldový seznam témat na cvičení níže.
Zápočtový projekt
V druhé polovině semestru dostanete tři zápočtové úkoly, co 14 dní jeden (31.10., 14.11. a 28.11.). Na vypracování každého úkolu budete mít maximálně dva týdny (tj 1. úkol do 13.11. 18.11., 2. úkol do 27.11. a 3. úkol do 11.12.; vždy do 23:59 CET). Za každou započatou hodinu případného zpoždění přijdete o 2 body.
Úkoly odevzdávejte emailem na tomas.urbanec@upol.cz s předmětem “DASY zápočtový úkol” (tento předmět dodržujte a používejte jej jen pro odevzdávání úkolů - emaily jsou automaticky zpracoávány).
Za 1. úkol lze získat 15 bodů, za 2. úkol 15 bodů a za 3. úkol 20 bodů. Tedy dohromady až 50 bodů.
První zápočtový úkol
Termín:
13.11.2022, 23:59 CETVzhledem k technickým potížím na síti katedry/fakulty termín posunut na 18.11.2022, 23:59 CET.Odevzdávejte emailem na tomas.urbanec@upol.cz s předmětem “DASY zápočtový úkol”.
Lze získat až 15 bodů.
Zadání:
Právě jste nastoupili do novho startupu, který chce udělat díru do světa herního byznysu spojením sociální sítě a herní platformy. Za jejich databázovým specialistou (vámi) tedy přišli s následujícím úkolem:
Navrhněte a implementujte databázi (v PostgreSQL) pro herní platformu, která uchovává informace o hrách a zákaznících. Zákaznící mohou být hráči nebo vydavatelé hry. U zákazníků evidujeme osobní údaje (tj alespoň jméno, příjmení, přezdívka). U her evidujeme název, vydavatele a cenu. V plánu je i podpora pro ještě nevydané hry, u kterých se všechny údaje mohou změnit. Databáze musí být dále schopna ukládat údaje o tom, kdo jakou hru vlastní či vydává, o přátelstvích mezi jednotlivými uživateli a komentářích hráčů ke hrám. Databázi navrhujte v souladu s principy, které jste se naučili na přednáškách a cvičeních DASY.
Nad navrženou databází dále napište v SQL dotazy pro následující údaje:
- Pro dva zvolené uživatele (pro ukázku si vyberte sami) chceme všechny hry, které si spolu mohou zahrát (tj ty, které vlastní oba dva).
- Pro zadaného uživatele (pro ukázku si vyberte sami) chceme tři nejdražší hry, které vlastní, a jejich vydavatele.
- Pro zadaného uživatele (pro ukázku si vyberte sami) chceme všechny hry, které komentoval některý z jeho přátel, spolu s odpovídajícím komentářem a přezdívkou jeho autora.
Druhý zápočtový úkol
Termín: 27.11.2022, 23:59 CET.
Odevzdávejte emailem na tomas.urbanec@upol.cz s předmětem “DASY zápočtový úkol”.
Lze získat až 15 bodů.
Zadání:
Plány výše zmíněného startupu ve vás nevzbudily důvěru, a tak jste to po dvou týdnech raději zkusili na volné noze. Váš první klient je lokální autobazar, který má problémy s ukládáním dat o svých vozech, obchodech, zaměstnancích a zákaznících. Jejich předchozího programátora naneštěstí přejel autobus. Navíc byl tento programátor tak svědomitý, že všechny kódy a data měl na zašifrovaném disku, ke kterému nikomu nesdělil heslo. Bus factor roven jedné a velký problém je na světě.
Vašim úkolem je tedy nejprve z jediné existující kopie databáze zjisit, jaká data a jak jsou v ní uložena. Poté identifikovat a zdůvodnit chyby v návrhu této databáze a navrhnout, jak se tyto chyby dají vyřešit.
Problémy, o kterých mluvil zadavatel:
- Problémy při ukládání více stejných aut. V databázi jsou všechna, ale nevíme, které je které.
- Máme v databázi auta, u kterých nevíme, kde se vzala - není uložen prodejce.
- Zaměstnáváme otce a syna se stejným jménem, v databázi asi nejsou nijak rozlišeni.
- V databázi máme několik vozů, u kterých není jasné, komu jsme je prodali - databáze vrací více možností.
- Možná tam je chyb více. Toto jsou jen příklady, na které narazili v poslední době.
Zadavatel si je vědom, že některé z chyb nejspíš vznikly při zadávání dat zaměstnanci, ale slyšel, že relační databáze jsou schopny nějak zabránit i takovým problémům. Dále by se rád vyhnul i dalším chybám, ke kterým by v aktuálním stavu mohlo dojít (tj ne všechny možné chyby musí být obsaženy už v aktuálních datech).
Poznámky k řešení:
- Úkolem není tyto opravy provést a demonstrovat, pouze chyby najít a zdokumentovat. Výstupem tedy bude popis struktury databáze, analýza nalezených problémů a stručný návrh řešení pro každý z nich. Nikoliv kód. Ukázky kódu samozřejmě v analýze použít můžete. U každého identifikovaného problému rovněž uveďtte příklad, kde by se projevil (stačí slovně). Z didaktických důvodů uvádějte i jak jste postupovali (stručně).
- V databázi je hodně věcí špatně. Pro dobrý bodový zisk není nutné najít a vyřešit úplně všechno, ale prokázat, že jste schopni identifikovat různorodé typy chyb a že víte, jak je řešit.
- Některé chyby nejdou vyčíst přímo z obsažených dat. Uvažujte i nad dalšími problémy, které by v takto navržené databázi mohly vzniknout.
Daná databáze
bude po vyřešení aktuálních problémů na katederní/fakultní sítije dostupná na database.inf.upol.cz.Pokud by odstranění potíží trvalo příliš dlouho, posunu termín.Databáze je nazvaná autobazar. Všichni máte přístup pro čtení dat. Práci značně usnadní vhodné použití utility psql přímo na serveru.
Třetí zápočtový úkol
- Termín: 11.12.2022, 23:59 CET.
- Odevzdávejte emailem na tomas.urbanec@upol.cz s předmětem “DASY zápočtový úkol”.
- Lze získat až 20 bodů.
- Zadání
Plagiátorství
Z webu katedry:
“Pokud se student dopustí plagiátorství, opisování při písemném testu, opisování při práci na domácím úkolu nebo se jiným způsobem pokusí o podvod, zahájí s ním vedoucí katedry kárné řízení. Pokud se takové jednání studenta opakuje, vedoucí katedry navrhne děkanovi fakulty vyloučit studenta ze studia.”
Plán cvičení
Plánovaný obsah jednotlivých cvičení. Během semestru bude doplňován dle přednášek.
- 19.9.2022 obsah | ukázka
- Relace a tabulky
- PostgreSQL
- Práce se serverem database.inf.upol.cz
- Prostředí psql
- 26.9.2021 obsah | ukázka
- Množinové operace
- Restrikce
- UPDATE a DELETE
- 3.10.2022 obsah | ukázka
- Projekce
- Přirozené spojení
- Kartézský součin
- Výraz SELECT
- 10.10.2022 obsah
- Relační algebra
- Relační dělení
- Klíče
- 17.10.2022 obsah | ukázka
- Funkční závislosti
- Boyce-Coddova normální forma
- Normalizae databáze
- Virtuální tabulky/pohledy
- 24.10.2022 obsah
- Pohledy
- Výchozí hodnoty
- Integritní omezení
- 31.10.2022 obsah | ukázka
- Skalární výrazy
- Operace rozšíření
- Singletony a operátor IN
- Pořadí n-tic a ORDER BY
- Části tabulky a LIMIT/OFFSET.
- Zadání prvního úkolu
- 7.11.2022 obsah
- Agregace a shlukování
- Agregační funkce v PostgreSQL
- Klauzule GROUP BY a HAVING výrazu SELECT
- 14.11.2022 obsah
- Vykonávání a analýza dotazu
- Indexy
- Zadání druhého úkolu
- 21.11.2022
- Písemka
- 28.11.2022 obsah
- Transakce
- Zpětná vazba k prvním dvěma úkolům
- Výsledky písemky
- Zadání třetího úkolu
- 5.12.2022
- Cvičení odpadá kvůli rektorskému volnu
- 12.12.2022
- Jiné než relační databáze
- Zpětná vazba
- Opravná písemka