1 Übersicht
In diesem Kurs lernst du, welche Arten von Anomalien es in Datenbanken geben kann und wieso sie auftreten.
Kursdauer: 30 Min
2 Der eigene, kleine Filmverleih
Anders als Simone im Kurs zu Datenmodellierung hat Sven für sich und seine Freunde keine große Datenbank aufgesetzt, um zu erfassen, welche Filme von wem ausgeliehen sind.
Da ihn nur interessiert, wie der Film heißt, wer ihn besitzt und wer ihn aktuell geliehen hat, speichert er alles in eine Tabelle. Das sieht dann so aus:

3 Anomalien
Sven weiß es noch nicht, doch seine Datenbank ist sehr anfällig für Anomalien:
Ist eine Datenbank nicht gut entworfen, so können beim Löschen, Ändern oder Einfügen Zustände in der Datenbank auftreten, die so nicht gewollt sind und zu Problemen führen können.
Beim Anlegen und Einpflegen der ersten Daten merkt Sven davon nichts. Doch nach einiger Zeit treten die ersten Probleme auf.
4 "Ich bin umgezogen"

Clara ruft bei Sven an und teilt ihm mit, dass sie eine neue Telefonnummer hat, die er bitte in der Datenbank vermerken soll.
Was ist daran problematisch?
5 Änderungsanomalie

Die Telefonnummer wurde in mehreren Datensätzen gespeichert. Das nennt man Redundanz: Informationen wurden häufiger vermerkt als nötig. Eigentlich hätte es gereicht, die Telefonnummer einmal zu speichern.
Wenn Clara ihre Telefonnummer ändert, so muss diese in allen Datensätzen verändert werden, in denen Clara die Entleiherin ist.
Werden nun zum Beispiel Datensätze beim Aktualisieren der Datenbank vergessen, so befinden sich zwei unterschiedliche Telefonnummern von Clara in der Datenbank und es ist unmöglich herauszufinden, welche die aktuelle Nummer ist. Es liegt eine Änderungsanomalie (UPDATE-Anomalie) vor.
6 "Hier hast du deinen Film zurück"

Sven gibt Paul seinen Film "Inception" zurück und löscht den Datensatz in der ersten Zeile.
Was ist daran problematisch?
7 Löschanomalie

Mit dem letzten Eintrag, in dem Sven der Entleiher ist, löscht Sven auch seine Telefonnummer. Möchte Paul ihn jetzt zum Beispiel erreichen, weil die Disk fehlt, ist die Nummer nirgends zu finden.
Es gehen mehr Informationen verloren als "Sven hatte Pauls Film Inception", was so vermutlich nicht beabsichtigt ist. Diese Anomalie nennt man Löschanomalie (DELETE-ANOMALIE).
8 "Lass uns ein Filmregal einführen"
Mit der Zeit haben sich auch Filme angesammelt, die die Gruppe gemeinsam besitzt und die sie in einem Regal bei Ayca lagern.
Besonders bei diesen Filmen ist es der Gruppe wichtig, zu wissen, bei wem zu Hause der Film gerade liegt.
Aber als Clara das erste Mal den Film "Der Pate" ausleihen möchte und sich in die Datenbank eintragen möchte, funktioniert das nicht wie gedacht:

Die Datenbank lehnt die Eingabe ab und lässt sich nicht speichern. Woran liegt das?
9 Einfügeanomalie

Jeder Datensatz ist durch den Schlüssel eindeutig identifizierbar. Die Gruppe hat sich entschieden, dass der Filmtitel und der Name des Verleihers gemeinsam den Schlüssel bilden sollen, deshalb sind sie in der Tabelle auch unterstrichen. Möchte Clara jetzt einen Film ohne Besitzer einfügen, so verstößt sie gegen die mit dem Datenbankverwaltungssystem ausgemachte Tabellendefinition.
Verwendet man kein Datenbankverwaltungssystem, sondern zum Beispiel ein Tabellenblatt aus einem Tabellenkalkulationssystem, oder ist man bei der Tabellendefinition nicht korrekt vorgegangen, so erfolgt diese Überprüfung nicht. Der Datensatz wird eingefügt und man kann sich danach nicht mehr darauf verlassen, dass Datensätze eindeutig identifiziert sind. Man spricht von Einfügeanomalien (INSERT-Anomalie).
Hierbei muss nicht zwingend der Schlüssel das Problem sein. Auch andere Bedingungen wie "Dieses Feld darf nicht leer bleiben" oder "Hier muss ein Fremdschlüssel stehen" können verletzt werden.
10 Anomalien verhindern
Im Allgemeinen kannst du Anomalien verhindern, indem du deine Datenbank im Vorfeld gut modellierst und die Beziehungen zwischen den Klassen richtig umsetzt.
In diesem Beispiel hilft es schon, wenn du eine zweite Tabelle anlegst, in der die Namen und Telefonnummern liegen und Referenzen in der Tabelle FILMVERLEIH ergänzt:

Zusätzlich kannst du die Einfügeanomalie verhindern, indem du einen künstlichen Schlüssel EintragNr in der Tabelle Filmverleih ergänzt.
Die Tabelle PERSON kann zum Beispiel so aussehen:

Und die Tabelle FILMVERLEIH so:

Jetzt werden - als kleiner Bonus - sogar die Nummern der Besitzer gespeichert!
11 Aufgaben zu Anomalien
Hier fehlen noch Aufgaben. Werde doch selbst aktiv und ergänze welche.
12 Zusammenfassung
Anomalien sind unerwünschte Zustände einer Datenbank, die hauptsächlich durch schlechte Modellierung und redundante Daten entstehen.
Sie können beim Löschen, Verändern und Einfügen von Daten auftreten und werden je nach Situation deshalb Löschanomalie, Veränderungsanomalie und Einfügeanomalie genannt.