Heim > Datenbank > MySQL-Tutorial > Erklären Sie verschiedene normale Formen (1NF, 2NF, 3NF, BCNF).

Erklären Sie verschiedene normale Formen (1NF, 2NF, 3NF, BCNF).

Karen Carpenter
Freigeben: 2025-03-19 13:15:26
Original
979 Leute haben es durchsucht

Erklären Sie verschiedene normale Formen (1NF, 2NF, 3NF, BCNF).

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:

  • Jede Spalte der Tabelle muss atomare (unteilbaren) Werte enthalten.
  • Jede Spalte in einer Zeile muss den gleichen Werteart enthalten.
  • Jede Spalte muss einen eindeutigen Namen haben.
  • Die Reihenfolge, in der Daten gespeichert werden, spielt keine Rolle.

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.

Was sind die wichtigsten Unterschiede zwischen 1NF und 2NF?

Die wichtigsten Unterschiede zwischen 1NF und 2NF liegen in der Art der Abhängigkeiten innerhalb der Tabelle.

  • 1NF konzentriert sich auf die Struktur der Daten und stellt sicher, dass jede Zelle Atomwerte enthält und dass die Reihenfolge der Daten keine Rolle spielt. Es geht nicht um die Beziehungen zwischen Datenelementen.
  • 2NF hingegen baut auf 1NF auf, indem sie partielle Abhängigkeiten beseitigen. Eine partielle Abhängigkeit tritt auf, wenn eine Nicht-Key-Spalte nur von einem Teil des Primärschlüssels in einer Tabelle mit einem zusammengesetzten (Multi-Säulen-) Primärschlüssel abhängt. In 2NF muss jede Nicht-Key-Spalte voll funktionsfähig von dem gesamten Primärschlüssel abhängen.

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.

Wie hilft 3NF bei der Reduzierung der Datenreduktion?

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.

Können Sie ein Beispiel dafür geben, wann BCNF gegenüber 3NF bevorzugt wird?

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

  • Säulen: studentid, cursed, Instructorid
  • Funktionsabhängigkeiten:

    • (StudentID, CourseID) -> Instructorid (Grundschlüssel)
    • Instructorid -> CourseID (ein Ausbilder unterrichtet nur einen Kurs)

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

  • Säulen: studentid, cursed, Instructorid
  • Hauptschlüssel: (studentid, cursed)

Tabelle 2: InstructorCourse

  • Säulen: InstructorID, KursID
  • Primärschlüssel: Instructorid

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage