Giáo trình Hệ cơ sở dữ liệu (Phần 2)

Tóm tắt Giáo trình Hệ cơ sở dữ liệu (Phần 2): ...thì trước khi nối phải áp dụng phép toán đặt lại tên. Ví dụ, ta cần nối tự nhiên hai quan hệ R(A1,A2,A3) và S(B1,B2,B3) như trong ví dụ trên. Để có thể thực hiện được phép nối tự nhiên với điều kiện so sánh bằng, ta phải đổi tên thuộc tính B1 thành A3, nghĩa là ta phải viết: R * ρ(A3, B2,B3)... Ngược lại, một quan hệ tương ứng với một hỗn hợp các thực thể và liên kết thì ý nghĩa trở nên không rõ ràng. I.2- Thông tin dư thừa trong các bộ và sự dị thường cập nhật Một mục tiêu của thiết kế lược đồ là làm tối thiểu không gian lưu trữ các quan hệ cơ sở. Các thuộc tính được nhóm vào t...ở đây có những thuộc tính không khoá phụ thuộc vào một bộ phận của khoá chính, như vậy nó không thoả mãn điều kiên 2NF. Áp dụng phương pháp chuẩn hoá trên, lược đồ được tách thành các lược đồ như sau: N_D1(MãsốDA, TênDA, ĐịađiểmDA) N_D2(MãsốNV , HọtênNV) N_D3(MãsốNV, MãsốDA, Sốgiờ) 10...

pdf81 trang | Chia sẻ: havih72 | Lượt xem: 207 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Hệ cơ sở dữ liệu (Phần 2), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 định 
được Q có ở BCNF hay không. 
Ví dụ áp dụng: Xét lược đồ quan hệ 
R = { A, B, C, D, E, F) 
Với các phụ thuộc hàm: 
A → BCDEF, BC → ADEF, B→ F, D→ E, D→ B 
Lược đồ quan hệ này có hai khóa dự tuyển là A và BC. 
Ta có B → F vi phạm BCNF vì B không phải là siêu khóa, R được tách thành: 
R1(B,F) với phụ thuộc hàm B→ F 
R2(A,B,C,D,E) với các phụ thuộc hàm A→SCDE, BC→ADF, D→E, D→B 
Do D→ E vi phạm BCNF ( D là một thuộc tính không khóa ), R2 được tách 
thành: 
R21(D,E) với phụ thuộc hàm D → E 
R22(ABCD) với các phụ thuộc hàm A → BCD, BC→ AD, D→ B 
Do D B vi phạm BCNF (Dkhông phải là thuộc tính khóa), R22 được tách 
thành: 
R221(D,B) 
R222(A,B,D) với phụ thuộc hàm A → BD (phụ thuộc hàm BC → AD bị mất) 
Tóm lại, ta có phép tách D = {R1, R21, R221, R222}. Phép tách này có tính 
chất nối không mất thông tin nhưng không bảo toàn phụ thuộc. 
 117
Nếu chúng ta muốn có một phép tách có tính chất nối không mất mát và bảo 
toàn phụ thuộc thì ta phải hài lòng với các lược đồ quan hệ ở dạng 3NF. Thuật toán 
sau đây là cải tiến của thuật toán 5.1, tạo ra một phép tách thỏa mãn : 
- Bảo toàn phụ thuộc. 
- Có tính chất nối không mất mát. 
- Mỗi lược đồ quan hệ kết quả là ở dạng 3NF. 
Thuật toán 5.4: Thuật toán tổng hợp quan hệ với tính chất bảo toàn phụ thuộc 
và nối không mất mát. 
Input: Một quan hệ vũ trụ R và một tập các phụ thuộc hàm F trên các thuộc 
tính của R. 
1) Tìm phủ tối thiểu G cho F. 
2) Với mỗi vế trái X của một phụ thuộc hàm xuất hiện trong G hãy tạo ra một 
lược đồ quan hệ trong D với các thuộc tính {X∪{A1}∪{A2}∪∪ {Ak}}, 
trong đó X →A1, X→A2,, X→ Ak chỉ là các phụ thuộc hàm ở trong G với 
X là vế trái (X là khóa của quan hệ này). 
3) Nếu không có lược đồ quan hệ nào trong D chứa một khóa của R thì hãy tạo 
ra thêm một lược đồ quan hệ trong D chứa các thuộc tính tạo nên một khóa 
của R. 
Bước 3 của thuật toán 5.4 đòi hỏi phải xác định một khóa K của R. Để xác 
định một khóa K của R, ta sử dụng thuật toán sau 
Thuật toán xác định khóa: Tìm một khóa K của R dựa trên tập F các phụ 
thuộc hàm. 
1) Đặt K := R; 
2) Với mỗi thuộc tính A trong K 
{tính (K-A)+ đối với F; 
 Nếu (K-A)+ chứa tất cả các thuộc tính trong R thì đặt K := K-{A}}; 
 *Chú ý: Chúng ta có nhận xét sau: Nếu quan hệ có khóa thì các thuộc tính 
khóa của quan hệ phải là các tập con của tập hợp các thuộc tính ở vế phải các phụ 
thuộc hàm trong F. Vì vậy, để tìm được các khóa nhanh hơn, trước tiên chúng ta 
tính RF là hợp của các thuộc tính ở các vế trái của các phụ thuộc hàm trong F, sau 
 118
đó đi tính bao đóng của tất cả các tập con của RF. Nếu bao đóng của tập con nào 
chứa tất cả các thuộc tính của R thì tập đó là một siêu khóa. Để kiểm tra nó là một 
khóa ta thực hiện như bước 2) của thuật toán trên. 
Không phải lúc nào cũng có khả năng tìm được một phép tách thành các lược 
đồ quan hệ bảo toàn phụ thuộc và mỗi lược đồ trong phép tách là ở BCNF. Các 
lược đồ quan hệ trong phép tách theo thuật toán ở trên thường là 3NF. Để có các 
lược đồ BCNF, chúng ta có thể kiểm tra các lược đồ quan hệ 3NF trong phép tách 
một cách riêng rẽ để xem nó có thỏa mãn BCNF không. Nếu có lược đồ quan hệ Ri 
không ở BCNF thì ta có thể tách tiếp hoặc để nguyên nó là 3NF. 
IV.3- Các phụ thuộc hàm đa trị và dạng chuẩn 4 
Trong phần này chúng ta thảo luận khái niệm phụ thuộc hàm đa trị và định 
nghĩa dạng chuẩn 4. Các phụ thuộc đa trị hệ quả của dạng chuẩn 1 không cho phép 
một thuộc tính của một bộ có một tập giá trị (nghĩa là các thuộc tính đa trị). Nếu 
chúng ta có hai hoặc nhiều hơn các thuộc tính độc lập và đa trị trong cùng một lược 
đồ quan hệ thì chúng ta phải lặp lại mỗi một giá trị của một trong các thuộc tính với 
mỗi giá trị của thuộc tính khác để giữ cho trạng thái quan hệ nhất quán và duy trì 
tính độc lập giữa các thuộc tính. Ràng buộc đó được chỉ ra bằng một phụ thuộc đa 
trị. 
IV.3.1- Định nghĩa phụ thuộc đa trị 
Giả thiết có một lược đồ quan hệ R, X và Y là hai tập con của R. Một phụ 
thuộc đa trị (MVD), ký hiệu là X →→ Y , chỉ ra ràng buộc sau đây trên một trạng 
thái quan hệ bất kỳ của R: Nếu hai bộ t1 và t2 tồn tại trong R sao cho t1[X] = t2[X] 
thì hai bộ t3 và t4 cũng tồn tại trong R với các tính chất sau: 
. t3[X] = t4[X] = t1[X] = t2[X] 
. t3[Y] = t1[Y] và t4[Y] = t2[Y] 
. t3[Z] = t2[Z] và t4[Z] = t1[Z] với Z = (R- (X ∪ Y)) 
Khi X→→Y thỏa mãn, ta nói rằng X đa xác định Y. Bởi vì tính đối xứng 
trong định nghĩa, khi X →→ Y thỏa mãn trong R, X→→Z cũng thỏa mãn trong R. 
Như vậy X→→Y kéo theo X→→Z và vì thế đôi khi nó được viết là X→→Y|Z 
Định nghĩa hình thức chỉ ra rằng, cho trước một giá trị cụ thể của X, tập hợp 
các giá trị của Y được xác định bởi giá trị này của X là được xác định hoàn toàn bởi 
 119
