Giáo trình Cơ sở dữ liệu - Trịnh Hoàng Nam

Tóm tắt Giáo trình Cơ sở dữ liệu - Trịnh Hoàng Nam: ...iêu khoá khi các bộ trong R là duy nhất đối với tất cả các thuộc tính trong SK. Điều này có nghĩa là, với bất kỳ hai bộ khác nhau t1, t2 trong thể hiện quan hệ r của R, chúng ta có ràng buộc t1[SK] ≠ t2[SK]. Email: namth@buh.edu.vn 81 Rõ ràng mọi quan hệ đều có ít nhất một siêu khóa – đó là... Supervise Nhân viên Employee Nhân viên Employee Emai: namth@buh.edu.vn 137 Phụ thuộc Has Nhân viên Employee Thân nhân Dependent Bước 2: Mô hình hóa các yêu cầu về dữ liệu bằng các sơ đồ. Các sơ đồ ứng với ví dụ mẫu được minh họa trong hình sau đây. Hình 6.1. Các tập thực thể... DỤ 7.33: Sử dụng NOT EXISTS trong câu truy vấn lồng tương quan. Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào của công ty. Q24: SELECT EName FROM EMPLOYEE E WHERE NOT EXISTS (SELECT * FROM WOKRSON WHERE E.ESSN=ESSN) Trong câu truy vấn Q24, câu truy vấn con trả về tất c...

pdf237 trang | Chia sẻ: havih72 | Lượt xem: 269 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Cơ sở dữ liệu - Trịnh Hoàng Nam, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
 hết được biên dịch 
thành biểu thức đại số quan hệ tương đương – được biểu diễn ở dạng cây biểu thức 
– và sau đây được tối ưu hóa. Trong nhiều trường hợp câu truy vấn SQL có cấu 
trúc phức tạp, bao gồm nhiều câu truy vấn đơn kết hợp lại với nhau. Chúng ta sẽ 
biểu diễn từng đoạn truy vấn đơn giản đó thành những biểu thức đại số quan hệ và 
biến đổi chúng về dạng đơn giản hơn nhưng cho ra cùng kết quả. Câu truy vấn đơn 
có thể bao gồm một phát biểu SELECT – FROM – WHERE, bao gồm cả mệnh đề 
ORDER BY, GROUP BY và HAVING. Tuy nhiên, đối với câu truy vấn lồng, các 
câu truy vấn cần phải được xử lý như những câu truy vấn đơn riêng rẽ. Ví dụ 9.1 
minh họa cho một câu truy vấn lồng như thế. 
VÍ DỤ 9.1: Biểu diễn câu truy vấn SQL bằng (các) biểu thức đại số quan hệ. 
Xét câu truy vấn SQL sau đây trong cơ sở dữ liệu COMPANY: 
Q1: SELECT EName 
 FROM EMPLOYEE 
 WHERE ESalary > ( SELECT MAX (ESalary) 
FROM EMPLOYEE 
WHERE DNum = 5) 
Câu truy vấn lồng này được biểu diễn bằng hai câu truy vấn đơn như sau: 
Q1a: SELECT MAX (ESalary) 
 FROM EMPLOYEE 
 WHERE DNum = 5 
Q1b: SELECT EName 
 FROM EMPLOYEE 
 WHERE ESalary > C 
Với C là kết quả trả về từ câu truy vấn Q1a. 
Hai biểu thức đại số quan hệ tương đương với hai câu truy vấn này lần lượt là: 
ℑMAX ESalary (σDNum=5(EMPLOYEE)) 
 Email: namth@buh.edu.vn 253 
piEName(σESalary>C(EMPLOYEE)) 
 
