tbee's page
   home  work  myself  mixed  guestbook  
   
      INHALT MySQL Relationale Datenbanken - Normalisierung

Wer mir was gutes tun will kauft über diesen Link bei Amazon ein !

Normalisierung?

(von © 1996-98 Andreas Kelz  ) Überführung komplexer Beziehungen (Tabellen) in einfache Beziehungen durch Aufteilung der Attribute einer Tabelle auf mehrere Tabellen. Ziel sind stabile und flexible Datenstrukturen, die bei Erweiterungen möglichst wenig geändert werden müssen.

Komplexe Tabellen sollen durch eine Aufteilung in mehrere Tabellen entflechtet werden.

So das dabei stabile und flexible Strukturen entstehen und keine Anomaliene mehr auftreten (siehe vorher)

Die Normalisierung erfolgt in mehreren Schritten:

  • Nullte Normalform
  • Erster Normalform (1NF)
  • Zweite Normalform (2NF)
  • Dritte Normalform (3NF)
  • Boyce-Codd Normalform (BCNF)
  • Vierte Normalform (4NF)
  • Fünfte Normalform (5NF)

Relevant für uns sind nur die ersten vier (bis zur 3NF)


Was benötigen wir zum Normalisieren?

Schlüssel

  • Ein Schlüssel ist eine Menge von Attributen (also eines oder mehrere), die eine Datenzeile (Tupel) einer Tabelle eindeutig identifiziert
  • Ein Schlüsselkandidat ist ein Schlüssel mit minimaler Anzahl Attribute
  • Eine Relation kann mehrere Schlüsselkandidaten haben
  • Ein Primärschlüssel ist ein beliebig ausgewählter Schlüsselkandidat, der zur eindeutigen Identifizierung jeder Zeile benutzt wird. Besteht der Primärschlüssel aus mehreren Attributen (dies ist dann der Fall, wenn ein Attribut zur eindeutigen Identifizierung nicht ausreicht), wird er als zusammengsetzter Primärschlüssel bezeichnet.
     
  • Ein Schlüsselattribut ist ein Attribut, das Teil mindestens eines Schlüsselkandidaten ist. Alle anderen Attribute sind Nicht-Schlüsselattribute


 

Nullte Normalform

Die Datenelemente der realen Welt werden als Tabelle aufgelistet und berechnete Datenfelder möglichst entfernt.  

Erste Normalform (1NF)

Definition

Eine Relation ist in der Ersten Normalform, wenn jeder Attributwert atomar ist.

Erklärung

Ein Attributwert ist atomar, wenn er nicht aus mehreren Werten zusammengsetzt ist. So wäre z. B. der Attributwert  ausgeliehen an:(Klaus Müller, Elsenheimerstr. 7, 80187 München) nicht atomar, da er eine vollständige Adresse enthält, die in mehrere Attribut aufgeteilt werden kann.

Abhilfe:
Attribute mit Nicht-atomaren-Attributwerten werden in mehrere Attribute aufgeteilt. Eine Wiederholungsgruppe wird aus der Tabelle entfernt und in einer eigenen Tabelle untergebracht.

Unsere Reisekostentabelle enthält keine nicht-atomaren Attributwerte, ist also bereits in der ersten Normalform.  
 

Zweite Normalform (2NF)

Definition

Eine Relation ist in der Zweiten Normalform, wenn sie in der Ersten Normalform ist und jedes Nicht-Schlüsselattribut von jedem Schlüsselkandidaten vollständig funktional abhängig ist.

Erklärung

Ein Attribut Y ist von einem Attribut X funktional abhängig, wenn es zu jedem X genau ein Y gibt.

Vollständig funktional abhängig bedeutet, daß das Nicht-Schlüsselattribut nicht nur von einem Teil der Attribute eines zusammengesetzten Schlüsselkandidaten funktional abhängig ist, sondern von allen Teilen.

Beispiel:
In der Reisekostentabelle sind die Attribute "Datum", "Name", "Vorname", "Straße", "PLZ" und "Ort" nur funktional abhängig vom Attribut "Rechnungsnummer" und völlig unabhängig vom Attribut "Kostenart".
Das Attribut "Einzelvergütung" ist dagegen nur funktional abhängig von der "Kostenart" und hat nichts mit der "Rechnungsnummer" zu tun. Lediglich das Attribut "Anzahl" ist vom zusammengesetzten Primärschlüssel voll funktional abhängig.

