Die Olympia-Datenbank: Extraaufgabe

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.

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

sportler: id, name, vorname*, geburtstag, land, geschlecht
{PK: id}
{UNIQUE: name, vorname*, geburtstag, land, geschlecht}
{geschlecht IN ('w', 'm')}

wettkampf: id, sportart, wettkampfart, geschlecht, sportstaette, beginn*
{PK: id}
{UNIQUE: sportart, wettkampfart, geschlecht}
{geschlecht IN ('w', 'm')}

teilnahme: s_id, w_id, platz*, doping*, disqualifiziert
{PK: s_id, w_id}
{FK: s_id -> sportler: id}
{FK: w_id -> wettkampf: id}
{platz > 0}
{NOT(doping IS TRUE AND disqualifiziert IS FALSE)}
{NOT(disqualifiziert IS TRUE AND platz IS NOT NULL)}

Aufgabe

Wenn Sie eine ech­te Her­aus­for­de­rung such, dann lösen Sie zusätz­lich zu den bis­he­ri­gen Olym­pia-Auf­ga­ben, die Auf­ga­be, die Sie in der Datei olympia_aufgabe_extra.sql vor­fin­den.