Silde bài giảng môn HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU rất sinh động và dễ hiểu của Giảng viên Nguyễn Trường Sơn, Khoa CNTT HCMUS. Đây là chương 6: Xử lý câu truy vấnSilde bài giảng môn HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU rất sinh động và dễ hiểu của Giảng viên Nguyễn Trường Sơn, Khoa CNTT HCMUS. Đây là chương 6: Xử lý câu truy vấn
LOGO !"#$%&'#()*#+,# #/0#12"%## !"#$%&Nguyễn'Trường'Sơn' 1" & Chương'5:& '(&#)&*+,&$-,.& "/0# Nội dung chi tiết ! !121&34156& ! 7489&3:;4&;<&=4>=&?&9@A&9@4BC& ! D1E9&FG1&HC9@&IJ1&HK&L6C9&45& ! $K1&M6&4NC&;8O&3P6O&QR9& ! S2;&TMU9@&V:;4&34M2;&;8O&3P6O&QR9& ! 74>3&H194&QW&34X;&341&YZ&T594& [& Giới thiệu ! '\3&4C1&]6C9&45&-&QW&^&946&HC6&%& _ -`ab&Db&*c& _ ^`*b&db&ec& ! '\3&;86&3P6O&QR9&HC6&F8O&3Pf9&-&QC&^& & ! 04g9&h\3&& _ ij3&;86&3P6O&QR9&;N&PR3&941k6&;>;4&34X;&4159& _ $lO&3PMm9@&4U=&YW&;>;&;>;4&34X;&4159&FMU;&F>94&@1>&TW&3K3&4CO&no& p& ^e#e*$&-qDb&^qd& r-si&-b&^& tue-e&-qav‘;’&a9n&^qev[&a9n&-q*v^q*& Giới thiệu (tt) ! 'w&Tx&;yC&dDi^& _ *>;4&z%& _ *>;4&[%& _ *>;4&p%&^w&n{9@&;4|&Y{;&3Pf9&-qa&QW&^q*& } $~Y&;>;&•j&3P€9@&-&34•C&-qav‘;’& } "21&Y‚1&•j&3~Y&34ROb&3~Y&31E=&;>;&•j&3P€9@&^&34•C&-q*v^q*& } D•&F1&94A9@&•j&^qe&≠&[& } *41E6&3Pf9&346j;&3:94&D&QW&d& ! dDi^&;4ƒ9&;>;4&9W€&„& …& Mục'tiêu'chương%&& (34#56789#:;<#=>#?@#567A#:B8#CDE# )/FG-&& Π FH/ #I#σ )JKL‘C’#∧#-JMLN#∧#)J+#L#-J+ #`-=^cO# Π FH/ #I#σ )JKL‘C’ #P)Q######σ -JMLN #P^QO# Giới thiệu (tt) ! L6O&3P~94&hw&Tx&;86&3P6O&QR9& †& RST8#5UCS#CV#4SW4# XYZ[#56E#89\#89S]E# ^_E#:`#ab89# FYZ7#aYc8#56<89# (dY#_7#SeE# RSW5#fY8S#[g# (ShC#5SY#[g# Câu truy vấn Kết quả truy vấn Nội dung chi tiết ! !121&34156& ! RST8#5UCS#CV#4SW4#i#89\#89S]E# ! D1E9&FG1&HC9@&IJ1&HK&L6C9&45& ! $K1&M6&4NC&;8O&3P6O&QR9& ! S2;&TMU9@&V:;4&34M2;&;8O&3P6O&QR9& ! 74>3&H194&QW&34X;&341&YZ&T594& ‡& Phân tích cú pháp và ngữ nghĩa RST8#5UCS#CV#4SW4# XYZ[#56E#89\#89S]E# ^_E#:`#ab89# FYZ7#aYc8#56<89# (dY#_7#SeE# RSW5#fY8S#[g# (ShC#5SY#[g# Câu truy vấn Kết quả truy vấn Kiểm'tra'câu'truy' vấn'có'đúng'cú'pháp' hay'không' Kết'quả'cho'ra'là'1' Cây'phân'tích' (parse'tree)' ˆ& Phân tích cú pháp và ngữ nghĩa (tt) ! *8O&;<&=4>=%& ‰& <Query> <SFW> SELECT <SelectList> FROM <FromList> WHERE <Condition> <Attribute> <AttributeName> <Relation> <TableName> <Condition> AND <Condition> <Attribute> = <Attribute> <Tuple> IN <Query> <Attribute> LIKE <pattern> … … … Ví dụ 1 ! '\3&4C1&]6C9&45&HC6&%& _ *6H3€YŠP`;6H‹db&;6H0Yb&;6H^3PŠŠ3b&;6H*13Oc& _ a;;€693`C;;‹db&;6H‹db&•CTC9;Šc& ! "W&;86&3P6O&QR9& Œ& ^e#e*$&;6H0Y& r-si&*6H3€YŠP& tue-e&;6H‹d&‹0&`& &^e#e*$&;6H‹d& &r-si&a;;€693&& &tue-e&•CTC9;Š&v&z••c& Ví dụ 1 (tt) z•& j$7k6Al# j-mnl# -M1M+(# Ž^ŠTŠ;3#1H3•& m)oG# ŽrP€Y#1H3•& n!M)M# Ž*€9n131€9•& Ža33P1•63Š•& Ž-ŠTC31€9•& ;6H0Y& *6H3€YŠP& Ž$6=TŠ•& ‹0& j$7k6Al# Ža33P1•63Š•& ;6H‹d& j-mnl# -M1M+(# Ž^ŠTŠ;3#1H3•& m)oG# ŽrP€Y#1H3•& n!M)M# Ž*€9n131€9•& Ža33P1•63Š•& ;6H‹d& Ž-ŠTC31€9•& a;;€693& Ža33P1•63Š•& •CTC9;Š& v& Ž=C33ŠP9•& z••& [...]... Account.cusID balance = 100 12 Phân tích cú pháp và ngữ nghĩa Câu 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 Kết quả truy vấn Thực thi mã Kiểm tra ngữ nghĩ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 Phân tích cú pháp Phát sinh mã Đưa về dạng Biểu... pháp -‐ ngữ nghĩa Biến đổi sang Đại số Quan hệ Tối ưu hóa cây truy vấn Ước lượng kích thước cây truy vấn Phát sinh và thực thi mã lệnh 14 Biến đổi sang ĐSQH Câu truy vấn Kết quả truy vấn Phân tích cú pháp Dạng biểu diễn trong : Chính là Biểu thức Đại số Quan hệ Biểu diễn dưới dạng Cây : Cây Đại số Quan hệ (logical query plan) Thực thi mã Kiểm tra ngữ... 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 , sử dụng quy tắc • Thay thế 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ế thành phép chọn σC • Thay thế thành... mã Kiểm tra ngữ nghĩa Phát sinh mã Đưa về dạng Biểu diễn trong Tối ưu hóa 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...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... – Áp dụng qui tắc 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à áp dụng cho mỗi bộ trong R σ Câu truy vấn con R Tuple Operator S 19 Xét ví dụ 1 (Lồng phân cấp) πcusNm σ Customer... đương distinct) σbalance=100 Account 23 Xét ví dụ 1 (tt) πcusNm Customer.cusID=Account.cusID Customer δ πcusID σbalance=100 Account 24 Ví dụ 3 (Lồng tương quan) § Xét hai quan hệ sau đây : – Customer(cusID, cusNm, cusStreet, cusCity) – Account(accID, cusID, balance) § Xét câu truy vấn sau đây : SELECT c.cusNm FROM Customer c WHERE 10000 >=... WHERE a.cusID=c.cusID) 25 Ví dụ 3 (tt) πcusNm Phép chọn 2 biến σ Customer c Hằng số 10000 ≥ ℑSUM(a.balance) S σc.custID=a.cusID Account a 26 Ví dụ 3 (tt) πcusNm σ Customer c 10000 Điều kiện liên kết R và S ≥ ℑSUM(a.balance) S σc.custID=a.cusID Account a 27 Ví dụ 3 (tt) πcusNm σc.custID=a.cusID... 10000≥Total X Customer c ρ [ ℑSUM(a.balance)] Total cusID Account a S 30 Nội dung chi tiết § § § § § § Giới thiệu Phân tích cú pháp -‐ ngữ nghĩa Biến đổi sang Đại số Quan hệ Tối ưu hóa cây truy vấn Ước lượng kích thước cây truy vấn Phát sinh và thực thi mã lệnh 31 Tối ưu hóa cây truy vấn Câu truy vấn Kết quả truy vấn Phân tích cú pháp Thực... vấn chiếm dụng bộ nhớ ít nhất có thể – Nhận xét • Hai yêu cầu trên mâu thuẫn nhau • Cần phải dung hòa, thỏa hiệp § Chiến thuật – Thực hiện các phép toán quan hệ 1 ngôi trước (nếu có thể) – Sau đó thực hiện các phép toán 2 ngôi và các phép toán 1 ngôi còn lại – Áp dụng các quy tắc để tối ưu 33 Áp dụng quy tắc § 1 . *6H3€YŠP`;6H‹db&;6H0Yb&;6H^3PŠŠ3b&;6H*13Oc& _ a;; 69 3`C;;‹db&;6H‹db&•CTC9;Šc& ! "W&; 86& amp;3P6O&QR9&HC6%& zz& ^e#e*$&;6H0Y& r-si&*6H3€YŠPb&a;; 69 3& tue-e&*6H3€YŠPq;6H‹d&v&a;; 69 3q;6H‹d& a0d&•CTC9;Š&v&z••& Ví. z‰& π;6H0Y& σ*6H3€YŠPq;6H‹dva;; 69 3q;6H‹d&∧&•CTC9;Švz••& *6H3€YŠP& a;; 69 3& h& Biến đổi sang ĐSQH (tt) ! (67 A#:B8#?u89%&& $•9&3J1&; 86& amp;3P6O&QR9&;€9&^&3P€9@&Ž*€9n131€9•& _ . <Attribute> LIKE <pattern> … … … Ví dụ 1 ! '3&4C1&]6C9&45&HC6&%& _ *6H3€YŠP`;6H‹db&;6H0Yb&;6H^3PŠŠ3b&;6H*13Oc& _ a;; 69 3`C;;‹db&;6H‹db&•CTC9;Šc& !