Benutzer-Werkzeuge

Webseiten-Werkzeuge


computer:tutorials:sql:anomalie

Dies ist eine alte Version des Dokuments!


Anomalien bezeichnen verschiedene Fehlverhalten der Datenbank, die meistens auf ein fehlerhaftes Datenbank-Deisgn zurückzuführen sind.

Beispiel

Zur besseren Erläuterung der einzelnen Anomalien dient die folgende schemenhafte Tabelle:

FILME
(PK)TITEL(PK)HauptdarstellerRegisseurGenre
Anomalator IIAlfred ShwartheggerJohann KamerunAction
Rop O'CoppPiter SellerPatrick VerhebenAction
NarbenfratzeEl PudingoBerndhard PalmeAction

Die (abgespeckte) Tabelle dient zur Verwaltung von Filmen inklusive Hauptdarsteller, Regisseur und Genre. Die Felder „TITEL“ und „HAUPTDARSTELLER“ dienen als Primärschlüssel.

Einfüge-Anomalie

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)HauptdarstellerRegisseurGenre
Anomalator IIIAlfred ShwartheggerJohann KamerunAction

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.

Änderungs-Anomalie

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)HauptdarstellerRegisseurGenre
Anomalator IIAlfred ShwartheggerJohann KamerunAction-Thriller
Rop O'CoppPiter SellerPatrick VerhebenAction-Thriller
NarbenfratzeEl PudingoBerndhard PalmeAction

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 II112
Rop O'Copp222
Narbenfratze332
HAUPTDARSTELLER
(PK)IDHauptdarsteller
1Alfred Shwarthegger
2Piter Seller
3El Pudingo
REGISSEUR
(PK)IDHauptdarsteller
1Johann Kamerun
2Patrick Verheben
3Berndhard Palme
GENRE
(PK)IDGenre
1Action
2Action 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.

Lösch-Anomalie

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)HauptdarstellerRegisseurGenre
Anomalator IIAlfred ShwartheggerJohann KamerunAction

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.

computer/tutorials/sql/anomalie.1368437773.txt.gz · Zuletzt geändert: 2013/05/13 11:36 von christian