Ukázka písemné zkoušky z TZD 10 otázek – celkem 60 bodů Minimum 30 bodů Čas 90 minut
Která z následujících tvrzení charakterizují integritu dat v databázi? Porušuje ji vždy chybný návrh struktury databáze. Jsou-li data integritní, jsou také konzistentní. Porušuje ji chybný zápis dat uživatele. Je to vzájemný soulad údajů v databázi. Jsou-li data konzistentní, nemusí být také integritní Jsou-li data konzistentní, jsou také integritní Je-li databáze správně navržena, nemůže dojít k porušení integrity. Jsou-li data integritní, nemůže dojít k anomáliím při vypuštění záznamů. Porušuje ji každý chybný aplikační program. Jsou-li data integritní, nemusí být také konzistentní.
Označte pojmy odpovídající pojmu relace v různých datových modelech lineární zápis typu entity množina entit množina atributů množina reálných objektů množina všech řádků tabulky typ setu entita struktura databáze obsah tabulky konečná podmnožina kartézského součinu domén atributů
Konceptuální model transformovaný pro relační databázi obsahuje (případně může obsahovat): Domény atributů Obsah databáze Množiny entit Vazební tabulky Funkční závislosti mezi entitami Hierarchii typů entit Integritní omezení pro funkce nad databází Slovně popsaná pravidla definující obsah databáze Integritní omezení týkající se vazeb Lineární zápis typů vazeb
ER-Diagram Je dána část databáze internetového obchodu s následujícími relačními schématy (pozor pro různé otázky mohou být tato schémata různá, byť popisují podobný problém): Zakaznik (id_zakaznika, jmeno, prijmeni, ulice, cislo_popisne, mesto, psc, telefon_doma, telefon_mobil, telefon_fax, email_doma, email_prace) Objednavka (cislo_zakazky, id_zakaznika, datum_objednani, zpusob_uhrady, dodaci_ulice, dodaci_cislo_popisne, dodaci_mesto, dodaci_psc) Obsah_objednavky (cislo_zakazky, cislo_zbozi, mnozství, prodejni_cena) Zbozi (cislo_zbozi, nazev_zbozi, cena_za_kus, mnozstvi_skladem, dph, id_dodavatel,kategorie_zbozi) Dodavatel (id_dodavatel, nazev_dodavatele, dodavatel_ulice, dodavatel_cislo_popisne,dodavatel_mesto, dodavatel_psc) Kategorie(kategorie_zbozi, nazev_kategorie, nadrazena_kaegorie) Atributy id_zakaznika, cislo_zakazky, cislo_zbozi, id_dodavatele, kategorie_zbozi jsou klíčové. V rámci jedné zakázky lze objednat více kusů zboží stejného typu. Nakreslete úplný E-R diagram této databáze, bez atributů, s úplným vyznačením vazeb a všech integritních omezení zobrazitelných v ERD.
Fyzická organizace 1/3 Je dána tabulka Student (login, jmeno, obor, rocnik), implementovaná je v SŘBD používajícím indexové soubory. K Student existují 2 jednoduché indexov soubory Ilogin (login, adresa) a Ijmeno (jmeno, adresa). Studentce Haně Novákové byl změněn login na nov123. Z následujícího seznamu operací vyberte a uspořádejte do optimální správné posloupnosti ty, které realizují v této fyzické organizaci databáze uvedenou operaci. Výsledek zapište jako posloupnost pořadových čísel vybraných operací, oddělených čárkou (např. 5,12,14,22). Pokud na pořadí operací nezáleží, dodržte vzrůstající posloupnost.
Fyzická organizace 2/3 vyhledej v indexovém souboru Ijmeno binárně záznam se jménem „Hana Nováková“, zapamatuj si jeho adresu v proměnné Aadresa vyhledej v datovém souboru Student binárně záznam se jménem „Hana Nováková“, zapamatuj si jeho adresu v proměnné Dadresa vymaž vyhledaný indexový záznam z Ijmeno přenes vyhledaný záznam z indexového souboru Ijmeno do paměti počítače do proměnných Jjmeno, Jadresa vyhledej v datovém souboru Student přímo záznam s adresou Dadresa vyhledej v datovém souboru Student přímo záznam s adresou Jadresa vyhledej v datovém souboru Student přímo záznam s adresou Aadresa načti vyhledaný datový záznam ze Student do paměti počítače do proměnných Plogin, Pjmeno, Pobor, Procnik vymaž vyhledaný datový záznam ze Student vyhledej v indexovém souboru Ilogin binárně záznam s loginem Plogin, zapamatuj si jeho adresu v proměnné Gadresa vyhledej v indexovém souboru Ilogin binárně záznam s loginem „nov123“, zapamatuj si jeho adresu v proměnné Gadresa přenes vyhledaný záznam z indexového souboru Ilogin do paměti počítače do proměnných Llogin, Ladresa 1,4,6,8,10,12,13,16,19,20,23
Fyzická organizace 3/3 přepiš hodnotu proměnné Plogin na „nov123“ zapiš nový záznam na konec souboru Student s hodnotami Plogin, Pjmeno, Pobor, Procnik zapiš nový záznam na konec indexového souboru Ijmeno s hodnotami Ijmeno, Iadresa zapiš do datového souboru Student na adresu Jadresa záznam s hodnotami Plogin, Pjmeno, Pobor, Procnik zapiš do datového souboru Student na adresu Aadresa záznam s hodnotami Plogin, Pjmeno, Pobor, Procnik zapiš do datového souboru Student na adresu Gadresa záznam s hodnotami Plogin, Pjmeno, Pobor, Procnik přepiš hodnotu proměnné ILogin na „nov123“ zapiš do indexového souboru Ilogin na adresu Gadresa záznam s hodnotami Llogin, Ladresa zapiš do indexového souboru Ilogin na adresu Ladresa záznam s hodnotami Llogin, Jadresa setřiď datový soubor Student podle atributu login setřiď indexový soubor Ilogin podle atributu login setřiď indexový soubor Ilogin podle atributu adresa 1,4,6,8,10,12,13,16,19,20,23
Relační algebra 1/2 Je dána část databáze internetového obchodu s následujícími relačními schématy (pozor pro různé otázky mohou být tato schémata různá, byť popisují podobný problém): Zakaznik (id_zakaznika, jmeno, prijmeni, ulice, cislo_popisne, mesto, psc, telefon_doma, telefon_mobil, telefon_fax, email_doma, email_prace) Objednavka (cislo_zakazky, id_zakaznika, datum_objednani, zpusob_uhrady, dodaci_ulice, dodaci_cislo_popisne, dodaci_mesto, dodaci_psc) Obsah_objednavky (cislo_zakazky, cislo_zbozi, mnozství, prodejni_cena) Zbozi (cislo_zbozi, nazev_zbozi, cena_za_kus, mnozstvi_skladem, dph) Atributy id_zakaznika, cislo_zakazky, cislo_zbozi, jsou umělé klíče. Jde o akci, kde v rámci jedné zakázky lze objednat více kusů zboží stejného typu.Které z následujících výrazů relační algebry odpovídají na dotaz: Vypište seznam zákazníků (id_zakaznika, prijmeni, jmeno), kteří si objednali pouze zboží s názvem „NOKIA 6600“.
Relační algebra 2/2 ((Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi<>”NOKIA 6600”) [*] Zakaznik)[id_zakaznik, prijmeni, jmeno] - (Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”)) [*] Zakaznik[id_zakaznika, prijmeni, jmeno]) ((Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”)) [id_zakaznik] - (Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi<>”NOKIA 6600”)) [id_zakaznik]) [*] Zakaznik[id_zakaznika, prijmeni, jmeno] ((Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”)) - (Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi<>”NOKIA 6600”)) [*] Zakaznik[id_zakaznika, prijmeni, jmeno] ((Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”) [*] Zakaznik)[id_zakaznik, prijmeni, jmeno] - (Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi<>”NOKIA 6600”) [*] Zakaznik)[id_zakaznika, prijmeni, jmeno]) ((Zbozi(nazev_zbozi=”NOKIA 6600”) [*] Obsah_objednavky [*] Objednavka) [id_zakaznika] - (Zbozi(nazev_zbozi<>”NOKIA 6600”) [*] Objednavka [*] Obsah_objednavky) [id_zakaznika]) [*] Zakaznik[id_zakaznika, prijmeni, jmeno])
SQL 1/2 Je dána část databáze internetového obchodu s následujícími relačními schématy (pozor pro různé otázky mohou být tato schémata různá, byť popisují podobný problém): Zakaznik (id_zakaznika, jmeno, prijmeni, ulice, cislo_popisne, mesto, psc, telefon_doma, telefon_mobil, telefon_fax, email_doma, email_prace) Objednavka (cislo_zakazky, id_zakaznika, datum_objednani, zpusob_uhrady, dodaci_ulice, dodaci_cislo_popisne, dodaci_mesto, dodaci_psc) Obsah_objednavky (cislo_zakazky, cislo_zbozi, množství, prodejni_cena) Zbozi (cislo_zbozi, nazev_zbozi, cena_za_kus, mnozstvi_skladem, dph) Atributy id_zakaznika, cislo_zakazky, cislo_zbozi, jsou klíčové. V rámci jedné zakázky lze objednat více kusů zboží stejného typu nebo může být objednávka vystavena i na jiné služby, než prodej zboží. Které z následujících dotazů SQL odpovídají na dotaz: Vypište seznam zákazníků (id_zakaznika, prijmeni, jmeno), kteří si objednali pouze zboží s názvem „NOKIA 6600“.
SQL 2/2 SELECT Z.id_zakaznika, Z.prijmeni, Z.jmeno FROM Zakaznik Z, Objednavka O, Obsah_objednavky L, Zbozi K WHERE K.cislo_zbozi = L.cislo_zbozi AND O.cislo_zakazky = L.cislo_zakazky AND Z.id_zakaznika = O.id_zakaznika AND Z.id_zakaznik NOT IN (SELECT id_zakaznika FROM Objednavka O, Obsah_objednavky L, Zbozi Z WHERE O.cislo_zakazky = L.cislo_zakazky AND L.cislo_zbozi = K.cislo_zbozi AND K.nazev_zbozi <> “NOKIA 6600“) SELECT UNIQUE Z.id_zakaznik, Z.prijmeni, Z.jmeno FROM Zakaznik Z, Objednavka O, Obsah_objednavky L, Zbozi K WHERE K.cislo_zbozi = L.cislo_zbozi AND K.nazev_zbozi = “NOKIA 6600“ AND L.cislo_zakazky = O.cislo_zakazky AND Z.id_zakaznika = O.id_zakaznika AND Z.id_zakaznik IN ( SELECT id_zakaznika FROM Objednavka O, Obsah_objednavky L WHERE O.cislo_zakazky = L.cislo_zakazky GROUP BY L.cislo_zbozi HAVING COUNT(*) = 1) SELECT UNIQUE Z.id_zakaznik, Z.prijmeni, Z.jmeno FROM Zakaznik Z, Objednavka O, Obsah_objednavky L, Zbozi K WHERE K.cislo_zbozi = L.cislo_zbozi AND K.nazev_zbozi = “NOKIA 6600“ AND L.cislo_zakazky = O.cislo_zakazky AND Z.id_zakaznika = O.id_zakaznika AND Z.id_zakaznik NOT IN (SELECT id_zakaznika FROM Objednavka O, Obsah_objednavky L, Zbozi Z WHERE O.cislo_zakazky = L.cislo_zakazky AND L.cislo_zbozi = K.cislo_zbozi AND K.nazev_zbozi <> “NOKIA 6600“) SELECT Z.id_zakaznika, Z.prijmeni, Z.jmeno FROM Zakaznik Z, Objednavka O, Obsah_objednavky L, Zbozi K WHERE K.cislo_zbozi = L.cislo_zbozi AND O.cislo_zakazky = L.cislo_zakazky AND Z.id_zakaznika = O.id_zakaznika AND K.nazev_zbozi = “NOKIA 6600“
Funkční závislosti 1 – min. nered. pokr. Je dáno univerzální schéma relace části databáze OBCHOD. Eviduje zákazníky, objednávky a jejich jednotlivé položky a seznam prodávaného zboží. Každý zákazník může mít libovolné množství objednávek, objednávané zboží je rozepsáno po položkách. Denně jeden zákazník může vystavit jedinou objednávku. Ceny zboží se v čase mohou měnit, způsob úhrady také.Je dáno, že všechny zadané atributy jsou atomické, nejsou multi-položky ani složené atributy. OBCHOD (id_zakaznika, jmeno, prijmeni, ulice, cislo_popis, mesto, psc, telefon, datum_objed, zpusob_uhrady, dodaci_adresa, cislo_zbozi, mnoz_objed, cena_za_kus, mnoz_skladem)Které zadané a platné funkční závislosti obsahují redundantní cislo_zbozi, cena_za_kus → mnozstvi_skladem, id_zakaznika cislo_zbozi → cena_za_kus, mnozstvi_skladem datum_objed → id_zakaznika, zpusob_uhrady id_zakaznika, datum_objed → zpusob_uhrady, dodaci_adresa cislo_zbozi, id_zakaznika, → cena_za_kus, mnozstvi_skladem id_zakaznika, datum_objed → zpusob_uhrady, cislo_zbozi, mnozstvi_objed, cena_za_kus telefon → id_zakaznika id_zakaznika, datum_objed, dodaci_adresa → zpusob_uhrady id_zakaznika, datum_objed, zpusob_uhrady → dodaci_adresa dodaci_adresa, zpusob_uhrady → id_zakaznika, datum_objed
Funkční závislosti 2 Je dáno univerzální schéma relace části databáze OBCHOD. Eviduje zákazníky, objednávky a jejich jednotlivé položky a seznam prodávaného zboží. Každý zákazník může mít libovolné množství objednávek, objednávané zboží je rozepsáno po položkách. Denně jeden zákazník může vystavit jedinou objednávku. Ceny zboží se v čase mohou měnit, způsob úhrady také. Je dáno, že všechny zadané atributy jsou atomické, nejsou multi-položky ani složené atributy. OBCHOD (id_zakaznika, jmeno, prijmeni, ulice, cislo_popis, mesto, psc, telefon, datum_objed, zpusob_uhrady, dodaci_adresa, cislo_zbozi, mnoz_objed, cena_za_kus, mnoz_skladem) Určete uzávěr podmnožiny atributů { id_zakaznika, datum_objed }+. Atributy oddělte čárkou (např. datum_objed,zpusob_uhrady,dodaci_adresa). id_zakaznika,jmeno,prijmeni,ulice,cislo_popis,mesto,psc,telefon,datum_objed,zpusob_uhrady,dodaci_adresa
Funkční závislosti 3 – slovně Je dána část databáze internetového obchodu s následujícími relačními schématy (pozor pro různé otázky mohou být tato schémata různá, byť popisují podobný problém): Zakaznik (id_zakaznika, jmeno, prijmeni, ulice, cislo_popisne, mesto, psc, telefon, email) Objednavka (cislo_zakazky, id_zakaznika, datum_objednani, zpusob_uhrady, dodaci_ulice, dodaci_cislo_popisne, dodaci_mesto, dodaci_psc) Obsah_objednavky (cislo_zakazky, cislo_zbozi, mnozstvi) Zbozi (cislo_zbozi, nazev_zbozi, cena_za_kus, dph) Atributy id_zakaznika, cislo_zakazky, cislo_zbozi jsou umělé klíče. Zbozi je číselník prodávaného zboží, ne evidence skladu. Za předpokladu, že je schéma databáze navrženo správně, určete, které skutečnosti z reality a ze zadání toto schéma zohledňuje: V rámci jedné zakázky lze objednat pouze jeden kus stejného zboží. V rámci jedné objednávky lze objednat více druhů zboží. Je evidována historie vývoje cen u stejného typu zboží. V rámci jedné objednávky lze objednat více kusů stejného zboží. Objednávka je jednoznačně určena pomocí id_zakaznika. Na jedné kartě zboží nelze evidovat množství zboží na skladě. Obsah objednávky může existovat samostatně bez hlavičky objednávky (v tabl. Objednávka). Objednávka je jednoznačně určena pomocí cislo_zbozi. Stejné zboží v tabulce Zbozi může mít postupně různé DPH. Jedna objednávka může být pouze pro jednoho zákazníka.
Normální formy relací Je dána část databáze NEMOCNICE s relačními schématy Lekar (jmeno_lek, rod_cis_lek, obor) Pokoj (cis_pokoj, poc_luzek) Pacient (jmeno_pac, rod_cis_pac, obec, ulice, psc) Hospital (rod_cis_pac, datum_od, datum_do, diagnoza, cis_pokoj) Operace (rod_cis_lek, rod_cis_pac,datum_oper, hodina_oper) V zadání bylo, že každý lékař má jedinou hlavní specializaci (obor), pacient při jednom nemocničním pobytu má jednu hlavní diagnózu. Určete, ve které normální formě je schéma Lékař: BCNF 3NF 2NF 1NF v žádné
Která následující tvrzení charakterizují vztahy (shody a rozdíly) mezi síťovým (SDM) a relačním (RDM) datovým modelem? Základní rozdíl obou datových modelů je v realizaci vazeb na konceptuální úrovni. V SDM není možno při vyhledávání informace doplnit nepředpokládanou vazbu, v relačním se přidá vazební tabulka. Základní rozdíl obou datových modelů je v implementaci datových souborů. Vazby z reality typu M:N v obou modelech není možné realizovat ani pomocí transformace na konceptuální úrovni. Základní rozdíl obou datových modelů je v realizaci vazeb na databázové úrovni. RDM realizuje vazby pouze pomocí nových tabulek, SDM pouze pomocí ukazatelů. SDM realizuje n-ární vazby pomocí nového typu záznamu, RDM pomocí vazební tabulky. SDM realizuje pouze vazby s kardinalitou 1:M, relační navíc také M:N. U obou modelů je nutné na konceptuální úrovni transformovat vazby n-ární do vazební tabulky. Vazby z reality typu M:N v obou modelech je možné realizovat pomocí transformace na konceptuální úrovni.