คีย์อ้างอิงประกอบมีสองคอลัมน์และต้องห้ามกรณีหนึ่งค่าว่างแต่อีกค่ามีข้อมูล ควรเพิ่มอะไร?
กใช้ MATCH FULL เพื่อให้คีย์ประกอบว่างทั้งหมดหรือจับคู่ครบทุกส่วน
ขใช้ ON DELETE CASCADE กับความสัมพันธ์ที่รายละเอียดต้องหมดไปพร้อมแถวหลัก
คใช้ RESTRICT เพื่อปฏิเสธการลบแถวเป้าหมายที่ยังมีแถวอ้างอิง
งพิจารณาสร้าง index ที่คอลัมน์ฝั่งอ้างอิง เพราะ foreign key ไม่ได้สร้างให้อัตโนมัติเสมอ
เฉลยอธิบาย
PostgreSQL 18 Documentation: Constraints Section 5.5.5 Foreign Keys รองรับแนวทางว่า ใช้ MATCH FULL เพื่อให้คีย์ประกอบว่างทั้งหมดหรือจับคู่ครบทุกส่วน จึงแก้เงื่อนไขหลักในโจทย์ได้ตรงกว่าแนวทางของประเด็นอื่น