ห้องประชุมเดียวกันห้ามมีช่วงเวลาจองทับกัน แม้ค่าเริ่มและสิ้นสุดไม่เท่ากันทั้งหมด ควรพิจารณาข้อจำกัดใด?

ใช้ UNIQUE กับเวลาเริ่มเพียงคอลัมน์เดียวเพื่อห้ามเวลาจองที่เริ่มไม่เท่ากัน
ใช้ exclusion constraint กับช่วงเวลาเพื่อห้ามแถวที่มีช่วงจองซ้อนทับกัน
ใช้ NOT NULL กับเวลาเริ่มและเวลาสิ้นสุดเพื่อรับรองว่าไม่มีช่วงใดทับกัน
ใช้ FOREIGN KEY จากเวลาสิ้นสุดไปยังเวลาเริ่มของรายการจองถัดไป

เฉลยอธิบาย

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

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับระบบฐานข้อมูล (Database System) และ ระบบการบริหารจัดการข้อมูล (Database Management System)

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