Tomas Plachetka

Comenius University > Faculty of Mathematics, Physics and Informatics > Department of Computer Science

Research
Teaching
Publications
Contact

Uvod do databazovych systemov 2014/2015 Zima

Oznamy (tie najviac aktualne su na prvych miestach)

  • Terminy skusok (na termin sa treba vopred elektronicky prihlasit, od 30.12.2014 do 24 hodin pred skuskou):
  • Znamky sa zapisuju do indexov v skuskovych terminoch, na zaciatku pisomky.
  • Na skusku treba priniest index, ISIC kartu, dostatok cistych papierov a pero. Ziadne ine pomocky nie su dovolene. Vsetky elektronicke zariadenia, vratane mobilnych telefonov, budu pocas testu vypnute. Opisovanie, akakolvek komunikacia pocas testu alebo iny pokus o podvod znamena neuspesne absolvovanie kurzu (Fx). Jedinou vynimkou je komunikacia s ucitelom za ucelom upresnenia zadania ulohy.
  • Skuska prebieha formou pisomneho testu, podmienkou prihlasenia sa na skusku je aspon 40% hodnotenie prace pocas semestra. Na test sa treba najneskor 1 den vopred elektronicky prihlasit. Ak sa Vam z nejakeho dovodu nedari prihlasit, poslite mi email. Prihlasenie na test je zavazne (t.j. termin, na ktory ste prihlaseny, sa pocita aj ked ten test nepisete). Ak viete ze na termin nepridete, prosim odhlaste sa z neho (ak mate problem s odhlasenim, dajte mi vediet cim skor cez email).
  • Pri hodnoteni sa berie do uvahy len posledny termin skusky.
  • Hodnotenia skuskovych testov budu priebezne zverejnovane na tejto web stranke. Ak s tym nesuhlasite, dajte mi prosim vediet.
  • V dnoch 12.11. a 13.11. budu cvicenia v terminalkach, v rovnakom case ako cvicenia v akvariach. Cvicenie DB4 Stvrtok 14:00, bude v terminalke I-H6, ostatne cvicenia budu v terminalke M-208 (tiez oznacovana ako T4).
  • Nutnou podmienkou kvalifikacie na skusku je praca pocas semestra, ktora sa hodnoti priebezne ("zapocet", vyjadreny v percentach). Hodnoti sa najma priprava na cvicenia, formou kratkych testov na zaciatku kazdeho cvicenia. (V priebehu semestra pribudnu mozno dalsie hodnotene povinnosti, napr. domace ulohy.) "Zapoctove" hodnotenie ma pre vypocet znamky rovnaku vahu ako skuska, ktora ma formu pisomneho testu. Na uspesne absolvovanie kurzu treba ziskat z kazdeho ciastkoveho hodnotenia (zapocet, skuska) aspon 40% a zaroven z oboch v priemere aspon 50%. Znamku pocita tento program v C.
  • Ak ste studentom tohto kurzu, prihlaste sa do rozvrhovacieho systemu cviceni, zmente svoje heslo (zvolte si heslo, ktore nezabudnete) a najdite svoj rozvrh pre teoreticke a prakticke cvicenia. Ak ste spokojny so zaradenim do skupiny, nerobte nic. Ked je to nutne, tak skupinu zmente (pozor, pokus o zmenu moze viest k strate miesta v povodnej skupine). System nedovoli okamzity presun do skupiny s naplnenou kapacitou, ale pamata si Vase preferencie. Prihlasovacie meno (login) je Vase priezvisko (ASCII), vsetky pismena male; pociatocne heslo je zhodne s prihlasovacim menom. Ak neviete ako sa prihlasit, alebo ak sa Vam to nedari, dajte mi vediet cez email. Tiez mi prosim dajte vediet, ak v systeme objavite nejaku chybu.
  • Cvicenia su vzdy v akvariach - s vynimkou jedneho "praktickeho tyzdna", ktory bude vopred oznameny na prednaske a na tejto web stranke.

Prednaska

