Skip to content

Aufgabe 20 - Anomalien

Switch to Zen Mode

In dieser Übung untersuchen Sie, welche Probleme entstehen, wenn unabhängige Fakten in einer einzigen Tabelle vermischt werden (siehe Kapitel 12 - Normalisierung). Sie erkennen Redundanzen und die drei daraus folgenden Anomalietypen und stellen den Zusammenhang zu schlechtem Datenbankdesign her.

In dieser Übung üben Sie:

  • Erkennen: Redundanzen in einer Tabelle finden und benennen.
  • Unterscheiden: die drei Anomalietypen (Einfüge-, Änderungs- und Löschanomalie) an konkreten Beispielen erklären.
  • Verstehen: die gemeinsame Wurzel aller Anomalien erfassen - unabhängige Fakten in derselben Zeile.
  • Herstellen: die Verbindung zwischen Anomalien und fehlerhaftem Datenbankdesign aufzeigen.

Die Schule verwaltet alle Schulausflüge in einer einzigen Tabelle. Jede Zeile steht für die Anmeldung eines Schülers zu einem Ausflug. Die Tabelle wurde ohne viel Nachdenken erstellt — sie funktioniert im ersten Moment, verursacht aber jede Menge Probleme.

CREATE TABLE schulausfluege (
schueler_id INT,
schueler_name TEXT,
klasse TEXT,
klassenraum TEXT,
ausflug_id INT,
ausflug_titel TEXT,
ziel TEXT,
betreuer_name TEXT,
betreuer_tel TEXT,
preis NUMERIC(8, 2),
datum DATE
);
INSERT INTO schulausfluege VALUES
(1, 'Anna Gruber', '3AHITM', 'R204', 10, 'Skikurs', 'Nassfeld', 'Maurhart', '0664-100', 120.00, '2026-01-15'),
(2, 'Ben Hofer', '3AHITM', 'R204', 10, 'Skikurs', 'Nassfeld', 'Maurhart', '0664-100', 120.00, '2026-01-15'),
(3, 'Cara Wimmer', '4AHITM', 'R110', 10, 'Skikurs', 'Nassfeld', 'Maurhart', '0664-100', 120.00, '2026-01-16'),
(1, 'Anna Gruber', '3AHITM', 'R204', 11, 'Theaterbesuch', 'Stadttheater', 'Kender', '0664-200', 15.00, '2026-02-10'),
(4, 'Max Bauer', '3AHITM', 'R204', 11, 'Theaterbesuch', 'Stadttheater', 'Kender', '0664-200', 15.00, '2026-02-10'),
(3, 'Cara Wimmer', '4AHITM', 'R110', 13, 'Museumsbesuch', 'Landesmuseum', 'Steiner', '0664-300', 12.00, '2026-03-05'),
(4, 'Max Bauer', '3AHITM', 'R204', 14, 'Lesung', 'Stadtbücherei', 'Berger', '0664-400', 8.00, '2026-04-12');

Schauen Sie sich die Tabelle und die Beispieldaten oben genau an.

a) Benennen Sie mindestens vier Fakten, die mehr als einmal in der Tabelle gespeichert sind. Schreiben Sie für jeden Fakt auf, wie oft er vorkommt.

b) Überlegen Sie kurz: Warum ist das ein Problem? Was könnte passieren, wenn sich einer dieser Fakten ändert?


Ordnen Sie jeder der folgenden Situationen den richtigen Anomalietyp zu:
Einfügeanomalie, Änderungsanomalie oder Löschanomalie.

#SituationAnomalietyp
aDie Schule plant einen neuen Ausflug “Wintersporttag am Weissensee” mit Betreuer Herr Wolf. Es hat sich noch kein Schüler angemeldet — der Ausflug kann nicht in die Tabelle eingetragen werden.?
bMaurharts Telefonnummer ändert sich. In der Tabelle stehen drei Zeilen mit seiner alten Nummer — alle müssen einzeln geändert werden.?
cCara Wimmer verlässt die Schule. Alle ihre Zeilen werden gelöscht. Damit verschwinden auch Steiners Telefonnummer und das Ziel des Museumsbesuchs — obwohl der Museumsbesuch noch stattfindet.?
dEine Schülerin wechselt neu an die Schule. Sie hat sich noch für keinen Ausflug angemeldet. Sie kann nicht in die Datenbank eingetragen werden.?
eDas Ziel des Skikurses ändert sich von “Nassfeld” auf “Bad Kleinkirchheim”. Drei Zeilen müssen geändert werden — wer eine davon übersieht, hat inkonsistente Daten.?
fMax Bauer war der einzige Teilnehmer der Lesung und meldet sich ab. Seine Zeile zur Lesung wird gelöscht. Damit verschwinden auch Bergers Telefonnummer und das Ziel der Lesung aus der Datenbank.?

