บริษัทพัฒนาแอปพลิเคชันต้องการเก็บข้อมูลการให้คะแนน (Rating) สินค้า โดยลูกค้าแต่ละคนสามารถให้คะแนนสินค้าเดิมได้หลายครั้ง (เช่น หลังจากซื้อแต่ละครั้ง) ควรออกแบบ Primary Key ของตาราง Rating อย่างไร
กใช้ (CustomerID, ProductID, RatingDate) เป็น Composite Primary Key
ขใช้ (CustomerID, ProductID) เป็น Composite Primary Key
คใช้ CustomerID เป็น Primary Key เพียงอย่างเดียว
งใช้ RatingID ที่เป็นตัวเลขเพิ่มขึ้นอัตโนมัติ (Auto-increment) เป็น Primary Key และเพิ่ม CustomerID, ProductID, OrderID เป็น Foreign Key
เฉลยอธิบาย
เนื่องจากลูกค้าสามารถให้คะแนนสินค้าเดิมได้หลายครั้ง (หลังซื้อแต่ละครั้ง) การใช้ (CustomerID, ProductID) เป็น Composite PK จะไม่เหมาะสมเพราะจะซ้ำกัน การใช้ RatingID แบบ Auto-increment เป็น Surrogate Key ที่ดีที่สุด และสามารถเพิ่ม OrderID เพื่อเชื่อมโยงว่าเป็นการให้คะแนนหลังซื้อครั้งไหน ตัวเลือก B ไม่รองรับการให้คะแนนหลายครั้งต่อสินค้าเดียวกัน ตัวเลือก D แม้อาจใช้ได้แต่วันที่อาจซ้ำกันได้ถ้าให้คะแนนในวันเดียวกัน