Chuong 1-Mo hinh quan he

Download Report

Transcript Chuong 1-Mo hinh quan he

 Giới thiệu
 Khái niệm
 Phụ thuộc hàm
 Khoá của lược đồ quan hệ
 Lý thuết phân tách
 Chuẩn hoá lược đồ quan hệ
 Phụ thuộc đa trị và dạng chuẩn 4
 Phụ thuộc kết nối và dạng chuẩn 5
 Tổ chức của mô hình
 Các tính chất
 Các thao tác trên mô hình dữ liệu
 Thiết kế các dữ liệu theo chuẩn
 Mô hình quan hệ do Codd đề xuất năm 1970.
 Có kết quả về lý thuyết khá tốt
 Đến nay sử dụng rộng rãi trong các HQTCSDL
 Cũng có những hạn chế nhất định
 Cho U={A1, A2, …, An} là tập các thuộc tính trên các





miền trị dom(A1), dom(A2), …, dom(An)
Một n-bộ trên U là một bộ t=(a1, a2, .., an), với ai 
Dom(Ai), i=1,…,n.
Một quan hệ trên U là một tập các n-bộ
Cách khác: một quan hệ r trên U là tập con của tích Đề
Các: dom(A1) ×dom(A2)×…×dom(An)
Một lược đồ quan hệ trên U là tập các thuộc tính và
các ràng buộc. Ký hiệu R(U) hay R(A1, A2, …,An).
Ví dụ: SinhVien(MaSV, HoTen, GioiTinh, NgaySinh)
 Cho t là một bộ trên r, X, Y  U.
 t[X] là bộ gồm những giá trị của t trên tập thuộc tính X.
 XY là tập các thuộc tính của X hợp Y.
 Là một dạng phụ thuộc dữ liệu trên mô hình quan hệ
 Cho X, Y  U:
 Quan hệ r thoả phụ thuộc hàm X xác định Y, kí hiệu X-
>Y nếu mọi bộ trong r giống nhau trên X thì cũng giống
nhau trên Y.
 Lược đồ R(U) thoả phụ thuộc hàm X->Y nếu mọi thể
hiện của nó thoả phụ thuộc hàm X->Y.
 Ví dụ: R(MaNV, HoTen, ngach, bac, hsluong) thì thoả
pth: ngach,bac->hsluong, MaNV->HoTen
 Lược đồ R thoả tập các pth F, ký hiệu R = (U,F).
 Cho R=(U,F). Một pth f được suy dẫn logic từ F nếu R
thoả các pth của F thì R cũng thoả f.
 Ký hiệu F |= f
 Tập tất cả pth suy dẫn logic từ F: F* = { f : F |= f }
 Vấn đề: làm sao xác định F*?
 Mục đích để suy diễn các phụ thuộc hàm.
 Hệ tiên đề:
 FD1 (phản xạ): Nếu Y X thì X->Y
 FD2 (gia tăng): Nếu X->Y thì XZ->YZ với mọi Z U
 FD3 (bắc cầu): Nếy X->Y và Y->Z thì X->Z
 Pth g được suy diễn từ F nhờ các tiên đề, ký hiệu F|-g
 Ký hiệu F+= { g : F |- g }
 Vấn đề: có thuật toán tính F+? và F+=F*?
 Định lý 1.1. Hệ quy tắc suy diễn của Armstrong là:
 a) Xác đáng (sound), tức F+  F* và
 b) Đầy đủ (complete), tức F+ = F*.
 Bài tập 1: Chứng minh tính xác đáng của hệ tiên đề
Armstrong.
 Bài tập 2: Chứng minh tính đầy đủ của hệ tiên đề
Armstrong.
 Bài tập 3: Chứng minh các quy tắc sau:
 FD4 (quy tắc hợp): Nếu X->Y và P->Q thì XP-> YQ
 FD5 (quy tắc giả bắc cầu): Nếu X->Y và WY->Z thì
