Normalisierung von Datenbanken: Unterschied zwischen den Versionen

Aus Operations-Research-Wiki
Wechseln zu: Navigation, Suche
[gesichtete Version][Markierung ausstehend]
(Vor- und Nachteile der Normalisierung)
(Beispiel)
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Unter '''Normalisierung''' versteht man die schrittweise Zerlegung von Relationen, um Redundanzen innerhalb des Datenschemas zu beheben.
 
Unter '''Normalisierung''' versteht man die schrittweise Zerlegung von Relationen, um Redundanzen innerhalb des Datenschemas zu beheben.
  
===Ziele der Normalisierung===
+
=Ziele der Normalisierung=
 
Mit einer Normalisierung werden folgende Ziele verfolgt:
 
Mit einer Normalisierung werden folgende Ziele verfolgt:
 
*Integritätssicherung,
 
*Integritätssicherung,
Zeile 9: Zeile 9:
 
Schrittweise wird das relationale Datenschema in die 1., 2., 3. usw. Normalform überführt. Damit ein relationales Datenschema in einer bestimmten Normalform vorliegt, hat es die Kriterien der jeweiligen Normalform zu erfüllen.
 
Schrittweise wird das relationale Datenschema in die 1., 2., 3. usw. Normalform überführt. Damit ein relationales Datenschema in einer bestimmten Normalform vorliegt, hat es die Kriterien der jeweiligen Normalform zu erfüllen.
  
====1. Normalform====
+
==1. Normalform==
 
Die '''1. Normalform''' wird folgendermaßen definiert:
 
Die '''1. Normalform''' wird folgendermaßen definiert:
  
 
Eine Relation befindet sich in der ersten Normalform (1.NF), wenn alle Attributwerte '''atomar''' sind, d.h. dass alle Attribute '''maximal einen Wert''' haben.
 
Eine Relation befindet sich in der ersten Normalform (1.NF), wenn alle Attributwerte '''atomar''' sind, d.h. dass alle Attribute '''maximal einen Wert''' haben.
====2. Normalform====
+
===Beispiel===
 +
Folgende Relation ist nicht in der 1. NF, da in der Spalte "passend für" teilweise keine atomarität vorliegt:
 +
 
 +
{|class="wikitable"
 +
|-
 +
! Produkt
 +
! passend für
 +
|-
 +
| Autoscheinwerfer Cool4
 +
| Audi, VW
 +
|-
 +
| Autoscheinwerfer Maxspot
 +
| Ford
 +
|-
 +
| Scheibenwischer Supertrocken
 +
| BMW, Audi, VW, Porsche
 +
|}
 +
 
 +
Wir überführen die Tabelle in die 1. NF:
 +
{|class="wikitable"
 +
|-
 +
! Produkt
 +
! passend für
 +
|-
 +
| Autoscheinwerfer Cool4
 +
| Audi
 +
|-
 +
| Autoscheinwerfer Cool4
 +
| VW
 +
|-
 +
| Autoscheinwerfer Maxspot
 +
| Ford
 +
|-
 +
| Scheibenwischer Supertrocken
 +
| BMW
 +
|-
 +
| Scheibenwischer Supertrocken
 +
| Audi
 +
|-
 +
| Scheibenwischer Supertrocken
 +
| VW
 +
|-
 +
| Scheibenwischer Supertrocken
 +
| Porsche
 +
|}
 +
 
 +
==2. Normalform==
 
Die '''2. Normalform''' wird folgendermaßen definiert:
 
Die '''2. Normalform''' wird folgendermaßen definiert:
  
 
Eine Relation befindet sich in der zweiten Normalform (2.NF), wenn sie sich in 1.NF befindet und jedes Attribut vom '''gesamten Primärschlüssel''' (und nicht nur von Teilen des Primärschlüssels) '''voll funktional abhängig''' ist. Man spricht von voll funktionaler Abhängigkeit, wenn der Wert eines einzigen Attributs eindeutig die Werte der anderen Attribute bestimmt. Relationen in 1.NF sind automatisch in 2.NF, wenn ihr Primärschlüssel nicht zusammengesetzt ist.
 
