Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
492,57 KB
Nội dung
CHƯƠNG V PHÂN RÃ VẤN TIN VÀ CỤC BỘ HOÁ DỮ LIỆU PGS.NCVC.TS LÊ HUY THẬP n ENO TITLE SAL Elect Eng Syst Anal Mech.Eng Progammer 40000 34000 27000 24000 Quan hệ PAY E1 E2 E3 E4 E5 E6 E7 E8 ENAME TITLE J.Doe M Smith A.Lee J.Mmith B.Casey L.Chu R.David J.Jones Elect Eng Syst Anal Mech.Eng Programmer Syst.Anal Elect.Eng Mech.Eng Syst Anal Quan hệ EMP n n ENO PNO RESP DUR E1 E2 E2 E3 E3 E4 E5 E6 E7 E8 P1 P1 P2 P3 P4 P2 P2 P4 P3 P3 Manager Analyst Analyst Consultant Engineer Programmer Manager Manager Engineer Manager 12 24 10 48 18 24 48 36 40 Title- Chuyên môn SAL: Salary-Lương Elect Eng Kỹ sư điện tử Syst Anal Nhà phân tích hệ thống Mech.Eng Kỹ sư khí 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 PNO PNAME BUDGET LOC P1 P2 P3 P4 Instrumentation Dabatase Develop CAD/ CAM Maintenance 150000 135000 250000 310000 Montreal New York New York Paris Quan hệ PROJ Quan hệ ASG n MaNV TrinhDoCM Luong Kỹ sư điện Phân tích thiết kế hệ thống Kỹ sư khí Lập trình viên 4000 3400 2700 2400 NV1 NV2 NV3 NV4 NV5 NV6 NV7 NV8 Quan hệ TraLuong TenNV TrinhDoCM 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 Kỹ sư điện Phân tích thiết kế hệ thống Kỹ sư khí Lập trình viên Phân tích thiết kế hệ thống Kỹ sư điện Kỹ sư khí Phân tích thiết kế hệ thống Quan hệ NhanVien n n MaNV MaDuAn ChucVu ThoiGianLV NV1 NV2 NV2 NV3 NV3 NV4 NV5 NV6 NV7 NV8 DA1 DA1 DA2 DA3 DA4 DA2 DA2 DA4 DA3 DA3 Giám đốc Nhân viên phân tích thiết kế Nhân viên phân tích 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 12 24 10 48 18 24 48 36 40 MaD uAn TenDuAn NganSac h ViTri DA1 DA2 DA3 DA4 Thiết bị đo đạc Phát triển CSDL CAD/ CAM Bảo dưỡng 150000 135000 250000 310000 Hải Phòng Hà Nội Hà Nội TP.Hồ Chí Minh Quan hệ DuAn Quan hệ PhanNhiem 5.1 PHÂN RÃ VẤN TIN Chuyển SQL sang AQL Các vấn tin nhập, xuất tham chiếu đến quan hệ toàn cục không dùng đến thông tin phân bố liệu ,vì phân rã vấn tin hệ tập trung lẫn phân tán giống 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.1 Chuẩn hoá câu vấn tin Chuẩn hoá CVT, 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 ngôn ngữ quan hệ SQL, biểu đồ quan trọng đưa vào phép toán logic , , , , , … Dạng chuẩn hội, hội tuyển có dạng: (p11 p12 … p1n) … (pm1 pm2 … pnm) Dạng chuẩn tuyển, tuyển hội có dạng Ví dụ: (p11 p12 … p1n) … (pm1 pm2 … pmn) Trong : p## vị từ đơn giản Ví dụ 5-1 “Tìm tên nhân viên làm dự án P1 12 24 tháng?” Dạng SQL 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)) 5.1.2 Phân tích câu vấn tin Phân tích câu vấn tin để bỏ câu vấn tin chuẩn hoá tiếp tục xử lý thừa Những lý chúng sai kiểu sai nghĩa Khi phát sai, hệ thống đưa thông báo Ngược lại xừ lý vấn tin tiếp tục Câu vấn tin sai kiểu Một câu vấn tin gọi sai kiểu, có thuộc tính tên quan hệ chưa khai báo lược đồ toàn cục, phép toán cho thuộc tính có kiểu không thích hợp Các khai báo kiểu phận lược đồ toàn cục (không nằm câu vấn tin, câu vấn tin không tạo kiểu liệu mới) Ví dụ 5-2 Cho câu vấn tin SQL SELECT E# FROM EMP WHERE ENAME > 200 Sai kiểu vì: Thuộc tính E# chưa khai báo (trong lược đồ quan hệ) phép so sánh ENAME > 200 không phù hợp (chuỗi s.sánh với số) Câu vấn tin sai nghĩa Câu vấn tin gọi sai nghĩa thành phần không tham gia vào việc tạo kết Ví dụ 5-3 ’’Tìm tên nhiệm vụ (RESP) lập trình viên (programmer) làm việc cho dự án CAD/CAM ba năm?” Câu SQL 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= “Programmer” Đồ thị vấn tin câu lệnh DUR36 ASG EMP.ENO = ASG.ENO TITLE = “Programmer” ASG.PNO = PROJ.PNO EMP.ENO = ASG.ENO EMP RESP RESUL T ASG.PNO = PROJ.PNO PROJ EM P ENAM E AS G PNAME = “CAD/CAM” PR OJ Hình 5-1b Đồ thị nối 5-1a Hình 5-1a Đồ thị vấn tin Ví dụ 5-4 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 đồ thị vấn tin không liên thông DUR36 EMP.ENO = ASG.ENO TITLE = “Programmer” EMP ENAME ASG RESP RESULT PROJ PNAME = “CAD/CAM” Hình 5-2 Đồ thị vấn tin không liên thông NHẬN XÉT • • • • Dựa vào đồ thị vấn tin ta thấy không liên thông, câu vấn tin sai Ba trường hợp làm: i Loại bỏ câu vấn tin ii Giả định có tích Descartes quan hệ ASG PROJ iii Bổ sung thêm nối ASG.PNO =PROJ.PNO bị thiếu 5.1.3 Loại bỏ dư thừa Người ta loại bỏ vị trí dư thừa áp dụng 10 quy tắc sau: PP PP PT PF PF P P P P F 10 PT P ┐P P ┐P P1 (P1 P2) P1 P1 (P1 P2) P1 T F T Ví dụ 5-5 Cho câu vấn tin SQL 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” Đơn giản hoá câu vấn tin nhờ 10 quy tắc sau Đặt P1 = ‘TITLE = ”programmer” ‘ P1 = ‘NOT(TITLE = ”programmer”) P2= TITLE = ”Elect.Eng” P2 = ‘NOT(TITLE = ” Elect.Eng”) P3=ENAME = ”J.Doe” Thì AQL là: (┐P1 (P1 v P2) ┐P2)) v P3 (┐P1(P1v P2)┐P2))vP3 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ư câu vấn tin SQL đơn giản sau: SELECT TITLE FROM EMP WHERE OR ENAME = “J.Doe” 5.1.4 Viết lại câu vấn tin Viết lại câu vấn tin đạ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 Định nghĩa toán tử Cây toán tử với nút biểu thị cho quan hệ lưu sở liệu, nút biểu thị quan hệ trung gian sinh phép toán quan hệ Chuỗi phép toán để theo hướng đến gốc, gốc biểu thị kết vấn tin Cách chuyển câu vấn tin SQL thành toán tử: i Tạo nút quan hệ SQL sau FROM ii Nút gốc thuộc tính sau SELECT phép chiếu thuộc tính kết iii Vị từ sau WHERE chuyển thành phép toán đại số quan hệ thích hợp (phép chọn, phép nối ,…) từ nút đến gốc 10 iii Luỹ thừa đẳng phép toán đơn ngôi: • Những phép chiếu liên tiếp quan hệ nhóm lại hoặctách Gọi R(A), A’ A, A” A, A’ A” A’(A’’(R)) A’( R) • Những phép chọn liên tiếp Pi(Ai) (i=1,2, ) quan hệ nhóm lại thành phép chọn qua hội 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 Phép chọn tích Descartes: P(Ai)(R S) (P(Ai)(R)) S Chọn nối : P(Ai)(RP(Aj,Bk)S) P(Ai)(R)P(Aj,Bk)S Chọn hợp giao hoán R T có lược đồ giống nhau: P(Ai)(RT) P(Ai)(R) P(Ai)(T) Chọn hiệu giao hoán tương tự vi Giao hoán phép chiếu với phép toán hai Nếu C = A’B’, A’ A, B’ B; A, B tập thuộc tính tương ứng quan hệ R S, thì: C(R S) A’(R) B’(S) Chiếu 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 C = A’B’ nên Ai Bj C không cần chiếu lên C chiếu A’ B’ Chiếu hợp giao hoán sau: C(RS) C(R)C(S) Chiếu hiệu giao hoán tương tự 12 Ví dụ, hình 5–4 tương đương với hình 5-3 ENAME PNAME = ”CAD/CAM” (DUR=12 DUR=24) ENAME ”J.Doe” PNO ENO EMP ASG PROJ Hình 5–4 Cây toán tử tương đương với hình 5-3 Hình 5–3 Cây toán tử 13 Các quy tắc sử dụng để cấu trúc lại cách có hệ thống nhằm loại bỏ xấu Các cách sử dụng cách khác sau: Tách phép toán đơn ngôi, làm đơn giản hóa biểu thức vấn tin Các phép toán đơn quan hệ nhóm lại để cần thực truy xuất đến quan hệ lần Các phép toán đơn giao hoán với phép toán hai để số phép toán (chẳng hạn phép chọn) thực hiển trước Các phép toán hai xếp lại Quy tắc cuối sử dụng rộng rãi kỹ thuật tối ưu vấn tin Ví dụ 5-7 Tái cấu trúc hình 5-3 sinh hình 5-5 14 5.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 hoá liệu 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 mảnh vật lý” Cục hoá sử dụng thông tin lưu 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 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 hoá là: EMP = EMPH1 EMPH2 EMPH3 Câu vấn tin gốc thực EMP thực EMPH1 EMPH2 EMPH3 Rút gọn vấn tin mảnh ngang chủ yếu xác định xem, sau tái cấu trúc lại con, tạo quan hệ rỗng bỏ Vì vị từ chọn mâu thuẫn với vị từ phân mảnh sinh mảnh rỗng Cho quan hệ R phân mảnh ngang thành RH1, RH2,…, RHn RHi=Pi(R) Qui tắc 1: Cho vị từ chọn pk x R: (pi(x) pk(x)) pk(RHj) = Chẳng hạn vị từ chọn p= ‘ENO = “E1”’ mâu thuẫn với vị từ phân mảnh EMPH2 p2 = ‘ “E3” < ENO “E6” ‘ p3 = ‘ENO “E6” ‘ 15 Ví dụ 5-9 Rút gọn cho phân mảnh ngang dùng câu vấn tin mẫu sau: SELECT * FROM EMP WHERE ENO = “E5” Giải Chương trình cục hoá EMP = EMPH1EMPH2EMPH3 Khi hoán vị phép chọn với phép hợp vấn tin (hình 5–6a) cho (hình 5–6b) Dễ dàng phát vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH1 (ENO “E3”) nên EMPH1 = vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH3 (ENO “E6”) nên EMPH3 = Bởi vậy, câu vấn tin SELECT * FROM EMP WHERE ENO = “E5” cần áp dụng EMPH2 (hình 5–6c) 16 5.2.1.2 Rút gọn với phép nối Qui tắc 2: Ri Ví dụ Rj = x Ri, y Rj: (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 ( pEMPH1 pEMPH2) = T.; ( pEMPH1 pEMPH3) = T ( pEMPH2 pEMPH3) = T Ví dụ 5–10 EMPH1 = ENO “E3” (EMP) ; pEMPH1 = (ENO “E3”) EMPH2 = “E3” < ENO “E6” (EMP) ; pEMPH2 = (“E3” < ENO “E6”) EMPH3 = ENO “E6” (EMP) ; pEMPH3 = (“E6” < ENO) quan hệ ASG phân mảnh ngang sau: ASGH1 = ENO “E3” (ASG) ; pASGH1 = (ENO “E3”) ASGH2 = ENO “E3” (ASG) ; pASGH2 = (ENO “E3”) Bây 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 hình 5–7a Câu vấn tin rút gọn cách phân phối nối hợp việc áp dụng qui tắc 2: 17 pEMPH1 pASGH1 = (ENO “E3”) (ENO “E3”) = True Vậy EMPH1 nối với ASGH1 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 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 cho quan hệ khác rỗng Kết rút gọn hình 5– 7b 18 5.2.2 Rút gọn cho phân mảnh dọc Mỗi mảnh dọc có mặt tập khóa Toán tử tái thiết “nối” qua tập khóa Chương trình cục hoá (tái thiết lại quan hệ ban đầu) “nối” mảnh dọc Ví dụ 5–11 Quan hệ EMP phân thành hai mảnh dọc EMPV1(ENO , ENAME) EMPV2(ENO, TITLE) sau EMPV1 = ENO , ENAME(EMP) EMPV2 = ENO , TITLE(EMP) Chương trình cục hóa EMP = EMPV1JENOEMPV2 Nhận xét Phép chiếu mảnh dọc thuộc tính chung với thuộc tính chiếu (trừ khóa quan hệ) sinh quan hệ vô dụng, mặc du quan hệ rỗng Cho trước quan hệ R(A) | A = {A1, …, An} phân mảnh thành mảnh dọc thành Ri = A’(R) | A’ A Ta có qui tắc cần lưu ý sau: Ri D K Qui tắc D,K(Ri) vô dụng tập thuộc tính chiếu D K DK không thuộc A’ (hình 58a) D K A’ Hình 5-8a Phép chiếu vô dụng 19 Ví dụ 5–12 Hãy tối ưu hóa câu vấn tin SELECT ENAME FROM EMP Với EMP phân thành mảnh dọc EMPV1 EMPV2 EMPV1 = ENO , ENAME(EMP) EMPV2 = ENO , TITLE(EMP) Thấy chương trình cục hóa EMP = EMPV1 ENOEMPV2 Câu vấn tin gốc EMPV1 ENOEMPV2 cho hình 5–8b, sau hoán vị phép chiếu với phép nối (tức chiếu trước nối) hình 5–8c, thấy ENAME(EMPV2) vô dụng ENAME không thuộc EMPV2 Vì phép chiếu cần thực EMPV1 trình bày hình 5-8d ENAME ENAME ENO EMPV1 (b) vấn tin gốc ENAME ENO EMPV2 EMPV1 (c) vấn tin gốc ENAME EMPV1 EMPV2 (d) vấn tin rút gọn Hình 5–8b,c,d Rút gọn cho phân mảnh dọc 20 5.2.3 Rút gọn cho phân mảnh dẫn xuất Ví dụ 5-13 Thấy liên kết từ quan hệ EMP(ENO, ENAME, TITLE) đến quan hệ ASG(ENO, PNO,RESP, DUR) 1-n Gử EMP phân mảnh ngang sau : EMPH1 = TITLE = ” programmer ” (EMP) EMPH2 = TITLE ” programmer ” (EMP) Chương trình cục hoá phân mảnh ngang hợp mảnh Tức là: EMP = EMPH1EMPH2 Vậy ASG phân mảnh gián tiếp (phân mảnh dẫn xuất Der) theo qui tắc sau: ASGDXH1 = ASG Der EMPH1 // Der (Derivative = dẫn xuất) ASGDXH2 = ASG Der EMPH2 Chương trình cục hoá cho quan hệ phân mảnh ngang ASG 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 thực thi mảnh EMPH1, EMPH2, ASGH1, ASGH2 dịch nghĩa trước trình bày hình 5-9 21 JENO TITLE= “Mech.Eng” ASGH1 ASGH2 EMPH1 EMPH2 Bằng cách giao hoán phép chọn TITLE= Mech.Eng phép hợp nhánh bên phải ta kết hình 5.10 hình 5-9 Vấn tin gốc ví dụ 5.14 JoinENO TITLE= “Mech.Eng” ASGH1 ASGH2 EMPH1 EMPH2 Do EMPH1 có thỏa vị từ TITLE = ” programmer” thỏa mãn TITLE = “Mech.Eng” nên vị từ chọn mâu thuẫn với vị từ phân mảnh EMPH1 loại bỏ mảnh EMPH1 Kết lọa bỏ hình 5-11 Hình 5-10 Vấn tin giao hoán 22 JENO TITLE= Mech.Eng” ASGDXH1 Hãy giao hoán phép NỐI phép HỢP hình 5-12 EMPH2 ASGDXH2 Hình 5-11 Vấn tin sau dùng vị từ mâu thuẫn JoinENO ASG DXH1 TITLE= Mech.Eng” JoinENO ASGDXH2 TITLE= Mech.Eng” EMPH2 EMPH2 Cây bên trái nối hai mảnh ASGDXH1 , EMPH2 với vị từ mâu thuẫn vị từ TITLE = “programmer” ASGDXH1 TITLE “programmer” EMPH2 Vì loại bỏ nhánh bên trái thu câu vấn tin rút gọn hình 5-13 Hình 5-12 Sau giao hoán Hợp Nối 23 5.2.4 Rút gọn cho phân mảnh hỗn hợp JoinENO Tại quan tâm đến câu vấn tin có chứa phép toán chiếu , chọn nối Join Chú ý tối ưu hóa phép toán tổ hợp phép toán kèm với việc tăng chi phí phép toán khác Chẳng hạn phân mảnh hỗn hợp dựa tổ hợp chọn - chìếu làm cho phép chọn phép chiếu hiệu so với phân mảnh ngang - phân mảnh dọc tương ứng TITLE= Mech.Eng” ASGH2 EMPH2 Hình 5-13 Rút gọn cho phân mảnh dẫn xuất Chương trình cục hóa cho quan hệ phân mảnh hỗn hợp tổ phép hợp nối mảnh R H H R1 V R11 H H R2 V V R12 R21 Phân mảnh hỗn hợp V R22 V R23 V R11 V R12 V V R21 R22 V R23 Tái thiết mảnh hỗn hợp 24 Chương trình cục hoá sơ đồ là: R = (R11 J R12) (R21 J R22 J R23) Cách làm: Loại bỏ quan hệ rỗng tạo phép chọn mâu thuẫn mảnh ngang Loại bỏ quan hệ vô dụng tạo phép chiếu mảnh dọc Phân phối nối cho hợp nhằm cô lập loại bỏ nối vô dụng Ví dụ 5–16 Giả sử ta có phân mảnh hỗn hợp quan hệ EMP sau: EMPHH1 = ENO “E4” (ENO,ENAME(EMP)) EMPHH2 = ENO “E4” (ENO,ENAME(EMP)) EMPHH3 = ENO,TITLE(EMP) ENO,ENAME Cho câu vấn tin SQL SELECT ENAME FROM EMP WHERE ENO = “E5” Cây vấn tin gốc hình 5-14 Cây vấn tin gốc hình 5-14 rút gọn cách đẩy phép chọn xuống để loại bỏ EMPHH1 “E5” (Xem hình 5-15) ENO = “E5” JENO EMPHH1 EMPHH3 EMPHH2 Hình 5-14 Cây vấn tin gốc 25 JENO ENO,ENAME ENO,ENAME ENO,ENAME JENO ENO = ENO = EMPHH2 “E5” ENO = “E5” ENO = “E5” “E5” EMPHH3 Hình 5-15 Cây vấn tin loại EMPHH1 “E5” EMPHH2 EMPHH3 Hình 5-16 Cây vấn tin đẩy phép chiếu xuống, phép nối lên ENO,ENAME Trong hình 5-15 đẩy phép chiếu xuống phép nối lên vấn tin hình 516 Trong hình 5-16 loại nhánh bên phải thuộc tính ENAME Kết cuối hình 5-17 ENO = “E5” EMPHH2 Hình 5-17 Câu vấn tin rút gọn 26 [...]... 5-7 Tái cấu trúc cây trong hình 5-3 sinh ra cây ở hình 5-5 14 5.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... với các vị từ phân mảnh EMPH2 là p2 = ‘ “E3” < ENO “E6” ‘ và p3 = ‘ENO “E6” ‘ 15 Ví dụ 5-9 Rút gọn cho phân mảnh ngang khi dùng câu vấn tin mẫu sau: SELECT * FROM EMP WHERE ENO = “E5” Giải Chươ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... 5– 7b 18 5.2.2 Rút gọn cho phân mảnh dọc Mỗi mảnh dọc luôn có mặt của tập khóa chính Toán tử tái thiết là “nối” qua tập khóa Chương trình cục bộ hoá (tái thiết lại quan hệ ban đầu) là “nối” các mảnh dọc Ví dụ 5–11 Quan hệ EMP được phân thành hai mảnh dọc EMPV1(ENO , ENAME) và EMPV2(ENO, TITLE) như sau EMPV1 = ENO , ENAME(EMP) EMPV2 = ENO , TITLE(EMP) Chương trình cục bộ hóa là EMP = EMPV1JENOEMPV2... Chương trình cục bộ hoá phân mảnh ngang là hợp của các mảnh của nó Tức là: EMP = EMPH1EMPH2 Vậy ASG có thể được phân mảnh gián tiếp (phân mảnh dẫn xuất Der) theo các qui tắc sau: 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... 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 Hình 5-12 Sau khi giao hoán Hợp và Nối 23 5.2.4 Rút gọn cho phân mảnh hỗn hợp JoinENO Tạ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... 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 ứng TITLE= Mech.Eng” ASGH2 EMPH2 Hình 5-13 Rút gọn cho phân mảnh dẫn xuất Chương trình cục bộ hóa cho một quan hệ phân mảnh hỗn hợp là tổ của các phép hợp và nối các mảnh R H H R1 V R11 H H R2 V V R12 R21 Phân mảnh hỗn hợp V R22... trình bày trong hình 5-8d ENAME ENAME ENO EMPV1 (b) vấn tin gốc ENAME ENO EMPV2 EMPV1 (c) vấn tin gốc ENAME EMPV1 EMPV2 (d) vấn tin đã rút gọn Hình 5–8b,c,d Rút gọn cho phân mảnh dọc 20 5.2.3 Rút gọn cho phân mảnh dẫn xuất Ví dụ 5-13 Thấy rằng liên kết từ quan hệ EMP(ENO, ENAME, TITLE) đến quan hệ ASG(ENO, PNO,RESP, DUR) là 1-n Gử rằng EMP được phân mảnh ngang như sau : EMPH1 = TITLE = ” programmer... “E5” EMPHH3 Hình 5-15 Cây vấn tin đã loại EMPHH1 vì nó không có “E5” EMPHH2 EMPHH3 Hình 5-16 Cây vấn tin đã đẩy phép chiếu xuống, phép nối lên ENO,ENAME Trong hình 5-15 đẩy phép chiếu xuống và phép nối lên được cây vấn tin trong hình 516 Trong cây ở hình 5-16 loại nhánh bên phải do nó không có thuộc tính ENAME Kết quả cuối cùng trên hình 5-17 ENO = “E5” EMPHH2 Hình 5-17 Câu vấn tin đã rút gọn 26 ... “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 EMPH3 Rú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... DK không thuộc A’ (hình 58a) D K A’ Hình 5-8a Phép chiếu vô dụng 19 Ví 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