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

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 36)

6. Các kết quả dự kiến đạt đƣợc

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 Rcò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, pjtrê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

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

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

(adsbygoogle = window.adsbygoogle || []).push({});

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

Hình 2.2. (b) vấn tin đã rút gọn

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 36)