Professional Documents
Culture Documents
Nội dung
Lý thuyết thiết kế • Tổng quan về thiết kế CSDLQH
cơ sở dữ liệu quan hệ • Phụ thuộc hàm
• Phép tách các sơ đồ quan hệ (SĐQH)
Nguyễn Hồng Phương • Các dạng chuẩn đối với các SĐQH
phuongnh@soict.hust.edu.vn
http://is.hust.edu.vn/~phuongnh
1
10/11/2019
2
10/11/2019
Hệ tiên đề Amstrong đối với phụ thuộc hàm Hệ quả của hệ tiên đề Amstrong
Cho • Luật hợp (union)
– R(U) là 1 sơ đồ quan hệ, U là tập các thuộc tính.
– X,Y,Z,W U
Nếu XY, XZ thì XYZ.
– Ký hiệu: XY = X Y • Luật tựa bắc cầu (pseudo-transitivity)
• Phản xạ (reflexivity) Nếu XY, WYZ thì XWZ.
Nếu Y X thì XY • Luật tách (decomposition)
• Tăng trưởng (augmentation)
Nếu XY, Z Y thì XZ
Nếu XY thì XZYZ
• Bắc cầu (transitivity)
Nếu XY, YZ thì XZ
9 10
• Ví dụ 1: • Định nghĩa:
Cho tập phụ thuộc hàm {ABC, CA} – Cho F là một tập phụ thuộc hàm. Bao đóng của
Chứng minh: BC ABC F ký hiệu là F+ là tập lớn nhất chứa các phụ
CA BC AB thuộc hàm có thể được suy ra từ các phụ thuộc
hàm trong F.
AB C AB ABC
BC AB, AB ABC BC ABC • Đặc điểm của bao đóng của một tập pth:
– Có thể rất lớn
• Ví dụ 2:
– Chi phí rất tốn kém cho việc tìm kiếm
Cho lược đồ quan hệ R(ABEIJGH) và tập • Vấn đề đặt ra: Kiểm tra xem một pth có được suy
phụ thuộc hàm F = {ABE, AGJ, BEI, diễn từ một tập pth có sẵn không => sử dụng bao
EG, GIH} đóng của một tập thuộc tính đối với tập pth
Chứng minh: AB GH
11 12
3
10/11/2019
Bao đóng của một tập các thuộc tính Thuật toán 1: Tìm bao đóng của một tập thuộc tính
đối với một tập các pth đối với tập phụ thuộc hàm
• Định nghĩa: • Vào: Tập hữu hạn các thuộc tính U, tập các pth F
– Cho một sơ đồ quan hệ R(U), F là một tập trên U, X U
pth trên U. X là tập con của U. Bao đóng của • Ra: X+F
tập thuộc tính X đối với tập F, ký hiệu là X+F • Thuật toán
(X+), là tập tất cả các thuộc tính được xác B0 X0 = X
định hàm bởi X thông qua tập F Bi Tính Xi từ Xi-1
X+ = {A U| X A F+} Nếu YZ F và Y Xi-1 và A Z và A Xi-1
• Có thể thấy, định nghĩa về bao đóng của thì Xi = Xi-1 A
một tập thuộc tính dựa trên bao đóng ngược lại, Xi = Xi-1
của tập pth. Nếu Xi Xi-1
thì lặp Bi
• =>Thuật toán xác định bao đóng của ngược lai, chuyển Bn
một tập thuộc tính Bn X+F= Xi
13 14
Ví dụ Bổ đề
• Cho R(U) , U = {A, B, C, D, E, F} • XY được suy diễn từ tập F dựa trên
F = {ABC, BCAD, DE, CFB} hệ tiên đề Amstrong khi và chỉ khi Y
X+F
Tính (AB)+ • Chứng minh:
• Thực hiện: – Giả sử Y=A1...An, với A1,...,An là các
– Bước 0: X0 = AB thuộc tính và YX+
– Bước 1: X1 = ABC (do AB C) – Từ định nghĩa X+ ta có XAi. Áp dụng
tiên đề Amstrong cho mọi i, suy ra XY
– Bước 2: X2 = ABCD (do BCAD) nhờ luật hợp.
– Bước 3: X3 = ABCDE (do DE) – Ngược lại, giả sử có XY, áp dụng hệ tiên
– Bước 4: X4 = ABCDE đề Amstrong cho mỗi i, ta có XAi, AiY
15 nhờ luật tách. Từ đó suy ra YX+ 16
4
10/11/2019
19 20
5
10/11/2019
Thuật toán khác tìm tất cả các khóa trong Thuật toán khác tìm tất cả các khóa trong
lược đồ quan hệ lược đồ quan hệ
• Tập thuộc tính nguồn (TN): gồm các • Tập thuộc tính đích (TĐ): gồm các
thuộc tính chỉ xuất hiện ở vế trái, không thuộc tính chỉ xuất hiện ở R, không
xuất hiện ở vế phải của F và các thuộc tính xuất hiện ở L. Vậy TĐ = R \ L
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 L = {A, B, C, D, E}
• Ví dụ: Cho sơ đồ U = {A, B, C, D, E} R = {E, F, G, H}
L = {A, B} R = {B, C, E} TĐ = {F, G, H}
TN = U \ R = {A, D}
21 22
Thuật toán khác tìm tất cả các khóa trong Thuật toán khác tìm tất cả các khóa trong
lược đồ quan hệ lược đồ quan hệ
• Thuật toán:
• Tập thuộc tính trung gian (TG):
• Bước 1: Tìm tập thuộc tính nguồn TN và tập thuộc tính trung
chứa các thuộc tính xuất hiện ở cả L gian TG
và R • 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>
• Vậy TG = L ∩ R • 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
• Ví dụ: Cho L = {A, B, C, D, E} • Bước 4: Tìm Siêu khóa (Si)
R = {D, E, F, G} 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
Vậy TG = L ∩ R = {D, E} tối thiểu
• 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
23 24
6
10/11/2019
Thuật toán khác tìm tất cả các khóa trong Thuật toán khác tìm tất cả các khóa trong
lược đồ quan hệ lược đồ quan hệ
25 26
27 28
7
10/11/2019
29 30
Tập phụ thuộc hàm không dư thừa Phủ tối thiểu của 1 tập phụ thuộc hàm
• Đ/N: Tập phụ thuộc hàm F là không dư
thừa nếu không XYF sao cho F\{XY} • Đ/N: Fc được gọi là phủ tối thiểu của 1
F. tập pth F nếu thỏa mãn 3 điều kiện:
• Thuật toán 3: Tìm phủ không dư thừa của
một tập pth – (Đk1) Với f Fc, f có dạng X A, trong
– Vào: Tập thuộc tính U, F = {Li Ri | i = 1..n} đó A là 1 thuộc tính.
– Ra : Phủ không dư thừa F’ của F – (Đk2) Với f = XY Fc, ! A X (A là 1
– Thuật toán
thuộc tính) mà (Fc \ f) U {(X \ A)Y} ≅
B0 F0= F
Bi Nếu Fi-1\ {LiRi} Fi-1 Fc
thì Fi = Fi-1 \ {LiRi} – (Đk3) ! XA Fc mà Fc \ {XA} ≅ Fc
ngược lại, Fi = Fi-1
Bn+1 F’ = Fn
31 32
8
10/11/2019
Ví dụ 2 Ví dụ 2 (tiếp)
Tìm phủ tối thiểu của tập pth sau:
F = {AB, ABCDE, EFG, ACDFEG} – F21={AB, ACDE, EFG, ACDFE,
• Bước 1: có F1={AB, ABCDE, EFG, ACDFG}
ACDFE, ACDFG} – Xét pth ACDE:
• Bước 2: F20=F1={AB, ABCDE, EFG, • Thử giản ước C, có (AD)+F21=ADB, không chứa
ACDFE, ACDFG}
E, vậy ADE không được suy diễn ra từ F21
– Loại bỏ thuộc tính thừa ở vế trái của 4 pth
ABCDE, EFG, ACDFE và ACDFG • Thử giản ước D, có (AC)+F21=ACB, không chứa
– Xét ABCDE: E, vậy ACE không thể suy diễn ra từ F21
Giả sử giản ước A, còn BCDE, kiểm tra BCDE có được – Xét pth EFG:
suy ra từ F20 không, ta tính (BCD)+F20 (BCD)+F20= BCD,
không chứa E, vậy BCDE không được suy diễn ra từ • Thử giản ước F, có E+F21=E, không chứa G, vậy
F20, do đó A không phải là thuộc tính thừa trong pth EG không thể suy diễn ra từ F21
đang xét. • Thử giản ước E, có F+F21=F, không chứa G, vậy
Giả sử giản ước B, tính (ACD)+F20=ACDBE, chứa E, vậy FG không thể suy diễn ra từ F21
35 36
ACDE được suy diễn ra từ F20
9
10/11/2019
Ví dụ 2 (tiếp) Ví dụ 2 (tiếp)
– Xét pth ACDFE: – Xét ACDFG:
• Thử giản ước A, có (CDF)+F21=CDF, không • Thử giản ước A, có (CDF)+F22=CDF, không
chứa E, vậy CDFE không thể suy diễn ra từ chứa G, vậy CDFG không thể suy diễn ra từ
F2 1 F 22
• Thử giản ước C, có (ADF)+F21=ADFB, không • Thử giản ước C, có (ADF)+F22=ADFB, không
chứa E, vậy ADFE không thể suy diễn ra từ chứa G, vậy ADFG không thể suy diễn ra từ
F2 1 F 22
• Thử giản ước D, có (ACF)+F21=ACFB, không • Thử giản ước D, có (ACF)+F22=ACFB, không
chứa E, vậy ACFE không thể suy diễn ra từ chứa G, vậy ACFG không thể suy diễn ra từ
F2 1 F 22
• Thử giản ước F, có (ACD)+F21=ACDBE, chứa E, • Thử giản ước F, có (ACD)+F22=ACDBE, không
vậy ACDE có thể suy diễn ra từ F21 chứa G, vậy ACDG không thể suy diễn ra từ
• F22={AB, ACDE, EFG, ACDFG} F 22
37 38
39 40
10
10/11/2019
Phép tách không mất mát thông tin Định lý tách đôi
• Đ/N: Cho lược đồ quan hệ R(U) phép tách R • Cho lược đồ quan hệ R(U), tập pth F , phép tách R
thành các sơ đồ con {R1, R2, …, Rk} được gọi là thành R1(U1), R2(U2) là một phép tách không mất
phép tách không mất mát thông tin đ/v một tập mát thông tin nếu 1 trong 2 phụ thuộc hàm sau là
phụ thuộc hàm F nếu với mọi quan hệ r xác định thỏa mãn trên F+:
trên R thỏa mãn F thì:
U1 ∩ U2 U1 - U2
r = R1(r) ⋈ R2(r) ⋈ … ⋈ Rk (r)
U1 ∩ U2 U2 - U1
• Hệ quả: Cho lược đồ quan hệ R(U) và phụ thuộc
• Ví dụ: Phép tách mất mát thông tin hàm XY thỏa mãn trên R(U). Phép tách R thành
Supplier(sid, sname,city,NOE, pid, pname,colour,quantity) 2 lược đồ con R1(U1), R2(U2) là một phép tách
S1(sid,sname,city,NOE) và không mất mát thông tin với:
SP1(pid,pname,colour,quantity)
U1 = XY
• Ví dụ: Phép tách không mất mát thông tin U2 = XZ
S1(sid,sname,city,NOE) và
SP2(sid,pid,pname,colour,quantity) Z = U \ XY
41 42
11
10/11/2019
Ví dụ (tiếp) Ví dụ (tiếp)
• B2 & 3: • Từ C D, ta có A B C D
A B C D
• Từ A C, ta có R1 a1 a2 a3 b14 R1 a1 a2 a3 a4
R2 b21 a2 b23 a4 R2 b21 a2 a3 a4
R3 a1 a2 a3 b34 R3 a1 a2 a3 a4
R4 b41 a2 a3 a4 R4 b41 a2 a3 a4
12
10/11/2019
13
10/11/2019
14
10/11/2019
Dạng chuẩn Boyce-Codd (tiếp) Tách bảo toàn tập phụ thuộc hàm về 3NF
• Ví dụ
– R = {A,B,C} ; F = {ABC , CB}. • Vào: R(U), F (giả thiết F là phủ tối thiểu)
– R không phải ở BCNF vì CB, C không phải là • Ra: Phép tách bảo toàn tập phụ thuộc hàm về 3NF
khoá • Thuật toán
• Chú ý: B1. Với các Ai U, Ai F thì loại Ai khỏi R và lập 1
– Một quan hệ thuộc 3NF thì chưa chắc đã thuộc quan hệ mới cho các Ai
BCNF. Nhưng một quan hệ thuộc BCNF thì thuộc
3NF B2. Nếu f F, f chứa tất cả các thuộc tính của R
(đã bỏ các Ai ở bước trên) thì kết quả là R
B3. Ngược lại, với mỗi X A F, xác định một
quan hệ Ri(XA).
Nếu XAi, XAj thì tạo một quan hệ chung
R’(XAiAj)
59 60
15
10/11/2019
61 62
Ví dụ Ví dụ (tiếp)
• Cho R(U) trong đó U = {A,B,C,D,E,F,G}. F =
{AB, ACDE, EFG} • Dùng kết quả của ví dụ ở phần tách bảo
• Tìm một khoá tối thiểu của R: toàn tập phụ thuộc hàm ta có một phép
K0 = ABCDEFG tách R thành 3 sơ đồ con R1 = AB, R2=
K1 = K0 do nếu loại A thì BCDEFG U không ACDE, R3 = EFG
thuộc F+
K2 = K1 \{B} = ACDEFG do ACDEFG U thuộc F+ • Do khoá ACDF không nằm trong bất kỳ một
K3 = K2 do nếu loại C thì ADEFG U không thuộc sơ đồ con nào trong 3 sơ đồ con trên, ta lập
F+ một sơ đồ con mới R4 = ACDF
K4 = K3 do nếu loại D thì ACEFG U không thuộc
F+ • Kết quả cuối cùng ta có phép tách R thành
K5 = K4 \{E} = ACDFG do ACDFG U thuộc F+ 4 sơ đồ con {R1, R2, R3, R4} là một phép
K6 = K5 do nếu loại F thì ACDG U không thuộc tách không mất mát thông tin và bảo toàn
F+
K7 = K6 \{G} = ACDF do ACDF U thuộc F+ tập phụ thuộc hàm
63 64
• Vậy khoá tối thiểu cần tìm là ACDF
16
10/11/2019
Tách không mất mát thông tin về BCNF Tách không mất mát thông tin về BCNF (tiếp)
• Vào: Sơ đồ quan hệ R, tập phụ thuộc hàm F. • Các ràng buộc toàn vẹn:
• Ra: phép tách không mất mát thông tin bao gồm
một tập các sơ đồ con ở BCNF với các phụ thuộc – CCSJDPQV, JPC, SDP, JS
hàm là hình chiếu của F lên sơ đồ đó.
• Cách tiến hành CSJDPQV
– Giả sử R không ở BCNF, XR, A là một thuộc tính trong R,
XA là một pth gây ra vi phạm BCNF. Tách R thành R-A SDP
và XA
– Nếu cả R-A và XA chưa ở BCNF, tiếp tục thực hiện việc SDP CSJDQV
tách như trên.
• Ví dụ:
JS
– Contracts(contractid, supplierid, projectid, deptid, partid,
qty, value)
– Viết gọn là CSJDPQV SJ CJDQV
65 66
17
10/11/2019
(René Bazin)
69 70
18