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í

  1. 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.
  2. 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.
  3. 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]
  4. 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]
  5. 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
  6. 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]
  7. 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]