một mình X và không phụ thuộc vào các giá trị của các thuộc tính còn lại Z của R. 
Như vậy, mỗi khi hai bộ tồn tại có các giá trị khác nhau của Y nhưng cùng một giá 
trị X thì các giá trị này của Y phải được lặp lại trong các bộ riêng rẽ với mỗi giá trị 
khác nhau của Z có mặt với cùng giá trị của X. Điều đó tương ứng một cách không 
hình thức với Y là một thuộc tính đa trị của các thực thể được biểu diễn bằng các 
bộ trong R. 
Ví dụ về phụ thuộc đa trị: 
NHÂNVIÊN TênNV TênDA TênconNV 
 Nam DA01 Lan 
 Nam DA02 Hoa 
 Nam DA01 Hoa 
 Nam DA02 Lan 
 Trong bảng trên có hai phụ thuộc đa trị là: 
 TênNV→→TênDA, TênNV→→TênconNV 
 Một MVD X→→Y được gọi phụ thuộc đa trị tầm thường nếu: 
a) Y là một tập con của X 
b) hoặc X ∪ Y = R 
Một MVD không thỏa mãn a) hoặc b) được gọi là một MVD không tầm 
thường. Nếu chúng ta có một phụ thuộc đa trị không tầm thường trong một quan 
hệ, chúng ta có thể phải lặp các giá trị một cách dư thừa trong các bộ. Trong quan 
hệ NHÂNVIÊN ở ví dụ trên, các giá trị ‘DA01’, ‘DA02’ của TênDA được lặp lại 
với mỗi giá trị của TênconNV (một cách đối xứng, các giá trị ‘Lan’, ‘Hoa’ được lặp 
lại với mỗi giá trị của TênDA). Rõ ràng ta không mong muốn có sự dư thừa đó. 
Tuy nhiên, lược đồ quan hệ trên là ở BCNF bởi vì không có phụ thuộc hàm nào 
thỏa mãn trong quan hệ đó. Vì vậy, chúng ta phải định nghĩa một dạng chuẩn thứ tư 
mạnh hơn BCNF và ngăn cấm các lược đồ quan hệ như quan hệ NHÂNVIÊN. 
 120
