====== B0B36DBS, A7B36DBS -- Databázové systémy ====== * Rozvrh [[http://www.fel.cvut.cz/cz/education/rozvrhy-ng.B162/public/cz/predmety/50/10/p5010606.html|B0B36DBS]], [[http://www.fel.cvut.cz/cz/education/rozvrhy-ng.B162/public/cz/predmety/13/92/p1392506.html|A7B36DBS]] * [[https://cw.felk.cvut.cz/brute/|Systém pro odevzdávání semestrálních prací]] * [[https://cw.felk.cvut.cz/forum/forum-1380.html|Společné diskusní fórum databázových předmětů]] ===== Harmonogram přednášek===== | 21.02.2017 | 1. | Martin Svoboda | Modelování | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-01-Conceptual-Modeling.pdf|pdf]] ^ | 11.04.2017 | 8. | Antonín Komenda | JPA I | {{:courses:db:jpa-i.pdf|pdf}} | | 28.02.2017 | 2. | Martin Svoboda | Relační model | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-02-Relational-Model.pdf|pdf]] ^ | 18.04.2017 | 9. | Antonín Komenda | JPA II | {{:courses:db:jpa-ii.pdf|pdf}} | | 07.03.2017 | 3. | Martin Svoboda | Funkční závislosti | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-03-Functional-Dependencies.pdf|pdf]] ^ | 25.04.2017 | 10. | Antonín Komenda | JPA III | {{:courses:db:jpa-iii.pdf|pdf}} | | 14.03.2017 | 4. | Antonín Komenda | SQL I | {{:courses:db:sql-i.pdf|pdf}} ^ | 02.05.2017 | -- | | | | | 21.03.2017 | 5. | Antonín Komenda | SQL II | {{:courses:db:sql-ii.pdf|pdf}} ^ | 09.05.2017 | 11. | Martin Svoboda | Transakce | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-11-Database-Transactions.pdf|pdf]] | | 28.03.2017 | 6. | Antonín Komenda | SQL III | {{:courses:db:sql-iii.pdf|pdf}} ^ | 16.05.2017 | 12. | Martin Svoboda | Relační algebra | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-12-Relational-Algebra.pdf|pdf]] | | 04.04.2017 | 7. | Antonín Komenda | Indexy | {{:courses:db:trees-in-databases.pdf|pdf}} ^ | 23.05.2017 | 13. | Martin Svoboda | Nové trendy | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/lectures/Lecture-13-NoSQL-Databases.pdf|pdf]] | ==== Přednášející: ==== * [[mailto:antonin.komenda@fel.cvut.cz|Antonín Komenda]] * [[mailto:svoboda@ksi.mff.cuni.cz|Martin Svoboda]] /* stare: - Základní typy architektury informačního systému (klient-server, multi-tier, tenký klient), analýza informačních toků {{:courses:a4b33ds:ds-mis-1.ppt| Přednáška 1}} - Základy modelování dat, E-R diagramy, relační model {{:courses:a4b33ds:ds-mis-2.ppt| Přednáška 2}} - Integritní omezení, referenční integrita, normální formy, Tvorba datového modelu - workshop {{:courses:a4b33ds:ds-mis-normalniformy.ppt| Přednáška 3}} {{courses:a4b33ds:demonstracenavrhumodelu.ppt|Demonstrace návrhu modelu}} {{courses:a4b33ds:1-3-summary.odp|Shrnutí}} - Dotazování v relačních databázích, základy jazyka SQL {{courses:a4b33ds:1-dotazovaci-jazyk-sql-a.ppt| Přednáška 4}} - Pokročilé dotazy, agregační funkce, vnořené dotazy {{:courses:a4b33ds:2-dotazovaci-jazyk-sql-a2.ppt| Přednáška 5}} - Transakce, jejich serializovatelnost, zamykání, stupně izolovanosti, uváznutí transkací, jejich prevence a řešení {{:courses:a4b33ds:transakce-a2.ppt|Přednáška 6}} - Objektově-orientované databáze, objektově-relační mapování, JPA 2 {{:courses:a4b33ds:jdbc-a.pptx|Ukázka JDBC}} {{:courses:a4b33ds:zk-jpa20-p1.odp|Přednáška 7}} - Mapování kolekcí, JPA 2 {{:courses:a4b33ds:zk-jpa20-p2.odp|Přednáška 8}} - Mapování složených klíčů, mapování hierarchie dědění, JPQL, nativní SQL dotazy, JPA 2 {{:courses:a4b33ds:zk-jpa20-p3.odp|Přednáška 9}} - Cursor, view, uložené procedury, triggery, indexy {{:courses:a4b33ds:3-dotazovaci-jazyk-sql.odp|Přednáška 10}} - Efektivní implementace stromových struktur v databázích, GIS, prostorové indexační techniky {{:courses:a4b33ds:trees-in-databases.pdf|Přednáška 11}} - Zotavení z chyb {{:courses:a4b33ds:zotaveni-z-chyb.pdf|Přednáška 12}} - High availability, load balancing, replikace dat, datové sklady, moderní trendy databázových systémů {{:courses:a4b33ds:newtrends.pdf|Přednáška 13}} */ ===== Harmonogram cvičení ===== | út. | čt. | | | | | |21. 2. | 23. 2. | 1. | Konceptuální modelování I | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-01-ER.pdf|pdf]] | | |28. 2. | 2. 3. | 2. | Konceptuální modelování II | | | |7. 3. | 9. 3. | 3. | Relační model | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-03-RM.pdf|pdf]] | **pátek 10. 3. schválení tématu** | |14. 3. | 16. 3. | 4. | SQL I - DDL | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-04-SQL-DDL.pdf|pdf]] | | |21. 3. | 23. 3. | 5. | SQL II - DML | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-05-SQL-DML.pdf|pdf]] | | |28. 3. | 30. 3. | 6. | SQL III - DML | | **pátek 31. 3. odevzdání CP1** | |4. 4. | 6. 4. | 7. | **Hodnocení CP1** | | | |11. 4. | 13. 4. | 8. | SQL IV - pohledy, funkce, indexy, triggery, ... | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-08-SQL-Advanced.pdf|pdf]] | | |18. 4. | 20. 4. | 9. | JDBC, JPA | | | |25. 4. | 27. 4. | 10. | Funkční závislosti I | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-10-FD.pdf|pdf]] | | |9. 5. | 4. 5. | 11. | Funkční závislosti II | | | |16. 5. | 18. 5. | 12. | Relační algebra | [[http://www.ksi.mff.cuni.cz/~svoboda/courses/2016-2-B0B36DBS/labs/Lab-12-RA.pdf|pdf]] | **pátek 19. 5. odevzdání CP2** | |23. 5. | 25. 5. | 13. | **Hodnocení CP2** | | | ==== Cvičící: ==== * [[mailto:svoboda@ksi.mff.cuni.cz|Martin Svoboda]] * [[mailto:tomasma5@fel.cvut.cz|Martin Tomášek]] ===== Podmínky zápočtu ===== * max 2 omluvené absence * práce maximálně ve skupině po 2 * včasné odevzdání semestrální práce (max 35 bodů): * **Model** - návrh databáze - CP1 (min. 5 body - max. 10 bodů) * minimální rozsah: 6 entitních typů, alespoň 1 vztah M:N * konceptuální model, jemu odpovídající logický model, popis referenčních integrit (alespoň 1) * odevzdání 6. týden do 31. 3. (nejpozději ale 8. týden 14. 4., poté již odevzdání není možné) přes [[https://cw.felk.cvut.cz/brute/ | BRUTE upload na CW stránkách předmětu]] (PDF obsahující obrázek ER diagramu a odpovídající SQL dotaz na vytvoření databáze) * **Aplikace** - CP2 (min 10 bodů, max. 20 bodů) * databáze odpovídající modelu + min. 2 z následujících vlastností (á 4 body, max 8 bodů) * triggery, uložené procedury [[http://www.postgresql.org/docs/8.4/static/server-programming.html|manual Server Programming]] * zapisovatelné view [[http://www.lshift.net/blog/2006/07/20/updateable-views-in-postgresql|info updateable views]] * JPA 2 + Criteria API * uživatelské rozhraní desktopová aplikace (max 5 bodů) * GUI ve Swingu a pod. * vhodně demonstrovat komplexní zpracování (CRUD) vybrané N:M vazby * transakční zpracování, volba vhodných stupňů izolovanosti transakcí * klient demo - SQL (max 7 bodů) * maximálně jednoduchý klient na generování provozních dat * výstupní sestavy obsahující agregovaná data * demonstrace anomálií při různých stupních izolovanosti (anomálie vynuťte vhodnými prostředky) * odevzdání 12. týden do 19. 5. (nejpozději ale 2. 6., poté již odevzdání není možné) přes ([[https://cw.felk.cvut.cz/brute/ | BRUTE ]]), minimálně 1 den před kontrolou * **TEST** použití pokročilých technik (nepovinné, max 5 bodů), např. * netriviální optimalizace dotazu (EXPLAIN, atp) * netriviální použití uložené procedury * netriviální dotaz * pro získání zápočtu musí být části CP1, CP2 semestrální práce odevzdány alespoň z 50% bez penalizace * ke zkoušce student získává body podle níže uvedeného vzorce, kde je přísně zohledněno pozdní odevzdání jak modelu, tak i vlastní aplikace * B = (B1 - P1) + (B2 - P2) + B3, -15 < = B < = 35, **ke zkoušce si lze odnést i záporné body !** * P1=5* počet započatých týdnů zpoždění od CP1 * P2=5* počet započatých týdnů zpoždění od CP2 * CP1, téma+model, B1= min. 5, max. 10 * CP2, výsledná aplikace, B2=min. 10, max. 20 * TEST, nepovinné rozšíření úlohy z CP2, B3= min. 0, max. 10, ===== Zkouška ===== * U zkoušky je možné získat 65 bodů (minimálně je požadováno 33 bodů), známky budou udělovány dle klasické 100 bodové stupnice * Ukázkové zadaní zkouškové písemky: {{:courses:bd6b33dbs:pisemka.pdf|}}.