dns Normalisierung von Datenbanken

Syntheseverfahren

In einigen Fällen kann es vorkommen, dass bei der Normalisierung nach dem vorgestellten Algorithmus Abhängigkeiten verloren gehen. Für diesen Fall existiert das sogenannte Syntheseverfahren chat_bubble_outline , welches hier kurz vorgestellt werden soll.

Dazu betrachten wir eine leicht abgeänderte Tabelle als Beispiel:

Tabelle: Aufträge

Datum Kennzeichen KdNr. Kunde Kd. Alter MNr.
16.3.2018 MK:KI 163 K101 Kiwits 32 M01
4.5.2018 MS:KU 458 K102 Kurze 24 M02
8.6.2018 MK:KI 163 K101 Kiwits 33 M03

Diese Relation befindet sich schon in erster Normalform. Als Schlüsselkandidat kommt Datum, Kennzeichen infrage. Will man nun zur zweiten Normalform voranschreiten, würde man feststellen, dass KdNr. und Kunde voll funktional vom Kennzeichen abhängig sind und eine neue Tabelle erstellen, die dieses als Primärschlüssel enthält.

Tabelle: Aufträge

Datum Kennzeichen Kd. Alter MNr.
16.3.2018 MK:KI 163 32 M01
4.5.2018 MS:KU 458 24 M02
8.6.2018 MK:KI 163 33 M03

Tabelle: Kunden

Kennzeichen KdNr. Kunde
MK:KI 163 K101 Kiwits
MS:KU 458 K102 Kurze
MK:KI 163 K101 Kiwits

Problem der zweiten Normalform

An dieser Stelle geht allerdings eine Abhängigkeit verloren: Das Alter des Kunden (Kd. Alter) ist abhängig von den beiden Spalten Datum und KdNr., wünschenswert wäre deshalb eine solche Tabelle:

Tabelle: Kundenalter

Datum KdNr. Kd. Alter
16.3.2018 K101 32
4.5.2018 K102 24
8.6.2018 K101 33

Eine solche Tabelle wird sich allerdings nicht mehr ergeben. Das Alter des Kunden würde in der Auftragstabelle erhalten bleiben und dort nicht redundanzfrei abgespeichert werden. Dies ist allerdings der Zweck der Normalisierung.

Ein besseres Vorgehen

Bei Syntheseverfahren überlegt man sich nach der ersten Normalform – losgelöst von Schlüsselkandidaten –, welche Abhängigkeiten in der Relation existieren: chat_bubble_outline

  • Datum, Kennzeichen → MNr.
  • Kennzeichen → KdNr., Kunde
  • Datum, KdNr. → Kd. Alter

In dieser Überlegung taucht auch das oben genannte, wünschenswerte Beispiel auf. Für jede dieser Abhängigkeiten baut man eine Tabelle auf:

Tabelle: Mitarbeiter

Datum Kennzeichen MNr.
16.3.2018 MK:KI 163 M01
4.5.2018 MS:KU 458 M02
8.6.2018 MK:KI 163 M03

Tabelle: Kunden

Kennzeichen KdNr. Kunde
MK:KI 163 K101 Kiwits
MS:KU 458 K102 Kurze
MK:KI 163 K101 Kiwits

Tabelle: Alter des Kunden

Datum KdNr. Kd. Alter
16.3.2018 K101 32
4.5.2018 K102 24
8.6.2018 K101 33

Diese Relation befindet sich direkt in dritter Normalform. chat_bubble_outline

chevron_right Zusammenfassung