พิจารณาตาราง StudentCourse (StudentID FK, CourseID FK, Grade, EnrollDate) โดยมี Composite PK เป็น (StudentID, CourseID) ปัญหาใดอาจเกิดขึ้นหากนักศึกษาลงทะเบียนวิชาเดิมซ้ำ (Retake) ในปีการศึกษาถัดไป
กควรลบตารางนี้และรวมข้อมูลเข้าตาราง Student แทน
ขควรเปลี่ยน Composite PK เป็น Grade เป็น PK แทน
คไม่สามารถบันทึกการลงทะเบียนซ้ำได้เพราะ (StudentID, CourseID) ซ้ำกัน จึงควรเพิ่ม Semester หรือ AcademicYear เข้าใน Composite PK
งไม่มีปัญหา เพราะ Composite PK ป้องกันความซ้ำซ้อนได้อยู่แล้ว
เฉลยอธิบาย
เมื่อนักศึกษาลงทะเบียนวิชาเดิมในเทอมอื่น (StudentID, CourseID) จะซ้ำกัน ทำให้ INSERT ล้มเหลวเพราะละเมิด PK Constraint วิธีแก้คือเพิ่ม Semester หรือ AcademicYear เข้าใน Composite PK เป็น (StudentID, CourseID, Semester) ตัวเลือก A ผิดเพราะการ Retake จะทำให้เกิดปัญหา ตัวเลือก C ผิดเพราะ Grade ไม่ใช่ตัวระบุเอกลักษณ์ ตัวเลือก D ผิดเพราะการรวมตารางจะเกิด Redundancy