Khi thiết kế một lược đồ quan hệ phải tuân theo một số nguyên tắc để khi thao tác trên cơ sở dữ liệu không dẫn đến sự dị thường vê dữ liệu. Công việc thiết kế dữ liệu theo một dạng chuẩn nào đó gọi là chuẩn hoá dữ liệu.
3.6.1 Các dạng chuẩn trong lược đồ quan hệ
Do việc cập nhật dữ liệu (qua phép chèn, loại bỏ và sửa đổi) gây nên những dị thường, cho nên các quan hệ nhất thiết phải được biến đổi thành các dạng phù hợp, quá trình đó gọi là quá trình chuẩn hoá.
Quan hệ được chuẩn hoá là quan hệ trong đó mỗi miền của một thuộc tính chỉ chứa những giá trị nguyên tố, tức là không phân nhỏ được nữa và do đó mỗi giá trị trong quan hệ cũng là nguyên tố.
Quan hệ có chứa các miền giá trị là không nguyên tố gọi là quan hệ không chuẩn hoá.
hoá khác và không làm mất mát thông tin. Có các dạng chuẩn sau: 1NF, 2NF, 3NF, BCNF
3.6.2 Một số các định nghĩa a) Thuộc tính khoá
- Cho lược đồ quan hệ rộn với tập các thuộc tính U, Ai → U; A gọi là thuộc tính khoá
của R nếu tồn tại K ⊆ U,
Nếu A ∈ K mà K là khoá thì A là thuộc tính khoá Nếu A ∉ K thì A là thuộc tính không khoá
b) Phụ thuộc hàm đầy đủ
Cho R(U) X,Y ⊆ U, Y gọi là phụ thuộc hàm đầy đủ vào X, Nếu X → Y và ∀A ∈ X; (X - {A})! →Y
Phụ thuộc hàm đầy đủ ký hiệu là X+→ Y
c) Phụ thuộc hàm bắc cầu
- Cho R(U) X,Y ⊆ U Y gọi là phụ thuộc hàm bắc cầu vào X nếu ∃ Z ⊆ U: Y- Z ≠φ, X → Z, Z!→X, Z →Y, Y!→X Nếu không ta nói Y phụ thuộc hàm trực tiếp vào X. Phụ thuộc hàm bắc cầu ký hiệu là X%→Y
3.6.3 Dạng chuẩn 1NF (1st Normal Form)
Lược đồ quan hệ r gọi là dạng chuẩn 1 nếu mọi giá trị xuất hiện trong r đều là giá trị nguyên tố. Ví dụ: số LƯỢNG TÊN HÀNG NHẬP XUẤT H1 15 10 H2 20 18
Lược đồ quan hệ này không phải là dạng chuẩn 1 vì giá trị trong thuộc tính SỐ LƯỢNG không phải là nguyên tố
3.6.4 Dạng chuẩn 2NF (2nd Normal Form)
Lược đồ quan hệ r gọi là dạng chuẩn 2NF nếu đã là dạng chuẩn 1 và mọi thuộc tính không khoá của r đều phụ thuộc hàm đầy đủ vào khoá.
Lược đồ quan hệ r gọi là dạng chuẩn 3NF nếu đã ở dạng chuẩn 2 và mọi thuộc tính không khoá của r không phụ thuộc hàm bắc cầu vào khoá .
Ví dụ :
Xét lược đồ quan hệ: r(SAIP); Trong đó F = {SI →; S → A} Ta thấy r là dạng chuẩn 1
Xét dạng chuẩn 2: Ta có S →A
và SI → S ⇒ SI →A
Vậy thuộc tính A không phụ thuộc đầy đủ vào khoá của r là SI, như vậy r không phải là 2 NF
Ví dụ:
Xét lược đồ quan hệ: r(SIDM); F= { SI→D; SD→M} - Ta thấy r là dạng chuẩn 2
- Xét dạng chuẩn 3:
SI→D⇒SI→SD; (theo luật tăng trưởng); Mà SD→M⇒SI→M Vậy M phụ thuộc bắc cầu vào SI nên r không là 3 NF
3.6.6 Dạng chuẩn BCNF (Boye - Code)
Lược đồ quan hệ r gọi là dạng chuẩn BCNF nếu X→A thoả trên r, nếu A không thuộc X và X là khoá của r.
Định lý: Một lược đồ quan hệ r là dạng chuẩn BCNF thì là phải là dạng chuẩn 3NF 3.7 Các thuật toán
3.7.1 Bao đóng của tập thuộc tính
Bao đóng của tập thuộc tính là một tập con của U. Bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F là X+:
X+ = {A | A∈U; X→A∈F+}
Bao đóng của tập thuộc tính X+ chính là các thuộc tính có thể suy ra từ X qua các phụ thuộc hàm F.
Thuật toán 1:Tìm bao đóng của tập thuộc tính
Bước 1:Đặt X0 = X
Bước i: Tính Xi = Xi-1∪{A} nếu tồn tại Y→Z∈F; A ∈Z và A∉Xi-1; Y⊆Xi-1 Vì X1⊆X2⊆…⊆U nên ∃j sao cho Xj = Xj-1 (tập X không tăng nữa)
Đặt X+ = Xj; Gọi X+ là bao đóng của X Mô tả bằng ngôn ngữ giả Pascal: Proc Closure;
Input: r=(U,F); Tập thuộc tính X⊆U Output: Y = X+ = {A∈U| X→A∈F+} Begin Y:=X Repeat Z:=Y; For each f L →R in F do if L ⊆ Y then Y:=Y∪R; endif; endfor; Until Y=Z: return Y; End;
Ví dụ: Cho r(U); U={A,B,C,D,E,F,G}
F = {A→BC; C →B; D→EF; AD→G} Tính (AD)+
Đặt X1 = (AD)
Chọn các phụ thuộc hàm có vế trái là A,D,AD có A →BC nên X2 = AD∪B X3 = ADB∪C Vì có D→EF nên X4 = ADBC∪E X5 = ADBCE ∪F Vì có AD→G nên X6 = ABCDEFG VÀ X+ = (ABCDEFG) 3.7.2 Phủ của tập các phụ thuộc hàm
- Cho hai tập phụ thuộc hàm F và G ; F và G gọi là tương đương nếu F+ = G+. Khi đó ta nói F phủ G (hay G phủ F)
- Phủ không dư thừa: Gọi F là tập phụ thuộc hàm không dư thừa nếu không tồn tại một phụ thuộc hàm X → Y mà F - {X → Y} tương đương với F
Ví dụ:
Cho F = { A → B ; B → C ; A → Cl
Ta thấy A → C là thừa vì F - {A → C} tương đương với F
- Phủ tối thiểu: Gọi tập các phụ thuộc hàm F là tối thiểu nếu thoả mãn ba điều kiện: + Mọi phụ thuộc hàm thuộc F đều có dạng : { Xi → A; | i = 1…m } (nói cách khác về phải mỗi phụ thuộc hàm thuộc F chỉ có một thuộc tính).
+ F là một phụ thuộc hàm không dư thừa hay không tồn tại X → Y ∈ F mà F - {X → Y} tương đương với F
+ F không dư thừa thuộc tính nào ở vế trái, nói cách khác không tồn tại một phụ thuộc hàm X → A ∈ F; Z ⊆ X mà :
F+ = (F – {X→A} ∪ {Z→A})+
Định lý: Mối phụ thuộc hàm F đều tương đương với một phủ tối thiểu F’. Vì vậy với một quan hệ ta chỉ cần xét phủ tối thiểu là đủ.
Thuật toán 2:Tìm phủ tối thiểu
Bước 1: Tách các PTH sao cho vế phải của mỗi PTH chỉ có một thuộc tính.
Giả sử xét phụ thuộc hàm X→Y , với Y = A1A2A3…An Ta có thể lách thành các phụ thuộc hàm sau:
X → A1
X →A2
…
X → Am
Kết quả ta được F1 tương đương với F
Bước 2: Loại bỏ các phụ thuộc hàm (PTH) dư thừa.
Giả sử có Fi có dạng Xi → A | i = 1…m Đặt F0 = F1
Fi-1 \ {Xi →Ai} nếu Fi-1 \ {Xi → Ai} tương đương với Fi-1
Fi = {
Sau m lần ta được Fm = Fm-1
Đặt F2 = Fm tương đương với F1.
Bước 3: Loại bỏ các thuộc tính dư thừa bên trái của mỗi phụ thuộc hàm
Sau bước 2 có
F2 = {Xi → Aj | với i =l…n Và Xi Có dạng Xi =A1,A2,…An
- Đặt X0 = Xi
Xj-1-{A} nếu {F2\ (Xi-1 →Ai) ∪ (Xi-1\Aj) →Ai} tương đương với F2 Xj ={
Xj-1 nếu ngược lại
Lặp lại quy tắc trên n lần thì ta xét xong phụ thuộc hàm Xi → Aj (Có nghĩa là đã loại bỏ tất cả các thuộc tính dư thừa bên trái trong phụ thuộc hàm trên).
Sau bước này ta được F3 tương đương với F2. F3 là phủ tối thiểu của F
3.7.3 Tính tương đương của tập phụ thuộc hàm
Bài toán thành viên: Cho tập thuộc tính U, một tập các phụ thuộc hàm F. Cho một phụ thuộc hàm f: X → Y. Hỏi X → Y có thuộc F hay không.
Kết quả bài toán thành viên:
Định lý: X → Y ∈ F+ Khi và chỉ khi Y ⊆ X+
Thuật toán 3: Kiểm tra tính tương đương của hai tập phụ thuộc hàm Cho F = {Xi → Yi} | i= l..m; G = {Xj → Yj} | j = 1..n
Kiểm tra xem F có tương đương với G không
Bước l: Với ∀i = 1..mkiểm tra xem Xi → Yi có thuộc G+ không. Theo định lý trên ta kiểm tra xem có thoả Yi ⊆ Xi+ nếu thoả thì F+ ⊆ G+
Bước 2: Với ∀j = 1..n kiểm tra xem Xj → Yj có thuộc F+ không. Theo định lý trên ta kiểm tra xem có thoả Yj ⊆ Xi+ nếu thoả thì G+ ⊆ F+
Nếu thoả cả hai điều kiện trên thì G+ = F+ và ta nói F và G tương đương
3.7.4 Khoá tối thiểu của sơ đồ quan hệ.
Cho lược đồ quan hệ r(U,F), K ⊆ U. K được gọi là khoá tối thiểu của một lược đồ quan hệ nếu K → U và ∀A∈K; (K -{A})!→ U. Nói cách khác K thoả mãn
(l) K+ = U
(2) ∀A∈K; (K - {A})+ ≠ U
Chú ý:
thì gọi là khoá (một số tài liệu gọi siêu khoá là khoá, còn khoá thoả mãn cả hai điều kiện trên là khoá tối thiểu)
- Một sơ đồ quan hệ có thể có nhiều khoá. Giao của các khoá gọi là: M= U ∪ (∀L\R). (là những thuộc tính chỉ có mặt ở vế trái)
- Nếu M+= U thì r có một khoá duy nhất. Nếu không thì r có hơn một khoá. - Khoá chính
Thuật toán 4:Tìm khoá tối thiểu của một lược đồ quan hệ Cho tập phụ thuộc hàm và quan hệ r (U, F). U={A1, A2,…An}. Tìm khoá tối thiểu của r
Bước l: Đặt K0 = U
Ki-1\ A nếu (Ki-1 \ Ai)+ = U Bước i: Tính Ki ={
Ki-1 nếu ngược lại
Lặp lại Bước i n lần thì dừng và khoá tối thiểu của r(U,F) là Ki. Proc Key;
Input: Tập thuộc tính U; Tập F Output: K ⊆ U thoả điều kiện (1) K+ = U
(2) ∀A ∈ K; (K – {A})+ ≠ U Begin
K:=U;
For each attribute A in U do if A ∈ (K – A)+ then K:=K-A; endif; endfor; return K: End;
3.7.5 Các bước chuẩn hoá một quan hệ đến 3NF
Thuật toán 5:Quá trình chuẩn hoá một quan hệ thành dạng 3NF Cho lược đồ quan hệ r(U) với tập phụ thuộc hàm F
Chuẩn hoá r thành dạng 3NF và phép tách p là không mất mát thông tin ρ = {r1(U1), r2(U2)... rn(Un)}
Sao cho ri(Ui) là dạng chuẩn 3NF Bước 1: Tìm khoá của r
Bước 2: Sử dụng thuật toán 2 tìm phủ tối thiểu F’ Bước 3: Xác định các lược đồ con
Mỗi phụ thuộc hàm thuộc F’ tương đương với một lược đồ con.
Giả sử xét Y → Aj ta tương ứng có lược đồ rj(Uj) với Uj =VAj và xác định khoá cho rj(Uj) với j ⊆ (1,…,n) và Y ⊆ U
Lưu ý: Nếu ∃Xi → Ai1; Xi → Ai2;…; Xi → Ail
Thì Ui = (XiA1A2…Ai) Và tương ứng ta có Ri(Ui)
Xác định khoá Ki của ri theo thuật toán 4, với i ⊆ (1,…,n) và Xi ⊆ U Bước 4: Xét phép tách ρ = {Ri(Ui)} nếu K không có mặt trong p thêm K vào ρ Cuối cùng ta được ρ = {Ri(Ui’)} với thoả mỗi ri là 3NF.
Ví dụ 1:
Cho r(U,F) có:
U = {A,B,C,D,E,F,G,H )
F = {A → BC; C → B; D → EF; ADC → G } Chuẩn hoá r thành dạng 3NF
Bước 1: Tìm khoá tối thiểu:
K0 = U = { A,B,C,D,E,F,G,H } dùng thuật toán 4 loại bỏ dần ta có K = ADH
Bước 2:
Tìm phủ tối thiểu
2.1 Tách các phụ thuộc hàm
F = {A → C; C → B; A → B; D → E; D → F; ADC → G}
2.2 Loại bỏ các phụ thuộc hàm dư thừa: Có A → B thừa vì có A→C và C →B Ta có F = {C → B; A → C; D → E; D → F; ADC → G}
2.3 Bỏ các thuộc tính thừa ở vế trái
⇒F = C → B; A → C; D → E; D → F; AD → G} Bước 3: Ta có các ri như sau:
A → C ⇒ R1(U1) = (AC) khoá K1 = {A} C → B ⇒ R2(U2) = (CB) khoá K2 = {B}
D → E; D → F;⇒R3(U3) = (DEF) khoá K3 = {D} AD → G ⇒ R4(U4) = (ADG) khoá K4 = {AD} Bước 4: Kết quả
ρ = {r0(ADH), r1(AC), r2(CB), r3(DEF), r4(ADG)} Thoả mãn Ri(Ui) là 3NF
Thuật toán 6: Chuẩn hoá một lược đồ quan hệ về dạng Boye - code Cho lược đồ quan hệ r có tập thuộc tính U và tập phụ thung hàm F Chuẩn hoá r thành dạng chuẩn Boye - code
Bước i: Nếu tồn tại quan hệ X → Y mà X không phải là khoá thì tách r thành hai lược đồ quan hệ:
ri = X ∪Y = ri(XY) Khoá là X
ri+1 = (U \ Y), Xác định lại khoá và tập phụ thuộc hàm F cho ri+1. Quá trình tiếp tục cho tới khi tất cả các lược đồ đều ở BCNF
Kết quả được phép tách:
ρ = {r1(U1), r2(U2),…rn(Un)} với mỗi ri là quan hệ ở dạng BCNF Ví dụ: Cho lược đồ quan hệ r(U,F)
U = {C, T, H, N, S, G}
F = {CS → G ;C → T; HT → N; HS → N; HN → C} Khoá của r là HS :
Hãy tách r thành các quan hệ BCNF Bước 1 :
Xét CS → G vì CS không là khoá của r nên tách:
R1 = (CSG); r2 = (CTHNS) và F= {C → T; HT → N; HS → N; HN → C}, khoá của r2 là HS. Trong đó ri thoả mãn BCNF, r2 không thoả mãn BCNF.
Bước 2: Xét r2
Có C → T mà C không là khoá của r2 nên tách:
R21 = (CT); r22 = (CHNS) và F= {HS → N; HN → C}, khoá của r22 là HS. Trong đó r21 thoả mãn là BCNF, r22 không thoả mãn BCNF.
Bước 3 : Xét r22:
Có HN → C mà CH không là khoá nên tách:
r221 = (CHN) ; r222 = (CHS); r221 thoả mãn CBNF; r222 thoả mãn BCNF Thuật toán dừng vì ∀ri thoả mãn BCNF.
Cuối cùng ta có:
ρ = {rl(CSG); r21(CT); r221(CHN); r222(CHS)} Trong đó mỗi ri là BCNF.
3.8 Phụ thuộc đa trị 3.8.1 Khái niệm 3.8.1 Khái niệm
Ta thấy dữ liệu có mối quan hệ với nhau đó là phụ thuộc hàm. Tuy vậy cũng có trường hợp quan hệ đó không có sự phụ thuộc hàm. ánh xạ trên các thuộc tính không phải là đơn trị mà có nhiều giá trị. Mối quan hệ đó gọi là phụ thuộc đa trị (Multivalued Defendency-MVD)
Ví dụ: Quan hệ KHDH (kế hoạch dạy học) Giáo viên Môn Lớp
A M2 Kl
A M1 K2
A M2 K2
A M1 Kl
Như vậy với một giáo viên ta chưa hẳn đã xác định được dạy lớp nào, môn gì cụ thể
3.8.2 Định nghĩa
Cho R là một lược đồ quan hệ X, Y là 2 tập con của R. Z = R - XY. Quan hệ r(R) gọi là phụ thuộc đa trị nếu với bất kỳ 2 bộ t1, t2 ∈ r, với tl[X] = t2[X] tồn tại một bộ t3 ∈ r sao cho:
t3[X] = tl[X]; t3[Y] = t1[Y]; t3[Z] = t2[Z]; Ký hiệu phụ thuộc đa trị
X → → Y
Ta nói X xác định đa trị Y; hay Y phụ thuộc đa trị vào X Ví dụ: Xét quan hệ KHDH trên là phụ thuộc đa trị
Nhận xét:
- Xét mô hình trên ta còn có: t4[Z] = tl[Z]; t2[Y] = t4[Y] - Nếu Y = φ thì X → → φ đúng với mọi quan hệ
- Nếu X = φ thì φ → → Y đúng khi Y độc lập với các thuộc tính khác trong r
3.8.3 Hệ tiên đề:
(l) Tiên đề bù: X → → Y ⇒U\Y\X
(2) Tiên đề tưng trưởng: X → → Y; V ∈W ⇒ WX → →VY (3) Tiên để bắc cầu: X → → Y và Y → → Z ⇒ X → → Z\Y
(4) Tiên đề về quan hệ phụ thuộc đơn trị và đa trị: X → Y thì X → → Y (l) Nếu X → → Y, Z ⊆ Y, W ∩ Y = φ, W → Z thì X → Z
3.8.4 Các luật suy diễn của phụ thuộc đa trị
1. Luật hợp: NẾU X → → Y và X → → Z thì X → → YZ 2. Luật tựa bắc cầu Nếu X → → Y và WY → → Z thì WX → → Z\WX 3. Luật tựa bắc cầu hỗn hợp Nếu X → → Y và XY → → Z thì X → → Z\Y 4. Luật tách
Nếu X → → Y và X → → Z thì X → → Y\Z; X → → Z\Y; X → → Y ∩ Z
Định lý: Cho r(U) có phép tách ρ = {r1(U1), r2(U2)} là phép tách hai không mất mát thông tin khi và chỉ khi:
Ul ∩ U2 → → Ul \U2 U1 ∩ U2→ → U2 \ U1
3.8.5 Dạng chuẩn 4 NF
- Một phụ thuộc hàm đa trị X → → Y gọi là sơ cấp nếu với X, Y ≠ φ X ∪ Y ≠ U mà ∀ X’ < X ⇒ X → → Y
Quan hệ r gọi là dạng chuẩn 4 nếu mọi phụ thuộc đa trị sơ cấp đều được xác định bởi khoá chính
Ví dụ: Quan hệ KHDH trên : Khoá chính: GML
Tách: KHDH1 : (GM) có G → → M KHDH2: (GL) có G → → L
BÀI TẬP VÀ CÂU HỎI
1. Định nghĩa phụ thuộc hàm và các khái niệm liên quan.