Mẹo Hướng dẫn Các dạng chuẩn hóa tài liệu Database Chi Tiết
Hoàng Gia Vịnh đang tìm kiếm từ khóa Các dạng chuẩn hóa tài liệu Database được Cập Nhật vào lúc : 2022-11-24 19:28:02 . Với phương châm chia sẻ Kinh Nghiệm về trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Ad lý giải và hướng dẫn lại nha.
Loại bỏ dư thừa tài liệu
Nội dung chính Show- Các dạng chuẩn hóa dữ liệu1NF (First Normal Form)Dạng chuẩn 2 – 2NFDạng chuẩn 3 – 3NFDạng chuẩn BCNF (Boyce Codd Normal Form)Tại sao phải cần chuẩn hoá dữ liệuVậy chuẩn hóa tài liệu là gì?1. Demo Video2. Source Code Mọi người hãy Subscribe kênh youtube dưới đây nhé để update những video tiên tiến nhất về kỹ thuật và kỹ năng mềm Mục đích của việc chuẩn hóa NF Cơ sở dữ liệuCác kiểu chuẩn hóa cơ sở dữ liệuDạng chuẩn 1NFDạng chuẩn 2NFDạng chuẩn 3NFVideo liên quan
Loại bỏ update dị thường
Loại bỏ insertion dị thường
Loại bỏ deletion dị thường
Các dạng chuẩn hóa tài liệu
Chuẩn hoá là quá trình tách bảng (phân rã) thành những bảng nhỏ hơn nhờ vào những phụ thuộc hàm. Các dạng chuẩn là những hướng dẫn để thiết kế những bảng trong CSDL.
Mục đích của chuẩn hoá là vô hiệu những dư thừa tài liệu và những lỗi khi thao tác dư thừa và những lỗi khi thao tác tài liệu (Insert, Delete, Update). Nhưng chuẩn hoá làm tăng thời gian truy vấn.

1NF (First Normal Form)
Định nghĩa: Một bảng (quan hệ) được gọi là ở dạng chuẩn 1NF nếu và chỉ nếu toàn bộ những miền giá trị của những cột xuất hiện trong bảng (quan hệ) đều chỉ chứa những giá trị nguyên tử (nguyên tố)
Một bảng (quan hệ) chưa ở 1NF:
MASVHOTENDIACHIMAMONTENMONDIEMA01Lê Na12 Thái HàM01M02CSDLAnh89A02Trần An56 Mã MâyM01CSDL8A03Hà Nam24 Cầu GỗM01M02M03CSDLAnhToán 1689Dạng chuẩn 2 – 2NF
Định nghĩa Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó:
- Là 1NFCác thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khoá chính
Ví dụ
Ví dụ1: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm F = AB -> C, AB -> Dlà quan hệ đạt chuẩn 2NF.
Ví dụ2: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm
F = AB -> C, AB -> D, B -> DC là quan hệ không đạt chuẩn 2NF vì có phụ thuộc hàm
B -> DC là phụ thuộc hàm bộ phận (phụ thuộc hàm không đầy đủ) vào khoá. Khi đó ta đưa về dạng chuẩn 2NF như sau:

Nhận xét
Một quan hệ ở dạng chuẩn 2NF nếu thoả mãn 1 trong những đièu kiện sau: Khoá chính chỉ gồm một thuộc tính Bảng không còn những thuộc tính không khoá Tất cả những thuộc tính không khoá phụ thuộc hoàn toàn vào tập những thuộc tính khoá chính
Dạng chuẩn 3 – 3NF
Định nghĩa Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó:
- Là 2NFCác thuộc tính không khoá phải phụ thuộc trực tiếp vào khoá chính
Ví dụ
Ví dụ1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F = AB -> C, AB -> D, AB -> GH là quan hệ đạt chuẩn 3NF.
Ví dụ2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = AB -> C, AB -> D, AB -> GH, G -> DH là quan hệ không đạt chuẩn 3NF vì có phụ thuộc hàm G ® DH là phụ thuộc hàm gián tiếp vào khoá. Khi đó ta đưa về dạng chuẩn 3NF như sau:

