Warning
This page is located in archive.

Dotazy SQL a databázová struktura

Zadání

Máte k dispozici anonymizovanou databázi z porodnického oddělení. Názvy tabulek a atributů máte uvedeny vždy v daném bodě zadání. Přihlašovací údaje databáze dostanete na cvičení. Prohlédněte strukturu databáze.

Jednotlivé dotazy si ukládejte do textového souboru. Ten odevzdejte prostřednictvím UploadSystemu na konci cvičení.


Následující části úlohy jsou povinné!

Jednotlivé úkoly pro část úlohy tvořenou na cvičení jsou: (2 body)

  • Připojte se k databázi
  • Postupně budete vytvářet dotazy dle následujícího zadání. Na každý dotaz je omezený čas.
    1. Vypište všechny údaje z tabulky příjmů - admittance. (0.1 bodu) - 5 min.
    2. Vypište všechny údaje z tabulky porodů - labour - pro které platí, že rodička byla minimálně v 37. týdnu těhotenství – sloupec week. (0.1 bodu) - 5 min.
    3. Vypište všechny údaje z tabulky porodů - labour - pro které platí, že byl u porodu otec a krevní ztráta nebyla větší než 500 ml krve - sloupece company_at_labour a blood_loss. (0.2 bodu) - 5 min.
    4. Vypište všechny diagnózy u porodů - tabulky newborn, labour_has_diagnosis a diagnoses. Tabulky jsou spojeny přes klíče id_newborn (PK v tabulce newborn) a id_diagnosis (PK v tabulce diagnoses), resp. newborn_id_newborn a diagnoses_id_diagnosis (FKs v tabulce labour_has_diagnosis) a (PK v tabulce diagnoses. (0.2 bodu) - 10 min.
    5. Upravte předchozí dotaz tak, že se vypíší pouze diagnózy pro porody provedené v jednom ze dvou zdravotnických zařízení (v tabulce labour sloupec workplace_id_workplace a hodnoty klíče mohou být 1 nebo 2). Pokud ještě nemáte ve výpisu tabulku labour, nyní ji musíte do dotazu přidat. Tabulky labour a newborn jsou spojeny klíčem id_labour (PK), resp. labour_id_labour (FK). (0.2 bodu) - 10 min.
    6. Vypište všechny lékaře (jmeno, prijimeni; neopakujici se) u porodů. K tomu budete potřebovat tabulky newborn, labour_has_personnel, personnel a personnel_type. Propojení těchto tabulek vyhledejte sami. (0.4 bodu) - 15 min.
    7. Upravte předchozí dotaz tak, že se vypíší pouze ti lékaři, kteří byli přítomni u porodu dvojčat. Pro doplnění údajů o četnosti porodu budete potřebovat tabulky navíc labour_count a admittace. Tyto tabulky jsou spojené ve vztahu 1:N klíčem id_labour_count (PK), resp. labour_count_id_labour_count (FK). (0.4 bodu) - 15 min.
    8. Vytvořte přehled kolik porodů bylo v minulém roce v jednotlivých měsících. (0.2 bodu) - 5 min.
    9. Specifikujte v předchozím bodě vytvořený přehled se zaměřením na četnost porodu. (0.2 bodu) - 5 min.

Následující části úlohy jsou povinné! Odevzdává se prostřednictvím UploadSystemu.

Domácí část úlohy:

  • Vytvořte ER-diagram databáze na logické úrovni. Nemáte povoleno použít jakékoliv automatické nástroje. Odevzdejte PNG/PDF rukou kresleneho E-R. (0. bodů)

Bonus

Vytvořte SW pro migraci obsahu DB do NoSQL DB Cassandra. Aby Vám dotazy fungovaly nějak elegantně, budete muset provést denormalizaci. Upravte SQL (CSQL) dotazy tak, aby fungovaly.

Odevzdávejte jak SW pro převod (PostgreSQL-Cassandra), tak SQL/CSQL kódy. Přidejte textový popis provedené denormalizace. Odevzdejte dokument, prokazujici, ze vsechny dotazy (1-9) vraci stejna data: dva sloupce, pocet vracenych hodnot, prip. vzorek dat.

Hodnocení: 1.5 b max.

Hodnocení

  • Povinné: Na cvičení je hodnocení maximálně 2 body.
  • Povinné: Domácí úloha (ER) je bez bodového ohodnocení, ale povinná.
  • Bonus: 1.5 b

Důležité: Před odevzdáním si ověřte, zda práce splňuje jednotlivé body zadání PŘESNĚ. Pokud si nejste jisti, co některá část zadání znamená, včas se ptejte. Při nedodržení specifikace neočekávejte body z milosti.

Za část úlohy ze cvičení můžete získat až 2 body. Pokud nestihnete odevzdat na cvičení, musíte ji dopracovat doma (bez bodového ohodnocení).

Do dalšího cvičení máte možnost vypracovat bonusovou úlohu, za jejíchž splnění můžete získat dalších 1.5 bodu. Odevzdává se prostřednictvím UploadSystemu.

courses/17bieht/db_sql.txt · Last modified: 2016/05/05 11:37 by bursam