IV.3.2- Các quy tắc suy diễn đối với các phụ thuộc hàm và phụ thuộc 
đa trị 
Các quy tắc từ Qt1 đến Qt8 sau đây tạo nên một tập hợp đúng đắn và đầy đủ 
cho việc suy diễn các phụ thuộc hàm và phụ thuộc đa trị từ một tập các phụ thuộc 
cho trước. Giả thiết rằng tất cả các thuộc tính được chứa trong một lược đồ quan hệ 
“vũ trụ” R = {A1, A2, ,An} và X, Y, Z, W là các tập con của R. 
Qt1) (quy tắc phản xạ cho FD): Nếu X ⊇ Y thì X → Y 
Qt2) (quy tắc tăng cho FD): {X →Y} |= XZ → YZ 
Qt3) (quy tắc bắc cầu cho FD): { X → Y, Y→ Z } |= X→ Z 
Qt4) (quy tắc bù cho MVD): {X →→Y } |= {X→→ (R-(X∪ Y))} 
Qt5) (quy tắc tăng cho MVD): Nếu X →→Y và W ⊇ Z thì WX →→ YZ 
Qt6) (quy tắc bắc cầu cho MVD): {X→→ Y, Y→→ Z } |= X→→ (Z – Y) 
Qt7) (quy tắc tái tạo cho FD và MVD): {X →Y} |= X→→ Y 
Qt8) (quy tắc liên hợp cho FD và MVD): Nếu X →→ Y và có tồn tại W với 
các tính chất a) W ∩Y = ∅, b) W →Z và c) Y ⊇ Z thì X → Z. 
Qt1 đến Qt3 là các quy tắc suy diễn Amstrong đối với các phụ thuộc hàm. Qt4 
đến Qt6 là các quy tắc suy diễn chỉ liên quan đến các phụ thuộc đa trị. Qt7 và Qt8 
liên kết các phụ thuộc hàm và các phụ thuộc đa trị. Đặc biệt, Qt7 nói rằng một phụ 
thuộc hàm là một trường hợp đặc biệt của một phụ thuộc đa trị. Điều đó có nghĩa là 
mỗi phụ thuộc hàm cũng là một phụ thuộc đa trị bởi vì nó thỏa mãn định nghĩa hình 
thức của phụ thuộc đa trị. Về cơ bản, một phụ thuộc hàm X →Y là một phụ thuộc 
đa trị X →→ Y với một hạn chế phụ rằng có nhiều nhất là một giá trị của Y được 
kết hợp với mỗi giá trị của X. Cho trước một tập hợp các phụ thuộc hàm và phụ 
thuộc đa trị chỉ ra trên R = {A1, A2, , An}, chúng ta có thể sử dụng các quy tắc 
từ Qt1 đến Qt8 để suy ra tập hợp đầy đủ các phụ thuộc (hàm và đa trị) F+ đúng 
trong mọi trạng thái quan hệ r của R thỏa mãn F. Chúng ta lại gọi F+ là bao đóng 
của F. 
 121
IV.3.3- Dạng chuẩn 4 
Định nghĩa: Một lược đồ quan hệ R là ở dạng chuẩn 4 (4NF) đối với một tập 
hợp các phụ thuộc F (gồm các phụ thuộc hàm và phụ thuộc đa trị) nếu với mỗi phụ 
thuộc đa trị không tầm thường X→→Y trong F+ , X là một siêu khóa của R. 
Như vậy, một lược đồ quan hệ vi phạm 4NF nếu nó chứa các phụ thuộc hàm 
đa trị không mong muốn. Ví dụ, lược đồ quan hệ NHÂNVIÊN ở ví dụ trên là vi 
phạm 4NF bởi vì trong các phụ thuộc hàm đa trị TênNV→→TênDA và 
TênNV→→ Têncon, TênNV không phải là một siêu khóa . 
Giả sử chúng ta tách bảng NHÂNVIÊN thành hai bảng như sau: 
NV_DA TênNV TênDA NV_CON TênNV TênconNV 
 Nam DA01 Nam Lan 
 Nam DA02 Nam Hoa 
 Hai bảng này là ở 4NF bởi vì các phụ thuộc đa trị TênNV→→TênDA và 
TênNV→→TênconNV là các phụ thuộc đa trị tầm thường. Trong hai bảng này 
không có các phụ thuộc đa trị không tầm thường cũng như không có các phụ thuộc 
hàm. 
IV.3.4- Tách có tính chất nối không mất mát thành các quan hệ 4NF 
Khi chúng ta tách một lược đồ quan hệ R thành R1 = (X∪Y) và R2 = (R-Y) 
dựa trên phụ thuộc hàm đa trị X→→Y đúng trong R, phép tách có tính chất nối 
không mất mát. Đó cũng là điều kiện cần và đủ cho một phép tách một lược đồ 
thành hai lược đồ có tính chất nối không mất mát. Ta có tính chất sau: 
Tính chất 1’: Các lược đồ quan hệ R1 và R2 tạo thành một phép tách có tính 
chất nối không mất mát của R khi và chỉ khi (R1∩ R2)→→ (R1 –R2) (hoặc (R1∩R2) 
→→(R1 –R2)). 
Áp dụng tính chất trên chúng ta có thuật toán tạo một phép tách có tính chất 
nối không mất mát thành các lược đồ quan hệ ở dạng 4NF. 
Thuật toán 5.5: Tách quan hệ thành các quan hệ 4NF với tính chất nối không 
mất mát. 
Input: Một quan hệ vũ trụ R và một tập phụ thuộc hàm và phụ thuộc đa trị F. 
 122
