1NF là gì?
1NF là Dạng chuẩn thứ nhất (First Normal Form) trong DBMS, được áp dụng lên bảng chưa chuẩn hóa để biến nó thành bảng chuẩn hóa. Một bảng chưa chuẩn hóa có các vấn đề sau cần tránh để có thiết kế cơ sở dữ liệu hoàn hảo:
Vấn đề của bảng chưa chuẩn hóa
Dư thừa dữ liệu (Data Redundancy)
Lưu trữ cùng một mục dữ liệu nhiều lần được gọi là Dư thừa dữ liệu.
Ví dụ:
Chúng ta có bảng <Employee> có trường lưu địa chỉ hiện tại của nhân viên. Một số nhân viên được công ty cung cấp chỗ ở; do đó, họ có cùng địa chỉ. Địa chỉ sẽ bị lặp lại trong cơ sở dữ liệu:
Bảng 1.1
| EmpID | EmpName | EmpAddress |
| 001 | Amit | 11, VA Street, New York |
| 002 | Tom | 11, VA Street, New York |
| 003 | David | 11, VA Street, New York |
| 004 | Steve | 13, HG Block, Philadelphia |
| 005 | Jeff | 13, HG Block, Philadelphia |
Để giải quyết, hãy lưu địa chỉ nhân viên trong một bảng riêng và trỏ đến từ bảng <Employee>.
Dị thường cập nhật (Updation Anomaly)
Xảy ra khi bạn gặp vấn đề khi cập nhật một bảng.
Ví dụ:
Bảng 1.2
| EmpID | EmpName | EmpAddress | EmpDept |
| 001 | Amit | 11, VA Street, New York | A |
| 002 | Tom | 11, VA Street, New York | B |
| 003 | Tom | 11, VA Street, New York | C |
| 004 | Steve | 13, HG Block, Philadelphia | D |
| 005 | Jeff | 27, ZR Block, Virginia | E |
Nếu cần cập nhật địa chỉ của nhân viên Tom, người thuộc hai phòng ban, thì cần cập nhật hai hàng. Nếu chỉ cập nhật một hàng, Tom sẽ có hai địa chỉ khác nhau dẫn đến không nhất quán dữ liệu.
Dị thường xóa (Deletion Anomaly)
Giả sử công ty quyết định đóng phòng ban D, thì việc xóa hàng cũng sẽ dẫn đến xóa dữ liệu của nhân viên Steve.
Dị thường chèn (Insertion Anomaly)
Xảy ra khi bạn cố chèn dữ liệu vào bản ghi không tồn tại.
Chuẩn hóa loại bỏ tất cả các vấn đề/dị thường trên và cho bạn thiết kế cơ sở dữ liệu chuẩn hóa hoàn hảo mà một quản trị viên cơ sở dữ liệu yêu thích.
Hãy xem cách chuẩn hóa dữ liệu bằng Dạng chuẩn thứ nhất (1NF).
Tại sao 1NF?
Dạng chuẩn thứ nhất (1NF) hữu ích trong việc loại bỏ vấn đề dư thừa dữ liệu và các dị thường của cơ sở dữ liệu như phần trên đã chỉ ra. Tất cả thuộc tính trong 1NF nên có miền nguyên tử (atomic domains). Nếu không phải nguyên tử, thì cơ sở dữ liệu của bạn có thiết kế kém. Đây là bước đầu tiên trong Chuẩn hóa.
Do đó, quy tắc quan trọng nhất để một bảng ở dạng chuẩn hóa là nó chỉ nên có các giá trị nguyên tử.
Ví dụ
Ví dụ dưới đây có bảng với mọi cột bao gồm các giá trị nguyên tử, trừ cột DeptRole. Do đó, cột DeptRole vi phạm quy tắc giá trị nguyên tử cho Phòng ban A, B và C.
Bảng 1.3
| DeptId | DeptName | DeptRole |
| 001 | A | Finance, HR |
| 002 | B | Programming, Networking |
| 003 | C | Management, Marketing |
| 004 | D | Operations |
Hãy sửa nó và chuyển sang 1NF:
| 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 |
Bây giờ bảng trên đã ở 1NF và chúng ta có giá trị nguyên tử trong mọi cột như tóm tắt trong ảnh chụp màn hình sau:
