บริษัทพัฒนาแอปพลิเคชันต้องการเก็บข้อมูลการให้คะแนน (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 แม้อาจใช้ได้แต่วันที่อาจซ้ำกันได้ถ้าให้คะแนนในวันเดียวกัน

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →