ในระบบฐานข้อมูลคำสั่งซื้อที่มีตาราง Orders (OrderID, CustomerID, OrderDate, TotalAmount) และตาราง OrderDetails (OrderDetailID, OrderID, ProductID, Quantity, UnitPrice) หากราคาสินค้าในตาราง Products มีการเปลี่ยนแปลง ข้อมูลในตาราง OrderDetails จะได้รับผลกระทบอย่างไร

ไม่ได้รับผลกระทบ เนื่องจากตาราง OrderDetails เก็บ UnitPrice ซึ่งเป็นราคา ณ เวลาที่สั่งซื้อไว้แยกต่างหาก ทำให้ข้อมูลประวัติการสั่งซื้อยังคงถูกต้องตามเดิม
ได้รับผลกระทบโดยตรง เนื่องจาก UnitPrice ใน OrderDetails อ้างอิงค่าจากตาราง Products แบบ Real-time ทำให้ราคาในคำสั่งซื้อเก่าเปลี่ยนแปลงตามโดยอัตโนมัติ
ได้รับผลกระทบบางส่วน เนื่องจากระบบจะอัปเดต UnitPrice เฉพาะคำสั่งซื้อที่ยังไม่ได้ชำระเงิน ส่วนคำสั่งซื้อที่ชำระแล้วจะไม่เปลี่ยนแปลง
ไม่ได้รับผลกระทบในทันที แต่เมื่อมีการ Query ข้อมูลย้อนหลัง ระบบจะดึงราคาปัจจุบันจากตาราง Products มาแสดงแทนราคาเดิมเสมอ

เฉลยอธิบาย

ตาราง OrderDetails มีคอลัมน์ UnitPrice ซึ่งเก็บราคาสินค้า ณ เวลาที่ทำการสั่งซื้อไว้โดยตรง (Snapshot) ไม่ได้อ้างอิงค่าจากตาราง Products แบบ Real-time ดังนั้นเมื่อราคาสินค้าใน Products เปลี่ยนแปลง ข้อมูลใน OrderDetails จะไม่ได้รับผลกระทบใดๆ ซึ่งเป็นแนวทางการออกแบบฐานข้อมูลที่ถูกต้องเพื่อรักษาความถูกต้องของข้อมูลประวัติธุรกรรม

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

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