Datový model z 1. úkolu lze převést do relačního modelu následovně.
Plavidlo (IDP, Kapacita, Nosnost, Barva)
Balon (IDP, Nadrz, Pisek)
Vzducholod (IDP, Baterie)
Zakaznik (IDZ, Jmeno, Adresa, Telefon)
Zamestnanec (IDZAM, Jmeno)
Kontrola (IDP, Datum, Opravy)
Vypujcka (IDV, Pujceno, Vraceno, IDP, IDZ, Vydal, Prevzal)
IO:
Balon [IDP] ⊆ Plavidlo [IDP]
Vzducholod [IDP] ⊆ Plavidlo [IDP]
Kontrola [IDP] ⊆ Plavidlo [IDP]
Vypujcka [IDP] ⊆ Plavidlo [IDP]
Vypujcka [IDZ] ⊆ Zakaznik [IDZ]
Vypujcka [vydal] ⊆ Zamestnanec [IDZAM]
Vypujcka [prevzal] ⊆ Zamestnanec [IDZAM]
Pozor na názvy atributů při přirozeném spojení .
Vyjádřete pomocí relační algebry následující dotazy.
{Vypujcka(Vraceno='2009-09-01') * Plavidlo} [IDP, Barva]
{Kontrola * Plavidlo * Vypujcka * Zakaznik}[Jmeno]
{ Vypujcka [Vypujcka.Vydal = Zamestnanec.IDZAM OR Vypujcka.Prevzal = Zamestnanec.IDZAM] Zamestnanec(jmeno = "Jan Novák") } [Pujceno, Vraceno]
{ Kontrola (Datum >= '2008-01-01' AND Datum <= '2008-12-31') * Plavidlo } [IDP, Barva]
{ Zakaznik \ {Vzducholod *> Vypujcka *> Zakaznik} } [Jmeno, Adresa]
Z1 := Zamestnanec Z2 := Zamestnanec { Vypujcka * Zakaznik [Vydal = Z1.IDZAM] Z1 [Prevzal = Z2.IDZAM] Z2 } [Pujceno, Vraceno, Zakaznik.Jmeno, Z1.Jmeno, Z2.Jmeno]
{ Vypujcka [Vydal -> IDZAM, IDP] ÷ Plavidlo [IDP] } *> Zamestnanec
Universum := Vypujcka[Vydal] x Plavidlo[IDP] Neuskutecnene := Universum \ Vypujcka [Vydal, IDP] Vyhovuji := Vypujcka[Vydal] \ Neuskutecnene [Vydal] Vysledek := Vyhovuji [Vydal = IDZAM> Zamestnanec
Universum := Zamestnanec[IDZAM] x Plavidlo[IDP] Neuskutecnene := Universum \ Vypujcka [Vydal->IDZAM, IDP] Vyhovuji := Zamestnanec[IDZAM] \ Neuskutecnene [IDZAM] Vysledek := Vyhovuji *> Zamestnanec