Schlüssel und Abhängigkeiten
Bevor wir zu den zwei weiteren Normalformen gelangen, ist es zunächst erforderlich, einige Begrifflichkeiten zu verstehen, darunter die verschiedenen Schlüssel und Abhängigkeiten.
Schlüsselkandidaten und Primärschlüssel
Je nach Definition gehört es schon zur 1NF, einen Primärschlüssel zu erstellen chat_bubble_outline . Dieser dient der eindeutigen Identifizierung eines Eintrages der Tabelle. Spätestens bei der zweiten Normalform sollte man sich das Konzept von Primär- und Fremdschlüsseln zu eigen gemacht haben.
Um diese Beispiel nutzen zu können, gehen wir vereinfacht davon aus, dass Kennzeichen und Auto fest zusammenhängen. Wenn ein Auto also einmal ein Kennzeichen bekommen hat, ändert sich dies nicht mehr und auch, wenn das Auto schon verschrottet wurde, wird das Kennzeichen nicht anderweitig vergeben.
Zunächst bestimmen wir die verschiedenen Schlüsselkandidaten.
Ein Schlüsselkandidat ist eine minimale Menge von Attributen, mit denen jeder Eintrag in einer Datenbanktabelle eindeutig identifiziert werden kann. chat_bubble_outline
Dabei ist nicht nur von den tatsächlich vorliegenden Werten auszugehen, sondern von allen weiteren denkbaren Einträgen. Man könnte auf die Idee kommen, dass die D-Nr. schon als Primärschlüssel ausreicht, da sie in der Tabelle immer eindeutig ist. Allerdings ist dies die ID für die Dienstleistungen, die vorgenommen werden sollen. Soll also bei einem zweiten Auto ein Ölwechsel vorgenommen werden, ist das Feld nicht mehr eindeutig. Man erkennt schnell: Zum Identifizieren der Schlüsselkandidaten benötigt man genaue Kenntnisse der Umstände.
In der Praxis ist es ein häufiges Vorgehen, einen künstlichen Schlüssel hinzuzufügen, der etwa eine aufsteigende Nummerierung der Einträge enthält. chat_bubble_outline In unserem Beispiel ist dieses Vorgehen allerdings nicht notwendig.
Mögliche Schlüsselkandidaten sind:
- Datum, Kennzeichen, D-Nr.
- Datum, Kennzeichen, Dienstleistung
- Datum, Kennzeichen, Auftrag, Beendet
Hat man alle Schlüsselkandidaten identifiziert, liegt es an der Person, welche die Datenbank normalisiert, sich für einen Primärschlüssel zu entscheiden. Dies kann nach subjektiven Kriterien geschehen, allerdings sollte man einen möglichst kleinen Schlüssel wählen, dessen Attribute sich möglichst nicht mehr ändern sollten. chat_bubble_outline
Der Primärschlüssel einer Tabelle ist ein beliebig gewählter Schlüsselkandidat. chat_bubble_outline
In diesem Fall entscheiden wir uns für die Kombination Datum, Kennzeichen und D-Nr. Die Überschriften aller Attribute, die Teil des Primärschlüssels sind, werden in der Regel unterstrichen dargestellt. chat_bubble_outline
Tabelle: Aufträge
Datum | Kennzeichen | Automarke | Modell | KdNr. | Kunde | MNr. | Mechaniker | DNr. | Dienstleistungen | Beendet |
---|---|---|---|---|---|---|---|---|---|---|
16.3.2018 | MK:KI 163 | Volvo | 850 | K101 | Kiwits | M01 | Meinecke | D801 | Scheinwerfer reparieren | Ja |
16.3.2018 | MK:KI 163 | Volvo | 850 | K101 | Kiwits | M01 | Meinecke | D401 | Bremsen kontrollieren | Ja |
4.5.2018 | MS:KU 458 | Ford | Mondeo | K102 | Kurze | M02 | Münz | D106 | Ausbeulen | Ja |
5.5.2018 | DO:KL 558 | VW | Golf | K103 | Klein | M02 | Münz | D408 | Batterie wechseln | Nein |
8.6.2018 | MK:KI 163 | Volvo | 750 | K101 | Kiwits | M03 | Maler | D402 | Bremsen erneuern | Nein |
9.6.2018 | MK:KL 96 | Opel | Astra | K103 | Klein | M03 | Maler | D002 | Ölwechsel | Nein |
Attribute, die zu keinem Schlüsselkandidaten gehören, werden auch Nichtschlüsselattribute genannt. chat_bubble_outline
Funktionale und transitive Abhängigkeit
Zur Überprüfung der zweiten und dritten Normalform untersucht man die Abhängigkeiten der Werte zueinander.
Eine Attributmenge A ist funktional abhängig von einer Attributmenge B, wenn jedem Wert von B genau ein Wert von A zugeordnet werden kann. chat_bubble_outline chat_bubble_outline
Folgende Beispiele für funktionale Abhängigkeiten sind in der Tabelle zu finden:
- Der Kunde ist funktional abhängig vom Kennzeichen.
- Die Dienstleistung ist funktional abhängig von der D-Nr.
- Das Modell ist funktional abhängig von der Automarke.
- Der Mechaniker ist funktional abhängig von Datum und Kennzeichen.
- Der Mechaniker ist funktional abhängig von Datum, Kennzeichen und Automarke.
Eine Attributmenge A ist vollfunktional abhängig von eine Attributmenge B, wenn A funktional abhängig ist von B, jedoch nicht von einer Teilmenge von B. chat_bubble_outline
Wir hatten bereits festgestellt, dass der Mechaniker funktional abhängig ist von Datum, Kennzeichen und Automarke. Jedoch ist diese Abhängigkeit nicht vollfunktional, weil eine Teilmenge existiert von der der Mechaniker abhängig ist – nämlich Datum und Kennzeichen. Von dieser Menge wiederum könnte man kein Attribut entfernen, ohne die funktionale Abhängigkeit zu verlieren. Somit gilt: Der Mechaniker ist vollfunktional abhängig von Datum und Kennzeichen. Mit diesen Definitionen schreiten wir nun weiter zur zweiten Normalform.
chevron_right Zweite Normalform