Tóm lại, một khi nói đến tối ưu hóa một câu truy vấn SQL, chúng ta tìm cách biểu 
diễn câu truy vấn đó về dạng biểu thức đại số quan hệ. Sau đó chúng ta tiến hành 
tối ưu hóa biểu thức đại số quan hệ này thông qua cây đại số quan hệ bằng các 
phương pháp tối ưu hóa thích hợp để nhận được một biểu thức được đánh giá là 
tốt hơn, nhưng cho ra cùng kết quả với biểu thức ban đầu. Cuối cùng, chúng ta 
biểu diễn biểu thức này bằng một câu truy vấn SQL. 
9.2 PHƯƠNG PHÁP ƯỚC LƯỢNG CÂY ĐẠI SỐ 
QUAN HỆ 
Như đã trình bày ở trên, để tối ưu hóa câu truy vấn, chúng ta tối ưu hóa biểu thức 
đại số quan hệ tương ứng với câu truy vấn đó. Đồng thời, mỗi biểu thức đại số 
quan hệ có thể biểu diễn được bởi một cây đại số quan hệ. Như vậy, chúng ta cần 
phải tối ưu hóa cây đại số quan hệ. 
Vấn đề đặt ra ở đây là dựa trên tiêu chuẩn nào để chúng ta xác định cây đại số 
quan hệ hiện có đã tối ưu hay chưa. Nói cách khác, chúng ta cần phải ước lượng 
chi phí thực hiện các phép tính trên cây đại số quan hệ để từ đó phát hiện ra được 
những sự điều chỉnh cần thiết để tiết kiệm được chi phí thực hiện. 
Chúng ta bắt đầu đánh giá cây biểu thức đại số quan hệ từ các phép toán ở mức 
phấp nhất (tức là các biểu thức tại đáy của cây). Các phép toán này có đầu vào là 
các quan hệ được lưu trữ vật lý trong cơ sở dữ liệu; đồng thời kết quả trả về của 
chúng được lưu trữ trong các quan hệ tạm. Tiếp theo, chúng ta có thể sử dụng các 
quan hệ tạm này làm đầu vào để thực hiện các phép toán ở mức trên tiếp theo 
trong cây biểu thức. Bây giờ đầu vào của phép toán có thể là các quan hệ tạm hoặc 
là các quan hệ được lưu trữ trong cơ sở dữ liệu. Chúng ta cứ tiếp tục như thế cho 
đến khi đạt đến đỉnh của cây biểu thức. 
 Email: namth@buh.edu.vn 254 
Việc đánh giá cây biểu thức được thực hiện thông qua quá trình ước lượng chi phí 
của từng phép toán chọn, chiếu và kết. Chi phí ở đây được hiểu là chi phí thực 
hiện các phép toán trong biểu thức và chi phí lưu trữ quan hệ tạm lên đĩa cứng để 
thực hiện các phép toán kế tiếp. Giả sử các bản ghi của quan hệ tạm được xếp vào 
một vùng đệm (có kích thước là ff), và khi vùng đệm bị đầy thì chúng sẽ được ghi 
lên đĩa. Khi đó chi phí của thao tác ghi lên đĩa tương đương với nf/ff, với nf là số 
các bộ trong quan hệ tạm cần lưu trữ. 
VÍ DỤ 9.2: Ước lượng chi phí thực hiện của một biểu thức đại số quan hệ. 
Xét cây biểu thức đại số quan hệ sau đây: 
Hình 9.1. Cây biểu thức đại số quan hệ. 
Để ước lượng chi phí của thao tác ghi lên đĩa, chúng ta cần tính tới kích thước của 
ba bảng tạm phát sinh trong quá trình thực hiện câu truy vấn. Đầu tiên đó là bảng 
tạm T1 chứa kết quả của phép chọn trên DEPARTMENT. Kế tiếp khi thực hiện 
phép kết tự nhiên giữa T1 với EMPLOYEE chúng ta có bảng tạm T2. Cuối cùng, 
bảng tạm T3 được tạo để chứa kết quả của phép chiếu trên T2. 
 
