Normalisierung ist eine Datenbankdesign -Technik, die darauf abzielt, die Datenreduktion und die Verbesserung der Datenintegrität zu verbessern. Es gibt mehrere normale Formen, die verschiedene Normalisierungsniveaus definieren. Erkunden wir sie im Detail:
1.. Erste Normalform (1NF):
Der erste Schritt bei der Normalisierung einer Datenbank besteht darin, sicherzustellen, dass sie in der ersten normalen Form ist. Eine Tabelle ist in 1NF, wenn sie die folgenden Bedingungen erfüllt:
2. Zweite Normalform (2NF):
Eine Tabelle befindet sich in 2NF, wenn sie sich in 1NF befindet und alle Nicht-Key-Spalten vollständig von der Primärschlüssel der Tabelle abhängig sind. Dies bedeutet, dass, wenn der Primärschlüssel der Tabelle aus mehreren Spalten besteht, keine Spalte ohne Key nur von einem Teil des Schlüssels abhängen sollte, sondern von der gesamten Taste.
3.. Dritte Normalform (3NF):
Eine Tabelle befindet sich in 3NF, wenn sie in 2NF ist und es keine transitiven Abhängigkeiten gibt. Dies bedeutet, dass eine Nicht-Key-Spalte von einer anderen Nicht-Key-Spalte abhängt, sie in eine separate Tabelle verschoben werden sollte. Mit anderen Worten, jede Nicht-Key-Spalte muss eine Tatsache über den Schlüssel, den gesamten Schlüssel und nichts als den Schlüssel liefern.
4. Boyce-Codd Normalform (BCNF):
BCNF ist eine strengere Version von 3NF. Eine Tabelle befindet sich in BCNF, wenn sie sich in 3NF befindet, und für jede seiner nicht trivialen funktionalen Abhängigkeiten x -> y ist x ein Superkey -das heißt, X ist entweder ein Kandidatenschlüssel oder ein Superset davon. BCNF wurde entwickelt, um die Möglichkeit von Anomalien zu beseitigen, die aufgrund bestimmter Arten von funktionalen Abhängigkeiten in 3NF -Tabellen weiterhin auftreten können.
Die wichtigsten Unterschiede zwischen 1NF und 2NF liegen in der Art der Abhängigkeiten innerhalb der Tabelle.
Betrachten Sie zur Veranschaulichung eine Tabelle in 1NF mit einem zusammengesetzten Primärschlüssel. Wenn eine Nicht-Key-Spalte nur von einem Teil des Primärschlüssels abhängt, verstößt sie gegen 2NF. Wenn beispielsweise eine Tabellenverfolgung einen zusammengesetzten Primärschlüssel (OrderID, ProductID) und eine Spalte für ProductPrice enthält, die nur von ProductID abhängt, würde das Verschieben des Produktprice in eine separate Tabelle (mit ProductID als Primärschlüssel) die ursprüngliche Tabelle in 2NF bringen.
Die dritte Normalform (3NF) spielt eine entscheidende Rolle bei der Reduzierung der Redundanz der Daten, indem transitive Abhängigkeiten beseitigt werden. Eine transitive Abhängigkeit tritt auf, wenn eine Nicht-Key-Spalte von einer anderen Nicht-Key-Spalte abhängt, was wiederum vom Primärschlüssel abhängt.
Betrachten Sie beispielsweise eine Tabelle in 2NF, die Spalten für Mitarbeiter (Primärschlüssel), Abteilung und Abteilungsname enthält. Wenn der Abteilungsname von der Abteilung abhängt, was wiederum von der Mitarbeiter von Mitarbeiter abhängt, hat der Abteilungspannung eine transitive Abhängigkeit von der Mitarbeiter durch die Abteilung. Dieses Setup kann zu einer Datenreduktion führen, da der gleiche Abteilungsname in der Tabelle mehrfach wiederholt werden kann.
Um dies anzugehen, würde 3NF einen Umzugsabteilungsnamen in eine separate Abteilungstabelle (mit der Abteilung als Hauptschlüssel) verlangen, wodurch die transitive Abhängigkeit beseitigt wird. Dieser Normalisierungsschritt stellt sicher, dass der Abteilungsname nur einmal gespeichert wird, wodurch Redundanz reduziert und die Datenintegrität verbessert wird. Wenn ein Update benötigt wird, muss es nur an einem Ort durchgeführt werden, wodurch das Risiko von Inkonsistenzen minimiert werden muss.
Boyce-Codd-Normalform (BCNF) wird gegenüber der dritten Normalform (3NF) bevorzugt, wenn es funktionelle Abhängigkeiten gibt, bei denen die Determinante (linke Seite der Abhängigkeit) kein Superkey ist. BCNF liefert ein strengeres Kriterium zur Beseitigung von Anomalien, die in 3NF -Tischen bestehen können.
Betrachten Sie ein Beispiel mit einem Universitätskursregistrierungssystem:
Tabelle: Courseregistration
Funktionsabhängigkeiten:
In diesem Szenario befindet sich die Tabelle in 3NF, da es keine transitiven Abhängigkeiten gibt. Es verstößt jedoch gegen BCNF, weil InstructorID -> CourseID bedeutet, dass InstructorID, das kein Superkey ist, eine andere Nicht -Key -Spalte, Cursid, bestimmt.
Um BCNF zu befriedigen, müssten wir die Tabelle in zwei Teile aufteilen:
Tabelle 1: Kurserregistrierung
Tabelle 2: InstructorCourse
Auf diese Weise stellen wir sicher, dass jede Determinante in den funktionalen Abhängigkeiten ein Superkey ist und so die BCNF -Kriterien erfüllt. Diese Trennung beseitigt potenzielle Anomalien wie Einfügen, Löschung und Aktualisierung von Anomalien, die auftreten könnten, wenn die Tabelle in 3NF bleibt.
Das obige ist der detaillierte Inhalt vonErklären Sie verschiedene normale Formen (1NF, 2NF, 3NF, BCNF).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!