DB2 Universal Database - Systemverwaltung


Normalisieren der Tabellen

Eine Normalisierung hilft bei der Vermeidung von Redundanzen und Inkonsistenzen in Tabellendaten. Sie bezeichnet den Prozeß der Reduzierung von Tabellen auf eine Menge von Spalten, in der alle Spalten, die selbst zu keinem Schlüssel gehören, von der Primärschlüsselspalte abhängig sind. Wenn dies nicht der Fall ist, können die Daten durch Aktualisierungen inkonsistent werden.

In diesem Abschnitt werden kurz die Kriterien für die erste, zweite, dritte und vierte Normalform vorgestellt. Die fünfte Normalform einer Tabelle, die in zahlreichen Veröffentlichungen zum Entwurf von Datenbanken dargestellt wird, ist hier nicht beschrieben.

Form
Beschreibung

Erste
An jeder Zeilen- und Spaltenposition in der Tabelle existiert nur ein Wert und zu keiner Zeit eine Gruppe von Werten (siehe Erste Normalform).

Zweite
Jede Spalte, die nicht Teil des Schlüssels ist, ist vom Schlüssel abhängig (siehe Zweite Normalform).

Dritte
Jede Spalte ohne Schlüsselfunktion ist von anderen Spalten ohne Schlüsselfunktion unabhängig und nur vom Schlüssel abhängig (siehe Dritte Normalform).

Vierte
Keine Zeile enthält zwei oder mehr unabhängige, mehrwertige Fakten über eine Entität (siehe Vierte Normalform).

Erste Normalform

Eine Tabelle ist in der ersten Normalform, wenn sich in jeder Zelle nur ein Wert und nie eine Gruppe von Werten befindet. Eine Tabelle in der ersten Normalform erfüllt nicht unbedingt auch die Kriterien für höhere Normalformen.

Die folgende Tabelle verstößt beispielsweise gegen die Kriterien der ersten Normalform, weil in der Spalte LAGER mehrere Werte für jedes Vorkommen von ARTIKEL auftreten.

Tabelle 8. Tabelle, die die erste Normalform verletzt
ARTIKEL (Primärschlüssel) LAGER
P0010 Lager A, Lager B, Lager C
P0020 Lager B, Lager D

Das folgende Beispiel zeigt die gleiche Tabelle in der ersten Normalform.

Tabelle 9. Tabelle in der ersten Normalform
ARTIKEL (Primärschlüssel) LAGER (Primärschlüssel) BESTAND
P0010 Lager A 400
P0010 Lager B 543
P0010 Lager C 329
P0020 Lager B 200
P0020 Lager D 278

Zweite Normalform

Eine Tabelle ist in der zweiten Normalform, wenn jede Spalte, die nicht zum Schlüssel gehört, vom gesamten Schlüssel abhängig ist.

Die Kriterien der zweiten Normalform sind nicht erfüllt, wenn eine Spalte ohne Schlüsselfunktion von einem Teil eines zusammengesetzten Schlüssels abhängig ist, wie im folgenden Beispiel zu sehen ist:

Tabelle 10. Tabelle, die die zweite Normalform verletzt
ARTIKEL (Primärschlüssel) LAGER (Primärschlüssel) BESTAND LAGER_ADRESSE
P0010 Lager A 400 Amselfelderstraße 24
P0010 Lager B 543 Industrieweg 6
P0010 Lager C 329 Kastanienallee 71
P0020 Lager B 200 Industrieweg 6
P0020 Lager D 278 Ulmenstraße 8

Der Primärschlüssel ist ein zusammengesetzter Schlüssel, der aus den Spalten ARTIKEL und LAGER besteht. Da die Spalte LAGER_ADRESSE jedoch nur vom Wert der Spalte LAGER abhängig ist, verstößt die Tabelle gegen die Regel der zweiten Normalform.

Dieser Tabellenentwurf hat folgende Nachteile:

Die Lösung besteht in einer Aufspaltung der Tabelle in die beiden folgenden Tabellen:

Tabelle 11. Die Tabelle LAGERBESTAND erfüllt die zweite Normalform
ARTIKEL (Primärschlüssel) LAGER (Primärschlüssel) BESTAND
P0010 Lager A 400
P0010 Lager B 543
P0010 Lager C 329
P0020 Lager B 200
P0020 Lager D 278

Tabelle 12. Die Tabelle LAGERHAUS erfüllt die zweite Normalform
LAGER (Primärschlüssel) LAGER_ADRESSE
Lager A Amselfelderstraße 24
Lager B Industrieweg 6
Lager C Kastanienallee 71
Lager D Ulmenstraße 8

Es muß beachtet werden, daß die Erstellung zweier Tabellen in der zweiten Normalform Auswirkungen auf die Leistung haben kann. Anwendungen, die Berichte über den Lagerort von Artikeln erstellen, müssen beide Tabellen verknüpfen, um die relevanten Informationen abrufen zu können.

Weitere Einzelheiten zur Datenbankleistung finden Sie im Abschnitt zum Optimieren der Anwendungsleistung im Handbuch Systemverwaltung: Optimierung.

Dritte Normalform

Eine Tabelle ist in der dritten Normalform, wenn jede Spalte ohne Schlüsselfunktion von anderen Spalten ohne Schlüsselfunktion unabhängig und nur vom Schlüssel abhängig ist.

