Thuật tốn kiểm tra bảo tồn phụ thuộc hàm

Một phần của tài liệu Giáo trình Cơ sở dữ liệu nâng cao (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 36 - 37)

Q đạt chuẩn BC nếu và chỉ nếu mọi phụ thuộc hàm XAF với AX đều cĩ X là siêu khĩa

6.2.2.4 Thuật tốn kiểm tra bảo tồn phụ thuộc hàm

Thuật tốn tìm 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 XYF ta thực hiện từ bước 2 đến bước 4 Bước 2: đặt Z’ = X Bước 3: thế Z’ = Z’((Z’  i Q )+  i Q )

Bước 4: nếu ở Qi, Z’thay đổi thì thực hiện lại bước 3 cho Qđầu tiên Ngược lại kết thúc thuật tốn và trả về Z’(là bao đĩng XG+) Thuật tốn kiểm tra bảo tồn phụ thuộc hàm

Vào:  =(Q1,Q2,…,Qk),F

Ra: kết luận phép tách  bảo tồn hay khơng bảo tồn phụ thuộc hàm

Bước 1: Với mỗi phụ thuộc hàm XYF ta thực hiện từ bước 2 đến bước 3: Bước 2: Tìm bao đĩng XG+ với G =  Qi(F)

Bước 3: Nếu Y  XG+ thì XY Qi(F)+

Bước 4: Nếu tất cả phụ thuộc XYF đều thuộc Qi(F)+ thì ta kết luận phân rã  bảo tồn phụ thuộc hàm ngược lại  khơng bảo tồn phụ hàm

Ví dụ 14: thực hiện lại ví dụ 13, nghĩa là kiểm tra phép tách cĩ bảo tồn phụ thuộc hàm khơng? Vào: Q(C,S,Z),F={CSZ,ZC},Q1(S,Z) và Q2(C,Z) Đương nhiên ZCG = Q1(F)Q2(F) ZC  (Q1(F)Q2(F))+ 1. Z’=CS 2. gán Z’= Z’((Z’  1 Q )+   1 Q ): Z’ = CS(SSZ)=CS

Bước 1 và 2 cĩ Z’ khơng thay đổi, ta sang lược đồ Q2 và tính tiếp Z’ 3. gán Z’= Z’((Z’ 

2

Q )+  

2

Q ): Z’ = CS(CCZ)=CS

Z’khơng thay đổi và hết lược đồ quan hệ  ngưng khơng tính tiếp Z’

4. Vậy CSG=CS CSZ  (Q1(F)  Q2(F))+ phép phân rã khơng bảo tồn phụ thuộc hàm.

Ví dụ 15: thực hiện lại ví dụ 12 với nội dung kết luận phép tách  cĩ bảo tồn phụ thuộc hàm khơng (khơng tính F+)

Vào: Q(A,B,C),F={AB,BC,CA},Q1(A,B) và Q2(B,C) Hiển nhiên G = Q1(F)  Q2(F)  {AB,BC}

Ta xác định CA cĩ thuộc (Q1(F)  Q2(F))+ 1. Z’=C 2. gán Z’= Z’((Z’  1 Q )+   1 Q ): Z’ = C(AB)=C

Bước 1 và 2 cĩ Z’ khơng thay đổi, ta sang lược đồ Q2 và tính tiếp Z’ 3. gán Z’= Z’((Z’ 

2

Q )+  

2

Q ): Z’ = C(ABCBC)=BC Z’thay đổi  tính tiếp Z’bắt đầu từ lược đồ Q1 Z’thay đổi  tính tiếp Z’bắt đầu từ lược đồ Q1

4. gán Z’= Z’((Z’ 

1

Q )+  

1

Q ): Z’ = BC(ABCAB)=ABC do Z’=Q+  Z’ sẽ khơng bao giờ thay đổi. do Z’=Q+  Z’ sẽ khơng bao giờ thay đổi.

5. vậy CG=ABC  CA(Q1(F)  Q2(F))+ phép phân rã bảo tồn phụ thuộc hàm.

Một phần của tài liệu Giáo trình Cơ sở dữ liệu nâng cao (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 36 - 37)

Tải bản đầy đủ (PDF)

(49 trang)