MINT lernen

Redundanzen und Anomalien

Frau Lange zieht mit der Robotik-AG in einen neuen Raum — warum muss man das in der Datenbank viermal ändern?

1

Doppelt gespeichert — Redundanz

  • Redundanz:dieselbe Information steht mehrfach in der Datenbank, z. B. der Raum einer AG in jeder Anmeldung.
  • Inkonsistenz:redundante Kopien widersprechen sich, weil nur ein Teil geändert wurde.
  • Änderungsanomalie:eine Änderung muss in vielen Zeilen erfolgen; wird eine vergessen, ist die Datenbank inkonsistent.
  • Einfügeanomalie:eine neue Information lässt sich nicht speichern, weil andere Angaben fehlen — z. B. eine AG ohne Teilnehmer.
  • Löschanomalie:beim Löschen eines Datensatzes geht ungewollt weitere Information verloren.
Merke

Redundanz führt zu Anomalien beim Einfügen, Ändern und Löschen — Ursache: Informationen über zwei verschiedene Dinge stehen in einer Tabelle.

2

Zerlegen statt wiederholen

  • Grundsatz:jede Tatsache nur einmal speichern — je Tabelle ein Objekttyp (Schüler, AG, …).
  • Abspalten:Attribute, die nur von einem anderen Attribut abhängen, wandern mit diesem in eine eigene Tabelle.
  • Verbindung:das gemeinsame Attribut wird Primärschlüssel der neuen Tabelle und bleibt als Fremdschlüssel zurück.
  • Verlustfrei:setzt man die Teiltabellen wieder zusammen, entstehen genau die alten Datensätze — keine fehlen, keine kommen hinzu.
  • Gewollte Wiederholung:Fremdschlüsselwerte wie Robotik dürfen mehrfach vorkommen; sie sind nur Verweise.

Klicke die Spaltennamen unter der Zeichnung an: Jeder Klick schickt die Spalte nach links (bleibt), nach rechts (neue Tabelle) oder in beide Tabellen (Verbindung). Finde eine Zerlegung, bei der alle drei Anomalie-Checks grün werden.

Die Tabelle zerlegen

Spalte:

Halte fest: Leitung und Raum hängen nur von der AG ab. Wandern sie mit der AG als Schlüssel in eine eigene Tabelle, steht jede Tatsache genau einmal da — und die Spalte AG bleibt als Fremdschlüssel die Verbindung.

Herleitung:

AGAnmeldung(SchülerNr, Name, Klasse, AG, Leitung, Raum)
AG abspalten
Leitung und Raum hängen nur von der AG ab — sie stehen bei jedem AG-Mitglied erneut.
Anmeldung(SchülerNr, Name, Klasse, AG)
AG(AG, Leitung, Raum)
mehrere AGs
Jede AG steht jetzt einmal. Will ein Schüler zwei AGs besuchen, müsste er aber doppelt in Anmeldung stehen.
Schüler(SchülerNr, Name, Klasse)
AG(AG, Leitung, Raum)
Teilnahme(SchülerNr, AG)
Ergebnis
Die Beziehung selbst bekommt eine Tabelle mit zusammengesetztem Primärschlüssel — jede Tatsache steht genau einmal.
Merke

Zerlegung: je Objekttyp eine Tabelle; verbunden über Fremdschlüssel, die auf den Primärschlüssel der abgespaltenen Tabelle zeigen.

3

Allgemeine Hinweise

Gleicher Wert ist nicht gleich Redundanz

Steht 10a in vielen Zeilen, ist das keine Redundanz — jeder Schüler hat seine Klasse. Redundant ist eine Tatsache erst, wenn sie dieselbe Aussage wiederholt.

Nicht die Verbindung wegzerlegen

Fehlt das gemeinsame Attribut in einer Teiltabelle, lässt sich nicht mehr sagen, wer in welcher AG ist. Die Zerlegung ist dann verlustbehaftet.

Die Anomalie-Probe

Frage bei jeder Tabelle: Kann ich etwas Neues allein eintragen? Muss ich für eine Änderung mehrere Zeilen anfassen? Verliere ich beim Löschen etwas anderes?

Videos