Otázka č. 1 (bodů za otázku: 4)
Agendy - redundance Která z následujících tvrzení charakterizují redundanci dat v databázi? Ø Ø Ø Ø Ø Ø Ø
Je to opakování stejných dat pouze v různých souborech. Je zdrojem nekonzistence dat Redundance může být zdrojem anomálií při vkládání Vyznačuje se jí každé agendové zpracování dat Redundance může být zdrojem anomálií při mazání dat z databáze. Může se vyskytovat u agendové technologie. Může se vyskytovat u databázové technologie.
Agendy – konzistence Která z následujících tvrzení charakterizují konzistenci dat v databázi? Ø Ø Ø Ø Ø Ø
Redundance dat může být zdrojem nekonzistence dat. Jsou-li data integritní, jsou také konzistentní. Jsou-li data konzistentní, nemusí být také integritní. Vzájemná shoda údajů Je to vzájemný soulad údajů v databázi Je to shoda stejných údajů zaznamenaná v různých souborech databáze
Agendy – integrita Která z následujících tvrzení charakterizují integritu dat v databázi? Ø Ø Ø Ø
Jsou-li data konzistentní, nemusí být také integritní. Jsou-li data integritní, jsou také konzistentní. Porušuje ji chybný zápis dat uživatele. Je to soulad údajů v realitě a v databázi.
Otázka č. 2 (bodů za otázku: 5)
DB – typ entity Označte pojmy odpovídající pojmu typ entity v různých datový modelech. Ø Ø Ø Ø Ø Ø Ø Ø
Relační schéma Množina reálných objektů Množina řádků tabulky Obdélníkový uzel ERD Typ záznamu Struktura tabulky Výraz definující název schématu, množinu jeho atributů a k atributům obory hodnot Lineární zápis typu entity
DB – entita Označte pojmy odpovídající pojmu entita v různých datový modelech. Ø Ø Ø Ø
Prvek relace Řádek tabulky Prvek podmnožiny kartézského součinu domén atributů Výskyt záznamu
DB – relace Označte pojmy odpovídající pojmu relace v různých datových modelech Ø Ø Ø Ø Ø
množina entit množina reálných objektů množina všech řádků tabulky obsah tabulky konečná podmnožina kartézského součinu domén atributů
DB – relační schéma Označte pojmy odpovídající pojmu relační schéma v různých dat.modelech Ø Ø Ø Ø Ø Ø Ø
Výraz definující název schématu,možnosti jeho atributů a k atributům obory hodnot Typ entity Množiny entit(zobrazeno jako obsah tabulky + množina řádků) Typ záznamu Obdélníkový uzel ERD Konečná množina relačních schémat Struktura tabulky
DB – ERD Které skutečnosti z reality a která integritní omezení je možno zobrazit v ERD? Ø Ø Ø Ø Ø
typ vazby povinnost členství ve vazbě kardinalitu vazby typ entity množinu atributů
Otázka č. 3 (bodů za otázku: 5)
Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím přímé adresování s nejednoznačnou hašovací funkcí adresa=hash(login). Zaměstnaná Ilona Večeřová s loginem vec033 byla propuštěna. 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). 1.
vyhledej v datovém souboru Zam sekvenčně záznam se jménem „Ilona Večeřová“, zapamatuj si jeho adresu v proměnné Dadresa 2. vyhledej v datovém souboru Zam binárně záznam se jménem „Ilona Večeřová“, zapamatuj si jeho adresu v proměnné Dadresa 3. vyhledej v indexovém souboru binárně záznam se jménem „Ilona Večeřová“, zapamatuj si jeho adresu v proměnné Aadresa 4. pomocí hašovací funkce vypočti adresu záznamu s loginem „vec033“ v datovém souboru Zam a ulož do proměnné Hadresa 5. přenes vyhledaný záznam z indexového souboru Ijmeno do paměti počítače do proměnných Ijmeno, Iadresa 6. vyhledej v datovém souboru Zam přímo záznam s adresou Hadresa 7. vymaž vyhledaný záznam v Zam 8. je-li v Zam na adrese Hadresa jediný záznam, označ jej jako neplatný 9. je-li v Zam na adrese Hadresa více záznamů, najdi ve zřetězeném seznamu těchto záznamů záznam s loginem „vec033“ a označ jej jako neplatný 10. vyhledej v indexovém souboru záznam s adresou Hadresa a označ jej jako neplatný 11. vypočti pomocí hašovací funkce adresu posledního datového záznamu Nadresa a přenes jej na adresu Hadresa Ø 4, 6, 8, 9, 10, 11
Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím přímé adresování s nejednoznačnou hašovací funkcí adresa=hash(login). Do zaměstnání nastoupila nová osoba Ilona Večeřová s loginem vec033 na funkci sekretářka, s platem 12000 Kč. 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). 1. 2. 3.
dosaď Plogin:=“vec033“ dosaď Plogin:=“vec033“, Pjmeno:=“Ilona Večeřová“,Pfunkce:=“sekretářka“, Pplat:=12000 pomocí hašovací funkce vypočti adresu nového záznamu se jménem „Ilona Večeřová“ v datovém souboru Zam a ulož ji do proměnné Aadresa 4. pomocí hašovací funkce vypočti adresu nového záznamu s loginem „vec033“ v datovém souboru Zam a ulož ji do proměnné Nadresa 5. vyhledej v datovém souboru Zam přímo záznam s adresou Nadresa 6. vymaž v Zam záznam s vyhledanou adresou Aadresa 7. není-li v Zam na adrese Nadresa žádný záznam, zapiš na tuto adresu záznam s hodnotami Plogin, Pjmeno, Pplat, Pfunkce 8. jsou-li v Zam na adrese Nadresa záznamy, najdi konec zřetězeného seznamu těchto záznamů a na konec seznamu zapiš záznam s hodnotami Plogin, Pjmeno, Pplat, Pfunkce 9. je-li v Zam na adrese Hadresa více záznamů, najdi ve zřetězeném seznamu těchto záznamů záznam s loginem „vec033“ a zapamatuj si jeho adresu v proměnné Ladresa 10. zapiš nový záznam na konec datového souboru Zam s hodnotami Plogin, Pjmeno, Pplat, Pfunkce 11. zapiš do datového souboru Zam na adresu Hadresa záznam s hodnotami Plogin, Pjmeno, Pplat, Pfunkce Ø 2, 4, 5, 7, 8
Otázka č. 4 (bodů za otázku: 5)
Konceptuální model databáze neobsahuje Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø Ø
Funkční závislosti mezi entitami Popis funkcí nad databází Seznam všech atributů databáze Jen binární vazby Entity Integritní omezení pro fce nad databází Množiny entit Hierarchii entit Množiny entit vstupujících do vztahu Obsah databáze Vazby typu M:N Množiny entit vstupujících do vztahu
Konceptuální model transformovaný pro relační databázi obsahuje (popř. může obsahovat) Ø Ø Ø Ø Ø Ø Ø
Integritní omezení pro domény atributů ERD Domény atributů Slovně popsaná pravidla definující obsah databáze Integritní omezení týkající se vazeb Lineární zápis typů vazeb Vazební tabulky
Konceptuální model databáze odpovídající realitě obsahuje Ø Lineární zápis typů entit Ø Lineární zápis typů vazeb Ø ERD
Otázka č. 5 (bodů za otázku: 5) 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_pac, rod_cis_lek, datum_oper, hodina_oper) V zadání bylo, že každý lékař má jeden hlavní obor - specializaci, pacient při jedné hospitalizaci - nemocničním pobytu má jednu hlavní diagnózu. Které z následujících výrazů relační algebry odpovídají na dotaz:
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
Otázka č. 6 (bodů za otázku: 8) 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)
Vyberte platné funkční závislosti mezi zadanými atributy. Ø id_zakaznika, datum_objed --> zpusob_uhrady, dodaci_adresa Ø id_zakaznika, datum_objed, dodaci_adresa --> zpusob_uhrady Ø id_zakaznika --> jmeno, prijmeni, ulice, cislo_popis, mesto, psc, telefon Ø id_zakaznika, datum_objed, zpusob_uhrady --> dodaci_adresa Ø id_zakaznika, datum_objed, cislo_zbozi --> mnozstvi_objed, cena_za_kus Ø cislo_zbozi --> cena_za_kus, mnozstvi_skladem Které zadané a platné funkční závislosti obsahují redundantní atributy? Ø id_zakaznika, datum_objed, zpusob_uhrady --> dodaci_adresa Ø id_zakaznika, datum_objed, dodaci_adresa --> zpusob_uhrady
Je dáno univerzální schéma relace části databáze NEMOCNICE s evidencí hospitalizací, časového plánu operací, evidencí pacientů a jejich umístění na pokojích a evidencí lékařů a jejich specializací (obor). Pacient může být operován několikrát, ale nikdy ve stejný den. NEMOCNICE (jmeno_lek, rod_cis_lek, obor, jmeno_pac, rod_cis_pac, obec_pac, ulice_pac, psc_pac, datum_od, datum_do, diagnoza, cis_pokoj, poc_luzek, datum_oper, hodina_oper) Datum_od a datum_do znamenají datum přijetí a propuštění pacienta z nemocnice.
Která podmnožina zadaných platných funkčních závislostí tvoří neredundandní pokrytí? Ø rod_cis_pac --> obec_pac, ulice_pac, psc_pac, jmeno_pac Ø hodina_oper, datum_oper --> rod_cis_lek, rod_cis_pac Ø rod_cis_lek --> jmeno_lek, obor Ø cis_pokoj --> poc_luzek Ø rod_cis_pac, datum_od --> datum_do, diagnoza
Které zadané platné funkční závislosti obsahují redundantní atributy? Ø jmeno_lek, hodina_oper, datum_oper --> rod_cis_pac Ø hodina_oper, datum_oper, rod_cis_pac --> rod_cis_lek Ø rod_cis_pac, datum_od, datum_do --> diagnoza Ø rod_cis_pac, hodina_oper, datum_oper --> jmeno_lek
Které zadané platné funkční závislosti neobsahují redundantní atributy? Ø rod_cis_pac, datum_od --> datum_do, diagnoza Ø rod_cis_pac --> jmeno_pac, datum_oper, hodina_oper Ø rod_cis_lek --> jmeno_lek, obor Ø cis_pokoj --> poc_luzek Ø rod_cis_pac --> obec_pac, ulice_pac, psc_pac Ø rod_cisl_lek, rod_cisl_pac --> datum_oper,hodina_oper
Je dána část databáze NEMOCNICE s relačními schématy Lékař (jmeno_lek, rod_cis_lek, obor) Pokoj (cis_pokoj, poc_luzek) Pacient (jmeno_pac, rod_cis_pac, obec, ulice, psc, diagnoza, cis_pokoj) Operace (rod_cis_lek, datum_oper, hodina_oper, jmeno_pac) 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. Je schéma navrženo správně, s atomickými atributy a bez redundancí? Ø Ø Ø Ø
Ne, některé schéma obsahuje redundance. Ne, některá schémata nejsou ve 3NF. Ne, některé schéma obsahuje neatomické atributy. Ne, některé schéma má chybně zvolený cizí klíč.
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. Datum_od a datum_do znamenají datum přijetí a propuštění pacienta z nemocnice. Je schéma navrženo správně, s atomickými atributy a bez redundancí? Ø Ano, všechna schémata jsou alespoň ve 3NF. Je dána část databáze DETSKY LEKAR s relačními schématy Dite (rod_cis, jmeno, dat_nar, mesto, ulice, psc) Typ_ockovani (id_typ, mesic, typ, popis) Ockovani (rod_cis, mesic, datum, cas, id_typ) Je schéma databáze navrženo správně, s atomickými atributy a bez redundancí? Ø Ø Ø Ø Ø Ø
Ne, schéma Ockovani není ve 3NF. Ne, schéma Typ_ockovani není ve 3NF. Ne, schéma Typ_ockovani obsahuje redundance. Ne, schéma Ockovani obsahuje závislost na podklíči. Ne, schéma Ockovani obsahuje redundance. Ne, schéma Typ_ockovani obsahuje závislost na podklíči.
Je dána část databáze internetového obchodu s následujícími relačními: 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: Ø Ø Ø Ø Ø
Objednávka je jednoznačně určena pomocí cislo_zakazky. Jedna objednávka může být pouze pro jednoho zákazníka. Na jedné kartě zboží nelze evidovat množství zboží na skladě. V rámci jedné objednávky lze objednat více druhů zboží. V rámci jedné objednávky lze objednat více kusů stejného zboží.
Otázka č. 7 (bodů za otázku: 8) 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 Lekar: Ø BCNF
Určete, ve které normální formě je schéma Pacient: Ø BCNF
Určete, ve které normální formě je schéma Pokoj: Ø BCNF
Určete, ve které normální formě je schéma Operace: Ø BCNF
Je dána část databáze DETSKY LEKAR, s relačními schématy: Dite (rod_cis, jmeno, dat_nar, mesto, ulice, psc) Typ_ockovani (id_typ, mesic, typ, popis) Ockovani (rod_cis, mesic, datum, cas, id_typ) Navsteva (rod_cis, datum, diagnoza, vykon) Určete, ve které normální formě je schéma Typ_ockovani: Ø 1NF
Určete, ve které normální formě je schéma Ockovani: Ø 1NF
Určete, ve které normální formě je schéma Navsteva: Ø v žádné
Otázka č. 8 (bodů za otázku: 8) 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_pac, rod_cis_lek, datum_oper, hodina_oper) V zadání bylo, že každý lékař má jeden hlavní obor – specializaci, pacient při jedné hospitalizaci – nemocničním pobytu má jednu hlavní diagnozu. Které z následujících výrazů relační algebry odpovídají na dotaz: Vypište seznam jmen, oborů a diagnoz lékařů, kteří byli operováni. Ø (Operace[rod_cis_pac][rod_cis_pac = rod_cis_lek] Lekar [*] Hospital[rod_cis_pac, diagnoza]) [jmeno_lek, obor, diagnoza] Ø Lekar[rod_cis_lek = rod_cis_pac] Operace [*] Hospital) [jmeno_lek, obor, diagnoza]
Vypište jména a obory operovaných lékařů Ø (Lekar [rod_cis_lek = rod_cis_pac] Operace) [jmeno_pac, obor] Ø ((Operace [rod_cis_pac]) [rod_cis_pac = rod_cis_lek ] Lekar) [jmeno_lek, obor]
Vypište jména a obory lékařů, kteří nebyli nikdy hospitalizováni v této nemocnici Ø ((Lekar[rod_cis_lek] - (Hospital[rod_cis_pac = rod_cis_lek] Lekar) [rod_cis_lek]) [*] Lekar) [jmeno_lek, obor] Vypište datum, rodné čísla a jména operovaných pacientů s diagnózou „slepé střevo“. Ø Pacient [*] Operace [*] Hospital (diagnoza=„slepé střevo“) [datum_oper, rod_cis_pac, jmeno_pac]
Je dána část databáze internetového obchodu s následujícími relačními schématy: 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 nikdy neobjednali zboží s názvem „NOKIA 6600“. Ø (Zakaznik[id_zakaznik] - (Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”)) [id_zakaznik]) [*] Zakaznik) [id_zakaznik, prijmeni, jmeno] Ø (Zakaznik - ((Objednavka [*] Obsah_objednavky [*] Zbozi(nazev_zbozi=”NOKIA 6600”)) [id_zakaznik] [*] Zakaznik)) [id_zakaznik, prijmeni, jmeno] Vypište seznam zákazníků (id_zakaznika, prijmeni, jmeno), kteří si objednali pouze zboží s názvem „NOKIA 6600“. Ø ((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”) [*] 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])
Otázka č. 9 (bodů za otázku: 6) 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_pac, rod_cis_lek, datum_oper, hodina_oper) V zadání bylo, že každý lékař má jeden hlavní obor = specializaci, pacient při jedné hospitalizaci = nemocničním pobytu má jednu hlavní diagnózu. Které z následujících dotazů SQL odpovídají na dotaz: Vypište čísla pokojů a počty pacientů na nich hospitalizovaných ke dni 1.1.2005. Ø
SELECT cis_pokoj, COUNT(*) FROM Hospital WHERE datum_od <=1.1.2005“ AND datum_do >= „1.1.2005“ GROUP BY cis_pokoj
Vypište čísla pokojů a počty pacientů na nich hospitalizovaných během prosince 2004 (včetně přijatých dříve a propuštěných později). Ø SELECT cis_pokoj, COUNT(*) FROM Hospital WHERE datum_od < „1.1.2005“ AND datum_do >= „1.12.2004“ GROUP BY cis_pokoj
Vypište za každý den prosince 2004 datum a počet operací realizovaných lékařem Karlem Zárubou Ø SELECT datum_oper, COUNT(*) FROM Operace O, Lekar L WHERE datum_oper BETWEEN „1.12.2004“ AND „31.12.2004“ AND L.jmeno_lek = „Karel Záruba“ AND O.rod_cis_lek = L.rod_cis_lek GROUP BY datum_oper
Je dána část databáze DETSKY LEKAR, evidující objednávání a očkování dětí. O dětech eviduje jméno, rodné číslo, datum narození, adresu, typ očkování, název nemoci, proti které je dítě očkováno a slovní popis očkování, o typech očkování dále, ve kterém měsíci života se očkování provádí. Pokud se totéž očkování opakuje v rúzném věku, je evidováno znovu s jiným měsícem a stejným popisem. Pro objednávky je nutné evidovat kalendář dnů a časů pro očkování, aby byl přehled o volných termínech. Jedno očkování trvá 10 minut. Databáze má relační schémata: Dite (rod_cis, jmeno, dat_nar, město, ulice, psc) Typ_ockovani (id_typ, mesic, typ, popis) Ockovani (rod_cis, mesic, datum, cas, id_typ) Které z následujících SQL dotazů odpovídají na otázku:
Vypište počty očkovaných dětí podle názvů nemocí v roce 2005 Ø SELECT typ, COUNT id_typ FROM Ockovani O, Typ_ockovani T WHERE O.id_typ=T.id_typ AND datum >=1.1.2005 GROUP BY id_typ ORDER BY id_typ
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 nikdy neobjednali zboží s názvem „NOKIA 6600“. Ø SELECT id_zakaznika, prijmeni, jmeno FROM Zakaznik WHERE id_zakaznika NOT IN (SELECT id_zakaznika FROM Objednavka WHERE cislo_zakazky IN (SELECT cislo_zakazky FROM Obsah_objednavky WHERE cislo_zbozi IN (SELECT cislo_zbozi FROM Zbozi WHERE nazev_zbozi = “NOKIA 6600“))) Ø SELECT id_zakaznika, prijmeni, jmeno FROM Zakaznik WHERE id_zakaznika NOT IN (SELECT id_zakaznika FROM Objednavka O, Obsah_objednavky L, Zbozi Z WHERE O.cislo_zakazky = L.cislo_zakazky AND L.cislo_zbozi = Z.cislo_zbozi AND Z.nazev_zbozi = “NOKIA 6600“)
Vypište seznam zákazníků (id_zakaznika, prijmeni, jmeno), kteří si objednali pouze zboží s názvem „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“)
Pro jednotlivé zákazníky vypište za všechny jejich objednávky seznam obsahující id_zakaznika, počet druhů objednaného zboží, celkovou cenu za všechny objednávky. Do výpisu zahrňte pouze zákazníky, jejichž součet ceny za všechny objednávky přesáhl 10.000,- Kč. Ø SELECT id_zakaznika, COUNT( UNIQUE cislo_zbozi), SUM(prodejni_cena) FROM Obsah_objednavky L, Objednavka O WHERE O.cislo_zakazky = L.cislo_zakazky GROUP BY id_zakaznika HAVING SUM(prodejni_cena) > 10000
Otázka č. 10 (bodů za otázku: 5)
Která následující tvrzení charakterizují vztahy (shody a rozdíly) mezi síťovým (SDM) a relačním (RDM) datovým modelem? Ø 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 realizaci vazeb na databázové úrovni. Ø SDM realizuje n-ární vazby pomocí nového typu záznamu, RDM pomocí vazební tabulky. Ø 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. Ø U obou modelů je nutné na konceptuální úrovni transformovat vazby typu M:N na vazby 1:M.
Která následující tvrzení charakterizují rozdíl mezi síťovým (SDM) a relačním (RDM) datovým modelem? Ø Ø Ø Ø Ø Ø
SDM realizuje n-ární vazby pomocí nového typu záznamu, RDM pomocí vazební tabulky. U obou modelů je nutné na konceptuální úrovni transformovat vazby typu M:N na vazby 1:M. Základní rozdíl obou datových modelů je v realizaci vazeb na databázové úrovni. Vazby z reality typu M:N v obou modelech je možné realizovat pomocí transformace na konceptuální úrovni. U obou modelů je nutné na konceptuální úrovni transformovat vazby n-ární do vazební tabulky. 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.
Charakteristika síťového datového modelu Ø Ø Ø Ø
V SDM se vazby musí deklarovat předem V SDM se realizace vazeb urychluje vyhledáváním záznamů V SDM se vazby typu M:N musí transformovat na 1:M V SDM se vazby realizují pomocí ukazatelů z vlastníka setu na prvního člena setu,odtud zřetězeně na další členy setu a z posledního člena setu na vlastníka setu Ø V SDM se vazby nazývají sety Ø V SDM není možno realizovat přímo unární vazby
by Dave and Adka thx to SWE, Carl28, Lopata, rybar73, Losna, Jelc @2006