Professional Documents
Culture Documents
Chương 8
CHUẨN HÓA
CƠ SỞ DỮ LIỆU
Mục tiêu
Hiểu và trình bày được khái niệm, mục đích của việc chuẩn hóa CSDL
Hiểu và trình bày được khái niệm về phụ thuộc hàm
Thực hiện cách tìm bao đóng, xác định khóa của lược đồ quan hệ.
Hiểu được các dạng chuẩn và thực hiện được việc chuẩn hóa CSDL
Nội dung
• Chuẩn hóa là kỹ thuật dùng để tạo ra các quan hệ có các đặc điểm
mong muốn dựa vào các yêu cầu về dữ liệu của 1 bài toán.
• Chuẩn hóa là 1 cách tiếp cận từ dưới lên (bottom-up approach) để thiết
kế CSDL, bắt đầu từ các mối liên hệ giữa các thuộc tính.
1 Giới thiệu về chuẩn hóa CSDL
Chuẩn hóa CSDL
• Quá trình chuẩn hóa được thực hiện qua nhiều bước. Mỗi bước
tương ứng một dạng chuẩn.
• Các dạng chuẩn:
o Dạng chuẩn 1 (1NF – first normal form)
o Dạng chuẩn 2 (2NF- second normal form)
o Dạng chuẩn 3 (3NF – third normal form)
o Dạng chuẩn BCNF – Boyce Codd
o Dạng chuẩn 4NF
1 Giới thiệu về chuẩn hóa CSDL
Mục đích của việc chuẩn hóa CSDL
• Xác định được 1 tập các lược đồ quan hệ, cho phép tìm kiếm thông tin một
cách dễ dàng, đồng thời tránh được dư thừa và dị thường khi thao tác dữ liệu.
• Cách giải quyết:
o Tách các lược đồ quan hệ có vấn đề thành những lược đồ quan hệ chuẩn
hơn.
o Phụ thuộc hàm (functional dependencies) được sử dụng để nhận biết các
lược đồ chưa chuẩn và đề xuất hướng cải tiến.
2 Sự dư thừa và dị thường dữ liệu
Sự dư thừa dữ liệu
Giả sử có quan hệ StaffBranch.
NHANVIEN
PHONGBAN
Ten MaNV NgSinh DChi MaPhong
Ten MaPB TrPhong
Hung 123456789 09/01/1965 … 5
Nghien cuu 5 333445555
Nghia 333445555 08/12/1955 … 5
Vuong 999887777 19/01/1968 … 4
2 Sự dư thừa và dị thường dữ liệu
Dị thường khi thêm dữ liệu
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh DChi MaPB TenPB TrPhong
Nghia 333445555 08/12/1965 … 5 Nghien cuu 333445555
Hung 123456789 09/10/1965 … 5 Nghien cuu 999887777
null null null null 4 Hanh chinh 987654321
CSDL lưu trữ quá nhiều giá trị NULL sẽ không hiệu quả:
• Lãng phí không gian lưu trữ.
• Khó khăn trong thực hiện các phép toán kết.
• Khó khăn khi sử dụng các hàm tập hợp.
2 Sự dư thừa và dị thường dữ liệu
Dị thường khi xóa dữ liệu
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh DChi MaPB TenPB TrPhong
Nghia 333445555 08/12/1965 … 5 Nghien cuu 333445555
Hung 123456789 09/10/1965 … 5 Ke Toan 999887777
null null null null 4 Hanh chinh 987654321
2 Sự dư thừa và dị thường dữ liệu
Dị thường khi chỉnh sửa dữ liệu
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh DChi MaPB TenPB TrPhong
Nghia 333445555 08/12/1965 … 5 Nghien cuu 333445555
Hung 123456789 09/10/1965 … 5 Nghien cuu 999887777
null null null null 4 Hanh chinh 987654321
Ký hiệu:
• {Tên} → {SốĐT, ChuyênNgành}
• {Tên, Mônhọc} → {Điểm}
• {Mônhọc} → {GiảngViên}
3 Phụ thuộc hàm
Ví dụ Phụ thuộc hàm
Kiểm tra phụ thuộc hàm đúng hay sai? (hay chứng minh)
Kiểm tra một phụ thuộc hàm có được suy diễn ra từ một tập các
phụ thuộc hàm có sẵn hay không?
Bài làm:
1) f1: A → B
2) f2: A → C
3) A → BC (áp dụng tính kết hợp F4)
4) f3: BC → D
5) A → D (áp dụng tính bắc cầu F3)
3 Phụ thuộc hàm
Ví dụ chứng minh phụ thuộc hàm
Cho tập phụ thuộc hàm {AB → C, C → A}. Chứng minh BC → ABC?
f1 f2
Bài làm:
1) f2: C → A
2) BC → AB (Áp dụng tính tăng trưởng)
3) f1: AB → C
4) Từ 2 và 3, BC → C (Áp dụng tính bắc cầu)
5) Từ 2 và 4, BC → ABC (Áp dụng tính kết hợp)
3 Phụ thuộc hàm
Bao đóng của tập phụ thuộc hàm
• Cho F là một tập phụ thuộc hàm. Bao đóng của F ký hiệu là F+ là tập lớn nhất
chứa các phụ thuộc hàm có thể được suy ra từ các phụ thuộc hàm trong F.
• Đặc điểm bao đóng của một tập phụ thuộc hàm:
o Có thể rất lớn.
o Chi phí rất tốn kém cho việc tìm kiếm.
• Như vậy để: Kiểm tra xem một PTH có được suy diễn từ một tập PTH có sẵn
hay không => sử dụng bao đóng của một tập thuộc tính.
3 Phụ thuộc hàm
Bao đóng của tập thuộc tính
Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F
Ký hiệu là X+F là tập tất cả các thuộc tính Y có thể suy dẫn từ X nhờ tập
bao đóng của các phụ thuộc hàm F+
X+F = { Y ∈ Q+ | X → Y ∈ F+ }
3 Phụ thuộc hàm
Thuật toán tìm bao đóng của tập thuộc tính
INPUT: U là tập hữu hạn các thuộc tính, F là tập các PTH và X U
OUTPUT: X+
Thuật toán
• B1: X+ = X
• B2: Nếu tồn tại Y → Z F và Y X+ thì
X+ := X+ Z
và tiếp tục B2. Ngược lại qua B3.
• B3: xuất X+.
3 Phụ thuộc hàm
Ví dụ tìm bao đóng của tập thuộc tính
Cho R(U) , U = {A, B, C, D, E, F}. F = {AB → C, BC → AD, D → E, CF → B}
Tính (AB)+
Thực hiện:
• Bước 0: X0 = AB
• Bước 1: X1 = ABC (do AB → C)
• Bước 2: X2 = ABCD (do BC → AD) => (AB)+ = ABCDE
• Bước 3: X3 = ABCDE (do D → E)
• Bước 4: X4 = ABCDE
3 Phụ thuộc hàm
Ví dụ tìm bao đóng của tập thuộc tính
Cho R = {ABCDEGH}. F = {B → A, DA → CE, D → H, GH → C, AC → D}
Tính AC+
Thực hiện:
• Bước 0: X0 = AC
• Bước 1: X1 = ACD (do AC → D) => AC+ = ACDEH
• Bước 2: X2 = ACDE (do DA → CE)
• Bước 3: X3 = ACDEH (do D → H)
3 Phụ thuộc hàm
Bài tập tìm bao đóng của tập thuộc tính
Cho lược đồ quan hệ R = {ABCDEGH}. F= {AB → C, D → EG, ACD → B,
C → A, BE → C, CE → AG, BC → D, CG → BD, G → H}. Tìm DE+
Thực hiện:
• Bước 0: X0 = DE
• Bước 1: X1 = DEG (do D → EG) => DE+ = EDGH
• Bước 2: X2 = DEGH (do G → H)
3 Phụ thuộc hàm
Bài tập tìm bao đóng của tập thuộc tính
Cho lược đồ quan hệ R = {ABCDEGH}. F= {AB → C, D → EG, ACD → B,
C → A, BE → C, CE → AG, BC → D, CG → BD, G → H}. Tìm BE+
Thực hiện:
• Bước 0: X0 = BE
• Bước 1: X1 = BCE (do BE → C)
• Bước 2: X2 = ABCEG (do CE → AG) => BE+ = ABCDEGH
• Bước 3: X3 = ABCDEG (do BC → D)
• Bước 4: X4 = ABCDEGH (do G → H)
3 Phụ thuộc hàm
Bài tập tìm bao đóng của tập thuộc tính
Cho lược đồ quan hệ R = {ABCDEGH}. F= {AB → C, D → EG, ACD → B,
C → A, BE → C, CE → AG, BC → D, CG → BD, G → H}. Tìm CG+
Thực hiện:
• Bước 0: X0 = CG
• Bước 1: X1 = ACG (do C → A)
• Bước 2: X2 = ABCDG (do CG → BD) => CG+ = ABCDEGH
• Bước 3: X3 = ABCDGH (do G → H)
• Bước 4: X4 = ABCDEGH (do D → EG)
3 Phụ thuộc hàm
Bài tập tìm bao đóng của tập thuộc tính
Cho lược đồ quan hệ U = {A,B,C,D,E,G}.
Để giải bài toán này, thì ta đi tìm bao đóng của tập thuộc tính AC
Ta có bao đóng AC+F= ACDEH
Vì E có trong bao đóng AC, nên AC → E ∈ F+
3 Phụ thuộc hàm
Ví dụ bài toán thành viên
Cho quan hệ R=(ABCDEF). F = {AB → C, BC → AD, D → E, CF → B}
Kiểm tra PTH AB → D có suy diễn từ F không?
Bài làm:
Tìm bao đóng của tập thuộc tính AB.
Ta có bao đóng AB+F= ABCDE
Vì D có trong AB+F, nên AB → D được suy diễn từ F.
3 Phụ thuộc hàm
Cho lược đồ quan hệ R(ABEIJGH) và tập phụ thuộc hàm
F = {AB → E, AG → J, BE → I, E → G, GI → H}.
1. PTH AB → GH có được suy diễn từ F hay không?
2. PTH AG → HI có được suy diễn từ F hay không?
3. PTH BE → IG có được suy diễn từ F hay không?
• Siêu khóa là tập các thuộc tính dùng để xác định tính duy nhất của mỗi bộ
trong quan hệ.
4 Khóa của lược đồ quan hệ
Thuật toán tìm một khóa của một lược đồ quan hệ Q
Bước 1: Gán K = Q+
Bước 2: A là một thuộc tính của K,
Đặt K’ = K - A.
Nếu K’+= Q+ thì gán K = K’ thực hiện lại bước 2
Nếu muốn tìm các khóa khác (nếu có) của lược đồ quan hệ, ta
có thể thay đổi thứ tự loại bỏ các phần tử của K.
4 Khóa của lược đồ quan hệ
Ví dụ tìm một khóa của lược đồ quan hệ
Cho lược đồ quan hệ Q và tập phụ thuộc hàm F như sau:
Q(A,B,C,D,E)
F = {AB→C, AC → B, BC → DE} . Tìm 1 khóa K?
Nếu ≠ Q+ thì giữ
B1: K = Q+ K=ABCDE lại K cũ, ngược
B2:(K\A)+ (BCDE)+ = BCDE ≠ Q+ K = ABCDE lại thì nhận tập
bao đóng làm K
B3:(K\B)+ (ACDE)+= ABCDE = Q+ K = ACDE mới.
B4: (K\C)+ (ADE)+ = ADE ≠ Q+ K = ACDE
B5: (K\D)+ (ACE)+ = ACEBD=Q+ K = ACE
B6: (K\E)+ (AC)+ = ACBDE =Q+ K = AC
4 Khóa của lược đồ quan hệ
Ví dụ tìm một khóa của lược đồ quan hệ
Cho R(U) với U= { A,B,C,D,E,G,H,I}
F= { AC→B, BI→ACD, ABC→D , H→I, ACE→BCG, CG→AE }
Tìm 1 khóa K ?
Ví dụ : Cho L = {A, B, C, D, E}
R = {E, F, G, H}
TĐ = {F, G, H}
4 Khóa của lược đồ quan hệ
Thuật toán tìm tất cả các khóa của lược đồ quan hệ
Tập thuộc tính trung gian (TG): chứa các thuộc tính xuất hiện
ở cả L và R.
Vậy TG = L ∩ R (Giao)
Bước 1: Tìm tập thuộc tính nguồn (TN) và tập thuộc tính trung gian (TG)
Bước 2: Nếu TG = thì K(Key) = TN, và kết thúc thuật toán, xuất ra K của
tập cơ sở dữ liệu <U,F>. Ngược lại, nếu TG ≠ thì qua bước 3
Bước 3: Tìm tất cả các tập con Xi của TG
Bước 4: Tìm Siêu khóa (Si)
Với Xi, nếu (TN U Xi)+ = U thì khi đó Si = TN U Xi
Bước 5: Tìm Khóa (Ki) bằng cách loại bỏ các siêu khóa không tối thiểu
4 Khóa của lược đồ quan hệ
Sau khi tìm được khóa. Với mọi Si Sj thuộc S, nếu Si chứa trong Sj thì loại
bỏ Sj ra khỏi tập siêu khóa. Khi đó, tập S còn lại chính là tập khóa cần tìm.
Bài làm:
L = {ABC} R = {CA}
TN = {B} TG = {AC} ≠ nên ta làm tiếp bước 3
Ta có tập con Xi của tập TG = {0, A, C, AC}
Lấy từng thuộc tính thuộc tập con Xi của tập TG hợp với TN, sau đó tính
bao đóng. Ta có các thuộc tính sau:
4 Khóa của lược đồ quan hệ
Bài làm:
L = {ABCDEG} R = {ACEG}
TN = {BD} TG = {ACEG} ≠ nên ta làm tiếp bước 3
Lấy từng thuộc tính thuộc tập con Xi của tập TG hợp với TN ta xây dựng
bảng như sau:
4 Khóa của lược đồ quan hệ
F = {AE→C, CG→A, BD→G, GA→E}. TN = {BD}. TG = {ACEG}
Tập khóa
K = {BCD,BCA} là
khóa của lược đồ
quan hệ
5 Các dạng chuẩn của CSDL
Khái niệm chuẩn hóa CSDL
• Chuẩn hóa dữ liệu là quá trình rà soát lại các thuộc tính của các quan
hệ nhằm làm cho CSDL đạt được các dạng chuẩn trong CSDL.
Ví dụ 1:
5 Các dạng chuẩn của CSDL
Dạng chuẩn 1 (1NF)
Ví dụ 2:
DONVI(MasoDV, TenDV, MasoNQL, Điađiem)
Một phụ thuộc hàm X → Y là một phụ thuộc hàm đầy đủ nếu loại bỏ bất kỳ
thuộc tính A nào ra khỏi X thì phụ thuộc hàm không còn đúng nữa.
Ví dụ:
NV_DA(MaNV, MaDA, Sogio)
Ví dụ:
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn 2 (2NF)
• Nhóm các thuộc tính phụ thuộc vào một phần của khoá và thuộc tính
một phần tách thành quan hệ mới, lấy phần đó làm khoá chính cho
quan hệ mới.
• Giữ các thuộc tính phụ thuộc hoàn toàn vào khoá và giữ lại khoá của
quan hệ đó
R1(A2, A4)
R(A1,A2,A3, A4, A5)
R(A1,A2,A3, A5)
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn 2 (2NF)
Cho quan hệ R = (ABCD)
Khoá là AB và tập phụ thuộc hàm F = {AB -> C, AB -> D, B -> DC}
R 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 vào khoá chính AB.
=> Khi đó ta đưa về dạng chuẩn 2NF như sau:
5 Các dạng chuẩn của CSDL
Để quan hệ đạt được chuẩn 2: Tách các thuộc tính không phụ thuộc vào thuộc
tính khóa thành quan hệ mới.
5 Các dạng chuẩn của CSDL
Ví dụ: Bảng điểm kết quả các môn học
MaSV HoTen MaMH TenMonHoc DiemThi
CNTT01 Nguyễn Minh An CSDL Cơ sở dữ liệu 7.5
CNTT01 Nguyễn Minh An JavaScript Lập trình Javascript 7
CNTT02 Trần Chí Công JavaScript Lập trình Javascript 8
MaSV HoTen
CNTT01 Nguyễn Minh An
CNTT02 Trần Chí Công MaSV MaMH DiemThi
CNTT01 CSDL 7.5
MaMH TenMonHoc CNTT01 JavaScript 7
CSDL Cơ sở dữ liệu CNTT02 JavaScript 8
JavaScript Lập trình Javascript
5 Các dạng chuẩn của CSDL
Dạng chuẩn 3 (3NF)
• 3NF dựa trên khái niệm phụ thuộc bắc cầu.
• Một lược đồ quan hệ là ở 3NF nếu nó:
o Thỏa mãn 2NF.
o Không có thuộc tính không phải khoá chính của quan hệ là phụ thuộc
bắc cầu vào khoá chính.
Phụ thuộc bắc cầu là phụ thuộc thông qua 1 thuộc tính khác.
Ví dụ: A -> B
B -> C Dạng chuẩn 3 không
A -> C chấp nhận điều này.
5 Các dạng chuẩn của CSDL
Dạng chuẩn 3 (3NF)
• Tất cả các thuộc tính (không phải thuộc tính khóa) phải phụ thuộc trực tiếp
vào thuộc tính khóa chính.
• Ví dụ một quan hệ không đạt chuẩn 3
Nguyên nhân: Có thuộc tính không phụ thuộc trực tiếp vào thuộc tính khóa chính.
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn 3 (3NF)
• Tạo quan hệ mới gồm các thuộc tính phụ thuộc bắc cầu vào thuộc tính khóa,
lấy thuộc tính bắc cầu làm khoá.
• Giữ lại các thuộc tính phụ thuộc trực tiếp vào khoá.
• Thuộc tính bắc cầu nằm ở hai quan hệ.
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn 3 (3NF)
Để quan hệ đạt được chuẩn 3: Tách các thuộc tính không phụ thuộc hoàn toàn
vào khóa chính thành quan hệ mới.
Ta thấy:
- Từ MaSV xác định được TenLop
- Từ MaLop cũng xác định được TenLop.
Như vậy thuộc tính TenLop không phụ thuộc hoàn toàn vào khóa chính MaSV