ฉันมีปัญหากับฟอร์มปกติที่สอง (2NF) และฉันไม่สามารถแก้ไขได้โดยใช้ Google มันทำให้ฉันเป็นบ้าเพราะฉันเป็นครูและฉันไม่ต้องการสอนสิ่งผิด ๆ ให้กับนักเรียนของฉัน
มามีตารางที่มี 5 ฟิลด์กัน
Gradings = {StudentName, SubjectCode, SubjectName, #Exam, Grade}
การพึ่งพาเป็นเช่นนี้:
StudentName, SubjectCode, #Exam -> Grade
SubjectCode -> SubjectName
SubjectName -> SubjectCode
ดังนั้นที่สำคัญผู้สมัคร 1 {StudentName, SubjectCode, #Exam}และที่สำคัญผู้สมัคร 2 {StudentName, subjectName, #Exam}
แอตทริบิวต์ที่สำคัญคือ{StudentName, SubjectCode, SubjectName, #Exam}และแอตทริบิวต์ที่ไม่ใช่นายกรัฐมนตรีคือGrade
ตามคำจำกัดความของรูปแบบปกติที่สองแอตทริบิวต์ที่ไม่ใช่นายกไม่สามารถขึ้นอยู่กับส่วนของคีย์ตัวเลือก แอ็ตทริบิวต์ที่ไม่ใช่ไพรม์เท่านั้น (เกรด) ไม่ได้ขึ้นอยู่กับส่วนของคีย์ตัวเลือกดังนั้นตารางนี้จะปรากฏเป็น 2NF
ปัญหาคือฉันคิดว่ามีบางอย่างผิดปกติ (และฉันอาจผิด) ฉันคิดว่าผู้เข้าร่วมการศึกษาควรมีตารางของตนเอง
Gradings = {StudentName, รหัสวิชา, #Exam, เกรด}
Subjects = {รหัสหัวเรื่อง, SubjectName}
แต่ 2NF ไม่ได้ผลิตสิ่งนี้ 3NF นั้นเกี่ยวกับการพึ่งพาระหว่างคุณลักษณะที่ไม่ใช่แบบเฉพาะดังนั้นมันจึงไม่สร้างสิ่งนี้ แต่สำหรับฉันแล้วดูเหมือนว่านี่เป็นผลลัพธ์ที่ถูกต้องเพราะไม่มีความซ้ำซ้อน
ฉันเดาว่าแอตทริบิวต์ที่ไม่เฉพาะเจาะจงถูกกำหนดเป็น "แอตทริบิวต์ที่ไม่ใช่คีย์ตัวเลือก" 2NF จะให้ผลลัพธ์ที่ต้องการ แต่ฉันได้ตรวจสอบสิ่งนี้ซ้ำแล้วซ้ำอีกและแอตทริบิวต์ที่ไม่สำคัญถูกกำหนดเป็น "แอตทริบิวต์ที่ไม่ได้อยู่ในคีย์ตัวเลือก"
ผมทำอะไรผิดหรือเปล่า?