Wird die DB-Normalisierung ausschließlich auf der Grundlage des Primärschlüssels oder auf der Grundlage aller Kandidatenschlüssel durchgeführt?

7

Ich bin beim Verweisen auf das Internet und Lehrbücher auf zwei Arten des Normalisierungsverfahrens gestoßen. nämlich.

Typ 1 . Normalformen, die nur auf dem Primärschlüssel basieren.

In diesem Typ

-> 2NF verbietet partielle Abhängigkeiten vom Primärschlüssel .

-> 3NF erlaubt keine transitiven Abhängigkeiten vom Primärschlüssel .

Typ 2 . Eine viel allgemeinere Normalform, die auf ALLEN Kandidatenschlüsseln basiert

In diesem Typ

Teilabhängigkeiten und transitive Abhängigkeiten von ALLEN Kandidatenschlüsseln werden berücksichtigt.

In den meisten Websites, auf die ich verwiesen habe, habe ich Tutorials und Notizen gefunden, die nur auf dem ersten Typ basieren. Das Lehrbuch 'Fundamentals of Database Systems' von Navathe und Elmasri beschreibt jedoch beide Typen. Sogar die Wikipedia-Seite zu 2NF erwähnt separat '2NF und Kandidatenschlüssel', die auf dem 2. Typ basieren.

Siehe 2NF und Kandidatenschlüssel - Wiki

Aber weder im Lehrbuch noch im Wiki wird erwähnt, welcher Typ besser ist oder welcher praktisch bevorzugt wird.

Welchem ​​Typ sollte gefolgt werden, wenn nichts über den Typ erwähnt wird? Hoffe du hast meine Frage verstanden.

Bitte helfen Sie mir bei diesen Jungs.

Nabeel
quelle
4
Stellen Sie sich Folgendes vor: Wenn es nur der Primärschlüssel wäre, könnten wir jeder Tabelle eine neue Spalte "Zeilennummer" hinzufügen, diese als Primärschlüssel verwenden und dadurch die Tabelle in eine höhere Normalform verwandeln. Aber alle Probleme mit Redundanz usw., die durch die Normalisierung gelöst werden sollen, wären immer noch da! Daher wäre es dumm, wenn es nur der Primärschlüssel wäre.
Thomas Padron-McCarthy
@ ThomasPadron-McCarthy Sehr wahr !! Verstanden jetzt! Vielen Dank. :)
Nabeel

Antworten:

13

Die Normalisierung betrifft alle Kandidatenschlüssel. Ein Primärschlüssel ist nur ein Kandidatenschlüssel. Primärschlüssel unterscheiden sich nicht von anderen Kandidatenschlüsseln.

Mögliche Verwirrung entsteht , weil in den frühen Tagen der relationalen Datenbank Theorie der Begriff Primärschlüssel verwendet wird, bedeutet alle und alle Kandidaten Schlüssel während moderne Nutzung ist , dass Primary Key bedeutet , dass nur eine Taste , die „bevorzugte“ oder als eine besondere Bedeutung für die Datenbankbenutzer haben . Leider sind viele der "Definitionen", die Sie online oder sogar in gedruckter Form sehen, infolgedessen falsch.

nvogel
quelle
Sollen wir also immer der Normalisierung folgen, die auf Kandidatenschlüsseln basiert? Angenommen, wir werden gebeten zu prüfen, ob die folgende Beziehung in 2NF vorliegt oder nicht. R = (A, B, C, D, E, F) F = {A-> BCDEF, BC-> ADEF, B-> D, E-> F} Die Kandidatenschlüssel sind A, BC. Wenn 'A' als Primärschlüssel ausgewählt ist und der erste Ansatz befolgt wird, gibt es keine partiellen Abhängigkeiten von A, was bedeutet, dass die Beziehung in 2NF ist. Wenn jedoch der 2. Ansatz verfolgt wird, obwohl es keine partiellen Abhängigkeiten von A gibt, haben wir eine partielle Abhängigkeit B-> D vom Kandidatenschlüssel BC, was impliziert, dass die Beziehung nur in 1NF ist !!
Nabeel
Hier war ich verwirrt, weil unser Lehrer am College uns dieses Konzept ausschließlich auf der Grundlage des Primärschlüssels beigebracht hatte, ohne die Kandidatenschlüssel zu berücksichtigen.
Nabeel
4
@Nabeel, Wenn in Ihrem Beispiel BC ein Kandidatenschlüssel ist, ist B-> D eine partielle Schlüsselabhängigkeit und daher ist R nicht in 2NF. Wenn eine Beziehung mehr als einen Kandidatenschlüssel hat, spielt es keine Rolle, welchen Sie als "primär" bezeichnen - die Auswahl ist willkürlich und macht keinen grundlegenden oder praktischen Unterschied. Entscheidend ist, welche Schlüssel und Abhängigkeiten Sie erfüllen möchten. Vielleicht hatten die Beispiele, die Ihr Lehrer verwendet hat, sowieso nur einen Schlüssel? Sie finden zahlreiche Beispiele, die nur einen Kandidatenschlüssel pro Beziehung identifizieren.
Nvogel
Vielen Dank für Ihren Einblick! Hmmm. Ja, die meisten Fragen, auf die wir in unseren Problemlösungssitzungen gestoßen waren, waren ein Kandidatentyp für qns. Wenn Sie sich auf das Elmasri-Navathe-Lehrbuch über Grundlagen von DB-Systemen beziehen, wird die Normalisierung zunächst als zwei separate Abschnitte angegeben, in denen nur der Primärschlüssel berücksichtigt wird, und anschließend wird die allgemeinere Normalisierung basierend auf allen Kandidatenschlüsseln eingeführt. Ich frage mich, was die Notwendigkeit ist, es so zu geben. Umso komplizierter und mehrdeutiger für bereits verwirrte Schüler wie mich !! : D
Nabeel
1
Ich stimme zu, dass die Erklärung von Elmasri und Navathe zu kompliziert ist - vielleicht weil ihr Buch auch mehr als nur das relationale Modell behandelt. In anderen Kontexten (z. B. ER-Modellierung) wird der Idee, einen "Primärschlüssel" zu bestimmen, mehr Bedeutung beigemessen als in Bezug auf relationale Datenbanken. Ich bin der Ansicht, dass der "Primärschlüssel" im Wesentlichen ein veraltetes Konzept ist, das beim Unterrichten des relationalen Datenbankdesigns keine herausragende Rolle spielen sollte. Das Konzept ist wirklich nicht viel mehr wert als ein Absatz pro Fußnote.
Nvogel