Database Normalization
1. Thế nào là chuẩn hóa dữ liệu ?
Để thiết kế cơ sở dữ liệu đúng chuẩn, ăn ý nhau thì người ta đưa ra khái niệm chuẩn hóa dữ liệu.
Các loại chuẩn hóa dữ liệu:
Có nhiều loại chuẩn hóa dữ liệu nhưng sẽ có một vài dạng chuẩn dữ liệu đáng chú ý sau: + Dạng chuẩn 1 - 1NF + Dạng chuẩn 2 - 2NF + Dạng chuẩn 3 - 3NF + Dạng chuẩn BCNF
2. Các dạng chuẩn dữ liệu
2.1 Dạng chuẩn 1NF
Một quan hệ được định nghĩa là đạt dạng chuẩn 1 khi và chỉ khi toàn bộ các miền giá trị của các cột trong quan hệ đều chứa giá trị nguyên tố không chứa trường lặp, trường kép.
Ví dụ: quan hệ chưa đạt dạng chuẩn 1NF
MASV
HOTEN
MAMON
TENMON
01
Lê Na
M01M02
CSDLAnh
02
Quanh Hải
M01
CSDL
03
Hùng Hậu
M01M02M03
CSDLAnhToán
2.2 Dạng chuẩn 2NF
Một quan hệ đạt dạng chuẩn 2NF nếu:
Đạt dạng chuẩn 1NF
Các thuộc tính không khóa phải phụ thuộc đầy đủ vào thuộc tính khóa
Ví dụ: - Cho quan hệ R = (ABCD) có khóa AB và tập phụ thuộc hàm : F = {AB-> C, AB-> D} -> đạt dạng chuẩn 2NF - Cho quan hệ R = (ABCD) có khóa AB và tập phụ thuộc hàm : F = {AB-> C, AB->D, B -> DC} không đạt dạng chuẩn 2NF, do B->DC là phụ thuộc hàm bộ phận, không phụ thuộc đầy đù vào khóa AB.
2.3 Dạng chuẩn 3NF
Một quan hệ đạt dạng chuẩn 3NF nếu: - Đạt dạng chuẩn 2NF - Các thuộc tính không khóa phải phụ thuộc trực tiếp vào thuộc tính khóa, (không bắc cầu)
Ví dụ: - 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. - Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F = {AB -> C, AB -> D, AB -> GH, D->GH} là quan hệ không đạt chuẩn 3NF, do D->GH phụ thuộc gián tiếp vào khóa.
2.4 Dạng chuẩn BCNF
Một quan hệ đạt dạng chuẩn BCNF nếu: - Đạt dạng chuẩn 3NF - Không có thuộc tính khoá mà phụ thuộc hàm vào thuộc tính không khoá.
Ví dụ:
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.
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
Last updated
Was this helpful?