Chuẩn hóa dữ liệu – giới thiệu

Normalization-Database

Chuẩn hóa dữ liệu (normalization) là một kỹ thuật dùng để tạo ra một tập các quan hệ có các đặc điểm mong muốn dựa vào các yêu cầu về dữ liệu.

Tổng quan

Khi chúng ta thiết kế một CSDL quan hệ, mục đích chính của việc xây dựng một mô hình dữ liệu luận lý là tạo ra một dạng biểu diễn chính xác của dữ liệu, các mốt liên kết giữa các dữ liệu và các ràng buộc. Để đạt được mục đích này, chúng ta phải xác định một tập các quan hệ thích hợp. Môt cách tiếp cận để có thể xác định các quan hệ này được gọi là chuẩn hóa.

Chuẩn hóa là một cách tiệp cận từ dưới lên (bottom-up approach) để thiết kế CSDL, bắt đầu từ các mốt liên hệ giữa các thuộc tính. Cách tiếp cận từ trên xuống (top-down approach) chính là mô hình thực thể liên kết, bắt đầu từ việc xác định các kiểu thực thểcác mốt liên kết giữa các kiểu thực thể.

Quá trình chuẩn hóa được E. F. Codd đề xuất và nằm 1972. Quá trình chuẩn hóa là một chuỗi các kiểm tra trên một quan hệ để xác định nó thỏa mãn các yêu cầu của các dạng chuẩn hay không. Chúng ta có các dạng chuẩn cơ bản như:

  • Dạng chuẩn 1 (Normal Form 1 – 1NF)
  • Dạng chuẩn 2 (2NF)
  • Dạng chuẩn 3 (3NF)
  • Dạng chuẩn Boyce-Codd (BCNF)
  • Dạng chuẩn 4 (4NF)
  • Dạng chuẩn 5 (5NF)

Quá trình chuẩn hóa giúp người thiết kế CSDL kiểm tra các quan hệ đã được chuẩn hóa hay chưa để tránh xảy ra các bất thường khi cập nhật.

Dư thừa dữ liệu và các bất thường dữ liệu

Mục đích chính của thiết kế CSDL quan hệ là gom nhóm các thuộc tính thành các quan hệ sao cho giảm thiểu dư thừa dữ liệu (data redundancy) và qua đó làm giảm vùng nhớ lưu trữ tập tin cho các quan hệ cơ sở.

Sự dư thừa dữ liệu

Để hiểu rõ hơn về sự dư thừa dữ liệu, chúng ta cùng xem qua ví dụ sau đây – cho các quan hệ:

  • Employee (Emp_ID, Name, Dept_Name, Salary)
  • Department (Dept_Name, Location, Fax)
  • Emp_Dept (Emp_ID, Name, Salary, Dept_Name, Location, Fax)

Dữ liệu trong các quan hệ (bảng) này như sau:

Employee

Emp_IDNameDept_NameSalary
100SimpsonMarketing48000
140BeatonAccounting52000
110LuciInformation Systems44000
190DavidFinance55000
150MartinMarketing43000

Department

Dept_NameLocationFax
MarketingSales Building8129312
AccountingFinance Building5212301
Information SystemsIT building8769241
FinanceFinance Building5212301

Emp_Dept

Emp_IDNameSalaryDept_NameLocationFax
100Simpson48000MarketingSales Building8129312
140Beaton52000AccountingFinance Building5212301
110Luci44000Information SystemsIT building8769241
190David55000FinanceFinance Building5212301
150Martin43000MarketingSales Building8129312

Trong quan hệ Emp_Dept có dư thừa dữ liệu, chi tiết của một phòng bị lặp lại cho mỗi nhân viên làm việc tại phòng này. Các quan hệ có dư thừa dữ liệu sẽ xuất hiện các bất thường khi thao tác với dữ liệu. Các bất thường này được chia làm 3 loại và mô tả chi tiết trong các mục bên dưới.

Sự bất thường khi thêm dữ liệu

Có hai trường hợp của sự bất thường khi thêm dữ liệu (insertion anomaly) được minh họa trong quan hệ Emp_Dept như sau:

  • Khi thêm 1 nhân viên mới vào quan hệ Emp_Dept, chúng ta phải ghi thêm thông tin mà nhân viên đó làm việc. Việc này có thể gây ra sự không nhất quán (inconsystency) với các nhân viên khác cũng đang làm việc tại phòng này.
  • Chúng ta không thể thêm 1 phòng ban (department), nếu chưa tạo nhân viên nào thuộc phòng này.

Sự bất thường khi xóa bỏ

Sự bất thường khi xóa bỏ (deletion anomaly) xảy ra trong quan hệ Emp_Dept. Trong trường hợp một phòng chỉ có một nhân viên, nếu ta xóa thông tin nhân viên này, thì đồng nghĩa sẽ mất luôn thông tin về phòng ban của nhân viên đó.

Sự bất thường khi cập nhật

Sự bất thường khi cập nhật (modification anomaly) xảy ra trong quan hệ Emp_Dept. Trong trường hợp chúng ta muốn cập nhật thông tin của 1 phòng ban, chúng ta sẽ phải cập nhật tất cả các nhân viên làm việc trong phòng ban đó.

Quá trình chuẩn hóa

Khái niệm

Chuẩn hóa (normalization) là một quá trình thuận nghịch từng bước để thay thế tập các quan hệ cho trước thành các quan hệ có cấu trúc đơn giản và chuẩn hơn.

Chuẩn hóa dữ liệu nhằm cải tiến một thiết kế CSDL luận lý, đảm bảo nó thỏa mãn các ràng buộc toàn vẹn và tránh dữ liệu bị lặp lại không cần thiết.

Mục đích của chuẩn hóa là loại bỏ các bất thường (anomaly) của một quan hệ để có được các quan hệ có cấu trúc tốt hơn, nhỏ hơn.

Quan hệ có cấu trúc tốt là gì?

Quan hệ có cấu trúc tốt (well-structured relation) là một quan hệ có sự dư thừa dữ liệu là ít nhất và cho phép người dùng thêm, xóa và sửa dữ liệu mà không gây ra hiện tượng bất thường.

Chuẩn hóa thường được thực hiện qua nhiều bước mỗi bước tương ứng với một dạng chuẩn (normal form). Trong quá trình chuẩn hóa, các quan hệ sẽ ở các dạng tốt hơn nhằm tránh các bất thường khi cập nhật.