9.3 NGUYÊN TẮC TỐI ƯU HÓA BIỂU THỨC ĐẠI 
SỐ QUAN HỆ 
Trong các phép toán đại số quan hệ, phép nhân chéo và phép kết chi phí cao hơn 
so với các phép toán khác. Điều này có thể giải thích như sau. Về cơ bản phép kết 
là sự kết hợp giữa phép chọn từ kết quả của phép nhân chéo, mà trong chương 5 
chúng ta đã tính toán kết quả của phép nhân chéo quan hệ R1 có n1 thuộc tính, m1 
 Email: namth@buh.edu.vn 255 
bộ với quan hệ R2 có n2 thuộc tính, m2 bộ là một quan hệ R3 có n1+n2 thuộc tính và 
m1*m2 bộ. Quan hệ R3 được tạo ra bằng cách kết hợp từng bộ của R1 với từng bộ 
của R2. Như vậy, phép nhân chéo không chỉ gây tốn kém thì không gian lưu trữ mà 
còn rất mất thời gian. 
Để cải thiện chi phí thực hiện cũng như chi phí lưu trữ, các nguyên tắc sau đây 
giúp chúng ta tối ưu hóa câu truy vấn thông qua việc thay đổi trình tự thực hiện 
các phép toán trong biểu thức đại số quan hệ tương đương: 
Một cách khái quát, các nguyên tắc sau đây có thể giúp chúng ta tối ưu hóa câu 
truy vấn thông qua việc thay đổi trình tự thực hiện các phép toán: 
 Ưu tiên thực hiện các phép toán một ngôi nhằm giới hạn khối lượng dữ liệu 
trung gian được lưu trữ trong các bảng tạm, đồng thời cũng làm giảm chi 
phí đọc và ghi bảng tạm vào đĩa cứng. 
 Hạn chế việc thực hiện các phép nhân chéo giữa hai quan hệ với tất cả các 
thuộc tính của chúng. Hạn chế kích thước của các quan hệ tham gia phép 
nhân chéo bằng phép chọn và phép chiếu. 
 Phép kết bằng kết nối các bộ giữa hai quan hệ có giá trị bằng nhau tại các 
thuộc tính trùng tên. Do đó, chi phí thực hiện phép kết bằng sẽ thấp hơn 
nhiều so với chi phí thực hiện phép nhân chéo. 
 Do phép chọn và phép chiếu có tính chất giao hoán và kết hợp, do đó chúng 
ta có thể nhóm các phép chọn và phép chiếu liên tiếp thành một phép toán 
duy nhất nhằm giảm khối lượng dữ liệu trung gian. 
 Xác định các thành phần bị lặp lại trong câu truy vấn. Trong trường hợp sự 
lặp lại này khá thường xuyên, chúng ta nên lập câu truy vấn con để khai 
thác khả năng tính toán và lưu trữ một lần nhưng sử dụng nhiều lần sau đó. 
 Email: namth@buh.edu.vn 256 
 Tiền xử lý các bảng tham gia trong câu truy vấn nhằm giảm thiểu các sự kết 
nối không cần thiết bằng cách sắp xếp, tạo chỉ mục, tạo khung nhìn thích 
hợp,  
 Đánh giá sơ bộ chi phí thực hiện câu truy vấn theo những trình tự thực hiện 
