|
Uvod do databazovych systemov 2012/2013 Zima
Oznamy (tie najviac aktualne su na prvych miestach)
- Terminy skusok (na termin sa treba vopred elektronicky prihlasit):
- 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 celkovom hodnoteni sa berie do uvahy len posledny termin.
- Vysledky testov budu priebezne zverejnovane na tejto web stranke. Ak s
tym nesuhlasite, dajte mi prosim vediet.
- K dalsim aktivitam hodnotenym pocas semestra pribudlo riesenie uloh v
systeme pre testovanie SQL
dotazov. Zaregistrujte sa pod svojim univerzitnym
loginom (heslo doporucujem zvolit ine nez v AIS), precitajte si navod,
vygenerujte aspon jeden test a vyrieste ho najneskor do 2.12.2012.
Vyriesenie testu (5 SQL dotazov) by Vam nemalo trvat dlhsie nez 1 hodinu. Ak
ste presvedceni, ze niektore Vase riesenie je spravne a zaroven konformne s
pozadovanym vystupom, no system ho napriek tomu odmieta akceptovat, moze to
byt sposobene napriklad nedostatocnou specifikaciou okrajovych pripadov v
zadani ulohy. V takom pripade okomentujte co najpresnejsie problem, na ktory
ste narazili (prilozte text zadania a Vasho riesenia) a poslite cez email v
sprave so subjectom "uddb: sql system" tvorcovi/spravcovi systemu (TO:
kulich at dcs.fmph.uniba.sk), s kopiou mne (CC: plachetk at
dcs.fmph.uniba.sk). Vitane su aj ine Vase komentare k systemu. Kritika,
ktora napriklad pomoze odhalit chyby v systeme, spresnit formulaciu uloh,
..., moze len zlepsit Vase hodnotenie. (Akakolvek kritika nema negativny
vplyv na hodnotenie.) Taktiez vyriesenie viacej nez jedneho generovaneho
testu moze prispiet len k zlepseniu hodnotenia.
- V "databazovom tyzdni" 23.10.-29.10. (od stredy do pondelka) budu
prakticke cvicenia, v terminalkach M217 a M218.
Rozvrh praktickych cviceni:
- DB1A + DB1B: M217, Pondelok 16:30
- DB2A + DB2B: M217, Streda 14:00
- DB3A: M217, Stvrtok 9:50 DB3B: M218, Stvrtok 9:50
- DB4A: M217, Stvrtok 15:40 DB4B: M218, Stvrtok 15:40
- 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.)
"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 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, 19/9/2012
- Organizacia kurzu
- 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,
26/9/2012-3/10/2012
- Relacie a predikaty
- Dotazy
- Relacny kalkul
- Datalog
- SQL ("kanonicka" forma vznikajuca prekladom z Datalogu)
-
Viac o SQL, 10/10/2012
- 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, 17/10/2012
- 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,
24/10/2012-31/10/2012
- 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)
- Magicka transformacia
- Stratifikovana negacia
- Vypoctova sila dotazovacich jazykov
- Simulacia rekurzie s fixnou hlbkou v SQL bez WITH RECURSIVE
-
Navrhovanie databaz, 31/10/2012-7/11/2012
- 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, 7/11/2012-14/11/2012
-
Normalne formy, 14/11/2012-21/11/2012
- 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, 28/11/2012-5/12/2012
- 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, 12/12/2012
- 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
Starsia (uplnejsia a v podstatnych veciach presnejsia) verzia tohto kurzu:
RNDr. J.
Sturc
Cvicenia
T. Kulich, M. Mitrengova, M. Pastorova, T. Plachetka
K dalsim aktivitam hodnotenym pocas semestra pribudlo riesenie uloh v
systeme pre testovanie SQL
dotazov. Zaregistrujte sa pod svojim univerzitnym
loginom (heslo doporucujem zvolit ine nez v AIS), precitajte si navod,
vygenerujte aspon jeden test a vyrieste ho najneskor do 2.12.2012.
Vyriesenie testu (5 SQL dotazov) by Vam nemalo trvat dlhsie nez 1 hodinu. Ak
ste presvedceni, ze niektore Vase riesenie je spravne a zaroven konformne s
pozadovanym vystupom, no system ho napriek tomu odmieta akceptovat, moze to
byt sposobene napriklad nedostatocnou specifikaciou okrajovych pripadov v
zadani ulohy. V takom pripade okomentujte co najpresnejsie problem, na ktory
ste narazili (prilozte text zadania a Vasho riesenia) a poslite cez email v
sprave so subjectom "uddb: sql system" tvorcovi/spravcovi systemu (TO:
kulich at dcs.fmph.uniba.sk), s kopiou mne (CC: plachetk at
dcs.fmph.uniba.sk). Vitane su aj ine Vase komentare k systemu. Kritika,
ktora napriklad pomoze odhalit chyby v systeme, spresnit formulaciu uloh,
..., moze len zlepsit Vase hodnotenie. (Akakolvek kritika nema negativny
vplyv na hodnotenie.) Taktiez vyriesenie viacej nez jedneho
generovaneho testu moze prispiet len k zlepseniu hodnotenia.
Priebezne hodnotenie prace pocas semestra.
Stav bude aktualizovany najneskor v utorok pred nasledujucim cvicenim. Ak
mate podozrenie, ze Vase hodnotenie nebolo aktualizovane dlhsie, dajte prosim
vediet svojmu cviciacemu a mne (email).
Teoria
DB1 Pon 16:30 M-VIII (MP), DB2 Str 14:00 M-I (MM), DB3 Stv 9:50 M-IV (TP),
DB4 Stv 15:40 M-V (TK). Viacej informacii o rozvrhu:
rozvrhovaci system cviceni.
Tu su zadania a riesenia niektorych
"rozcvickovych" uloh.
Praktikum
DB1A, DB1B Pon 16:30 M-217,
DB2A, DB2B Str 14:00 M-217,
DB3A Stv 9:50 M-217, DB3B Stv 9:50 M-218,
DB4A Stv 15:40 M-217, DB4B Stv 15:40 M-218. Viacej informacii o rozvrhu:
rozvrhovaci system cviceni.
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 :-.
Datalog (SWI-Prolog) si viete
instalovat aj na svojom domacom pocitaci.
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 vyriesit aspon jeden
"lahky" a aspon jeden "tazky" dotaz:
- 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.
- 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 are empty (have no employees)?
- Which employees manage only clerks?
- Which departments employ no salesmen?
- Find names of all employees who are subsidiaries of Blake - both
direct and indirect subsidiaries. (This query is a tricky one, skip it
unless you understand what you are doing.)
- 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.
- Datalog only: For each employee, find the number of subsidiaries (direct
and indirect) of that employee. Include employees with no subsidiaries.
(This query is a tricky one, skip it unless you understand what you
are doing.)
- Otestujte (nad databazou EMP, pripadne nejakou vlastnou databazou)
dotazy, ktorych vysledkom ste si nie celkom isti.
Literatura
- Online materialy ku kurzu Introduction
to Databases na Stanford University. Odporucam pozriet si najma videa od
J.Widom.
- H. Garcia-Molina, J.D. Ullman, J. Widom: Database Systems, The Complete
Book, Prentice Hall, 2003
- S. Abiteboul, R. Hull, V. Vianu:
Foundations of Databases
- R. Elmasri, S.B. Navathe: Fundamentals of Database Systems,
Addison-Wesley, 2006
- M. Kifer, P.A. Bernstein, P.M. Lewis: Database Systems, An
Application-Oriented Approach, Addison-Wesley, 2006
- J. D. Ullman, J.Widom: A First Course in Database Systems, Prentice
Hall, 1997
- S. Krishna:
Introduction to Database and Knowledge-Based Systems,
World-Scientific, 1992
- T.M. Connolly, C.E. Begg:
Database Systems: A Practical Approach to Design, Pearson Education,
2005
- C. Zaniolo:
Advanced Database Systems, Morgan Kaufmann, 1997
- S. Lightstone, T.J. Teorey, T. Nadeau:
Physical Database Design, Morgan Kaufmann, 2007
- P.A. Bernstein, V. Hadzilacos, N. Goodman:
Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1987
Updated by
Tomas Plachetka,
Feb/10/2013
|