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 đủ
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:
bai_giang_he_quantri_co_sodulieu_chuong_5_xu_ly_cau_truy_van.pdf