IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Datenbanken - Anomalien



Anomalien

Anomalien treten bei unsauber entworfenen Datenbanken auf und führen zu Inkonsistenzen. Dieser Artikel beschreibt Einfüge-, Änderungs- und Löschanomalien.


Autor: Patrick Bucher (paedubucher)
Datum: 17-06-2007, 08:52:00
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 9657x
Rating: 4.5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Ein sauberer Datenbankentwurf ist sehr wichtig für jedes datenbankgestützte Softwareprojekt. Fehler, die beim Datenbankentwurf geschehen, lassen sich im späteren Projektverlauf nur noch schwer und mit viel Aufwand beheben.

Ein wichtiger Aspekt am Datenbankdesign ist die Vermeidung von Anomalien. Eine Anomalie tritt bei einem unsauberen Datenmodell auf und führt zu inkonsistenten Daten. Dabei wird zwischen Einfüge-, Änderungs- und Lösch-Anomalien unterschieden.

Einfüge-Anomalie

Eine Einfügeanomalie entsteht dann, wenn nach dem Einfügen von Datensätzen einige Werte mehrfach in der Datenbank vorkommen oder Datenfelder leer bleiben. Beispiel:

PerId Vorname Nachname Projekt
1 Hans Meier Einkauf
2 Martin Schwegler Verkauf
3 Max Birrer Einkauf Neu
4 Alice Huber Neu

Das Projekt "Einkauf" existiert nach dem Hinzufügen des dritten Eintrags doppelt - es ist also eine Redundanz entstanden.

Ein weiterer Aspekt der Einfüge-Anomalie ist bei Datensatz vier ersichtlich. Hier wurden nicht alle Felder ausgefüllt (Projekt), was zu inkonsistenten Zuständen führen kann.

Änderungs-Anomalie

Wird ein redundanter Datensatz in einer Relation geändert, so müssen alle dazugehörigen Datensätze ebenfalls entsprechend angepasst werden. Passiert dies nicht, so ist die Rede einer Änderungs-Anomalie. Beispiel:

SpendenNr Vorname Nachname Betrag
1 Hans Meier 50.-
2 Martin Schwegler 30.-
3 Hans Meier 80.-

Hans Meier hat zweimal gespendet, einmal 50 Franken und einmal 80 Franken. Da aber "Herr Meier" eigentlich "Herr Maier" heisst, wird die Relation nun aktualisiert.

SpendenNr Vorname Nachname Betrag
1 Hans Maier 50.- Aktualisierung
2 Martin Schwegler 30.-
3 Hans Meier 80.-

Da der dritte Datensatz nicht angepasst wurde, entsteht der Eindruck, dass es drei Spender gibt, die jeweils eine Spende abgegeben haben. Die Relation stimmt mit der realen Welt nicht mehr überein und ist somit inkonsistent.

Löschanomalie

Bei der Löschung eines Datensatzes werden Informationen mit gelöscht, welche eigentlich in der Relation hätten verbleiben sollen. Beispiel:

PerId Vorname Nachname Abteilung
1 Hans Meier Einkauf
2 Martin Schwegler Verkauf Löschen
3 Max Birrer Einkauf

Durch die Löschung des zweiten Datensatzes wird das ganze Projekt „Verkauf“ gelöscht. Dieses hätte jedoch für eine spätere Verwendung noch in der Datenbank verbleiben sollen.

Anomalien vermeiden

Es gibt verschiedene Möglichkeiten, um die genannten Anomalien zu vermeiden:
  • Die Datenbank wird anhand eines Entity Relationship Modells erstellt und dann in ein relationales Modell überführt.
  • Die Relationen werden normalisiert, d.h. in eine Normalform überführt.


paedubucher
Professonial
Beitrag vom:
27-06-2007, 14:17:30

ER-Diagramme und Normalisierung

Hi no_comment

Ich habe zu ER-Diagrammen noch einen Artikel in Arbeit, Normalisierung habe ich bereits einmal dokumentiert.

In diesem Artikel sollte es wirklich nur um Anomalien gehen.

-----------------------------------------------------


no_comment
Professonial
Beitrag vom:
23-06-2007, 01:48:07

Gute Negativbeispiele, aber warum korrekten Weg so kurz angerissen?

* Die Datenbank wird anhand eines Entity Relationship Modells erstellt und dann in ein relationales Modell überführt.
* Die Relationen werden normalisiert, d.h. in eine Normalform überführt.


Die beiden Punkte hätte man sich noch detaillierter behandelt gewünscht.

-----------------------------------------------------
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel -- http://pc-intern.com http://straightvisions.com


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06245
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1150
Comments: 0