Bài dịch được thực thi bởi Hoàng Văn Cương, lập trình viên Spring Bootlàm việc cungdaythang.com từ tháng 5/2020. Bài viết được dịch từwww .guru99.com/database-normalization.html
Tóm Tắt
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 .
Đang xem: Chuẩn hóa là gì
Người sáng tạo ra quy mô quan hệ – Edgar Codd đã trình diễn thuyết chuẩn hóa dữ liệu bằng sự ra mắt của First Normal Form ( dịch thô sẽ là dạng chuẩn hóa thứ nhất ) và ông vẫn liên tục lan rộng ra học thuyết với Second và Third Normal Form. Sau đó, ông tham gia gia với Raymond F. Boyce để tăng trưởng 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 tăng trưởng. Ví dụ, vẫn còn có những luận bàn ngay ở trong 6 thNormal Form. Tuy nhiên, trong phần nhiều những ứng dụng trong thực tiễn, việc chuẩn hóa đạt được sự tối ưu ở 3 rdNormal Form. Việc tăng trưởng của học thuyết chuẩn hóa SQL được minh họa đưới đây :
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 15
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 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 tìm hiểu và khám phá về chuẩn hóa với bảng này :
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 16
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 triển khai theo 1NF :
Chuẩn Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 17
Table 1 : In 1NF Form
Trướ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
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 18
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ệu
Nó có 1 số ít thuộc tính sau :
Khóa chính không hề 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 đổi khác, 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 .
Chuẩn Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 19
Vì vậy, tất cả chúng ta sẽ nhu yếu tên vừa đủ 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 1NFN guyê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 .
Xem thêm : Đồ Thị Histogram Là Gì, Ý Nghĩa Và Cách Vẽ Biểu Đồ Histogram
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 20
Table 1
Chuẩn Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 21
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ề 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
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 22
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 hoàn toàn có thể có thên khác với khóa chínhNó bảo vệ những dòng trong bảng này sẽ tương ứng với những 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 hoàn toàn có thể là null du cho khóa chính không hề .
Chuẩn Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 23
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 :
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 24
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ếu
Vấ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 1
Bâ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ác
Xem 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 Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 25
Chuẩn hoá cấp 3 (Third Normal Form)
Nguyên tắc 1 : bảo vệ nguyên tắc của 2NFN guyên tắc 2 : Không có sự bắc cầu trong phụ thuộc vào 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 :
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 26
TABLE 1
Chuẩn Hóa Là Gì ? 1N f, 2N f, 3N f và Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 27
Table 2
Chuẩn Hóa Là Gì ? 1Nf, 2Nf, 3Nf & Bcnf Với Các Ví Dụ Chuẩn Hóa Dữ Liệu 28
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ự tác động ảnh hưởng trực tiếp nào do đó bảng đã bảo vệ 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 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à trong 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 rdNormal 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 thNormal Form .
Xem thêm : Cách Làm Rau Câu Cafe Sua – Cách Làm Món Rau Câu Cà Phê Sữa Của Đoan Trang
Chuẩn hoá cấp 5 (Fifth Normal Form)
Một bảng là 5 thNormal 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)
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 để tiến hành thành công xuất sắc một mạng lưới hệ thống quản trị CSDL cung ứng được nhu yếu về tài liệu của mạng lưới hệ thống doanh nghiệpQuy trình chuẩn hóa trong DBMS giúp giảm thiểu mạng lưới hệ thống CSDL gây ảnh hưởng tác động đến hiệu năng và giúp ta có quy mô bảo mật thông tin tốt hơnPhụ thuộc hàm là một thành phần quan trọng trong quy trình tiến độ chuẩn hóa dữ liệuCác hệ CSDL thường hoàn toàn có thể được chuẩn hóa đến dạng thứ 3K hóa chính thì không được NULLKhóa phụ giúp liên kết những bảng và đại diện thay mặt cho 1 khóa chính
Source: https://final-blade.com
Category: Kiến thức Internet