Tải bản đầy đủ (.pptx) (31 trang)

Bai 12 Phu Cua Tap Phu Thuoc Ham

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.22 MB, 31 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

BÀI 12: PHỦ CỦA TẬP PHỤ THUỘC HÀM



<i><b>12.1: Định nghĩa tương đương </b></i>



Định lý: Cho F là tập các phụ thuộc hàm trên U và f là một
phụ thuộc hàm trên U, khi đó 2 việc sau tương đương


(1)F├f
(2)F╞f


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<i><b>12.2: Các tập phụ thuộc hàm tương đương</b></i>


Cho F và G là hai tập phụ thuộc hàm trên tập thuộc tính U, ta nói rằng tập phụ thuộc hàm F tương đương với tập
phụ thuộc hàm G nếu và chỉ nếu F+ =G+. Nếu F+ =G+ thì ta nói F là phủ của G và ngược lại G là phủ của F.


*<i><b>Thuật toán xác định F và G có tương đương hay khơng?</b></i>


Bước 1<i>:</i> Với mỗi phụ thuộc hàm X→Y của F ta xác định xem X→Y có được suy dẫn từ G khơng?


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Ví dụ: Cho lược đồ quan hệ có:
F={A→BC, A→D, CD→E}


G={A→BCE, A→ABD, CD→E}
a) F có tương đương với G khơng?


b) F có tương đương với G’={A→BCDE} khơng?


a) Ta có AG+ = ABCDE


=> Trong G+có A→BC và A→D => F<sub></sub> G+=> F+ <sub></sub>



G+(1)


AF+= ABCDE => trong F+có A→ BCE và A→ABD
=>F+<sub></sub>G => F+ G+(2)


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<i><b>12.3: Phụ thuộc hàm không dư thừa</b></i>


<i><b>12.3.1: Phụ thuộc hàm dư thừa</b></i>



Cho F là tập các phụ thuộc hàm trêu U, f là một phụ thuộc
hàm của F tức là f  F, f được gọi là dư thừa trong F nếu


như (F-f)+ = F+.


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<i><b>* Thuật toán xác định f= X→Y có phải là </b></i>


<i><b>thành viên của F hay khơng?</b></i>



<i>Bước 1</i>: Tạm xóa f khỏi F, gọi G là tập thu được G=F-f,
nếu G  thì chuyển qua bước 2, cịn khơng thì kết thúc


thuật tốn và kết luận f là không dư thừa trong F.


<i>Bước 2</i>: Giả sử f = X→Y nếu G├f tứcY XG+ thì f là dư
thừa trong F còn ngược lại f là khơng dư thừa(là thành


viên).


<i><b>Hay</b></i>


<i>Bước 1</i>: Tính



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<i><b>Ví dụ: </b></i>Cho F={AB→C, C→D, AB→D}


Cho biết AB→D có dư thừa trong F hay không?


<i>Bước 1</i>: G = F-{f} = {AB→C,C→D}


<i>Bước 2: </i>(AB)G+= AB  C = ABC  D = ABCD  D


ÞG├ f


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<i><b>12.3.2: Phủ không dư</b></i>



Cho F và G là 2 tập phụ thuộc hàm trên U, F được gọi là
phủ không dư của G khi và chỉ khi


+ F+ = G+ (F là phủ của G)


+f F thì (F-f)+ <sub></sub> F (tức mọi phụ thuộc hàm trong F
đều không dư thừa)


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<i><b>12.4: Phủ thu gọn</b></i>



<i><b>12.4.1: Phụ thuộc hàm có vế trái dư thừa</b></i>



F là tập các phụ thuộc hàm trên lược đồ quan hệ Q, Z là
tập thuộc tính, Z→Y F. Nói rằng phụ thuộc hàm Z→Y


có vế trái dư thừa ( phụ thuộc khơng đầy đủ ) nếu có một
A  Z sao cho:



F=F-{Z→Y} {(Z-A)→Y}


