Unterschied zwischen 3NF und BCNF

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 5 Kann 2024
Anonim
Boyce-Codd Normal Form with example | Comparison between 3NF and BCNF
Video: Boyce-Codd Normal Form with example | Comparison between 3NF and BCNF

Inhalt


Normalisierung ist eine Methode, die entfernt Redundanz aus einer Beziehung, wodurch das Einfügen, Löschen und Aktualisieren von Anomalien minimiert wird, die die Leistung von Datenbanken beeinträchtigen. In diesem Artikel werden wir zwischen zwei höheren Normalformen unterscheiden, d. H. 3NF und BCNF. Der grundlegende Unterschied zwischen 3NF und BCNF besteht darin 3NF eliminiert man die transitiven Abhängigkeiten von einer Relation und einer Tabelle, um in BCNF zu sein, muss die triviale funktionale Abhängigkeit X-> Y in einer Relation nur gelten, wenn X der Superschlüssel ist.

Lassen Sie uns die Unterschiede zwischen 3NF und BCNF anhand der folgenden Vergleichstabelle diskutieren.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den Vergleich3NFBCNF
KonzeptKein Nicht-Prim-Attribut darf transitiv vom Kandidatenschlüssel abhängig sein.Für jede triviale Abhängigkeit in einer Relation R, sagen wir X-> Y, sollte X ein Superschlüssel der Relation R sein.
Abhängigkeit3NF kann erhalten werden, ohne alle Abhängigkeiten zu opfern.Abhängigkeiten werden in BCNF möglicherweise nicht beibehalten.
ZersetzungVerlustfreie Zersetzung kann in 3NF erreicht werden.Verlustfreie Zersetzung ist in BCNF schwer zu erreichen.


Definition von 3NF

Eine Tabelle oder eine Relation gilt als in Dritte Normalform nur wenn der tisch schon drin ist 2NF und es gibt keine Nicht-Prim Attribut transitiv abhängig von der Kandidatenschlüssel einer Beziehung.

Bevor ich mich also mit dem Normalisieren einer Tabelle in 3NF befasse, möchte ich den Kandidatenschlüssel erörtern. EIN Kandidatenschlüssel ist Minimaler Superschlüssel ein Superschlüssel mit minimalen Attributen, der alle Attribute einer Beziehung definieren kann. Während Sie Ihre Tabelle normalisieren, erkennen Sie zunächst den Kandidatenschlüssel einer bestimmten Beziehung. Die Attribute, die Teil des Kandidatenschlüssels sind, sind Primat Attributeund die Attribute, die nicht Teil des Kandidatenschlüssels sind, sind Nicht-Prim-Attribute.


Wenn wir nun eine Beziehung R (A, B, C, D, E, F) haben und folgende Funktionsabhängigkeiten für die Beziehung R haben.

Wenn wir funktionale Abhängigkeiten beobachten, können wir daraus schließen AB ist ein Kandidatenschlüssel für die Relation R, weil wir mit dem Schlüssel AB den Wert für alle Attribute in einer Relation R suchen können A, B wird Primat Attribute wie sie zusammen Kandidatenschlüssel machen. Die Attribute C, D, E, F wird Nicht-Prim Attribute, weil keiner von ihnen Teil eines Kandidatenschlüssels ist.

Die Tabelle ist in 2NF, da kein Nicht-Prim-Attribut teilweise vom Kandidatenschlüssel abhängt

Unter den bereitgestellten funktionalen Abhängigkeiten als Attribut wird jedoch eine transitive Abhängigkeit beobachtet F ist nicht direkt vom Kandidatenschlüssel abhängig AB. Stattdessen Attribut F ist transitiv abhängig vom Kandidatenschlüssel AB über Attribut D. Bis Attribut D einen Wert hat, den wir über den Kandidatenschlüssel AB zum Attributwert F erreichen können. Falls der Wert des Attributs D NULL ist, können wir den Wert von F mit Hilfe des Kandidatenschlüssels AB niemals finden / suchen. Aus diesem Grund fordert 3NF, die transitiven Abhängigkeiten aus den Beziehungen zu entfernen.

