THUẬT TOÁN TỐI ƢU HÓA CÂU HỎ

Một phần của tài liệu GIÁO TRÌNH CƠ SỞ DỮ LIỆU.TS. Đặng Thị Thu Hiền (Trang 109 - 111)

, (AC)+ 3 Tìm khóa của quan hệ R

c. Áp dụng của một tích Đề-các, phép hợp hoặc phép hiệu tập hợp cho hai hạng

6.3. THUẬT TOÁN TỐI ƢU HÓA CÂU HỎ

Ví dụ trên cho ta một minh họa về việc chuyển đổi một câu hỏi bằng ngôn ngữ Đại số quan hệ về dạng tương đương tốt hơn (hay tối ưu hơn). Phương pháp trên tập trung chủ yếu vào các phép chiếu, phép chọn và tích Đề-các, với mục đích làm sao "đẩy" được phép chọn và phép chiếu xuống mức thấp nhất, tức là thi hành các phép toán này càng sớm càng tốt, nếu có thể. Tiếp theo, kết hợp các phép chọn với tích Đề-các thành phép kết tự nhiên để làm giảm các kết quả trung gian. Cốt lõi của vấn đề tối ưu hóa chính là việc làm giảm thiểu lưu trữ trung gian và từ đó làm tăng nhanh tốc độ xử lý câu hỏi.

[Tensach]

:(SACH.Masach=MUONSACH.Masach)

X

[MUONSACH.Masach] [SACH.Masach, Tensach]

X SACH

[MUONSACH.Masach, Sothe] [DOCGIA.Sothe]

:(Ngaymuon<27/03/2012) DOCGIA MUONSACH

Tuy nhiên, để thực hiện được các quá trình tối ưu hóa như trên, chúng ta cần lưu ý tới thứ tự thực hiện các phép toán để có thể "đẩy" các phép toán xuống các mức hợp lý cần thiết. Bảng dưới đây cho phép chúng ta cách thực hiện các phép biến đổi tương đương đối với các phép Hội (Union), Trừ (Minus), Giao (Intersect), Tích Đề- các (Cartesian), Chia (Division), Chiếu (Projection) và Chọn (Selection).

(B1). Kết tự nhiên tương đương với dãy phép tích Đề-các, phép chọn và phép chiếu:

Q1(AB) * Q2(BC) ≡ (Q1 x Q2 : (Q1[B]=Q2[B]))[ABC]

(B2). Phép theta kết tương đương với dãy phép tích Đề-các và phép chọn với điều kiện theta:

Q1(AB) Q2(CD) ≡ (Q1 x Q2) : (B θ D)

(B3). Phép giao (Intersect) tương đương với phần bù (Complement) của hội hai phần bù của 2 quan hệ:

Q1  Q2 ≡  (( Q1)  ( Q2)) và (B4)

(B4). Phép bù của một quan hệ tương đương với tích Đề-các của các phép chiếu trên từng thuộc tính của quan hệ trừ đi các bộ giá trị đã có trong thể hiện của quan hệ:

Q(X1…Xn) ≡ (Q[X1] x Q[X2] x … x Q[Xn]) - Q(X1…Xn) (B5). Thương của 2 quan hệ tương đương với hiệu của các quan hệ trung gian sau:

Q1(AB)  Q2(A) = Q1[B] - ((Q1[B] x Q2[A] - Q1(AB))[B]

Áp dụng các cách biến đổi tương đương trên, kết hợp với các quy tắc "đẩy" và kết hợp như đã trình bày trong mục trên, chúng ta tìm hiểu thuật toán tổng quát để tối ưu hóa các câu hỏi trong ngôn ngữ đại số quan hệ.

Thuật toán:

Đầu vào (Input): Sơ đồ cú pháp câu hỏi bằng ngôn ngữ đại số quan hệ. Đầu ra (Output): Sơ đồ cú pháp tối ưu.

Bước 1. Áp dụng các phép biến đổi tương đương nêu trong bảng (B1) đến (B5) trên. Bước 2. Áp dụng luật 4 biến đổi dãy các phép chọn tương đương: tách phép

chọn thành các phép chọn con.

Bước 3. Đối với mỗi phép chọn, áp dụng các luật 5 ,6 ,7 và 8 nhằm đẩy các

phép toán chọn đó xuống càng sâu càng tốt.

Bước 4. Đối với mỗi phép chiếu, áp dụng các quy tắc 3 ,9 và 10 nhằm đẩy các

phép toán chiếu đó xuống càng sâu càng tốt.

Bước 5. Tập trung các phép chọn nhằm áp dụng luật 4

Áp dụng luật 3 để loại bỏ bớt các phép chiếu vô ích.

Tập trung các phép chọn với tích Đề-các, nếu được, để chuyển thành phép kết tự nhiên hay theta kết bằng cách áp dụng các luật 3 và 6.

Nhận xét:

1. Thuật giải nêu trên chủ yếu nhằm giảm khối lượng dữ liệu trung gian chứ không chỉ ra thứ tự thực hiện các phép kết. Ví dụ:

(Q1(AB) * Q2(BC)) * Q3(AC) ≡

Một phần của tài liệu GIÁO TRÌNH CƠ SỞ DỮ LIỆU.TS. Đặng Thị Thu Hiền (Trang 109 - 111)