khác nhau. Chi phí trong trường hợp này bao gồm: số phép toán thực hiện, 
chi phí thời gian, không gian lưu trữ,  
9.4 KỸ THUẬT TỐI ƯU HÓA BIỂU THỨC ĐẠI SỐ 
QUAN HỆ 
Các nguyên tắc tối ưu hóa được trình bày ở trên đều có chung một đặc điểm là 
biến đổi các biểu thức đại số về dạng có chi phí thực hiện thấp hơn. Sự biến đổi 
này chỉ thực sự được chấp nhận khi các biểu thức đại số cho ra quan hệ kết quả 
tương đương với nhau. Trong chương 4, chúng ta đã định nghĩa hai quan hệ tương 
đương là hai quan hệ có cùng tập thuộc tính, và quan hệ này là kết quả của sự thay 
đổi thứ tự các thuộc tính, hoặc thứ tự các bộ của quan hệ kia. 
Khi thực hiện các phép toán trong biểu thức đại số quan hệ, chúng ta phải quan 
tâm tới trình tự thực hiện các phép toán trong trường hợp không sử dụng dấu 
ngoặc đơn. Các phép toán một ngôi có thứ tự ưu tiên cao hơn so với các phép toán 
hai ngôi. 
Tối ưu hóa thực chất là xác định trình tự thực hiện các phép toán trong biểu thức 
đại số nhằm tiết kiệm chi phí thực hiện, không gian lưu trữ cũng như thời gian 
thực hiện nhưng không làm thay đổi kết quả trả về. Ba phép toán được sử dụng 
thường xuyên nhất trong biểu thức đại số là chọn, chiếu và kết. Phép chọn và phép 
chiếu cho ra quan hệ kết quả có kích thước nhỏ hơn quan hệ ban đầu. Trong khi 
đó, kết quả của phép chiếu là một quan hệ có kích thước lớn hơn rất nhiều so với 
các quan hệ tham gia. Dựa trên các tính chất này, chúng ta xây dựng các kỹ thuật 
tối ưu hóa và áp dụng chúng trong từng trường hợp cụ thể. 
 Email: namth@buh.edu.vn 257 
9.4.1. Các quy tắc biến đổi biểu thức đại số quan hệ 
Để bắt đầu, chúng ta thống nhất các ký hiệu được sử dụng trong biểu thức đại số 
quan hệ như sau: 
 F1, F2,  là các điều kiện 
 L1, L2,  là tập các thuộc tính 
 E1, E2,  là các biểu thức đại số quan hệ 
 σ là phép chọn 
 pi là phép chiếu 
 × là phép nhân chéo 
 ⋈F là phép kết có điều kiện 
 ⋈ là phép kết tự nhiên 
Quy tắc 1: Giao hoán phép kết và phép nhân chéo 
Nếu E1 và E2 là hai biểu thức đại số quan hệ và F là điều kiện trên các thuộc 
tính của E1 và E2: 
(R1): E1 ⋈F E2 = E2 ⋈F E1 
(R2): E1 ⋈ E2 = E2 ⋈ E1 
(R3): E1 × E2 = E2 × E1 
Hình 9.2. Biểu diễn quy tắc (1) bằng cây biểu thức. 
Quy tắc 2: Kết hợp phép kết và phép nhân chéo 
Nếu E1, E2 và E3 là các biểu thức đại số quan hệ, F1 là điều kiện trên các thuộc 
tính của E1 và E2, F2 là điều kiện trên các thuộc tính của E2 và E3 
 Email: namth@buh.edu.vn 258 
(R4): (E1 ⋈F1 E2) ⋈F2 E3 = E1 ⋈F1 (E2 ⋈F2 E3) 
(R5): (E1 ⋈ E2) ⋈ E3 = E1 ⋈ (E2 ⋈ E3) 
(R6): (E1 × E2) × E3 = E1 × (E2 × E3) 
Hình 9.3. Biểu diễn quy tắc (2) bằng cây biểu thức. 
Quy tắc 3: Thay thế nhiều phép chiếu liên tiếp bằng một phép chiếu duy nhất 
Nếu E là biểu thức đại số quan hệ và L1, L2 là hai tập thuộc tính của E, L1 ⊆ L2 
(R7): piL2(piL1(E)) = piL2(E) 
Hình 9.4. Biểu diễn quy tắc (3) bằng cây biểu thức. 
Quy tắc 4: Thay thế nhiều phép chọn liên tiếp bằng một phép chọn duy nhất 
Nếu E là biểu thức đại số quan hệ và F, F1, F2, , Fn là các điều kiện trên tập 
thuộc tính của E, F = F1 ∧ F2 ∧  ∧ Fn 
(R8): σF1(σF2(σF1(E))) = σ F1 ∧ F2 ∧  ∧ Fn (E) = σF(E) 
 Email: namth@buh.edu.vn 259 
