Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Xử lý câu truy vấn - Nguyễn Trường Sơn

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU  
Chương 5:  
XỬ LÝ CÂU TRUY  
VẤN  
GVLT: Nguyễn Trường Sơn  
1
Nội dung chi tiết  
2
Giới thiệu  
§ꢀ Xét hai quan hệ R và S nhu sau :  
–ꢀ R(A, B, C)  
–ꢀ S(C, D, E)  
§ꢀ Xét câu truy vấn sau đây trên R va S  
SELECT R.B, S.D  
FROM R, S  
WHERE R.A=‘c’ And S.E=2 And R.C=S.C  
§ꢀ Nhận xét  
–ꢀ Một câu truy vấn có rất nhiều cách thực hiện  
–ꢀ Tùy trường hợp mà các cách thực hiện được đánh giá là tốt hay dở  
3
Giới thiệu (tt)  
§ꢀ Xử lý của DBMS  
–ꢀ Cách 1:  
ΠB,D [ σR.A=‘c’ ∧ S.E=2 ∧ R.C = S.C (RxS)]  
–ꢀ Cách 2:  
ΠB,D [ σR.A=‘c’ (R) σS.E=2 (S)]  
–ꢀ Cách 3: Sử dụng chỉ mục trên R.A và S.C  
•ꢀ Tìm các bộ trong R thỏa R.A=‘c’  
•ꢀ Với mỗi bộ tìm thấy, tìm tiếp các bộ trong S thỏa R.C=S.C  
•ꢀ Bỏ đi những bộ S.E ≠ 2  
•ꢀ Chiếu trên thuộc tính B và D  
§ꢀ DBMS chọn cách nào ?  
Mục tiêu chương:  
Tập trung vào xử lý truy vấn của  
RDBMS  
4
Giới thiệu (tt)  
§ꢀ Quy trình xử lý câu truy vấn  
Câu truy vấn  
Kết quả truy vấn  
Phân tích cú pháp  
Kiểm tra ngữ nghĩa  
Thực thi mã  
Phát sinh mã  
Tối ưu hóa  
Đưa về dạng  
Biểu diễn trong  
5
Nội dung chi tiết  
6
Phân tích cú pháp và ngữ nghĩa  
Kiểm tra câu truy  
vấn có đúng cú pháp  
hay không  
Câu truy vấn  
Kết quả truy vấn  
Phân tích cú pháp  
Kiểm tra ngữ nghĩa  
Thực thi mã  
Kết quả cho ra là 1  
Cây phân tích  
(parse tree)  
Phát sinh mã  
Tối ưu hóa  
Đưa về dạng  
Biểu diễn trong  
7
Phân tích cú pháp và ngữ nghĩa (tt)  
§ꢀ Cây cú pháp:  
<Query>  
<SFW>  
<Condition>  
SELECT <SelectList>  
FROM <FromList>  
WHERE  
<Attribute>  
<Relation>  
<Attribute> = <Attribute>  
<Tuple> IN <Query>  
<Attribute> LIKE <pattern>  
<Condition> AND <Condition>  
…
…
…
<AttributeName>  
<TableName>  
8
Ví dụ 1  
§ꢀ Xét hai quan hệ sau :  
–ꢀ Customer(cusID, cusNm, cusStreet, cusCity)  
–ꢀ Account(accID, cusID, balance)  
§ꢀ Và câu truy vấn  
SELECT cusNm  
FROM Customer  
WHERE cusID IN (  
SELECT cusID  
FROM Account  
WHERE balance = 100)  
9
Ví dụ 1 (tt)  
<Query>  
<SFW>  
<Condition>  
IN <Query>  
SELECT <SelectList>  
<Attribute>  
FROM  
<FromList>  
WHERE  
<Tuple>  
<Relation>  
Customer  
<Attribute>  
cusID  
cusNm  
<SFW>  
<Condition>  
SELECT <SelectList>  
FROM  
<FromList>  
WHERE  
<Attribute>  
cusID  
<Relation>  
Account  
<Attribute> = <pattern>  
balance 100  
10  
Ví dụ 2  
§ꢀ Xét hai quan hệ sau đây :  
–ꢀ Customer(cusID, cusNm, cusStreet, cusCity)  
–ꢀ Account(accID, cusID, balance)  
§ꢀ Và câu truy vấn sau:  
SELECT cusNm  
FROM Customer, Account  
WHERE Customer.cusID = Account.cusID  
AND balance = 100  
11  
Ví dụ 2 (tt)  
<Query>  
<SFW>  
<Condition>  
<Condition>  
SELECT  
<SelectList>  
<Attribute>  
cusNm  
FROM <FromList>  
WHERE  
<Relation> , <Relation>  
Customer  
Account  
<Condition>  
AND  
<Attribute>  
=
<Attribute>  
Account.cusID  
<Attribute>  
balance  
=
<Pattern>  
100  
Customer.cusID  
12  
Phân tích cú pháp và ngữ nghĩa  
Câu truy vấn  
Kết quả truy vấn  
Kiểm tra ngữ nghĩa giữa  
Quan hệ trong mệnh đề  
From với Thuộc tính trong  
các mệnh đề khác  
Phân tích cú pháp  
Kiểm tra ngữ nghĩa  
Thực thi mã  
Phát sinh mã  
Tối ưu hóa  
Kiểm tra kiểu dữ liệu có  
phù hợp với thuộc tính  
hay không. Tên thuộc tính  
có nhập nhằng không  
Đưa về dạng  
Biểu diễn trong  
13  
Nội dung chi tiết  
14  
Biến đổi sang ĐSQH  
Câu truy vấn  
Kết quả truy vấn  
Phân tích cú pháp  
Thực thi mã  
Dạng biểu diễn trong :  
Chính là Biểu thức Đại số  
Quan hệ  
Kiểm tra ngữ nghĩa  
Phát sinh mã  
Tối ưu hóa  
Biểu diễn dưới dạng Cây :  
Cây Đại số Quan hệ  
(logical query plan)  
Đưa về dạng  
Biểu diễn trong  
15  
§ꢀ Câu truy vấn được phân rã thành các query block (QB).  
–ꢀ Query Block là đơn vị cơ bản để có thể chuyển sang các biểu thức  
ĐSQH và tối ưu hoá  
–ꢀ Một QB chứa một biểu thức đơn SELECT- FROM-WHERE-GROUP  
BY – HAVING  
–ꢀ Các câu truy vấn lồng trong 1 câu truy vấn là các QB độc lập.  
–ꢀ Các toán tử gom nhóm (max, min, sum, count) được thể hiện dùng  
ĐSQH mở rộng.  
–ꢀ Mỗi câu truy vấn được biểu diễn sang dạng ĐSQH dạng biểu thức  
hoặc cây truy vấn (query tree)  
16  
Biến đổi sang ĐSQH (tt)  
§ꢀ Truy vấn đơn:  
–ꢀ Xét câu trúc <SFW>, sử dụng quy tắc <SFW>  
•ꢀ Thay thế <FromList> thành các biến quan hệ  
–ꢀ Sử dụng phép tích cartesian (X) cho các biến quan hệ  
•ꢀ Thay thế <Condition> thành phép chọn σC  
•ꢀ Thay thế <SelectList> thành phép chiếu πL  
–ꢀ Kết quả là một Cây truy vấn  
πL  
σC  
x
…
R S T  
17  
Xét ví dụ 2  
π
cusNm  
σ
Customer.cusID=Account.cusID ∧ balance=100  
x
Customer  
Account  
18  
Biến đổi sang ĐSQH (tt)  
§ꢀ Truy vấn lồng:  
Tồn tại câu truy vấn con S trong <Condition>  
–ꢀ Áp dụng qui tắc <SFW> cho truy vấn con S  
–ꢀ Sử dụng phép chọn 2 biến (two-argument selection)  
•ꢀ Nút là phép chọn không có tham số  
•ꢀ Nhánh con trái là biến quan hệ R  
•ꢀ Nhánh con phải là <condition> áp dụng cho mỗi bộ trong R  
σ
Câu truy vấn con  
R
<Condition>  
Tuple Operator S  
19  
Xét ví dụ 1 (Lồng phân cấp)  
π
cusNm  
σ
Customer  
<condition>  
IN  
S
π
cusID  
<tuple>  
σ
balance=100  
<attribute>  
cusID  
Account  
20  
Tải về để xem bản đầy đủ
pdf 72 trang yennguyen 362421 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Xử lý câu truy vấn - Nguyễn Trường Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_he_quantri_co_sodulieu_chuong_5_xu_ly_cau_truy_van.pdf