CHƯƠNG Đại số quan hệ Bài giảng môn Cơ sở liệu © Bộ mơn Hệ Thống Thơng Tin - Khoa Công Nghệ Thông Tin - Trường Đại học Khoa học Tự nhiên Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép toán khác Các thao tác cập nhật quan hệ © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Giới thiệu ▪ Xét số xử lý quan hệ KHOA - Thêm Khoa ‘Hóa học’ vào quan hệ - Chuyển Khoa CNTT sang phòng B12 NĂMTL PHỊNG ĐIỆNTHOAI TRƯỞNGKHOA NGÀYNHẬNCHỨC Cơng nghệ thơng tin 1995 B12 B11 0838123456 002 20/02/2005 VL Vật lý 1976 B21 0838223223 005 18/09/2003 SH Sinh học 1980 B31 0838454545 004 11/10/2000 HH Hóa học 1980 B41 NULL 007 15/10/2001 MÃKHOA TÊNKHOA CNTT - Cho biết tên khoa thành lập từ năm 1980 TÊNKHOA Sinh học Hóa học © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Giới thiệu (tt) ▪ Có loại xử lý: - Làm thay đổi liệu (cập nhật): thêm mới, xóa sửa - Khơng làm thay đổi liệu (rút trích): truy vấn ▪ Ngơn ngữ truy vấn (Query Language – QL): - Cho phép người dùng rút trích hay cập nhật liệu lưu mơ hình liệu ▪ Ngơn ngữ truy vấn quan hệ: - Đại số quan hệ (Relational Algebra) ⚫ Biểu diễn câu truy vấn dạng biểu thức, cho phép người dùng biểu diễn bước thực câu truy vấn - Phép tính quan hệ (Relational Calculus) ⚫ Biểu diễn kết phi thủ tục dựa ngôn ngữ logic, cho phép người dùng diễn đạt họ cần thao tác xử lý - SQL (Structured Query Language) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Đại số ▪ Đại số - Toán tử (operator) - Toán hạng (operand) ▪ Trong số học - Toán tử: +, -, *, / Toán hạng - biến (variables): x, y, z Hằng (constant) Biểu thức ⚫ (x+7) / (y-3) ⚫ (x+y)*z and/or (x+7) / (y-3) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Đại số quan hệ ▪ Biến quan hệ - Tập hợp (set) ▪ Toán tử phép toán (operations) - Trên tập hợp ⚫ Hội (union) ⚫ Giao (intersec) ⚫ Trừ − (difference) - Rút trích phần quan hệ ⚫ Chọn (selection) ⚫ Chiếu (projection) - Kết hợp quan hệ ⚫ Tích Cartesian (Cartesian product) ⚫ Kết (join) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Đại số quan hệ (tt) ▪ Khi dùng đại số quan hệ, nhu cầu truy vấn thể qua biểu thức đại số quan hệ: - Kết trả thể quan hệ - Có thể chuỗi phép toán đại số quan hệ - Theo thứ tự thực toán tử, kết toán tử thực trước đầu vào cho tốn tử thực © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Đại số quan hệ (tt) Phép toán đại số Phép toán đại số quan hệ Toán hạng - Biến : x, y, z, … - Hằng số : 150, … - Quan hệ : NhanVien, … - Thể quan hệ : t, v, … Toán tử - Thao tác xử lý toán - Thao tác xử lý quan hệ hạng để tạo thành giá trị : +, -, để tạo thành quan hệ : phép *, /, … chọn , hội , … Biểu thức - Chuỗi phép toán đại số - Kết cho giá trị (x+7) / (y-3) (x+y)*z and/or (x+7) / (y-3) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN - Chuỗi phép toán đại số quan hệ (câu truy vấn) - Kết cho quan hệ MANV (NHANVIEN) Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép toán khác Các thao tác cập nhật quan hệ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Phép toán tập hợp ▪ Quan hệ tập hợp - Phép hội r s - Phép giao r s - Phép trừ r − s ▪ Tính khả hợp (Union Compatibility) - Cho hai lược đồ quan hệ R(A1, A2, …, An) S(B1, B2, …, Bn), r(R), s(S) Hai quan hệ r s khả hợp ⚫ R S có bậc n ⚫ Và có DOM(Ai)=DOM(Bi) , 1 i n ▪ Kết phép toán , , − r s quan hệ có thuộc tính tên với thuộc tính quan hệ r © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 10 Phép toán tập hợp (tt) ▪ Ví dụ hai quan hệ khả hợp SINHVIEN TENSV NGSINH PHAI TENGV NG_SINH GIOITINH Tung 12/08/1955 Nam GIAOVIEN Trinh 04/05/1986 Nu Hang 07/19/1968 Nu Khang 10/25/1983 Nam Nhu 06/20/1951 Nu Phuong 05/03/1958 Nu Hung 09/15/1962 Nam Minh 02/28/1942 Nam Chau 12/30/1988 Nu Bậc n=3 DOM(TENSV) = DOM(TENGV) DOM(NGSINH) = DOM(NG_SINH) DOM(PHAI) = DOM(GIOITINH) 11 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Phép hội ▪ Cho quan hệ r s khả hợp ▪ Phép hội r s - Ký hiệu r s - Là quan hệ gồm thuộc r thuộc s, hai (các trùng lắp bị loại bỏ) rs={t/trts} ▪ Ví dụ r A B s B B rs A A © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 12 Phép hội (tt) SinhVien GiaoVien HOTEN Đinh Bá Tiến Nguyễn Thanh Tùng Lê Quỳnh Như DIACHI 119 Cống Quỳnh, Tp HCM 222 Nguyễn Văn Cừ, Tp HCM 291 Hồ Văn Huê, Tp HCM HOTEN Đinh Bá Tiến Trần Thanh Tâm DIACHI 119 Cống Quỳnh, Tp HCM 553 Mai Thị Lựu, Tp HCM SinhVien GiaoVien HOTEN Đinh Bá Tiến Nguyễn Thanh Tùng Lê Quỳnh Như Trần Thanh Tâm DIACHI 119 Cống Quỳnh, Tp HCM 222 Nguyễn Văn Cừ, Tp HCM 291 Hồ Văn Huê, Tp HCM 553 Mai Thị Lựu, Tp HCM 13 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Phép giao ▪ Cho quan hệ r s khả hợp ▪ Phép giao r s - Ký hiệu r s - Là quan hệ gồm thuộc r đồng thời thuộc s rs={t/trts} ▪ Ví dụ r A B A B s © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN rs A B 14 Phép giao (tt) SinhVien GiaoVien HOTEN Đinh Bá Tiến Nguyễn Thanh Tùng Lê Quỳnh Như DIACHI 119 Cống Quỳnh, Tp HCM 222 Nguyễn Văn Cừ, Tp HCM 291 Hồ Văn Huê, Tp HCM HOTEN Đinh Bá Tiến Trần Thanh Tâm DIACHI 119 Cống Quỳnh, Tp HCM 553 Mai Thị Lựu, Tp HCM SinhVien GiaoVien HOTEN Đinh Bá Tiến DIACHI 119 Cống Quỳnh, Tp HCM 15 © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN Phép trừ ▪ Cho quan hệ r s khả hợp ▪ Phép giao r s - Ký hiệu r − s - Là quan hệ gồm thuộc R không thuộc S r−s={t/trts} ▪ Ví dụ r s r−s A B A B A B © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 16 Phép trừ (tt) SinhVien HOTEN Đinh Bá Tiến Nguyễn Thanh Tùng Lê Quỳnh Như GiaoVien DIACHI 119 Cống Quỳnh, Tp HCM 222 Nguyễn Văn Cừ, Tp HCM 291 Hồ Văn Huê, Tp HCM HOTEN Đinh Bá Tiến Trần Thanh Tâm DIACHI 119 Cống Quỳnh, Tp HCM 553 Mai Thị Lựu, Tp HCM SinhVien – GiaoVien HOTEN DIACHI Nguyễn Thanh Tùng 222 Nguyễn Văn Cừ, Tp HCM Lê Quỳnh Như 291 Hồ Văn H, Tp HCM © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 17 Các tính chất ▪ Giao hoán rs=sr rs=sr ▪ Kết hợp r (s t) = (r s) t r (s t) = (r s) t © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 18 Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép toán khác Các thao tác cập nhật quan hệ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 19 Phép chọn ▪ Được dùng để lấy quan hệ r thỏa mãn điều ▪ kiện chọn P Ký hiệu P (r) ▪ P biểu thức gồm mệnh đề có dạng - - ⚫ gồm , , , , , = ⚫ Các mệnh đề nối lại nhờ phép , , © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 20 10 Ví dụ 14 ▪ Cho biết lương cao mơn ‘HTTT’ © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 60 Ví dụ 15 ▪ Cho biết giáo viên làm việc môn với giáo viên 002 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 61 30 Ví dụ 16 ▪ Cho biết giáo viên môn ‘Vi sinh’ có tham gia đề tài 006 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 62 Tập đầy đủ phép toán ĐSQH ▪ Tập phép toán , , , −, gọi tập đầy đủ phép toán ĐSQH - Nghĩa phép tốn biểu diễn qua chúng - Ví dụ ⚫ r s = r s − ((r−s) (s−r)) ⚫r Cs = C(rs) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 63 31 Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép tốn khác Các thao tác cập nhật quan hệ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 64 Phép chia ▪ Được dùng để lấy số quan hệ r cho ▪ thỏa với tất quan hệ s Ký hiệu r s - r(Z) s(X) ⚫ Z tập thuộc tính r, X tập thuộc tính s ⚫XZ ▪ Kết phép chia quan hệ t(Y) - Với Y=Z-X - Có t0 t với tSS, tồn tRR thỏa điều kiện ⚫ tR(Y) = t0 R(Z) S(X) T(Y) ⚫ tR(X) = tS(X) X Y © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 65 32 Phép chia (tt) ▪ Ví dụ r rs A B C D E a a a a a b a a a b a a a b a b s D E A B C a a b a © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 66 Ví dụ 17 ▪ Cho biết mã giáo viên tham gia tất công việc thuộc đề tài 001 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 67 33 Ví dụ 18 ▪ Cho biết tên đề tài có tất giảng viên mơn ‘Hệ thống thơng tin’ tham gia © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 68 Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép tốn tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép toán khác - Hàm kết hợp (Aggregation function) - Phép gom nhóm (Grouping) - Phép kết (Outer join) ▪ Các thao tác cập nhật quan hệ © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 70 34 Hàm kết hợp ▪ Nhận vào tập hợp giá trị ▪ Trả giá trị đơn ▪ Gồm - AVG MIN MAX SUM COUNT 71 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Hàm kết hợp (tt) ▪ Ví dụ r A B 2 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN SUM(B) = 10 AVG(A) = 1.5 MIN(A) = MAX(B) = COUNT(A) = 72 35 Phép gom nhóm ▪ Được dùng để phân chia quan hệ thành nhiều nhóm dựa ▪ điều kiện gom nhóm Ký hiệu F1(A1), F2(A2), …, Fn(An)(E) G1, G2, …, Gn - E biểu thức ĐSQH G1, G2, …, Gn thuộc tính gom nhóm F1, F2, …, Fn hàm kết hợp A1, A2, …, An thuộc tính tính tốn hàm F 73 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN Phép gom nhóm (tt) ▪ Ví dụ SUM(C)(r) SUM_C r A B C 10 27 © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN A SUM(C)(r) A SUM_C 14 10 74 36 Ví dụ 19 ▪ Cho biết số lượng giáo viên tổng lương họ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 75 Ví dụ 20 ▪ Cho biết số lượng giáo viên lương trung bình mơn © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 76 37 Ví dụ 21 ▪ Cho biết tên khoa có đơng giáo viên © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 77 Ví dụ 22 ▪ Cho biết họ tên giáo viên chủ nhiệm nhiều đề tài © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 78 38 Ví dụ 23 ▪ Cho biết tên chủ đề số lượng đề tài thuộc chủ đề © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 79 Phép kết ▪ Mở rộng phép kết để tránh mát thông tin - Thực phép kết - Lấy thêm khơng thỏa điều kiện kết ▪ Có hình thức - Mở rộng bên trái - Mở rộng bên phải - Mở rộng bên © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 80 39 Ví dụ 24 - a ▪ Cho biết họ tên giáo viên tên môn họ làm trưởng môn có R1 GIAOVIEN KQ MAGV=TRUONGBM BOMON HOTEN, TENBM (R1) HOTEN TENBM Nguyễn Hoài An Mạng máy tính Trần Trà Hương Hệ thống thơng tin Nguyễn Ngọc Ánh null … … © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 81 Ví dụ 24 - b ▪ Cho danh sách tên môn họ tên trưởng mơn có © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 82 40 Ví dụ 24 - c ▪ Cho danh sách tên giáo viên đề tài giáo viên chủ nhiệm có © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 83 Nội dung chi tiết ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Giới thiệu Đại số quan hệ Phép toán tập hợp Phép chọn Phép chiếu Phép tích Cartesian Phép kết Phép chia Các phép toán khác Các thao tác cập nhật quan hệ © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 84 41 Các thao tác cập nhật ▪ Nội dung CSDL cập nhật thao tác - Thêm (insertion) - Xóa (deletion) - Sửa (updating) ▪ Các thao tác cập nhật diễn đạt thơng qua phép tốn gán rnew phép tốn rold © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 85 Thao tác thêm ▪ Được diễn đạt rnew rold E - r quan hệ - E biểu thức ĐSQH ▪ Ví dụ - Phân cơng giáo viên có mã 001 tham gia công việc đề tài số 001 với mức phụ cấp THAMGIAĐT THAMGIAĐT (‘001’, ‘001’, 4, 2) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 86 42 Thao tác xóa ▪ Được diễn đạt rnew rold − E - r quan hệ - E biểu thức ĐSQH ▪ Ví dụ - Xóa phân cơng tham gia đề tài cho giáo viên 001 THAMGIAĐT THAMGIAĐT − MAGV=‘001’(THAMGIAĐT) © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 87 Ví dụ 25 ▪ Xóa đề tài thuộc chủ đề ‘NCPT’ © Bộ mơn HTTT - Khoa CNTT - Trường ĐH KHTN 88 43 Thao tác sửa ▪ Được diễn đạt rnew F1, F2, …, Fn (rold) - r quan hệ - Fi biểu thức tính tốn cho giá trị thuộc tính ▪ Ví dụ - Tăng mức phụ cấp cho đề tài tất giáo viên lên 1.5 lần THAMGIAĐT MAGV, MAĐT, STT, PHUCAP*1.5(THAMGIAĐT) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 89 44 ... 10 + 10 + 20 - 20 - 10 - 10 + 10 + 20 - 10 - © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 40 20 Ví dụ ▪ Cho biết thơng tin môn thông tin giảng viên làm trưởng mơn... MMT Nguyễn Hoài An MMT Nguyễn Hoài An HTTT Trần Trà Hương HTTT Trần Trà Hương HTTT Nguyễn Ngọc Anh HTTT Nguyễn Ngọc Anh VS Trương Nam Sơn VS Trương Nam Sơn … … … … 47 © Bộ môn HTTT - Khoa CNTT -. .. thông tin - Thực phép kết - Lấy thêm không thỏa điều kiện kết ▪ Có hình thức - Mở rộng bên trái - Mở rộng bên phải - Mở rộng bên © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 80 39 Ví dụ 24 - a ▪ Cho