Hình 9.5. Biểu diễn quy tắc (4) bằng cây biểu thức. 
Quy tắc 5: Giao hoán các phép chọn 
Nếu E là biểu thức đại số quan hệ và F1, F2 là hai điều kiện trên tập thuộc tính 
của E: 
(R9): σF1(σF2(E)) = σF2(σF1(E)) 
Hình 9.6. Biểu diễn quy tắc (5) bằng cây biểu thức. 
Quy tắc 6: Giao hoán phép chọn và phép chiếu 
Nếu E là biểu thức đại số quan hệ và F là điều kiện trên tập thuộc tính L của E: 
(R10): piL(σF(E)) = σF(piL(E)) 
Nếu E là biểu thức đại số quan hệ, L1, L2 là hai tập thuộc tính của E (L2 ⊆ L1), 
F là điều kiện trên tập thuộc tính L1 
(R11): piL2(σF(E)) = piL2(σF(piL1(E))) 
Hình 9.7. Biểu diễn quy tắc (6) bằng cây biểu thức. 
 Email: namth@buh.edu.vn 260 
Quy tắc 7: Giao hoán phép chọn và phép nhân chéo 
Nếu E1, E2 là hai biểu thức đại số quan hệ và F là điều kiện trên tập thuộc tính 
L của E1: 
(R12): σF(E1 × E2) = σF(E1) × E2 
Nếu E1, E2 là hai biểu thức đại số quan hệ, F = F1 ∧ F2, với F1 là điều kiện trên 
tập thuộc tính L1 của E1, F2 là điều kiện trên tập thuộc tính L2 của E2: 
(R13): σF(E1 × E2) = σF1 ∧ F2(E1 × E2) = σF1(E1) × σF2(E2) 
Hình 9.8. Biểu diễn quy tắc (7) bằng cây biểu thức. 
Quy tắc 8: Giao hoán phép chọn và phép hợp 
Nếu E1, E2 là hai biểu thức đại số quan hệ có cùng lược đồ và F là điều kiện 
trên các thuộc tính của hai biểu thức này: 
(R14): σF(E1 ∪ E2) = σF(E1) ∪ σF(E2) 
Hình 9.9. Biểu diễn quy tắc (8) bằng cây biểu thức. 
Quy tắc 9: Giao hoán phép chọn và phép trừ 
Nếu E1, E2 là hai biểu thức đại số quan hệ có cùng lược đồ và F là điều kiện 
trên các thuộc tính của hai biểu thức này: 
 Email: namth@buh.edu.vn 261 
(R15): σF(E1 – E2) = σF(E1) – σF(E2) 
Hình 9.10. Biểu diễn quy tắc (9) bằng cây biểu thức. 
Quy tắc 10: Giao hoán phép chọn và phép kết tự nhiên 
Nếu E1, E2 là hai biểu thức đại số quan hệ và F là điều kiện trên các thuộc tính 
chung của hai biểu thức này: 
(R16): σF(E1 ⋈ E2) = σF(E1) ⋈ σF(E2) 
Hình 9.11. Biểu diễn quy tắc (10) bằng cây biểu thức. 
Quy tắc 11: Giao hoán phép chiếu và phép nhân chéo 
Nếu E1, E2 là hai biểu thức đại số quan hệ, L1, L2 lần lượt là tập các thuộc tính 
của E1 và E2: 
(R17): piL1, L2(E1 × E2) = piL1(E1) × piL2(E2) 
Hình 9.12. Biểu diễn quy tắc (11) bằng cây biểu thức. 
Quy tắc 12: Giao hoán phép chiếu và phép hợp 
Nếu E1, E2 là hai biểu thức đại số quan hệ có cùng tập thuộc tính L: 
(R18): piL(E1 ∪ E2) = piL(E1) ∪ piL(E2) 
 Email: namth@buh.edu.vn 262 
