กรณีวิเคราะห์ฐานข้อมูล 6ba5a08dd94f418be7510817eece83d2a3776064dc5987582e5aabd010b990c3: เมื่อออกแบบหรือแก้ไขระบบ ควรคำนึงถึงความถูกต้อง ความปลอดภัย และผลกระทบ ข้อใดถูกต้องเกี่ยวกับ ในระหว่างการทำธุรกรรม (Transaction) การโอนเงินจากบัญชีหนึ่งไปยังบัญชีอื่น หากเกิดข้อผิดพลาดหลังจากหักเงินแต่ยังไม่ได้บวกเงิน ควรจัดการอย่างไรตามหลักการ ACID?
กโอนเงินไปตามปกติเพราะการหักเงินสำเร็จแล้ว
ขเก็บการหักเงินไว้ก่อน และรอให้ผู้ดูแลระบบแก้ไขการบวกเงินเมื่อมีเวลา
คยกเลิกรายการทั้งหมด (Rollback) เพื่อให้ฐานข้อมูลกลับไปในสถานะเดิม ตามหลักการ Atomicity
งแสดงข้อความแจ้งความผิดพลาดให้ผู้ใช้ และให้ผู้ใช้ลองทำรายการใหม่
เฉลยอธิบาย
หลักการ Atomicity หมายถึง ธุรกรรมจะต้องสำเร็จ (Commit) ทั้งหมด หรือจะต้องถูกยกเลิก (Rollback) ทั้งหมด ไม่สามารถบางส่วนสำเร็จบางส่วนล้มเหลว ดังนั้นหากเกิดข้อผิดพลาดในระหว่างธุรกรรมควรยกเลิกรายการทั้งหมด เพื่อไม่ให้ข้อมูลไม่สอดคล้องกัน ตัวเลือก B จะเสี่ยงต่อการสูญหายเงิน ตัวเลือก C ละเมิดหลักการ Atomicity และตัวเลือก D ไม่ได้แก้ปัญหาที่เกิดขึ้น