T. Plachetka: Streda 11:30, 2h, B

  • Uvodna prednaska, 24/9/2014
    • Organizacia kurzu
    • Historia, motivacia
    • Knihy, casopisy, konferencie
    • Ucel databaz, charakteristika DB aplikacii
    • Trojstupnova ANSI/SPARC architektura, koncepcne datove modely
    • Entitno-relacny, relacny a navigacny datovy model
  • Relacny kalkul, Datalog, SQL, 1/10/2014
    • Relacie a predikaty
    • Dotazy
    • Relacny kalkul
    • Datalog
    • SQL ("kanonicka" forma vznikajuca prekladom z Datalogu)
  • Viac o SQL, 15/10/2014, 22/10/2014
    • DDL (Data Definition Language) a DML (Data Manipulation Language)
    • DML: Syntax a semantika SELECT
    • SELECT: selekcia, projekcia, premenovanie, ORDER BY, UNION/INTERSECT/EXCEPT, INNER JOIN, OUTER JOIN, NULL hodnoty a 3-hodnotova logika, poddotazy, GROUP BY/HAVING, duplikaty v tabulkach
    • DDL: typy/DOMAIN, vytvorenie/odstranenie/modifikacia tabulky, default hodnoty, indexy, VIEW, aktualizacia cez VIEW
  • Relacna algebra, 22/10/2014
    • Zakladne operatory nad mnozinami
    • Niektore zakony relacnej algebry
    • Optimalizacia na urovni relacnej algebry
    • Multimnoziny (bags) a operatory nad multimnozinami
    • Grupovanie a agregacia
    • Semantika SELECT... FROM... WHERE... GROUP BY... HAVING
    Agregacia a rekurzia v dotazovacich jazykoch, 29/10/2014, 5/11/2014
    • Grupovanie a agregacia v SQL, relacnej algebre, relacnom kalkule a Datalogu
    • Rekurzia v SQL, relacnej algebre, relacnom kalkule a Datalogu
    • Vypocet dotazov: iteracia (naivna a seminaivna evaluacia)
    • Stratifikovana negacia
    • Simulacia rekurzie s fixnou hlbkou v SQL bez WITH RECURSIVE
    Navrhovanie databaz, 12/11/2014
    • Ciel a metodologia navrhovania databaz
    • Entitno-relacne diagramy, pravidla dobreho navrhu, primary keys, surrogate keys, foreign keys
    • Preklad ER diagramov do SQL (DDL)
    • Identifikacia funkcnych zavislosti
    Funkcne zavislosti, 19/11/2014
    • Motivacia normalizacie
    • Funkcne zavislosti, Armstrongove axiomy
    • Uzaver mnoziny atributov, uzaver mnoziny funkcnych zavislosti
    • Uplnost Armstrongovych axiom
    • Pokrytie a minimalne pokrytie mnoziny funkcnych zavislosti
    • Nadkluce a kluce
    • Relacne schemy, dekompozicia relacnych schem, bezstratovost dekompozicie
    Normalne formy, 26/11/2014-3/12/2014
    • Algoritmus testovania bezstratovosti dekompozicie do 2 relacii
    • Algoritmus testovania bezstratovosti dekompozicie do N relacii
    • Prva, druha a tretia normalna forma (1NF, 2NF, 3NF), BCNF
    • Naivna dekompozicia do 3NF, resp. BCNF
    • Bezstratova dekompozicia do 3NF zachovavajuca funkcne zavislosti
    • Bezstratova dekompozicia do BCNF z 3NF dekompozicie
    • Vyssie normalne formy, pravidla rozumnej dekompozicie
    Transakcie, 3/12/2014, 10/12/2014
    • Definicia transakcie z pohladu centralizovaneho transakcneho systemu
    • Elementarne transakcne operacie
    • Poziadavky na transakcny system (ACID)
    • Architektura transakcneho databazoveho systemu
    • Rozvrhy
    • Seriove a konflikt-seriovatelne rozvrhy
    • Testovanie konflikt-seriovatelnosti, precedencny graf
    • View-seriovatelne rozvrhy
    • Generovanie seriovatelnych rozvrhov
    • Dvojfazove zamykanie, casove peciatky, validacia, MVCC
    • Obnova (recovery), log-file
    • Vseobecny dvojprechodovy algoritmus obnovy, algoritmy obnovy so specifickymi predpokladmi
    • Checkpointing
    • Backup
    • Triedy obnovitelnosti: recoverable, ACA, strict
    • Diagram hierarchie tried obnovitelnosti a seriovatelnosti
    • Striktne dvojfazove zamykanie
    • Deadlock, wait-for-graf, pristupy k rieseniu deadlockov
    • Konzervativne strategie riesenia deadlockov: wait-die a kill-wait
  • Fyzicka organizacia, 17/12/2014
    • Typy externych (trvacnych) medii
    • Fyzicka algebra, fyzicke plany
    • Zlozitost fyzickych operatorov
    • Vybrane operatory: Merge-sort, Nested-loop-join
    • Sekvencne indexy (ISAM)
    • Husty a riedky sekvencny index, operacie vynechavania a vkladania
    • B stromy a B+ stromy
    • Rozsiritelne hashovanie, rozsiritelne hashovanie
    • Cena reorganizacie indexov

