Bài dịch được thực hiện bởi Hoàng Văn Cương, lập trình viên Spring Boot làm việc Techmaster từ tháng 5/2020.
Bài viết được dịch từ www.guru99.com/database-normalization.html
Mục lục nội dung
Chuẩn hóa là gì?
Chuẩn hóa là một kỹ thuật phong cách thiết kế CSDL giúp giảm bớt sự dư thừa tài liệu và vô hiệu những đặc thù không mong ước như Insertion, Update and Deletion Anomalies. Các quy tắc chuẩn hóa chia những bảng lớn thành những bảng nhỏ hơn và liên kết chúng bằng cách dùng quan hệ. Mục đích chuẩn hóa trong SQL nhằm mục đích vô hiệu tài liệu thừa ( tái diễn ) và bảo vệ tài liệu được tàng trữ một cách logic .
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 đề).
Bạn đang đọc: Techmaster Việt Nam
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 6th Normal 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 ở 3rd Normal Form. Việc phát triển của học thuyết chuẩn hóa SQL được minh họa đưới đây:
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ện video chứa một kho tài liệu của những bộ phim đã từng được thuê. Khi chưa có chuẩn hóa, tổng thể những thông tin được tàng trữ trong một bảng duy nhất ở bên dưới. Hãy cùng khám phá về chuẩn hóa với bảng này :
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 thi theo 1NF :
Table 1 : In 1NF FormTrước khi thực thi, 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 hoàn toàn có thể là một cột hoặc tích 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
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 tài liệuNó có một số ít 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 phối hợp bởi nhiều cột mà những cột này hoàn toàn có thể định danh duy nhất cho bản ghi. Trong tài liệu ví dụ, tất cả 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ì vậy, tất cả chúng ta sẽ nhu yếu tên không thiếu và địa chỉ để hoàn toàn có thể định danh duy nhất cho bản ghi đó .Giờ tất cả 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 1NF
Nguyên tắc 2 : Khóa chính là một cột đơn .
Khá rõ ràng rằng tất cả chúng ta không hề 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 .
Table 1
Table 2Chú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ề những 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
Khóa ngoại đại diện thay mặt cho khóa chính của một bảng khác. Nó giúp tạo liên kết giữa những bảng :
- Khóa ngoại có thể có thên khác với khóa chính
- Nó đả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ể.
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 :
Bạn sẽ chỉ hoàn toàn có thể thêm giá trị vào khóa ngoại khi nó đã sống sót ở khóa chính trong bảng cha. Việc này giúp cho tính toàn vẹn tham chiếuVấn đề trên hoàn toàn có thể xử lý 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 1Bây giờ, nếu có ai muốn thêm 1 giá trị vào membership id nhưng không sống sót ở bảng cha, lỗi sẽ Open .
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 vào hàm là khi biến hóa một cột không phải là khóa hoàn toàn có thể dẫn đến việc những cột không phải khóa khác cũng sẽ phải đổi khácXem xét ở bảng 1. Thay khóa cột không phải là khóa – Full Name hoàn toàn có thể dẫ đến việc phải đổi khác cột Salutation
Chuẩn hoá cấp 3 (Third Normal Form)
- Nguyên tắc 1: đảm bảo nguyên tắc của 2NF
- Nguyên tắc 2: Không có sự bắc cầu trong phụ thuộc hàm.
Để hoàn toàn có thể chuyển bảng của 2NF thành 3NF tất cả chúng ta một lần nữa phải phân loại bảng :Ví dụ về chuẩn hoá 3NF. Kết quả của việc phân loại 2NF thành 3NF như sau :
TABLE 1
Table 2
Table 3Chúng ta đã chia bảng và tạo 1 bảng mới để chứa trường SalutationsChúng ta không còn bất kể sự tác động ảnh hưởng trực tiếp nào do đó bảng đã bảo vệ 3NFTrong 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 tất cả chúng ta đã ở mức không hề phân tách để đạt được dạng cao hơn của của chuẩn hóa và thực tiễn 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ì sẽ cần phải có CSDL phức tạp hơn. Tuy nhiên, tất cả chúng ta sẽ bàn luận về những 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 đã ở 3 rd Normal Form vẫn hoàn toàn có thể có những hiệu 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ó thành viên bảng cơ sở tài liệu nào chứa hai hoặc nhiều tài liệu độc lập và nhiều giá trị diễn đạt thực thể có tương quan, thì nó ở 4 th Normal Form .
Chuẩn hoá cấp 5 (Fifth Normal Form)
Một bảng là 5 th Normal Form chỉ khi là 4NF và không hề bị phân tách thành những bảng nhỏ hơn mà không bị mất tài liệu
Chuẩn hoá cấp 6 (Sixth Normal Form)
6th Normal 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ệp
- Quy 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ơn
- Phụ thuộc hàm là một thành phần quan trọng trong quy trình chuẩn hóa dữ liệu
- Các hệ CSDL thường có thể được chuẩn hóa đến dạng thứ 3
- Khóa chính thì không được NULL
- Khóa phụ giúp kết nối các bảng và đại diện cho 1 khóa chính
Source: https://mindovermetal.org
Category: Wiki là gì