นักวิเคราะห์ระบบของบริษัทสายการบินต้องออกแบบแบบจำลองข้อมูลสำหรับการจองตั๋วเครื่องบิน ในระบบนี้มี เที่ยวบิน (Flight) ที่มีเครื่องบิน (Aircraft) หลาย ๆ ลำในการปฏิบัติงาน เครื่องบินแต่ละลำจะบินหลาย ๆ เที่ยว ผู้โดยสาร (Passenger) สามารถจองที่นั่งในเที่ยวบินหลาย ๆ ครั้ง และเที่ยวบินแต่ละครั้งมีผู้โดยสารจำนวนมาก นอกจากนี้ที่นั่ง (Seat) ในเครื่องบินแต่ละลำจะมีเลขประจำตัว (Seat Number) ที่ไม่ซ้ำกันในเครื่องบินลำนั้น แต่ลำอื่นอาจมีเลขประจำตัวซ้ำกันได้ ควรออกแบบความสัมพันธ์ระหว่างตาราง Aircraft และ Seat อย่างไร
กSeat มี Foreign Key ชี้ไปที่ Aircraft เท่านั้น
ขSeat มี Composite Primary Key ประกอบด้วย SeatNumber และ AircraftID
คSeat และ Aircraft มี Composite Foreign Key เป็นคู่
งAircraft มี Foreign Key ชี้ไปที่ Seat เท่านั้น
เฉลยอธิบาย
เนื่องจากเลขประจำตัวที่นั่ง (Seat Number) ไม่ซ้ำกันเฉพาะในเครื่องบินแต่ละลำเท่านั้น Primary Key ของตาราง Seat ต้องเป็น Composite Primary Key ประกอบด้วยทั้ง SeatNumber และ AircraftID เพื่อให้แต่ละที่นั่งเป็นเอกลักษณ์ได้ ตัวเลือก A ไม่เพียงพอเพราะไม่แสดงว่าที่นั่งไม่ซ้ำกันในเครื่องบิน ตัวเลือก B กลับกัน ตัวเลือก A ยังไม่บังคับความไม่ซ้ำของ SeatNumber ภายในเครื่องบิน ส่วน B กลับทิศความสัมพันธ์ และ C ไม่ใช่การกำหนดคีย์ที่เหมาะสม; ตัวเลือก D จึงถูกต้อง