Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Dạng chuẩn thứ nhất (1NF - First Normal Form)

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:

Dạng chuẩn thứ nhất (1NF - First Normal Form)