1. Đặt D := {R}; 
2. Khi có một lược đồ quan hệ Q trong D không ở 4NF, thực hiện: 
{Chọn một lược đồ quan hệ Q trong D không ở 4NF; 
 Tìm một phụ thuộc đa trị không tầm thường X→→Y trong Q vi phạm 4NF; 
 Thay thế Q trong D bằng hai lược đồ quan hệ (Q – Y) và (X ∪ Y)}; 
Ví dụ áp dụng: 
Xét lược đồ NHÂNVIÊN(TênNV, TênDA, TênconNV). Ta có phụ thuộc hàm 
đa trị TênNV→→TênDA trong đó TênNV không phải là một siêu khóa, vậy nó vi 
phạm 4NF. Ta tách thành NV_DA(TênNV, TênDA), NV_CON(TênNV, 
TênconNV). 
IV.4- Các phụ thuộc nối và dạng chuẩn 5 
Như chúng ta đã thấy, các tính chất 1 và tính chất 1’ cho điều kiện để một 
lược đồ quan hệ R được tách thành hai lược đồ quan hệ R1 và R2 và phép tách có 
tính chất nối không mất mát. Tuy nhiên, trong một số trường hợp, có thể không có 
phép tách có tính chất nối không mất mát của R thành hai lược đồ quan hệ nhưng 
có thể có phép tách có tính chất nối không mất mát thành nhiều hơn hai quan hệ. 
Hơn nữa, có thể không có phụ thuộc hàm nào trong R các chuẩn cho đến BCNF và 
có thể không có phụ thuộc đa trị nào có trong R vi phạm 4NF. Khi đó chúng ta phải 
sử dụng đến một phụ thuộc khác gọi là phụ thuộc nối và nếu có phụ thuộc nối thì 
thực hiện một phép tách đa chiều thành dạng chuẩn 5 (5NF). 
Một phụ thuộc nối (JD), ký hiệu là JD(R1, R2, , Rn) trên lược đồ quan hệ R 
chỉ ra một ràng buộc trên các trạng thái r của R. Ràng buộc đó tuyên bố rằng mỗi 
trạng thái hợp pháp r của R phải có phép tách có tính chất nối không mất mát 
thành R1, R2, , Rn. Điều đó nghĩa là: 
*( πR1(r), πR2(r), , πRn(r)) = r 
Một phụ thuộc nối JD(R1, R2, , Rn) là một phụ thuộc nối tầm thường nếu 
một trong các lược đồ quan hệ Ri ở trong JD(R1, R2, , Rn) là bằng R. 
Một lược đồ quan hệ R là ở dạng chuẩn 5 (5NF) (hoặc dạng chuẩn nối chiếu 
PJNF – Project-Join normal form) đối với một tấp F các phụ thuộc hàm, phụ thuộc 
 123
đa trị và phụ thuộc nối nếu với mỗi phụ thuộc nối không tầm thường JD(R1, R2, , 
Rn) trong F+, mỗi Ri là một siêu khóa của R. 
Ví dụ: Xét quan hệ CUNGCẤP gồm toàn các thuộc tính khóa 
CUNGCẤP Tênnhàcungcấp Tênhàng TênDựán 
 Ncc1 Bulong Dựán1 
 Ncc1 Đaiốc Dựán2 
 Ncc2 Bulong Dựán2 
 Ncc3 Đaiốc Dựán3 
 Ncc2 Đinh Dựán1 
 Ncc2 Bulong Dựán1 
 Ncc1 Bulong Dựán2 
