Uvažujme náš bugtracker z minulého úkolu. Pro připomenutí, zde je jedno z možných řešení.
Tento diagram lze jednoduše transformovat do relačního schématu (viz přednáška).
StupenZavaznosti (Priorita, Nazev)
Uzivatel (UID, Jmeno)
Programator (UID)
Tester (UID)
Komponenta (ID_KOMP, Nazev, Popis, UID_Sefprogramator)
HlaseniChyby(ID_REPORTU, PopisChyby, ID_KOMP, StupenZavaznosti, UID_Nahlasil, DatumCas_Nahlasil, UID_Uzavrel, DatumCas_Uzavrel)
DiskusniPrispevek (ID_PRISPEVKU, DatumCas, Text, UID, ID_REPORTU)
IO:
Programator[UID] ⊆ Uzivatel[UID]
Tester[UID] ⊆ Uzivatel[UID]
Komponenta[UID_Sefprogramator] ⊆ Programator[UID]
HlaseniChyby[ID_KOMP] ⊆ Komponenta[ID_KOMP]
HlaseniChyby[StupenZavaznosti] ⊆ StupenZavaznosti[Priorita]
HlaseniChyby[UID_Nahlasil] ⊆ Tester[UID]
HlaseniChyby[UID_Uzavrel] ⊆ Programator[UID] – je NULL iff chyba není opravena
DiskusniPrispevek[UID] ⊆ Uzivatel[UID]
DiskusniPrispevek[ID_REPORTU] ⊆ HlaseniChyby[ID_REPORTU]
Pozor na natural joiny. Pár atributů jsem pro přehlednost přejmenoval.
Vyjádřete pomocí relační algebry následující dotazy:
Vyjádřete pomocí SQL následující dotazy: