1NF (First Normal Form) คืออะไร
ขั้นตอนแรกของ Normalization ใช้กับตารางที่ยังไม่ Normalized (Unnormalized Table) เพื่อกำจัดปัญหา:
ปัญหาของ Unnormalized Table
1. Data Redundancy (ข้อมูลซ้ำ)
เก็บข้อมูลเดียวกันหลายครั้ง
| EmpID | EmpName | EmpAddress |
|---|---|---|
| 001 | Amit | 11, VA Street, New York |
| 002 | Tom | 11, VA Street, New York |
| 003 | David | 11, VA Street, New York |
แก้ไข: แยกที่อยู่เป็นตารางแยก ใช้ FK อ้างอิง
2. Updation Anomaly (ความผิดปกติขณะอัปเดท)
อัปเดทที่อยู่ของ Tom (อยู่ 2 แผนก) ต้องแก้ 2 แถว หากแก้แค่แถวเดียว → ข้อมูลขัดแย้ง
3. Deletion Anomaly (ความผิดปกติขณะลบ)
ลบแผนก D → ข้อมูลพนักงาน Steve หายไปด้วย
4. Insertion Anomaly (ความผิดปกติขณะเพิ่ม)
เพิ่มข้อมูลที่ยังไม่มี (เช่น แผนกใหม่ที่ยังไม่มีพนักงาน) ไม่ได้
กฎหลักของ 1NF: Atomic Values (ค่าอะตอม)
ทุกแอตทริบิวต์ต้องมีค่า Atomic (ไม่สามารถแบ่งได้อีก) หากมีค่าซ้อน/หลายค่าในฟิลด์เดียว →違反 1NF
ตัวอย่าง違反 1NF: คอลัมน์ DeptRole มีหลายค่า
| DeptId | DeptName | DeptRole |
|---|---|---|
| 001 | A | Finance, HR |
| 002 | B | Programming, Networking |
| 003 | C | Management, Marketing |
| 004 | D | Operations |
แก้ไขเป็น 1NF: แยกแถวตาม Role
| DeptId | Dept Name | DeptRole |
|---|---|---|
| 001 | A | Finance |
| 001 | A | HR |
| 002 | B | Programming |
| 002 | B | Networking |
| 003 | C | Management |
| 003 | C | Marketing |
| 004 | D | Operations |
สรุป: 1NF กำจัด Repeating Groups และ Multi-valued Attributes ทำให้ทุกคอลัมน์มีค่า Atomic เดียว