WX->Z
 FD6 (quy tắc tách): Nếu X->Y thì X->Z với mọi Z  Y
 Cho R = (U, F), f là một pth trên U, quyết định f thuộc
F+?
 Bao đóng tập thuộc tính:
XF+ = { A : A  U và X->A  F+ }
 Định lý 1.2. Cho lược đồ R=(U, F) và f là một pth trên
U có dạng X->Y. Khi đó f  F+ khi và chỉ khi Y  X+.
 Bài tập 4. Chứng minh định lý 1.2.
Thuật toán 1.1
Vào: X  U, F là tập các pth
Ra: X+
Phương pháp:
NEWX:=X;
Repeat
OLDX:=NEWX;
for each P->Q in F do
if (P NEWX) then
NEWX:=NEWX  Q;
Until NEWX=OLDX
XPLUS:=NEWX;
Return XPLUS;




 Định lý 1.3. Thuật toán tìm bao đóng tập thuộc tính là
đúng đắn và có độ phức tạp thời gian là O(n.p.
min(n,p)), với n=|U|, p=|F|.
 Bài tập 5. Cài đặt thuật toán tìm bao đóng của tập
thuộc tính.
 Bài tập 6. Chứng minh định lý 1.3
 Cho R=(U,F), X  U. X được gọi là khoá của R nếu
thoả mãn 2 điều kiện:
 X->U thuộc F+
 Không tồn tại X’ là tập con thực sự của X mà X’->U
thuộc F+.
 Nếu X thoả điều kiện đầu thì X gọi là siêu khoá.
 Ví dụ: Cho U={A,B,C,D,E}, F={AB->C, AD->BE, C->D}
 1 khoá của lược đồ quan hệ là: AB.
 Thuật toán 1.2
 Vào: U, F
 Ra: Khoá K
 Phương pháp:
K:=U;
For each A in U do
if A  (K\{A})+ then K:=K\{A};
Return K;
Bài tập 7. Cài đặt thuật toán 1.2 tìm 1 khoá của lược đồ
quan hệ.
 Gọi L, R tương ứng là hợp tất cả các vế trái, phải trong
các phụ thuộc hàm của tập F.
 Bài tập 8. Chứng minh các tính chất sau.
 Nếu (X\{A}) -> A  F+ thì X không là khoá
 Nếu A L và X->Y  F+ thì X\{A}->Y\{A}  F+.
 Định lý 1.4 [H.Thuần, L.V.Bào] Nếu X là khoá thì
(U\R)  X  (U\R)  (LR)
Chứng minh:
a) Nếu X là khoá thì (U\R)  X
X là khoá nên X+=U.
Mặc khác theo thuật toán tìm bao đóng thì:
X+  X  R  U.
Vậy X  R = U. Hay (U\R)  X.
b) Nếu X là khoá thì X  (U\R)  (L  R)
Rõ ràng X  U = (U\R)  (L  R)  (R\L)
Ta chứng minh X  (R\L) = 
Giả sử có A  X, A  R và A  L.
Vì X là khoá nên X->L
Vì A  L nên X\{A}->L
Dễ thấy L->R và R->A nên suy ra X\{A}->A (mâu thuẫn)
 Hệ quả 1.1. Nếu R\L=  thì lược đồ có 1 khoá là U.
 Hệ quả 1.2. Nếu R  L =  thì lược đồ có khoá duy
nhất là U\R.
Thuật toán 1.3
2. X:=U\R;
3. Nếu X+ = U thì chuyển sang bước 5
4. X:=(U\R)  (L  R);
5. Với mỗi Ai  (L  R) thực hiện
X:=X\{Ai};
Nếu X+ ≠ U thì X:=X  {Ai};
6. Kết luận X là khoá
Bài tập 9: Cài đặt thuật toán 1.3 tìm 1 khoá của lược đồ
quan hệ.
1.
Định lý 1.4 [Lucchesi, Osborn] Cho S=(U,F) là một lược
đồ quan hệ. Gọi K là một tập khác rỗng các khoá của S.
Điều kiện cần và đủ để họ 2U\K chứa khoá của S là có
một phần tử K  K và tồn tại một phụ thuộc hàm
(Li->Ri)  F sao cho T = Li  (K\Ri) không chứa một
phần tử nào thuộc K.
 Thuật toán 1.5: Tìm tất cả các khoá
 Vào: S=(U, F)
 Ra: tập các khoá của S
 Phương pháp:
