บริษัทต้องการออกแบบฐานข้อมูลสำหรับระบบโรงพยาบาล ตาราง 'ผู้ป่วย' มีข้อมูล PatientID, ชื่อ, วันเกิด, หมู่เลือด, โรคประจำตัว โดยโรคประจำตัวอาจมีหลายโรค ข้อใดเป็นการออกแบบที่ถูกต้องตามหลัก 1NF

เพิ่มแถวซ้ำสำหรับผู้ป่วยที่มีหลายโรค โดยให้ PatientID ซ้ำกันได้
สร้างตาราง PatientDisease แยกต่างหาก มี PatientID FK และ DiseaseCode FK เพื่อรองรับความสัมพันธ์แบบ Many-to-Many
เพิ่มคอลัมน์ Disease1, Disease2, Disease3 เพื่อรองรับได้สูงสุด 3 โรค
เก็บโรคประจำตัวหลายโรคในคอลัมน์เดียวโดยคั่นด้วยเครื่องหมาย ';'

เฉลยอธิบาย

1NF กำหนดว่าแต่ละช่องข้อมูลต้องมีค่าเดียว (Atomic Value) และไม่มีกลุ่มข้อมูลซ้ำ เนื่องจากผู้ป่วยมีโรคประจำตัวได้หลายโรค การแก้ที่ถูกต้องคือสร้างตาราง Junction (PatientDisease) เพื่อจัดการความสัมพันธ์ Many-to-Many ตัวเลือก A ผิดเพราะเป็น Repeating Groups และมีข้อจำกัดจำนวนโรค ตัวเลือก B ผิดเพราะเก็บหลายค่าในช่องเดียวซึ่งละเมิด 1NF ตัวเลือก D ผิดเพราะทำให้ข้อมูล PatientID ซ้ำและละเมิด Primary Key Constraint

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

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