6. Các kết quả dự kiến đạt đƣợc
2.3.2. Rút gọn cho phân mảnh ngang dẫn xuất
Phép nối là phép toán quan trọng nhất vì nó thƣờng gặp lại có thể đƣợc tối ƣu hóa bằng cách dùng phân mảnh ngang nguyên thủy khi các quan hệ nối đƣợc phân mảnh theo các thuộc tính nối. Trong trƣờng hợp này, nối của hai quan hệ đƣợc cài đặt nhƣ hợp của các nối thành phần. Tuy nhiên phƣơng pháp này ngăn cản không cho một trong các quan hệ phân mảnh theo một phép chọn trên một thuộc tính khác. Phân mảnh ngang dẫn xuất là một cách khác để phân phối hai quan hệ mà nhờ đó có thể cải thiện khả năng xử lý các điểm giao nhau giữa phép chọn và phép nối. Điển hình, nếu quan hệ R phải phân mảnh dẫn xuất theo quan hệ S, thì các mảnh của R và S có giá trị giống nhau ở thuộc tính nối sẽ nằm cùng vị trí. Ngoài ra, S có thể đƣợc phân mảnh theo vị từ chọn.
EMPH1 ASGH1 EMPH2 ASGH2 EMPH3 ASGH2
ENO
ENO ENO
EMPH1 EMPH2 EMPH3 ASGH1 ASGH2
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Bởi vì các bộ của R đƣợc đặt tuỳ theo các bộ của S, phân mảnh dẫn xuất chỉ sử dụng cho mối liên hệ 1 – n (phân cấp) có dạng S R, trong đó một bộ của S có thể khớp với nhiều bộ của R, nhƣng một bộ của R chỉ khớp với đúng một bộ của S. Chú ý rằng phân mảnh ngang dẫn xuất có thể đƣợc sử dụng cho các mối liên hệ nhiều - nhiều, với điều kiện là các bộ của S là các bộ khớp với nhiều bộ của R) đƣợc nhân bản. Nhân bản nhƣ thế gây nhiều khó khăn cho việc duy trì tính nhất quán. Để đơn giản, chúng ta gỉa thiết sử và khuyên ngƣời sử dụng rằng phân mảnh dẫn xuất chỉ nên dùng cho mối liên hệ phân cấp.
Ví dụ 2.9
Thấy rằng liên hệ từ EMP(ENO, ENAME, TITLE) đến ASG(ENO, PNO,RESP, DUR) là 1-n.
Gử rằng EMP đƣợc phân mảnh ngang thành EMPH1 và EMPH2 nhƣ sau: EMPH1 = TITLE = ” programmer ” (EMP)
EMPH2 = TITLE ” programmer ” (EMP)
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 = EMPH1 EMPH2
Quan hệ ASG có thể đƣợc phân mảnh gián tiếp (phân mảnh dẫn xuất (DX)) theo các qui tắc sau:
ASGDXH1 = ASG EMPH1 ASGDXH2 = ASG EMPH2
Chƣơng trình cục bộ hoá cho quan hệ phân mảnh ngang ASG là hợp của các mảnh của nó. Tức:
ASG = ASGDXH1 ASGDXH2
Các câu vấn tin trên các mảnh dẫn xuất cũng có thể đƣợc rút gọn. Bởi vì loại phân mảnh này đƣợc sử dụng rất nhiều trong việc tối ƣu hóa các câu vấn tin nối, một biến đổi có ích là phân phối các nối trên các tập hợp (đƣợc dùng trong cục bộ hóa) và áp dụng qui tắc 2 đã đƣợc trình bày ở trên. Bởi vì qui tắc phân mảnh chỉ rõ các bộ sẽ
ENO ENO
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
“khớp lại” với nhau, một số nối sẽ sinh ra quan hệ rỗng nếu các vị trí phân mảnh có mâu thuẫn. Ví dụ các vị từ của ASGH1 và EMPH2: Vì TITLE là khóa nên các giá trị ENO trong ASGDXH1 ứng với TITLE = ” programmer” không thể bằng với các giá trị ENO trong EMPH2 ứng với TITLE ” programmer” nên mâu thuẫn và vì thế:
ASGDXH1 ENO EMPH2 =
Ngƣợc lại với rút gọn bằng nối đƣợc thảo luận trƣớc đây, câu vấn tin rút gọn luôn luôn đƣợc ƣa chuộng hơn so với câu vấn tin gốc bởi vì số lƣợng các nối từng phần thƣờng bằng với số mảnh của R.
Ví dụ 2.10
Rút gọn theo mảnh dẫn xuất đƣợc minh hoạ bằng cách dùng câu vấn tin SQL truy xuất tất cả các thuộc tính từ EMP và ASG có cùng giá trị của ENO và chức vụ là TITLE = “Mech.Eng”.
SELECT *
FROM EMP, ASG
WHERE ASG.ENO = EMP.ENO
AND TITLE = “Mech.Eng”
Câu vấn tin gốc đƣợc thực thi trên các mảnh EMPH1, EMPH2, ASGH1, ASGH2 đã dịch nghĩa trƣớc đây đƣợc trình bày trong hình 2.3.
Hình 2.3. Vấn tin gốc của ví dụ 2.10 TITLE= “Mech.Eng” EMPH1 EMPH2 ASGH1 TIT LE= Mech.Eng” ASGH2 ENO
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Bằng cách giao hoán dùng phép chọn TITLE= Mech.Eng và phép hợp của nhánh bên phải ta đƣợc kết quả hình 2.4.
Hình 2.4. Vấn tin gốc đã đƣợc giao hoán
Do trong EMPH1chỉ có các bộ thỏa vị từ TITLE = ” programmer ”không có bộ nào 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 và vì thế loại bỏ mảnh EMPH1. Kết quả lọa bỏ đƣợc cây ở hình 2.5.
Hình 2.5. Vấn tin sau khi dùng vị từ mâu thuẫn
Để tiếp tục phát hiện các vị từ mâu thuẫn, chúng ta dùng luật phân phối giữa phép nối và hợp:
R (S T) =
Bây giờ chúng ta giao hoán phép ENO và phép sẽ đƣợc cây trên hình 2.6
ENO (R ENOS) (R ENOT)
TITLE = “Mech.Eng” EMPH1 EMPH2 ASGDXH1 TITLE= Mech.Eng” ASGDXH2 ENO TITLE = “Mech.Eng” TITLE= Mech.Eng” EMPH2 ASGDXH1 ASGDXH2 ENO
Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/
Hình 2.6. Cây vấn tin sau khi giao hoán phép hợp và phép nối
Cây con bên trái nối hai mảnh ASGDXH1 , EMPH2 với các vị từ mâu thuẫn do vị từ 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 2.7. Ví dụ này minh hoạ cho giá trị phân mảnh trong việc cải thiện hiệu năng của các câu vấn phân tán.
Hình 2.7. Rút gọn cho phân mảnh dẫn xuất