170 likes | 254 Views
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í.
E N D
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.