Zápočtovka

Ciele
  1. Napísať zápočtovku.
  2. Vyskúšať si použitie triggerov (spúšťačov) pre prácu s databázou.
Úvod

    Dnešné cvičenie je primárne venované zápočtovej písomke. Písomka prebieha na moodle.

    Termín pre opravnú zápočtovku bol určený na 12. týždeň. Upozorňujem, že pri hodnotení sa berie posledný pokus, tzn. ak sa rozhodneš pre opravný termín, tak sa bude brať hodnotenie z neho.

    V rámci písomky dostaneš 4 testové otázky teoretického charakteru z prvých prednášok po koniec selectov (tzn. po vnorené dopyty). Otázky sú buď testové s možnosťami (jedna a viac možných správnych odpovedí - aj keď je dovolené vybrať viacero správnych, ešte to neznamená, že otázka má viacero správnych odpovedí), alebo s krátkou odpoveďou (jeden textbox), kde je potrebné napísať napr. nejaké kľúčové slovo (napr. 'zadajte klauzulu (kľúčové slovo), pomocou ktorej viete vyfiltrovať záznamy výsledku selectu po zoskupení záznamov' bude mať odpoveď 'having').

    Druhá časť bude praktická a v rámci nej budeš musieť vyriešiť 3 úlohy, kde riešením je nejaký SQL select. Odpoveď na otázku zadávaš do moodlu, ktorý ju automaticky testuje voči vzorovej databáze. V rámci otázky bude definované, nad akou databázou máš pracovať, a otázka bude uvádzať aj informácie potrebné na pripojenie sa na vzorovú databázu, nad ktorou si môžeš testovať svoje riešenie. Pri písomke teda môžeš používať SQLDeveloper. NEMÔŽEŠ používať internet, a samozrejme ani žiadnu komunikáciu, či už so susedom, alebo kamarátom na facebooku. Porušenie týchto pravidiel môže byť riešene disciplinárnou komisiou. Pozor, pri zadávaní selectu nesmieš vložiť žiadny komentár - iba samotný select.

    Pred písomkou si doma prejdi ako sa nastavuje pripojenie v SQLDeveloperi, pretože to zrejme budeš potrebovať, a počas písomky už internet používať nebudeš môcť.

    Niekoľko dôležitých pokynov, ktoré budú platiť pri priebehu zápočtovky:

    • Študenti odložia všetky veci mimo dosah. Mobily vypnúť! Pokiaľ niekto čaká súrny hovor, nech si ho ide vybaviť a test urobí v 12. týždni v opravnom termíne.
    • Testy môžu robiť iba na "školských" počítačoch. Ak je počítačov málo, ostanú v miestnosti len tí, čo sa "zmestia". Ostatní počkajú na chodbe a urobia test následne.
    • Študent, ktorý dokončí test, zavrie prehliadač, odhlási sa z OS, odovzdá všetky poznámky, ktoré si urobil, opustí miestnosť a počká, kým skončia všetci ostatní. Následne sa všetci vrátia – cvičenie pokračuje.
    • Správne odpovede bude možné prekonzultovať, ale až po teste.

Postup
  1. Úloha: Podľa pokynov cvičiaceho sa prihlás do moodlu na písomku a vyrieš ju.
    Poznámka: V odpovediach, kde máš zadať SELECT, uvádzaj iba SELECT, bez ; na konci a bez nejakých komentárov.
  2. Ak ti po písomke ostal čas, tak aby si nerušil kolegov, pokús sa vyriešiť nasledovnú úlohu. Triggery, alebo spúšťače, slúžia na automatické reagovanie na rôzne udalosti, ktoré môžu v databáze pri jej behu nastať. Vďaka tomu vieme:
    • generovať odvodené hodnoty,
    • automaticky vytvárať logy o prístupe k databáze,
    • vynucovať si integritu,
    • atď.
    Vďaka triggerom totiž vieme databáze povedať, že ak nastane taká a taká konkrétna udalosť, je ptorebné vykonať takú a takú akciu ako opatrenie (napr. overiť si, či vkladané údaje neporušujú integritu, alebo vytvoriť log o danej udalosti, a pod.).

    Na minulom cvičení si vytvoril procedúru, pomocou ktorej si dokázal zmazať vybranú faktúru aj so všetkými položkami, ktoré na nej boli. Dnes začneme tým, že napíšeš trigger, ktorý ti umožní zmazať faktúru priamo použitím SQL príkazu DELETE.

    Úloha: Napíš trigger, ktorý sa bude viazať na udalosť mazania z tabuľky Invoice. Ak sa má zmazať nejaká položka z tabuľky Invoice, trigger zároveň zmaže všetky položky z InvoiceLine, ktoré sa na ňu odkazujú. Vďaka tomu bude zachovaná referenčná integrita.
    Poznámka: Pre overenie správnej implementácie si do tabuľky Invoice a InvoiceLine vlož nové údaje, ktoré budeš môcť mazať. Na to môžeš využiť procedúru buyTracks, ktorú si mal napísať minule.
Zdroje
  1. Prednaska 19: PostgreNoSQL
  2. Prezentacia o NoSQL od Estenu
  3. Priklady k prezentacii od Estenu
Doplňujúce úlohy
    Úloha:

    Chinook

    Uveď v bajtoch veľkosť playlistu 'Grunge' a zároveň jeho cenu v dolároch. Pri tom predpokladaj, že cena playlistu je cena všetkých jeho skladieb. Pre overenie vedz, že jeho cena je 14.85.
    Úloha:

    Chinook

    Ktoré playlisty neobsahujú žiadnu skladbu od interpretov (artist) 'Black Sabbath' a 'Chico Buarque'? Pre overenie vedz, že ich je 13.
comments powered by Disqus