Warning
This page is located in archive.

Semestrální práce

CP-0 Sdělení tématu (1 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í aplikace ER Dia vytvořte relační konceptuální model, který odevzdejte ve formě archivu obsahujícího
    • XML dokumentu cp0-krm.xml
    • PDF dokumentu cp0-krm.pdf 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 1:1, 1:N a N:M s použitím kardinalit 0..1, 1..1, 0..N, 1..N
    • 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ů

CP-2 Relační model (10 bodů)

  • Transformujte konceptuální model (CP-1) na relační model v textové podobě, odevzdejte ve formě archivu obsahující
    • obrázek cp1-krm.png obsahující (případně opraveného) konceptuálního modelu
    • XML dokument cp1-krm.xml obsahující konceptuální model
    • HTML dokument cp1-krm.html obsahující 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.
<ul>
  <li>Operace(<u>čas, zákazník</u>, <u>čas, zaměstnanec</u>, <u>čas, exemplář/u>, typ_operace) <ul>
    <li>FK: zákazník ⊆ Zákazník(jméno)</li>
    <li>...</li>
   </ul></li>
   <li>R(...)</li>
</ul>

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 a relační 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
    • Nepoužívat ALTER TABLE pro přidávání integritních omezení.
  • Doporučené nástroje:
    • MicroOLAP for Postgresql
    • DB Designer
  • 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 (19 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 včetně parametrizovaného dotazu
    • 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.
K vygenerování Entit z databáze je možno použít vhodného nástroje, který je součástí IDE. Viz
  • ukázka generování JPA entit z databázového schématu - Netbeans

  • poznámky ke generování JPA entit z databázoveho schematu - IntelliJ IDEA
    • File → Project Structure → Modules → přidat JPA
    • View → Tool Window → Persistence → přidat datový zdroj
      • Persistence → Persistence Generator → By Database Schema
      • (nebo) DB Viewer → (Database) → Create JPA Entities from DB
    • inspirovat se můžete i videem IntelliJ IDEA: Working with Hibernate/JPA
courses/b0b36dbs/tutorials/start.txt · Last modified: 2024/05/09 15:34 by rimnacm