5.5 Phõn ró truy vấn
5.5.3 Bước viết lại truy vấn
Bước cuối cựng của việc phõn ró truy vấn là viết lại truy vấn dưới dạng đại số quan hệ. Bước này lại chia thành cỏc bước nhỏ sau:
1. Chuyển đổi cõu truy vấn từ phộp tớnh quan hệ sang đại số quan hệ. 2. Xõy dựng lại truy vấn đại số quan hệ để cải thiện khả năng thực hiện.
Cú thể biểu diễn cõu truy vấn đại số quan hệ bằng một cõy đại số quan hệ. Cỏc node lỏ của nú biểu thị cho một quan hệ được lưu trữ trong cơ sở dữ liệu và cỏc node khụng phải là node lỏ biểu thị cho một quan hệ trung gian sinh ra bởi cỏc phộp toỏn đại số quan hệ. Chuỗi cỏc thao tỏc từ cỏc node lỏ đến cỏc node gốc biểu diễn cho kết quả cõu truy vấn.
Biến đổi một cõu truy vấn phộp tớnh quan hệ thành một cõy đại số quan hệ, thực hiện như sau: cỏc node lỏ tương ứng với cỏc quan hệ cú sau mệnh đề FROM. Node gốc được tạo ra như một phộp chiếu chứa cỏc thuộc tớnh kết quả. Cỏc thuộc tớnh này nằm sau mệnh đề
SELECT của cõu truy vấn. Lượng từ húa sau mệnh đề WHERE được biểu thị bằng một chuỗi cỏc phộp toỏn chọn, kết nối, phộp hợp...đi từ cỏc node lỏ đến node gốc. Chuỗi này cú thể được cho trực tiếp qua thứ tự xuất hiện của cỏc vị từ và cỏc toỏn tử.
Vớ dụ 5.8: Xột cõu truy vấn sau: “ Xỏc định tờn cỏc nhõn viờn trừ J. Doe đó làm cho dự
ỏn CAD/CAM trong một hoặc hai năm” Cõu lệnh SQL như sau:
SELECT ENAME
FROM EMP, ASG, PROJ
WHERE EMP.ENO = ASG.ENO AND PROJ.PNO = ASG.PNO AND ENAME ≠ “J.Doe”
AND PROJ.NAME = “CAD/CAM” AND (DUR =12 OR DUR =24) Cõy đại số quan hệ như sau:
Cỏc quy tắc biến đổi cõy đại số quan hệ :
Cho cỏc quan hệ R(A), A = {A1, A2, .., An }, S(B), B = {B1, B2,, ... , Bn } và T. Cú thể nhận được cỏc cõy đại số quan hệ tương đương, ỏp dụng cỏc qui tắc biến đổi
(Transformation Rule) sau:
1. Tớnh chất giao hoỏn của cỏc phộp tốn hai ngơi:
• Tớch Đề cỏc: R x S ⇔ S x R
PROJ ASG EMP
><ENO ><PNO Kết nối σENAME ≠ “J.Doe” σPNAME = “CAD/CAM” σDUR =12 OR DUR =24 πENAME Phộp chọn Phộp chiếu
• Kết nối : R>< S ⇔ S>< R.
• Hợp của hai quan hệ: R ∪ S ⇔ S ∪ R
• Qui tắc này khụng được ỏp dụng cho hiệu và kết nối nửạ 2. Tớnh kết hợp của cỏc phộp tốn hai ngơị
• Tớch Đề cỏc: (R x S) x T ⇔ R x (S x T)
• Kết nối : R>< (S >< T) ⇔ (R >< R) >< T 3. Tớnh lũy đẳng của cỏc phộp toỏn đơn ngụi:
• Cỏc phộp chiếu liờn tiếp trờn cựng một quan hệ cú thể nhúm lại với nhaụ Ngược lại một phộp chiếu trờn nhiều thuộc tớnh cú thể tỏch ra nhiều phộp chiếu liờn tiếp nhaụ Nếu A’ ⊆ A và A’’ ⊆ A’, khi đú πA΄(πA΄΄(R)) ⇔ πA΄(R)
• Cỏc phộp chọn liờn tiếp σpi(Ai) trờn cựng một quan hệ, trong đú pi là một vị từ
được ỏp dụng cho thuộc tớnh Ai cú thể được nhúm lạị Ngược lại một phộp
chọn qua một hội cỏc vị từ cú thể được tỏch ra thành nhiều phộp chọn liờn tiếp.
σp1(A1)(σp2(A2) (R)) ⇔ σp1(A1) ∧ σp2(A2) (R)
5. Giao hoỏn phộp chọn với phộp chiếu:
Phộp chọn và chiếu trờn cựng một quan hệ cú thể được giao hoỏn như sau: πA1,...,An (σp(Ap) (R)) ⇔ πA1,...,An (σp(Ap)(πA1,...,An,Ap(R)))
5 Giao hoỏn phộp chọn với cỏc phộp toỏn hai ngơi:
• Phộp chọn và tớch Đề cỏc: σp(Ai)(R x S) ⇔ (σp(Ai)(R)) x S
• Phộp chọn và kết nối: σp(Ai)(R ><p(Aj,Bk) S) ⇔ σp(Ai)(R) >< p(Aj,Bk) S
• Phộp chọn và hợp: σp(Ai)(R ∪ T) ⇔ σp(Ai)(R) ∪ σp(Ai)(T) 6. Giao hoỏn phộp chiếu với phộp tốn hai ngơị
• Phộp chiếu và tớch Đề Cỏc: Nếu C = A΄ ∪ B΄ trong đú A΄⊆ A và B΄ ⊆ B, thỡ
πC(R x S) ⇔ πA’(R) x πB’(S)
• Phộp chiếu và kết nối: πC (R><,Bk)S) ⇔ πA’(R) ><Aj,Bk)πB’(S)
Trong đú Ai ∈ A΄, Bk ∈ B΄. Vỡ C = A΄ ∪ B΄ suy ra Ai ,Bk ∈ C.
• Phộp chiếu và hợp πC(R ∪ S) ⇔ πC(R) ∪ πC(S).
• Phộp chiếu và hiệu :πC(R - S) ⇔ πC(R) - πC(S). Quy tắc 6 được sử dụng nhiều trong kỹ thuật tối ưu hoỏ truy vấn.
Áp dụng sỏu quy tắc trờn cú thể tạo ra nhiều cõy quan hệ tương đương. Cõy trong hỡnh 5.7 tương đương với cõy trong hỡnh 5.8. Cõy trong hỡnh 5.8 thực hiện phộp tớch Đề Cỏc với cỏc quan hệ EMP và PROJ, điều này làm cho chi phớ thực hiện cao hơn so với cõy 5.7. Tuy nhiờn từ một cõy quan hệ ban đầu chẳng hạn như cõy 5.7 cú thể biến đổi thành nhiều cõy
quan hệ tương đương , trong đú cú nhiều cõy cú cấu trỳc “xấu” và cũng cú nhiều cõy cú cấu trỳc tốt. Những cõy cú cấu trỳc xấu như cõy trong hỡnh 5.8 cần phải loại bỏ.
Để tỡm ra một cõy đại số quan hệ “tốt hơn”, cú thể sử dụng quy tắc trờn bằng bốn cỏch:
• Tỏch cỏc phộp toỏn đơn ngụi, làm đơn giản biểu thức truy vấn.
• Cỏc phộp toỏn đơn ngụi trờn cựng một quan hệ cú thể nhúm lại thành một phộp toỏn truy xuất trờn quan hệ một lần.
• Cỏc phộp toỏn đơn ngơi cú thể giao hoỏn với cỏc phộp tốn hai ngơi sao cho một số phộp toỏn như chiếu, chọn được thực hiện trước.
• Cỏc phộp tốn hai ngơi cú thể được sắp xếp lạị
Viết lại cõu truy vấn nghĩa là tỡm một cõy cú cấu trỳc tốt hơn, cú chất lượng hơn so với cõy gốc. Cõy đại số quan hệ trong hỡnh 5.9 được tỏi tạo từ cõy đaih số quan hệ trong hỡnh 5.7. Nú được xem là cú cấu trỳc đạt chất lượng theo nghĩa là nú trỏnh truy xuất nhiều lần
đến cựng một quan hệ. Cỏc phộp chọn σENAME ≠ “J.Doe”(EMP), σDUR =12 OR DUR =24 (ASG) và σPNAME = “CAD/CAM” (PROJ) được thực hiện sớm nhất làm giảm đỏng kể kớch thước của cỏc quan hệ trung gian. Tiếp theo phộp chọn là cỏc phộp chiếu được thực hiện:
π ENO, ENAME(σENAME ≠ “J.Doe”(EMP)), πPNO, ENO(σDUR =12 OR DUR =24 (ASG)) và πPNO
(σPNAME = “CAD/CAM” (PROJ)). Tiếp theo là cỏc phộp kết nối với chi phớ thấp. Tuy nhiờn, cõy đại số quan hệ hỡnh 5.9 cịn xa mới đạt được tối ưụ Vỡ phộp chọn trờn EMP với vị từ ENAME = “J. Doe” sẽ khụng hiệu quả, kớch thước quan hệ kết quả giảm khụng đỏng kể.
ASG
EMP PROJ
x
><PNO ∧ ENO
σPNAME = “CAD/CAM”∧DUR =12 OR DUR =24
∧ ENAME ≠ “J.Doe”
πENAME
Trờn đõy là bốn giai đoạn kế liờn tiếp trong quỏ trỡnh phõn ró cõu truy vấn, nhằm ỏnh xạ
một cõu truy vấn dạng phộp tớnh quan hệ thành cõu truy vấn đại số quan hệ. Cú thể cú nhiều cõu truy vấn đại số tương đương với cựng một cõu truy vấn ban đầụ Để phõn ró cú hiệu quả, cỏc biểu thức truy vấn gốc sẽ được tỏi cấu trỳc bằng một số qui tắc biến đổi và cỏc
Heuristic. Cỏc qui tắc cho phộp tỏch cỏc phộp toỏn đơn ngơi, nhúm cỏc phộp tốn đơn ngụi trờn cựng một quan hệ, hoỏn vị cỏc phộp toỏn đơn ngụi với hai ngơ và hốn vị cỏc phộp tốn hai ngơị Thớ dụ về cỏc heuristic là đẩy cỏc phộp chọn xuống và thực hiện cỏc phộp chiếu càng sớm càng tốt...