You are on page 1of 83

CƠ SỞ DỮ LIỆU

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

1 Giới thiệu về chuẩn hóa CSDL


2 Dư thừa dữ liệu và sự dị thường
3 Phụ thuộc hàm, bao đóng của tập thuộc tính
4 Khóa của lược đồ quan hệ
5 Các dạng chuẩn của CSDL
1 Giới thiệu về chuẩn hóa CSDL
Tổng quan về thiết kế CSDL
• Mục tiêu chính của việc phát triển mô hình mức logic của CSDL quan
hệ là tạo được nơi lưu trữ và cung cấp dữ liệu có tính chính xác, thể
hiện đầy đủ các mối quan hệ và ràng buộc của dữ liệu.
• Để đạt được mục tiêu trên đòi hỏi các quan hệ trong CSDL phải có
thiết kế thích hợp.
• Nhưng thực tế, việc thiết kế CSDL đạt chuẩn gặp rất nhiều khó khăn.
1 Giới thiệu về chuẩn hóa CSDL
Ví dụ một CSDL thiết kế chưa tốt.
Giả sử ta cần một cơ sở dữ liệu lưu trữ thông tin về các hãng cung ứng. Sơ đồ
quan hệ được thiết kế trong đó tất cả các thuộc tính cần thiết được lưu trong
đúng 1 quan hệ: Suppliers(sid, sname, city, numofemps, product, quantity)
1 Giới thiệu về chuẩn hóa CSDL
Ví dụ một CSDL thiết kế chưa tốt.

Môt số bất cập khi thiết kế CSDL như trên:


• Dư thừa dữ liệu: Dữ liệu bị lặp lại ở thuộc tính product
• Khó khăn khi thêm: Thêm nhiều thông tin giống nhau
• Mất mát khi xóa: Có thể gây mất mát dữ liệu
• Khi sửa đổi: Sửa đổi nhiều thông tin
1 Giới thiệu về chuẩn hóa CSDL
Chuẩn hóa CSDL
Để không xảy ra những bất cập trong việc thêm, xóa, cập nhật dữ liệu thì sau khi
thiết kế, CSDL phải được chuẩn hóa.

• 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.

Dữ liệu ở một số thuộc tính bị


lặp lại ở các bộ dữ liệu.
Khó khăn:
• Cập nhật.
• Lưu trữ tốn dung lượng.
• Không nhất quán
2 Sự dư thừa và dị thường dữ liệu
Sự dư thừa dữ liệu
Từ quan hệ StaffBranch. => Tách thành 2 quan hệ Staff và Branch
2 Sự dư thừa và dị thường dữ liệu
Ví dụ Sự dư thừa dữ liệu Dữ liệu bị trùng lặp
NHANVIEN_PHONGBAN
TenNV MaNV NgSinh DChi MaPB TenPB TrPhong
Hung 123456789 09/10/1965 … 5 Nghien cuu 333445555
Nghia 333445555 08/12/1965 ... 5 Nghien cuu 333445555

=> Tách thành 2 quan hệ

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

• Chỉnh sửa nhiều dữ liệu giống nhau.


• Có thể gây nên việc không nhất quán dữ liệu.
3 Phụ thuộc hàm
Khái niệm Phụ thuộc hàm
Để tránh dị thường khi thiết kế CSDL thì CSDL phải được chuẩn hóa.
Việc chuẩn hóa dựa vào các phụ thuộc hàm giữa các thuộc tính của quan hệ.

Phụ thuộc hàm:


• Miêu tả mối quan hệ giữa các thuộc tính trong một quan hệ. Ký hiệu R
• Nếu X và Y là các thuộc tính của quan hệ R, Y phụ thuộc hàm vào X, hay
còn nói X xác định Y. Ký hiệu X → Y.
• Với mỗi giá trị của X trong R thì sẽ ứng với đúng một giá trị của Y trong R
3 Phụ thuộc hàm
Khái niệm Phụ thuộc hàm

• X, Y là hai tập thuộc tính trên quan hệ R


