Navigation überspringen

2. Normalform (NF)

Beabsichtigte Lernziele

Dieser Abschnitt widmet sich der Übertragung unserer Grund-Daten in die 2. Normalform. 

Dabei ist zu erreichen, dass wiederum alle

  1. Datenbank-Relations-Nichtschlüsselattribute vollfunktional von Ihren Primärschlüsseln abhängen.
  2. Relationen der 1. Normalform genügen!

Funktionale Abhängigkeit

Teilfunktionale Abhängigkeit

Hängen Nichtschlüsselattribute nur von Teilen des Primärschlüssels bei zusammengesetzen Primärschlüsseln ab, so nennt man sie teilfunktional abhängig.

Vollfunktionale Abhängigkeit

Hängen Nichtschlüsselattribute nicht nur von Teilen sondern vollständig vom Primärschlüssel ab, so nennt man sie vollfunktional abhängig.

Anwendung

Wir nehmen an, dass Max Müller eine weitere Ausleihe vornimmt. Er leiht die zuvor von Gabriela Fritz zurüvckgebrachte cdID 13 aus.

cdausleihe
ausleihID Ausleihdatum Vorname Nachname Telefon
1 18.01.2017 Max Müller 0491 222222
2 12.02.2017 Gabriela Fritz 0213 4567
3 22.02.2017 Max Müller 0491 222222

ausgeliehenecds
ausleihID cdID
1 1
1 34
1 21
2 13
2 55
3 13

Problematisch für den Sachverhalt ist das nicht, für die bislang strukturierte Datenbank jedoch schon. Es kommt zu Redundanzen und dadurch in späterer Folge zu Inkonsistenzen / Anomalien.

cdausleihe
ausleihID Ausleihdatum Vorname Nachname Telefon
1 18.01.2017 Max Müller 0491 222222
2 12.02.2017 Gabriela Fritz 0213 4567
3 22.02.2017 Max Müller 0491 222222

  vollfunktionale Abhängigkeit

Erklärung:

Die Attribute der Personendaten {Vorname,Nachname,Telefon} sind nicht vollfunktional vom Primärschlüssel abhängig. Durch Kenntnis des Primärschlüssels kann nicht in eindeutiger Weise auf beispielsweise den Vornamen der Ausleihperson geschlossen werden. Das widerspricht den Forderungen der 2. Normalform.

Abhilfe:

Wir teilen die Tabelle cdausleihe ein weiteres Mal logisch auf.

Überarbeitung:

Sämtliche Nichtschlüsselattribute müssen vollfunktional von Ihrem Primärschlüssel abhängen.

1. Das erreichen wir, wenn wir die Nichtschlüsselattribute {Vorname,Nachname,Telefon} auslagern in eine neue separate Relation. Hier erzeugen wir wieder einen Primärschlüssel, der als Fremdschlüssel in die Relation cdausleihe eingetragen werden kann:

cdausleihe
ausleihID Ausleihdatum PersonID
1 18.01.2017 1
2 12.02.2017 2
3 22.02.2017 1

personendaten
PersonID Vorname Nachname Telefon
1 Max Müller 0491 222222
2 Gabriela Fritz 0213 4567

ausgeliehenecds
ausleihID cdID
1 1
1 34
1 21
2 13
2 55
3 13

2.   Alle Attribute sind vollfunktional abhängig von ihrem Primärschlüssel.

3.   Redundanzen werden weitestgehens verhindert.

4.   Anomalien / Inkonsistenzen werden weitestgehend verhindert.

Fazit:

Die Forderungen der 2. Normalform wurden erfüllt.