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
- Datenbank-Relations-Nichtschlüsselattribute vollfunktional von Ihren Primärschlüsseln abhängen.
- 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.
Lizenziert unter Creative Commons Attribution Non-commercial Share Alike License 4.0