Zum Inhalt springen

Aufgabe 20 - Anomalien

Zu Zen-Modus wechseln

In dieser Übung wird untersucht, welche Probleme entstehen, wenn unabhängige Fakten in einer einzigen Tabelle vermischt werden (siehe Kapitel 12 - Normalisierung). Redundanzen und die drei Anomalietypen werden erkannt, praktisch provoziert und im Expertenteil über funktionale Abhängigkeiten beseitigt.

  • Kapitel 12 - Normalisierung, Abschnitte Anomalien und funktionale Abhängigkeiten.
  • Ein PostgreSQL-Server und ein SQL-Editor.
  • Sie finden Redundanzen und benennen sie.
  • Sie unterscheiden Einfüge-, Änderungs- und Löschanomalie an Beispielen.
  • Sie erkennen die gemeinsame Wurzel aller Anomalien.
  • Sie leiten aus funktionalen Abhängigkeiten ein anomaliefreies Schema ab.
  • Reproduktion: Redundanzen und Anomalietypen zuordnen (Teil A).
  • Reorganisation und Transfer: Anomalien praktisch provozieren (Teile B und C).
  • Reflexion, Problemlösung und Urteilsbildung: funktionale Abhängigkeiten analysieren und ein Redesign entwickeln und beweisen (Teil D).

Die Übung ist auf etwa zwei Stunden ausgelegt. Teil D ist der Expertenteil.

Ausgangstabelle (Schulausflüge, alles in einer Tabelle)

Abschnitt betitelt „Ausgangstabelle (Schulausflüge, alles in einer Tabelle)“
CREATE TABLE school_trips (
student_id INT, student_name TEXT, class TEXT, classroom TEXT,
trip_id INT, trip_title TEXT, destination TEXT, supervisor_name TEXT, supervisor_phone TEXT,
price NUMERIC(8,2), trip_date DATE
);
INSERT INTO school_trips VALUES
(1,'Anna Gruber','3AHITM','R204',10,'Ski course','Nassfeld','Maurhart','0664-100',120.00,'2026-01-15'),
(2,'Ben Hofer','3AHITM','R204',10,'Ski course','Nassfeld','Maurhart','0664-100',120.00,'2026-01-15'),
(3,'Cara Wimmer','4AHITM','R110',10,'Ski course','Nassfeld','Maurhart','0664-100',120.00,'2026-01-16'),
(1,'Anna Gruber','3AHITM','R204',11,'Theater visit','City Theater','Kender','0664-200',15.00,'2026-02-10'),
(4,'Max Bauer','3AHITM','R204',11,'Theater visit','City Theater','Kender','0664-200',15.00,'2026-02-10'),
(3,'Cara Wimmer','4AHITM','R110',13,'Museum visit','Regional Museum','Steiner','0664-300',12.00,'2026-03-05'),
(4,'Max Bauer','3AHITM','R204',14,'Reading','City Library','Berger','0664-400',8.00,'2026-04-12');
  1. Benennen Sie mindestens vier Fakten, die mehrfach gespeichert sind, mit ihrer Häufigkeit, und beschreiben Sie kurz, warum das ein Problem ist.
  2. Ordnen Sie sechs Situationen dem richtigen Anomalietyp zu (Einfüge-, Änderungs-, Löschanomalie): (a) neuer Ausflug ohne angemeldeten Schüler lässt sich nicht speichern; (b) Maurharts Telefonnummer ändern betrifft drei Zeilen; (c) Caras Austritt löscht auch das Ziel des noch stattfindenden Ausflugs „Museum visit”; (d) neue Schülerin ohne Ausflug lässt sich nicht eintragen; (e) das Ziel von „Ski course” ändern betrifft drei Zeilen; (f) Max’ Abmeldung von „Reading” löscht auch Bergers Nummer.

Teil B - Einfüge- und Änderungsanomalie provozieren

Abschnitt betitelt „Teil B - Einfüge- und Änderungsanomalie provozieren“
  1. Einfügeanomalie: Versuchen Sie, den neuen Ausflug „Winter Sports Day at Weissensee” (Ziel Weissensee, Betreuer Wolf 0699-500, 45,00 €, 2026-03-10, Ausflug-ID 12) ohne angemeldeten Schüler einzutragen. Was muss man tun, damit das INSERT technisch klappt, und was ist trotzdem falsch daran? Welches Designprinzip wird verletzt?
  2. Änderungsanomalie: Ändern Sie Maurharts Nummer von '0664-100' auf '0664-999'. Zeigen Sie zuerst mit SELECT, wie viele Zeilen betroffen sind, schreiben Sie das korrekte UPDATE, und beschreiben Sie eine Abfrage, die bei nur teilweise geänderten Daten ein falsches Ergebnis liefert.
  1. Cara Wimmer (student_id = 3) scheidet aus. Zeigen Sie vor dem Löschen mit SELECT, welche Informationen in ihren Zeilen stecken, führen Sie das DELETE aus und listen Sie auf, welche Fakten verloren gehen, obwohl sie erhalten bleiben sollten. Wie hätte man das ohne Umstrukturierung kurzfristig vermeiden können?

Teil D - Expertenteil: Funktionale Abhängigkeiten und Redesign

Abschnitt betitelt „Teil D - Expertenteil: Funktionale Abhängigkeiten und Redesign“
  1. Funktionale Abhängigkeiten: Schreiben Sie alle erkennbaren funktionalen Abhängigkeiten in der Form A → B auf (z. B. student_id → student_name, trip_id → destination, class → classroom).
  2. Anomalien zuordnen: Begründen Sie für jede Abhängigkeit, welche Anomalie(n) sie verursacht.
  3. Redesign: Schlagen Sie ein verbessertes Schema vor (Tabellen mit Spalten und Schlüsseln), das die Anomalien verhindert, und setzen Sie es als CREATE TABLE-Anweisungen um. Verteilen Sie die sieben Beispielzeilen korrekt auf die neuen Tabellen (jeder Schüler, jeder Ausflug nur einmal).
  4. Beweis: Schreiben Sie eine SELECT-Abfrage mit den nötigen Joins, die aus dem neuen Schema die ursprüngliche Ansicht rekonstruiert. Begründen Sie danach für jeden der drei Anomalietypen, warum er im neuen Schema nicht mehr auftreten kann.
  1. Worin unterscheiden sich Änderungs- und Löschanomalie? Können beide in derselben Tabelle auftreten?
  2. Welches Grundprinzip der Modellierung verletzt die Einfügeanomalie?
  3. Kann eine Tabelle ohne einen einzigen doppelten Wert trotzdem Anomalien haben? Begründen Sie mit einem Beispiel.
  4. Was ist eine funktionale Abhängigkeit, und wie hängt sie mit Anomalien zusammen?
  5. Warum verschwinden die Anomalien, sobald jede Tabelle nur Fakten über eine Sache enthält?
  • Die Datei aufgabe20_anomalien.sql mit allen SELECT/INSERT/UPDATE/DELETE-Anweisungen und dem Redesign aus Teil D.
  • Kurze schriftliche Antworten zu den Zuordnungs- und Analysefragen.

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