Phép tách 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 (Trang 67 - 70)

II PHÉP TÁCH KẾT NỐI BẢO TỒN

2Phép tách bảo tồn phụ thuộc hàm

Phần trên chỉ đề cấp vấn đề tách một lược đồ quan hệ Q(A1,A2,…An)thành các lược đồ con

Q1,Q2,…,Qk cịn khơng đề cập đến tập phụ thuộc hàm của các lược đồ con này. Nếu

Q(A1,A2,…An) là lược đồ quan hệ, F phụ thuộc hàm, ρ=(Q1,Q2,…,Qk)là phép phân rã bảo tồn thơng tin, ri là quan hệ của Qi thì tính chất sau thỏa:

+ ri chỉ thỏa các phụ thuộc hàm XYF+ với XYQi +

Nĩi cách khác, tập phụ thuộc hàm của Qi chính là Fi cĩ Fi+={X→Y∈F+| XY⊆Qi+}. Ta cĩ thể hiểu

F được phân rã thành các F1,...,Fk Chứng minh tính chất trên:

Do ri được tách từ r mà r thỏa F+⇒ri thỏa các phụ thuộc hàm X→Y∈F+ với XY⊆Qi +

.Theo định nghĩa phụ thuộc hàm, đương nhiên ri khơng thỏa các phụ thuộc hàm X→Y∈F+ với XY⊄Qi

+

.

Ngồi ra ri khơng thỏa bất kỳ một phụ thuộc hàm nào X→Y∉F+ . Thật vậy nếu cĩ X→Y như vậy thì r = r1|><|r2....|><|rn cũng phải thỏa X→Y∉F+. Điều này mâu thuẫn với định nghĩa của tập F+ .

ii Định nghĩa:

Cho phân rã ρ =(Q1,Q2,…,Qk) của một lược đồ quan hệ, và một tập phụ thuộc hàm F. Hình chiếu của F trên một tập các thuộc tính Qi

+ ký hiệu ΠQi(F) là tập các phụ thuộc hàm X → Y ∈ F+ sao cho XY ⊆ Z.

ΠQi(F)=Fi +

={X → Y| X → Y ∈ F+ và XY ⊆ Qi}

Ta nĩi phân rã ρ bảo tồn tập phụ thuộc hàm F nếu

F ≡ ∪ ΠQi(F) ⇔ F+ = (∪ ΠQi(F))+ với i=1..k

Hệ quả: F+ ⊇ (∪ ΠQi(F))+ với i=1..k

Nhận xét: từ hệ quả trên ta suy ra: để xác định phép phân rã ρ =(Q1,Q2,…,Qk) cĩ bảo tồn phụ thuộc hàm hay khơng, với mỗi phụ thuộc hàm X→Y∈F ta xác định xem nĩ cĩ là thành viên của tập phụ thuộc hàm G = ∪ ΠQi(F) hay khơng. Ta khơng cần xác định chiều ngược lại.

Ví dụ12: Cho lược đồ quan hệ Q(A,B,C) và F={A→B,B→C,C→A}. Phép phân rã ρ=(Q1,Q2)

tách Q thành hai lược đồ quan hệ Q1(A,B) và Q2(B,C). Hãy tính hình chiếu của F trên Q1 + và

Q2+.Phép phân rã cĩ bảo tồn phụ thuộc hàm F khơng?

Giải: về nguyên tắc ta cĩ thể giải bài tốn theo các bước dưới đây Bước 1: Kê tất cả tập con của Q+

A B C

∅ A B C

AB AC

BC ABC

Bước 2: Tính bao đĩng của các tập con của Q+

∅+

AB+ =ABC AC+ =ABC BC+ =ABC ABC+ =ABC Bước 3: Tính F+ A→B B→A C→A AB→ABC AC→B BC→A A→AB B→AB C→B AB→C AC→AB BC→AB A→C B→C C→AB AB→BC AC→BC BC→AC (adsbygoogle = window.adsbygoogle || []).push({});

A→AC B→AC C→AC AB→ABC AC→ABC BC→ABC A→BC B→BC C→BC

A→ABC B→ABC C→ABC

Bước 4: Tính ΠQ1(F), ΠQ2(F)

