ระบบบันทึกการศึกษาต้องแสดงความสัมพันธ์ว่า "ศิษย์" มี "เกรด" ในวิชาต่างๆ และแต่ละวิชามี "ผู้สอน" หลายคน เพื่อแสดงความสัมพันธ์ซับซ้อนนี้อย่างถูกต้อง ควรออกแบบโครงสร้างฐานข้อมูลอย่างไร
กเพิ่มคอลัมน์ชื่อผู้สอนในตารางเกรด
ขสร้างตารางเดียวรวมศิษย์ วิชา ผู้สอน และเกรด
คสร้างตารางกลางเดียว "ศิษย์_วิชา_ผู้สอน" เก็บรหัสศิษย์ รหัสวิชา รหัสผู้สอน และเกรด
งสร้างตาราง: ศิษย์, วิชา, ผู้สอน, เกรด และตารางกลาง "ศิษย์_วิชา" (อ้างอิงศิษย์และวิชา) แล้วสร้างตารางกลางอีกอัน "วิชา_ผู้สอน" (อ้างอิงวิชาและผู้สอน)
เฉลยอธิบาย
ความสัมพันธ์แบบหลายต่อหลายที่ซับซ้อนขึ้น (ศิษย์-วิชา M:M, วิชา-ผู้สอน M:M) สามารถแสดงด้วยตารางกลางเดียว "ศิษย์_วิชา_ผู้สอน" ซึ่งเก็บคีย์นอกของทั้งสามเอนทิตี้ ตัวเลือก A ละเมิดการทำให้ปกติ ตัวเลือก B สร้างตารางกลางสองอัน แต่ไม่เก็บเกรดของศิษย์อย่างเหมาะสม ตัวเลือก C ไม่ได้ระบุแจกจ่ายผู้สอนอย่างชัดเจน