• r1, r2 là 2 bộ bất kỳ trên R
• Ta nói X xác định Y (Y phụ thuộc X). Ký hiệu X → Y, nếu và chỉ nếu
r1[X] = r2[X] thì r1[Y] = r2[Y]
• X → Y là một phụ thuộc hàm, hay Y phụ thuộc X.
• X là vế trái của phụ thuộc hàm, Y là vế phải của phụ thuộc hàm.
3 Phụ thuộc hàm
Ví dụ Phụ thuộc hàm
Cho quan hệ sinh viên như sau:
SINHVIEN (Tên, Mônhọc, SốĐT, ChuyênNgành, GiảngViên, Điểm)

Tên Mônhọc SốĐT ChuyênNgành GiảngViên Điểm


Huy CSDL 0913157875 HTTT Hưng 5
Hoàng CSDL 0913154521 HTTT Hưng 10
Huy AV 0913157875 HTTT Thủy 5
Hải Toán SXTK 0166397547 MạngMT Lan 10
Tính HQTCSDL 012145475 CNPM Trân 7
Tính LậpTrình 012145475 CNPM Việt 8
Hoàng LậpTrình 0913154521 HTTT Việt 10
3 Phụ thuộc hàm
Một số tính chất sau:
• Với mỗi Tên có duy nhất một SốĐT và ChuyênNgành
• Với mỗi Tên, Mônhọc có duy nhất một Điểm
• Với mỗi Mônhọc có duy nhất một GiảngViên

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

Các phụ thuộc hàm kéo theo:


• {Tên} → {ChuyênNgành}
• {Mônhọc, Điểm} → {GiảngViên, Điểm}
3 Phụ thuộc hàm
Phụ thuộc hàm được biểu diễn dưới dạng đồ thị có hướng

Lược đồ quan hệ:


MUONSACH (Sothe, Masach, Nguoimuon,
Tensach, Ngaymuon) có các PTH:
• {Sothe} → {Nguoimuon}
• {Masach} → {Tensach}
• {Sothe, Masach} → {Ngaymuon}
3 Phụ thuộc hàm
Phụ thuộc hàm được biểu diễn dưới dạng đồ thị có hướng

Lược đồ quan hệ:


CONGDAN (SoCMND, Hoten, Ngaysinh, Gioitinh)
có các PTH:
• {SoCMND} → {Hoten}
• {SoCMND} → {Ngaysinh}
• {SoCMND} → {Gioitinh}
3 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?

Cách 1: Sử dụng hệ luật dẫn Amstrong


Cách 2: Sử dụng thuật toán tìm bao đóng của tập thuộc tính.
3 Phụ thuộc hàm
Luật dẫn Amstrong
Gọi F là tập các phụ thuộc hàm.
Định nghĩa: X → Y được suy ra từ F, hay F suy ra X → Y,
Ký hiệu: F ╞ X → Y nếu bất kỳ bộ của quan hệ thỏa F thì cũng thỏa X → Y
Hệ luật dẫn Amstrong:
Với X, Y, Z, W ⊆ U. Phụ thuộc hàm có các tính chất sau:
F1) Tính phản xạ: Nếu Y ⊆ X thì X → Y
F2) Tính tăng trưởng: {X → Y} ╞ XZ → YZ
F3) Tính bắc cầu: {X → Y, Y → Z} ╞ X → Z
3 Phụ thuộc hàm
Luật dẫn Amstrong
Với X, Y, Z, W ⊆ U. Phụ thuộc hàm có các tính chất sau:
F1) Tính phản xạ: Nếu Y ⊆ X thì X → Y
F2) Tính tăng trưởng: {X → Y} ╞ XZ → YZ
F3) Tính bắc cầu: {X → Y, Y → Z} ╞ X → Z

Từ hệ luật dẫn Amstrong ta suy ra một số tính chất sau:


F4) Tính kết hợp: {X → Y, X → Z} ╞ X → YZ
F5) Tính phân rã: {X → YZ, X → Y} ╞ X → Z
F6) Tính tựa bắt cầu: {X → Y, YZ → W} ╞ XZ → W
3 Phụ thuộc hàm
Ví dụ chứng minh phụ thuộc hàm
Ta có tập các PTH F = {A → B, A → C, BC → D}. Chứng minh A → D?
f1 f2 f3

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}.