Abhilfe:
Datenfelder, die von einem Schlüsselkandidaten (hier nur der Primärschlüssel) nicht vollständig funktional abhängig sind, werden in weiteren Tabellen untergebracht. Der Teil des Schlüsselkandidaten, von dem ein ausgelagertes Datenfeld funktional abhängig ist, wird Primärschlüssel der neuen Tabelle. Als Ergebnis erhalten wird die drei folgenden Tabellen.
 

Reise
Rechnungsnummer Datum Name Vorname Straße PLZ Ort
             


 

Positionen
Rechnungsnummer Kostenart Anzahl
     


 

Kostenarten
Kostenart Einzelvergütung
   

Fettgedruckte Attribute: Primärschlüssel

Das berechnete Attribut "Summe" wäre hier in der Tabelle "Reise" zu führen. Das berechnete Attribut "Gesamtvergütung" kann nicht in "Positionen" geführt werden, da es nur von der "Anzahl" und der "Kostenart" funktional abhängig ist, aber nicht von der Rechnungsnummer. Das Attribut "Gesamtvergütung" könnte dann in einer weiteren Tabelle "Vergütung" mit den Attributen "Kostenart", "Anzahl" und "Gesamtvergütung" ("Kostenart" und "Anzahl" wären dann zusammengesetzter Primärschlüssel) untergebracht werden. Die berechneten Datenfelder verbleiben, falls sie mitgeführt werden, auch bei den folgenden Normalisierungen in den genannten Tabellen.

Beachten Sie:

  • Besteht der Primärschlüssel nur aus einem einzigen Attribut (ist er also nicht zusammengesetzt), so ist ein Datensatz in Erster Normalform bereits automatisch in Zweiter Normalform.


weiters Beispiel:

Neben der AuftragNr, der ArtikelNr und der Menge soll auch der Hersteller des Artikels gespeichert werden. Damit würde sich die folgende Artikel-Tabelle ergeben.
AuftragNr und ArtikelNr sind der zusammengesetzte Primärschlüssel.



best. Artikel
AuftragNr ArtikelNr Menge Hersteller
4711 4692 5 Blech-AG
4711 0567 2 Keramik GmbH
4711 5671 3 Baustoff KG
4711 0579 1 Keramik GmbH
0815 8971 2 Keramik GmbH
0815 5324 5 Baustoff KG
0815 0579 9 Keramik GmbH


In diesem Beispiel ist das Attribut `Hersteller` nur vom Teilschlüssel `ArtikelNr` und nicht auch von `AuftragNr` abghängig. Damit die Relation der 2. NF genügt, muß das Attribut `Hersteller` aus der Relation herausgenommen und der (neuen) Relation Artikel zugeordnet werden.


 

Verbindung zwischen Tabellen

Jede Rechnungsnummer der Tabelle "Reise" kann in ein oder mehreren Zeilen der Tabelle "Positionen" auftauchen. Dies ist der Fall, wenn bei einer Rechnungsnummer mehrere Kostenarten zu berücksichtigen sind.
Man sagt: Zwischen den Tabellen "Reise" und "Positionen" besteht eine

      1 : n Beziehung

(sprich: eins zu n, eins zu viele).

Zwischen den Tabellen "Kostenarten" und "Positionen" besteht ebenfalls eine 1:n Beziehung, da jede in "Kostenarten" aufgeführte Kostenart mehrfach in der Tabelle "Positionen" erscheinen kann (nämlich bei verschiedenen Rechnungsnummern).

Dagegen besteht zwischen den Tabellen "Reise" und "Kostenarten" gar keine Beziehung, da sie kein gemeinsames Attribut aufweisen.

 
Was ist ein Schlüssel? Datenbank Tool für MySQL PhpMyAdmin


 

Druckerversion     [valid html 4.01]      [english]
style: blauer Stylegelber Styleroter Stylegruener StyleStandard Style
© 2001 by  tbee / Impressum last update at: 10.04. 2003 23:04:56
url: www.tbee.de/mysql/t2_normalisierung.php