Cho lược đồ quan hệ Q(BROKER, OFFICE, STOCK, QUANTITY, INVESTOR, DIVIDENT) F={STOCK > DIVIDENT, INVESTOR > BROKER INVESTOR, STOCK > QUANTITY BROKER > OFFICE } Thực hiện các yêu cầu sau: 1. Tìm tất cả các khóa của Q 2. Xác định dạng chuẩn cao nhất của Q 3. Nếu Q chưa đạt chuẩn 3 NF thì phân rã Q thành các lược đồ ở dạng chuẩn 3NF vừa bảo toàn PTH vừa bảo toàn thông tin.
Trang 1Cho lược đồ quan hệ p(Q,F) Q=(ABCDE), F={A->B, B->C, C->D, DE->C, CE->A} Phân rã lược đồ thành R1(AD), R2(AB), R3(BE), R4(CDE) Hỏi phép phân rã trên
có bảo toàn thông tin không ?
Xét phụ thuộc hàm A->B
Xét phụ thuộc hàm B->C
Xét phụ thuộc hàm C->D
Xét phụ thuộc hàm DE->C
Trang 2R2(AB) a1 a2 a3 a4 b6
Xét PTH CE->A
KL: nhận thấy không có dòng nào chứa toàn a nên phép phân rã không được bảo toàn
Cho R(ABCD) và F=(A->B, B->C, A->D, D->C} Tách thành R1(AB) R2(AC) R3(BD)
Xét PTH A->B
Xét PTH B->C
Xét PTH A->D
Trang 3a1 a2 a3 a4
Xét PTH D->C
Xét PTH A->B
KL: nhận thấy không có dòng nào có toàn a nên không bảo toàn
1 Cho lược đồ quan hệ p=(Q,F) với Q(A,B,C,D,E,G) và tập phụ thuộc hàm
F ={A -> B;
D -> C,A;
C,B ->D;
A,E ->G;
C,E ->D}
a Tìm tất cả các khóa của lược đồ quan hệ p, hãy cho biết p có bao
nhiêu siêu khóa ?
TN = Q\R = {E} TG = {ABCD} = L GIAO R
NHÁP: TÍNH BAO ĐÓNG E+ = E # Q+ => E KHÔNG PHẢI LÀ KHÓA
Đặt Xi là tập con cua tập trung gian
Trang 4Xi Xi∪ TN (Xi∪ TN)+ siêu khóa khóa
TÍNH BAO ĐÓNG
AE+ = AEBG
BE+ = BE
KL: CÓ 11 SIÊU KHÓA VÀ 2 KHÓA
B, xác định dạng chuẩn cao nhất của lược đồ quan hệ trên
Khóa = CE, DE
F ={A -> B; D -> C,A; C,B ->D; A,E ->G; C,E ->D}
+ ĐẠT CHUẨN
- KHÔNG ĐẠT CHUẨN
THUỘCTÍNH KHÔNG KHÓA: ABG
Trang 5CE->A, CE->B, CE->G, DE->A, DE->B, DE->G
LÍ GIẢI:
XÉT A->B:
- Nhận thấy vế trái A không là siêu khóa => Q không đạt chuẩn BCNF
- Nhận thấy vế trái A không là siêu khóa, B không là thuộc tính khóa => Q không đạt chuẩn 3NF
- ∀PTH ∈ F ta có CE->A, CE->B, CE->G, DE->A, DE->B, DE->G, đều phụ thuộc hàm đầy đủ vào khóa => Q đạt chuẩn 2NF
KL: Vậy Q đạt chuẩn cao nhất là 2NF
Câu 3: Cho lược đồ quan hệ
Q(BROKER, OFFICE, STOCK, QUANTITY, INVESTOR, DIVIDENT)
F={STOCK -> DIVIDENT,
INVESTOR -> BROKER
INVESTOR, STOCK -> QUANTITY
BROKER -> OFFICE }
Thực hiện các yêu cầu sau:
1 Tìm tất cả các khóa của Q
2 Xác định dạng chuẩn cao nhất của Q
3 Nếu Q chưa đạt chuẩn 3 NF thì phân rã Q thành các lược đồ ở dạng
chuẩn 3NF vừa bảo toàn PTH vừa bảo toàn thông tin.
Đặt Q=(ABCDEG)
F={C->G, E->A, EC->D,A->B}
- Tìm khóa
TN = Q\R = CE TG= A
CE+ = CEGADB = Q+
CE LÀ KHÓA CỦA LĐQH Q
- XÁC ĐỊNH DẠNG CHUẨN CAO NHẤT
Trang 6C->G - - - +
Thuộc tính không khóa ABGD
CE->A, CE->B, CE-> G, CE->D
LÍ GIẢI:
XÉT C->G:
- Nhận thấy vế trái C không phải là siêu khóa => Q không đạt chuẩn BCNF
- Nhận thấy vế trái C không phải là siêu khóa, vế phải A không phải là thuộc tính khóa => Q không đạt chuẩn 3NF
∀PTH ∈ F ta có CE->A, CE->B, CE-> G, CE->D ta thấy có C->G, E->A không phụ thuộc hàm đầy đủ vào khóa => Q không đạt chuẩn 2NF
Q đạt chuẩn cao nhất là 1NF
Phân rã Q THÀNH 3NF
F={C->G, E->A, EC->D, A->B}
Tìm phủ tối thiểu:
Bước 1: Đưa PTH có vp nhiều thuộc tính thành PTH có vp 1 thuộc tính
F1 = F={C->G, E->A, EC->D, A->B}
Bước 2: Loại bỏ những PTH dư thừa
XÉT C->G: C+ = C ⊉G
XÉT E->A: E+ = E ⊉ A
XÉT EC->D: E+ = EAB ⊉ D, C+= CG ⊉ D
XÉT A->B: A+= A ⊉ B
F2 = {C->G, E->A, EC->D, A->B}
Bước 3: Loại bỏ những PTH có vế trái dư thừa
XÉT C->G: C+ = C ⊉G
XÉT E->A: E+ = E ⊉ A
XÉT EC->D: EC+=ECGADB ⊃D => LOẠI EC->D
Trang 7XÉT A->B: A+= A ⊉ B
F3 = {C->G, E->A, A->B}
Vậy F3 là một phủ tối thiểu của F
Ta có khóa k = CE
Q1 = CG
Q2 = EA
Q3 = AB
NHẬN THẤY PHÂN RÃ TRÊN KHÔNG CHỨA KHÓA NÊN TA CÓ Q1, Q2, Q3, Q4={CE} LÀ KẾT QUẢ CỦA PHÂN RÃ
Bài 6.5/26 Bài tập cơ sở dữ liệu
Cho lược đồ quan hệ Q(C,D,E,G,H,K) và tập phụ thuộc hàm F
F = { C,K ->H; C -> D; E -> C; E -> G; C,K ->E}
1 Tìm các khoá của Q.
2 Xác định dạng chuẩn của Q.
3 Phân rã lược đồ quan hệ Q thành lược đồ CSDL đạt dạng chuẩn (hoặc đạt dạng chuẩn 3)
Tìm khóa:
TN = Q\R = {}K TG = L ∩ R = {CE}
K+ = K # Q+ => K Không phải là khóa
Gọi Xi là tập con của tập trung gian
XÁC ĐỊNH DẠNG CHUẨN CAO NHẤT
KHÓA = CK, EK
Trang 8Xét chuẩn BC thì vế trái phải là 1 siêu khóa
Xét chuẩn 3NF thì vế trái phải là 1 khóa hoặc vế phải có chứa thuộc tính khóa
Thuộc tính không khóa DGH
CK->D, CK->G, CK->H, EK-> D, EK->G, EK->H
Vậy Q đạt chuẩn cao nhất là chuẩn 1NF
LÍ GIẢI:
Xét C->D:
- Nhận thấy vế trái C không phải là siêu khóa => Q không đạt chuẩn BCNF
- Nhận thấy vế trái C không phải là siêu khóa, vế phải không chứa thuộc tính khóa
=> Q không đạt chuẩn 3NF
∀PTH ∈ F ta có CK->D, CK->G, CK->H, EK-> D, EK->G, EK->H và nhận thấy có
C->D, E->G làm cho không phụ thuộc hàm đầy đủ vào khóa => Q không đạt chuẩn 2NF
Q đạt chuẩn 1NF
Tìm phủ tối thiểu cách khác: CHÚ Ý ĐÂY LÀ CÁCH TÌM CHUẨN NHẤT, CÁC BÀI TRÊN NÊN LÀM LẠI THEO CÁCH NÀY
Bước 1: tách vế phải có nhiều thuộc tính thành vế phải có 1 thuộc tính
F1 = F = { C,K ->H; C -> D; E -> C; E -> G; C,K ->E}
Bước 2: loại bỏ những phụ thuộc hàm dư thừa
Xét CK->H: C+ = CD ⊉ H, K+ = K ⊉ H
Xét C -> D: C+ = C ⊉ D
Xét E -> C: E+ = EG ⊉ C
Xét E -> G: E+ = ECD ⊉ G
Xét CK->E: C+ = CD ⊉ E, K+ = K ⊉ E
F2 = { C,K ->H; C -> D; E -> C; E -> G; C,K ->E}
Trang 9Bước 3: loại bỏ những phụ thuộc hàm có vế trái dư thừa
Xét CK->H: CK+ = CKDEG ⊉H
Xét C -> D: C+ = C ⊉ D
Xét E -> C: E+ = EG ⊉ C
Xét E -> G: E+ = ECD ⊉ G
Xét CK->E: CK+ = CKHD ⊉ E
F3 = { C,K ->H; C -> D; E -> C; E -> G; C,K ->E}
Ta có khóa = CK, EK
Q1 = (CKH) VÌ CK->H
Q2 = (CD) VÌ C->D
Q3 = (EC) VÌ E->C
Q4 = (EG) VÌ E->G
Q5 = (CKE) VÌ CK->E
NHẬN THẤY CÓ Q1, Q5 CHỨA KHÓA NÊN ĐÂY LÀ KẾT QUẢ CỦA VIỆC PHÂN RÃ
Trang 10THONGTINTHUEBAO(SOHĐ, HOTENKH, DIACHIKH, MAKH,
NGAYKIHOPDONG, MAGOITHUEBAO, TENGOITHUEBAO,
GIATHUEBAOTHEOTHANG)
1 Xác định các phụ thuộc hàm
MAKH - > HOTENKH, DIACHIKH
MAGOIKENHTHUEBAO -> TENGOITHUEBAO, GIATHUEBAOTHEOTHANG SOHĐ -> NGAYKIHOPDONG, MAKH, MAGOITHUEBAO
2 Xác định dạng chuẩn cao nhất
TÌM KHÓA
L: MAKH, MAGOITHUEBAO, SOHĐ
R: HOTENKH, DIACHIKH, TENGOITHUEBAO, GIATHUEBAOTHEOTHANG, NGAYKIHOPDONG, MAGOITHUEBAO, MAKH
TN = Q\R = { SOHĐ}
TG = {MAKH, MAGOITHUEBAO}
(SOHĐ)+ = SOHĐ, NGAYKIHOPDONG, MAGOITHUEBAO, MAKH, HOTENKH, DIACHIKH, TENGOITHUEBAO, GIATHUEBAOTHEOTHANG =
(THONGTINTHUEBAO)+
SOHĐ LÀ KHÓA CHÍNH
MAGOIKENHTHUEBAO ->
TENGOITHUEBAO,
GIATHUEBAOTHEOTHANG
SOHĐ -> NGAYKIHOPDONG,
Thuộc tính không khóa: NGAYKIHOPDONG, MAGOITHUEBAO, MAKH,
HOTENKH, DIACHIKH, TENGOITHUEBAO, GIATHUEBAOTHEOTHANG
SOHĐ -> NGAYKIHOPDONG
Trang 11SOHĐ -> MAKH
SOHĐ -> HOTENKH
GIẢI THÍCH: Y NHƯ MẤY BÀI TRÊN
TÌM PHỦ TỐI THIỂU
Bước 1: tách PTH vế phải có nhiều thuộc tính thành PTH vế phải có 1 thuộc tính
F1= { MAKH - > HOTENKH, MAKH-> DIACHIKH, MAGOIKENHTHUEBAO -> TENGOITHUEBAO, MAGOIKENHTHUEBAO -> GIATHUEBAOTHEOTHANG, SOHĐ -> NGAYKIHOPDONG, SOHĐ-> MAKH, SOHĐ -> MAGOITHUEBAO } Bước2: loại bỏ những phụ thuộc hàm dư thừa
F2 = { MAKH - > HOTENKH, MAKH-> DIACHIKH, MAGOIKENHTHUEBAO -> TENGOITHUEBAO, MAGOIKENHTHUEBAO -> GIATHUEBAOTHEOTHANG, SOHĐ -> NGAYKIHOPDONG, SOHĐ-> MAKH, SOHĐ -> MAGOITHUEBAO} Bước 3: loại bỏ PTH có vế trái dư thừa
F3 = { MAKH - > HOTENKH, MAKH-> DIACHIKH, MAGOIKENHTHUEBAO -> TENGOITHUEBAO, MAGOIKENHTHUEBAO -> GIATHUEBAOTHEOTHANG, SOHĐ -> NGAYKIHOPDONG, SOHĐ-> MAKH, SOHĐ -> MAGOITHUEBAO} Vậy PTH của F là F3
Ta có khóa là SOHĐ
Phân rã THONGTINTHUEBAO thành
Q1(MAKH, HOTENKH, DIACHIKH)
Q2(MAGOITHUEBAO, TENGOITHUEBAO, GIATHUEBAOTHEOTHANG)
Q3(SOHĐ, NGAYKIHOPDONG, MAKH, MAGOITHUEBAO)
NHẬN THẤY Q3 CÓ CHỨA KHÓA NÊN ĐÂY LÀ KẾT QUẢ CỦA PHÂN RÃ
3 Sử dụng LĐQH vừa chuẩn hóa, thực hiện truy vấn bằng ĐSQH và SQL các yêu cầu sau:
a Đưa ra tên và giá thuê bao theo tháng của gói thuê bao
ĐSQH: πtengoithuabao, giathuebaotheothang (Q2)
SQL: SELECT TENGOITHUEBAO, GIATHUEBAOTHEOTHANG
FROM Q2
b Tìm các gói thuê bao chưa từng được khách hàng kí hợp đồng
ĐSQH: πmagoithuebao (Q2) - πmagoithuebao (Q3)
Trang 12SQL: SELECT A.MAGOITHUEBAO
FROM Q2 A
WHERE NOT EXISTS (SELECT *
FROM Q2 A1 INNER JOIN Q3 B
ON A1.MAGOITHUEBAO = B.MAGOITHUEBAO AND A1.MAGOITHUEBAO = A.MAGOITHUEBAO)