====== DBS - úkol č. 2 - lichý týden - řešení ====== Letadlo (__ID_LETADLO__, Oznaceni, kapacita)\\ Jazyky (__ID_JAZ__, NazevJazyka)\\ Personal (__ID_PERS__, Jmeno)\\ Letuska (__ID_PERS__) -- //je to divné, ale je potřeba je nějak určit//\\ Pilot (__ID_PERS__, PilotniPrukaz)\\ UmiJazyk (__ID_PERS, ID_JAZ__)\\ Destinace (__ID_DEST__, JmenoLetiste)\\ Opatreni (__ID_OPATRENI__, Popis)\\ VyzadujeOpatreni (__ID_DEST, ID_OPATRENI__)\\ Let (__ID_LET__, DatumCasOdletu, DatumCasPriletu, RezervaceUkoncena, ID_LETADLO, ID_DEST_Z, ID_DEST_DO) -- :!: //pozor na join!//\\ Pasazer (__ID_PAS__, Jmeno)\\ Cestuje (__ID_PAS, ID_LET__)\\ NaPalube (__ID_PERS, ID_LET__)\\ ===== Dotazy ===== Jelikož jsem trochu zapomněl při zadávání úloh na to, že původní návrh zahrnoval i budoucí lety, pak jsou výrazy "letěl" nebo "nebyl v Riu" trochu problémové. V úkolech i zde beru řešení, kde se tato skutečnost nebere v úvahu. Správnější by bylo v dotčených případech selektovat relaci Let podle podmínky např. DatumCasOdletu < now(). Vyjádřete pomocí relační algebry následující dotazy: - Vypište popis všech opatření pro let s číslem 3.\\ * (Let(ID_LET==3) [Let.ID_DEST_DO==Destinace.ID_DEST] Destinace * VyzadujeOpatreni * Opatreni ) [Popis] - Vypište seznam letišť, kam letěl pilot Jan Novák. * (Pilot * Personal(Jmeno=="Jan Novak") * NaPalube * Let) [Let.ID_DEST_DO==Destinace.ID_DEST> Destinace - Vypište všechny lety do Ria de Janeira, které ještě mají otevřenou registraci. Atribut ''RegistraceUzavrena'' nabývá hodnot //true// nebo //false//. * Let(RegistraceUkoncena==false) - Vypište seznam destinací, kam se již letělo z New Yorku. * (Destinace(JmenoLetiste=="New York") [Destinace.ID_DEST == Let.ID_DEST_Z> Let ) [Let.ID_DEST_DO == Destinace.ID_DEST> Destinace - Vypište seznam pasažérů, kteří letěli mezi 1.1.2008 a 31.1.2008 včetně. Předpokládáme, že datum/čas lze porovnávat operátory "je větší" apod. Zápis je ve formátu 'YYYYMMDD HHMM'. * Let(DatumCasOdletu ≤ "20080131 2359" OR DatumCasPriletu ≥ "20080101 0000") * Cestuje *> Pasazer * Tady záleží na tom, jak si ty podmínky času přesněji definujete, já to beru jako platné, pokud byl let v tu dobu ve vzduchu. - Vypište jména pilotů, kteří ještě nebyli v Riu. * ((Pilot \ (Pilot <* (NaPalube * Let [Let.ID_DEST_Z == Destinace.ID_DEST OR Let.ID_DEST_DO == Destinace.ID_DEST] Destinace(JmenoLetiste="Rio De Janeiro") ))) * Personal)[Jmeno] - Vypište jména letušek, které již letěly na všech letadlech. * (((Letuska * NaPalube * Let) [ID_PERS, ID_LETADLO] ÷ Letadlo [ID_LETADLO]) * Personal)[Jmeno] ~~DISCUSSION~~