Hình 9.13. Biểu diễn quy tắc (12) bằng cây biểu thức. 
Quy tắc 13: kết hợp phép giao và phép hợp 
Nếu E1, E2 và E3 là các biểu thức đại số quan hệ có tính khả hợp: 
(R19): (E1 ∪ E2) ∪ E3= E1 ∪ (E2 ∪ E3) 
Hình 9.14. Biểu diễn quy tắc (13) bằng cây biểu thức. 
9.4.2. Thuật toán tối ưu hóa biểu thức đại số quan hệ 
Với mục tiêu tối ưu hóa biểu thức đại số quan hệ thông qua việc biến đổi biểu thức 
này bằng cách áp dụng các quy tắc tối ưu hóa trình bày ở phần trên, chúng ta xây 
dựng một trình tự để thực hiện các phép toán trong biểu thức. Trình tự này được 
thể hiện chi tiết trong giải thuật 9.1 được trình bày dưới đây. Tuy nhiên, khi sử 
dụng thuật toán này để tối ưu hóa biểu thức đại số quan hệ, chúng ta cần lưu ý một 
số vấn đề sau đây: 
 Thuật toán tập trung chủ yếu vào nhiệm vụ làm giảm bớt khối lượng dữ liệu 
trung gian chứ không giúp xác định trình tự thực hiện các phép kết. 
 Thuật toán cung cấp một phương án để chúng ta lựa chọn khi thực thi cây 
truy vấn, đây chưa phải là phương án tốt nhất. 
 Các phép biến đổi còn có thể được thực hiện dựa trên tập hợp đầy đủ các 
phép toán đại số quan hệ chứ không chỉ gói gọn vào các phép toán được 
trình bày. 
 Email: namth@buh.edu.vn 263 
 Tối ưu hóa biểu thức đại số quan hệ chỉ là một phần trong chiến lược tối ưu 
hóa câu truy vấn, vì ngoài trình tự thực hiện các phép toán trong biểu thức, 
chúng ta còn có thể tối ưu hóa câu truy vấn bằng các thao tác tiền xử lý dữ 
liệu. Vấn đề này vượt ra khỏi phạm vi của giáo trình cho nên chúng tôi 
không đi sâu vào chi tiết. 
THUẬT TOÁN 9.1: Tối ưu hóa biểu thức đại số quan hệ. 
Đầu vào: Biểu thức đại số quan hệ cần tối ưu (biểu diễn bởi cây biểu thức) 
Đầu ra: Biểu thức đại số quan hệ tối ưu (biểu diễn bởi cây biểu thức) 
Thuật toán: 
Bước 1: Áp dụng quy tắc R4 tách phép chọn phức tạp thành một chuỗi các 
phép chọn liên tiếp. Đối với mỗi phép chọn, tiếp tục áp dụng các quy tắc từ 
R4 đến R11 nhằm đẩy các phép chọn xuống càng sâu càng tốt 
Bước 2: Đối với mỗi phép chiếu, áp dụng các quy tắc R3, R6, R8, R12 để 
chiếu quan hệ trên những thuộc tính cần sử dụng và đẩy các phép chiếu 
xuống càng sâu càng tốt. 
Bước 3: Tổ hợp phép nhân chéo với phép chọn thành phép kết có điều kiện 
Bước 4: Nhận diện các cây con mà các phép toán của nó thực hiện theo 
đường không rẽ nhánh và thực thi chúng. 
 
Để minh họa cho việc áp dụng thuật toán tối ưu hóa biểu thức đại số quan hệ nói 
trên, chúng ta lần lượt xét một ví dụ liên quan đến cơ sở dữ liệu COMPANY được 
sử dụng trong giáo trình này. 
VÍ DỤ 9.3: Tối ưu hóa biểu thức đại số quan hệ. 
Xét biểu thức đại số quan hệ sau đây : 
piEname, ESalary, supervisorSSN, DName (σDnumber = DNum(EMPLOYEE × DEPARTMENT)) 
 Email: namth@buh.edu.vn 264 
Hình 9.15. Cây biểu thức cần được tối ưu hóa. 
Áp dụng thuật toán 9.1 để tối ưu hóa biểu thức đại số quan hệ theo trình tự sau 
đây: 
Bước 1: Không áp dụng, vì không có các phép chọn liên tiếp. 
Bước 2: 
(1) Áp dụng quy tắc (4) để giao hoán phép chọn và phép chiếu: 
Hình 9.16. Áp dụng quy tắc (4) để biến đổi cây biểu thức. 
 (2) Áp dụng quy tắc (12) để giao hoán phép chiếu và phép nhân chéo 
Hình 9.17. Áp dụng quy tắc (12) để biến đổi cây biểu thức. 
Bước 3: Kết hợp phép chọn và phép nhân chéo thành phép kết có điều kiện: 
 Email: namth@buh.edu.vn 265 
Hình 9.18. Kết hợp phép chọn và phép nhân chéo. 
Bước 4: Thực thi các phép toán. 
 
9.5 TỐI ƯU HÓA BẰNG KHUNG NHÌN 
Như đã trình bày ở trên, câu truy vấn thực chất là một dãy các phép toán được 
thực thi liên tiếp, quan hệ kết quả của phép toán trước là đầu vào của phép toán 
sau. Các quan hệ kết quả này nói chung được lưu trữ trong không gian tạm và tự 
động bị xóa đi sau khi biểu thức được thực thi. Đôi khi chúng ta có nhu cầu lưu trữ 
toàn bộ dữ liệu và kết quả tính toán để sử dụng lại mỗi khi có nhu cầu. Khung nhìn 
(view) là một công cụ tỏ ra rất hữu dụng trong những trường hợp như thế nếu 
chúng ta sử dụng khung nhìn như là một công cụ lưu trữ quan hệ kết quả của câu 
truy vấn. Ví dụ sau đây cho biết cách thức tạo khung nhìn View trong SQL. 
VÍ DỤ 9.4: Tối ưu hóa bằng khung nhìn. 
Tạo khung nhìn V1 lưu kết quả của câu truy vấn: Liệt kê số nhân viên, tổng số giờ 
làm việc của mỗi dự án: 
CREATE VIEW V1 AS 
SELECT PNum, COUNT(*), SUM(workHours) 
FROM WORKSON 
GROUP BY PNum 
Rõ ràng, khi có nhu cầu truy vấn liên quan đến số liệu thống kê cho từng dự án, 
khung nhìn này giúp tiết kiệm chi phí cũng như thời gian thực hiện câu truy vấn. 
 Email: namth@buh.edu.vn 266 
Hình 9.19. Cây biểu thức của khung nhìn V1. 
 
