====== Semestrální práce ====== ==== CP-0 - Sdělení tématu (0 bodů) ==== * Pomocí několika vět popište téma své práce. V krátkosti popište i motivaci, proč vámi vybrané téma budete zpracovávat. * Uvažujte takové téma, které jednak zahrnuje jak (taxonomický) popis systému, tak provozní data (například měření, periodická realizace, atp). * Vyberte si takové téma, u kterého v rámci svých aktuálních znalostí dokážete zrealizovat tak, aby odpovídalo níže uvedeným požadavkům. V případě nejistoty kontaktujte cvičícího. * Téma v rámci skupiny musí být jedinečné, nesmí být identické s ukázkovými tématy probíranými na cvičeních a přednáškách. * ==== CP-1 Konceptuální model (20 bodů) ==== * Pomocí vhodné aplikace vytvořte konceptuální ER model, který odevzdejte ve formě PDF dokumentu obsahující obrázek a krátký popis modelu/technické zdůvodnění použitého konstruktu. * Konceptuální model musí obsahovat nejméně 5 entitních typů, počet entitních typů by neměl přesahovat 10. * Pro účely konceptuálního modelu nezavádějte žádné umělé identifikátory. * Na základě technických důvodů navrhněte konceptuální model, který obsahuje alespoň jednou: * jednoduchý, strukturovaný a vícečetný atribut * vazbu s kardinalitou 1..1, 0..1, 0..N, 1..N, N:M * rekurzivní nebo reflexivní vazbu * dědičnost * slabý entitní typ * V modelu uveďte relevantní identifikátory, alespoň u jednoho entitního typu zaveďte (neuvedení relevantního identifikátoru je považováno za chybu) * složený identifikátor * více identifikátorů * Doporučené nástroje: * Creately.com - Entity Relationship Diagrams * Draw.io - Blank Diagram, Entity Relation Shapes ==== CP-2 Relační model (10 bodů) ==== * Transformujte konceptuální model (CP-1) na relační model v textové podobě, odevzdejte ve formě PDF dokumentu obsahující obrázek (případně opraveného) konceptuálního modelu a relační model. * Pokud to považujete za vhodné, doplňte předchozí konceptuální model o nové entity/vztahy/charakteristiky. * Využijte textovou notaci //Tabulka (__Klíč__, Atribut1, Atribut2) //, uvádějte cizí klíče. Neuvažujte NULL hodnoty. ==== CP-3 SQL - Vytvoření databáze, dotazy na data (30 bodů) ==== * Transformujte relační model (CP-2) na ER model a z něho vyplývající SQL dotazy vytvářející databázi, nad touto databází formulujte dotazy na data, odevzdejte ve formě PDF dokumentu obsahující * Obrázek - ER model * SQL dotazy pro vytvoření databáze včetně adekvátních integritních omezení, zejména pak zavedení * adekvátních typů u jednotlivých atributů * atributového integritního omezení * tabulkového integritního omezení * cizích klíčů včetně (technicky zdůvodněné) direktivy ON UPDATE/DELETE * klíčů a primárních klíčů, popřípadě zaveďte umělé klíče, pokud je to vhodné * SQL dotazy pro získání údajů z databáze pokrývající alespoň jednou * vnější spojení tabulek * vnitřní spojení tabulek * podmínku na data * agregaci a podmínku na hodnotu agregační funkce * řazení a stránkování * množinové operace * vnořený SELECT * U každého dotazu slovy popište jeho činnost, uveďte dotaz a proveďte screenshot výsledku dotazu, který je vrácen klientem. * Pro účely tohoto úkolu je nezbytně nutné * Založit veškeré tabulky ve vaší studentské databázi na serveru slon.felk.cvut.cz * Všechny SQL dotazy musí být (bezchybně) spustitelné na uvedeném serveru. * Naplnit založené tabulky relevantním počtem dat * Naplnit jednu tabulku (s klíčovým významem pro zpracovávané téma) větším množstvím (cca ~32k) “provozních” dat * Cvičícímu předvést volání vybraných netriviálních dotazů. * Doporučené nástroje: * MicroOLAP for Postgresql * DB Designer * {{:courses:b0b36dbs:tutorials:senzorovasit.png|Demo ukázka ER modelu}} ==== CP-4 Pokročilé databázové technologie (10 bodů) ==== * Databázi CP-3 rozšiřte o další pokročilé technologie, do PDF dokumentu uveďte stručný komentář a potřebné SQL dotazy. * V rámci tohoto odevzdání demonstrujte * Zavolání transakce a sady dotazů včetně nastavení vhodné úrovně izolace, uveďte konflikt, který by mohl vzniknout, pokud by nebylo použito transakce * Vytvoření a použití pohledu * Vytvoření a použití triggeru * Vytvoření a použití indexu, přičemž s pomocí relevantní analýzy diskutujte přínos využití takového indexu. ==== CP-5 Základ JPA aplikace (20 bodů) ==== * Na databází CP-3 vystavte základ javové aplikace využívající JPA, který obsahuje zejména * datový model odpovídající celé databázi zahrnující * Many To Many vazbu * dědičnost * DAO vrstva zajišťující nutný nízkoúrovňový přístup k datům * Servisní vrstva volající DAO vrstvu obsahující 5 vybraných užití vašich dat, specializovaný zejména na zapisovací operace a pokrývající transakci z CP-4. * Odevzdává se formou odevzdání relevantní části JAVA projektu, běh aplikace v rámci odevzdání je nutné předvést cvičícímu.