Eine Relation befindet sich in der zweiten Normalform (2.NF), wenn sie sich in 1.NF befindet und jedes Attribut vom '''gesamten Primärschlüssel''' (und nicht nur von Teilen des Primärschlüssels) '''voll funktional abhängig''' ist. Man spricht von voll funktionaler Abhängigkeit, wenn der Wert eines einzigen Attributs eindeutig die Werte der anderen Attribute bestimmt. Relationen in 1.NF sind automatisch in 2.NF, wenn ihr Primärschlüssel nicht zusammengesetzt ist.
====3. Normalform====
+
===Beispiel===
 +
 
 +
{|class="wikitable"
 +
|-
 +
! ''__Vorwahl__''
 +
! ''__Rufnummer__''
 +
! Vorwahlbezirk
 +
! Name des Anschlussinhaber
 +
|-
 +
| 0631
 +
| 123456
 +
| Kaiserslautern
 +
| Max Mustermann
 +
|-
 +
| 07131
 +
| 123456
 +
| Heilbronn
 +
| Hansi Alpha
 +
|-
 +
| 07131
 +
| 98765
 +
| Heilbronn
 +
| Margot Apfel
 +
|}
 +
Primäre Schlüssel sind Vorwahl und Rufnummer.
 +
Spalte Vorwahlbezirk ist aber nur von der Vorwahl abhängig und damit '''nicht''' vom gesamten Primärschlüssel.
 +
 
 +
Um die Relation in die 2. NF zu überführen spalten wir die partiellen Abhängigkeiten (hier Vorwahlbezirk) in eine neue Relation ab:
 +
 
 +
 
 +
{|class="wikitable"
 +
|-
 +
! ''__Vorwahl__''
 +
! ''__Rufnummer__''
 +
! Anschlussinhaber
 +
|-
 +
| 0631
 +
| 123456
 +
| Max Mustermann
 +
|-
 +
| 07131
 +
| 123456
 +
| Hansi Alpha
 +
|-
 +
| 07131
 +
| 98765
 +
| Margot Apfel
 +
|}
 +
 
 +
{|class="wikitable"
 +
|-
 +
! ''__Vorwahl__''
 +
! Vorwahlbezirk
 +
|-
 +
| 0631
 +
| Kaiserslautern
 +
|-
 +
| 07131
 +
| Heilbronn
 +
|}
 +
 
 +
==3. Normalform==
 
Die '''3. Normalform''' wird folgendermaßen definiert:
 
Die '''3. Normalform''' wird folgendermaßen definiert:
  
Zeile 23: Zeile 130:
 
'''Abhängigkeiten''' aufweist. Unter transitiver Abhängigkeit versteht man die funktionale Abhängigkeit eines Nicht-Schlüsselattributes einer Relation R von einem anderen Nicht-Schlüsselattribut in R.
 
'''Abhängigkeiten''' aufweist. Unter transitiver Abhängigkeit versteht man die funktionale Abhängigkeit eines Nicht-Schlüsselattributes einer Relation R von einem anderen Nicht-Schlüsselattribut in R.
  
===Vor- und Nachteile der Normalisierung===
+
===Beispiel===
 +
{|class="wikitable"
 +
|-
 +
! Titel
 +
! Author
 +
! Geburtsdatum
 +
|-
 +
| Beispiele der 3. NF
 +
| Max Mustermann
 +
| 01.01.1970
 +
|-
 +
| Bäume, Wälder und die Luft
 +
| Waldemar Waldmann
 +
| 10.09.1965
 +
|}
 +
 
 +
Das Geburtsdatum ist vom Primärschlüssel "Titel" transitiv abhängig,
 +
da es vom Autor abhängig ist und dieser widerum vom Primärschlüssel.
 +
