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) (LR)
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
(R1R2) ->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
R1R2->->R1-R2 hoặc R1R2->->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.