Normalisierung von relationalen Datenbanken - SQL-Online

Werbung
SQL / MySQL - Online-Schulung
www.SQL-Online-Schulung.de
Normalisierung von relationalen Datenbanken
Durch die Normalisierung soll eine widerspruchs- und redundanzfreie Datenspeicherung erzielt
werden. Grund hierfür sind die Vermeidung von Datenbankanomalien und inkonsistenten Daten.
Anomalien können zum Beispiel beim Einfügen oder Löschen auftreten, falls das Einfügen eines
neuen Landes nur bei gleichzeitiger Erfassung einer Stadt des Landes möglich ist oder beim
Löschen eines Städtesatzes die Informationen über das Land gleich mit gelöscht werden.
So würden Änderungsanomalien auftreten, falls bei jeder Stadt die Landesinformationen mit geführt
werden und die Einwohnerzahl des Landes angepaßt werden soll. Wäre die Einwohneranzahl des
Landes in jedem Städtesatz des Landes enthalten, so müßte diese Zahl in jedem Städtesatz
entsprechend angepaßt werden. Falls diese Anzahl am Ende nicht in jedem Satz angepaßt werden
würde, käme es zu den oben genannten widersprüchlichen Datenständen und damit zu
inkonsistenten Daten in der DB.
Bei relationalen Datenbanksystemen werden die Daten in Tabellen abgelegt. In den Zeilen stehen
die Datensätze (engl. Records), in den Spalten die einzelnen Attribute (Satzelemente) der Sätze
(z.B. bei Adressen die Attribute: PLZ, Ort-ID, Strasse, ...) . Jeder Datensatz einer Tabelle erhält
einen primären Schlüssel (engl. Primary Key), der den Satz eindeutig identifiziert sowie optional
weitere Schlüssel für gewichtige Attribute. Über diese Schlüssel werden die Sätze der Tabellen
miteinander verknüpft – in Beziehung gesetzt. Für die Schlüsselfelder erfolgt das Anlegen von
Index-Tabellen, um einen schnellen Zugriff auf die Datensätze oder eine schnelle Sortierung der
Daten zu ermöglichen. Um bei den Daten eine Datenredundanz (unnötige Doppelungen) von
gleichen Inhalten und damit Änderungsanomalien auszuschließen, werden die Tabellen
normalisiert. So ist zum Beispiel bei den Adress-Sätzen der Ort nicht immer wieder einzutragen,
sondern eine zweite Orte-Tabelle mit den Attributen Ort-ID und Ort anzulegen. Bei den AdressSätzen ist in der Folge die Ort-ID des Ortes einzutragen anstelle des Ortes. Auf diese Weise ist die
Ortsbezeichnung nur einmal in der Ort-Tabelle vorhanden. Zudem ergibt sich aus dieser
Verfahrensweise eine Tabelle mit allen verwendeten Orten. Ein Ort wird über den Schlüssel Ort-ID
mit der Ort-ID eines Adress-Satzes verbunden.
Zur Anschauung sind nachstehende Tabellen einer kleinen Adressverwaltung mit Ort und Stadtteil
abgebildet.
Adress-Tabelle
Adress-ID
PLZ
Ort-ID
Strasse
Bezirk-ID
1
2
3
4
5
6
7
10178
10178
10629
20359
20359
80331
80336
1
1
1
2
2
3
3
Rathausstraße
Rosenstraße
Mommsenstraße
Hafenstraße
Davidstraße
Kauffingerstraße
Bavariaring
1
1
2
3
3
4
5
Ort-Tabelle
Ort-ID
Ort
KfZ
1
2
3
Berlin
Hamburg
München
B
HB
M
Bezirk-Tabelle
Bezirk-ID
Ort-ID
Bezirk
1
2
3
4
5
1
1
2
3
3
Mitte
Charlottenburg
St. Pauli
Altstadt
Isar-Vorstadt
Erläuterungen:
Nehmen wir z.B. den Satz mit der Adress-ID = 6 aus der Adress-Tabelle. Über den Zugriff auf die
Ort-Tabelle mit der Ort-ID = 3 des Satzes erhalten wir den zugeordneten Ort des Satzes, nämlich
Ort = München. Über die Bezirk-ID = 4 erhalten wir nach Zugriff auf die Bezirk-Tabelle den Wert
Bezirk = Altstadt.
Wir stellen fest, daß das Kfz für Hamburg in HH geändert werden muss. Wir müssen es nur in
einem Satz der Ort-Tabelle ändern und nicht in allen Hamburger Adress-Sätzen. An diesem
Beispiel zeigt sich ein wichtiger Vorteil von normalisierten Tabellen.
Herunterladen