Die Schule möchte einen neuen Ausflug vormerken:

  • Titel: Wintersporttag am Weissensee
  • Ziel: Weissensee
  • Betreuer: Herr Wolf, Tel. 0699-500
  • Preis: 45,00 €
  • Datum: 2026-03-10
  • Ausflug-ID: 12

Noch hat sich kein Schüler angemeldet.

a) Versuchen Sie, diesen Ausflug mit einer INSERT-Anweisung in die Tabelle einzutragen. Was muss man tun, damit das INSERT technisch funktioniert?

b) Erklären Sie, was an dieser Lösung falsch ist — auch wenn die Datenbank keinen Fehler meldet.

c) Welches Designprinzip wird hier verletzt?


Maurharts Telefonnummer ändert sich von '0664-100' auf '0664-999'.

a) Schreiben Sie zuerst eine SELECT-Abfrage, um zu prüfen, wie viele Zeilen von dieser Änderung betroffen sind.

b) Schreiben Sie das passende UPDATE-Statement, das alle betroffenen Zeilen auf einmal korrigiert.

c) Angenommen, ein Kollege aktualisiert die Nummer nur in der ersten Zeile (Skikurs, Anna Gruber) und vergisst die anderen zwei. Formulieren Sie eine Frage an die Datenbank (also eine SELECT-Abfrage), die danach ein falsches Ergebnis liefern würde, und erklären Sie warum.


Am Ende des Schuljahrs scheidet Cara Wimmer (schueler_id = 3) aus der Schule aus. Alle ihre Datensätze sollen gelöscht werden. Beachten Sie: Cara war die einzige Teilnehmerin des Museumsbesuchs.

a) Schreiben Sie das DELETE-Statement.

b) Führen Sie vor dem Löschen eine SELECT-Abfrage durch, die zeigt, welche Informationen (neben Cara selbst) in diesen Zeilen noch stecken.

c) Listen Sie auf, welche Fakten durch das Löschen verloren gehen, obwohl sie eigentlich erhalten bleiben sollten.

d) Wie hätte man dieses Problem vermeiden können, ohne die Tabelle umzustrukturieren? (Hinweis: Denken Sie an eine SQL-Abfrage, die man vor dem Löschen ausführen könnte, um die wichtigen Daten zu sichern.)


Diese Aufgabe fasst alles zusammen.

a) Abhängigkeiten auflisten: Schreiben Sie alle funktionalen Abhängigkeiten auf, die Sie in der Tabelle schulausfluege erkennen. Verwenden Sie die Schreibweise A → B.
Beispiel: schueler_id → schueler_name

b) Anomalien zuordnen: Welche dieser Abhängigkeiten verursachen welche Anomalie? Begründen Sie für jede Abhängigkeit, ob sie zu einer Einfüge-, Änderungs- oder Löschanomalie führen kann (oder zu mehreren).

c) Redesign vorschlagen: Schlagen Sie ein verbessertes Schema vor, das die Anomalien verhindert. Schreiben Sie dazu die Tabellennamen und ihre Spalten auf (kein vollständiges CREATE TABLE nötig — eine Liste reicht):

Tabelle schueler: schueler_id, ...
Tabelle ausflug: ausflug_id, ...
...

d) Ergebnis bewerten: Erklären Sie für jede der drei Anomalietypen, warum sie im neu entworfenen Schema nicht mehr auftreten können.


  • Abgabe der Datei aufgabe20_anomalien.sql mit allen SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen.
  • Kurze schriftliche Antworten zu den Zuordnungs- und Analysefragen (Aufgaben 1, 2 und 6).
  • Alle Befehle müssen auf einer PostgreSQL-Datenbank fehlerfrei ausführbar sein.

  • Frage 1: Was ist der Unterschied zwischen einer Änderungsanomalie und einer Löschanomalie? Können beide in derselben Tabelle auftreten?

  • Frage 2: Die Einfügeanomalie tritt auf, weil die Tabelle unabhängige Fakten vermischt. Welches Grundprinzip der Datenbankmodellierung wird damit verletzt?

  • Frage 3: Eine Tabelle hat keinen einzigen doppelten Wert — jede Zeile ist eindeutig. Kann diese Tabelle trotzdem Anomalien aufweisen? Begründen Sie Ihre Antwort mit einem kurzen Beispiel.


HTL Villach, Schuljahr 2025-2026,
https://www.htl-villach.at