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]
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:
Vyjádřete pomocí SQL následující dotazy: