ฐานข้อมูลระบบสุขภาพต้องจัดเก็บข้อมูลการตรวจร่างกาย โดยแพทย์แต่ละคนมีความเชี่ยวชาญหลายสาขา และการตรวจแต่ละครั้งอาจเกี่ยวข้องกับหลายความเชี่ยวชาญ นักออกแบบเสนอ 3 ทางเลือก: ทางเลือก 1 เพิ่มคอลัมน์ Specialty1 Specialty2 Specialty3 ในตาราง Doctor ทางเลือก 2 สร้าง DoctorSpecialty (DoctorID, SpecialtyID) Composite PK ทางเลือก 3 เพิ่ม Specialties เป็น TEXT คั่นด้วย Comma ข้อใดเป็นการวิเคราะห์ที่ถูกต้องที่สุด

ทางเลือก 1 และ 2 ดีพอๆ กัน ขึ้นอยู่กับว่าแพทย์มีความเชี่ยวชาญกี่สาขาสูงสุด
ทางเลือก 2 เป็นแนวทางที่ถูกต้องตามหลัก Normalization เพราะรองรับความสัมพันธ์ Many-to-Many ระหว่างแพทย์และความเชี่ยวชาญได้อย่างถูกต้อง ไม่จำกัดจำนวน และสามารถ Query ได้ยืดหยุ่น
ทางเลือก 1 ดีที่สุดเพราะง่ายต่อการ Query และไม่ต้องใช้ JOIN
ทางเลือก 3 ดีที่สุดเพราะประหยัดพื้นที่และง่ายต่อการแสดงผล

เฉลยอธิบาย

ทางเลือก 2 ถูกต้องตามหลัก Normalization เพราะ 1) รองรับความสัมพันธ์ Many-to-Many ได้ถูกต้อง 2) ไม่จำกัดจำนวนความเชี่ยวชาญ 3) สามารถค้นหา Filter หรือ JOIN กับตาราง Specialty ได้ 4) ไม่มี Partial Dependency ทางเลือก 1 ละเมิด 1NF (Repeating Groups) และจำกัดจำนวน ทางเลือก 3 ละเมิด 1NF อย่างชัดเจน (หลายค่าในคอลัมน์เดียว) ทำให้ Query ซับซ้อนและช้า ตัวเลือก D ผิดเพราะทางเลือก 1 มีปัญหาเมื่อแพทย์มีความเชี่ยวชาญมากกว่า 3 สาขา

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

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