ΠQ1(F)= F1 +

={A→B,A→AB,B→A,B→AB}≡{A→B,B→A} (chỉ lấy pth cĩ vế phải 1 tt) ΠQ2(F)= F2

+

={B→C,B→BC,C→B,C→BC}≡{B→C,C→B}(chỉ lấy pth cĩ vế phải 1 tt) Bước 5:

G = ΠQ1(F)∪ ΠQ2(F)={A→B,A→AB,B→A,B→AB,B→C,B→BC,C→B,C→BC}

F={A→B,B→C,C→A} cĩ A→B, B→C đều là thành viên của G, cịn C→A cĩ là thành viên của G hay khơng ta tính CG

+

. CG +

=ABC ⇒ C→A cũng là thành viên của G. Vậy phép phân rã trên bảo tồn phụ thuộc hàm.

Bài tốn trên cĩ thể được giải theo các bước đơn giản sau cho từng lược đồ quan hệ con: Tính cho Q1

Bước 1: Kê tất cả tập con của Q1 +

A B

∅ A B AB

Bước 2: Tính bao đĩng của các tập con của Q1 + ∅+ =∅ A+=ABC B+ =ABC AB+ =ABC Bước 3: Tính F1+=ΠQ1(F) A→B B→A A→AB B→AB Tính cho Q2

Bước 4: Kê tất cả tập con của Q2 +

B C

∅ B C BC

Bước 5: Tính bao đĩng của các tập con của Q2+ ∅+ =∅ B+=ABC C+ =ABC BC+ =ABC Bước 6: Tính F2 + =ΠQ2(F) B→C C→B B→BC C→BC Bước 7:

F={A→B,B→C,C→A} cĩ A→B, B→C đều là thành viên của G cịn C→A cĩ là thành viên của G hay khơng ta tính CG

+

. CG +

=ABC ⇒ C→A cũng là thành viên của G. Vậy phép phân rã trên bảo tồn phụ thuộc hàm.

iii Ý nghĩa của phân rã cĩ bảo tồn phụ thuộc hàm

Ví dụ 13: Cho lược đồ quan hệ Q(C,S,Z) và F={CS→Z,Z→C}. 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 tồn phụ thuộc hàm khơng? Giải:

Q1 cĩ các tập thuộc tính con:

S Z (adsbygoogle = window.adsbygoogle || []).push({});

∅ S Z SZ

Bao đĩng của các tập thuộc tính con Q1 + ∅+

=∅ S+=S Z+ =ZC

SZ+ =CSZ

F1+ chỉ gồm các phụ thuộc hàm hiển nhiên vì tất cả các phụ thuộc hàm sau đều khơng thỏa:

Z→C SZ→C Z→ZC SZ→CS SZ→CZ SZ→CSZ Q2 cĩ các tập thuộc tính con: C Z ∅ C Z CZ

Bao đĩng của các tập thuộc tính con Q2+ ∅+ =∅ C+=C Z+ =ZC CZ+ =CZ F2 + gồm các phụ thuộc: Z→C Z→ZC

ΠQ1(F)∪ΠQ2(F)={Z→C,Z→ZC}≡{Z→C} khơng tương đương với F = {CS→Z,Z→C}

Vậy phép phân rã trên khơng bảo tồn phụ thuộc hàm, điều này cĩ nghĩa khi ta đưa dữ liệu vào Q1

và Q2 sao cho khơng vi phạm phụ thuộc hàm hình chiếu của nĩ, nhưng khi kết nối chúng lại thì dữ liệu kết quả của lược đồ quan hệ Q lại vi phạm phụ thuộc hàm CS→Z

ΠQ1(F)={PTHHN} ΠQ2(F)={Z→C, Z→ZC} F={CS→Z,Z→C}

Q1 (S Z) Q2 (C Z) Q (C S Z)

s1 z1 c1 z1 c1 s1 z1

s1 z2 c1 z2 c1 s1 z2

iv 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 XYF 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 XYF 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ì 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ậ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 (adsbygoogle = window.adsbygoogle || []).push({});

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 + G

CS =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

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. 5. vậy +

G

C =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 (Trang 67 - 70)