Академический Документы
Профессиональный Документы
Культура Документы
! Giới"thiệu"
! Đại"số"quan"hệ"
!
CHƯƠNG'4'
! Phép"toán"tập"hợp"
! Phép"chọn"
Đại!số!quan!hệ! ! 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"trên"quan"hệ"
Bài$giảng$môn$Cơ$sở$dữ$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""" ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 2
Giới!thiệu! Giới!thiệu!(8)!
! Xét"một"số"xử"lý"trên"quan"hệ"KHOA" ! Có"2"loại"xử"lý:"
- Thêm"Khoa"‘Hóa"học’"vào"quan"hệ" - Làm"thay"đổi"dữ"liệu"(cập"nhật):"thêm"mới,"xóa"và"sửa"
- Chuyển"Khoa"CNTT"sang"phòng"B12" - Không"làm"thay"đổi"dữ"liệu"(rút"trích):"truy"vấn"
3 4
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN"
Đại!số! Đại!số!quan!hệ!
! Đại"số" ! Biến"là"các"quan"hệ""
- Toán"tử"(operator)" - Tập$hợp"(set)"
- Toán"hạng"(operand)" ! Toán"tử"là"các"phép"toán"(operations)"
- Trên"tập"hợp"
" Hội"""∪"(union)"
! Trong"số"học"
" Giao"∩"(intersec)"
- Toán"tử:"+,"/,"*,"/"
" Trừ""">""(difference)"
- Toán"hạng"/"biến"(variables):"x,"y,"z" - Rút"trích"1"phần"của"quan"hệ"
- Hằng"(constant)" " Chọn""σ""(selection)"
- Biểu"thức" " Chiếu""π""(projection)"
" (x+7)"/"(y/3)" - Kết"hợp"các"quan"hệ"
" (x+y)*z""and/or"(x+7)"/"(y/3)" " Tích"Cartesian""×""(Cartesian"product)"
" Kết""""""""(join)"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 5 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 6
Đại!số!quan!hệ!(8)! Đại!số!quan!hệ!(8)!
Phép"toán"đại"số" Phép"toán"đại"số"quan"hệ"
! Khi"dùng"đại"số"quan"hệ,"một"nhu"cầu"truy"vấn"được"thể" "
hiện"qua"một"biểu"thức"đại"số"quan"hệ:" Toán"hạng" / "Biến":"x,"y,"z,"…" / "Quan"hệ":"NhanVien,"…"
- Kết"quả"trả"về"là"một$thể$hiện$của"quan"hệ" / "Hằng"số":"150,"…" / "Thể"hiện"của"quan"hệ":"t,"v,"…""
- Có"thể"là"một"chuỗi"các"phép"toán"đại"số"quan"hệ"
Toán"tử" /"Thao"tác"xử"lý"giữa"các"toán" /"Thao"tác"xử"lý"giữa"các"quan"hệ"
- Theo"thứ"tự"thực"hiện"của"các"toán"tử,"kết"quả"của"toán"tử" hạng"để"tạo"thành"giá"trị"mới":"+,"/," để"tạo"thành"quan"hệ"mới":"phép&
thực"hiện"trước"là"đầu"vào"cho"toán"tử"thực"hiện"kế"tiếp.""" *,"/,"…" chọn&σ,&hội&∪&,&…"
"
Biểu"thức" / "Chuỗi"các"phép"toán"đại"số" / "Chuỗi"các"phép"toán"đại"số"quan"
/ "Kết"quả"cho"ra"một"giá"trị"mới" hệ"(câu"truy"vấn)"
&&& / "Kết"quả"cho"ra"một"quan"hệ"mới"
&&(x+7)&/&(yE3)&
&&(x+y)*z&&and/or&(x+7)&/&(yE3)& π &
MANV (NHANVIEN)"
" "
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 7 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 8
Nội!dung!chi!2ết! Phép!toán!tập!hợp!
! Giới"thiệu" ! Quan"hệ"là"tập"hợp"các"bộ"
! Đại"số"quan"hệ" - Phép"hội""r"∪"s"
- Phép"giao""r"∩"s"
! Phép$toán$tập$hợp"
- Phép"trừ""r">"s"
! Phép"chọn"
! Phép"chiếu" ! Tính"khả"hợp"(Union"Compatibility)"
! Phép"tích"Cartesian" - Cho"hai"lược"đồ"quan"hệ"R(A1,"A2,"…,"An)"và"S(B1,"B2,"…,"Bn),"
! Phép"kết" r(R),"s(S)."Hai"quan"hệ"r"và"s"là"khả"hợp"nếu"
" R"và"S"có"cùng"bậc"n"
! Phép"chia"
" Và"có"DOM(Ai)=DOM(Bi)","1≤"i"≤"n"
! Các"phép"toán"khác"
! Các"thao"tác"cập"nhật"trên"quan"hệ" ! Kết"quả"phép"toán"∪,"∩,"hoặc">"của"r"và"s"là"một"quan$hệ$có"
các"thuộc"tính"cùng"tên"với"các"thuộc"tính"của"quan"hệ"r."
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 9 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 10
Phép!toán!tập!hợp!(8)! Phép!hội!
! Ví"dụ"hai"quan"hệ"khả"hợp" ! Cho"2"quan"hệ"r"và"s"khả"hợp"
! Phép"hội"của"r"và"s"
SINHVIEN TENSV NGSINH PHAI GIAOVIEN TENGV NG_SINH GIOITINH - Ký"hiệu"r"∪"s"
Tung 12/08/1955 Nam Trinh 04/05/1986 Nu - Là"một"quan"hệ"gồm"các"bộ"thuộc"r"hoặc"thuộc"s,"hoặc"cả"hai"
Hang 07/19/1968 Nu Khang 10/25/1983 Nam
(các"bộ"trùng"lắp"sẽ"bị"loại"bỏ)"
Nhu 06/20/1951 Nu Phuong 05/03/1958 Nu
Hung 09/15/1962 Nam Minh 02/28/1942 Nam
r ∪ s = { t / t∈r ∨ t∈s }
Chau 12/30/1988 Nu ! Ví"dụ"
r A B s A B r∪s A B
Bậc n=3
DOM(TENSV) = DOM(TENGV) α 1 α 2 α 1
DOM(NGSINH) = DOM(NG_SINH) α 2 β 3 α 2
DOM(PHAI) = DOM(GIOITINH) β 1 β 1
α 2
β 3
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 11 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 12
Phép!hội!(8)! Phép!giao!
SinhVien' GiaoVien' ! Cho"2"quan"hệ"r"và"s"khả"hợp"
HOTEN' DIACHI' HOTEN' DIACHI'
Đinh Bá Tiến
Nguyễn Thanh Tùng
119 Cống Quỳnh, Tp HCM
222 Nguyễn Văn Cừ, Tp HCM
Đinh Bá Tiến
Trần Thanh Tâm
119 Cống Quỳnh, Tp HCM
553 Mai Thị Lựu, Tp HCM
! Phép"giao"của"r"và"s"
Lê Quỳnh Như 291 Hồ Văn Huê, Tp HCM - Ký"hiệu"r"∩"s"
- Là"một"quan"hệ"gồm"các"bộ"thuộc"r"đồng"thời"thuộc"s"
SinhVien'∪!GiaoVien''
HOTEN' DIACHI' r ∩ s = { t / t∈r ∧ t∈s }
Đinh Bá Tiến 119 Cống Quỳnh, Tp HCM ! Ví"dụ"
Nguyễn Thanh Tùng 222 Nguyễn Văn Cừ, Tp HCM
Lê Quỳnh Như 291 Hồ Văn Huê, Tp HCM
Trần Thanh Tâm 553 Mai Thị Lựu, Tp HCM
r A B s A B r∩s A B
α 1 α 2 α 2
α 2 β 3
β 1
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 13 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 14
Phép!giao!(8)! Phép!trừ!
SinhVien' GiaoVien' ! Cho"2"quan"hệ"r"và"s"khả"hợp"
HOTEN' DIACHI' HOTEN' DIACHI'
Đinh Bá Tiến
Nguyễn Thanh Tùng
119 Cống Quỳnh, Tp HCM
222 Nguyễn Văn Cừ, Tp HCM
Đinh Bá Tiến
Trần Thanh Tâm
119 Cống Quỳnh, Tp HCM
553 Mai Thị Lựu, Tp HCM
! Phép"giao"của"r"và"s"
Lê Quỳnh Như 291 Hồ Văn Huê, Tp HCM - Ký"hiệu"r"/"s"
- Là"một"quan"hệ"gồm"các"bộ"thuộc"R"và"không"thuộc"S"
SinhVien'∩$GiaoVien''
HOTEN' DIACHI' r - s = { t / t∈r ∧ t∉s }
Đinh Bá Tiến 119 Cống Quỳnh, Tp HCM ! Ví"dụ"
r A B s A B r-s A B
α 1 α 2 α 1
α 2 β 3 β 1
β 1
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 15 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 16
Phép!trừ!(8)! Các!Enh!chất!
SinhVien' GiaoVien' ! Giao"hoán"
HOTEN' DIACHI' HOTEN' DIACHI'
Đinh Bá Tiến 119 Cống Quỳnh, Tp HCM Đinh Bá Tiến 119 Cống Quỳnh, Tp HCM
Nguyễn Thanh Tùng
Lê Quỳnh Như
222 Nguyễn Văn Cừ, Tp HCM
291 Hồ Văn Huê, Tp HCM
Trần Thanh Tâm 553 Mai Thị Lựu, Tp HCM
r∪s=s∪r
r∩s=s∩r
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 Huê, Tp HCM
! 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" 17 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 18
Các!Enh!chất! Nội!dung!chi!2ết!
! Giao"hoán" ! Giới"thiệu"
! Đại"số"quan"hệ"
r∪s=s∪r
! Phép"toán"tập"hợp"
r∩s=s∩r
! Phép$chọn$
! Phép"chiếu"
! Kết"hợp" ! Phép"tích"Cartesian"
! Phép"kết"
r ∪ (s ∪ t) = (r ∪ s) ∪ t ! Phép"chia"
r ∩ (s ∩ t) = (r ∩ s) ∩ t ! Các"phép"toán"khác"
! Các"thao"tác"cập"nhật"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 19 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 20
Phép!chọn! Phép!chọn!(8)!
! Được"dùng"để"lấy"ra"các"bộ"của"quan"hệ"r"thỏa"mãn"điều" ! Kết"quả"trả"về"là"một"quan"hệ""
kiện"chọn"P" - Có"cùng"danh"sách"thuộc"tính"với"r"
! Ký"hiệu" - Có"số"bộ"luôn"ít"hơn"hoặc"bằng"số"bộ"của"r"
σ P (r) ! Ví"dụ"
! P"là"biểu"thức"gồm"các"mệnh"đề"có"dạng" σ (A=B)∧(D>5) (r)
- <tên"thuộc"tính>"<phép"so"sánh>"<hằng"số>"
- <tên"thuộc"tính>"<phép"so"sánh>"<tên"thuộc"tính>" r A B C D A B C D
α α 1 7 α α 1 7
α β 5 7 β β 23 10
" <phép"so"sánh>"gồm"<",">","≤","≥","≠","=$ β β 12 3
" Các"mệnh"đề"được"nối"lại"nhờ"các"phép"∧","∨","¬$ β β 23 10
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 21 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 22
Phép!chọn!(8)! Nội!dung!chi!2ết!
! Phép"chọn"có"tính"giao"hoán" ! Giới"thiệu"
! Đại"số"quan"hệ"
σ (σp1 p2 (r)) = σ (σp2 p1 (r)) = σ p1 ∧ p2 (r) ! 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"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 23 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 24
Phép!chiếu! Phép!chiếu!(8)!
! Được"dùng"để"lấy"ra"một"vài"cột"của"quan"hệ"r" ! Phép"chiếu"không"có"tính"giao"hoán"
! Ký"hiệu"
π A1, A2, …, Ak(r)
α 10 1 α 1
α 20 1 β 1
β 30 1 β 2
β 40 2
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 25 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 26
Phép!chọn!vs.!Phép!chiếu! Ví!dụ!1!
A1,"A2,"A3"…,"An"
A1,"A2,"A3"…,"An"
! Cho"biết"họ"tên"và"mức"lương"của"các"giáo"viên"nữ"
Phép chọn
σ
i j, i>=j
...."
...."
A1,"A2,"A3"…,"Am"
π
...."
...."
Phép chiếu
n m, n>=m
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 27 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 28
Ví!dụ!2! Ví!dụ!3!
! Cho"biết"mã"số"các"giáo"viên"thuộc"bộ"môn"HTTT"hoặc"có" ! Cho"biết"mã"số"các"trưởng"khoa"có"chủ"nhiệm"đề"tài"
tham"gia"đề"tài"mã"001"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 29 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 30
Ví!dụ!4! Phép!chiếu!tổng!quát!
! Cho"biết"tên"các"công"việc"bắt"đầu"trong"khoảng"từ" ! Mở"rộng"phép"chiếu"bằng"cách"cho"phép"sử"dụng"các"phép"
01/01/2007"đến"01/08/2007" toán"số"học"trong"danh"sách"thuộc"tính"
! Ký"hiệu""πF1,"F2,"…,"Fn"(E)"
σ (NGAYBĐ>=‘1/1/2007’ ∧ NGAYBĐ<=‘1/8/2007’) (CONGVIEC) - E"là"biểu"thức"ĐSQH"
- F1,"F2,"…,"Fn"là"các"biểu"thức"số"học"liên"quan"đến"
" Hằng"số"
" Thuộc"tính"trong"E"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 31 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 32
Phép!chiếu!tổng!quát! Chuỗi!các!phép!toán!
! Ví"dụ" ! Kết"hợp"các"phép"toán"đại"số"quan"hệ"
- Cho"biết"họ"tên"của"các"giáo"viên"và"lương"của"họ"sau"khi"tăng"10%" - Lồng"các"biểu"thức"lại"với"nhau"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 33 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 34
Phép!gán! Phép!đổi!tên!
! Được"sử"dụng"để"nhận"lấy"kết"quả"trả"về"của"một"phép"toán" ! Được"dùng"để"đổi"tên""
- Thường"là"kết"quả"trung"gian"trong"chuỗi"các"phép"toán"" - Quan"hệ"
! Ký"hiệu""←" Xét quan hệ r(B, C, D)
ρs(r) : Đổi tên quan hệ r thành s
! Ví"dụ"
- B1" - Thuộc"tính"
- B2"
s← σ P (r)
ρX, C, D (r) : Đổi tên thuộc tính B thành X
- Quan"hệ"lẫn"thuộc"tính"
KQ ← π A1, A2, …, Ak (s)
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 35 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 36
Ví!dụ!5! Nội!dung!chi!2ết!
! Cho"biết"mã"số"và"họ"tên"giáo"viên"thuộc"bộ"môn"HTTT" ! Giới"thiệu"
! Đại"số"quan"hệ"
! Phép"toán"tập"hợp"
! C1:" π MAGV, HOTEN ( σ MABM=‘HTTT’ (GIAOVIEN))
! Phép"chọn"
! Phép"chiếu"
! C2:" GV_HTTT ← σMABM=‘HTTT’ (GIAOVIEN) ! Phép"tích"Cartesian"
KQ ← πMAGV, HOTEN (GV_HTTT) ! Phép"kết"
! Phép"chia"
KQ(MA, TEN) ← π MAGV, HOTEN (GV_HTTT) ! Các"phép"toán"khác"
ρKQ(MA, TEN) (πMAGV, HOTEN (GV_HTTT)) ! Các"thao"tác"cập"nhật"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 37 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 38
Phép!Ech!Cartesian! Phép!Ech!Cartesian!(8)!
! Được"dùng"để"kết"hợp"các"bộ"của"các"quan"hệ"lại"với"nhau" ! Ví"dụ" unambiguous
! Ký"hiệu"
r A B
r×s r×s A R.B X
S.B C D
α 1
! Kết"quả"trả"về"là"một"quan"hệ"q" β 2 α 1 α 10 +
α 1 β 10 +
- Mỗi"bộ"của"q"là"tổ"hợp"giữa"1"bộ"trong"r"và"1"bộ"trong"s" α 1 β 20 -
- Nếu"r"có"u"bộ"và"s"có"v"bộ"thì"q"sẽ"có"u"×"v"bộ" S B
X C D α 1 γ 10 -
- Nếu"r"có"n"thuộc"tính"và"s"có"m"thuộc"tính"thì"q"sẽ"có"n"+"m" α 10 +
β 2 α 10 +
thuộc"tính"(R+"∩"S+""=$∅")" β 10 +
β 2 β 10 +
β 2 β 20 -
β 20 -
β 2 γ 10 -
γ 10 -
ρ(X,C,D) (s)
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 39 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 40
Phép!Ech!Cartesian!(8)! Ví!dụ!6!
! Cho"biết"thông"tin"của"bộ"môn"cùng"thông"tin"giảng"viên"
! Thông"thường"theo"sau"phép"tích"Cartesian"là"phép"chọn" làm"trưởng"bộ"môn"đó"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 41 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 42
Ví!dụ!6!(8)! Ví!dụ!6!(8)!
! B1:"Tích"Cartesian"BOMON"và"GIAOVIEN"
TENBM MABM TRUONGBM NGAYNHANCHUC GV HOTEN … BM_GV ← (GIÁOVIÊN × BỘMÔN)
Hệ thống thông tin HTTT 002 20/09/2004 002 Trần Trà Dương
Mạng máy tính MMT 001 15/05/2005 001 Trương Nam Sơn ! B2:"Chọn"ra"những"bộ"thỏa"TRUONGBM"="MAGV"
KQ ← σ TRUONGBM=MAGV(BM_GV)
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 43 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 44
Ví!dụ!7!
GIÁOVIÊN MÃGV HỌTÊN …. NGÀYSINH SỐNHÀ ….
001 Nguyễn Hoài An …. 15/02/1973 25/3 …. ! Cho"biết"mức"lương"cao"nhất"của"các"giảng"viên"
002 Trần Trà Hương …. 20/06/1960 125 ….
003 Nguyễn Ngọc Ánh …. 11/05/1975 12/21 ….
…. …. …. …. …. ….
CNTT Công nghệ tri thức B15 …. …. Nguyễn Hoài An … 2000 … … 2000 …
MMT Mạng máy tính B16 …. 001 …. Trần Trà Hương … 2500 … … 2500 …
…. …. …. …. …. …. Nguyễn Ngọc Anh … 2200 … … 2200 …
… … … …
(BM_GV)
GIÁOVIÊN x BỘMÔN
σTRUONGBM=MAGV
MÃGV HỌTÊN …. NGÀYSINH …. MÃBM TÊNBM PHÒNG …. TRƯỞNGBM ….
001 Nguyễn Hoài An …. 15/02/1973 …. HTTT Hệ thống thông tin B13 …. 002 ….
001 Nguyễn Hoài An …. 15/02/1973 …. CNTT Công nghệ tri thức B15 …. ….
001 Nguyễn Hoài An …. 15/02/1973 …. MMT Mạng máy tính B16 …. 001 ….
45
…. …. …. …. …. …. …. …. …. …. ….
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 46
Ví!dụ!7!(8)! Ví!dụ!8!
! B1:"Chọn"ra"những"lương"không"phải"là"lớn"nhất" ! Cho"biết"họ"tên"các"giáo"viên"cùng"bộ"môn"với"giáo"viên"
‘Trần"Trà"Hương’"
π
r1 ← ( LUONG (GIAOVIEN)) - Quan"hệ:"GIAOVIEN"
- Thuộc"tính:"HOTEN,"MABM"
r2 ← σ GIAOVIEN.LUONG < R1.LUONG(GIAOVIEN × r1)
- Điều"kiện:"HOTEN"="‘Trần"Trà"Hương’"
r3 ← π R2.LUONG (r2)
Giáo viên “Trần Trà Hương” ở bộ môn nào? Những giáo viên nào thuộc về bộ môn đó?
KQ ← π LUONG (GIAOVIEN) - r3
HTTT
HTTT
Trần Trà Hương
Nguyễn Ngọc Anh
HTTT
HTTT
Trần Trà Hương
Nguyễn Ngọc Anh
VS Trương Nam Sơn VS Trương Nam Sơn
… … … …
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 47 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 48
Ví!dụ!8!(8)! Ví!dụ!9!
! Tìm"các"đề"tài"thuộc"chủ"đề"‘Quản"lý"giáo"dục’"
! B1:"Tìm"bộ"môn"mà"giáo"viên"‘Trần"Trà"Hương’"thuộc"về"
- Quan"hệ:"CHUĐE,"ĐETAI"
- Thuộc"tính:"TENCĐ,"MACĐ"
r1 ← π MABM,MAGV ( σ HOTEN=‘Trần Trà Hương’ (GIAOVIEN))
- Điều"kiện:"TENCĐ"="‘Quản"lý"giáo"dục’"
MACĐ TENCĐ
! B2:"Lấy"ra"họ"tên"các"giáo"viên"cùng"bộ"môn" QLGD Quản lý giáo dục
NCPT Nghiên cứu phát triển
ƯDCN Ứng dụng công nghệ
… …
KQ ← π HOTEN (r3)
003 Nghiên cứu chế tạo sợi Nanô Platin NCPT …
… … … …
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 49 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 50
Nội!dung!chi!2ết! Phép!kết!
! Giới"thiệu"
! Đại"số"quan"hệ" ! Được"dùng"để"truy"xuất"dữ"liệu"từ"hai"quan"hệ"
! Phép"toán"tập"hợp" ! Ký"hiệu"r""""""s"
! Phép"chọn" - R(A1,"A2,"…,"An)"và"S(B1,"B2,"…,"Bm)"
! Phép"chiếu" ! Kết"quả"của"phép"kết"là"một"quan"hệ"q"
- Có"n"+"m"thuộc"tính"Q(A1,"A2,"…,"An,"B1,"B2,"…,"Bm)"
! Phép"tích"Cartesian"
- Mỗi"bộ"của"q"là"tổ"hợp"của"1"bộ"trong"r"và"1"bộ"trong"s,"thỏa"mãn"
! Phép$kết$ một"số"điều"kiện"kết"nào"đó"
- Kết"tự"nhiên"(Natural"join)" " Có"dạng"Ai"θ"Bj"
- Kết"có"điều"kiện"tổng"quát"(Theta"join)" " Ai"là"thuộc"tính"của"R,"Bj"là"thuộc"tính"của"S""
- Kết"bằng"(Equi"join)" " Ai"và"Bj"có"cùng"miền"giá"trị"
! Phép"chia" " θ"là"phép"so"sánh"≠,"=,"<,">,"≤,"≥$
! Các"phép"toán"khác"
! Các"thao"tác"cập"nhật"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 51 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 52
Phép!kết!(8)! Phép!kết!(8)!
! Phân"loại" ! Ví"dụ"phép"kết"theta"
- Kết"theta"(theta"join)"là"phép"kết"có"điều"kiện""
" Ký"hiệu"r""""""C"s" r s
B<D
" C"gọi"là"điều"kiện"kết"trên"thuộc"tính"
r A B C s D E A B C D E
1 2 3 3 1 1 2 3 3 1
- Kết"bằng"(equi"join)"khi"C"là"điều"kiện"so"sánh"bằng" 4 5 6 6 2 1 2 3 6 2
7 8 9 4 5 6 6 2
- Kết"tự"nhiên"(natural"join):"khi"hai"thuộc"tính"trong"điều"kiện"
kết"bằng"C"có"tên"giống"nhau."
" Ký"hiệu""r"""""""s"""hay"""r"*"s"
" R+"∩"S+"≠$∅$
r C s = σC(r × s)
" Quan"hệ"kết"quả"của"phép"kết"bằng"có"tập"thuộc"tính"là"hội"
tập"thuộc"tính"của"r"và"s"bỏ"bớt"đi"1"thuộc"tính"giống"nhau"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 53 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 54
Phép!kết!(8)! Phép!kết!(8)!
! Ví"dụ"phép"kết"bằng" ! Ví"dụ"phép"kết"tự"nhiên"
r C=D s
r A B C s D E A B C D E
r s
1 2 3 3 1 1 2 3 3 1 r A B C s C D AA BB C C S.D D
C
4 5 6 6 2 4 5 6 6 2 1 2 3 3 1 11 22 33 31 1
7 8 9 4 5 6 6 2 44 55 66 62 2
7 8 9
r C=s.C s
r A B C S S.C
C D A B C s.C D
1 2 3 3 1 1 2 3 3 1
4 5 6 6 2 4 5 6 6 2
7 8 9
ρ(S.C,D) s
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 55 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 56
Ví!dụ!10! Ví!dụ!11!
! Cho"biết"giáo"viên"có"lương"lớn"hơn"lương"của"giáo"viên" ! Với"mỗi"giáo"viên,"hãy"cho"biết"thông"tin"của"bộ"môn"mà"họ"
‘Nguyễn"Hoài"An’" đang"làm"việc"
- Quan"hệ:"GIAOVIEN$ - Quan"hệ:"GIAOVIEN,"BOMON$
- Thuộc"tính:"LUONG$
GIAOVIEN(MAGV, HOTEN, LUONG, PHAI, …, MABM, …)
GIAOVIEN(MAGV, HOTEN, LUONG, PHAI, NGAYSINH, BOMON(MABM, TENBM, PHONG, DIENTHOAI, …)
…)
R1(LG) ← π LUONG ( σ HOTEN=‘Nguyễn Hoài An’ (GIAOVIEN))
KQ ← GIAOVIEN BOMON
KQ ← GIAOVIEN LUONG>LG R1
KQ(MAGV, HOTEN, …, MABM, TENBM, PHONG, …))
KQ(MAGV, HOTEN, LUONG, PHAI, NGAYSINH,…, LG))
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 57 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 58
Ví!dụ!12! Ví!dụ!13!
! Với"mỗi"đề"tài,"cho"biết"thông"tin"giáo"viên"chủ"nhiệm"đề"tài" ! Với"mỗi"khoa"cho"biết"thông"tin"trưởng"khoa"
đó"
- Quan"hệ:"ĐETAI,"GIAOVIEN$
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 59 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 60
Ví!dụ!14! Ví!dụ!15!
! Cho"biết"lương"cao"nhất"trong"bộ"môn"‘HTTT’" ! Cho"biết"giáo"viên"làm"việc"cùng"bộ"môn"với"giáo"viên"002"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 61 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 62
Ví!dụ!16! Tập!đầy!đủ!các!phép!toán!ĐSQH!
! Cho"biết"các"giáo"viên"của"bộ"môn"‘Vi"sinh’"có"tham"gia"đề" ! Tập"các"phép"toán"σ,"π,"×,">,"∪"được"gọi"là"tập"đầy"đủ"các"
tài"006" phép"toán"ĐSQH"
- Nghĩa"là"các"phép"toán"có"thể"được"biểu"diễn"qua"chúng"
- Ví"dụ"
" r"∩$s"="r"∪$s">"((r>s)"∪$(s>r))"
σC(r×s)"
" r""""""C"s"="
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 63 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 64
Nội!dung!chi!2ết! Phép!chia!
! Giới"thiệu" ! Được"dùng"để"lấy"ra"một"số"bộ"trong"quan"hệ"r"sao"cho"
! Đại"số"quan"hệ" thỏa"với"tất"cả"các"bộ"trong"quan"hệ"s"
! Phép"toán"tập"hợp" ! Ký"hiệu"r"÷"s"
! Phép"chọn" - r(Z)"và"x(X)"
" Z"là"tập"thuộc"tính"của"r,"X"là"tập"thuộc"tính"của"s"
! Phép"chiếu"
" X"⊆"Z"
! Phép"tích"Cartesian"
! Phép"kết"
! Kết"quả"của"phép"chia"là"một"quan"hệ"t(Y)""
- Với"Y=Z/X"
! Phép$chia$
- Có"t0"là"một"bộ"của"t"nếu"với"mọi"bộ"tS∈S,"tồn"tại"bộ"tR∈R"
! Các"phép"toán"khác" thỏa"2"điều"kiện"
! Các"thao"tác"cập"nhật"trên"quan"hệ" " 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 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 66
Phép!chia!(8)! Ví!dụ!17!
! Ví"dụ" ! Cho"biết"mã"giáo"viên"tham"gia"tất"cả"công"việc"thuộc"đề"tài"
r÷s 001"
r A B C D E s D E A B C
α a α a 1 a 1 α a γ
α a γ a 1 b 1 γ a γ
α a γ b 1
β a γ a 1
β a γ b 3
γ a γ a 1
γ a γ b 1
γ a β b 1
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 67 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 68
Ví!dụ!18! Phép!chia!(8)!
! Cho"biết"tên"đề"tài"có"tất"cả"giảng"viên"bộ"môn"‘Hệ"thống" ! Biểu"diễn"phép"chia"thông"qua"tập"đầy"đủ"các"phép"toán"
thông"tin’"tham"gia" ĐSQH"
Q1 ← π Y (r)
Q2 ← Q1 × s
Q3 ← π (Q2 - r)
Y
KQ ← Q1 - Q3
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 69 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 70
Nội!dung!chi!2ết! Hàm!kết!hợp!
! Giới"thiệu"
! Đại"số"quan"hệ" ! Nhận"vào"tập"hợp"các"giá"trị"
! Phép"toán"tập"hợp" ! Trả"về"một"giá"trị"đơn"
! Phép"chọn" ! Gồm"
! Phép"chiếu" - AVG"
! Phép"tích"Cartesian" - MIN"
! Phép"kết" - MAX"
! Phép$chia" - SUM"
! Các$phép$toán$khác$ - COUNT"
- Hàm"kết"hợp"(Aggregation"function)"
- Phép"gom"nhóm"(Grouping)"
- Phép"kết"ngoài"(Outer"join)"
! Các"thao"tác"cập"nhật"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 71 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 72
Hàm!kết!hợp!(8)! Phép!gom!nhóm!
! Ví"dụ" ! Được"dùng"để"phân"chia"quan"hệ"thành"nhiều"nhóm"dựa"trên"
điều"kiện"gom"nhóm"nào"đó"
SUM(B) = 10 ! Ký"hiệu"
r A B
AVG(A) = 1.5 G1, G2, …, Gn ℑF1(A1), F2(A2), …, Fn(An)(E)
1 2 MIN(A) = 1 - E"là"biểu"thức"ĐSQH"
3 4
MAX(B) = 4
1 2 - G1,"G2,"…,"Gn"là"các"thuộc"tính"gom"nhóm"
COUNT(A) = 4
1 2 - F1,"F2,"…,"Fn"là"các"hàm"
- A1,"A2,"…,"An"là"các"thuộc"tính"tính"toán"trong"hàm"F"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 73 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 74
Phép!gom!nhóm!(8)! Ví!dụ!19!
! Ví"dụ ! Cho"biết"số"lượng"giáo"viên"viên"và"tổng"lương"của"họ"
ℑSUM(C)(r)
SUM_C
r A B C
27
α 2 7
α 4 7
β 2 3
γ 2 10 A ℑSUM(C)(r)
A SUM_C
α 14
β 3
γ 10
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 75 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 76
Ví!dụ!20! Ví!dụ!21!
! Cho"biết"số"lượng"giáo"viên"và"lương"trung"bình"của"từng"bộ" ! Cho"biết"tên"khoa"có"đông"giáo"viên"nhất"
môn"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 77 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 78
Ví!dụ!22! Ví!dụ!23!
! Cho"biết"họ"tên"giáo"viên"chủ"nhiệm"nhiều"đề"tài"nhất" ! Cho"biết"tên"chủ"đề"và"số"lượng"đề"tài"thuộc"về"chủ"đề"đó"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 79 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 80
Phép!kết!ngoài! Ví!dụ!24!g!a!
! Mở"rộng"phép"kết"để"tránh"mất"mát"thông"tin" ! Cho"biết"họ"tên"giáo"viên"và"tên"bộ"môn"họ"làm"trưởng"bộ"
- Thực"hiện"phép"kết" môn"nếu"có"
- Lấy"thêm"các"bộ"không"thỏa"điều"kiện"kết"
R1 ← GIAOVIEN BOMON
! Có"3"hình"thức" MAGV=TRUONGBM
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 81 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 82
Ví!dụ!24!g!b! Ví!dụ!24!g!c!
! Cho"danh"sách"tên"bộ"môn"và"họ"tên"trưởng"bộ"môn"đó"nếu" ! Cho"danh"sách"tên"giáo"viên"và"các"đề"tài"giáo"viên"đó"chủ"
có." nhiệm"nếu"có"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 83 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 84
Nội!dung!chi!2ết! Các!thao!tác!cập!nhật!
! Giới"thiệu" ! Nội"dung"của"CSDL"có"thể"được"cập"nhật"bằng"các"thao"tác"
! Đại"số"quan"hệ" - Thêm"(insertion)"
! Phép"toán"tập"hợp" - Xóa"(deletion)"
! Phép"chọn" - Sửa"(updating)"
! Phép"chiếu" ! Các"thao"tác"cập"nhật"được"diễn"đạt"thông"qua"phép"toán"
gán"
! Phép"tích"Cartesian"
! Phép"kết"
! Phép$chia"
rnew ← các phép toán trên rold
! Các"phép"toán"khác"
! Các"thao"tác"cập"nhật"trên"quan"hệ"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 85 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 86
Thao!tác!thêm! Thao!tác!xóa!
! Được"diễn"đạt"" ! Được"diễn"đạt""
rnew ← rold ∪ E rnew ← rold - E
- r"là"quan"hệ" - r"là"quan"hệ"
- E"là"một"biểu"thức"ĐSQH" - E"là"một"biểu"thức"ĐSQH"
! Ví"dụ" ! Ví"dụ"
- Phân"công"giáo"viên"có"mã"001"tham"gia"công"việc"4"của"đề" - Xóa"phân"công"tham"gia"đề"tài"cho"giáo"viên"001"
tài"số"001"với"mức"phụ"cấp"2"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 87 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 88
Ví!dụ!25! Thao!tác!sửa!
! Xóa"các"đề"tài"thuộc"chủ"đề"‘NCPT’" ! Được"diễn"đạt""
! Ví"dụ"
- Tăng"mức"phụ"cấp"cho"các"đề"tài"của"tất"cả"giáo"viên"lên"1.5"
lần"
©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 89 ©"Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN" 90