CHƯƠNG 2 : PHÂN RÃ VẤN TIN VÀ CỤC BỘ HÓA DỮ LIỆU
2.1. Phân rã vấn tin câu vấn tin SQL
2.1.2. Loại bỏ dư thừa và tối ưu câu truy vấn
Câu truy vấn của người sử dụng thường được diễn tả trên một khung nhìn có thể được bổ sung thêm nhiều vị từ để có được sự tương ứng khung nhìn - quan hệ, bảo đảm được tính toàn vẹn ngữ nghĩa và bảo mật. Khi bổ sung như vậy có thể sinh ra các vị trí dư thừa. Các vị trí dư thừa cần phải loại bỏ.
Viết lại câu truy vấn
Viết lại câu truy vấn bằng đại số quan hệ được chia làm hai bước như sau:
i/ Biến đổi câu truy vấn từ phép tính quan hệ thành đại số quan hệ ii/ Cấu trúc lại câu truy vấn đại số nhằm cải thiện hiệu năng.
ASG EMP PROJ RESULT RESP EMP.ENO = ASG.ENO PNAME = “CAD/CAM” ENAME TITLE = “Programmer” DUR >= 36
Định nghĩa cây toán tử:
Một cây toán tử là cây với mỗi nút lá biểu thị cho một quan hệ được lưu trong cơ sở dữ liệu, nút không phải là lá biểu thị một quan hệ trung gian được sinh ra bởi phép toán quan hệ. Chuỗi các phép toán để đi theo hướng lá đến gốc, gốc biểu thị kết quả truy vấn.
Cách biến đổi câu truy vấn phép tính quan hệ trở thành một cây toán tử như sau:
i. Trước hết tạo ra các nút lá là các quan hệ trong SQL các nút lá nằm sau FROM.
ii. Nút gốc được tạo ra như 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 SELECT.
iii. Lượng tử hoá (vị từ sau WHERE ) được chuyển thành các phép tính quan hệ thích hợp (phép chọn, phép nối ,…) đi từ các nút lá đến 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ị trí và các toán tử.
Sáu quy tắc tương đương hay dùng nhất sẽ được trình bày như sau đây: Gọi R(A) │A={A1, …,An }; S(B) │B = {B1,…,Bn} và T là những quan hệ
i. Tính giao hoán của các phép toán hai ngôi:
Tích Descartes: R S S R (2.1)
Phép nối R S S R (2.2)
ii. Kết hợp của các phép toán hai ngôi:
Tích Descartes: (R S) T R (S T) (2.3)
Phép nối (R S) T R (S T) (2.4)
iii. Luỹ thừa đẳng của phép toán đơn ngôi:
Những phép chiếu liên tiếp trên cùng một quan hệ có thể được nhóm lại. Ngược lại một phép chiếu trên nhiều thuộc tính có thể được tách ra thành nhiều phép chiếu liên tiếp nhau.
Gọi R(A) là quan hệ trên tập thuộc tính A, A’ A, A” A, A’ A”
thì A’(A’’(R)) A’( R) (2.5)
Nhiều phép chọn liên tiếp trên cùng một quan hệ có thể gộp thành phép chọn qua vị từ hội. Ngược lại, phép chọn qua một hội vị từ có thể tách ra thành nhiều phép chọn liên tiếp nhau.
Gọi pi là vị từ áp dụng cho thuộc tính Ai thì có:
P1(A1)(P2 (A2)(R)) P1(A1) P2(A2)(R) (2.6)
iv. Giao hoán với phép chiếu
A1,…,An (P(Ap)(R)) A1,…,An(P(Ap)(A1,…,An(R))) (2.7) Chú ý rằng, nếu Ap là phần tử của {A1,…,An} thì phép chiếu cuối cùng trên {A1,…,An} ở vế phải của hệ thức sẽ không có tác dụng.
v. Giao hoán phép chọn với phép toán 2 ngôi
Phép chọn và tích Descartes có thể được giao hoán bằng các qui tắc sau: (Ai R)
P(Ai)(R S) (P(Ai)(R)) S (2.8) Chọn và nối cũng có thể giao hoán:
P(Ai) (R (Aj,B k)S) P(Ai)(R) P(Aj,Bk)S (2.9) Chọn và hợp cũng có thể giao hoán nếu R và T có lược đồ giống nhau:
P(Ai) (RT) P(Ai)(R)P(Ai)(T) (2.10) Chọn và hiệu cũng có thể được giao hoán tương tự.
vi. Giao hoán phép chiếu với phép toán hai ngôi.
Chiếu và tích Descartes có thể được giao hoán. Nếu C = A’ B’, trong đó A’ A, B’ B; A, B là các tập thuộc tính tương ứng của các quan hệ R và S, thì :
C(R S) A’(R) B’(S) (2.11)
Chiếu và nối cũng có thể giao hoán:
Để vế phải đúng, cần phải có Ai A’, Bj B’. Bởi vì C = A’B’ nên Ai
và Bj C vì thế chúng ta không cần chiếu lên C một khi đã chiếu trên A’ và B’. Chiếu và hợp cũng có thể được giao hoán như sau:
C(RS)C (R)C(S) (2.13)
Chiếu và hiệu có thể được giao hoán tương tự.
Áp dụng 6 qui tắc trên, cho phép tạo ra nhiều cây tương đương.
Trong giai đoạn tối ưu hóa, người ta thử so sánh tất cả các cây dựa trên chi phí dự đoán. Nhưng do số cây quá nhiều nên phương án này không khả thi. Các quy tắc trên có thể được sử dụng để cấu trúc lại cây một cách có hệ thống nhằm loại bỏ các cây xấu. Các cách này có thể được sử dụng bằng 4 cách khác nhau:
- Trước hết, chúng cho phép tách các phép toán đơn ngôi, làm đơn giản