- Integretní omezení (IO) jsou tvrzení o datech, která musí databáze splňovat. Jaká data jsou v DB povolena a jaká ne. Problematiku již znáte ze svých semestrálek BI-DBS.
- Pokud to lze, snažíme se je implementovat pomocí standardních prostředků databáze (SQL v našem případě). Takovým IO říkáme deklarativní. Jsou to domény atributů, NOT NULL, PRIMARY | UNIQUE | FOREIGN KEY a CHECK.
- Tohle jste dělali v semestrálce z BI-DBS.
- Pokud to nelze, musíme využít dalších prostředků na straně DB serveru - konkrétně TRIGGERS | PACKAGES | PROCEDURES | FUNCTIONS v případě PL/SQL nebo implementovat taková IO až na úrovni aplikace (což může přinášet komplikace).
- Taková IO jste v semestrálce z BI-DBS nechali pouze na úrovni popisu při tvorbě ER schématu a dále jste je neřešili.
- Cílem tohoto úkolu je nad vaším vlastním schématem formulovat dvě složitější integritní omezení. Jedno implementovat pomocí TRIGGERU a jedno pomocí PACKAGE v jazyku PL/SQL.
- Můžete (ale nemusíte) implementovat právě ta IO, která jste v semestrálce z BI-DBS neřešili a nechali je jen na úrovni návrhu.
- Ve svém schématu zformulujte dvě složitější IO (taková, která nejde implementovat deklativně v SQL).
- Jedno z nich implementujte pomocí TRIGGERu v PL/SQL.
- Druhé implementujte pomocí PACKAGE v PL/SQL. Zde si musíte uvědomit:
- že uživateli/aplikaci (v praxi) zakážete přímé DML operace nad dotčenou tabulkou/tabulkami,
- to v našem školním prostředí nedokážete proto si to jen myslete,
- a místo toho mu poskytnete PACKAGE, který bude mít funkce/procedury, kterými tyto DML operace nahradíte.
- Pro každou implementacaci vypracujte testovací scénář (prakticky unit test), kterým ověříte, že vaše řešení
- funguje v pozitivním (data na vstupu či při změnách jsou povolena)
- i negativním případě (data na vstupu či při změnách nejsou povolena).
- Testovací scénáře spusťte a vhodným způsobem (jako v minulém příkladu) dokumentujte výstup testování.
- Implementace IO 1
- Impplementace IO 2
- Testovací scénář IO 1
- Testovací scénář IO 2
-- log soubory nebo adresáře provedení obou testovacích scénářů
- ty prostě přidejte do projektu a já si je dohledám
Pokud vám není jasné, co se myslí těmi testovacími scénáři a doložením toho, že fungují, můžete se inspirovat zde.
- max 6 bodů
- 28.3. 24:00 (deadline jsem prodloužil, protože jsem zadání připravil pozdě)