Datenbanken - Redundanz und Anomalie

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Anomalien kommen immer bei nicht normalisierten Datenbanksystemen vor.

Guck dir mal die Normalformen an.

Man unterscheidet die Insert, Update und Delete Anomalie.

Tabelle: HausBesitzer
Name    Farbe   Besitzer
Haus1   rot     Hr Müller
Haus2   grün    Fr Bauer
Haus2   grün    Hr Bauer 

Wie du siehst hat Haus1 nur einen Besitzer und Haus2 sogar zwei Besitzer.

Wird das Haus nun in "blau" gestrichen , müsstest du plötzlich zwei Datensätze "updaten".

Du kannst weiterhin kein Haus erzeugen ohne Besitzer. (Insert-Anomalie)

Jetzt lässt sich Herr Bauer leider scheiden. Dafür zieht Hr Schneider in Haus 2. Erneut hast du ein Problem weil du nur einen Teil löschen und updaten musst. (Lösch-Anomalie)

Man erzeugt damit immer redundante Informationen und ist nicht flexibel.

Lösung wäre Tabelle "Haus"

id       Name
1        Haus1
2        Haus2

Weiterhin Tabelle Farbe

id  name
1   grün
2   blau
3   rot
4   orange

Zwischentabelle HausFarbe

id  haus farbe
1   1   2 
2   2   1

Wenn sich nun die Farbe ändert, würdest du nur einen Wert ändern, nämlich den Code der Farbe.

Es gibt tausend Möglickheiten, etwas falsch zu machen. Dabei reicht es schon aus, Datenstrukturen so anzulegen, dass widersprüchliche Angaben möglich sind. Ob tatsächlich solche Fälle vorkommen, ist dabei nebensächlich. Es geht darum, die Datenbank-Struktur so zu gestalten, dass Widersprüche gar nicht möglich sind, z.B. dass Daten immer nur an einer Stelle gespeichert werden und bei Bedarf immer nur auf diese Stelle zugegriffen wird. Die relationale Datenbank ermöglicht solche Strukturen, kann aber nicht verhindern, dass diese Möglichkeit nicht genutzt wird.

Etwas mehrfach zu speichern ist Redundanz, ist inhaltlich deshalb aber nicht falsch. Anomalie ist außerdem widersprüchlich, nicht eindeutig. Muss nicht falsch sein, ermöglicht aber einen Widerspruch.

Redundanz im Zusammenhang mit Datensicherung ist hier nicht gemeint. Ebenso wenig das Speichern von Schlüsseln zum Zuordnen und Verknüpfen.