Kontakt:
- rjasko (zavinac) dcs.fmph.uniba.sk
Praktické cvičenia z databáz 2023/2024 ZS
Michal Rjaško, rjasko at dcs.fmph.uniba.sk
Ján Mazák, M255, mazak at dcs.fmph.uniba.sk
Domáce ulohy
Budú 3 a budú zverejnené na tomto mieste.
Domáca úloha č. 1
Cvičenie 4
Agregácia v SQL
- prezentácia
- Vytvorte si lokálnu databázu (SQLite/PostgreSQL) alebo sa pripojte na cvika.dcs.fmph.uniba.sk (návod viď predchádzajúce cvičenia).
- Stiahnite si nasledujúci súbor:
- queries_agg.sql --- zoznam dotazov, ktoré máte vypracovať; tento súbor budete editovať
- Vyriešte všetky zadané úlohy.
Agregácia v datalogu (nie je súčasťou hodnotenia na tomto predmete, ale je to užitočné cvičenie pre Úvod do databázových systémov)
- Stiahnite si do jedného adresára nasledujúce súbory:
- emp.pl --- databáza zamestnancov
- subtotal.pl --- pomocný súbor obsahujúci implementáciu predikátu subtotal v SWI-prologu
- query.pl --- pomocný súbor obsahujúci definíciu príkazu q(_) na formátovanie výsledkov dotazov
- queries_agg.pl --- zoznam dotazov, ktoré máte vypracovať; tento súbor budete editovať
- Vyriešte všetky zadané úlohy.
Cvičenie 3
SQL
- prezentácia
- Stiahnite si do jedného adresára nasledujúce súbory:
- emp.sql --- príkazy v SQL vytvárajúce databázu zamestnancov
- queries.sql --- zoznam dotazov, ktoré máte vypracovať; tento súbor budete editovať
SQLite
- Najprv vyskúšame pracovať s databázou SQLite, ktorá sa celá nachádza v jednom súbore na disku a nevyžaduje žiadnu konfiguráciu.
- Vytvorte databázu príkazom
sqlite3 --init emp.sql emp.db
- Overte, že databáza vznikla a obsahuje zmysluplné dáta:
sqlitebrowser emp.db &
alebo spustením sqlite3 emp.db
SELECT * FROM emp;
- Vyskúšajte výpočet dotazov:
sqlite3 emp.db < queries.sql
(Na výpočet dotazu môžete tiež využiť záložku Execute SQL v sqlitebrowseri.)
- Postupne do súboru queries.sql dopĺňajte požadované dotazy a priebežne kontrolujte ich správnosť.
- Po vyriešení niekoľkých úloh vyskúšajte prácu s databázou PostgreSQL (pozri inštrukcie ďalej).
- Porovnajte, či v oboch databázových systémoch vedú vaše dotazy k rovnakému výsledku.
- Po vyskúšaní práce s PostgreSQL si vyberte jeden z databázových systémov a pokračujte v riešení zvyšných úloh.
PostgreSQL
- Ako databázový server budeme používať PostgreSQL. Môžete si ho nainštalovať na vlastnom počítači alebo využiť server cvika.dcs.fmph.uniba.sk, kde je databáza emp už vytvorená (jej názov je zhodný s prihlasovacím menom užívateľa).
- Dokumentácia PostgreSQL: http://www.postgresql.org/docs/current/interactive/index.html
- Pripojte sa cez ssh na cvika.dcs.fmph.uniba.sk (username aj password ako do AISu) v dvoch oknách.
- V jednom okne editujeme súbor so zadaním, napr. vim queries.sql. Tento súbor si stiahnite napr. pomocou wget <url>.
- V druhom okne spúšťame výpočet dotazov príkazom
psql -f queries.sql
Práca s interaktívnym terminálom PostgreSQL
- Terminál spustíte príkazom psql.
- Následne môžete písať dotazy (ukončovať bodkočiarkou) a príkazy. Napr.
SELECT * FROM emp;
- Príkazy:
- Tento nástroj je užitočný pre rýchle preverenie stavu databázy a debugovanie (napr. vytvorenie a prezeranie dočasných tabuliek).
Datalog - dobrovoľné precvičovanie
- Stiahnite si do jedného adresára nasledujúce súbory:
- queries_library.pl --- zoznam dotazov, ktoré máte vypracovať; tento súbor budete editovať
- query.pl --- pomocný súbor obsahujúci definíciu príkazu q(_) na formátovanie výsledkov dotazov
- Postupujte podľa pokynov v súbore queries_library.pl. Začnite tvorbou databázy library.pl (ako vzor vám poslúži emp.pl z predošlého cvičenia).
Do databázy pridávajte riadky tak, aby vám to umožnilo otestovať správnosť vašich riešení pre jednotlivé dotazy.
- Môžete mať aj viac verzií databázy --- použitá databáza sa mení v riadku
:- consult('library.pl').
- Odporúčame sústrediť sa na vyriešenie úloh 1, 3, 6, 7, 8 už počas cvičenia a úloh 10, 11, 15, 16 počas cvičenia alebo doma.
Cvičenie 2
Datalog
- prezentácia
- Stiahnite si do jedného adresára nasledujúce súbory:
- emp.pl --- databáza zamestnancov
- queries.pl --- zoznam dotazov, ktoré máte vypracovať; tento súbor budete editovať
- query.pl --- pomocný súbor obsahujúci definíciu príkazu q(_) na formátovanie výsledkov dotazov
- Podľa návodu z minulého cvičenia (alebo "Práca s datalogom" v prezentácii) vyriešte úlohy v queries.pl.
Cvičenie 1
Prolog
- Na prvé pokusy využijeme online prostredie pre SWI-Prolog.
- prezentácia (prelistujte si prípadne aj obsiahlejší nenáročný materiál)
- Úlohy:
- Zadefinujte niekoľko faktov o rodinných vzťahoch pomocou predikátov male/1, female/1, parent/2 (číslo udáva aritu).
- Zapíšte pravidlá pre predikáty vyjadrujúce otca, sestru, starú mamu, bratranca.
- Vytvorte predikát ancestor/2 pre vzťah "byť predkom".
- Vytvorte predikát related/2 pre vzťah "byť pokrvným príbuzným".
Datalog na serveri cvika
- Prihláste sa na server cvika.dcs.fmph.uniba.sk pomocou ssh (linux, windows (PuTTY)).
- Pomocou wget si stiahnite potrebné súbory:
- query.pl --- pomocný súbor obsahujúci definíciu príkazu q(_) na formátovanie výsledkov dotazov
- emp.pl --- databáza zamestnancov EMP
- queries.pl --- Súbor obsahujúci zoznam dotazov, ktoré máte vypracovať. Tento súbor budete editovať.
Aj keď to na týchto cvičeniach nebudeme potrebovať, silne odporúčame naučiť sa tiež pracovať s nástrojmi scp, rsync a vyskúšať si prihlasovanie pomocou súboru s kľúčom miesto hesla.
-
- Na interpretáciu datalogových dotazov budeme používať SWI-prolog: spusťte
swipl -s queries.pl
- V inom okne editujte súbor queries.pl; odporúčame editory vim (pre konzolové prostredie) alebo kwrite (grafický mód, ak pracujete na lokálnom počítači v M217).
- Odporúčame mať v ďalšom okne otvorenú databázu (súbor emp.pl so zoznamom faktov), aby ste mohli kontrolovať výsledky dotazov.
- Po každej úprave súboru queries.pl (nezabudnite uložiť zmeny) spusťte v bežiacom SWI-prologu príkaz
make.
(aj s bodkou na konci, príkazy píšeme za otáznik). Preverte, či kompilátor nehlási chyby.
- Výpočet dotazu (v tomto príklade pre predikát job) spustíme takto:
q(job(J)).
Na názve premenných nezáleží, miesto J možno použiť trebárs _, musí však sedieť arita (počet argumentov). Predikát q() slúži na "pekné" formátovanie výstupu a elimináciu zdanlivých duplikátov.
- Praktické rady k SWI-prologu:
- Reťazce začínajúce veľkým písmenom systém pokladá za premenné. Konštanty sa začínajú malými písmenami. Ak to popletiete, bude to dávať podivne zlé výsledky.
- Na vyhodnocovanie aritmetických výrazov slúži operátor is, čiže napr. X is 2+3, nie X = 2+3 (v tom druhom prípade symbol = bude interpretovaný ako unifikácia termov a nedôjde k žiadnej aritmetickej operácii).
- Na porovnávanie čísel slúžia operátory <, =<, >, >=.
Hodnotenie
Za každú z 3 domácich úloh je max. 30 bodov.
Ďalšie body sa získavajú za riešenie úloh jednotlivých cvičení: za každé z 12 cvičení 0 alebo 1 bod. Z bodov udeľovaných za jednotlivé cvičenia je potrebné na úspešné absolvovanie predmetu získať aspoň 9.
Do 5 dní po každom cvičení treba riešenia zadaných úloh odoslať e-mailom na adresu rjasko (zavinac) dcs.fmph.uniba.sk.
Následne budú riešenia zbežne zhodnotené: v prípade dostatočnosti bude udelený 1 bod, v prípade nedostatočnosti bude študent vyzvaný riešenie doplniť (ak odovzdal aspoň niečo zmysluplné), na čo má ďalšie 3 dni, a potom dostane definitívne hodnotenie.
Nie je potrebné riešiť všetky úlohy; kritérium je mať (aspoň ako-tak správne) vyriešených cca 40% úloh z každej témy. Ak je sada úloh rozsiahlejšia, zvyčajne sú aspoň približne zoradené podľa obtiažnosti; ak chcete riešiť minimum úloh, vyberte si aj nejaké náročnejšie z druhej polovice. Odporúčaný postup je ísť zaradom a preskakovať úlohy, pri ktorých je jasné, že ich už vyriešiť viete (napr. sú podobné už vyriešeným úlohám a vidíte, v čom spočíva rozdiel a ako sa s ním vysporiadať).
- A --- 92 a viac bodov
- B --- 84 až 91 bodov
- C --- 76 až 83 bodov
- D --- 68 až 75 bodov
- E --- 60 až 67 bodov
- Fx --- menej ako 60 bodov