Volle funktionale Abhängigkeit bei der Datenbanknormalisierung

Eine vollständige funktionale Abhängigkeit ist ein Zustand von Datenbanknormalisierung das entspricht dem Normalisierungsstandard der zweiten Normalform (2NF). Kurz gesagt bedeutet dies, dass es die Anforderungen der First Normal Form (1NF) erfüllt und alle Nicht-Schlüsselattribute voll funktionsfähig vom Primärschlüssel abhängig sind.

Dies ist nicht so kompliziert, wie es klingen mag. Schauen wir uns das genauer an.

Zusammenfassung der ersten Normalform

Bevor eine Datenbank vollständig funktionsabhängig sein kann, muss sie zunächst die Anforderungen erfüllen Erste Normalform. All dies bedeutet, dass jedes Attribut einen einzelnen atomaren Wert enthalten muss.

Die folgende Tabelle entspricht beispielsweise nicht 1NF, da die Mitarbeiterin Tina mit zwei Standorten verknüpft ist, beide in einer einzigen Zelle:

Angestellter Standort
John Los Angeles
Tina Los Angeles, Chicago

Das Zulassen dieses Designs könnte sich negativ auf Datenaktualisierungen oder -einträge auswirken. Um die 1NF-Konformität sicherzustellen, ordnen Sie die Tabelle neu an, sodass alle Attribute (oder Spaltenzellen) einen einzigen Wert enthalten:

Angestellter Standort
John Los Angeles
Tina Los Angeles
Tina  Chicago

Aber 1NF reicht noch nicht aus, um Probleme mit den Daten zu vermeiden.

Wie 2NF funktioniert, um volle Abhängigkeit zu gewährleisten

Um vollständig abhängig zu sein, müssen alle Schlüsselattribute, die keine Kandidaten sind, vom Primärschlüssel abhängen.

EIN Kandidatenschlüssel Attribut ist ein beliebiger Schlüssel (z. B. ein Primär- oder Fremdschlüssel), der verwendet wird, um einen Datenbankdatensatz eindeutig zu identifizieren.

Datenbankdesigner verwenden eine Notation, um die abhängigen Beziehungen zwischen Attributen zu beschreiben:

Wenn das Attribut A den Wert von B bestimmt, schreiben wir dies A -> B, was bedeutet, dass B funktionell von A abhängig ist. In dieser Beziehung bestimmt A den Wert von B, während B von A abhängt.

Zum Beispiel in der folgenden Mitarbeiterabteilungstabelle, Angestellten ID und DeptID sind beide Kandidatenschlüssel: Angestellten ID ist der Primärschlüssel der Tabelle, während DeptID ist ein Fremdschlüssel. Alle anderen Attribute – in diesem Fall Mitarbeitername und Abteilungsname– muss vom Primärschlüssel abhängen, um seinen Wert zu erhalten.

Angestellten ID Mitarbeitername DeptID Abteilungsname
Emp1 John Abt001 Finanzen
Emp2 Tina Abteilung003 Der Umsatz
Emp3 Carlos Abt001 Finanzen

In diesem Fall ist die Tabelle nicht vollständig abhängig, da der EmployeeName vom Primärschlüssel abhängt Angestellten ID, das Abteilungsname hängt stattdessen von der DeptID. Dies wird als partielle Abhängigkeit bezeichnet.

Damit diese Tabelle 2NF-konform ist, müssen wir die Daten in zwei Tabellen aufteilen: eine Employees-Tabelle und eine Departments-Tabelle. Hier ist die Mitarbeitertabelle:

Angestellten ID Mitarbeitername DeptID
Emp1 John Abt001
Emp2 Tina Abteilung003
Emp3 Carlos Abt001

Wir entfernen die Abteilungsname Attribut aus der Tabelle Employees und erstellen Sie eine neue Tabelle Departments:

DeptID Abteilungsname
Abt001 Finanzen
Abt002 Humanressourcen
Abteilung003 Der Umsatz

Jetzt sind die Beziehungen zwischen den Tabellen vollständig abhängig oder in 2NF.

Warum volle Abhängigkeit wichtig ist

Die vollständige Abhängigkeit zwischen Datenbankattributen trägt dazu bei, die Datenintegrität sicherzustellen und Datenanomalien zu vermeiden.

Betrachten Sie zum Beispiel die Tabelle im obigen Abschnitt, die nur 1NF berücksichtigt. Hier ist es noch einmal:

Angestellter Standort
John Los Angeles
Tina Los Angeles
Tina Chicago

Tina hat zwei Rekorde. Wenn wir einen aktualisieren, ohne zu wissen, dass es zwei gibt, würde das Ergebnis inkonsistente Daten sein.

Oder was ist, wenn wir dieser Tabelle einen Mitarbeiter hinzufügen möchten, aber den Standort noch nicht kennen? Wir dürfen möglicherweise nicht einmal einen neuen Mitarbeiter hinzufügen, wenn die Standort -Attribut lässt keine NULL-Werte zu.

Volle Abhängigkeit ist jedoch nicht das ganze Bild, wenn es um Normalisierung geht. Sie müssen sicherstellen, dass Ihre Datenbank in Dritte Normalform (3NF).