Giả thiết rằng ràng buộc phụ thêm sau đây luôn đúng: Khi một nhà cung cấp S 
cung cấp hàng P VÀ một dự án J sử dụng hàng P VÀ nhà cung cấp S cung cấp ít 
nhất là một hàng cho dự án J THÌ nhà cung cấp S cũng sẽ cung cấp hàng P cho dự 
án J. Ràng buộc này chỉ ra một phụ thuộc nối JD(R1,R2,R3) giữa ba phép chiếu 
R1(Tênnhàcungcấp,Tênhàng), R2(Tênnhàcungcấp,Têndựán),R3(Tênhàng,TênDựán) 
của quan hệ CUNGCẤP. Quan hệ CUNGCẤP được tách thành ba quan hệ R1, R2, 
R3 ở dạng chuẩn 5. Chú ý rằng nếu ta áp dụng phép nối tự nhiên cho từng đôi quan 
hệ một thì sẽ sinh ra các bộ giả, nhưng nếu áp dụng phép nối tự nhiên cho cả ba 
quan hệ thì không sinh ra các bộ giả. 
R1 R2 R3 
Tênnhàcungcấp Tênhàng Tênnhàcungcấp Têndựán Tênhàng Têndựán
Ncc1 Bulong Ncc1 Dựán1 Bulong Dựán1 
Ncc1 Đaiốc Ncc1 Dựán2 Đaiốc Dựán2 
Ncc2 Bulong Ncc2 Dựán2 Bulong Dựán2 
Ncc3 Đaiốc Ncc3 Dựán3 Đaiốc Dựán3 
Ncc2 Đinh Ncc2 Dựán1 Đinh Dựán1 
 124
Việc phát hiện các phụ thuộc nối trong các cơ sở dữ liệu thực tế với hàng trăm 
thuộc tính là một điều rất khó khăn. Vì vậy, thực tiễn thiết kế cơ sở dữ liệu hiện nay 
thường không chú ý đến nó. 
Nói chung, trong thực tế thiết kế cơ sở dữ liệu, người ta chỉ chuẩn hóa các 
bảng đến 3NF, BCNF là đủ 
V- Tổng kết chương và câu hỏi ôn tập 
V.1- Tổng kết chương 
Trong chương này chúng ta đã nói đến các nguy hiểm có thể xảy ra trong việc 
thiết kế cơ sở dữ liệu, xác định một cách không hình thức một số chuẩn mực để chỉ 
ra một lược đồ quan hệ là “tốt” hay “tồi” và đưa ra một số nguyên tắc không hình 
thức cho một thiết kế tốt. Sau đó chúng ta đã trình bày một vài khái niệm cho phép 
ta thiết kế quan hệ theo cách trên-xuống bằng cách phân tích các quan hệ một cách 
riêng rẽ. Chúng ta đã định nghĩa quá trình thiết kế này bằng phân tích và tách bằng 
cách giới thiệu quá trình chuẩn hóa. 
Những vấn đề về các bất thường cập nhật xảy ra khi có sự dư thừa xảy ra 
trong các quan hệ cũng đã được đề cập đến. Các chuẩn mực không hình thức của 
các lược đồ quan hệ tốt bao gồm ngữ nghĩa của thuộc tính rõ ràng và đơn giản, ít 
giá trị null trong các mở rộng của quan hệ. Một phép tách tốt phải tránh được việc 
sinh ra các bộ giả khi thực hiện phép nối. 
Chúng ta đã định nghĩa khái niệm phụ thuộc hàm và thảo luận một số tính chất 
của nó. Các phụ thuộc hàm là các nguồn thông tin ngữ nghĩa cơ bản về các thuộc 
tính của lược đồ quan hệ. Chúng ta đã chỉ ra cách suy diễn các phụ thuộc phụ thêm 
dựa trên một tập các phụ thuộc hàm cho trước và một tập các quy tắc suy diễn. 
Chúng ta đã định nghĩa các khái niệm bao đóng và phủ tối thiểu của một tập phụ 
thuộc hàm và cung cấp thuật toán tính phủ tối thiểu. Ta cũng đã chỉ ra làm thế nào 
để kiểm tra xem hai tập phụ thuộc hàm có tương đương nhau hay không. 
Tiếp theo, chúng ta đã mô tả quá trình chuẩn hóa để đạt đến các thiết kế tốt 
bằng cách kiểm tra các quan hệ đối với các kiểu phụ thuộc hàm không mong muốn. 
Chúng ta đã cung cấp cách chuẩn hóa liên tiếp dựa trên khóa chính được định nghĩa 
trước trong mỗi quan hệ và sau đó giảm nhẹ đòi hỏi này và đưa ra các định nghĩa 
tổng quát của các dạng chuẩn có tính đến tất cả các khóa dự tuyển của một quan hệ. 
 125
