ระบบโรงพยาบาลออกแบบตาราง Patient (PatientID PK, Name, BloodType, EmergencyContact, EmergencyPhone) ปัญหาหลักของโครงสร้างตารางนี้คืออะไร และควรแก้ไขอย่างไร

ตารางละเมิด 2NF เพราะ EmergencyContact และ EmergencyPhone ขึ้นกับ PatientID บางส่วน ควรเพิ่ม composite key
ตารางละเมิด 1NF เพราะผู้ป่วยอาจมีผู้ติดต่อฉุกเฉินได้หลายคน ทำให้ค่าในฟิลด์ไม่เป็น atomic ควรแยกเป็นตาราง EmergencyContact ต่างหาก
ตารางละเมิด BCNF เพราะ BloodType กำหนดค่า EmergencyContact ได้ ควรแยก BloodType ออกเป็นตารางอ้างอิง
ตารางละเมิด 3NF เพราะ EmergencyPhone ขึ้นกับ Name แทนที่จะขึ้นกับ PatientID ควรเพิ่ม index ให้กับฟิลด์ Name

เฉลยอธิบาย

ปัญหาหลักคือการละเมิด 1NF (First Normal Form) เนื่องจากผู้ป่วยหนึ่งคนอาจมีผู้ติดต่อฉุกเฉินได้มากกว่า 1 คน การเก็บเพียงหนึ่งฟิลด์ EmergencyContact และ EmergencyPhone ทำให้ข้อมูลไม่ครบถ้วนหรือต้องยัดรวมหลายค่าในฟิลด์เดียว ซึ่งทำให้ค่าไม่เป็น atomic วิธีแก้ไขที่ถูกต้องคือแยกออกเป็นตาราง EmergencyContact (ContactID PK, PatientID FK, ContactName, ContactPhone) เพื่อรองรับหลายผู้ติดต่อต่อผู้ป่วยหนึ่งคน

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

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