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>
Đị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
<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?
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)
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+.
<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
<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
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)
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 đủ.
<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,
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
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}
<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.
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.
<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.
<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}
<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.
Đn1: Cho lược đồ quan hệ α=(U,F), KU 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 KU được gọi là
<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 KU được gọi là khóa của
lược đồ α nếu như nó thỏa mãn:
a) K→ UF+
b)K1K thì K1 → UF+
Hai điều kiện trên cịn tương đương với:
b)AK thì (K-{A})+<sub></sub>U.
Hoặc nó tương đương với
a)K→U.
<i><b>*</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.
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.
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.
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à
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.
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 →RiF}
<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
<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 →RiF} (N” là tập tất cả các
<i><b>14.3.4: Thuật tốn tìm giao của tất cả các 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.
<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
<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
<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