เมื่อต้องการบันทึกข้อมูลครูและวิชาที่สอน ครูหนึ่งคนสอนได้หลายวิชา และวิชาหนึ่งสามารถสอนได้โดยหลายครู ควรออกแบบโครงสร้างฐานข้อมูลอย่างไร
กสร้างตารางครูที่มีแอตทริบิวต์เพิ่มเติมสำหรับเก็บรายชื่อวิชาที่สอน
ขสร้างเพียงตารางวิชา และใส่ Foreign Key ของครูทุกคนที่สอน
คสร้างตารางครู และตารางวิชา แล้วใส่ Foreign Key ของครูในตาราง วิชา
งสร้างตารางครู ตารางวิชา และตารางสัมพันธ์ (Junction Table) ชื่อ 'ครูสอนวิชา' เพื่ออธิบาย Many-to-Many Relationship
เฉลยอธิบาย
ความสัมพันธ์ Many-to-Many ต้องแก้ไขด้วยการสร้างตาราง Junction Table (ตารางเชื่อมโยง) ซึ่งมี Foreign Key ของทั้งสองตารางแม่ ในกรณีนี้คือ ตาราง 'ครูสอนวิชา' ที่มี Foreign Key ของ 'ครู' และ 'วิชา' เพื่อบันทึกว่าครูใครสอนวิชาไหน ตัวเลือก A ทำให้เกิดข้อมูลซ้ำซ้อนและปัญหา Anomaly ตัวเลือก C ไม่ปฏิบัติตาม 1NF ตัวเลือก D ทำให้สูญเสียข้อมูล