DBS - Individuální úkol č. 2 - sudý týden
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]
DiskusniPrispevek[UID] ⊆ Uzivatel[UID]
DiskusniPrispevek[ID_REPORTU] ⊆ HlaseniChyby[ID_REPORTU]
Pozor na natural joiny. Pár atributů jsem pro přehlednost přejmenoval.
Zadání
Vyjádřete pomocí relační algebry následující dotazy:
- Vypište popis všech komponent, ve kterých našel chybu Jan Novák.
- Vypište seznam všech komponent, jejichž chyby někdo komentoval v diskusi.
- Vypište šéfprogramátory, kteří mají ve svých komponentách nějakou nevyřešenou chybu (nevyřešenou chybu poznáte tak, že má místo ID programátora, který ji vyřešil, hodnotu NULL).
- Vypište jména programátorů, kteří opravili chyby nalezené testerem Jan Novák.
- Vypište seznam testerů, kteří nahlásili chybu 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'.
- Vypište seznam
testerůprogramátorů (Oprava 20.11.2008 23:38), kteří ještě neopravili chybu v komponentě s názvem “libDBS”. - Vypište jména programátorů, kteří již opravili chybu ve všech komponentách.