Zápočtovka

Ciele

  1. Absolvovať zápočtový test.
  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 rozhodnete pre opravný termín, tak sa bude brať hodnotenie z neho.

V rámci písomky dostanete 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 potrebné vyriešiť 3 úlohy, kde riešením je SQL select. Odpoveď na otázku zadávate do moodlu, ktorý ju automaticky testuje voči vzorovej databáze. V rámci otázky bude definované, nad akou databázou pracovať, a otázka bude uvádzať aj informácie potrebné na pripojenie sa na vzorovú databázu, nad ktorou si môžete testovať svoje riešenie. Pri písomke teda môžete používať DataGrip. NIE JE DOVOLENÉ používať iné zdroje a samozrejme ani žiadnu komunikáciu, či už so spolužiakom, alebo kamarátom cez sociálne siete. Porušenie týchto pravidiel môže byť riešene disciplinárnou komisiou. Pozor, pri zadávaní selectu nesmiete vložiť žiadny komentár - iba samotný select.

Pred písomkou si zopakujte ako sa nastavuje pripojenie v DataGrip-e, pretože to zrejme budete potrebovať.

Postup

Krok 1

Úloha 1.1

Podľa pokynov sa prihláste do moodlu na test a vyriešte ho.

Poznámka

V odpovediach, kde je potrebné zadať SELECT, uvádzajte iba SELECT, bez ; na konci a bez nejakých komentárov.

Krok 2

Triggery, alebo spúšťače, slúžia na automatické reagovanie na rôzne udalosti, ktoré môžu v databáze pri jej behu nastať. To umožňuje:

  • generovať odvodené hodnoty,
  • automaticky vytvárať logy o prístupe k databáze,
  • vynucovať si integritu,
  • atď.

Vďaka triggerom je možne databáze povedať, že ak nastane taká a taká konkrétna udalosť, je potrebné vykonať takú a takú akciu ako opatrenie (napr. overiť, či vkladané údaje neporušujú integritu, alebo vytvoriť log o danej udalosti, a pod.).

Úloha 2.1

Napíšte 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žte nové údaje, ktoré budete môcť mazať.

Zdroje

  1. Prednášky
  2. PosgreSQL tutorial

Doplňujúce úlohy

Úloha A.1

Chinook

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

Úloha A.2

Chinook

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