Chuẩn hoá câu truy vấn ppsx

22 414 2
Chuẩn hoá câu truy vấn ppsx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chuẩn hoá câu truy vấn GV Nguyễn Văn Chức Mục đích: chuyển đổi truy vấn thành dạng chuẩn để thuận lợi cho xử lý tiếp theo, phát sai sót kiểu ngữ nghĩa câu truy vấn, Tối ưu hoá câu truy vấn Với SQL, có hai dạng chuẩn cho tân từ mệnh đề WHERE là: Dạng chuẩn hội hội (∧) phép toán tuyển (∨): (p11∨ p12∨ ∨ p1n) ∧ ∧ (pm1∨ pm2∨ ∨ pmn) Dạng chuẩn tuyển tuyển (∨) phép toán hội (∧): (p11 ∧ p12 ∧ ∧ p1n) ∨ ∨ (pm1 ∧ pm2 ∧ ∧pmn), pij biểu thức nguyên tố Chuẩn hoá câu truy vấn Xét CSDL sau NHANVIEN (Nhân Viên) HOSO (Hồ Sơ) DUAN (Dự án) Chuẩn hoá câu truy vấn Các quy tắc biến đổi tương đương phép toán logic: p1 ∧ p2 ⇔ p2 ∧ p1 p1 ∨ p2 ⇔ p2 ∨ p1 ¬ (¬ p) ⇔ p ¬(p1 ∧ p2) ⇔ ¬ p1 ∨ ¬ p2 ¬(p1 ∨ p2) ⇔ ¬ p1 ∧ ¬ p2 p1 ∨ (p2 ∧ p3) ⇔ (p1 ∨ p2) ∧ (p1 ∨ p3) p1 ∨ (p2 ∨ p3) ⇔ (p1 ∨ p2) ∨ p3 p1 ∧ (p2 ∧ p3) ⇔ (p1 ∧ p2) ∧ p3 p1 ∧ (p2 ∨ p3) ⇔ (p1 ∧ p2) ∨ (p1 ∧ p3) Chuẩn hoá câu truy vấn Ví dụ: Từ quan hệ NHANVIEN (MANV, TENNV, CHUCVU) HOSO (MANV, MADA, NHIEMVU, THOIGIAN) Xét truy vấn: “Tìm tên nhân viên làm dự án J1 có thời gian 12 24 tháng” Truy vấn biểu diễn SQL: SELECT NHANVIEN TENNV FROM NHANVIEN, HOSO WHERE NHANVIEN.MANV= HOSO.MANV AND HOSO.MADA=”J1” AND THOIGIAN=12 OR THOIGIAN=24 Điều kiện dạng chuẩn hội là: NHANVIEN.MANV=HOSO.MANV ∧ HOSO.MADA=”J1” ∧ (THOIGIAN=12 ∨ THOIGIAN=24) Điều kiện dạng chuẩn tuyển là: (NHANVIEN.MANV=HOSO.MANV ∧ HOSO.MADA=”J1” ∧THOIGIAN=12) ∨ (NHANVIEN.MANV=HOSO.MANV ∧ HOSO.MADA=”J1” ∧THOIGIAN=24) Chuẩn hố câu truy vấn Phân tích Mục đích: Phát thành phần khơng (sai kiểu sai ngữ nghĩa) loại bỏ chúng sớm Truy vấn sai kiểu: thuộc tính tên quan hệ không định nghĩa lược đồ tổng thể, phép tốn áp dụng cho thuộc tính sai kiểu Ví dụ: truy vấn sai kiểu SELECT E# FROM E WHERE E.TENNV > 200 hai lý do: •Thuộc tính E# khơng khai báo lược đồ •Phép tốn “>200” khơng thích hợp với kiểu chuỗi thuộc tính E.TENNV Chuẩn hố câu truy vấn Truy vấn sai ngữ nghĩa: thành phần không tham gia vào việc tạo kết Để xác định truy vấn có sai ngữ nghĩa hay không, ta dựa việc biểu diễn truy vấn đồ thị gọi đồ thị truy vấn Đồ thị xác định truy vấn liên quan đến phép chọn, chiếu nối Nếu đồ thị truy vấn mà khơng liên thơng truy vấn sai ngữ nghĩa Chuẩn hoá câu truy vấn Đồ thị truy vấn: • Một nút dùng để biểu diễn cho quan hệ kết • Các nút khác biểu diễn cho tốn hạng quan hệ • Cạnh nối hai nút nút kết biểu diễn phép nối • Cạnh có nút đích kết biểu diễn phép chiếu • Một nút khơng phải kết gán nhãn phép chọn phép tự nối (seft-join: nối quan hệ với nó) Đồ thị kết nối: • Là đồ thị đồ thị truy vấn (join graph), có phép nối Chuẩn hố câu truy vấn Ví dụ: Từ quan hệ E=NHANVIEN (MANV, TENNV, CHUCVU) G = HOSO (MANV, MADA, NHIEMVU, THOIGIAN) J=DUAN (MADA, TENDA, NGANSACH) Hãy xác định “Tên nhiệm vụ lập trình viên làm dự án CSDL có thời gian lớn năm.” Truy vấn SQL tương ứng là: SELECT FROM WHERE E.TENNV, G.NHIEMVU E, G, J E.MANV=G.MANV AND G.MADA.= J.MADA AND TENDA=”CSDL” AND THOIGIAN≥ 36 AND CHUCVU=”LTRINH” Chuẩn hoá câu truy vấn Đồ thị truy vấn đồ thị kết nối tương ứng THOIGIAN ≥ 36 G E.MANV=G.MANV G.NHIEMV U E CHUCVU= “Lập trình” G.MADA=J.MADA J TENDA=”CSDL” E.TENNV Kết (a) Đồ thị truy vấn G G.MANV=G.MANV E G.MANV=J.MANV J (b) Đồ thị kết nối tương ứng 10 Chuẩn hoá câu truy vấn Câu truy vấn SQL tương ứng: thiếu AND G.MADA=J.MADA SELECT E.TENNV, NHIEMVU FROM E, G, J WHERE E.MANV=G.MANV AND TENDA=”CSDL” AND THOIGIAN ≥ 36 AND CHUCVU=”Lập trình” Truy vấn sai ngữ nghĩa đồ thị truy vấn khơng liên thơng THOIGIAN ≥ 36 E.MANV=G.MANV CHUCVU= “Lập trình” E G G.NHIEMVU J TENDA=”CSDL” E.TENNV Kết Đồ thị truy vấn Chuẩn hoá câu truy vấn 11 Loại bỏ dư thừa • Điều kiện truy vấn có chứa tân từ dư thừa • Một đánh giá sơ sài điều kiện dư thừa dẫn đến lặp lại số cơng việc • Sự dư thừa tân từ dư thừa cơng việc loại bỏ cách làm đơn giản hố điều kiện thơng qua luật luỹ đẳng sau: p ∧ p⇔ p p ∨ true ⇔ true p ∨ p⇔ p p ∧ ¬ p ⇔ false p ∧ true ⇔ p p ∨ ¬ p ⇔ true p ∨ false ⇔ p p1 ∧ (p1 ∨ p2) ⇔ p1 p ∧ false ⇔ false 10.p1 ∨ (p1 ∧ p2) ⇔ p1 Ví dụ: xét câu truy vấn sau: Chuẩn hoá câu truy vấn SELECT G.CHUCVU FROM E WHERE (NOT(G.CHUCVU=”Lập trình”) AND (G.CHUCVU=”Lập trình” OR G.CHUCVU=”Kỹ sư điện”) AND NOT(G.CHUCVU=”Kỹ sư điện”) OR E.TENNV=”Dung” Sử dụng luật lũy đẳng nêu trên, truy vấn biến đổi thành: SELECT G.CHUCVU FROM E WHERE E.TENNV=”Dung” Thực vậy, đặt p1:, p2:, p3: Khi đó, tân từ sau mệnh đề WHERE mơ tả lại: p: (¬ p1 ∧ (p1 ∨ p2) ∧ ¬ p2) ∨ p3 ⇔ (¬ p1 ∧ p1 ∧ ¬ p2) ∨ (¬ p1 ∧ p2 ∧ ¬ p2) ∨ p3 (áp dụng luật 7) ⇔ (false ∧ ¬ p2) ∨ (¬ p1 ∧ false) ∨ p3 (áp dụng luật 5) ⇔ false ∨ false ∨ p3 (áp dụng luật 4) ⇔ p3 12 Chuẩn hoá câu truy vấn 13 Viết lại Bước chia làm hai bước sau: • Biến đổi trực tiếp truy vấn phép tính sang đại số quan hệ • Cấu trúc lại truy vấn đại số quan hệ để cải thiện hiệu thực Thông thường người ta biểu diễn truy vấn đại số quan hệ đại số quan hệ Cây đại số quan hệ mà nút biểu diễn quan hệ CSDL, nút không quan hệ trung gian sinh phép toán đại số quan hệ Chuẩn hoá câu truy vấn 14 Cách chuyển truy vấn phép tính quan hệ thành đại số quan hệ: • Các nút khác tạo cho biến khác (tương ứng quan hệ) Trong SQL nút quan hệ mệnh đề FROM • Nút gốc tạo xem phép chiếu lên thuộc tính kết Trong SQL nút gốc xác định qua mệnh đề SELECT • Điều kiện (mệnh đề WHERE SQL) biến đổi thành dãy phép tốn đại số thích hợp (phép chọn, nối, phép hợp, v.v ) từ đến gốc, thực theo thứ tự xuất tân từ phép toán Chuẩn hoá câu truy vấn 15 Ví dụ: Truy vấn “Tìm tên nhân viên “Dũng”, làm việc cho dự án CSDL với thời gian hai năm” Biểu diễn truy vấn SQL là: SELECT TENNV FROM J, G, E WHERE G.MANV=E.MANV AND G.MADA= J.MADA AND E.TENNV “Dũng” AND J.TENDA= “CSDL” AND (THOIGIAN=12 OR THOIGIAN=24) Chuẩn hoá câu truy vấn 16 Chuẩn hoá câu truy vấn 17 06 luật biến đổi phép toán đại số quan hệ: Mục đích: dùng để biến đổi đại số quan hệ thành tương đương (trong có tối ưu) Giả sử R, S, T quan hệ, R định nghĩa toàn thuộc tính A={A1, , An}, S định nghĩa tồn thuộc tính B={B1, , Bn} 1.Tính giao hốn phép tốn hai ngơi: Phép tích Decartes phép nối hai quan hệ có tính giao hốn i R × S ⇔ S × R ii R S ⇔ S R Tính kết hợp phép tốn hai ngơi: Phép tích Decartes phép nối hai quan hệ có tính kết hợp i (R×S) × T ⇔ R × (S×T) ii (R S) T ⇔ R (S T) 18 Chuẩn hố câu truy vấn Tính luỹ đẳng phép tốn ngơi • Dãy phép chiếu khác quan hệ tổ hợp thành phép chiếu ngược lại: Π A’(Π A’’(R)) ⇔ Π A’(R) A’, A’’∈R A’ ⊆ A’’ • Dãy phép chọn khác σ pi(Ai) quan hệ, với pi tân từ gán vào thuộc tính Ai , tổ hợp thành phép chọn σ p1(A1)(σ p2(A2)(R)) = σ p1(A1) ∧ p2(A2)(R) 19 Chuẩn hoá câu truy vấn Phép chọn giao hoán với phép chiếu Π A1, , An(σ p (Ap)(R)) ⇔ Π A1, , An(σ p(Ap)(Π A1, ,An,Ap(R)) Nếu Ap thành viên {A1, , An}, biểu thức thành Π A1, , An (σ p(Ap)(R)) ⇔ σ p(Ap)(Π A1, , An(R)) Phép chọn giao hốn với phép tốn hai ngơi • Phép chọn với phép nhân: σ p(Ai)(R × S) ⇔ p(Ai)(R) ì S ã Phộp chn vi phộp ni: σ p(Ai)(R p(Ai,Bk) S) ⇔ σ p(Ai) (R) S (Aj,Bk) • Phép chọn với phép hợp: Nếu R T thuộc tính σ p(Ai)(R∪T) ⇔ σ p(Ai)(R) ∪ σ p(Ai)(T) 20 Chuẩn hoá câu truy vấn Phép chiếu giao hốn với phép tốn hai ngơi • Phép chiếu tích Decartes: Nếu C=A’∪B’ với A’⊆ A, B’⊆ B, A, B tập thuộc tính quan hệ R, S ta có: Π C(R×S) = A(R) ì B(S) ã Phộp chiu v phộp nối: Π C(R p(Ai,Bj) S) = Π A’(R) p(Ai,Bj) Π B’(S) • Phép chiếu phép hợp: Π C(R∪S) = Π A’(R) ∪ Π B’(S) Chú ý: Việc sử dụng sáu luật có khả sinh nhiều đại số quan hệ tương đương Vấn đề xác định cho tối ưu Chuẩn hoá câu truy vấn 21 Chú ý: Trong giai đoạn tối ưu, so sánh thực dựa chi phí dự đốn chúng Tuy nhiên, số lượng lớn cách tiếp cận khơng hiệu Có thể dùng luật để cấu trúc lại cây, nhằm loại bỏ đại số quan hệ “tồi” Các luật sử dụng theo bốn cách sau: • Phân rã phép tốn ngơi, đơn giản hóa biểu thức truy vấn • Nhóm phép tốn quan hệ để giảm số lần thực • Giao hốn phép tốn ngơi với phép tốn hai ngơi để ưu tiên cho số phép tốn (chẳng hạn phép chọn) • Sắp thứ tự phép tốn hai ngơi thực truy vấn Chuẩn hố câu truy vấn 22 Ví dụ: Cấu trúc lại truy vấn ví dụ trên, cho kết tốt ban đầu, nhiên xa tối ưu ... truy vấn Đồ thị xác định truy vấn liên quan đến phép chọn, chiếu nối Nếu đồ thị truy vấn mà không liên thơng truy vấn sai ngữ nghĩa Chuẩn hố câu truy vấn Đồ thị truy vấn: • Một nút dùng để biểu.. .Chuẩn hoá câu truy vấn Xét CSDL sau NHANVIEN (Nhân Viên) HOSO (Hồ Sơ) DUAN (Dự án) Chuẩn hoá câu truy vấn Các quy tắc biến đổi tương đương phép toán... trình” Truy vấn sai ngữ nghĩa đồ thị truy vấn khơng liên thơng THOIGIAN ≥ 36 E.MANV=G.MANV CHUCVU= “Lập trình” E G G.NHIEMVU J TENDA=”CSDL” E.TENNV Kết Đồ thị truy vấn Chuẩn hoá câu truy vấn 11 Loại

Ngày đăng: 01/08/2014, 02:20

Mục lục

  • Chuẩn hoá câu truy vấn

Tài liệu cùng người dùng

Tài liệu liên quan