GeeksforGeeks
Die erste Normalform (1NF) beseitigt nicht die Redundanz, sondern vielmehr die sich wiederholenden Gruppen.
Anstatt mehrere Spalten mit der gleichen Art von Daten in einem Datensatz zu haben (0NF oder nicht normalisierte Form), werden die sich wiederholenden Informationen in eine separate Beziehung ausgelagert und als Zeilen dargestellt. Dies macht die 1NF aus.
Second Normal Form (2NF):
Die Second Normal Form (2NF) basiert auf dem Konzept der vollständigen funktionalen Abhängigkeit. Die zweite Normalform gilt für Relationen mit zusammengesetzten Schlüsseln, d. h. Relationen mit einem Primärschlüssel, der aus zwei oder mehr Attributen besteht. Eine Relation mit einem Primärschlüssel aus einem einzigen Attribut hat automatisch mindestens 2NF. Eine Relation, die nicht in 2NF ist, kann unter den Aktualisierungsanomalien leiden.
Um in zweiter Normalform zu sein, muss eine Relation in erster Normalform sein, und die Relation darf keine partielle Abhängigkeit enthalten. Eine Relation ist in 2NF, wenn sie keine partielle Abhängigkeit hat, d.h. kein Nicht-Prime-Attribut (Attribute, die nicht Teil eines Kandidatenschlüssels sind) ist von einer geeigneten Teilmenge eines Kandidatenschlüssels der Tabelle abhängig.
Mit anderen Worten:
Eine Relation, die sich in Erster Normalform befindet, und jedes Nicht-Primärschlüssel-Attribut ist vollständig funktional vom Primärschlüssel abhängig, dann befindet sich die Relation in Zweiter Normalform (2NF).
Anmerkung – Wenn die richtige Teilmenge des Kandidatenschlüssels ein Nicht-Primärschlüssel-Attribut bestimmt, wird dies als partielle Abhängigkeit bezeichnet.
Die Normalisierung von 1NF-Relationen in 2NF beinhaltet die Beseitigung partieller Abhängigkeiten. Wenn eine partielle Abhängigkeit besteht, entfernen wir das/die teilweise abhängige(n) Attribut(e) aus der Relation, indem wir es/sie zusammen mit einer Kopie seiner/ihrer Determinante in eine neue Relation stellen.
Betrachten Sie die folgenden Beispiele.
Beispiel-1:
Betrachten Sie die folgende Tabelle.
STUD_NO COURSE_NO COURSE_FEE1 C1 10002 C2 15001 C4 20004 C3 10004 C1 10002 C5 2000
{Beachten Sie, dass es viele Kurse gibt, die die gleiche Kursgebühr haben. }
Hier,
KURSGEBÜHR kann nicht allein den Wert von KURS_NO oder STUD_NO bestimmen;
KURSGEBÜHR kann zusammen mit STUD_NO nicht den Wert von KURS_NO bestimmen;
KURSGEBÜHR kann zusammen mit KURS_NO nicht den Wert von STUD_NO bestimmen;
Daher wäre
COURSE_FEE ein Nicht-Prime-Attribut, da es nicht zu dem einen einzigen Kandidatenschlüssel {STUD_NO, COURSE_NO} gehört ;
Aber, COURSE_NO -> COURSE_FEE, d.e., COURSE_FEE ist abhängig von COURSE_NO, das eine echte Teilmenge des Kandidatenschlüssels ist. Das Nicht-Prime-Attribut COURSE_FEE ist von einer echten Teilmenge des Kandidatenschlüssels abhängig, was eine partielle Abhängigkeit darstellt, so dass diese Beziehung nicht in 2NF ist.
Um die obige Relation in 2NF umzuwandeln,
müssen wir die Tabelle in zwei Tabellen aufteilen, z.B.:
Tabelle 1: STUD_NO, STUDIEN_NO
Tabelle 2: STUDIEN_NO, STUDIEN_GELD
Table 1 Table 2STUD_NO COURSE_NO COURSE_NO COURSE_FEE 1 C1 C1 10002 C2 C2 15001 C4 C3 10004 C3 C4 20004 C1 C5 2000 2 C5
Hinweis – 2NF versucht, die redundanten Daten zu reduzieren, die im Speicher gespeichert werden. Wenn z.B. 100 Schüler den Kurs C1 belegen, brauchen wir die Gebühr nicht für alle 100 Datensätze als 1000 zu speichern, sondern können sie in der zweiten Tabelle speichern, da die Kursgebühr für C1 1000 beträgt.
Beispiel-2:
Betrachten Sie die folgenden funktionalen Abhängigkeiten in der Relation R (A, B, C, D )
AB -> C BC -> D
In der obigen Relation ist AB der einzige Schlüsselkandidat, und es gibt keine partielle Abhängigkeit, d.h. jede geeignete Teilmenge von AB bestimmt kein Nicht-Primzahl-Attribut.