Vì sao phải chuẩn hóa dữ liệu

Bài dịch được thực hiện bởi Hoàng Văn Cương, lập trình viên  Spring Bootlàm việc kinhdientamquoc.vn từ tháng 5/2020.Bài viết được dịch từwww.guru99.com/database-normalization.html

Chuẩn hóa là gì?

Chuẩn hóa là một kỹ thuật thiết kế CSDL giúp giảm bớt sự dư thừa dữ liệu và loại bỏ những đặc điểm không mong muốn như Insertion, Update and Deletion Anomalies. Các quy tắc chuẩn hóa chia những bảng lớn thành các bảng nhỏ hơn và kết nối chúng bằng cách dùng quan hệ. Mục đích chuẩn hóa trong SQL nhằm loại bỏ dữ liệu thừa (lặp lại) và đảm bảo dữ liệu được lưu trữ một cách logic.

Bạn đang xem: Tại sao phải chuẩn hóa dữ liệu

Người sáng chế ra mô hình quan hệ - Edgar Codd đã trình bày thuyết chuẩn hóa dữ liệu bằng sự giới thiệu của First Normal Form (dịch thô sẽ là dạng chuẩn hóa thứ nhất) và ông vẫn tiếp tục mở rộng học thuyết với Second và Third Normal Form. Sau đó, ông tham gia gia với Raymond F. Boyce để phát triển học thuyết của Boyce-Codd Normal Form (BCNF ở tiêu đề).

Danh sách Normal Forms:

1NF (First Normal Form)2NF (Second Normal Form)3NF (Third Normal Form)BCNF (Boyce-Codd Normal Form)4NF (Fourth Normal Form)5NF (Fifth Normal Form)6NF (Sixth Normal Form)

Học thuyết Data Normalization (sau đây sẽ gọi là Chuẩn hóa Dữ liệu) trong SQL server vẫn đang được phát triển. Ví dụ, vẫn còn có những thảo luận ngay ở trong 6thNormal Form. Tuy nhiên, trong phần lớn các ứng dụng thực tế, việc chuẩn hóa đạt được sự tối ưu ở 3rdNormal Form. Việc phát triển của học thuyết chuẩn hóa SQL được minh họa đưới đây:

Vì sao phải chuẩn hóa dữ liệu
Database Normal Forms

Ví dụ Chuẩn hóa Dữ liệu

Các ví dụ sẽ minh hoạ chuẩn hóa dữ liệu. Giả sử, một thư việnvideo chứa một kho dữ liệu của các bộ phim đã từng được thuê. Khi chưa có chuẩn hóa, tất cả các thông tin được lưu trữ trong một bảng duy nhất ở bên dưới. Hãy cùng tìm hiểu về chuẩn hóa với bảng này:

Vì sao phải chuẩn hóa dữ liệu

Table 1

Bạn có thể thấy cột Movies Rented có nhiều giá trị. Chúng ta sẽ chuẩn hóa về 1st Normal Forms:

Chuẩn hoá cấp 1: First Normal Form

Mỗi ô của bảng chỉ nên có duy nhất 1 giá trị.Mỗi bản ghi sẽ là duy nhất

Kết quả bảng trên sau khi thực hiện theo 1NF:

Vì sao phải chuẩn hóa dữ liệu

Table 1: In 1NF Form

Trước khi tiến hành, hãy cùng hiểu về 1 vài điều sau:

Thế nào là 1 Khóa (Key)

Khóa là một giá trị thường được sử dụng để định danh duy nhất cho một bản ghi trong bảng. Khóa có thể là một cột hoặc kết hợp của nhiều cột.

Chú ý: Các cột trong bản không được sử dụng để định danh bản ghi là duy nhất được gọi là các cột không khóa (non-key collumns).

Thế nào là Khóa chính Primary Key

Vì sao phải chuẩn hóa dữ liệu

Một giá trị chính là một cột giá trị thường dùng để định danh duy nhất cho bản ghi của dữ liệu

Nó có một số thuộc tính sau:

Khóa chính không thể NULL,Giá trị của khóa chính phải là duy nhất,Giá trị của khóa chính thường hiếm khi được thay đổi,Khóa chính phải được gán giá trị mỗi khi một bản ghi được thêm vào.

Thế nào là khóa tổng hợp Composite Key

Một khóa tổng hợp là một khóa chính được kết hợp bởi nhiều cột mà các cột này có thể định danh duy nhất cho bản ghi.Trong dữ liệu ví dụ, chúng ta có 2 người với cùng tên là Robert Phil nhưng sống ở 2 địa chỉ khác nhau.

Vì sao phải chuẩn hóa dữ liệu

Vì vậy, chúng ta sẽ yêu cầu tên đầy đủ và địa chỉ để có thể định danh duy nhất cho bản ghi đó.

Giờ chúng ta sẽ thử 2NF:

Chuẩn hoá cấp 2 (Second Normal Form)

Nguyên tắc 1: Trước tiên phải tuân thủnguyên tắc 1NFNguyên tắc 2: Khóa chính là một cột đơn.

Khá rõ ràng rằng chúng ta không thể là gì hơn để đơn giản hóa dữ liệu theo 2NF trừ khi ta phân tách bảng trên ra.

Xem thêm: Chứng Khoán Tác Động Đến Kinh Tế Như Thế Nào, Ảnh Hưởng Của Covid

Vì sao phải chuẩn hóa dữ liệu

Table 1

Vì sao phải chuẩn hóa dữ liệu

Table 2