Sau khi khung nhìn được tạo ra, chúng ta có thể thực hiện các câu truy vấn có sử 
dụng khung nhìn như là một quan hệ lưu trữ khác trong CSDL. Các bảng dữ liệu 
xuất hiện trong lệnh tạo khung nhìn được gọi là bảng cơ sở của khung nhìn. Trong 
phạm vi giáo trình, chúng ta không đi sâu vào nghiên cứu khung nhìn và các vấn 
đề liên quan, chúng ta chỉ giới hạn vào việc định nghĩa và sử dụng khung nhìn như 
là một công cụ hỗ trợ tối ưu hóa câu truy vấn. 
Giả sử chúng ta có khung nhìn V được định nghĩa từ phép kết nối R ⋈ S. Chúng ta 
có thể sử dụng khung nhìn V này để giảm chi phí thực hiện câu truy vấn R ⋈ S ⋈ 
T. Cụ thể, câu truy vấn này có thể được viết lại là R ⋈ T. Ví dụ sau đây minh họa 
các sử dụng khung nhìn để tối ưu hóa câu truy vấn. 
VÍ DỤ 9.5: Thực hiện câu truy vấn (biểu diễn bằng cây biểu thức). 
Cho biết số nhân viên tham gia từng dự án do phòng số 1 quản lý. 
Cách 1: Không sử dụng khung nhìn, cây biểu thức có dạng như hình 9.19. 
Hình 9.20. Cây biểu thức tương ứng khi không sử dụng khung nhìn. 
Cách 2: Sử dụng khung nhìn V1, cây biểu thức có dạng như hình 9.20. 
 Email: namth@buh.edu.vn 267 
Hình 9.21. Cây biểu thức tương ứng khi không sử dụng khung nhìn. 
Rõ ràng, với việc sử dụng V1, chi phí thực hiện câu truy vấn đã giảm đi đáng kể. 
Ghi chú: Chúng ta còn có thể biến đổi biểu thức này bằng cách áp dụng các quy 
tắc được trình bày ở mục 9.3. 
 
9.6 TÓM TẮT 
Trong các hệ quản trị cơ sở dữ liệu hiện nay, đa người dùng là một đặc trưng quan 
trọng không thể bỏ qua. Theo đó, tại một thời điểm, có thể có rất nhiều câu truy 
vấn được thực thi trên cơ sở dữ liệu. Vấn đề đặt ra là làm thế nào để hệ quản trị cơ 
sở dữ liệu đáp ứng các yêu cầu đó một cách nhanh nhất có thể. Một trong những 
giải pháp được lựa chọn đó là tối ưu hóa câu truy vấn. Trong nhiều trường hợp, 
người sử dụng chủ động thực hiện công việc tối ưu hóa này trước khi cài đặt câu 
truy vấn và yêu cầu hệ quản trị cơ sở dữ liệu thực thi. 
Để tối ưu hóa câu truy vấn chúng ta sử dụng biểu thức đại số quan hệ tương ứng 
với câu truy vấn đó. Chúng ta dựa trên kích thước không gian lưu trữ tạm thời 
trong quá trình thực thi phép toán để ước lượng chi phí của biểu thức đại số quan 
hệ. Bản chất của quá trình tối ưu hóa là tìm cách biến đổi biểu thức hiện có để đạt 
được một biểu thức khác cho kết quả tương tự nhưng có chi phí thấp hơn. Quá 
trình tối ưu được sự hỗ trợ của hàng loạt các quy tắc biến đổi tương đương dựa 
trên ba phép toán cơ bản: chọn, chiếu và nhân chéo. 
 Email: namth@buh.edu.vn 268 
Tiếp theo, chúng tôi giới thiệu một quá trình bốn bước nhằm tối ưu hóa một biểu 
thức đại số quan hệ. Quá trình này thực chất là trình tự áp dụng các quy tắc biến 
đổi tương đương đã nêu ở trên nhằm tạo ra một biểu thức có thể không đơn giản 
hơn, nhưng chi phí thấp hơn so với biểu thức ban đầu. 
Cuối cùng, vì câu truy vấn là một dãy tuần tự gồm nhiều phép toán, kết quả của 
phép toán trước là đầu vào của phép toán sau, chúng ta có thể lưu trữ quan hệ kết 
quả đó trong các khung nhìn khác nhau và sử dụng lại chúng mỗi khi cần thiết. 
Việc sử dụng khung nhìn như thế không chỉ giúp rút ngắn thời gian thực hiện truy 
vấn mà còn góp phần vào việc tối ưu hóa câu truy vấn. 

File đính kèm:

  • pdfgiao_trinh_co_so_du_lieu_trinh_hoang_nam.pdf