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
Ni dung chi tiết  
2
Gii thiu  
§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=cAnd 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
Gii thiu (tt)  
§Xử lý của DBMS  
Cách 1:  
ΠB,D [ σR.A=cS.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
Gii thiu (tt)  
§Quy trình xử lý câu truy vấn  
Câu truy vn  
Kết qutruy vn  
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
Ni dung chi tiết  
6
Phân tích cú pháp và ngnghĩa  
Kiểm tra câu truy  
vấn có đúng cú pháp  
hay không  
Câu truy vn  
Kết qutruy vn  
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à ngnghĩ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í d1  
§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í d1 (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í d2  
§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í d2 (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à ngnghĩa  
Câu truy vn  
Kết qutruy vn  
Kim tra ngnghĩa gia  
Quan htrong mnh đề  
From vi Thuc tính trong  
các mnh đề 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  
Kim tra kiu dliu có  
phù hp vi thuc tính  
hay không. Tên thuc tính  
có nhp nhng không  
Đưa về dạng  
Biểu diễn trong  
13  
Ni dung chi tiết  
14  
Biến đổi sang ĐSQH  
Câu truy vn  
Kết qutruy vn  
Phân tích cú pháp  
Thực thi mã  
Dng biu din trong :  
Chính là Biu thc Đại số  
Quan hệ  
Kiểm tra ngữ nghĩa  
Phát sinh mã  
Tối ưu hóa  
Biu din dưới dng Cây :  
Cây Đại sQuan 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í d2  
π
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í d1 (Lng phân cp)  
π
cusNm  
σ
Customer  
<condition>  
IN  
S
π
cusID  
<tuple>  
σ
balance=100  
<attribute>  
cusID  
Account  
20  
Tải về để xem bản đầy đủ
pdf 72 trang yennguyen 342160
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