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).