Trong phần IV chúng ta đã trình bày nhiều thuật toán chuẩn hóa. Đó là thuật 
toán tổng hợp quan hệ tạo ra các quan hệ 3NF từ một lược đồ quan hệ vũ trụ dựa 
trên một tập các phụ thuộc hàm do người thiết kế cơ sở dữ liệu xác định. Các thuật 
toán tạo ra các quan hệ BCNF (hoặc 4NF) bằng cách tách không mất mát liên tiếp 
các quan hệ không chuẩn hóa thành hai quan hệ thành phần tại một thời điểm. 
Chúng ta đã thảo luận về hai tính chất quan trọng của phép tách: tính chất nối 
không mất mát (hoặc không phụ thêm) và tính chất bảo toàn phụ thuộc. Một thuật 
toán kiểm tra phép tách không mất mát và một thuật toán kiểm tra tính không mất 
mát của một phép tách thành hai quan hệ cúng đã được trình bày. Chúng ta cũng đã 
thấy rằng việc tổng hợp các quan hệ ở dạng 3NF đảm bảo cả hai tính chất trên là có 
khả năng còn việc tổng hợp các quan hệ BCNF chỉ có khả năng đảm bảo tính 
không mất mát, không thể đảm bảo tính bảo toàn phụ thuộc. 
Cuối cùng, chúng ta đã nghiên cứu các loại phụ thuộc khác: phụ thuộc đa trị 
và phụ thuộc nối, đưa ra định nghĩa các dạng chuẩn 4, dạng chuẩn 5 và thuật toán 
tách các quan hệ vi phạm thành quan hệ 4NF, 5NF. Việc phát hiện các phụ thuộc 
nối rất khó khăn nên trong thiết kế thực tiễn người ta thường bỏ qua nó. 
V.2- Câu hỏi ôn tập 
1) Hãy giải thích ngữ nghĩa của thuộc tính như là một độ đo không hình thức về 
tính tốt đối với một lược đồ quan hệ. 
2) Hãy thảo luận về các bất thường chèn, xóa và sửa đổi. Vì sao chúng được xem 
là không tốt? Hãy minh họa bằng ví dụ. 
3) Hãy trình bày vấn đề các bộ giả và làm thế nào để ngăn ngừa chúng? 
4) Trình bày các nguyên tắc đối với việc thiết kế lược đồ quan hệ. Hãy minh họa 
việc vi phạm các nguyên tắc đó sẽ có hại như thế nào? 
5) Phụ thuộc hàm là gì? Ai là người chỉ ra các phụ thuộc hàm giữa các thuộc tính 
của một lược đồ quan hệ? 
6) Vì sao chúng ta không thể suy ra một phụ thuộc hàm từ một trạng thái quan hệ 
cụ thể? 
7) Vì sao các quy tắc suy diễn của Amstrong (Qt1 đến Qt3) là quan trọng? 
8) Tính đầy đủ và tính đúng đắn của các quy tắc suy diễn Amstrong là gì? 
9) Bao đóng của một tập phụ thuộc hàm là gì? 
 126