Auch hier spalten wir die Abhängigkeiten in eine neue Relation ab.
 +
 
 +
{|class="wikitable"
 +
|-
 +
! Titel
 +
! Author
 +
|-
 +
| Beispiele der 3. NF
 +
| Max Mustermann
 +
|-
 +
| Bäume, Wälder und die Luft
 +
| Waldemar Waldmann
 +
|}
 +
 
 +
{|class="wikitable"
 +
|-
 +
! Autor
 +
! Geburtsdatum
 +
|-
 +
| Max Mustermann
 +
| 01.01.1970
 +
|-
 +
| Waldemar Waldmann
 +
| 10.09.1965
 +
|}
 +
 
 +
=Vor- und Nachteile der Normalisierung=
 
Um die Normalisierung zu beurteilen, muss man folgender Vor- und Nachteile abwägen:
 
Um die Normalisierung zu beurteilen, muss man folgender Vor- und Nachteile abwägen:
  
=====Vorteile=====
+
==Vorteile==
 
*Redundanzfreie Speicherung, d.h. jedes Faktum ist nur einmal in der Datenbank gespeichert.
 
*Redundanzfreie Speicherung, d.h. jedes Faktum ist nur einmal in der Datenbank gespeichert.
 
*Sicherung der Integrität. Integrität bedeutet, dass keine sich widersprechenden Fakten in der Datenbank gespeichert sind.
 
*Sicherung der Integrität. Integrität bedeutet, dass keine sich widersprechenden Fakten in der Datenbank gespeichert sind.
=====Nachteile=====
+
==Nachteile==
 
*Z.T. hoher Normalisierungsaufwand
 
*Z.T. hoher Normalisierungsaufwand
 
*Schlechteres Laufzeitverhalten bei der Zusammenfügung (Join)mehrerer Relationen.
 
*Schlechteres Laufzeitverhalten bei der Zusammenfügung (Join)mehrerer Relationen.
  
 
Fazit: Beim Datenbankentwurf sollten somit immer die '''Kosten''' und der '''Nutzen''' der Normalisierung abgewogen werden. Eine Normalisierung bis 3.NF (oder weniger) ist in der Regel ausreichend. Es gibt jedoch noch weitere Normalformen, auf die hier aber nicht weiter eingegangen wird.
 
Fazit: Beim Datenbankentwurf sollten somit immer die '''Kosten''' und der '''Nutzen''' der Normalisierung abgewogen werden. Eine Normalisierung bis 3.NF (oder weniger) ist in der Regel ausreichend. Es gibt jedoch noch weitere Normalformen, auf die hier aber nicht weiter eingegangen wird.

Aktuelle Version vom 4. November 2013, 12:09 Uhr

Unter Normalisierung versteht man die schrittweise Zerlegung von Relationen, um Redundanzen innerhalb des Datenschemas zu beheben.

Ziele der Normalisierung

Mit einer Normalisierung werden folgende Ziele verfolgt:

  • Integritätssicherung,
  • Redundanzfreie Speicherung,
  • Generierung von "lesbaren" Relationen.

Schrittweise wird das relationale Datenschema in die 1., 2., 3. usw. Normalform überführt. Damit ein relationales Datenschema in einer bestimmten Normalform vorliegt, hat es die Kriterien der jeweiligen Normalform zu erfüllen.

1. Normalform

Die 1. Normalform wird folgendermaßen definiert:

Eine Relation befindet sich in der ersten Normalform (1.NF), wenn alle Attributwerte atomar sind, d.h. dass alle Attribute maximal einen Wert haben.

Beispiel

Folgende Relation ist nicht in der 1. NF, da in der Spalte "passend für" teilweise keine atomarität vorliegt:

Produkt passend für
Autoscheinwerfer Cool4 Audi, VW
Autoscheinwerfer Maxspot Ford
Scheibenwischer Supertrocken BMW, Audi, VW, Porsche

Wir überführen die Tabelle in die 1. NF:

Produkt passend für
Autoscheinwerfer Cool4 Audi
Autoscheinwerfer Cool4 VW
Autoscheinwerfer Maxspot Ford
Scheibenwischer Supertrocken BMW
Scheibenwischer Supertrocken Audi
Scheibenwischer Supertrocken VW
Scheibenwischer Supertrocken Porsche

2. Normalform

Die 2. Normalform wird folgendermaßen definiert:

Eine Relation befindet sich in der zweiten Normalform (2.NF), wenn sie sich in 1.NF befindet und jedes Attribut vom gesamten Primärschlüssel (und nicht nur von Teilen des Primärschlüssels) voll funktional abhängig ist. Man spricht von voll funktionaler Abhängigkeit, wenn der Wert eines einzigen Attributs eindeutig die Werte der anderen Attribute bestimmt. Relationen in 1.NF sind automatisch in 2.NF, wenn ihr Primärschlüssel nicht zusammengesetzt ist.

Beispiel

__Vorwahl__ __Rufnummer__ Vorwahlbezirk Name des Anschlussinhaber
0631 123456 Kaiserslautern Max Mustermann
07131 123456 Heilbronn Hansi Alpha
07131 98765 Heilbronn Margot Apfel

Primäre Schlüssel sind Vorwahl und Rufnummer. Spalte Vorwahlbezirk ist aber nur von der Vorwahl abhängig und damit nicht vom gesamten Primärschlüssel.

Um die Relation in die 2. NF zu überführen spalten wir die partiellen Abhängigkeiten (hier Vorwahlbezirk) in eine neue Relation ab:


__Vorwahl__ __Rufnummer__ Anschlussinhaber
0631 123456 Max Mustermann
07131 123456 Hansi Alpha
07131 98765 Margot Apfel
__Vorwahl__ Vorwahlbezirk
0631 Kaiserslautern
07131 Heilbronn

3. Normalform

Die 3. Normalform wird folgendermaßen definiert:

Ein Relationenschema befindet sich in der dritten Normalform (3.NF), wenn es sich in 2.NF befindet und zudem keine transitiven Abhängigkeiten aufweist. Unter transitiver Abhängigkeit versteht man die funktionale Abhängigkeit eines Nicht-Schlüsselattributes einer Relation R von einem anderen Nicht-Schlüsselattribut in R.

Beispiel

Titel Author Geburtsdatum
Beispiele der 3. NF Max Mustermann 01.01.1970
Bäume, Wälder und die Luft Waldemar Waldmann 10.09.1965

Das Geburtsdatum ist vom Primärschlüssel "Titel" transitiv abhängig, da es vom Autor abhängig ist und dieser widerum vom Primärschlüssel. Auch hier spalten wir die Abhängigkeiten in eine neue Relation ab.

Titel Author
Beispiele der 3. NF Max Mustermann
Bäume, Wälder und die Luft Waldemar Waldmann
Autor Geburtsdatum
Max Mustermann 01.01.1970
Waldemar Waldmann 10.09.1965

Vor- und Nachteile der Normalisierung

Um die Normalisierung zu beurteilen, muss man folgender Vor- und Nachteile abwägen:

Vorteile

  • Redundanzfreie Speicherung, d.h. jedes Faktum ist nur einmal in der Datenbank gespeichert.
  • Sicherung der Integrität. Integrität bedeutet, dass keine sich widersprechenden Fakten in der Datenbank gespeichert sind.

Nachteile

  • Z.T. hoher Normalisierungsaufwand
  • Schlechteres Laufzeitverhalten bei der Zusammenfügung (Join)mehrerer Relationen.

Fazit: Beim Datenbankentwurf sollten somit immer die Kosten und der Nutzen der Normalisierung abgewogen werden. Eine Normalisierung bis 3.NF (oder weniger) ist in der Regel ausreichend. Es gibt jedoch noch weitere Normalformen, auf die hier aber nicht weiter eingegangen wird.