ระบบบันทึกคำสั่งซื้อที่อ้างรหัสสินค้าซึ่งไม่มีอยู่จริง ควรใช้กลไกใดรักษาความสัมพันธ์?

กำหนด foreign key จากคำสั่งซื้อไปยังคีย์ของสินค้าที่มีอยู่
ใช้ exclusion constraint เพื่อห้ามคู่แถวที่ช่วงเวลาซ้อนทับตามตัวดำเนินการกำหนด
กำหนด CHECK ให้ค่าราคาผ่านนิพจน์ที่ยอมรับเฉพาะค่าถูกต้อง
กำหนด NOT NULL ที่คอลัมน์วันที่ซึ่งห้ามขาดค่า

เฉลยอธิบาย

PostgreSQL 18 Documentation: Constraints Section 5.5.5 Foreign Keys รองรับแนวทางว่า กำหนด foreign key จากคำสั่งซื้อไปยังคีย์ของสินค้าที่มีอยู่ จึงแก้เงื่อนไขหลักในโจทย์ได้ตรงกว่าแนวทางของประเด็นอื่น