Chúng ta chia bảng kết của 1NF thành 2 bảng: bảng 1 chứa thông tin thành viên; bảng 2 chứa thông tin về các bộ phim đã thuê.

Chúng ta thêm 1 cột là Membership_id là một khóa chính cho bảng 1. Các bản ghi sẽ là duy nhất khi dử dụng trường này.

Khóa Ngoại (Foreign Key)

Trong bảng 2, Membership_ID là khóa ngoại

Vì sao phải chuẩn hóa dữ liệu

Khóa ngoại đại diện cho khóa chính của một bảng khác. Nó giúp tạo kết nối giữa các bảng:

Khóa ngoại có thể có thên khác với khóa chínhNó đảm bảo các dòng trong bảng này sẽ tương ứng với các dòng trong bảng khác.Không giống khóa chính, khóa ngoại không cần là duy nhất. Phần lớn giá trị của khóa ngoại sẽ có trùng lặp.Các khóa ngoại có thể là null du cho khóa chính không thể.

Vì sao phải chuẩn hóa dữ liệu

Tại sao chúng ta cần khóa ngoại?

Giả định rằng, 1 người thêm 1 bản ghi vào bảng B như sau:

Vì sao phải chuẩn hóa dữ liệu

Bạn sẽ chỉ có thể thêm giá trị vào khóa ngoại khi nó đã tồn tại ở khóa chính trong bảng cha. Việc này giúp cho tính toàn vẹn tham chiếu

Vấn đề trên có thể giải quyết bằng cách khai báo membership id của bảng 2 giống khóa chính của membership id ở bảng 1

Bây giờ, nếu có ai muốn thêm 1 giá trị vào membership id nhưng không tồn tại ở bảng cha, lỗi sẽ xuất hiện.

Tính bắc cầu của phụ thuộc hàm là gì?

Tính bắc cầu của phụ thuộc hàm là khi thay đổi một cột không phải là khóa có thể dẫn đến việc các cột không phải khóa khác cũng sẽ phải thay đổi

Xem xét ở bảng 1. Thay khóa cột không phải là khóa Full Name có thể dẫ đến việc phải thay đổi cột Salutation

Vì sao phải chuẩn hóa dữ liệu

Chuẩn hoá cấp 3 (Third Normal Form)

Nguyên tắc 1: đảm bảo nguyên tắc của 2NFNguyên tắc 2: Không có sự bắc cầu trong phụ thuộc hàm.

Để có thể chuyển bảng của 2NF thành 3NF chúng ta một lần nữa phải phân chia bảng:

Ví dụ về chuẩn hoá 3NF. Kết quả của việc phân chia 2NF thành 3NF như sau:

Vì sao phải chuẩn hóa dữ liệu

TABLE 1

Vì sao phải chuẩn hóa dữ liệu

Table 2

Vì sao phải chuẩn hóa dữ liệu

Table 3

Chúng ta đã chia bảng và tạo 1 bảng mới để chứa trường Salutations

Chúng ta không còn bất kỳ sự ảnh hưởng trực tiếp nào do đó bảng đã đảm bảo 3NF

Trong bảng 3, Salutation ID là khóa chính và trong bảng 1 Salutation ID là khóa ngoại của nó.

Bây giờ, ví dụ của chúng ta đã ở mức không thể phân tách để đạt được dạng cao hơn của của chuẩn hóa và thực tế nó đã ở dạng cao nhất của chuẩn hóa. Các nỗ lực phân tách để đạt được dạng cao hơn thông thường sẽ cần phải có CSDL phức tạp hơn. Tuy nhiên, chúng ta sẽ bàn luận về các dạng tiếp theo một cách vắn tắt ở bên dưới.

Chuẩn hoá Boyce Codd BCNF

Ngay cả khi một CSDL đã ở 3rdNormal Form vẫn có thể có những kết quả dị thường nếu nó có nhiều hơn một khóa ứng viên Candidate Key.

Đôi khi BCNF được biết đến là 3.5 Normal Form.

Chuẩn hoá cấp 4 (Fourth Normal Form)

Nếu không có cá thể bảng cơ sở dữ liệu nào chứa hai hoặc nhiều dữ liệu độc lập và nhiều giá trị mô tả thực thể có liên quan, thì nó ở 4thNormal Form.

Chuẩn hoá cấp 5 (Fifth Normal Form)

Một bảng là 5thNormal Form chỉ khi là 4NF và không thể bị phân tách thành các bảng nhỏ hơn mà không bị mất dữ liệu

Chuẩn hoá cấp 6(Sixth Normal Form)

6thNormal Form chưa có quy chuẩn nhưng đang được thảo luận bởi những chuyên gia về CSDL.

Hết rồi đó, nhớ đến chuẩn hoá cấp 5 thì bạn yên tâm đi xin việc!

Tổng kết

Thiết kế CSDL là mấu chốt để triển khai thành công một hệ thống quản lý CSDL đáp ứng được yêu cầu về dữ liệu của hệ thống doanh nghiệpQuy trình chuẩn hóa trong DBMS giúp giảm thiểu hệ thống CSDL gây ảnh hưởng đến hiệu năng và giúp ta có mô hình bảo mật tốt hơnPhụ thuộc hàm là một thành phần quan trọng trong quy trình chuẩn hóa dữ liệuCác hệ CSDL thường có thể được chuẩn hóa đến dạng thứ 3Khóa chính thì không được NULLKhóa phụ giúp kết nối các bảng và đại diện cho 1 khóa chính