Um diese transitiven Abhängigkeiten zu beseitigen, müssen wir die Relation R teilen. Platzieren Sie beim Teilen einer Relation immer den Kandidatenschlüssel und alle Attribute, die von diesem Kandidatenschlüssel abhängen, in der ersten Relation. In der nächsten geteilten Beziehung werden wir das Attribut, das die transitiven Abhängigkeiten verursacht, und die davon abhängigen Attribute in die zweite Beziehung einfügen.

Jetzt sind die Tabellen R1 und R2 in 3NF, da es keine partiellen und transitiven Abhängigkeiten mehr gibt. Beziehung R1 (A, B, C, D, E) hat einen Kandidatenschlüssel AB in der Erwägung, Beziehung R2 (D, E) hat D als Kandidatenschlüssel.

Definition von BCNF

BCNF gilt als stärker als 3NF. Die Relation R in BCNF muss in sein 3NF. Und wo auch immer ein nicht-triviale funktionale Abhängigkeit A -> B gilt dann in Relation R EIN muss ein sein Superkey von Relation R. Wie wir wissen, ist Superschlüssel ein Schlüssel, der ein einzelnes Attribut oder einen Satz von Attributen hat, die die gesamten Attribute einer Relation bestimmen.

Kommen wir nun zu einem Beispiel, um BCNF besser zu verstehen. Nehmen wir an, wir haben eine Beziehung R (A, B, C, D, F), die folgende funktionale Abhängigkeiten haben.

Wenn wir die Beziehung R betrachten, können wir das sagen EIN und BF sind Kandidatenschlüssel der Relation R, weil sie allein den Wert für alle Attribute in der Relation R suchen können A, B, F sind die prime Attribute während, C und D sind Nicht-Prim Attribute. In den oben vorliegenden funktionalen Abhängigkeiten wird keine transitive Abhängigkeit beobachtet. Daher ist die Tabelle R in 3NF.

Aber eine funktionale Abhängigkeit, d.h. D -> F verletzt die Definition von BCNF, wonach, wenn D -> F dann existieren D sollte das sein super key was hier nicht der Fall ist. Also werden wir die Beziehung R teilen.

Jetzt sind die Tabellen R1 und R2 in BCNF. Beziehung R1 hat zwei Kandidat Schlüssel EIN und Bdie triviale funktionale Abhängigkeit von R1, d. h. A → BCD und B → ACD, gilt für BCNF, da A und B die Superschlüssel für die Beziehung sind. Beziehung R2 hat D als sein Kandidatenschlüssel und die funktionale Abhängigkeit D -> F gilt auch für BCNF, da D ein Superschlüssel ist.

  1. 3NF gibt an, dass kein Nicht-Prim-Attribut transitiv vom Kandidatenschlüssel der Beziehung abhängig sein darf. Andererseits gibt BCNF an, dass, wenn eine triviale funktionale Abhängigkeit X -> Y für eine Beziehung existiert; dann muss X ein Superschlüssel sein.
  2. 3NF kann erhalten werden, ohne die Abhängigkeit der Beziehung zu opfern. Beim Abrufen von BCNF bleibt die Abhängigkeit möglicherweise jedoch nicht erhalten.
  3. 3NF kann erreicht werden, ohne dass Informationen aus der alten Tabelle verloren gehen, während wir beim Erhalt von BCNF möglicherweise einige Informationen aus der alten Tabelle verlieren.

Fazit:

BCNF ist viel restriktiver als 3NF, was bei der Normalisierung der Tabelle mehr hilft. Die Beziehung in 3NF hat eine minimale verbleibende Redundanz, die vom BCNF weiter entfernt wird.