DBS - Individuální úkol č. 2 - sudý týden - řešení
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)
Řešení
- Vypište popis všech komponent, ve kterých našel chybu Jan Novák.
(Uzivatel(Jmeno = "Jan Novak") *> Tester [Tester.UID = HlaseniChyby.UID_Nahlasil> HlaseniChyby [HlaseniChyby.ID_KOMP = Komponenta.ID_KOMP>Komponenta)[Popis]
- Join s Tester neni nutny, protoze IO rikaji, ze hlaseni vytvari pouze tester.
- Vypište seznam všech komponent, jejichž chyby někdo komentoval v diskusi.
DiskusniPrispevek *> HlaseniChyby *> Komponenta
- Prirozena spojeni lze pouzit, protoze se atributy jako datum a UID jmenuji v kazde relaci jinak.
- 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).
(HlaseniChyby(UID_Uzavrel = NULL) *> Komponenta [Komponenta.UID_Sefprogramator = Uzivatel.UID> Uzivatel * Programator)[Jmeno]
- Vypište jména programátorů, kteří opravili chyby nalezené testerem Jan Novák.
(Tester * Uzivatel(Jmeno="Jan Novak") [Uzivatel.UID = HlaseniChyby.UID_Nahlasil> HlaseniChyby [HlaseniChyby.UID_Uzavrel = Uzivatel.UID> Uzivatel * Programator) [Jmeno]
- 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'.
HlaseniChyby(DatumCas_nahlasil ≥ "2008-01-01 0000" AND DatumCas_nahlasil ≤ "2008-01-31 2359") [HlaseniChyby.UID_nahlasil = Uzivatel.UID> Uzivatel * Tester
- Vypište seznam
testerůprogramátorů (Oprava 20.11.2008 23:38), kteří ještě neopravili chybu v komponentě s názvem “libDBS”.((Programator \ (Komponenta (Nazev = "libDBS") * HlaseniChyby [HlaseniChyby.UID_Uzavrel = Programator.UID> Programator)) * Uzivatel ) [Jmeno]
- Vypište jména programátorů, kteří již opravili chybu ve všech komponentách.
(( (Programator [Programator.UID = HlaseniChyby.UID_Uzavrel] HlaseniChyby)[UID, ID_KOMP] ÷ Komponenta[ID_KOMP]) * Uzivatel)[Jmeno]