บริษัทแห่งหนึ่งต้องการออกแบบฐานข้อมูลสำหรับระบบโรงพยาบาล โดยมีข้อกำหนดว่าแพทย์ 1 คนรับผิดชอบผู้ป่วยได้หลายคน และผู้ป่วย 1 คนสามารถได้รับการรักษาจากหลายแพทย์ พร้อมทั้งต้องบันทึกวันที่รักษา การวินิจฉัย และค่ารักษาในแต่ละครั้ง โครงสร้างฐานข้อมูลใดที่เหมาะสมที่สุด

สร้างตาราง Doctor, Patient และตาราง Treatment ที่เป็น Junction Table เก็บ DoctorID, PatientID, วันที่รักษา, การวินิจฉัย และค่ารักษา
สร้างตาราง Doctor และ Patient เพียงสองตาราง โดยเพิ่มคอลัมน์ DoctorID, วันที่รักษา, การวินิจฉัย และค่ารักษาไว้ในตาราง Patient โดยตรง เพื่อให้สามารถดึงข้อมูลการรักษาได้จากตารางเดียวและลดการ Join ตารางเวลาสอบถามข้อมูล
สร้างตาราง Doctor และ Patient โดยใช้ความสัมพันธ์แบบ One-to-Many จาก Doctor ไปยัง Patient และเพิ่มคอลัมน์ DoctorID ในตาราง Patient
สร้างตารางเดียวชื่อ HospitalRecord เก็บข้อมูลแพทย์ ผู้ป่วย วันที่รักษา การวินิจฉัย และค่ารักษาทั้งหมดไว้ในตารางเดียวเพื่อความสะดวก

เฉลยอธิบาย

ความสัมพันธ์ระหว่างแพทย์และผู้ป่วยเป็นแบบ Many-to-Many (M:N) เนื่องจากแพทย์ 1 คนรักษาผู้ป่วยได้หลายคน และผู้ป่วย 1 คนรับการรักษาจากหลายแพทย์ได้ การออกแบบที่ถูกต้องตามหลัก Normalization คือต้องสร้าง Junction Table (ตาราง Treatment) เพื่อแก้ความสัมพันธ์ M:N โดยตารางนี้จะเก็บ Foreign Key ของทั้ง 2 ตาราง พร้อมแอตทริบิวต์เพิ่มเติม ได้แก่ วันที่รักษา การวินิจฉัย และค่ารักษา ตัวเลือก B และ C ใช้ความสัมพันธ์ One-to-Many ซึ่งไม่รองรับกรณีผู้ป่วย 1 คนมีหลายแพทย์ ส่วนตัวเลือก D เป็นการเก็บข้อมูลซ้ำซ้อน (Redundancy) และละเมิดหลัก Normalization

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

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