เมื่อออกแบบฐานข้อมูลสำหรับระบบการเงิน ต้องการเก็บข้อมูลบัญชีธนาคาร และการโอนเงินระหว่างบัญชี (Transaction) ปัญหาหลักที่ต้องระวังในการออกแบบตาราง Transaction คืออะไร

ไม่จำเป็นต้องใช้ Foreign Key เพราะการโอนเงินเป็นข้อมูลชั่วคราว
ควรสร้างสองตาราง Transaction แยกกัน หนึ่งสำหรับการหักเงิน และอีกหนึ่งสำหรับการเพิ่มเงิน
ต้องเก็บทั้ง FromAccountID และ ToAccountID เป็น Foreign Key อ้างอิงตาราง Account เดียวกัน และต้องใช้ Database Transaction เพื่อความสมบูรณ์
ควรเก็บชื่อบัญชีต้นทางและปลายทางแทน ID เพื่อให้อ่านง่าย

เฉลยอธิบาย

ในระบบการเงิน ตาราง Transaction ต้องมีทั้ง FromAccountID และ ToAccountID ที่เป็น Foreign Key อ้างอิงตาราง Account เดียวกัน (ซึ่งเป็น Self-Reference FK) นอกจากนี้ต้องใช้ Database Transaction (ACID) เพื่อให้แน่ใจว่าการหักเงินและการเพิ่มเงินเกิดขึ้นพร้อมกัน ไม่มีการสูญเสียข้อมูล ตัวเลือก B ละเมิด Normalization ตัวเลือก C ทำให้เกิด Data Redundancy และจัดการยาก ตัวเลือก D ละเมิด Referential Integrity

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

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