Dạng chuẩn BCNF (Boyce Codd Normal Form)
Định nghĩa Một quan hệ ở dạng chuẩn BCNF nếu quan hệ đó:
- Là 3NFKhông có thuộc tính khoá mà phụ thuộc hàm vào thuộc tính không khoá.
Ví dụ
Ví dụ1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F = AB -> C, AB -> D, AB -> GH là quan hệ đạt chuẩn BCNF.
Ví dụ2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = AB -> C, AB -> D, AB -> GH, H -> B là quan hệ không đạt chuẩn BCNF vì có thuộc tính khoá B phụ thuộc hàm vào thuộc tính không khoá H. Khi đó ta đưa về dạng chuẩn BCNF như sau:

Nội dung nội dung bài viết
Chào những bạn, chắc chắn là sẽ có những lúc những bạn gặp phải những trở ngại vất vả trong việc tối ưu hoá tài liệu trong Database một vài lần rồi nhỉ? Các bạn không biết mình nên bắt nguồn từ đâu khi xây dựng một Database và làm thế nào để thiết kế một Database tối ưu. Trong nội dung bài viết ngày hôm nay anh sẽ trình bày những kĩ thuật để những bạn hoàn toàn có thể xây dựng được một Database chuẩn hóa.
Tại sao phải cần chuẩn hoá tài liệu
Để hiểu tại sao phải chuẩn hóa tài liệu thì ta sẽ trả lời chuẩn hóa tài liệu giúp được gì cho ta.
Chuẩn hóa tài liệu giúp ta giảm sút sự dư thừa tài liệu trong Database, giúp chương trình chạy nhanh hơn, quản lý trở nên thuận tiện và đơn giản hơn.
Anh lấy một ví dụ. Công ty Amazon nhờ team tất cả chúng ta xây dựng một ứng dụng kho hàng để quản lý sản phẩm. Nếu tất cả chúng ta thiết kế không theo tiến trình chuẩn hóa chắc như đinh 100% tất cả chúng ta sẽ tạo ra những Tables và những Column mà tài liệu sẽ trùng lặp không thiết yếu.
Vậy những em hãy tưởng tượng một ngày ở Amazon cả hàng triệu sản phẩm được nhập kho thì lượng tài liệu bị dư thừa là bao nhiêu.
Trong khi Database có kích thước số lượng giới hạn. Đồng thời khi ta truy vấn tài liệu cũng tiếp tục làm cho câu Query chậm đi. Tiếp đến khi mình bảo dưỡng sẽ gặp trở ngại vất vả vì không biết tài liệu thừa đó xoá đi có ảnh hưởng gì đến những hiệu suất cao khác không?
Vậy chuẩn hóa tài liệu là gì?
Là quá trình phân tích chia bảng thành những bảng nhỏ hơn nhờ vào những quy luật chuẩn hóa.
Có 4 dạng chuẩn hóa tài liệu: 1NF, 2NF, 3NF, 4NF, và dạng BCNF (Boyce Codd Normal Form) .
1. Demo Video

2. Source Code

Mọi người hãy Subscribe kênh youtube dưới đây nhé để update những video tiên tiến nhất về kỹ thuật và kỹ năng mềm
CommentsBài viết này sẽ ra mắt đến bạn 3 bước chuẩn hóa NF Cơ sở tài liệu.
Mục đích của việc chuẩn hóa NF Cơ sở tài liệu
Giảm thiểu dư thừa dữ liệuLoại bỏ những không bình thường khi update cơ sở tài liệuCác kiểu chuẩn hóa cơ sở tài liệu
Có 3 dạng chuẩn hóa cơ bản đó là:
– First Normal Form (1NF): dạng chuẩn 1NF
– Second Normal Form (2NF): dạng chuẩn 2NF
– Third Nomal Form (3NF): dạng chuẩn 3NF
Các dạng chuẩn được sắp xếp theo thứ tự từ thấp đến cao. Để chuẩn hóa 2NF thì cơ sở tài liệu của bạn phải đạt chuẩn 1NF, tương tự nếu đạt chuẩn 3NF thì phải đạt chuẩn 1NF và 2NF.
Dạng chuẩn 1NF
Cho 1 bảng như phía dưới:

Bảng có 3 khóa đó đó là customer_id, order_id và product_id.
Bảng tài liệu này vi phạm cả điều kiện của chuẩn 1NF vì: address chứa những giá trị trùng lặp, hơn thế nữa, giá trị address trong từng hàng không phải là đơn trị (chỉ có một giá trị), thêm vào đó, thuộc tính total_amount hoàn toàn hoàn toàn có thể tính toán được bằng phương pháp quantity * unit_price, không nhất thiết phải đưa vào bảng, gây ra dư thừa tài liệu. Qua nhận xét trên, ta hoàn toàn có thể tưởng tượng ra 3 điều kiện nên phải tuân theo đó là:
- Các thuộc tính của bảng phải là nguyên tốGiá trị của những thuộc tính trên những hàng phải là đơn trị, không chứa nhóm lặpKhông có một thuộc tính nào có mức giá trị hoàn toàn có thể tính toán được từ một thuộc tính khác
Từ đó, ta hoàn toàn có thể thiết kế lại bảng tài liệu trên như sau:
- Tách những thuộc tính lặp trong bảng như: customer_name, phone ra thành một bảng mới là customersTách address thành một bảng riêng có khóa là customer_id để biết địa chỉ đó thuộc về customer nào.Loại bỏ thuộc tính total_amount.
Kết quả như sau:

Dạng chuẩn 2NF
Quy tắc chuẩn hóa từ chuẩn 1NF thành 2NF:
Bước 1: Loại bỏ những thuộc tính không khóa phụ thuộc vào một bộ phận khóa chính và tách ra thành một bảng riêng, khóa chính của bảng là bộ phận của khóa mà chúng phụ thuộc vào.
Bước 2: Các thuộc tính còn sót lại lập thành một quan hệ, khóa chính của nó là khóa chính ban đầu.
Bảng tài liệu mới mà ta thiết kế vẫn chưa đạt chuẩn 2NF là vì: một số trong những thuộc tính
như description , unit_price phụ thuộc vào 1 phần của khóa là product_id chứ không cần phụ thuộc cả vào tập khóa (customer_id, order_id, product_id), hay thuộc tính customer_name và phone cũng chỉ phụ thuộc vào customer_id, thuộc tính order_date phụ thuộc vào customer_id và order_id, thuộc tính quantity phụ thuộc vào order_id và product_id.
Vậy nên để đạt chuẩn 2NF thì ta sẽ thiết sau đó bảng tài liệu chuẩn 1NF như sau:
- Tách những thuộc tính (product_id, description, unit_price) thành một bảng riêng là products.Các thuộc tính (customer_id, order_id, order_date) làm thành một bảng, mình đặt tên là orders.Còn lại những thuộc tính (order_id, product_id, quantity) làm thành một bảng trung gian giữa products và orders, mình đặt là order_products.
Chỉ cần tuân thủ 2 chuẩn mà ta đã được cơ sở tài liệu chuẩn hóa như sau:

Dạng chuẩn 3NF
Điều kiện:
- Phải đạt chuẩn 2NFMọi thuộc tính không khóa phụ thuộc bắc cầu vào thuộc tính khóa (nghĩa là tất cả những thuộc tính không khóa phải được suy ra trực tiếp từ thuộc tính khóa)
Quy tắc chuẩn hóa từ 2NF thành 3NF:
Bước 1: Loại bỏ những thuộc tính phụ thuộc bắc cầu ra khỏi quan hệ và tách chúng thành quan hệ riêng có khóa đó đó là thuộc tính bắc cầu.
Bước 2: Các thuộc tính còn sót lại lập thành một quan hệ có khóa đó đó là khóa ban đầu.
Để ý thấy cơ sở tài liệu mà ta thiết kế ở chuẩn 2NF đã và đang đạt chuẩn 3NF. Thế nên mình sẽ lấy một ví dụ khác để những bạn tham khảo như sau:
Ví dụ bảng sau vi phạm chuẩn 3NF:

Ta thấy thuộc tính country_name phụ thuộc vào country_id, mà country_id lại phụ thuộc vào khóa đó đó là id. Vì vậy ta nên tách bảng trên thành 2 bảng sau:

Author: Nguyễn Vũ Thành Tiến
Xem thêm những tài liệu, bài chia sẻ, hướng dẫn khác tại đây.
Đăng ký nhận bộ tài liệu kỹ năng dành riêng cho lập trình viên (video hướng dẫn + slide) tại đây
>> Xem thêm: TÀI LIỆU LẬP TRÌNH CĂN BẢN – ĐƠN GIẢN, DỄ HỌC!
Tải thêm tài liệu liên quan đến nội dung bài viết Các dạng chuẩn hóa tài liệu Database