ในการออกแบบฐานข้อมูลสำหรับระบบโรงเรียน มีตาราง 'นักเรียน' (รหัสนักเรียน ชื่อ ชั้น) และตาราง 'วิชา' (รหัสวิชา ชื่อวิชา) โดยนักเรียน 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 ส่วนการรวมตารางจะทำให้ข้อมูลซ้ำซ้อนอย่างมากและไม่เป็นไปตามหลักการออกแบบฐานข้อมูลที่ดี

ข้อสอบอื่นในวิชาความรู้ความสามารถในการวิเคราะห์ ออกแบบ ฐานข้อมูล

ดูข้อสอบวิชานี้ทั้งหมด →