Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
1,97 MB
Nội dung
Chương Mơ hình liệu quan hệ Nội dung Đại số quan hệ ◦ phép toán ◦ phép toán suy dẫn Các loại phép kết Các quy tắc DBMS Ngôn ngữ quan hệ Ngôn ngữ phi thủ tục (non-procedural language) cho phép người dùng (what) họ muốn mà không cần cách thực (how) để kết ◦ SQL ngôn ngữ phi thủ tục Đại số quan hệ ngôn ngữ thủ tục mức cao (high-level procedure language) cho phép DBMS tạo quan hệ Đại số quan hệ (Relational Algebra) Đại số quan hệ ngôn ngữ tập hợp (set language) bao gồm toán tử (operator) thao tác hay nhiều quan hệ để tạo quan hệ khác mà không làm thay đổi quan hệ ban đầu Các toán hạng kết quan hệ Kết phép tốn trở thành tốn hạng cho phép tốn khác tính bao đóng (closure) Đại số quan hệ SQL Query thực chất biểu thức chứa toán tử đại số quan hệ Kết query quan hệ Mối liên hệ SQL đại số quan hệ?? SQL ngôn ngữ phi thủ tục ( không xác định thủ tục dùng để xử lý truy vấn), đại số quan hệ theo hướng thủ tục Đại số quan hệ SQL Lập trình viên dùng SQL để xác định query họ DBMS kiểm tra cú pháp (parse) query, dịch thành biểu thức đại số quan hệ, đơn giản hiệu giải thuật Query optimizer biến đổi biểu thức đại số thành biểu thức tương đương tốn thời gian thực thi tạo execution plan Code generator chuyển đổi thành mã để thực thi SQL query SQL query Parser Relational algebra Expression Relational algebra Expression Query Optimizer Query Optimizer Query Execution Plan Query Execution Plan Code generator Executable Code Executable Code phép toán Phép Phép Phép Phép Phép chọn (selection) chiếu (projection) tích Descartes (Cartesian product) hợp (union) hiệu (difference) phép toán suy dẫn (Derived operator) Có thể biểu diễn biểu thức phép toán phép toán suy dẫn: ◦ Intersection ◦ Division ◦ Join phép toán Các phép toán thực cho quan hệ r lược đồ quan hệ R điều kiện F Điều kiện F biểu thức luận lý có giá trị true/false, bao gồm: ◦ Các toán hạng tên thuộc tính ◦ Các phép tốn so sánh =, ≠, , ≥ ◦ Các phép tốn luận lý not (¬), and (∧), or (∨) 10 Kết tự nhiên phép giao Phép giao trường hợp đặc biệt phép kết tự nhiên R S khả hợp (unioncompatible) R ∩S = R S 43 Phép kết (Outer join) Cho phép quan hệ xuất kết phép kết cho dù chúng kết với quan hệ khác hay không Cho quan hệ r R, s S R ∩S ≠ ∅ Gọi T = R ∪ S 44 Phép kết (Outer join) Phép kết r s cho kết quan hệ q T bao gồm: ◦ Các phép kết tự nhiên r s ◦ Các tạo từ r không kết s ◦ Các tạo từ s không kết r Các thuộc tính bị thiếu tạo thêm lấy giá trị null 45 Phép kết Các loại kết ◦ Kết trái ◦ Kết phải ◦ Kết θ 46 Outer Join – Example Relation loan loan_number L-170 L-230 L-260 branch_name Downtown Redwood Perryridge amount 3000 4000 1700 Relation borrower customer_name customer_name Jones Jones Smith Smith Hayes Hayes loan_number loan_number L-170 L-170 L-230 L-230 L-155 L-155 Outer Join – Example Join loan borrower loan_number branch_name amount customer_name L-170 L-230 Downtown Redwood 3000 4000 Jones Smith Left Outer Join loan borrower loan_number branch_name loan_number branch_name L-170 Downtown L-170 Downtown L-230 Redwood L-230 Redwood L-260 Perryridge L-260 Perryridge amount customer_name amount customer_name 3000 3000 Jones Jones 4000 4000 Smith Smith 1700 1700 null null Outer Join – Example Right Outer Join loan borrower loan_number loan_number L-170 L-170 L-230 L-230 L-155 L-155 branch_name branch_name Downtown Downtown Redwood Redwood null null amount amount 3000 3000 4000 4000 null null customer_name customer_name Jones Jones Smith Smith Hayes Hayes Full Outer Join loan borrower loan_number L-170 L-230 L-260 L-155 branch_name Downtown Redwood Perryridge null amount customer_name 3000 Jones 4000 Smith 1700 null null Hayes Phép nửa kết θ (θ -semijoin) Phép nửa kết r s thuộc tính A ∈ R B ∈ S cho kết quan hệ bao gồm r mà chúng kết với s theo điều kiện A θ B R A θ B s = { t | t ∈ r ∃ u ∈ s với t[A] θ t[B]} R A θB s = ΠR(r A θ B s) Phép nửa kết khơng có tính giao hốn 50 Phép chia (Division) Phép kết phép suy diễn đặc biệt thông dụng dùng để trả lời query Phép chia phép toán đặc biệt khó hiểu sử dụng 51 Phép chia (Division) Xét query sau: ◦ Tên môn học mà tất giáo sư khoa CS (computer Science) dạy? ◦ Tìm tất sinh viên học tất môn học dạy giáo sư khoa CS? Cần tìm quan hệ khớp (match) với tất quan hệ khác 52 Phép chia (Division) Cho quan hệ r R(A1,…, An,B1, , Bm) s S(B1,…,Bm) Phép chia quan hệ r cho s, ký hiệu r/s với s ≠ ∅ cho kết quan hệ q T (A1, …, An) bao gồm cho s , thuộc r ∈ r/s if and only if {} x s ⊆ r 53 A In r/s Not in r/s B -a b a b c a b c b c B _a _ _b _c 54 Division Operation – Example Relations r, s: r / s: A α β A B α α α β γ δ δ δ ∈ ∈ β 1 r B s Ví dụ phép chia PROFCS Id 101 555 PROFCOURSES Id 783 009 121 555 101 900 101 CrsCode CS305 CrsCode M123 M123 EE101 CS305 CS315 MA23 CS305 Kết PROFCOURSES/PROFCS Môn học mà tất giáo sư CS dạy 56 Ví dụ phép chia (ΠId,Name(STUDENT))[StudId, Name] (ΠStudId,CrsCode(TRANSCRIPT)/ ((ΠProfId,CrsCode(TEACHING))[Id,CrsCode]/ ΠId(σDeptIdr=‘CS’(PROFESSOR)) Sinh viên học tất môn học dạy giáo sư khoa CS 57 ... đại số quan hệ Kết query quan hệ Mối liên hệ SQL đại số quan hệ? ? SQL ngôn ngữ phi thủ tục ( không xác định thủ tục dùng để xử lý truy vấn), đại số quan hệ theo hướng thủ tục Đại số quan hệ SQL... nhiều quan hệ để tạo quan hệ khác mà không làm thay đổi quan hệ ban đầu Các toán hạng kết quan hệ Kết phép tốn trở thành toán hạng cho phép toán khác tính bao đóng (closure) Đại số quan hệ. .. ngơn ngữ phi thủ tục Đại số quan hệ ngôn ngữ thủ tục mức cao (high-level procedure language) cho phép DBMS tạo quan hệ Đại số quan hệ (Relational Algebra) Đại số quan hệ ngôn ngữ tập hợp (set language)