Ngược lại Z→Y là mọt phụ thuộc hàm có vế trái khơng
dư thừa hay Y phụ thuộc hàm đầy đủ vào Z hay phụ thuộc
hàm đầy đủ.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<i><b>* Thuật toán loại khỏi F các phụ thuộc </b></i>


<i><b>hàm có vế trái dư thừa</b></i>



<i>Bước 1: </i>Lần lượt thực hiên bước 2 cho các phụ thuộc hàm
Z→Y của F (với các phụ thuộc hàm có vế trái có từ
2 thuộc tính trở lên).


<i>Bước 2: </i>Với mỗi tập con thật sự của X,


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<i><b>12.4.2: Tập phụ thuộc hàm có vế phải một </b></i>


<i><b>thuộc tính</b></i>



Mỗi tập phụ thuộc hàm F đều tương đương với một tập
phụ thuộc hàm G mà vế phải của các phụ thuộc hàm trong
G chỉ gồm một thuộc tính.


Ví dụ:


F={A→BC, B→C, AB→D}
ta suy ra


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<i><b>12.4.3: Tập phụ thuộc hàm không dư </b></i>


<i><b>thừa(phủ khơng dư)</b></i>




Nói rằng F là tập phụ thuộc hàm không dư thừa nếu
không tồn tại F’  F sao cho F’ ≡ F. Ngược lại, F là tập


phụ thuộc hàm dư thừa.
<i>Ví dụ: </i>


<i> </i>Cho F={A → BC, B → D, AB → D}


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<i><b>* Thuật toán loại khỏi F các phụ thuộc </b></i>


<i><b>hàm dư thừa</b></i>



<i> Bước 1:</i> Lần lượt xét các phụ thuộc hàm X → Y của F.


<i> Bước 2: </i>Nếu X → Y là thành viên của F- {X → Y }
thì loại X → Y khỏi F.


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<i><b>12.4.4: Tập phụ thuộc hàm tối thiểu</b></i>



F được gọi là một phụ thuộc hàm tối thiểu (phủ tối
thiểu) nếu F thỏa mãn đồng thời ba điều kiên sau:


1. F là tập phụ thuộc hàm có vế trái không dư thừa.
2. F là tập phụ thuộc hàm có vế phải một thuộc tính.
3. F là tập phụ thuộc hàm khơng dư thừa.


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<i><b>*Thuật tốn tìm phủ tối thiểu của một tập </b></i>


<i><b>phụ thuộc hàm</b></i>



<i>Bước 1:</i> Loại bỏ khỏi F các phụ thuộc hàm có vế trái dư
thừa.



<i>Bước 2:</i> Tách các phụ thuộc hàm có vế phải trên một


thuộc tính thành các phụ thuộc hàm có vế phải một thuộc
tính.


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<i><b>Ví dụ: </b></i>Cho lược đồ quan hệ Q(A, B, C, D) và tập phụ
thuộc hàm F như sau F={AB →CD, B →C, C→ D}
Hãy tính phủ tối thiểu của F?


<i>Bước 1: </i>AB →CD là phụ thuộc hàm có vế trái dư thừa?
B →CD  F+?


Trả lời: B+ = BCD => B →CD <sub></sub> F+


Vậy AB →CD là phụ thuộc hàm có vế trái dư thừa A


ÞKết quả của bước 1 là:


F={B →CD, B →C, C→ D}


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<i>Bước 3</i>: Trong F1tt , B→C là phụ thuộc hàm dư thừa?


B→C  G+ ? với G= F<sub>1tt </sub> -{B→C} = {B→D, C→D}


BG+= BD => B→C  G+ => trong F1tt ,B→C không


dư thừa.


Trong F1tt , B→D là phụ thuộc hàm dư thừa?



B→D G+ ?với G =F<sub>1tt</sub> -{B→D} = {B→C, C→D}


BG+= BCD => B→D  G+ => trong F1tt ,B→D dư