F = {C → G, BG → CD, AEG → BC, CG → AE, B → CG }.

Tìm B+ ? => B+ = ABCDEG

Tìm CG+? => CG+ = ABCDEG

Tìm C+? => C+ = ABCDEG

Tìm BG+ => BG+ = ABCDEG


3 Phụ thuộc hàm

Bài toán thành viên


áp dụng bao đóng
Áp dụng bao đóng để kiểm tra một phụ thuộc hàm có được suy
diễn từ tập F cho trước hay không?
3 Phụ thuộc hàm
Bài toán thành viên áp dụng bao đóng

Ví dụ: Cho R = {ABCDEGH}. F = {B → A, DA → CE, D → H, GH → C, AC → D}.


Cho biết AC → E có thuộc F+ ?

Để 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?

Cách thực hiện:


Tìm bao đóng của tập thuộc tính AB?
Nếu trong AB+ có xuất hiện GH thì kết luận được suy diễn từ F.
Ngược lại thì không được suy diễn từ F.
4 Khóa của lược đồ quan hệ
Khóa của một lược đồ quan hệ
Định Nghĩa: Cho lược đồ quan hệ Q(A1, A2, …, An)
• Q+ là tập thuộc tính của Q.
• F là tập phụ thuộc hàm trên Q.
• K là tập con của Q+
K là một khóa của Q nếu:
• K+ = Q+
• Không tồn tại K'  K sao cho K’+= Q+
4 Khóa của lược đồ quan hệ
Siêu khóa
• Tập thuộc tính S được gọi là siêu khóa nếu S K
• Thuộc tính A được gọi là thuộc tính khóa nếu AK với K là khóa bất kỳ
của Q. Ngược lại A được gọi là thuộc tính không khóa.
• Một lược đồ quan hệ có thể có nhiều khóa và tập thuộc tính không khóa
cũng có thể bằng rỗ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 ?

Bước 1: Gán K = U = ABCDEGHI


Bước 2: Lần lượt loại bớt các thuộc tính của K
Đáp án: K = CGH
4 Khóa của lược đồ quan hệ
Nhận xét về thuộc tính khóa
Từ thuật toán tìm khóa ta có các nhận xét sau:
• Các thuộc tính không xuất hiện trong cả vế trái lẫn vế phải của F phải
có trong khóa.
• Các thuộc tính chỉ xuất hiện trong vế trái của tất cả các PTH trong F
cũng phải có mặt trong Khóa.
• Trong quá trình tìm khóa ta có thể bỏ bớt tất cả các thuộc tính đơn
nằm bên phải của các PTH của F. Tuy nhiên cần kiểm tra lại vì không
phải lúc nào cũng có thể bỏ được các thuộc tính đó.
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ệ
Một số ký hiệu áp dụng trong thuật toán:
• U là tập tất cả các thuộc tính CSDL
• F là tập phụ thuộc hàm
• L(left): là các thuộc tính xuất hiện bên vế trái
• R(right): là các thuộc tính xuất hiện ở vế phải
• S(superkey): là tập các siêu khóa
• K(key) : là tập các khóa
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 nguồn (TN) gồm:
• Các thuộc tính chỉ xuất hiện ở vế trái, không xuất hiện ở vế phải của F
• Các thuộc tính không xuất hiện ở cả vế trái và vế phải của F.
Vậy TN = U \ R

Ví dụ: Cho sơ đồ U = {A, B, C, D, E}


R = {B, C, E}
TN = U \ R = {A, D}
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 đích (TĐ) gồm:
• Các thuộc tính chỉ xuất hiện ở R
• Không xuất hiện ở L.
Vậy TĐ = R \ L

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)

Ví dụ: Cho L = {A, B, C, D, E}


R = {D, E, F, G}
=> TG = L ∩ R = {D, E}
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ệ

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.

Giả sử ta có tập khóa:


S = {AB, ABC, ED, EDF}
Nhận thấy AB chứa trong ABC, ED chứa trong EDF,
vậy cần loại bỏ ABC và EDF.
Vậy S = {AB, ED} chính là tập khóa cần tìm
4 Khóa của lược đồ quan hệ
Ví dụ 1 Cho một tập cơ sở dữ liệu R = <U,F>, với U = {ABC}, F = {AB→C, C→A}.
Tìm tất cả các khóa thuộc tập cơ sở dữ liệu trên?

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ệ

• S1 = TN  0 = B Ta có B+ = B ≠ U nên S1 = B không là siêu khóa


• S2 = TN  A = AB Ta có AB+ = ABC = U nên S2 = AB là siêu khóa
• S3 = TN  C = BC Ta có BC+ = ABC = U nên S3 = BC là siêu khóa
• S4 = TN  AC = ABC Ta có ABC+ = ABC = U nên S4 = ABC là siêu khóa
• Vậy ta có tập siêu khóa S = {AB, BC, ABC}.
• Tuy nhiên, vì AB chứa trong ABC và BC chứa trong ABC nên loại bỏ siêu
khóa ABC ra khỏi tập siêu khóa.
• Vậy ta có, tập khóa K = {AB,BC} là khóa của lược đồ quan hệ.
4 Khóa của lược đồ quan hệ
Ví dụ 2 Cho một tập cơ sở dữ liệu R = <U,F>, với U = {ABCEG}
F = {AE→C, CG→A, BD→G, GA→E}. Tìm tất cả các của U?

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.

• Chuẩn hóa là 1 cách tiếp cận từ dưới lên (bottom-up) để thiết kế


CSDL, bắt đầu từ các mối liên hệ giữa các thuộc tính.
5 Các dạng chuẩn của CSDL
Các trường hợp gây nên CSDL không chuẩn

CSDL không đạt chuẩn thường


xảy ra khi chúng ta thực hiện
việc xây dựng CSDL dựa trên
các thông tin: Hóa đơn, phiếu
mua hàng, đơn đặt hàng…
5 Các dạng chuẩn của CSDL
Các trường hợp gây nên CSDL không chuẩn
CSDL không đạt chuẩn thường xảy ra khi chúng ta thực hiện việc xây dựng
CSDL dựa trên các dữ liệu cũ dưới dạng bảng, file excel.
5 Các dạng chuẩn của CSDL
Mục đích của việc chuẩn hóa CSDL

• Loại bỏ các bất thường trong 1 quan hệ để có


được các quan hệ có cấu trúc tốt hơn, nhỏ hơn.

• Giảm thiểu sự dư thừa dữ liệu ở mức thấp nhất.

• Cho phép người dùng thêm, sửa, xóa mà không


gây ra mâu thuẫn dữ liệu.
5 Các dạng chuẩn của CSDL
Các dạng chuẩn
• Dạng chuẩn 1 (1NF – first normal form).
• Dạng chuẩn 2 (2NF – second normal form).
• Dạng chuẩn 3 (3NF – third normal form).
• Dạng chuẩn BCNF (Boyce-Codd normal form).
• Dạng chuẩn 4NF.
5 Các dạng chuẩn của CSDL
Dạng chuẩn 1 (1NF)
Một quan hệ được gọi là ở dạng 1NF nếu:
• Miền giá trị của một thuộc tính chỉ chứa giá trị nguyên tố (không phân chia
được).
• Giá trị của mỗi thuộc tính cũng là một giá trị đơn lấy từ miền giá trị của nó
(không chứa thuộc tính lặp).

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)

Giá trị bị lặp


