ฐานข้อมูลของห้างสรรพสินค้ามีตาราง Promotion (PromoID, PromoName, StartDate, EndDate, DiscountPercent) ต้องการให้ระบบตรวจสอบอัตโนมัติว่า StartDate ต้องไม่เกิน EndDate ควรใช้วิธีใด

สร้าง Stored Procedure บังคับให้ใช้แทนการ INSERT โดยตรง
ใช้ CHECK Constraint เช่น CHECK (EndDate >= StartDate) ในระดับตาราง
ตรวจสอบในระดับ Application Layer เท่านั้น เพราะฐานข้อมูลไม่รองรับ
ใช้ Trigger เพื่อตรวจสอบก่อน INSERT หรือ UPDATE ทุกครั้ง

เฉลยอธิบาย

CHECK Constraint เป็นวิธีที่เหมาะสมและมีประสิทธิภาพที่สุดสำหรับการตรวจสอบความสัมพันธ์ระหว่างคอลัมน์ในแถวเดียวกัน เพราะทำงานในระดับฐานข้อมูลโดยตรง ตัวเลือก A ผิดเพราะฐานข้อมูลส่วนใหญ่รองรับ CHECK Constraint และการตรวจสอบที่ Application Layer อย่างเดียวไม่ปลอดภัย ตัวเลือก B ใช้ได้แต่ซับซ้อนกว่าและ Overhead มากกว่า CHECK Constraint ตัวเลือก D ใช้ได้แต่ไม่สามารถป้องกันการ INSERT โดยตรงจากช่องทางอื่นได้

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

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