thừa.


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

BÀI 14:KHĨA CỦA LƯỢC ĐỒ QUAN


HỆ



<i><b>14.1: Khóa và siêu khóa</b></i>



Đn1: Cho lược đồ quan hệ α=(U,F), KU nếu K+=U, thì
ta nói K là một siêu khóa.


<i><b>Chú ý</b></i>: Điều kiện K+=U có thể thay bằng K →U hoặc
K→ U\K.


Đn2: Cho lược đồ quan hệ α=(U,F), tập KU được gọi là


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<i><b>Chú ý: </b></i>Định nghĩa 2 tương đương với định nghĩa :


Cho lược đồ quan hệ α=(U,F), tập KU được gọi là khóa của


lược đồ α nếu như nó thỏa mãn:
a) K→ UF+


b)K1K thì K1 → UF+


Hai điều kiện trên cịn tương đương với:


a) K+=U.


b)AK thì (K-{A})+<sub></sub>U.


Hoặc nó tương đương với
a)K→U.


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<i><b>*</b></i>

<i><b>Tính chất của khóa và siêu khóa</b></i>



1. Hợp của 2 siêu khóa là một siêu khóa.


2. Giao của 2 siêu khóa chưa chắc là một siêu khóa.
3. Hai khóa bất kỳ khơng giao nhau.


4. Hợp của 2 khóa là 1 khóa khi và chỉ khi lược đồ có


duy nhất 1 khóa.


5. Một lược đồ có thể có nhiều khóa.
6. Bản thân U là một siêu khóa.


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<i><b>* Tìm một siêu khóa của lược đồ</b></i>



Cho lược đồ quan hệ α=(U,F), hãy tìm một siêu khóa K
của lược đồ


Ta có thể tìm siêu khóa K của lược đồ theo các bước sau:
Đặt L= Li |Li →Ri  F


Đặt R= Ri |Li→Ri  F



Đặt K = U\R  L thì K là một siêu khóa.


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<i><b>14.2: Họ Sperner và khóa </b></i>



Nếu gọi Kα là tập tất cả các khóa của lược đồ α=(U,F),
như vậy mỗi phần tử của Kα là một tập thuộc tính và các
tập hợp đó là khơng bao nhau.


<i><b>Định nghĩa: </b></i>Họ Sperner trên U là họ M ={X|X  U} sao


cho hai phần tử của M là không bao nhau.


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<i><b>14.3: Một số vấn đề về khóa </b></i>



<i><b>14.3.1: Kiểm tra một tập cho trước có phải </b></i>


<i><b>là khóa hay khơng?</b></i>



Cho K  U hỏi rằng K có phải là khóa hay khơng?


Cách làm: Tính


+)Nếu U thì K khơng là khóa của lược đồ.
+)Nếu K+=U chứng tỏ K là một siêu khóa


Để kiểm tra K có phải là khóa khơng ta lấy mọi tập con
thực sự của K, nếu tất cả các tập con thực sự của K đều
khơng là siêu khóa thì chứng tỏ K là khóa, nếu tồn tại một
tập con thực sự của K là siêu khóa thì K khơng phải là



</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<i><b>14.3.2: Tìm một khóa của lược đồ quan hệ</b></i>



Cho lược đồ α=(U,F), hãy tìm một khóa K
Tư tưởng chung:


B1) Trước hết chọn một siêu khóa K.


B2) Từ siêu khóa đó kiểm tra xem nó có phải là khóa
khơng.


B3) Nếu K là khóa thì dừng thuật tốn, ngược lại chuyển
bước tiếp theo.


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<i><b>14.3.3: Giao của tất cả các khóa </b></i>



Ký hiệu Iα là tập mà mỗi phần tử của nó tham gia vào
tất cả các khóa của lược đồ hay Iα là giao của tất cả các
khóa của lược đồ.


Ký hiệu Nα là tập mà mỗi phần tử của nó khơng tham
gia vào bất cứ một khóa nào của lược đồ.


