MINT lernen

Übung AFB III

Zehn Aufgaben zum Entwerfen, Beurteilen und Stellungnehmen — ER-Modell, Schema, SQL und Datenschutz, mit Musterlösung.

Dein Fortschritt:
0 / 0 Aufgaben
1

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.

ER-Diagramm
1nnmTeamFahrerRennenfaehrtFuerstartetBeiTeamNrNameStadtFahrerNrNameJahrgangPlatzMinutenRennenNrTitelDatumKm

Team(TeamNr, Name, Stadt)
Fahrer(FahrerNr, Name, Jahrgang, TeamNr)
Rennen(RennenNr, Titel, Datum, Km)
Start(FahrerNr, RennenNr, Platz, Minuten)

Team
TeamNrNameStadt
T1NordwindKiel
T2SpeicheHannover
T3KetteBremen
Fahrer
FahrerNrNameJahrgangTeamNr
F1Anna2007T1
F2Bela2008T1
F3Cleo2007T2
F4Deniz2006T2
F5Emre2008T3
F6Fiona2007NULL
Rennen
RennenNrTitelDatumKm
R1Frühjahrsklassiker12.04.80
R2Bergpreis03.05.45
R3Stadtkriterium21.06.30
Start
FahrerNrRennenNrPlatzMinuten
F1R12118
F2R15125
F3R11115
F4R1NULLNULL
F1R2396
F3R2190
F5R2293
F2R3142
F4R3243
F6R3345
A1
Sponsoren modellieren
AFB III

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.

Neuer Entitätstyp und welche Kardinalität?
Sponsor n:m Team, Betrag an der Raute.
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.

A2
Platz beim Fahrer?
AFB III

Ein Mitglied schlägt vor, Platz und Minuten als Attribute von Fahrer zu speichern und die Tabelle Start zu streichen. Beurteilen Sie den Vorschlag.

Wie viele Plätze hat ein Fahrer in einer Saison?
Ein Attribut hat genau einen Wert je Fahrer.
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.

A3
Eine fehlerhafte Auswertung
AFB III

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?

Wie viele Verbundbedingungen braucht man bei drei Tabellen?
Start ist mit niemandem verbunden → Kreuzprodukt mit allen 10 Starts.
Lösung anzeigen
Nordwind hat 2 Fahrer, jeder wird mit allen 10 Starts kombiniert = 20. Korrektur: AND Fahrer.FahrerNr = Start.FahrerNr ergänzen — dann 4.
A4
Mentorinnen
AFB III

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.

Beziehung zwischen welchen Entitätstypen?
Rekursiv 1:n — der Fremdschlüssel verweist auf dieselbe Tabelle.
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.

A5
Kilometer je Team
AFB III

Implementieren Sie eine Abfrage, die je Team die Summe der Kilometer aller beendeten Starts ausgibt, und geben Sie den Wert für Speiche an.

km
Welche vier Tabellen und welche drei Verbundbedingungen?
Beendet heißt: Platz IS NOT NULL.
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 km
A6
Kader per Algorithmus
AFB III

Die Liga will den Kader für die Landesmeisterschaft künftig automatisch aus Trainingsdaten (Fahrzeiten, Herzfrequenz, Fehltage) bestimmen lassen. Nehmen Sie dazu Stellung.

Welche Chancen und welche Risiken hat eine automatisierte Entscheidung?
Denken Sie an Art. 22 DSGVO, sensible Daten und Stellvertretermerkmale.
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.

A7
Rückstand speichern?
AFB III

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.

Lässt sich der Wert aus vorhandenen Daten berechnen?
Was passiert, wenn eine Zeit korrigiert wird?
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.

A8
Rennen mit Etappen
AFB III

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.

Ist die Etappennummer allein eindeutig?
Etappe 1 gibt es in jedem Rennen — der Schlüssel braucht die RennenNr.
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.

A9
Eine verlustbehaftete Zerlegung
AFB III

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?

Wie viele Zeilen hat Start2 je Rennen?
R1: 4 Zeitwerte (NULL einmal), R2: 3, R3: 3 — dann je Rennen multiplizieren.
Lösung anzeigen
R1: 4 · 4 = 16, R2: 3 · 3 = 9, R3: 3 · 3 = 9 = 34 Zeilen statt 10 — die Zuordnung Zeit ↔ Fahrer ist verloren, die Zerlegung ist verlustbehaftet.
A10
Eine Tabelle reicht doch?
AFB III

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.

Welche Kriterien gelten auch bei wenigen Daten?
Pro: einfache Abfragen; Contra: Anomalien, Wachstum, Konsistenz.
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.