10) Khi nào thì hai tập phụ thuộc hàm là tương đương? Làm thế nào để kiểm tra 
tính tương đương của chúng? 
11) Tập tối thiểu các phụ thuộc hàm là gì? Có phải mỗi tập tối thiểu phụ thuộc hàm 
có một tập tối thiểu tương đương hay không? 
12) Thuật ngữ quan hệ không chuẩn hóa ám chỉ cái gì? 
13) Định nghĩa các dạng chuẩn 1NF, 2NF, 3NF, BCNF dựa trên khóa chính và các 
dạng chuẩn dưới dạng tổng quát. Sự khác nhau của hai định nghĩa là gì? 
14) Phụ thuộc hàm nào cần tránh khi một quan hệ là ở 3NF? 
15) Định nghĩa dạng chuẩn Boyce-Codd. Nó khác gì với 3NF? Vì sao nó được xem 
là mạnh hơn 3NF? 
16) Điều kiện bảo toàn thuộc tính trên một phép tách là gì? 
17) Vì sao các dạng chuẩn tự nó là chưa đủ như là một điều kiện cho một thiết kế 
lược đồ tốt? 
18) Tính chất bảo toàn phụ thuộc đối với một phép tách là gì? Vì sao nó là quan 
trọng? 
19) Vì sao chúng ta không thể đảm bảo rằng một phép tách các lược đồ quan hệ 
không BCNF thành BCNF là bảo toàn phụ thuộc? Hãy cho một phản ví dụ. 
20) Tính chất nối không mất mát (không phụ thêm) của một phép tách là gì? Vì sao 
nó là quan trọng? 
21) Giữa các tính chất bảo toàn phụ thuộc và nối không mất mát cái nào là nhất 
thiết phải thỏa mãn? Vì sao? Phụ thuộc hàm đa trị là gì? Nó chỉ ra ràng buộc 
gì? Khi nào nó sinh ra? 
22) Hãy minh họa quá trình tạo ra các quan hệ ở dạng chuẩn 1? Làm thế nào để có 
dạng chuẩn 1 một cách đúng đắn, tránh được phụ thuộc đa trị? 
23) Định nghĩa dạng chuẩn 4. Nó có lợi gì? 
24) Định nghĩa phụ thuộc nối và dạng chuẩn 5. 
V.3- Bài tập 
1) Hãy kiểm tra các quy tắc suy diễn đối với các phụ thuộc hàm sau đây là đúng 
hay sai: 
 127
a) {W →Y, X →Z} |= {WX →Y} 
b) {X →Y} và Y ⊇Z |= {X →Z} 
c) {X →Y , X →W, WY →Z} |= {X →Z} 
d) {XY →Z, Y →W} |= {XW →Z} 
e) {X →Z, Y →Z} |= {X →Y} 
f) {X →Y, Z →W} |= {XZ →YW} 
g) {XY →Z , Z →X} |= {Z →Y} 
h) {X →Y, Y →Z} |= {X →YZ} 
i) {XY →Z, Z →W} |= {X →W} 
2) Cho lược đồ quan hệ R(A,B,C,D,E,F,G,H,I,J) và tập phụ thuộc hàm sau đây: 
F1 = {AB → C, A → DE, B → F, F → GH, D→ IJ} 
a) Khóa của quan hệ là gì? Hãy tách quan hệ thành 2NF, sau đó thành 3NF. 
b) Làm lại câu a) với tập phụ thuộc hàm sau: 
G1= { AB → C, BD → EF, AD→ GH, A → I , H → J } 
3) Xét quan hệ R(A,B,C,D,E) và các phụ thuộc hàm sau: 
AB →C, CD →E, DE → B. 
AB có phải là khóa dự tuyển của quan hệ không? Vì sao? Hãy tìm một khóa của 
nó. 
4) Cho quan hệ sau: 
 A B C BộID 
10 b1 c1 #1 
10 b2 c2 #2 
11 b4 c1 #3 
12 b3 c4 #4 
13 b1 c1 #5 
14 b3 c4 #6 
 128
Những phụ thuộc hàm nào sau đây là đúng: A → B , B → C, C → B, B → A, 
C → A. Nếu có những phụ thuộc hàm sai, hãy giải thích vì sao. 

File đính kèm:

  • pdfgiao_trinh_he_co_so_du_lieu_phan_2.pdf