บริษัทพัฒนาแอปประเมินผลงานพนักงาน พนักงานหนึ่งคนสามารถประเมินพนักงานอื่นได้ และพนักงานหนึ่งคนสามารถถูกประเมินได้จากหลายคน ควรออกแบบตาราง Evaluation อย่างไร
กEvaluation (EvaluationID PK, EvaluatorID FK อ้างอิง Employee, EvaluateeID FK อ้างอิง Employee, Score, Comments, EvalDate)
ขEvaluation (EvaluationID PK, EmployeeID FK, Score, Comments, EvalDate)
คEmployee (EmployeeID PK, Name, EvaluatorList, EvaluateeList)
งEvaluation (EvaluationID PK, EvaluatorName, EvaluateeName, Score)
เฉลยอธิบาย
ความสัมพันธ์นี้เป็น Self-Referencing Many-to-Many บนตาราง Employee เดียวกัน ตาราง Evaluation ต้องมี FK สองตัว (EvaluatorID และ EvaluateeID) ที่อ้างอิงไปยัง Employee.EmployeeID ทั้งคู่ ตัวเลือก B มี FK เดียวไม่สามารถแยกบทบาทผู้ประเมินและผู้ถูกประเมิน ตัวเลือก C ละเมิด 1NF ตัวเลือก D เก็บชื่อแทน FK ทำให้ข้อมูลไม่สมบูรณ์