Ký hiệu Sα ={U\ (Ri -Li )|  Li →RiF}


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<i><b>Định nghĩa</b></i>: Cho lược đồ quan hệ α=(U,F), thuộc tính A


trong U được gọi là thuộc tính tiền định nếu như A có mặt ở
vế phải của một phụ thuộc hàm bất kỳ thì A cũng phải xuất
hiện ở vế trái của phụ thuộc hàm đó hoặc thuộc tính A không
xuất hiện ở bất cứ phụ thuộc hàm nào.



<i><b>Định lý 1: </b></i>Cho lược đồ quan hệ α=(U,F),


gọi N={ (Ri -Li )| Li  Iα} khi đó N  Nα (hay N là tập


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<i><b>Định lý 2: </b></i>Với Y Nα và X  Iα thì Y (XY)+ \ X  Nα


1


Hệ quả : Từ định lý 2 ta thấy nếu N={ (Ri -Li )| Li Iα }


thì N’=(N Iα)+\Iα  Nα


<i><b>Định lý 3: </b></i>Cho lược đồ quan hệ α=(U,F), gọi N”=R\L|
(R=Ri ,,L= Li )|  Li →RiF} (N” là tập tất cả các


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<i><b>14.3.4: Thuật tốn tìm giao của tất cả các khóa </b></i>


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<i><b>14.3.5: Thuật toán kiểm tra 1 lược đồ đã </b></i>


<i><b>cho có một hay nhiều khóa?</b></i>



Bước 1: Tìm giao của tất cả các khóa của lược đồ Iα .


Bước 2: Nếu (Iα)+= U thì lược đồ đã cho có duy nhất một
khóa.


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<i><b>14.3.6: Thuật tốn tìm tất cả các khóa của </b></i>


<i><b>lược đồ quan hệ</b></i>



<i>*Thuật tốn 1:</i>



<i><b>Bước 1:</b></i> Xác định tất cả các tập con khác rỗng của Q+. Kết


quả tìm được giả sử là các tập thuộc tính X1, X2, …, X2n -1.


<i><b>Bước 2:</b></i> Tìm bao đóng của các X<sub>1</sub>.


<i><b>Bước 3:</b></i> Siêu khóa là các X<sub>1</sub> có bao đóng đúng bằng Q+.


Giả sử ta đã có các siêu khóa là S = {S1, S2,…,Sm}.


<i><b>Bước 4:</b></i> Xây dựng tập chứa tất cả các khóa của Q từ tập S


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<i><b>*Thuật toán 2:</b></i>


B1) Xác định Iα .


B2) Nếu (Iα)+ =U thì kết luận lược đồ có 1 khóa duy nhất


là Iα và kết thúc thth tốn, ngược lại thì chuyển sang


bước tiếp theo.


B3) Xác định N={ (Ri -Li )| Li Iα }


+) Đặt N’ = (IαN)+\ Iα (N’Nα )


+) Đặt B =U\N’\Iα .


B4) Nếu |B|=2 (tập B chỉ gồm có 2 thuộc tính ), giả sử



B=B1B2 khi đó lược đồ chỉ có 2 khóa là B1 và B2, kết thúc


thuật toán. Ngược lại nếu |B| > 2 thì chuyển sang bước tiếp
theo.


B5) Tìm tất cả các tập con khác rỗng của B, ký hiệu các tập
con đó là{B1, B2, …, Bn}. Tính ( Bi Iα)+ (i=1…n), nếu


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<i><b>*Thuật tốn 2:</b></i>


B6) Khi đó M={ M1, M2, …, Mh} là họ tất cả các siêu khóa


của lược đồ α.


B7) Loại bỏ các siêu khóa khơng tối thiểu ra khỏi M, tức là
nếu  Mi  Mj(*) (i≠j,i,j= ) thì loại Mj ra khỏi M. Tập


</div>

<!--links-->

×