Rút gọn cho phân mảnh ngang nguyên thuỷ

Một phần của tài liệu Xử lý câu truy vấn sql qua phán đoán và cưỡng chế (Trang 34 - 38)

Chương 2: XỬ LÝ CÂU TRUY VẤN SQL

2.3. Các phương pháp rút gọn dựa vào phán đoán và cưỡng chế

2.3.1 Rút gọn cho phân mảnh ngang nguyên thuỷ

Phân mảnh ngang phân tán một quan hệ dựa trên các vị từ chọn (Select Predicate).

Ví dụ 2.6

Quan hệ EMP có thể đƣợc tách thành ba mảnh ngang nhƣ sau EMPH1 = ENO “E3” (EMP)

EMPH2 = “E3” < ENO “E6” (EMP) EMPH3 = ENO “E6” (EMP)

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Chương trình cục bộ hoá cho phân mảnh ngang trên là hợp các mảnh lại:

EMP = EMPH1 EMPH2 EMPH3

Vì vậy 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 quan hệ phân mảnh ngang chủ yếu là xác định, sau khi đã tái cấu trúc lại cây con, xem cây nào tạo ra quan hệ rỗng thì bỏ cây con đó đi. Phân mảnh ngang sẽ đƣợc sử dụng để làm đơn giản hoá các phép chọn và phép kết nối.

2.3.1.1 Rút gọn với phép chọn

Nếu chọn trên các mảnh có lớp vị từ mâu thuẫn với lƣợng từ hoá của qui tắc phân mảnh sẽ sinh ra các quan hệ 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:

Pi(RHj) = nếu x R: (pi(x) pj(x))

Trong đó pi(x) là vị từ chọn và pj(x) là vị từ phân mảnh còn x biểu thị một bộ (bản ghi), khi viết p(x) có nghĩa là “vị từ p đúng với x”.

Chẳng hạn vị từ chọn ENO = “E1” mâu thuẫn với các vị từ phân mảnh EMPH2 và EMPH3 (nghĩa là không có bộ nào trong EMPH2 và EMPH3 thoả vị từ chọn ENO

= “E1”).

Ví dụ 2.7

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”

Chương trình cục bộ hoá cho phân mảnh ngang EMP = EMPH1 EMPH2 EMPH3

cho ra cây vấn tin gốc (hình 2.1a). Bằng cách hoán vị phép chọn với phép hợp (hình 2.1b), chúng ta 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 (ENO “E3”)và vị từ phân mảnh EMPH3 (ENO “E6”) do vậy tạo ra quan hệ rỗng. Câu vấn tin bây giờ chỉ cần áp dụng trên EMPH2 (hình 2.1c).

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Hình 2.1. Rút gọn cho phân mảnh ngang (với phép chọn) 2.3.1.2. Rút gọn với phép nối

Nối trên các quan hệ phân mảnh ngang có thể đƣợc đơn giản khi các quan hệ nối đƣợc phân mảnh theo thuộc tính nối. Đơn giản hóa gồm có phân phối nối trên các hợp rồi bỏ đi các nối vô dụng. Từ phép phân phối nối và hợp:

(R1 R2) S = (R1 S) (R2 S) , trong đó Ri là các mảnh của R còn S là một quan hệ. Các hợp có thể đƣợc di chuyển trên cây toán tử để tất cả các nối có thể có của các mảnh đều thấy đƣợc. Các nối vô dụng có thể xác định đƣợc khi lƣợng từ hoá của các mảnh nối có mâu thuẫn. Gả sử rằng các mảnh Ri, Rj đƣợc định nghĩa tương ứng theo các vị từ pi, pj trên cùng một quan hệ, qui tắc đơn giản hoá có thể đƣợc phát biến nhƣ sau:

Qui tắc 2:

Ri Rj = nếu x Ri, y Rj: (pi(x) pj(y))

Việc xác định các kết nối vô dụng có thể đƣợc thực hiện bằng cách chỉ xét các vị từ của các mảnh. Áp dụng quy tắc này cho phép kết nối hai quan hệ đƣợc cài đặt nhƣ các nối từng phần song song các mảnh. Câu truy vấn rút gọn chƣa chắc đã đơn giản hơn câu truy vấn gốc, nếu nhƣ trong câu truy vấn gốc có rất nhiều nối từng phần, vì rất ít các vị từ phân mảnh mâu thuẫn. Nhƣ vậy câu truy vấn rút gọn sẽ tốt hơn khi có ít các (c) Vấn tin rút gọn

ENO = “E5”

EMPH2 (a) Vấn tin gốc

ENO = “E5”

EMPH1 EMPH2 EMPH3

(b) Vấn tin đã đổi cho

ENO = “E5”

EMPH1 EMPH2 EMPH3 ENO = “E5” ENO = “E5”

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

nối từng phần. Trường hợp xấu nhất xảy ra khi mỗi mảnh của quan hệ này được kết nối với mỗi mảnh khác của quan hệ khác, nghĩa là thực hiện phép tích Đề Các hai quan hệ.

Ƣu điểm của truy vấn rút gọn theo phép kết nối là các nối từng phần có thể đƣợc thực hiện song song và vì vậy nó sẽ làm giảm thời gian đáp ứng.

Ví dụ 2.8

Giả sử EMP đƣợc phân mảnh thành EMPH1, EMPH2 và EMPH3 nhƣ sau : 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”)

Nhƣ vậy EMPH1 và ASGH1 đƣợc định nghĩa bởi cùng một vị từ. Ngoài ra vị từ định nghĩa ASGH2 là hợp của các vị từ định nghĩa mảnh EMPH2 và EMPH3. 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 tương đương được trình bày trong hình 2.2a. 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:

pEMPH1 pASGH1 = (ENO “E3”) (ENO “E3”) = True

pEMPH1 pASGH2 = (“E3” ENO) (“E3” < ENO) = False cho quan hệ rỗng pEMPH2 pASGH1 = (“E3” < ENO “E6”) (ENO “E3”) = False cho quan hệ rỗng pEMPH2 pASGH2 = (“E3” < ENO “E6”) (ENO “E3”) = True

pEMPH3 pASGH1 = (“E6” < ENO) (ENO “E3”) = False cho quan hệ rỗng pEMPH3 pASGH2 = (“E6” < ENO) (ENO “E3”) = True

Kết quả rút gọn ở hình 2.2b.

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Hình 2.2. (a) vấn tin gốc

Một phần của tài liệu Xử lý câu truy vấn sql qua phán đoán và cưỡng chế (Trang 34 - 38)

Tải bản đầy đủ (PDF)

(61 trang)