Ich habe ein Problem mit der zweiten normalen Form (2NF) und ich konnte es nicht mit Google lösen. Es macht mich verrückt, weil ich Lehrer bin und meinen Schülern nichts Falsches beibringen möchte.
Lassen Sie uns eine Tabelle mit 5 Feldern haben.
Benotungen = {StudentName, SubjectCode, SubjectName, #Exam, Note}
Abhängigkeiten sind wie folgt:
StudentName, SubjectCode, #Exam -> Note
SubjectCode -> SubjectName
SubjectName -> SubjectCode
Daher lautet der Kandidatenschlüssel 1 {StudentName, SubjectCode, #Exam} und der Kandidatenschlüssel 2 {StudentName, SubjectName, #Exam} .
Hauptattribute sind {StudentName, SubjectCode, SubjectName, #Exam} und Nicht-Hauptattribute sind Grade
Gemäß der Definition der zweiten Normalform kann ein Nicht-Prim-Attribut nicht von einem Teil eines Kandidatenschlüssels abhängen. Das einzige Nicht-Prim-Attribut (Note) hängt nicht von einem Teil eines Kandidatenschlüssels ab, daher erscheint diese Tabelle in 2NF.
Das Problem ist, dass ich denke, dass etwas nicht stimmt (und ich könnte falsch liegen). Ich denke, die Probanden sollten einen eigenen Tisch haben.
Benotungen = {StudentName, Fachcode, #Exam, Note}
Subjects = {Subject Code, SubjectName}
Aber 2NF produziert das nicht. Bei 3NF geht es um Abhängigkeiten zwischen Nicht-Prim-Attributen, daher wird dies auch nicht erzeugt. Aber es scheint mir, dass dies das richtige Ergebnis ist, weil es keine Redundanz gibt.
Ich vermute, wenn ein Nicht-Prim-Attribut als "Attribut, das kein Kandidatenschlüssel ist" definiert wurde, würde 2NF das gewünschte Ergebnis liefern. Aber ich habe dies immer wieder überprüft und Nicht-Prim-Attribut ist definiert als "Attribut, das nicht zu einem Kandidatenschlüssel gehört".
Was mache ich falsch?