====== 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 [[http://cw.felk.cvut.cz/upload/|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. - Vypište všechny údaje z tabulky příjmů - //admittance//. //(0.1 bodu)// - //5 min.// - 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.// - 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.// - 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.// - 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.// - 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.// - 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.// - Vytvořte přehled kolik porodů bylo v minulém roce v jednotlivých měsících. //(0.2 bodu)// - //5 min.// - 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 [[http://cw.felk.cvut.cz/upload/|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.