K:={Khoá(U,F,U)};
For each K in K do
for each (Lj->Rj) in F do
T:=Lj  (K\Rj);
test:=true;
for each H in K do
if T includes H then test:=false;
if test then K:=K  {Khoá(U,F,T)}
Return K;
 Định lý 1.5. Thuật toán 1.5 là đúng đắn và có độ phức
tạp là O(|F||K||U|(|K|+|U|).
 Cho R là một lược đồ quan hệ. Một phân tách của R là




việc thay thế lược đồ R bằng một họ các lược đồ R1,
R2, …, Rm sao cho Ri=R.
Ký hiệu (R1, R2,…,Rm)
Cho (R1, R2, …, Rm) là một phân tách của
R(A1,A2,…An) và r là một thể hiện trên R.
Gọi m(r) là ánh xạ được xác định bởi m(r) =
r1*r2*…*rm
Trong đó ri= πRi(r), với i=1,2,…,m.
 Ta có các tính chất sau:
 r  m(r)
 Nếu s = m(r) thì πRi(s) = ri
 m(m(r)) = m(r)
 Bài tập 10. Chứng minh các tính chất trên.
 Phân tách không mất thông tin: Phân tách (R1,…,Rm)
của lược đồ quan hệ (R,F) nếu với mọi thể hiện r của R
mà thoả F thì r=m(r).

 Thuật toán 1.6
 Vào: (R, F) và (R1, …,Rm)
 Ra true nếu phân tách không mất thông tin và ngược
lại
 Phương pháp:
1. Lập bảng m hàng n cột, các phần tử được xác định
như sau: pt(i,j) = aj nếu Aj  Ri, bij nếu ngược lại.
2. Biến đổi bảng:
Với mỗi X->Y thuộc F nếu có 2 hàng giống nhau trên
X mà khác nhau trên Y thì làm cho giống nhau (ưu
tiên cho a)
Lặp lại cho đến khi không biến đổi bảng được nữa
3. Nếu bảng chứa hàng toàn ký hiệu a thì phân tách không
mất thông tin. Ngược lại phân tách mất thông tin.
Ví dụ: dùng thuật toán 1.6 kiểm tra với lược đồ quan hệ ({A,
B, C, D, E, F}, {A->C, B->C, C->D, DE->C, CE->A}) phép phân
tách (AD, AB, BE, CDE, AE) có mất thông tin không?
Bài tập 11: Chứng minh thuật toán 1.6 đúng đắn
Bài tập 12: Chứng minh định lý sau.
Định lý 1.6. Cho lược đồ (R,F). Khi đó phân tách (R1, R2) là
phân tách không mất thông tin nếu và chỉ nếu
(R1R2) ->R1\R2 hay (R1  R2) ->R2\R1.
 Cho (R, F) và Z  R. Hình chiếu của F lên Z, ký hiệu
πZ(F) = {X->Y: (X->Y)  F+ và XY  Z}
 Phân tách (R1, …, Rm) của (R, F) được gọi là bảo toàn
tập F nếu: (πRi(F))+ = F+
 Bài tập 12: Cho (R,F) và phân tách (R1,…,Rm) có kết nối
không tổn thất. Với mỗi i gọi Fi = πRi(F) và giả sử (S1,
…, Sk) là một phân tách của Ri có kết nối không tổn
thất với Fi. CMR phân tách (R1,..Ri-1, S1,…,Sk,
Ri+1,..Rm) có kết nối không tổn thất đối với F.
 Bài tập 13: Cài đặt thuật toán 1.6
 Mục đích của chuẩn hoá:
 Tránh dư thừa dữ liệu
 Tránh dị thường khi cập nhật
 Cho lược đồ (R, F), Ai là một thuộc tính. Ai là thuộc
tính khoá nếu Ai nằm trong 1 khoá nào đó của R.
 Phụ thuộc hàm X->A là pth đầy đủ nếu không tồn tại
Y  X mà Y->A
 Định nghĩa 1: Lược đồ (R, F) là ở dạng chuẩn 1 (1NF)
nếu miền trị của các thuộc tính đều nguyên tố.
 Định nghĩa 2: Lược đồ (R, F) là ở dạng chuẩn 2 (2NF)
nếu:
 R ở dạng chuẩn 1NF
 Mọi thuộc tính không khoá đều phụ thuộc hàm đầy đủ
vào mỗi một khoá.
 Ví dụ:
 Lược đồ ({A,B,C,D}, {A->B, B->C}) là 2NF.
 Lược đồ ({S,A,I,P}, {S->A, SI->P}) không là 2NF
 Định nghĩa 3: Lược đồ (R,F) được gọi là 3NF nếu pth
X->A đúng trên R và A X thì X phải là siêu khoá,
hoặc A phải là thuộc tính khoá.
 Ví dụ:
 Lược đồ ({S,A,I,P},{S->A, SI->P}) không là 3NF
 Lược đồ ({C, S, Z},{CS->Z, Z->C}) có 2 khoá SC và SZ. Do
đó là 3NF.
 Đinh nghĩa 4: Lược đồ (R,F) là ở dạng chuẩn Boyce
Codd (BCNF) nếu phụ thuộc hàm X->A đúng trên R
thì X phải là siêu khoá.
 Ví dụ:
 Lược đồ ({A,C,D,E,I,B},{ACD→EBI,CE→AD}) BCNF
 Lược đồ ({A,B,C,D},{AB → C, D → B,C→ ABD}) đạt
chuẩn 3NF nhưng không là BCNF
 Bài tập 14: Chứng minh mọi lược đồ thoả 3NF cũng
thoả 2NF
 Bài tập 15: Chứng minh mọi lược đồ thoả BCNF cũng
thoả 3NF
 Cho F và G là hai tập pth trên U.
 F phủ G nếu G+  F+
 F tương đương G nếu F+=G+.
 Bài tập 16. Chứng minh F tương đương G khi và chỉ khi
mọi pth của F đều thuộc G+ và mọi phụ thuộc hàm của G
đều thuộc F+.
 Cho F, G là hai tập pth trên U. F là phủ tối thiểu của G nếu:




F là phủ của G
Mọi pth của F có dạng X->A
F không chứa pth dư thừa:  f  F, (F\{f})+  F+
Các pth của F có vế trái không rút gọn được.
 Bài tập 17. Xây dựng thuật toán tìm phủ tối thiểu.
 Bài tập 18. Cài đặt thuật toán tìm phủ tối thiểu.
 Thuật toán 1.7
 Vào: R, F (phủ tối thiểu)
 Ra: 1 phân tách của R bảo toàn F, các lược đồ con 3NF
 Phương pháp:
Nếu có những thuộc tính không xuất hiện ở bất kỳ pth nào
của F thì tạo một lược đồ con gồm các thuộc tính này và bỏ
chúng khỏi R.
Nếu có 1 pth thuộc F chứa tất cả các thuộc tính thì dừng.
Trường hợp còn lại với các pth có dạng X->A1, X->A2, …,
X->Ak thì tách thành lược đồ con XA1…Ak.
Bài tập 18. Chứng minh thuật toán 1.7 đúng đắn.
 Thuật toán 1.8
 Vào: R, F
 Ra: 1 phân tách của R bảo toàn F, các lược đồ con BCNF
 Phương pháp:
Ban đầu phân tách gồm R
Lặp khi các lược đồ con chưa là BCNF:
+ Nếu lược đồ con Ri chưa là BCNF thì tồn tại pth X->A
mà X không phải khoá và A X.
+ Tách Ri thành XA và Ri\XA.
 Bài tập 19. Chứng minh thuật toán 1.8 là đúng đắn.
 Định nghĩa: Cho lược đồ R=(U,F), X,Y U, Z=U\XY.
Lược đồ R thoả phụ thuộc đa trị X xác định Y, ký hiệu
X->->Y nếu với mọi quan hệ r trên R, với hai bộ bất kỳ
t1, t2  r mà t1[X]=t2[X] thì tồn tại t3  r sao cho
t3[X]=t1[X] và t3[Z]=t2[Z].
 Ví dụ:
Hệ tiên đề đối với phụ thuộc hàm và phụ thuộc đa trị:
FD1 (quy tắc phản xạ cho FD): Nếu X⊇Ythì X→Y
FD2 (quy tắc gia tăng cho FD): Nếu X →Y thì XZ → YZ
FD3 (quy tắc bắc cầu choFD): Nếu X→Y và Y→Z thì X→Z
MVD1 (quy tắc bù cho MVD): Nếu X →→Y thì X→→ (U-(X∪Y))
MVD2 (quy tắc tăng cho MVD): NếuX→→Y và W⊇ Z thì
WX→→YZ
 MVD3 (quy tắc bắc cầu cho MVD): Nếu X→→ Y và Y→→ Z thì
X→→ (Z – Y)
 MVD4 (quy tắc tái tạo cho FD và MVD): Nếu X →Y thì X→→ Y
 MVD5 (quy tắc bắc cầu cho FD và MVD): Nếu X→→ Y và Y→ Z
thì X→→ (Z – Y)






 Định lý 1.8: Hệ tiên đề FD1-FD3 và MVD1-MVD5 là xác
đáng và đầy đủ.
 Bài tập 20. Chứng minh tính đúng đắn của các luật
MVD1-MVD5.
 Bài tập 21. Chứng minh các luật sau:
 Nếu X->->Y thì X->->U-Y
 Nếu X->->Y và X->->Z thì X->->Y Z
 Nếu X->->Y và X->->Z thì X->->Y-Z
 Định nghĩa: Cho lược đồ R=(U,F) với F là tập các pth
và ptdt. Lược đồ R ở dạng chuẩn 4 (4NF) nếu với mọi
phụ thuộc đa trị không tầm thường X->->Y thoả trên
R thì X là siêu khoá.
 Ví dụ: Lược đồ NhanVien({TenNV, TenDuAn,
TenCon}, {TenNV->->TenDuAn, TenNV->->TenCon})
không phải dạng chuẩn 4.
 Bài tập 22. Chứng minh lược đồ R được phân tách
thành R1 và R2 là không mất thông tin khi và chỉ khi
R1R2->->R1-R2 hoặc R1R2->->R2-R1.
 Thuật toán 1.9: Phân tách lược đồ về 4NF
 Vào: R=(U,F)
 Ra: Phân tách R thành các lược đồ con thoả 4NF
 D:={R};
 Khi có một lược đồ quan hệ Q trong D không ở 4NF,
thực hiện:
 Chọn một lược đồ quan hệ Q trong D không ở 4NF;
 Tìm một phụ thuộc đa trị không tầm thường X→→Y
trong Q vi phạm 4NF;
 Thay thế Q trong D bằng hai lược đồ quan hệ (Q – Y) và
(X ∪ Y);
 Định nghĩa: Cho lược đồ R=(U,F), X1, X2, ...,Xk  U.
Lược đồ R thoả phụ thuộc kết nối X1*X2*…*Xk nếu
mọi thể hiện r của R ta có:
πR1(r)*πR2(r)* ...*πRk(r) = r
 Phụ thuộc kết nối X1*X2*...*Xk là tầm thường nếu có
Xi=U.
 Định nghĩa: Lược đồ R=(U,F), với F gồm các pth, ptdt
và ptkn là ở dạng chuẩn 5 (5NF) nếu mỗi phụ thuộc
kết nối không tầm thường X1*X2*...*Xk thì Xi là siêu
khoá, với i=1,2,…,k.