3.3.1 Các phép toán tập hợp
Cho hai lƣợc đồ quan hệ R(A1, A2,..., An) và S(B1, B2,..., Bm) đƣợc gọi là khả hợp nếu:
- Chúng có cùng bậc: m = n.
- Miền giá trị (DOM) của các thuộc tính tƣơng ứng bằng nhau: DOM(Ai) = DOM(Bi) với 1 ≤ i ≤ n.
a. Phép hợp
Định nghĩa: Hợp của hai quan hệ R và S khả hợp là một quan hệ, kí hiệu
R∪S, và là tập tất cả các bộ t sao cho tR hoặc tS.
Biểu diễn hình thức phép hợp có dạng:
RS = {t/tR hoặc tS}
Ta chỉ có thể dùng phép hợp cho các quan hệ cùng ngôi, vì vậy tất cả các bộ trong kết quả sẽ có cùng số lƣợng thành phần. Tên thuộc tính trong các quan hệ sẽ bị bỏ qua khi thực hiện phép hợp và quan hệ thu đƣợc có thể gán các thuộc tính tùy ý, thứ tự của các thuộc tính trong các quan hệ phải đƣợc tôn trọng. Các điều này tƣơng tự đối với các phép toán khác nhƣ hiệu, giao, tích Đề- các.
Ví dụ 2.4:
b. Phép giao
Giao của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu R S,và là tập tất cả các bộ t sao cho t thuộc cả R và S.
Biểu diễn hình thức phép giao có dạng:
R S = {t/tR và tS}
Ví dụ 2.5
Phép giao của 2 quan hệ R và S có thể biểu diễn qua phép trừ:
R S = R - (R - S) R A B C S A B C RS A B C a1 b1 c1 a2 b1 c2 a1 b1 c1 a1 b2 c1 a2 b2 c2 a1 b2 c1 a2 b2 c2 a2 b2 c2 a2 b1 c2 R A B C S A B C RS A B C a1 b1 c1 a1 b3 c1 a1 b1 c1 a1 b2 c1 a1 b1 c1 a2 b2 c2
c. Phép trừ
Hiệu của hai quan hệ R và S khả hợp là một quan hệ, ký hiệu là R - S, và là tập tất cả các bộ t sao cho t thuộc R nhƣng không thuộc S.
Biểu diễn hình thức có dạng:
R - S = {t/tR và tS}
Ví dụ 2.6:
e. Tích Descartes
R là quan hệ n ngôi và S là quan hệ m ngôi. Tích Đề- các của hai quan hệ R và S ký hiệu là R x S là tập tất cả (n+m) bộ với n thành phần đầu là một bộ thuộc R và m thành phần sau là của một bộ thuộc S
Biểu diễn hình thức có dạng:R x S = {t/t có dạng: (a1, a2,..., an, b1, b2,... bm)
Trong đó: (a1, a2,..., an) R và (b1, b2,... bm) S}
Nhƣ vậy, để có một bộ của tích Đề- các, ta lấy một bộ của R ghép với một bộ của S. Để có kết quả của phép tích Đề- các, chỉ việc ghép mỗi bộ của R với mỗi bộ của S.
Ví dụ 2.7:
3.3.2 Các phép toán quan hệ
a. Phép chiếu
Cho quan hệ R(A1, A2,..., An), X (A1, A2,..., An)
Phép chiếu quan hệ R trên tập thuộc tính X là một quan hệ trên tập thuộc tính X, ký hiệu là X(R) và đƣợc biểu diễn hình thức là:
R A B C S A B C R- S A B C a1 b1 c1 a2 b1 c2 a1 b1 c1 a1 b2 c1 a2 b2 c2 a1 b2 c1 a2 b2 c2 R A B C S D E F RxS A B C D E F a1 b1 c1 d1 e1 f1 a1 b1 c1 d1 e1 f1 a1 b2 c1 a1 b1 c1 a1 b1 c1 a1 b1 c1 d1 e2 f2 a1 b1 c1 d1 e2 f2 a1 b2 c1 d1 e1 f1 a1 b2 c1 a1 b1 c1 a1 b2 c1 d1 e2 f2
X(R) = {t[X]/tR}
Trong đó: t[X] là giá trị của bộ t trên tập thuộc tính X. Ví dụ 2.8:
R = {A, B, C, D}; X = {A, B, C}; Y = {A, C}
R A B C D X(R) A B C Y(R) A C a1 b1 c1 d1 a1 b1 c1 a1 c1 a1 b1 c1 d2 a2 b2 c2 a2 c2 a2 b2 c2 d2 a2 b3 c2 a2 b3 c2 d3 b.Phép chọn
Phép chọn là phép tính để xây dựng một tập con các bộ của quan hệ đã cho, thỏa mãn biểu thức F xác định. Biểu thức F đƣợc diễn tả bằng một tổ hợp Boolean của các toán hạng, mỗi toán hạng là một phép so sánh đơn giản giữa hai biến là hai thuộc tính hoặc giữa một biến là một thuộc tính và một hằng, cho giá trị "đúng" hoặc "sai" đối với mỗi bộ đã cho khi kiểm tra riêng bộ ấy.
Các phép toán so sánh trong biểu thức F là <, =, >, <=, >= và ≠ Các phép toán logic là ^ (và), (hoặc), (không).
Cho quan hệ R(A1, A2,..., An). Phép chọn quan hệ R với điều kiện F là một quan hệ trên tập thuộc tính (A1, A2,..., An), ký hiệu là F(R)
Hình thức hóa phép chọn đƣợc định nghĩa nhƣ sau:
F(R) = {tR | F(t) = đúng}
F(t) là giá trị của biểu thức F đối với bộ t Ví dụ 2.9:Cho quan hệ sau:
R A B C D a1 b1 c1 d1 a1 b1 c1 d2 a2 b2 c2 d2 a2 b3 c2 d3 Các phép chọn A=a1(R) A B C D a1 b1 c1 d1 a1 b1 c1 d2
(A=a1)(D=d2)(R) A B C D a1 b1 c1 d1 a1 b1 c1 d2 a2 b2 c2 d2 a2 b3 c2 d3 c. Phép kết nối Gọi là một trong những phép so sánh {=, <, <=, >, >=, <>}
Phép kết nối của quan hệ R đối với thuộc tính A và quan hệ S đối với thuộc tính B là những bộ t của tích Đề- các R x S sao cho t[A] t[B]
R AB S = {t | tR x S và t[A] t[B]} = A B (Rx S)
Để thực hiện phép kết nối trên, ta thực hiện:
- Tính R x S;
- Chọn lấy các bộ tR x S thỏa mãn t[A] t[B]
Đặc biệt khi phép so sánh là phép "=" thì phép kết nối đó gọi là kết nối bằng. Trƣờng hợp kết nối bằng đối với hai thuộc tính cùng tên là A và kết quả thu đƣợc loại bỏ đi cột S. A, thì kết nối đó gọi là "kết nối tự nhiên" và sử dụng ký hiệu "*" thay cho
Nhƣ vậy: RA=B S = {t | tR x S và t[A] = t[B]} = A = B (Rx S) Ví dụ 2.10: R A B C S C D E R S A B C F D E a1 1 1 1 d1 e1 B>=C a1 1 1 1 d1 e1 a2 2 1 2 d2 e2 a2 2 1 1 d1 e1 a1 2 2 3 d3 e3 a2 2 1 2 d2 e2 a1 2 2 1 d1 e1 a1 2 2 2 d2 e2
Kết quả của phép kết nối tự nhiên:
R(ABC) * S(CDE) A B C D E
a1 1 1 d1 e1
a2 2 1 d1 e1
Trƣờng hợp tổng quát nếu A1, A2,..., Ak là tên các thuộc tính giống nhau trong cả R và S thì R*S là tập tất cả các bộ của tích Đề - các R x S thỏa điều kiện R.A1 = S.A1, R.A2 = S.A2,..., R.Ak = S.Ak và kết quả bỏ đi các cột S.A1, S.A2,..., S.Ak.
BÀI TẬP CHƢƠNG 3
Bài 1: Việc tổ chức kỳ thi tốt nghiệp của một khoa nhƣ sau:
Mỗi thí sinh có một Mã số sinh viên duy nhất (MASV), mỗi MASV xác định đƣợc các thông tin: họ và tên (HOTEN), ngày sinh (NGAYSINH), nơi sinh, nữ,phái, dân tộc.
Mỗi lớp có một mã lớp (MALOP) duy nhất , mỗi mã lớp xác định các
thông tin: tên lớp (TENLOP), mỗi lớp chỉ thuộc sự quản lý của một khoa nào đó. Mỗi khoa có một mã khoa duy nhất (MAKHOA), mỗi mã khoa xác định tên
khoa (TENKHOA).
Mỗi thí sinh đều phải dự thi tốt nghiệp ba môn. Mỗi môn thi có một mã môn thi (MAMT) duy nhất, mỗi mã môn thi xác định các thông tin: tên môn thi (TENMT), thời gian làm bài - đƣợc tính bằng phút (PHUT), ngày thi (NGAYTHI), buổi thi (BUOITHI), môn thi này là môn lý thuyết hay thực hành (LYTHUYET). Chú ý rằng, nếu một môn học đƣợc cho thi ở nhiều hệ thì đƣợc đặt MAMT khác nhau (chẳng hạn cả trung cấp và cao đẳng ngành công nghệ thông tin đều thi môn Cơ Sở Dữ Liệu), để diễn tả điều này, mỗi mã môn học cần phải đƣợc ghi chú (GHICHU) để cho biết môn thi đó dành cho khối nào trung cấp, hay cao đẳng). Mỗi thí sinh ứng với một môn thi có một điểm thi (DIEMTHI) duy nhất, điểm thi đƣợc chấm theo thang điểm 10 và có lấy điểm lẻ đến 0.5. Một thí sinh đƣợc coi là đậu tốt nghiệp nếu điểm thi của tất cả các môn của thí sinh đó đều lớn hơn hoặc bằng 5.
Trong một phòng thi có thể có thí sinh của nhiều lớp. Trong một kỳ thi, mỗi thí sinh có thể thi tại những phòng thi (PHONGTHI) khác nhau, chẳng hạn một thí sinh thi tốt nghiệp ba môn là Cơ sở dữ liệu, Lập trình C và Visual Basic thì môn Cơ Sở Dữ Liệu và Lập Trình C thi tại phòng A3.4, còn môn thực hành Visual Basic thi tại phòng máy H6.1
Qua phân tích sơ bộ trên, ta có thể lập một lƣợc đồ cơ sở dữ liệu nhƣ sau:
THISINH(MASV, HOTEN, NGAYSINH, MALOP) LOP(MALOP,TENLOP)
MONTHI(MAMT,TENMT,LYTHUYET,PHUT,NGAYTHI,BUOITHI, GHICH)
KETQUA(MASV, MAMT, DIEMTHI)
Bài 2:Cho lƣợc đồ cơ sở dữ liệu ở bài tập 1. Thực hiện các yêu cầu sau bằng ngôn ngữ SQL:
a. Lập bảng điểm môn thi có mã môn thi là "CSDL02" cho tất các thí sinh có mã lớp là "CNTTK10D5". danh sách cần MASV, HOTEN, NGAYSINH, DIEMTHI và đƣợc sắp xếp tăng dần theo MASV.
b. Hãy thống kê xem mỗi môn thi có bao nhiêu thí sinh có điểm thi lớn hơn
hay bằng 5?
Danh sách cần: MAMT,TENMT,GHICHU,SOLUONG trong đó số lƣợng (SOLUONG) là thuộc tính tự đặt.
c. Lập danh sách những thí sinh đậu tốt nghiệp (theo tiêu chuẩn đã phân tích ở trên), danh sách cần: MASV, HOTEN, NGAYSINH, DIEMTONG, trong đó
DIEMTONG bằng tổng điểm thi của 3 môn thi, DIEMTONG là thuộc tính tựđặt.
d. Nếu cần mở rộng bài toán theo hai hƣớng; Thứ nhất là quản lý kỳ thi tốt nghiệp cho tất cả các khoa trong toàn trƣờng, Thứ hai là quản lý thông tin về phòng thi (PHONGTHI) của mỗi thí sinh, thì lƣợc đồ cơ sở dữ liệu trên cần phải đƣợc điều chỉnh nhƣ thế nào ?
Chƣơng 4
Ngôn ngữ thao tác dữ liệu 4.1 Đại số quan hệ
Đại số quan hệ là ngôn ngữ hình thức cho mô hình quan hệ đƣợc phát triển trƣớc SQL. Đại số quan hệ còn có thể hiểu là tập các thao tác trên mô hình quan hệ, đƣợc sử dụng nhƣ là cơ sở cho việc cài đặt và tối ƣu các câu lệnh truy vấn.
Một số khái niệm của đại số quan hệ đƣợc tích hợp vào các câu lệnh truy vấn của SQL, do đó việc tìm hiểu về đại số quan hệ là bệ phóng để xây dựng và thực thi các câu lệnh SQL một cách có hiệu quả.
Đại số quan hệ đƣợc định nghĩa bằng công thức: α = (R, O) Trong đó:
R: Là các quan hệ trong CSDL hoặc kết hợp với các phép toán quan hệ O: Là tập các phép toán quan hệ với đầu vào là một hoặc nhiều quan hệ để đƣợc đầu ra là một quan hệ mới – quan hệ kết quả.
Các phép toán cơ bản - Phép toán một ngôi:
Là phép toán chỉ thao tác trên một quan hệ. Đầu vào là một quan hệ và trả về kết quả là một quan hệ mới. Phép toán một ngôi bao gồm các phép toán cơ bản:
Phép chọn (Selection): Đƣợc sử dụng để chọn ra một tập hợp con các bộ từ một quan hệ thoả mãn một điều kiện chọn. Kí hiệu: ϭ
Cho quan hệ R(U) và E – biểu thức logic gồm (<, <=, >, >=, ^, ≠, ⌐, v) à Phép chọn ϭ trên quan hệ R theo điều kiện E, kí hiệu ϭE(R) có kết quả là một tập hợp con của R, gồm các bộ t thuộc R thoã điều kiện E.
ϬE(R) = {t / t R ^ t(E) }
Ví dụ: Tìm các sinh viên sinh năm 2000 của quan hệ sinh viên ta làm nhƣ sau: Ϭsinhvien=2000(SINHVIEN)
Phép chiếu (Projection): Đƣợc sử dụng để chọn một vài cột hay thuộc tính từ một bảng, ký hiệu π
Cho quan hệ R(U), X là tập con của U, X khác rỗng à Phép chiếu π trên quan hệ R theo tập thuộc tính X, kí hiệu πX(R) có kết quả là tập hợp các bộ t thuộc R nhƣng chỉ lấy giá trị trên X.
πX(R) = { t / t R ^ t[X] }
πX(R) chỉ gồm các bộ phân biệt – các bộ trùng nhau trong kết quả chỉ giữ lại một.
Ví dụ:
a) Liệt kê mã số và tên của tất cả sinh viên: πMSSV, hoten(SINHVIEN)
b) Liệt kê mã và tên của các sinh viên sinh năm 2000: π MSSV, hoten(ϭnamsinh=2000(SINHVIEN))
Phép đặt lại tên: Là phép dùng để đặt lại tên cho thuộc tính hoặc quan hệ nào đó. Trong đó:
ᵽS(A1, A2,…An)(R): Đặt lại tên quan hệ và thuộc tính ᵽS(R) : Đặt lại tên quan hệ và giữ nguyên các thuộc tính Ví dụ:
ᵽS(πMSSV, hoten(SINHVIEN) )
ᵽS(ma, ten) (πMSSV, hoten(SINHVIEN) ) à MSSV, hoten đƣợc đặt lại là ma, ten.
Thêm nữa, chúng ta có phép toán trên tập hợp.
Các phép toán trên tập hợp: Bao gồm giao, hợp, trừ - và chỉ sử dụng đƣợc khi đó là 2 quan hệ tƣơng thích (hai quan hệ cùng bậc và các thuộc tính thƣ j có cùng miền giá trị)
Phép hợp: Hợp của hai quan hệ tƣơng thích R và S gồm các bộ thuộc ít nhất một trong hai quan hệ đã cho.
Ví dụ: Khi dùng phép hợp để liệt kê danh sách tên sinh viên và giáo viên: πhoten(SINHVIEN) ᴗ πhoten(GIAOVIEN)
Phép giao: Giao của hai quan hệ S và R gồm các bộ thuộc về cả hai quan hệ đã cho.
Ví dụ: Tìm MSSV vừa học CSDL, vừa học JAVA
πmssv(ϭmonhoc=‟CSDL‟(SINHVIEN)) ᴖ πmssv(ϭmonhoc=‟JAVA‟(SINHVIEN))
Phép trừ (Hiệu): Của hai quan hệ tƣơng thích R và S, kí hiệu R \ S gồm các bộ chỉ thuộc R không thuộc S.
4.2 Các phép toán tập hợp
Hai quan hệ khả hợp là 2 quan hệ có cùng bậc (Có số thuộc tính bằng nhau và thuộc tính thứ i của quan hệ này có cùng miền trị với thuộc tính thứ i của quan hệ kia.
- Phép hợp (Union): Cho 2 quan hệ khả hợp r(U) và s(U). Hợp của 2 quan hệ r và s cho ta một quan hệ với tập thuộc tính U và các bộ là các bộ thuộc ít nhất 1 trong 2 quan hệ r hoặc s
r s= {t | tr hoặc ts}
Ví dụ cho 2 quan hệ r và s nhƣ sau:
SBD HoTen K1301 Lê Lan K1302 Trần Lê K1303 Nguyễn An r s= SBD HoTen K1301 Lê Lan K1302 Trần Lê K1303 Nguyễn An K1305 Thi Hồng K1304 Mai Ca VD2: r (A B C) s(A B C) a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b2 c1 r s = (A B C) a1 b1 c1 a2 b1 c2 a2 b2 c1 a2 b2 c2
- Phép giao (Intersect): Giao của 2 quan hệ khả hợp r(U) và S(U) cho ta một quan hệ mới với tập thuộc tính U, các bộ là các bộ đồng thời thuộc 2 quan hệ đó. r s= {t | tr và ts} SBD HoTen K1305 Thi Hồng K1304 Mai Ca K1303 Nguyễn An
Ví dụ có 2 quan hệ r và s nhƣ sau: SBD HoTen K1301 Lê Lan K1302 Trần Lê K1303 Nguyễn An r s= SBD HoTen K1303 Nguyễn An VD2: r (A B C) s(A B C) a1 b1 c1 a1 b1 c1 a2 b1 c2 a2 b2 c2 a2 b2 c1 r s = (A B C) a1 b1 c1
- Phép trừ (Substraction): Phép trừ quan hệ r(U) cho quan hệ khả hợp s(U) cho ta một quan hệ mới với tập thuộc tính U và các bộ là các bộ thuộc r nhƣng không thuộc s r- s={t | tr và ts} Ví dụ có 2 quan hệ r và s nhƣ sau: SBD HoTen K1301 Lê Lan K1302 Trần Lê K1303 Nguyễn An r- s = SBD HoTen K1301 Lê Lan K1302 Trần Lê
VD2: Cũng với 2 quan hệ r và s ở VD2 trên ta có
r- s (A B C) a2 b1 c2 a2 b2 c1 SBD HoTen K1305 Thi Hồng K1304 Mai Ca K1303 Nguyễn An SBD HoTen K1305 Thi Hồng K1304 Mai Ca K1303 Nguyễn An
- Phép tích Đề các (Catersion Product): Cho 2 quan hệ r(U) và s(V). Tích đề các của r và s cho ta một quan hệ với tập thuộc tính U và V với các bộ
r x s = {tq | t r và q s}
Nếu r có t1 bộ, s có t2 bộ thì kết quả của phép tích đề các có bao nhiêu bộ? (t1.t2 bộ) Ví dụ có 2 quan hệ r và s nhƣ sau: SBD HoDem K1301 Lê Lan K1302 Trần Lê r x s =
SBD HoDem Ten NgaySinh
K1301 Lê Lan Anh 10/10/91
K1301 Lê Lan Mai 5/9/90
K1302 Trần Lê Anh 10/10/91 K1302 Trần Lê Mai 5/9/90 VD2: r(A B C) s(D E) a1 b1 1 1 e1 a2 b2 2 2 e2 3 e3 r x s = p(A B C D E) a1 b1 1 1 e1 a1 b1 1 2 e2 a1 b1 1 3 e3 a2 b2 2 1 e1 a2 b2 2 2 e2 a2 b2 2 3 e3
- Phép chia (Division): Cho 2 quan hệ r(U) và s(V), V U, s, đặt X=U- V. Phép chia quan hệ r cho quan hệ s cho ta một quan hệ mới với tập thuộc tính X và các bộ có dạng {t[X] | t r, q s thì t[X],q r }
r s={t[X] | t r, q s thì t[X],q r }
Ví dụ: cho quan hệ r Quan hệ s
Ten NgaySinh
Anh 10/10/91
SBD HoDem Ten
K1301 Lê Lan Anh
K1302 Trần Phƣơng Mai
K1303 Hoàng Vân Anh
K1301 Trần Lê Mai
K1302 Lê Lan Anh
r s= VD2: r(A B C D) s(C D) a b c d c d a b e f e f b c e f e d c d e d e f a b d e rs= (A B) a b e d
4.3 Các phép toán đặc biệt trên quan hệ