บริษัทต้องการออกแบบฐานข้อมูลสำหรับระบบโรงพยาบาล ตาราง 'ผู้ป่วย' มีข้อมูล 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