Die Olympia-Datenbank: Anfragen (Teil 3)

Lösen Sie die fol­gen­de Auf­ga­be mit Post­greS­QL.

Für spe­zi­el­le Syn­tax­fra­gen steht Ihnen die offi­zi­el­le Online-Doku­men­ta­ti­on von Post­greS­QL zur Ver­fü­gung.

Die Daten­ty­pen wer­den in Kapi­tel 8 des Post­greS­QL-Manu­als beschrie­ben. Die Datums­ty­pen DATE und TIMESTAMP fin­den Sie im Post­greS­QL-Manu­al in den Abschnit­ten Date/​Time Types und Date/​Time Func­tions and Ope­ra­tors.

Das Datenmodell

Gege­ben sei wie­der fol­gen­de Daten­bank zur Spei­che­rung von olym­pi­schen Wett­be­wer­ben:

Datenbankschema

[sql]sportler: id, name, vor­na­me*, geburts­tag, land, geschlecht
{PK: id}
{UNIQUE: name, vor­na­me*, geburts­tag, land, geschlecht}
{geschlecht IN („w”, „m”)}

wett­kampf: id, sport­art, wett­kampf­art, geschlecht, sport­sta­et­te, beginn*
{PK: id}
{UNIQUE: sport­art, wett­kampf­art, geschlecht}
{geschlecht IN („w”, „m”)}

teil­nah­me: s_​id, w_​id, platz*, doping*, dis­qua­li­fi­ziert
{PK: s_​id, w_​id}
{FK: s_​id -> sport­ler: id}
{FK: w_​id -> wett­kampf: id}
{platz > 0}
{NOT(doping IS TRUE AND dis­qua­li­fi­ziert IS FALSE)}
{NOT(disqualifiziert IS TRUE AND platz IS NOT NULL)}
[/​sql]

Aufgabe

Lösen Sie die Auf­ga­ben, die Sie in der Datei olympia_aufgabe_3.sql vor­fin­den. Kopie­ren Sie die­se Datei auf Ihren Rech­ner und tra­gen Sie Ihre Lösun­gen in die­se Datei ein.

Ach­ten Sie bit­te dar­auf, dass Ihre SQL-Anfra­gen für jeden gül­ti­gen Daten­be­stand genau die gewünsch­ten Infor­ma­tio­nen als Ergeb­nis aus­ge­ben, nicht mehr und nicht weni­ger.

Mus­ter­lö­sun­gen:
olympia1_aufgabe_3_loesung.sql,
olympia2_aufgabe_3_loesung.sql,
olympia3_aufgabe_3_loesung.sql

Hausaufgabe

Lösen Sie die Auf­ga­ben a, f und g ein zwei­tes Mal, aber auf eine ande­re Art und Wei­se als beim ers­ten Mal. Das heißt, ver­wen­den Sie zur Lösung der Pro­ble­me jeweils min­des­tens einen SQL-Ope­ra­tor, den Sie in der ers­ten Lösung nicht ver­wen­det haben. (Es reicht nicht aus, aus einem Left-Join einen Right-Join zu machen o. Ä. Die Lösun­gen sol­len sich von der Idee her unter­schei­den.)