ในการออกแบบฐานข้อมูลสำหรับระบบโรงเรียน มีตาราง 'นักเรียน' (รหัสนักเรียน ชื่อ ชั้น) และตาราง 'วิชา' (รหัสวิชา ชื่อวิชา) โดยนักเรียน 1 คนสามารถลงทะเบียนเรียนได้หลายวิชา และวิชา 1 วิชามีนักเรียนได้หลายคน ควรออกแบบความสัมพันธ์ระหว่างสองตารางนี้อย่างไรจึงจะเหมาะสมที่สุด
กสร้างตารางกลาง 'ลงทะเบียน' ที่มีรหัสนักเรียนและรหัสวิชาเป็น Foreign Key เพื่อแสดงความสัมพันธ์แบบ Many-to-Many
ขเพิ่มคอลัมน์รหัสวิชาลงในตารางนักเรียนโดยตรง เพื่อระบุวิชาที่นักเรียนแต่ละคนเรียนแบบ One-to-Many
คเพิ่มคอลัมน์รหัสนักเรียนลงในตารางวิชาโดยตรง เพื่อระบุนักเรียนที่เรียนวิชานั้นแบบ One-to-Many
งรวมตารางนักเรียนและตารางวิชาเข้าด้วยกันเป็นตารางเดียว เพื่อลดความซับซ้อนของความสัมพันธ์ในระบบ
เฉลยอธิบาย
ความสัมพันธ์ระหว่างนักเรียนและวิชาเป็นแบบ Many-to-Many (นักเรียน 1 คนเรียนได้หลายวิชา และวิชา 1 วิชามีนักเรียนได้หลายคน) การจัดการความสัมพันธ์ประเภทนี้ในฐานข้อมูลเชิงสัมพันธ์ต้องสร้างตารางกลาง (Junction Table หรือ Associative Table) เช่น ตาราง 'ลงทะเบียน' ที่ประกอบด้วย Foreign Key จากทั้งสองตาราง ได้แก่ รหัสนักเรียนและรหัสวิชา การเพิ่มคอลัมน์ลงในตารางใดตารางหนึ่งโดยตรงจะทำให้เกิดข้อมูลซ้ำซ้อนและผิดหลัก Normalization ส่วนการรวมตารางจะทำให้ข้อมูลซ้ำซ้อนอย่างมากและไม่เป็นไปตามหลักการออกแบบฐานข้อมูลที่ดี