ในการออกแบบฐานข้อมูลสำหรับระบบการศึกษาออนไลน์ที่มีตาราง Students, Courses, Lessons และ Progress โดยหลักสูตรหนึ่งมีบทเรียนหลายบท และนักเรียนหนึ่งสามารถเรียนได้หลายหลักสูตร ควรกำหนด Foreign Key ในตาราง Progress อย่างไรจึงจะถูกต้องที่สุด

ตาราง Progress มี Foreign Key อ้างอิง student_id จากตาราง Students และ lesson_id จากตาราง Lessons เพื่อติดตามความคืบหน้าในแต่ละบทเรียนของนักเรียนแต่ละคน
ตาราง Progress มี Foreign Key อ้างอิง student_id จากตาราง Students และ course_id จากตาราง Courses โดยไม่จำเป็นต้องอ้างอิงถึงระดับบทเรียน
ตาราง Lessons มี Foreign Key อ้างอิง student_id จากตาราง Students และ progress_id จากตาราง Progress เพื่อเชื่อมโยงข้อมูลนักเรียนกับบทเรียน
ตาราง Students มี Foreign Key อ้างอิง course_id จากตาราง Courses และ lesson_id จากตาราง Lessons รวมกันไว้ในตารางเดียวเพื่อลดความซับซ้อนของการ JOIN

เฉลยอธิบาย

การออกแบบที่ถูกต้องคือตาราง Progress ควรมี Foreign Key อ้างอิง student_id จากตาราง Students และ lesson_id จากตาราง Lessons เพราะเป้าหมายคือการติดตามความคืบหน้าของนักเรียนในแต่ละบทเรียน และตาราง Lessons ก็มี Foreign Key อ้างอิง course_id จากตาราง Courses อยู่แล้ว ทำให้สามารถสืบค้นย้อนกลับไปยังหลักสูตรได้โดยไม่ต้องเก็บข้อมูลซ้ำซ้อน ตัวเลือก B ไม่สามารถระบุความคืบหน้าระดับบทเรียนได้ ตัวเลือก C และ D วางความสัมพันธ์ผิดตาราง ทำให้ละเมิดหลักการออกแบบฐานข้อมูล

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

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