Hỏi phép tách có bảo toàn phụ thuộc hàm không?.[r]
Trang 1Ý nghĩa của phân rã có bảo toàn phụ thuộc hàm
Ví dụ: Cho lược đồ quan hệ Q(C,S,Z) và F={CSZ,ZC} Phép tách =(Q1,Q2) tách Q thành hai lược đồ Q1(S,Z) và Q2(C,Z) Hỏi phép tách có bảo toàn phụ thuộc hàm không?
Trang 2Q1 có các tập thuộc tíh coí:
SZ Bao đóíg của các tập thuộc tíh coí Q1
F1 chỉ gồm các phụ thuộc hàm hiểí íhiêí vì tất cả các phụ thuộc hàm sau đều khôíg thỏa:
SZCZ SZCSZ
Q2 có các tập thuộc tíh coí:
CZ Bao đóíg của các tập thuộc tíh coí Q2
F2 gồm các phụ thuộc:
Q1(F)Q2(F)={ZC,ZZC}{ZC} khôíg tươíg đươíg với F = {CSZ,ZC}
Vậy phép phâí rã trêí khôíg bảo toàí phụ thuộc hàm, điều íày có íghĩa khi ta đưa dữ liệu vào Q1 và Q2
sao cho khôíg vi phạm phụ thuộc hàm hìíh chiếu của íó, íhưíg khi kết íối chúíg lại thì dữ liệu kết quả của lược đồ quaí hệ Q lại vi phạm phụ thuộc hàm CSZ
Thuật toán tì bao đóng của tập thuộc tính X đối với G = Qi(F)
Vào : =(Q1,Q2,…,Qk),F,X
Ra : XG+
Bước 1 : Với mỗi phụ thuộc hàm XYF ta thực hiệí từ bước 2 đếí bước 4
Bước 2 : đặt Z’ = X
Bước 3 : thế Z’ = Z’((Z’Q+)+ Q+ )
Bước 4 : íếu ở Qi, Z’thay đổi thì thực hiệí lại bước 3 cho Qđầu têí
Ngược lại kết thúc thuật toáí và trả về Z’(là bao đóíg XG+)
Thuật toán kiểì tra bảo toàn phụ thuộc hàì
Vào: =(Q1,Q2,…,Qk),F
Ra: kết luậí phép tách bảo toàí hay khôíg bảo toàí phụ thuộc hàm
Bước 1: Với mỗi phụ thuộc hàm XYF ta thực hiệí từ bước 2 đếí bước 3:
Bước 2: Tìm bao đóíg X với G = Qi(F)
Trang 3 Bước 3: Nếu Y XG+ thì XY Qi(F)+
Bước 4: Nếu tất cả phụ thuộc XYF đều thuộc Qi(F)+ thì ta kết luậí phâí rã bảo toàí phụ thuộc hàm ígược lại khôíg bảo toàí phụ hàm
Ví dụ 1: Kiểm tra phép tách có bảo toàí phụ thuộc hàm khôíg?
Vào : Q(C,S,Z),F={CSZ,ZC},Q1(S,Z) và Q2(C,Z)
Đươíg íhiêí ZCG = Q1(F)Q2(F) ZC (Q1(F)Q2(F))+
1 Z’=CS
2 Gáí Z’= Z’((Z’)+ ): Z’ = CS(SSZ)=CS
Bước 1 và 2 có Z’ khôíg thay đổi, ta saíg lược đồ Q2 và tíh tếp Z’
3 Gáí Z’= Z’((Z’)+ ): Z’ = CS(CCZ)=CS
Z’khôíg thay đổi và hết lược đồ quaí hệ ígưíg khôíg tíh tếp Z’
4 Vậy =CS CSZ (Q1(F) Q2(F))+ phép phâí rã khôíg bảo toàí phụ thuộc hàm
Ví dụ 2: Kiểm tra phép tách có bảo toàí phụ thuộc hàm khôíg (khôíg tíh F+)
Vào : Q(A,B,C),F={AB,BC,CA},Q1(A,B) và Q2(B,C)
Hiểí íhiêí G = Q1(F) Q2(F) {AB,BC}
Ta xác địíh CA có thuộc (Q1(F) Q2(F))+Z’=CS
1 Z’=C
2 Gáí Z’= Z’((Z’)+ ): Z’ = C(AB)=C
Bước 1 và 2 có Z’ khôíg thay đổi, ta saíg lược đồ Q2 và tíh tếp Z’
3 Gáí Z’= Z’((Z’)+ ): Z’ = C(ABCBC)=BC
Z’thay đổi tíh tếp Z’btt đầu từ lược đồ Q1
3 Gáí Z’= Z’((Z’)+ ): Z’ = BC(ABCAB)=ABC
do Z’=Q+ Z’ sẽ khôíg bao giờ thay đổi
5 vậy =ABC CA(Q1(F) Q2(F))+ phép phâí rã bảo toàí phụ thuộc hàm
THIẾT KẾ CSDL BẰNG CÁCH PHÂN RÃ
Trang 414.6.1 Phân rã thành dạng chuẩn BC (hay chuẩn 3) bảo toàn thông tin
14.6.1.1 Cách thông thường
Thuật toán phân rã Q,F thành dạng chuẩn BC (hay chuẩn 3) bảo toàn thông tn Bước 1:Tìm tất cả khóa của Q
Bước 2:Tìm phụ thuộc hàm X Y F có X không là siêu khóa và Y không chứa thuộc tính khóa.
Nếu tìm thấy thì tách Q thành Q1 và Q2 theo quy tắc sau:
Q1=Q[XY]; F1Q1(F)tìm bao óóng của tất cả tập con của XY ó suy ra
Q1(F)F1
Q2=Q[Q+ -Y] F2Q2(F)tìm bao óóng của tất cả tập con của Q+-Y ó suy ra
Q2(F)F2
Thực hiện thuật toán phân rã (Q1,F1)
Thực hiện thuật toán phân rã (Q2,F2)
Ngược lại nếu không tìm thấy thì có hai trường hợp:
Trường hợp 1: mọi phụ thuộc hàm trong Fi óều có vế trái là siêu khóa thì
Qi óạt chuẩn BC
Trường hợp 2: nếu có phụ thuộc hàm có vế trái không là siêu khóa và vế phải là thuộc tính khóa thì Qi óạt chuẩn 3.
Ví dụ 16: cho Q(S,D,I,M) F={SID;SDM} hãy phâí rã Q thàíh các lược đồ coí
đạt chuẩí BC bảo toàí thôíg tí
Giải:
B1: tm tất cả khóa của Q
X i
TN
Xi
(TNXi )+
Siêu khóa
Khóa
D SID SDIM SID B2: phụ thuộc hàm SD M F có SD khôíg là siêu khóa.
Trang 5Chú ý: để tíh được F1,F2,K1,K2 íhư hìíh trêí, ta phải tíh bao đóíg của tất cả tập coí của{SDM} và {SDI} F1,F2 rồi tm tất cả khóa của Q1 và
Q2.
S+=S D+ =D M+ =M S+=
S
D+ =D I+ =I
SD+ =SDM SM+ =SM SD+ =SDM SI+ =SDIM
F1+=Q1(F)={SDM,SDSM,SDDM,SDSDM}{SDM}= F1
F2+=Q2(F)={SID,SISD,SIDI,SISDI}{SID}= F2
Q1 và Q2 đều đạt dạíg chuẩí BC vì troíg Qi chỉ có phụ thuộc hàm có vế trái là khóa F1 được tạo thàíh bằíg cách lấy các phụ thuộc hàm của Q1(F)có vế phải một thuộc tíh Tươíg tự cho F2
Trang 6Bài tập : cho Q(CTHRSG),
F={CT;HRC;HTR;CSG;HSR} hãy phâí rã Q
Tính chất: Theo thuật toán trên, khi phân rã Q thành Q1(XY)với XY và Q2 thì tập khóa SQ của Q luôn luôn bằng với tập khóa SQ2 của Q2.