Die erste Tabelle des folgenden Beispiels enthält die Spalten EMPNO und WORKDEPT. Nehmen Sie an, daß die Spalte DEPTNAME hinzugefügt wird (siehe Tabelle 14). Die neue Spalte ist von der Spalte WORKDEPT abhängig, während der Primärschlüssel nur die Spalte EMPNO umfaßt. Die Tabelle verstößt nun gegen die Kriterien der dritten Normalform. Durch Ändern der Spalte DEPTNAME für einen einzelnen Mitarbeiter, z. B. John Parker, wird nicht auch der Abteilungsname für andere Mitarbeiter dieser Abteilung geändert. Beachten Sie, daß es nun zwei unterschiedliche Abteilungsnamen (DEPTNAME) für Abteilungsnummer (WORKDEPT) E11 gibt. Die sich daraus ergebende Inkonsistenz zeigt sich in der aktualisierten Version der Tabelle.

Tabelle 13. Nicht normalisierte Tabelle EMPLOYEE_DEPARTMENT vor der Aktualisierung
EMPNO (Primärschlüssel) FIRSTNAME LASTNAME WORKDEPT DEPTNAME
000290 John Parker E11 Operations
000320 Ramlal Mehta E21 Software Support
000310 Maude Setright E11 Operations

Tabelle 14. Nicht normalisierte Tabelle EMPLOYEE_DEPARTMENT nach der Aktualisierung
Die Daten der Tabelle sind nicht mehr konsistent.
EMPNO (Primärschlüssel) FIRSTNAME LASTNAME WORKDEPT DEPTNAME
000290 John Parker E11 Installation Mgmt
000320 Ramlal Mehta E21 Software Support
000310 Maude Setright E11 Operations

Die Tabelle kann normalisiert werden, indem eine neue Tabelle mit Spalten für WORKDEPT und DEPTNAME erstellt wird. Eine Aktualisierung wie das Ändern des Abteilungsnamens (DEPTNAME) ist nun wesentlich einfacher. Es muß nur eine Tabelle aktualisiert werden.

Eine SQL-Abfrage, mit der der Abteilungsname zusammen mit dem Namen des Mitarbeiters abgerufen wird, ist dagegen etwas komplizierter, da die beiden Tabellen verknüpft werden müssen. Sie wird wahrscheinlich eine etwas längere Zeit zur Ausführung benötigen als eine Abfrage auf eine einzelne Tabelle. Ferner ist zusätzlicher Speicherplatz erforderlich, da die Spalte WORKDEPT (Abteilung) in beiden Tabellen enthalten sein muß.

Die folgenden Tabellen werden als Ergebnis dieser Normalisierung definiert:

Tabelle 15. Tabelle EMPLOYEE nach Normalisierung der Tabelle EMPLOYEE_DEPARTMENT
EMPNO (Primärschlüssel) FIRSTNAME LASTNAME WORKDEPT
000290 John Parker E11
000320 Ramlal Mehta E21
000310 Maude Setright E11

Tabelle 16. Tabelle DEPARTMENT nach Normalisierung der Tabelle EMPLOYEE_DEPARTMENT
DEPTNO (Primärschlüssel) DEPTNAME
E11 Operations
E21 Software Support

Vierte Normalform

Eine Tabelle ist in der vierten Normalform, wenn keine Zeile zwei oder mehr unabhängige, mehrwertige Fakten bezüglich einer Entität enthält.

Betrachten Sie zum Beispiel folgende Entitäten: Mitarbeiter (Employee), Fachkenntnisse (Skill) und Sprachen (Language). Ein Mitarbeiter kann über Fachkenntnisse auf mehreren Gebieten verfügen und mehrere Sprachen beherrschen. Es gibt zwei Beziehungen, eine zwischen Mitarbeitern und Fachkenntnissen und eine zwischen Mitarbeitern und Sprachen. Eine Tabelle verstößt gegen die Kriterien der vierten Normalform, wenn sie beide Beziehungen darstellt, wie im folgenden Beispiel gezeigt:

Tabelle 17. Tabelle, die die vierte Normalform verletzt
EMPNO (Primärschlüssel) SKILL (Primärschlüssel) LANGUAGE (Primärschlüssel)
000130 Data Modelling English
000130 Database Design English
000130 Application Design English
000130 Data Modelling Spanish
000130 Database Design Spanish
000130 Application Design Spanish

Statt dessen sollten die beiden Beziehungen in zwei Tabellen dargestellt werden:

Tabelle 18. Tabelle EMPLOYEE_SKILL in der vierten Normalform
EMPNO (Primärschlüssel) SKILL (Primärschlüssel)
000130 Data Modelling
000130 Database Design
000130 Application Design

Tabelle 19. Tabelle EMPLOYEE_LANGUAGE in der vierten Normalform
EMPNO (Primärschlüssel) LANGUAGE (Primärschlüssel)
000130 English
000130 Spanish

Wenn jedoch die Attribute gegenseitige Abhängigkeiten zeigen, (d. h., der Mitarbeiter verwendet bestimmte Sprachen nur im Zusammenhang mit bestimmten Fachgebieten), dann sollte die Tabelle nicht geteilt werden.

Eine gute Strategie bei der Entwicklung eines Datenbankentwurfs besteht darin, alle Daten in Tabellen in der vierten Normalform anzuordnen und anschließend zu entscheiden, ob das Ergebnis eine akzeptable Leistung liefert. Ist dies nicht der Fall, können Sie die Daten in Tabellen in der dritten Normalform neu anordnen und die Leistung erneut begutachten.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]