DBS - Individuální úkol č. 3 - lichý týden
Uvažujme evidenci letů z minulého úkolu. Pro připomenutí, zde je ER model jednoho z možných řešení.
Tento diagram lze jednoduše transformovat do relačního schématu (viz poslední přednáška).
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)
IO:
Letuska [ID_PERS] ⊆ Personal [ID_PERS]
Pilot [ID_PERS] ⊆ Personal [ID_PERS]
UmiJazyk [ID_PERS] ⊆ Letuska [ID_PERS]
UmiJazyk [ID_JAZ] ⊆ Jazyky [ID_JAZ]
VyzadujeOpatreni [ID_DEST] ⊆ Destinace[ID_DEST]
VyzadujeOpatreni [ID_OPATRENI] ⊆ Opatreni[ID_OPATRENI]
Let [ID_LETADLO] ⊆ Letadlo[ID_LETADLO]
Let [ID_DEST_Z] ⊆ Destinace[ID_DESTINACE]
Let [ID_DEST_DO] ⊆ Destinace[ID_DESTINACE]
Cestuje [ID_PAS] ⊆ Pasazer[ID_PAS]
Cestuje [ID_LET] ⊆ Let[ID_LET]
NaPalube [ID_PERS] ⊆ Personal[ID_PERS]
NaPalube [ID_LET] ⊆ Let[ID_LET]
Zadání
Opět považujte všechny lety za proběhlé, takže pokud je napsáno “letěli”, nerozlišujte, zda-li je let datován na budoucí datum.
Vyjádřete pomocí relační algebry následující dotazy:
- Vypište pasažéry (aspoň jména), kteří letěli do destinace, kam je “Zakázán dovoz hovězího”.
- Vypište letušky (aspoň jména), které sloužily s pilotem “Jan Novák”.
- Vypište jména letišť, kam letěla už všechna letadla (ty stroje).
Vyjádřete pomocí SQL následující dotazy:
- Vypište seznam (aspoň jména) všech lidí a u každého z nich počet letů do New Yorku. Lidé, kteří tam nebyli, budou mít 0.
- Vypište seznam lidí (aspoň jména), kteří neletěli Airbusem (žádným) - název letadla hledejte v atributu Oznaceni, ale pozor, je to řetězec, který bude třeba “Airbus A320”, takže je potřeba testovat pomocí LIKE.
- Vypište letadla (všechny atributy), která byla použita aspoň 100x.