Các vấn tin nhập, xuất đều tham chiếu đến các quan hệtoàn cục và không dùng đến các thông tin về phân bố dữ liệu ,vì thế phân rã vấn tin trong hệ tập trung lẫn phân tán đều giống nhau..
Trang 1CHƯƠNG V
PHÂN RÃ VẤN TIN VÀ CỤC BỘ HOÁ DỮ LIỆU
Trang 2Quan hệ EMP
Elect Eng Syst Anal Mech.Eng Programmer Syst.Anal Elect.Eng Mech.Eng Syst Anal
J.Doe
M Smith A.Lee J.Mmith B.Casey L.Chu R.David J.Jones
E1 E2 E3 E4 E5 E6 E7 E8
TITLE ENAME
ENO
Quan hệ PAY
40000 34000 27000 24000
Montreal New York New York Paris
150000 135000 250000 310000
Instrumentation Dabatase Develop CAD/ CAM Maintenance
P1 P2 P3 P4
LOC BUDGET
PNAME PNO
12 24 6 10 48 18 24 48
Manager Analyst Analyst Consultant Engineer Programmer Manager Manager
Programmer Lập trình viên EMP: Employee-Nhân viê PAY: Payment- Trả lương Proj: Project-Dự án
ASG: assignment-Phân nhiệm Resp: responsibility-Trách nhiệm Manager: Người quản lý
Analyst: Nhà phân tích Consultant: Tư vấn Budget: Ngân sách
Trang 3Quan hệ NhanVien
Kỹ sư điện Phân tích và thiết kế hệ thống
Kỹ sư cơ khí Lập trình viên Phân tích và thiết kế hệ thống
Kỹ sư điện
Kỹ sư cơ khí Phân tích và thiết kế hệ thống
Nguyễn Văn Bổng
Lê Hồng Ngoc Hoàng Trung Mã Trịnh Kim Thanh Ngô Đình Vinh Trần Mỹ Lệ
Lê Hồng Hạnh Nguyễn Trường Tam
NV1 NV2 NV3 NV4 NV5 NV6 NV7 NV8
TrinhDoCM TenNV
MaNV
Quan hệ TraLuong
4000 3400 2700 2400
Quan hệ PhanNhiem
12 24 6 10 48 18 24 48 36 40
Giám đốc Nhân viên phân tích và thiết kế Nhân viên phân tích và thiết kế Nhân viên tư vấn
Kỹ sư Lập trình viên Giám đốc Giám đốc
Kỹ sư Giám đốc
150000 135000 250000 310000
Thiết bị đo đạc Phát triển CSDL CAD/ CAM Bảo dưỡng
DA1 DA2 DA3 DA4
ViTri NganSac
h
TenDuAn MaD
uAn
n
1 n
1
n
Trang 4Chuyển SQL sang AQL Các vấn tin nhập, xuất đều tham chiếu đến các quan hệtoàn cục và không dùng đến các thông tin về phân bố dữ liệu ,vì thế phân rã vấn tin trong hệ tập trung lẫn phân tán đều giống nhau
Các bước phân rã vấn tin gồm:
• Chuẩn hoá CVT
• Phân tích CVT
• Loại bỏ dư thừa
• Viết lại câu vấn tin
5.1 PHÂN RÃ VẤN TIN
Chuẩn hoá CVT, là biến đổi CVT thông thường thành câu vấn tin dạng chuẩn để tiếp tục xử lý với các ngôn ngữ quan hệ như SQL, biểu đồ quan trọng nhất là đưa vào các phép toán logic như , , , , , …
Dạng chuẩn hội, là hội của các tuyển có dạng:
(p11 p12 … p1n) … (pm1 pm2 … pnm)
Dạng chuẩn tuyển, là tuyển của các hội có dạng
5.1.1 Chuẩn hoá câu vấn tin
Trang 5“Tìm tên các nhân viên đang làm ở dự án P1 trong 12 hoặc 24 tháng?”
Dạng SQL như sau:
SELECT ENAME FROM EMP, ASG
WHERE
EMP.ENO=AGS.ENO AND ASG.PNO=“P1” AND DUR=2 OR DUR=24
Thì AQL dạng chuẩn hội là:
(EMP.ENO=ASG.ENO)(ASG.PNO=“P1”) ((DUR=12) (DUR=24))
Dạng chuẩn tuyển AQL là:
((EMP.ENO =ASG.ENO)(ASG.PNO = “P1”)(DUR=12))
v ((EMP.ENO =ASG.ENO)(ASG.PNO = “P1”)(DUR=24))
Phân tích câu vấn tin để bỏ đi các câu vấn tin đã chuẩn hoá nhưng không thể tiếp tục
xử lý được hoặc thừa Những lý do chính là do chúng sai kiểu hoặc sai nghĩa Khi phát hiện sai, hệ thống đưa ra thông báo Ngược lại xừ lý vấn tin sẽ được tiếp tục
5.1.2 Phân tích câu vấn tin
Ví dụ 5-1.
Câu vấn tin sai kiểu
Một câu vấn tin gọi là sai kiểu, nếu nó có một thuộc tính hoặc tên quan hệ chưa được khai báo trong lược đồ toàn cục, hoặc phép toán cho các thuộc tính có kiểu không thích hợp Các khai báo kiểu là một bộ phận của lược đồ toàn cục (không nằm trong câu vấn tin, vì câu vấn tin không tạo ra kiểu dữ liệu mới)
Trang 6Câu vấn tin gọi là sai nghĩa nếu các thành phần của nó không tham gia vào việc tạo ra kết quả
Câu vấn tin sai nghĩa
’’Tìm tên và nhiệm vụ (RESP) của các lập trình viên (programmer) đã làm việc cho dự án CAD/CAM trong hơn ba năm?”
Câu SQL như sau :
SELECT EMANE , RESP FROM EMP, ASG , PROJ WHERE EMP.ENO=ASG.ENO
AND ASG.PNO=PROJ.PNO AND PNAME=“CAD/CAM” AND DUR36 AND TITLE=
Thuộc tính E# chưa được khai báo (trong lược đồ quan hệ) và phép so sánh ENAME >
200 không phù hợp (chuỗi s.sánh với số)
Ví dụ 5-2
Trang 7EMP
PROJ
RESUL T
RESP
EMP.ENO = ASG.ENO
ASG.PNO = PROJ.PNO
PNAME = “CAD/CAM”
ENAM E
EM
EMP.ENO = ASG.ENO
ASG.PNO = PROJ.PNO
Hình 5-1b Đồ thị nối
của 5-1a
Xét SQL sau:
SELECT ENAME , RESP FROM EMP, ASG , PROJ
WHERE EMP.ENO =ASG.ENO AND PNAME=”CAD/CAM”
AND DUR >=36 AND TITLE = “PROGRAM”
Đồ thị vấn tin ở hình 5-2 là đồ thị vấn tin không liên thông
Ví dụ 5-4
Trang 8EMP
PROJ
RESULT RESP EMP.ENO = ASG.ENO
PNAME = “CAD/CAM”
ENAME TITLE = “Programmer”
DUR36
Hình 5-2 Đồ thị vấn tin không liên thông
• Dựa vào đồ thị vấn tin ta thấy nó không liên thông, câu vấn tin có thể sai Ba trường hợp có thể làm:
• i Loại bỏ ngay câu vấn tin
• ii Giả định có một tích Descartes giữa quan hệ ASG và PROJ
• iii Bổ sung thêm nối ASG.PNO =PROJ.PNO bị thiếu
NHẬN XÉT
Trang 95.1.3 Loại bỏ dư thừa
Người ta có thể loại bỏ vị trí dư thừa khi áp dụng 10 quy tắc sau:
Cho câu vấn tin SQL như sau:
SELECT TITLE FROM EMP
WHERE (NOT(TITLE = ”programmer”) AND
(TITLE= ”Programmer” OR TITLE=”Elect.Eng.”) AND NOT (TITLE= “Elect.Eng.”)) OR
ENAME = “J.Doe”
Ví dụ 5-5
Đơn giản hoá câu vấn tin trên nhờ 10 quy tắc trên như sau
Đặt P1 = ‘TITLE = ”programmer” ‘ thì P1 = ‘NOT(TITLE = ”programmer”)
P2= TITLE = ”Elect.Eng” thì P2 = ‘NOT(TITLE = ” Elect.Eng”) P3=ENAME = ”J.Doe”
Thì AQL là:
(┐P1
(P1 v P2)
┐P2)) v (┐P1(P1v P2)┐P2))vP3
Trang 10Viết lại câu vấn tin bằng đại số quan hệ gồm hai bước:
i/ Biến đổi câu vấn tin SQL thành AQL
ii/ Cấu trúc lại câu vấn tin AQL nhằm tăng hiệu năng
5.1.4 Viết lại câu vấn tin
Theo quy tắc 5:
Vì (┐P1(P1v P2)┐P2)vP3 (┐P1((P1┐P2)v(P2┐P2)))vP3 (┐P1((P1 ┐P2) v F)) v P3 (┐P1P1 ┐P2)) v P3 P3
Như vậy câu vấn tin SQL trên chỉ đơn giản như sau:
SELECT TITLE FROM EMP
WHERE OR ENAME = “J.Doe”
i Tạo ra các nút lá là các quan hệ trong SQL sau FROM
ii Nút gốc là các thuộc tính sau SELECT là phép chiếu các thuộc tính kết quả
Định nghĩa cây toán tử
Cây toán tử là cây với mỗi nút lá biểu thị cho một quan hệ được lưu trong cơ sở dữ liệu, nút không phải lá biểu thị quan hệ trung gian được sinh ra bởi phép toán quan hệ Chuỗi các phép toán để đi theo hướng lá đến gốc, còn gốc biểu thị kết quả vấn tin
Cách chuy ển câu vấn tin SQL thành cây toán tử:
Trang 11Câu hỏi: “Tìm tên các nhân viên, trừ J.Doe đã làm
cho dự án CAD/CAM trong 12 hoặc 24
tháng?” Câu SQL là :
SELECT ENAME {Gốc }
FROM ASG , EMP , PROJ
WHERE ASG.ENO = EMP.ENO AND ENAME
≠ “J.Doe” AND PROJ.PNAME = “CAD/CAM”
AND (DUR = 12 OR DUR = 24)
Cây toán tử như sau (hình 5-3):
Ví dụ 5-6
Sáu quy tắc tương đương hay dùng nhất
Cho R(A) A={A1, …,An }; S(B) │B = {B1,…,Bn} và T là quan hệ
i Tính giao hoán của các phép toán hai ngôi:
Trang 12iii Luỹ thừa đẳng của phép toán đơn ngôi:
• Những phép chiếu liên tiếp trên cùng một quan hệ được nhóm lại hoặctách ra Gọi
R(A), A’ A, A” A, A’ A” thì A’(A’’(R)) A’( R)
• Những phép chọn liên tiếp Pi(Ai) (i=1,2, ) trên cùng một quan hệ có thể nhóm lại thành phép chọn qua một hội và ngược lại Chẳng hạn
P1(A1) (P2(A2)(R)) P1(A1) P2(A2)(R)
iv Giao hoán với phép chiếu
A1,…,An (P(Ap)(R)) A1,…,An (P(Ap)(A1,…,An(R)))
v Giao hoán phép chọn với phép toán 2 ngôi
Phép chọn và tích Descartes: P(Ai)(R S) (P(Ai)(R)) S
Chọn và nối : P(Ai)(RP(Aj,Bk)S) P(Ai)(R)P(Aj,Bk)S
Chọn và hợp cũng có thể giao hoán nếu R và T có lược đồ giống nhau:
P(Ai)(RT) P(Ai)(R) P(Ai)(T)Chọn và hiệu cũng có thể được giao hoán tương tự
vi Giao hoán phép chiếu với phép toán hai ngôi
Nếu C = A’B’, trong đó A’ A, B’ B; A, B là các tập thuộc tính tương ứng của các quan
hệ R và S, thì: C(R S) A’(R) B’(S)
Chiếu và nối: C(RP(Aj,Bk)S) A’(R)P(Ai,Bj)B’(S)
Để vế phải đúng, cần phải có Ai A’, Bj B’ Bởi vì C = A’B’ nên Ai và Bj C vì thế
Trang 13Ví dụ, cây ở hình 5–4 tương đương với cây trong hình 5-3
Hình 5–4 Cây toán tử tương đương với cây hình 5-3
PNAME = ”CAD/CAM” (DUR=12 DUR=24) ENAME ”J.Doe”
ASG
PROJEMP
Hình 5–3 Cây toán tử
Trang 14Các quy tắc trên có thể được sử dụng
để cấu trúc lại cây một cách có
hệ thống nhằm loại bỏ các cây
xấu
Các cách này có thể được sử dụng
bằng 4 cách khác nhau như sau:
1 Tách các phép toán đơn ngôi,
làm đơn giản hóa biểu thức vấn
tin
2 Các phép toán đơn ngôi trên
cùng một quan hệ có thể được
nhóm lại để chỉ cần thực hiện
truy xuất đến quan hệ một lần
3 Các phép toán đơn ngôi có thể
giao hoán với các phép toán hai
Quy tắc cuối cùng được sử dụng rộng
rãi trong kỹ thuật tối ưu vấn tin
Ví dụ 5-7Tái cấu trúc cây trong hình 5-3 sinh ra cây ở hình 5-5
Trang 155.2 CỤC BỘ HOÁ DỮ LIỆU PHÂN TÁN VÀ CÁC PHƯƠNG PHÁP RÚT GỌN CÂU VẤN TIN
Tầng cục bộ hoá dữ liệu sẽ chuyển câu vấn tin đại số “trên quan hệ toàn cục” sang câu vấn tin đại số “trên các mảnh vật lý”
Cục bộ hoá sử dụng các thông tin được lưu trong lược đồ phân mảnh
5.2.1 Rút gọn cho phân mảnh ngang nguyên thuỷ.
Ví dụ 5-8 Quan hệ EMP được tách thành ba mảnh ngang:
EMPH1 = ENO “E3” (EMP)
EMPH2 = “E3” < ENO “E6” (EMP)
EMPH3 = ENO “E6”(EMP)
Chương trình cục bộ hoá là: EMP = EMPH1 EMPH2 EMPH3
Câu vấn tin gốc thực hiện trên EMP sẽ được thực hiện trên
EMPH1 EMPH2 EMPH3Rút gọn vấn tin trên các mảnh ngang chủ yếu là xác định xem, sau khi đã tái cấu trúc lại cây con, cây nào tạo ra quan hệ rỗng thì bỏ cây con đó đi Vì nếu vị từ chọn mâu thuẫn với vị từphân mảnh sẽ sinh ra mảnh rỗng
Cho quan hệ R được phân mảnh ngang thành RH1, RH2,…, RHn trong đó RHi=Pi(R)
Qui tắc 1:
Cho vị từ chọn pk nếu x R: nếu (pi(x) pk(x)) thì pk(RHj) =
Chẳng hạn vị từ chọn p= ‘ENO = “E1”’ mâu thuẫn với các vị từ phân mảnh EMPH2 là p2 = ‘
“E3” < ENO “E6” ‘ và p3 = ‘ENO “E6” ‘
Trang 16Chương trình cục bộ hoá là EMP = EMPH1EMPH2EMPH3
Khi hoán vị phép chọn với phép hợp cây vấn tin (hình 5–6a) cho (hình 5–6b)
Dễ dàng phát hiện ra rằng vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH1 là(ENO “E3”) nên EMPH1 = và vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH3 là (ENO “E6”) nên EMPH3 =
Bởi vậy, câu vấn tin
SELECT *
FROM EMP
WHERE ENO = “E5”
bây giờ chỉ cần áp dụng trên EMPH2 (hình 5–6c).
Trang 175.2.1.2 Rút gọn với phép nối
Qui tắc 2:
Ri Rj = nếu x Ri, y Rj: thì (pi(x) pj(y)) = T
EMPH1 = ENO “E3” (EMP) ; pEMPH1 = (ENO “E3”)
EMPH2 = “E3” < ENO “E6” (EMP) ; pEMPH2 = (“E3” < ENO “E6”)
EMPH3 = ENO “E6”(EMP) ; pEMPH3 = (“E6” < ENO)
Vậy thì ( pEMPH1 pEMPH2) = T.; ( pEMPH1 pEMPH3) = T và ( pEMPH2 pEMPH3) = T
Ví dụ
EMPH1 = ENO “E3” (EMP) ; pEMPH1 = (ENO “E3”)
EMPH2 = “E3” < ENO “E6” (EMP) ; pEMPH2 = (“E3” < ENO “E6”)
EMPH3 = ENO “E6”(EMP) ; pEMPH3 = (“E6” < ENO)
và quan hệ ASG được phân mảnh ngang như sau:
ASGH1 = ENO “E3” (ASG) ; pASGH1 = (ENO “E3”)
ASGH2 = ENO “E3” (ASG) ; pASGH2 = (ENO “E3”)
Ví dụ 5–10
Bây giờ xét câu vấn tin nối
SELECT * FROM EMP, ASG WHERE EMP.ENO = ASG.ENO
Câu vấn tin gốc trong hình 5–7a Câu vấn tin rút gọn bằng cách phân phối các nối trên hợp và việc áp dụng qui tắc 2:
Trang 18pEMPH1 pASGH1 = (ENO “E3”) (ENO “E3”) = True
Vậy EMPH1 nối với ASGH1 có thể cho quan hệ khác rỗng
pEMPH1 pASGH2 = (“E3” ENO) (“E3” > ENO) = False
Vậy EMPH1 nối với ASGH2 cho quan hệ rỗng
pEMPH2 pASGH1 = (“E3” < ENO “E6”)(ENO“E3”) = False
Vậy EMPH2 nối với ASGH1 cho quan hệ rỗng
pEMPH2 pASGH2 = (“E3” < ENO “E6”) (ENO “E3”) = True
Vậy EMPH2 nối với ASGH2 có thể cho quan hệ khác rỗng
pEMPH3 pASGH1 = (“E6” < ENO) (ENO “E3”) = False
Vậy EMPH3 nối với ASGH1 cho quan hệ rỗng
pEMPH3 pASGH2 = (“E6” < ENO) (ENO “E3”) = True
Vậy EMPH3 nối với ASGH2 có thể cho quan hệ khác rỗng
Kết quả rút gọn ở hình 5– 7b
Trang 19EMPV1 = ENO , ENAME(EMP)
EMPV2 = ENO , TITLE(EMP)
Chương trình cục bộ hóa là EMP = EMPV1JENOEMPV2
D,K(Ri) là vô dụng nếu tập các thuộc tính chiếu D
hoặc K hoặc DK không thuộc A’ (hình
Hình 5-8a Phép chiếu vô dụng
Trang 20Ví dụ 5–12.
Hãy tối ưu hóa câu vấn tin SELECT ENAME FROM EMP
Với EMP được phân thành các mảnh dọc EMPV1 và EMPV2
EMPV1 = ENO , ENAME(EMP)
EMPV2 = ENO , TITLE(EMP)
Thấy rằng chương trình cục bộ hóa là EMP = EMPV1 ENOEMPV2
Câu vấn tin gốc trên EMPV1 ENOEMPV2 được cho trên hình 5–8b, sau khi hoán vị phép chiếu với phép nối (tức là chiếu trước nối) được cây hình 5–8c, chúng ta thấy
ENAME(EMPV2) là vô dụng vì ENAME không thuộc EMPV2 Vì vậy phép chiếu chỉ cần thực hiện trên EMPV1 như được trình bày trong hình 5-8d
Trang 215.2.3 Rút gọn cho phân mảnh dẫn xuất
ASGDXH1 = ASG Der EMPH1 // Der (Derivative = dẫn xuất)
ASGDXH2 = ASG Der EMPH2
Chương trình cục bộ hoá cho quan hệ phân mảnh ngang ASG là
ASG = ASGDXH1 ASGDXH2
Ví dụ 5-14
Rút gọn theo mảnh dẫn xuất cho câu vấn tin
SELECT * FROM EMP, ASG WHERE ASG.ENO = EMP.ENO
AND TITLE = “Mech.Eng”
Câu vấn tin gốc được thực thi trên các mảnh EMPH1, EMPH2, ASGH1, ASGH2 đã dịch nghĩa trước đây được trình bày trong hình 5-9
Trang 23Hình 5-11 Vấn tin sau khi dùng vị từ mâu
thuẫn
TITLE= Mech.Eng”
EMPH2ASGDXH1 ASGDXH2
JENO
phép HỢP sẽ được cây trên hình 5-12
Hình 5-12 Sau khi giao hoán Hợp và Nối
ASGDXH2ASGDXH1
từ TITLE = “programmer”trong ASGDXH1 và TITLE
“programmer” trong EMPH2 Vì thế chúng ta cóthể loại bỏ nhánh bên trái
và thu được câu vấn tin rút gọn của hình 5-13
Trang 24Tại đây chúng ta chỉ quan tâm đến các câu vấn tin chỉ
có chứa các phép toán chiếu , chọn và nối Join
Chú ý rằng tối ưu hóa một phép toán hoặc tổ hợp
của các phép toán luôn đi kèm với việc có thể tăng
chi phí của các phép toán khác Chẳng hạn như phân
mảnh hỗn hợp dựa trên tổ hợp chọn - chìếu sẽ làm
cho phép chọn hoặc phép chiếu kém hiệu quả hơn so
với phân mảnh ngang - hoặc phân mảnh dọc tương
Trang 25Chương trình cục bộ hoá của sơ đồ trên sẽ là: R = (R11 J R12) (R21 J R22 J R23)
Cách làm:
1 Loại bỏ các quan hệ rỗng được tạo ra bởi các phép chọn mâu thuẫn trên các mảnh ngang
2 Loại bỏ các quan hệ vô dụng được tạo ra bởi các phép chiếu trên các mảnh dọc
3 Phân phối các nối cho các hợp nhằm cô lập và loại bỏ các nối vô dụng
Ví dụ 5–16
Giả sử ta có phân mảnh hỗn hợp quan hệ EMP như sau:
EMPHH1 = ENO “E4” (ENO,ENAME(EMP))
EMPHH2 = ENO “E4” (ENO,ENAME(EMP))
EMPHH3 = ENO,TITLE(EMP)
Cho câu vấn tin SQL
xuống để loại bỏ EMPHH1 vì trong đó
không có “E5” (Xem hình 5-15)
Trang 26EMPHH2
Hình 5-15 Cây vấn tin đã loại
EMPHH1 vì nó không có “E5”
chiếu xuống và phép nối lên
được cây vấn tin trong hình
5-16 Trong cây ở hình 5-16 loại
nhánh bên phải do nó không