Starsie (uplnejsie a v podstatnych veciach presnejsie) materialy k tomuto kurzu: RNDr. J. Sturc

Cvicenia

J. Mazak, T. Plachetka, M. Rjasko

Priebezne hodnotenie prace pocas semestra. (Ak Vase hodnotenie chyba, nemate tento predmet zapisany v AIS.)

Teoria

DB1 Str 14:50 M.XII, DB2 Str 16:30 M.XII, DB3 Stv 12:20 M.IV, DB4 Stv 14:00 M.IV. Aktualne zaradenie studentov do skupin: rozvrhovaci system cviceni.

Tu su zadania a riesenia niektorych "rozcvickovych" uloh.

Praktikum

Cielom praktickych cviceni je naucit sa pracovat s Datalogom a SQL v praktickych systemoch. Za tymto ucelom su na swerveri cvika k dispozicii systemy SWI-Prolog (pre pisanie a testovanie Datalogovych programov) a PostgreSQL. Oba si viete instalovat aj na svojom domacom pocitaci. Ak oblubujete graficke prostredie, doporucujem instalovat najma SWI-Prolog (instalacia PostgreSQL je zlozitejsia).

Na server cvika.dcs.fmph.uniba.sk sa viete prihlasit z verejnej Internetovej siete protokolom SSH (v Linuxe typicky staci z terminalu urobit "ssh cvika.dcs.fmph.uniba.sk"; do Windows treba najskor instalovat ssh klienta, napr. Bitvise SSH Client ci PuTTY). Autentifikaciu robi univerzitny informacny system.

DATALOG

Treba skopirovat subory emp.pl, queries_emp.pl, queries_emp_sub.pl, query.pl, subtotal.pl do nejakeho directory a pisat/testovat dotazy v queries_emp.pl (data su v emp.pl).

Doporucujem vyrobit si samostatne aj inu databazu (napr. pijansku), vymysliet vlastne dotazy a otestovat ich nad vlastnym naplnenim databazy.

Co treba urobit ako prve: NAKONFIGUROVAT PROSTREDIE
  • Prihlasit sa na PC v terminalke. Autentifikaciu robi univerzitny informacny system.
  • Urobit ssh na pocitac cvika (cvika.dcs.fmph.uniba.sk). To znamena pod Linuxom otvorit terminalove okno a urobit
    ssh username@cvika, pod Windowsami treba pouzit putty. V tomto okne sa odohrava vsetko ostatne (je rozumne vyrobit ca. 3 take okna a v kazdom byt prihlaseny na pocitaci cvika). Username a heslo su identicke s tymi v terminalke.
  • Na pocitaci cvika, skopirovat subory emp.pl, queries_emp.pl, queries_emp.sql, queries_emp_sub.pl, queries_emp_sub.sql, query.pl, subtotal.pl z ~plachetk/pub/DB do svojho home-directory na pocitaci cvika:
    cp -r ~plachetk/pub/DB ~; cd ~/DB
Co treba urobit ako druhe: OBOZNAMIT SA S DATABAZOU EMP
Co treba urobit ako tretie: CVICIT PISANIE DOTAZOV V DATALOGU (nad databazou EMP)
  • Mat otvorene 2 okna (terminalove sessions) na pocitaci cvika. V browseri sa divate na obsah databazy emp.pl. V OKNE1 pisete dotazy, t.j. bezite
    joe queries_emp.pl
    V OKNE2 bezite
    swipl -s queries_emp.pl.
  • Po vpisani dotazu do suboru v OKNE1 treba subor queries_emp.pl ulozit na disk (v editore joe sa tak urobi postupnym stlacenim "CTRL+K D" a "ENTER"). Nasledne v OKNE2 skompilujete novu verziu suboru prikazom
    make.
    (Je dobre pozriet sa, ci kompilator hlasi nejake errors. Ak ano, treba sa vratit do editora, odstranit chyby a kompilaciu zopakovat. Kompilator dost dobre napoveda, kde ste urobili chybu.)
    Potom sa za ten otaznik v OKNE2 daju pisat dotazy ako napriklad
    ?- q(jobs(J)).
    Predikat "q(_)" sluzi na pekne formatovanie vystupu a eliminaciu "duplikatov" (ktore v skutocnosti nie su duplikatmi, len tymi istymi viacnasobne najdenymi N-ticami)
  • Negacia sa pise ako \+, definicia sa pise ako :-.

SQL

Co treba urobit ako stvrte: CVICIT PISANIE DOTAZOV V SQL (nad databazou EMP)
  • Otvorit 2 okna (terminalove sessions) na pocitaci cvika. V OKNE1 pisete dotazy:
    joe queries_emp.sql
    Zmeny v editovanom subore queries_emp.sql ulozite postupnym stlacenim "CTRL+K D" a "ENTER". V OKNE2 ten subor (t.j. vsetky dotazy v nom) spustate prikazom
    psql -f queries_emp.sql
  • Tu je zoznam uloh v queries_emp.sql. Nepovinne ulohy (ktore mozno vyzaduju studium manualu SQL) su oznacene kurzivou. Tazsie (ale doporucene) ulohy su oznacene tucnym pismom. Pri tazsich dotazoch moze byt dobrou pomockou formulacia dotazu v Datalogu a nasledny preklad do SQL podla navodu z prednasky. Na cviceni treba napisat a otestovat aspon jeden "lahky" a aspon jeden "tazky" dotaz. Do dalsieho tyzdna (nie nutne na cviceni) treba napisat a otestovat aspon vsetky tie dotazy, ktore su oznacene ako "tazke".
    • Print all jobs (each job once).
    • Print names and jobs of employees with salary at least 2000.
    • Print names and jobs of employees who work in department 30.
    • Print the number of department in which the president works.
    • Print jobs of employees who work in Chicago.
    • Print tuples [Name, City, Coworker] which stand for all employees, their working places and names of their co-workers (employees who work in the same department).
    • Print names of employees together with names of their managers.
    • Which departments are empty (have no employees)?
    • Which employees manage only clerks?
    • Print names, department names and salaries of all employees whose salaries are greater than the lowest salary in department 20.
    • Which departments contain all job positions?
    • Which departments employ no salesmen?
    • Find names of all employees who are subsidiaries of Blake - both direct and indirect subsidiaries.
    • Print names of employees who were hired between 1 September 1981 and 31 October 1981.
    • Print names and salaries of managers, sort the output in the descending order of salaries.
    • Print names, brutto incomes, national insurance contributions, income taxes and netto incomes of employees (subtract 13.4% for national insurance and 19% for income tax).
    • Print names and the number of working years (since hired) of all employees.
    • Print names of all employees with the first letters of their department names.
    • Print name and "total salary" (total salary = salary + comm) of each employee. (Warning: the column comm may contain NULL values.)

Tu je instalacny script databazy EMP pre PostgreSQL, ktory si viete instalovat aj na svojom domacom pocitaci.


Co dalej: CVICIT PISANIE SUBTOTALOVYCH DOTAZOV V DATALOGU A V SQL (nad databazou EMP)
  • V suboroch queries_emp_sub.pl a queries_emp_sub.sql su nasledujuce dotazy, ktore treba riesit a testovat horeuvedenym sposobom.
    • Find average salary of employees who work in Dallas.
    • For each department (including departments with no employees), find the sum of salaries of employees who work in that department.
    • Find departments (deptno) with more than 3 employees.
    • For each department, find the number of analysts who work in that department (the result consists of tuples [D, N]).
    • Find the job position(s) with the maximal standard deviation of salaries.
    • Find tuples [Deptno, Job, Sum, Average] which for each [Deptno, Job] state the sum of salaries and average salary of employees who work in department Deptno and do job Job.
    • For each employee, find the number of subsidiaries (direct and indirect) of that employee. Include employees with no subsidiaries.
  • Otestujte (nad databazou EMP, pripadne nejakou vlastnou databazou) dotazy, ktorych vysledkom ste si nie celkom isti.

Literatura


Updated by Tomas Plachetka, Feb/12/2015