ออกแบบฐานข้อมูลสำหรับระบบแจ้งซ่อมออนไลน์ของเทศบาล ประชาชนสามารถแจ้งปัญหาได้หลายเรื่อง เจ้าหน้าที่หนึ่งคนรับผิดชอบแต่ละเรื่อง และแต่ละเรื่องมีสถานะเปลี่ยนแปลงได้หลายครั้ง ตารางใดสำคัญที่สุดสำหรับติดตามประวัติสถานะ
กตาราง Complaint (ComplaintID PK, Description, Status) ที่มีคอลัมน์ Status เพียงคอลัมน์เดียวสำหรับเก็บสถานะปัจจุบัน โดยเมื่อเจ้าหน้าที่เปลี่ยนสถานะเรื่องร้องเรียนจะอัปเดตทับค่าเดิมในคอลัมน์นี้ทันที ทำให้ไม่มีการเก็บบันทึกประวัติสถานะก่อนหน้าไว้เลย
ขตาราง Officer ที่มีคอลัมน์ ComplaintStatusList เก็บประวัติสถานะทุกเรื่อง
คตาราง Complaint ที่มีคอลัมน์ Status1, Status2, Status3 สำหรับประวัติสถานะสูงสุด 3 ครั้ง
งตาราง StatusHistory (HistoryID PK, ComplaintID FK, OldStatus, NewStatus, ChangedBy FK, ChangedDate) เพื่อบันทึกทุกการเปลี่ยนแปลง
เฉลยอธิบาย
การติดตาม Audit Trail หรือประวัติการเปลี่ยนแปลงต้องใช้ตารางแยกที่บันทึกทุก Transaction เพื่อให้สามารถย้อนดูประวัติได้ครบถ้วน ตัวเลือก A ทับข้อมูลเก่าทำให้ไม่มีประวัติ ตัวเลือก C จำกัดการเปลี่ยนสถานะและละเมิดหลักการ Normalization ตัวเลือก D ไม่สมเหตุสมผลเชิงโครงสร้าง