prev up next


Aufgabe 4.3 (30 Punkte)

Gegeben sei das folgende Schema einer Datenbank für Segel-Regatten:

Bootsklasse: {[Klasse, Bauart]}
Wettfahrt: {[FahrtNr, Name, Datum, Zeit]}
Teilnehmer: {[SegelNr, Bootsname, Bootsklasse, Baujahr, Eigentümer]}
Platzierung: {[SegelNr, FahrtNr, Platz]}

Formulieren Sie die folgenden Fragen als Ausdrücke der Relationenalgebra:

  1. Wie lauten Baujahr und Bauart des Bootes mit der SegelNr 'GER42'?
  2. Wie lauten die Nummern der Wettfahrten, in denen die ersten beiden Plätze von Booten der selben Bootsklasse belegt wurden?
  3. Welche Teilnehmer haben noch keine Wettfahrt gewinnen können?
  4. Wie lauten die Eigentümer, die mindestens einmal gewonnen haben, aber nicht mit einem Boot der Bauart 'Jolle'?
  5. Welche Boote (SegelNr) nahmen an allen Wettfahrten teil?

Musterlösung vom 25.05.2009:

  1. $ \Pi_{Bauart, Baujahr} ( \sigma_{SegelNr='GER42'}( \rho_{Klasse \leftarrow Bootsklasse} (Teilnehmer )) \Join Bootsklasse ) $
  2. $ \Pi_{Erste.FahrtNr}(\rho_{Erste}(\sigma_{Platz = 1}(Teilnehmer \Join Platzierung)) $
    $ \Join_{Erste.Bootsklasse = Zweite.Bootsklasse \wedge Erste.FahrtNr = Zweite.FahrtNr} $
    $ \rho_{Zweite}(\sigma_{Platz = 2}(Teilnehmer \Join Platzierung))) $
  3. $ Teilnehmer - \Pi_{sch(Teilnehmer)} ( \sigma_{Platz=1} ( Platzierung ) \Join Teilnehmer ) $
  4. $ \Pi_{Eigent\uml {u}mer}(\sigma_{Platz = 1 \wedge Bauart \not= 'Jolle'}((\rho_{Klasse \leftarrow Bootsklasse}(Teilnehmer) \Join Bootsklasse) \Join Platzierung)) $
  5. $ (\Pi_{SegelNr, FahrtNr}(Platzierung)) \div ( \Pi_{FahrtNr} ( Wettfahrt ))$


prev up next