Aufgabenblock — AFB III
Zehn Aufgaben zum Entwerfen, Beurteilen und Stellungnehmen — mit Musterlösung. Schwerpunkt: Modellierung mit dem ER-Modell und ihre Folgen für Schema und Abfragen.
Material für alle Aufgaben: Radsportliga der Schulen
Eine Liga verwaltet Teams, Fahrerinnen und Fahrer sowie Rennen. Platz und Fahrzeit (Minuten) werden je Start gespeichert; wer aufgibt, erhält NULL. Fiona fährt (noch) für kein Team.
Team(TeamNr, Name, Stadt)
Fahrer(FahrerNr, Name, Jahrgang, TeamNr)
Rennen(RennenNr, Titel, Datum, Km)
Start(FahrerNr, RennenNr, Platz, Minuten)
| TeamNr | Name | Stadt |
|---|---|---|
| T1 | Nordwind | Kiel |
| T2 | Speiche | Hannover |
| T3 | Kette | Bremen |
| FahrerNr | Name | Jahrgang | TeamNr |
|---|---|---|---|
| F1 | Anna | 2007 | T1 |
| F2 | Bela | 2008 | T1 |
| F3 | Cleo | 2007 | T2 |
| F4 | Deniz | 2006 | T2 |
| F5 | Emre | 2008 | T3 |
| F6 | Fiona | 2007 | NULL |
| RennenNr | Titel | Datum | Km |
|---|---|---|---|
| R1 | Frühjahrsklassiker | 12.04. | 80 |
| R2 | Bergpreis | 03.05. | 45 |
| R3 | Stadtkriterium | 21.06. | 30 |
| FahrerNr | RennenNr | Platz | Minuten |
|---|---|---|---|
| F1 | R1 | 2 | 118 |
| F2 | R1 | 5 | 125 |
| F3 | R1 | 1 | 115 |
| F4 | R1 | NULL | NULL |
| F1 | R2 | 3 | 96 |
| F3 | R2 | 1 | 90 |
| F5 | R2 | 2 | 93 |
| F2 | R3 | 1 | 42 |
| F4 | R3 | 2 | 43 |
| F6 | R3 | 3 | 45 |
Teams werden von Sponsoren (Firmenname, Branche) unterstützt; ein Sponsor kann mehrere Teams fördern, ein Team hat mehrere Sponsoren. Je Förderung wird der Betrag gespeichert. Entwerfen Sie die Erweiterung als ER-Ausschnitt und als Schema.
Musterlösung anzeigen (zählt als erledigt)
Entitätstyp Sponsor (SponsorNr, Firmenname, Branche), Beziehungstyp foerdert zwischen Sponsor (n) und Team (m) mit Attribut Betrag. Schema: Sponsor(SponsorNr, Firmenname, Branche), foerdert(SponsorNr, TeamNr, Betrag). Ein künstlicher Schlüssel ist sinnvoll, weil Firmennamen sich ändern können.
Ein Mitglied schlägt vor, Platz und Minuten als Attribute von Fahrer zu speichern und die Tabelle Start zu streichen. Beurteilen Sie den Vorschlag.
Musterlösung anzeigen (zählt als erledigt)
Ein Fahrer startet bei mehreren Rennen und hat je Rennen einen eigenen Platz. Als Attribut von Fahrer ließe sich nur ein Wert speichern — frühere Ergebnisse würden überschrieben, oder der Fahrer müsste mehrfach gespeichert werden (Redundanz, Anomalien). Außerdem ginge verloren, zu welchem Rennen der Platz gehört. Der Vorschlag ist ungeeignet; Platz und Minuten sind Attribute der n:m-Beziehung.
Gesucht ist die Zahl der Starts je Team. Ein Praktikant schreibt:
SELECT Team.Name, COUNT(*)
FROM Team, Fahrer, Start
WHERE Team.TeamNr = Fahrer.TeamNr
GROUP BY Team.Name;Analysieren Sie den Fehler: Welcher Wert erscheint bei Nordwind?
Lösung anzeigen
AND Fahrer.FahrerNr = Start.FahrerNr ergänzen — dann 4.Jede Fahrerin und jeder Fahrer soll höchstens eine Mentorin bzw. einen Mentor aus der Liga haben; eine Mentorin betreut mehrere. Entwickeln Sie die Modellierung im ER-Modell und die Umsetzung im Schema.
Musterlösung anzeigen (zählt als erledigt)
Rekursiver Beziehungstyp istMentorVon an Fahrer, Kardinalität 1 (Mentor-Rolle) zu n (betreute Fahrer). Umsetzung als Fremdschlüssel mit sprechendem Namen: Fahrer(FahrerNr, Name, Jahrgang, TeamNr, MentorNr). Wer keine Mentorin hat, erhält NULL.
Implementieren Sie eine Abfrage, die je Team die Summe der Kilometer aller beendeten Starts ausgibt, und geben Sie den Wert für Speiche an.
Lösung anzeigen
SELECT Team.Name, SUM(Km)
FROM Team, Fahrer, Start, Rennen
WHERE Team.TeamNr = Fahrer.TeamNr
AND Fahrer.FahrerNr = Start.FahrerNr
AND Start.RennenNr = Rennen.RennenNr
AND Platz IS NOT NULL
GROUP BY Team.Name;Speiche: Cleo 80 + 45, Deniz 30 (R1 aufgegeben) = 155 kmDie Liga will den Kader für die Landesmeisterschaft künftig automatisch aus Trainingsdaten (Fahrzeiten, Herzfrequenz, Fehltage) bestimmen lassen. Nehmen Sie dazu Stellung.
Musterlösung anzeigen (zählt als erledigt)
Chancen: nachvollziehbare, einheitliche Kriterien; weniger Sympathieentscheidungen. Risiken: Herzfrequenz ist ein Gesundheitsdatum; Fehltage können Krankheit oder Familienpflichten abbilden (Stellvertretermerkmal); Korrelation ist keine Ursache; rein automatisierte Entscheidungen mit erheblicher Wirkung sind nach Art. 22 DSGVO nur eingeschränkt zulässig. Erwartet wird eine begründete Position, z. B.: Das System darf vorschlagen, entscheiden muss ein Mensch mit Widerspruchsmöglichkeit.
Zu jedem Start soll der Rückstand auf den Sieger in Minuten angezeigt werden. Ein Entwickler will dafür ein Attribut Rueckstand in Start anlegen. Beurteilen Sie den Vorschlag.
Musterlösung anzeigen (zählt als erledigt)
Der Rückstand ergibt sich aus Minuten minus der kleinsten Zeit des Rennens — er ist berechenbar. Gespeichert wäre er redundant: Wird die Siegerzeit korrigiert, müssten alle Rückstände dieses Rennens geändert werden (Änderungsanomalie, Gefahr von Widersprüchen). Nur wenn die offizielle Wertung als eingefrorenes Dokument gilt, wäre eine bewusste Kopie vertretbar. In der Regel: nicht speichern, sondern bei der Anzeige berechnen.
Große Rennen bestehen aus mehreren Etappen; Etappen werden je Rennen durchnummeriert (Etappe 1, 2, …) und haben eine eigene Länge. Zeiten werden künftig je Etappe gemessen. Entwerfen Sie ein passendes Schema und begründen Sie den Schlüssel von Etappe.
Musterlösung anzeigen (zählt als erledigt)
Etappe(RennenNr, EtappeNr, Km)
Etappenzeit(FahrerNr, RennenNr, EtappeNr, Minuten)
EtappeNr ist nur innerhalb eines Rennens eindeutig, deshalb bildet sie zusammen mit ↑RennenNr den Primärschlüssel. Etappenzeit verweist mit (↑RennenNr, ↑EtappeNr) auf Etappe und mit ↑FahrerNr auf Fahrer.
Start wird zerlegt in Start1(FahrerNr, RennenNr, Platz) und Start2(RennenNr, Minuten) (ohne doppelte Zeilen). Überprüfen Sie, ob die Zerlegung verlustfrei ist: Wie viele Zeilen liefert der Verbund beider Tabellen über RennenNr?
Lösung anzeigen
Die Liga hat nur sechs Fahrer. Ein Mitglied meint: „Für so wenige Daten ist eine einzige Tabelle besser als vier.“ Diskutieren Sie diese These.
Musterlösung anzeigen (zählt als erledigt)
Pro: Bei wenigen Daten fällt der Speicher kaum ins Gewicht, Abfragen brauchen keine Verbunde, die Tabelle ist für Laien leichter zu pflegen. Contra: Anomalien treten unabhängig von der Datenmenge auf (Team ohne Fahrer nicht speicherbar, Teamnamen mehrfach ändern), Widersprüche entstehen schon bei einem vergessenen Eintrag, und die Liga wird wachsen. Abwägung: Die Zerlegung kostet einmalig etwas Aufwand, sichert aber die Konsistenz — die These überzeugt nur für eine kurzfristige Liste, nicht für eine Datenbank, die gepflegt wird.
