ออกแบบฐานข้อมูลสำหรับระบบแจ้งซ่อมออนไลน์ของเทศบาล ประชาชนสามารถแจ้งปัญหาได้หลายเรื่อง เจ้าหน้าที่หนึ่งคนรับผิดชอบแต่ละเรื่อง และแต่ละเรื่องมีสถานะเปลี่ยนแปลงได้หลายครั้ง ตารางใดสำคัญที่สุดสำหรับติดตามประวัติสถานะ

ตาราง 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 ไม่สมเหตุสมผลเชิงโครงสร้าง

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

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