Anomalien bezeichnen verschiedene Fehlverhalten der Datenbank, die meistens auf ein fehlerhaftes Datenbank-Deisgn zurückzuführen sind.
Zur besseren Erläuterung der einzelnen Anomalien dient die folgende schemenhafte Tabelle:
FILME | |||
---|---|---|---|
(PK)TITEL | (PK)Hauptdarsteller | Regisseur | Genre |
Anomalator II | Alfred Shwarthegger | Johann Kamerun | Action |
Rop O'Copp | Piter Seller | Patrick Verheben | Action |
Narbenfratze | El Pudingo | Berndhard Palme | Action |
Die (abgespeckte) Tabelle dient zur Verwaltung von Filmen inklusive Hauptdarsteller, Regisseur und Genre. Die Felder „TITEL“ und „HAUPTDARSTELLER“ dienen als Primärschlüssel.
Eine Einfüge-Anomalie liegt vor, wenn neue Einträge nicht oder nur schwer in eine bestehende Tabelle eingetragen werden können. Dieser Fehler tritt auf, wenn nicht zu allen Schlüsseln neue, unterschiedliche Werte eingetragen werden können.
Das Einfügen des folgenden Eintrags in die bestehende Tabelle funktioniert nicht:
(PK)TITEL | (PK)Hauptdarsteller | Regisseur | Genre |
---|---|---|---|
Anomalator III | Alfred Shwarthegger | Johann Kamerun | Action |
Es gibt zwar noch keinen Film „Anomalator III“, aber dafür schon einen Eintrag mit dem Schauspieler „Alfred Shwarthegger“. Das Einfügen von doppelten Schlüsseln ist nicht oder nur schwer möglich.
Eine Änderungs-Anomalie liegt vor, wenn nicht alle Vorkommen von redundanten (unnötig doppelt gesicherten) Informationen aktualisiert werden.
Beispiel: Alle Filme in der Film-Tabelle sollen der Genre „Action-Thriller“ zugeordnet werden. Diese Information muss für jeden einzelnen Eintrag vorgenommen werden - das erhöht die potenzielle Fehlerquote.
Wenn die Transaktion nicht korrekt ausgeführt wird, drohen Daten-Inkonsistenzen:
FILME | |||
---|---|---|---|
(PK)TITEL | (PK)Hauptdarsteller | Regisseur | Genre |
Anomalator II | Alfred Shwarthegger | Johann Kamerun | Action-Thriller |
Rop O'Copp | Piter Seller | Patrick Verheben | Action-Thriller |
Narbenfratze | El Pudingo | Berndhard Palme | Action |
In diesem Beispiel wurde die Transaktion nicht komplett durchlaufen - der letzte Eintrag ist fehlerhaft.
Solche Fehler können vermieden werden, indem Daten-Redundanzen durch weitere Tabellen vermieden werden. In diesem Beispiel wäre es sinnvoll, für Hauptdarsteller, Regisseur und Genre dedizierte Tabellen zu erstellen und mittels Fremdschlüsseln den Film-Einträgen zuzuordnen:
FILME | |||
---|---|---|---|
(PK)TITEL | (FK)Hauptdarsteller | (FK)Regisseur | (FK)Genre |
Anomalator II | 1 | 1 | 2 |
Rop O'Copp | 2 | 2 | 2 |
Narbenfratze | 3 | 3 | 2 |
HAUPTDARSTELLER | |
---|---|
(PK)ID | Hauptdarsteller |
1 | Alfred Shwarthegger |
2 | Piter Seller |
3 | El Pudingo |
REGISSEUR | |
---|---|
(PK)ID | Hauptdarsteller |
1 | Johann Kamerun |
2 | Patrick Verheben |
3 | Berndhard Palme |
GENRE | |
---|---|
(PK)ID | Genre |
1 | Action |
2 | Action Thriller |
Die Informationen für Hauptdarsteller, Regisseur und Genre werden nun in jeweils einer eigenen Tabelle gehalten - Änderungen müssen nur noch an einer Stelle erfolgen.
Eine Lösch-Anomalie liegt vor, wenn mehr Informationen als erwünscht gelöscht werden.
Im folgenden Beispiel soll lediglich der Film „Anomalator II“ gelöscht werden:
(PK)TITEL | (PK)Hauptdarsteller | Regisseur | Genre |
---|---|---|---|
Anomalator II | Alfred Shwarthegger | Johann Kamerun | Action |
Das ist aufgrund des Datenbank-Designs jedoch nicht möglich, ohne auch Informationen zum Hauptdarsteller, Regisseur und zur Genre zu löschen.
Dieses Problem kann nur durch die Anpassung des Datenbank-Designs, um Daten-Redundanzen zu vermeiden, gelöst werden. Vorschlag zur Tabellen-Aufteilung: Siehe Änderungs-Anomalie.