5 Các dạng chuẩn của CSDL
Dạng chuẩn 1 (1NF)
Để quan hệ đạt được chuẩn 1: Tách các thuộc tính đa trị thành 1 quan hệ mới.
5 Các dạng chuẩn của CSDL
Dạng chuẩn 2 (2NF)
• Một quan hệ được gọi là ở dạng 2NF:
o Thỏa mãn 1NF
o Phụ thuộc hàm đầy đủ vào khóa chính.
(Có nghĩa là: Các thuộc tính không phải là thuộc tính khóa chính phải phụ
thuộc hoàn toàn vào khóa chính)
• Chỉ xét quan hệ nào có khóa chính từ 2 thuộc tính trở lên (cặp các thuộc tính).
• Thường xuất hiện trong mối liên kết nhiều-nhiều.
5 Các dạng chuẩn của CSDL
Phụ thuộc hàm đầy đủ

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.

Biểu diễn bằng toán học: ∀ A, A ∈ X, (X – {A}) → Y

Ví dụ:
NV_DA(MaNV, MaDA, Sogio)

SV_MH(MaSV, MaMH, Diem)


5 Các dạng chuẩn của CSDL
Phụ thuộc hàm bộ phận
Một phụ thuộc hàm X → Y là phụ thuộc bộ phận nếu có thể bỏ một thuộc tính
A ∈ X ra khỏi X, phụ thuộc hàm vẫn đúng.

Biểu diễn bằng toán học: ∃A ∈ X, (X – {A}) → Y

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.

NHANVIEN(MaNV, TenNV, NS, DCHI, MaDV)

DONVI(MaDV, TenDV, TruongPHG)


5 Các dạng chuẩn của CSDL

MaSV HoTen MaLop TenLop SoLuongSV


CNTT01 Nguyễn Minh An IT17326 UDPM 17326 39
CNTT01 Nguyễn Minh An IT17326 UDPM 17326 39
CNTT02 Trần Chí Công IT17306 UDPM 17306 37

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

MaSV HoTen MaLop MaLop TenLop SoLuongSV


CNTT01 Nguyễn Minh An IT17326 IT17326 UDPM 17326 39
CNTT02 Trần Chí Công IT17306 IT17306 UDPM 17306 37
5 Các dạng chuẩn của CSDL
Tóm tắt 3 dạng chuẩn 1-3
NF Nhận biết Cách chuẩn hoá
Quan hệ không có thuộc Chuyển tất cả quan hệ lặp hoặc đa
Dạng 1
tính đa trị và quan hệ lặp. trị thành 1 quan hệ mới.
Phụ thuộc 1 phần vào thuộc Tách thuộc tính phụ thuộc 1 phần
Dạng 2 tính khóa. thành lược đồ mới, đảm bảo quan
hệ với lược đồ liên quan.
Phụ thuộc ẩn, tồn tại phụ
Tách các thuộc tính đó thành lược
Dạng 3 thuộc hàm giữa các thuộc
đồ mới.
tính không phải là khóa.
5 Các dạng chuẩn của CSDL
Dạng chuẩn BCNF (Boyce Codd)
• Là 3NF
• Không có thuộc tính khoá mà phụ thuộc hàm vào thuộc tính không khoá.
(Hay quan hệ sẽ không đạt BCNF nếu tồn tại phụ thuộc hàm mà vế trái
không phải là khóa)

• Sơ đồ BCNF: R(A1, A2, A3, A4, A5)

• Sơ đồ vi phạm dạng BCNF


5 Các dạng chuẩn của CSDL
Dạng chuẩn BCNF (Boyce Codd)

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}
R là quan hệ đạt chuẩn BCNF vì:
• Các thuộc tính không khóa phụ thuộc hàm đầy đủ vào khóa AB (đạt 2NF)
• Không có phụ thuộc hàm bắc cầu (đạt 3NF)
• Không có thuộc tính khóa phụ thuộc vào thuộc tính không phải là khóa.
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn BCNF (Boyce Codd)
• Loại bỏ các thuộc tính khóa phụ thuộc hàm vào thuộc tính không khóa ra
khỏi quan hệ.
• Tạo thành một quan hệ riêng có khoá chính là thuộc tính gây ra phụ thuộc.
5 Các dạng chuẩn của CSDL
Đưa về dạng chuẩn BCNF (Boyce Codd)
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, H -> B}
Quan hệ R 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:
5 Các dạng chuẩn của CSDL
Các bước thực hiện để đạt các dạng chuẩn

You might also like