ห้องประชุมเดียวกันห้ามมีช่วงเวลาจองทับกัน แม้ค่าเริ่มและสิ้นสุดไม่เท่ากันทั้งหมด ควรพิจารณาข้อจำกัดใด?
กใช้ UNIQUE กับเวลาเริ่มเพียงคอลัมน์เดียวเพื่อห้ามเวลาจองที่เริ่มไม่เท่ากัน
ขใช้ exclusion constraint กับช่วงเวลาเพื่อห้ามแถวที่มีช่วงจองซ้อนทับกัน
คใช้ NOT NULL กับเวลาเริ่มและเวลาสิ้นสุดเพื่อรับรองว่าไม่มีช่วงใดทับกัน
งใช้ FOREIGN KEY จากเวลาสิ้นสุดไปยังเวลาเริ่มของรายการจองถัดไป
เฉลยอธิบาย
Exclusion constraint สามารถห้ามคู่แถวที่ผลการเปรียบเทียบตามตัวดำเนินการที่กำหนดเป็นจริงพร้อมกัน ดังนั้นคำตอบที่เหมาะที่สุดคือ “ใช้ exclusion constraint กับช่วงเวลาเพื่อห้ามแถวที่มีช่วงจองซ้อนทับกัน” ส่วนตัวลวงที่ใกล้เคียงที่สุดไม่ผ่านเพราะ UNIQUE เวลาเริ่มไม่ตรวจช่วงที่เริ่มต่างกันแต่ยังซ้อนทับกัน