ฐานข้อมูลของห้างสรรพสินค้ามีตาราง 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 โดยตรงจากช่องทางอื่นได้