Câu I:
Cho lược đồ quan hệ Q(A,B,C,D,E,G,H) và tập phụ thuộc hàm:
F = { E → C; H → E; A→ D; AE → H; DG → B; DG → C }
- Hãy xác đinh tất cả các khóa của Q .
- Xác định dạng chuẩn .
- Tìm phủ tối thiểu của F.
Hướng dẫn :
Câu 1 )
TN = {AG } (Là các thuộc tính chỉ xuất hiện ở vế trái OR không xuất hiện ở cả hai vế)
TG = { DEH } (Là thuộc tính xuất hiện ở cả 2 vế)
- (TN: Tập Nguồn ; TG: Tập Trung Gian – Dựa vào F để tìm, những thuộc tính cặp như AE thì vẫn tính là có A và E ở VP; Chỉ khi tìm bao đóng thì phải có cả AE mới => AEH).
| Xi | TN U Xi | (TN U Xi)+ | Siêu khóa | Khóa |
| ø | AG | AGDBC | ||
| D | AGD | AGDBC | ||
| E | AGE | AGEDBCH = Q+ | AGE | AGE |
| H | AGH | AGHDEBC = Q+ | AGH | AGH |
| DE | AGDE | AGDEBCH = Q+ | AGDE | |
| DH | AGDH | AGDHBCE = Q+ | AGDH | |
| EH | AGEH | AGEHDBC = Q+ | AGEH | |
| DEH | AGDEH | AGDEHBC = Q+ | AGDEH |
→ TK = {AGE , AGH} ;
Key:
- Siêu khóa chính là TN U Xi nếu như (TN U Xi)+ = Q+
- Để tìm Khóa ta loại những Siêu khóa là Tập cha của ít nhất một trong các siêu khóa còn lại (Vd: AGE ⊂ AGEH nên loại AGEH,…)
Câu 2 )
F = { E → C; H → E; A→ D; A,E → H; D,G → B; D,G → C }
Xác định từ trên xuống. Trước tiên xác định :
+ BCNF *(1)
E → C : Vế trái không là siêu khóa . → Không là BCNF
Key : Xét vế trái của phụ thuộc hàm: Nếu VT là siêu khóa => BCNF
+ 3NF *(2)
Key: Xét vế trái phụ thuộc hàm: Nếu VT là siêu khóa OR VP là thuộc tính khóa=> 3NF
E → C : Vế trái không là siêu khóa , Vế phái cũng không là thuộc tính khóa
→ Q không đạt 3NF
Lưu ý: chỉ duy nhất một bảng (1 phụ thuộc hàm) không đạt chuẩn thì cả lược đồ không đạt chuẩn dù các bảng khác có đạt chuẩn hay không
+ 2NF *(3)
Xét tập con thật sự : A,G,E,H
Key : Tập con thật sự là tập con không chứa chính nó và tập rỗng (VD: Tập con AE là AE, A,E,ø => Tập con thật sự sẽ bỏ AE và ø)
A+ = {AD} chứa D là thuộc tính không khóa → không là 2NF
Key : Thuộc tính không khóa là những thuộc tính không có trong Khóa (VD: Ở trên ta tìm được 2 khóa là AGE, AGH => Thuộc tính khóa là A,G,E,H nên so với tập Q thì các thuộc tính không khóa là B,C,D
Vậy Q là 1NF *(4)
- Note :
(1) : Dạng Chuẩn Boyce-Codd (Boyce-Codd form)
(2) : Dạng chuẩn 3 (3 normal form)
(3) : Dạng chuẩn 2 (2 normal form)
(4) : Dạng chuẩn 1 (1 normal form)
Câu 3 )
F = { E → C; H → E; A→ D; AE → H; D,G → B; DG → C } .
Bước 1 : Loại bỏ các thuộc tính dư thừa. Không xét các phụ thuộc hàm đơn lẻ (VD: E ->C)
AE → H : Giả sử A dư thừa . Xét E+ = {EHC} không chưa A → A không dư thừa
Key: Do giả sử A dư thừa nên ta được E → H, chính vì vậy ta có ngay E+ = {EHC}, tiếp tục ta mới xét tiếp có EH thì sẽ được gì (dựa vào F mà ta tìm tiếp)
Giả sử E dư thừa . Xét A+ = {AD} không chứa E → E không dư thừa
Key: GIẢ SỬ nếu như E dư thừa thì phụ thuộc hàm ban đầu AE → H sẽ chỉ còn A→ H và các trường hợp xét tiếp theo BẮT BUỘC khi tìm bao đóng ta PHẢI tìm bao đóng trên tập F mới là F = {E → C; H → E; A→ D; A→ H ;D,G → B; DG → C}
DG → B : Giả sử D dư thừa . Xét G+ = {G} không chứa D → D không dư thừa
Giả sử G dư thừa . Xét D+ = {D} không chứa G → G không dư thừa
DG → C : Giả sử D dư thừa . Xét G+ = {G} không chứa D → D không dư thừa
Giả sử G dư thừa . Xét D+ = {D} không chứa G → G không dư thừa
Vậy tập F hiện tại là :
F = {E → C; H → E; A→ D; A,E → H; D,G → B; D,G → C}
Bước 2: Tách nhỏ vế phải → không có cái nào cần tách :v
Key: Tách nhỏ vé phải nghĩa là ví dụ ta có D → EG thì ta tách thành D → E và D → G
Bước 3 : Loại bỏ các phụ thuộc hàm dư thừa :
-Cách trình bày 1:
Gỉa sử E → C dư thừa : E+ = {E} ⊅ E→ C nên E → C không dư thừa
Key: E+ = {E} ⊅ E→ C nghĩa là kết quả của bao đóng E+ chỉ có mỗi thuộc tính E mà không có thuộc tính C nên phụ thuộc hàm E→ C không chứa trong E+
Gỉa sử H → E dư thừa : H+ = {H} ⊅ H → E nên H → E không dư thừa
Key : Lưu ý là hễ phụ thuộc hàm nào giả sử dư thừa thì ta không thể dùng nó để tìm bao đóng (qua giả sử tiếp theo thì nó lại có thể sử dụng lại để tìm bao đóng – VD: ở đầy giả sử H → E nên tìm bao đóng ta loại đi H → E nhưng qua giả sử tiếp theo A → D thì lúc này H → E được tham gia vào tìm bao đóng )
Gỉa sử A → D dư thừa : A+ = {A} ⊅ A → D nên A → D không dư thừa
-Cách trình bày 2:
Xét AE → H : AE+ = {AECD} không chưa H → không dư thừa
Xét DG → B : DG+ = {DGC} không chưa B → không dư thừa
Xét DG → C : DG+ = {DGB} không chưa C → không dư thừa
Vậy phủ tối thiểu là F = {E → C; H → E; A→ D; A,E → H; D,G → B; D,G → C}
Câu II:
