BÀI 3: ĐẠI SỐ QUAN HỆ
II. CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ
Đại số quan hệ gồm một tập các phép toán tác động trên các quan hệ và cho kết quả là một quan hệ.
Có 8 phép toán được chia làm 2 nhóm:
- Nhóm các phép toán tập hợp: hợp, giao, trừ, tích đề các
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 3
- Nhóm các phép toán quan hệ: chọn, chiếu, kết nối, chia và một số phép toán khác.
Điều kiện thực hiện các phép toán tập hợp (hợp, giao, trừ ): Hai quan hệ r(A1,
A2,… An) và s(B1, B2,… Bn) được gọi là khả hợp nếu chúng có cùng bậc (cùng số cột) và dom(Ai) = dom(Bi) với 1<= i <= n. Nói cách khác, hai quan hệ có cùng số các thuộc tính
và mỗi cặp thuộc tính tương ứng có cùng miền giá trị.
2.1. Phép hợp - UNION
• Phép hợp của hai quan hệ r và s là phép gộp các bộ của hai quan hệ thành một quan hệ và bỏ đi các bộ trùng.
• Biểu diễn:
r U s = {t / t thuộc r hoặc t thuộc s}
Ví dụ 4.4: Cho quan hệ r và s, kết quả của phép hợp r và s như sau:
r ( A, B , C ) s( A, B , C ) r U s ( A, B , C )
a1 b1 c1 a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2 a2 b2 c2
a1 b2 c2
Ví dụ 4.5: Cho hai quan hệ Employee1 và Employee2, kết quả của phép hợp sẽ được thể hiện như hình:
2.2. Phép giao - INTERSECT
• Phép giao của hai quan hệ r và s là một quan hệ chứa tất cả các bộ cùng có mặt ở cả hai quan hệ r và s
• Biểu diễn:
r ∩ s ={t / t thuộc r và t thuộc s}
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 4
Ví dụ 4.6: Cho
r ( A, B , C ) s( A, B , C )
a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2
Kết quả phép giao hai quan hệ r và s sẽ là:
r ∩ s ( A, B , C )
a1 b1 c1
Ví dụ 4.7: Cho
Kết quả phép giao hai quan hệ sẽ là:
EMPLOYEE1 ∩ EMPLOYEE2 = 002, Thiện, P002
2.3. Phép trừ - MINUS
• Phép trừ của hai quan hệ r và s là một quan hệ chứa các bộ có trong bảng r
mà không có trong bảng s.
• Biểu diễn:
r - s = {t / t thuộc r và t không thuộc s}
Ví dụ 4.8:
r ( A, B , C ) s( A, B , C )
a1 b1 c1 a1 b1 c1
a2 b2 c2 a1 b2 c2
Kết quả phép trừ 2 quan hệ là:
r - s ( A, B , C ) a2 b2 c2
Ví dụ 4.9:
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 5
Kết quả phép trừ 2 quan hệ sẽ là:
EMPLOYEE1 - EMPLOYEE2 = 001, Hoàng, P001
2.4. Phép Tích Đề các
• Phép tích Đề các được dùng để kết hợp các bộ của các quan hệ lại với nhau. Kết quả của phép tích đề các là một quan hệ mà mỗi bộ của nó là sự kết hợp một bộ của quan hệ này với một bộ của quan hệ khác. Phép Tích Đề các cũng là phép toán hai ngôi song các quan hệ tham gia Tích Đề các không cần thỏa mãn điều kiện khả hợp.
• Biểu diễn: Cho quan hệ r(U), U={A1, A2,..., An} và quan hệ s(Y), Y={B1,
B2,..., Bm}
Tích Đề các:
r x s = k{t=(a1, a2,..., an, b1, b2,..., bm) /a1, a2,..., an Є r và b1, b2,..., bm Є s}
Ví dụ 4.10:
Chú ý: Quan hệ tạo thành k có:
Bậc k = bậc r + bậc s
Lực lượng k = lực lượng r x lực lượng s
Phép tích Đề các là phép toán đắt nhất trong các phép toán của đại số quan hệ
2.5. Phép chọn - SELECT (cắt ngang)
• Phép chọn trên quan hệ là một quan hệ chứa các dòng của quan hệ thoả mãn một điều kiện nào đó trên tập các cột thuộc tính.
• Biểu diễn:
σF(R) = { t thuộc R / F(t) đúng}
Trong đó:
- σ: là kí hiệu của phép chọn
- F là biểu thức chọn, là một tổ hợp logic các toán hạng, mỗi toán hạng là
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 6
một phép so sánh đơn giản giữa hai thuộc tính hoặc giữa một thuộc tính và một giá trị hằng. Các phép toán trong F gồm:
- Phép toán logic: AND (và), OR (hoặc), NOT (phủ định).
- Phép toán so sánh: <, >, =, >=, <=, <>
Ví dụ 4.11:
r (A , B) F1 = (A=a1) OR (B=3) σF1(r) = r' (A, B)
a1 1 a2 2 a3 3
a1 1
a3 3
Chú ý: Bậc r = bậc r'; lực lượng của r >= lực lượng của r'
2.6. Phép chiếu – PROJECT (cắt dọc)
• Phép chiếu trên quan hệ là một quan hệ chứa một số cột (thuộc tính) nào đó của quanhệ
• Biểu diễn: Cho quan hệ r(U), gọi X là tập con của tập thuộc tính U. Phép chiếu của quan hệ r trên X là:
ΠX(r) = { t[X]/ thuộc r}; t[X] là bộ t lấy trên tập thuộc tính X}
Ví dụ 4.12: Cho r(A,B)
r (A , B) a1 1 a2 2 a3 3
Phép chiếu quan hệ r trên thuộc tính X={A} sẽ là quan hệ s như sau:
ΠX(r) = s(A)
a1 a2 a3
Chú ý: Bậc của r > bậc của s. Lực lượng của r > lực lượng của s
2.7. Phép kết nối - JOIN
• Phép nối được dùng để kết hợp các bộ có liên hệ với nhau từ hai quan hệ thành một bộ. Quan hệ tạo thành có số thuộc tính là tổng số thuộc tính của các quan hệ
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 7
tham gia vào phép nối.
• Biểu diễn: Cho hai quan hệ r(U), U = {A1, A2,..., An} và quan hệ s(Y), Y = {B1, B2,..., Bm}.
Phép kết nối giữa quan hệ r có thuộc tính A và quan hệ s có thuộc tính B với một phép so sánh θ là:
r |><| s = {a^b / a thuộc r, b thuộc s và a(A) θ b(B)}
A θ B
Ví dụ 4.13: Xét quan hệ r và s trong phép tích đề các
r (A , B ) ; s(C , D) r |x| s = k (A, B, C, D)
a1 1 1 d1
a2 2 2 d2
a3 3
(B>=C) a1 1 1 d1
a1 1 2 d2 a2 2 2 d2 a3 3 1 d1 a3 3 2 d2
Chú ý:
- Lực lượng của phép kết nối k' <= lực lượng của phép tích đề các k.
k' = σB>=C (k) r |><| s = σF(r x s)
- Để phép kết nối có nghĩa, miền trị dom(A) phải so sánh được qua phép so sánh θ với miền trị dom(B)
- Nếu phép so sánh θ là "=" thì phép kết nối gọi là kết nối bằng.
• Phép kết nối tự nhiên – Natural Join
Phép toán kết nối bằng trên những thuộc tính cùng tên của hai quan hệ và sau khi kết nối thì cắt bỏ đi một thuộc tính cùng tên bằng phép chiếu của đại số quan hệ được gọi
là phép kết nối tự nhiên và ký hiệu *.
r(A, B, C) s(C, D, E) r*s (A, B, C, D, E)
a1 1 1
a2 2 1
a1 2 2
1 d1 e1
2 d2 e2
3 d3 e3
a1 1 1 d1 e1 a2 2 1 d1 e1 a1 2 2 d2 e2
r*s =ΠABCDE( r |><| s)
C=C
2.8. Phép chia - DIVISION
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 8
• Cho r là một quan hệ n - ngôi, s là quan hệ m - ngôi (n > m, s khác rỗng). Phép chia quan hệ r cho quan hệ s là tập tất cả các n - m bộ t sao cho với mọi bộ u thuộc s thì bộ (t^u) thuộc r.
• Biểu diễn:
r ÷ s = {t / với mọi u thuộc s thì (t^u) thuộc r}
Ví dụ 4.14:
r(A, B, C, D) s(C, D, E) r ÷s (A, B)
a b c d
a b e f
b c e f
e d c d
e d e f
a b d e
c d
e f
a b
e d
2.9. Hàm nhóm và phép toán nhóm
Trong truy vấn dữ liệu có những vấn đề mà nếu chỉ dùng các phép toán đại số cơ bản đã trình bày thì không thể thực hiện được. Ví dụ như các yêu cầu tính tổng, tính trung bình, tìm giá trị lớn nhất, nhỏ nhất,..hoặc các bài toán đòi hỏi phải nhóm các bộ trong một quan hệ theo một thuộc tính nào đó rồi thực hiện tính toán.
Trở lại với bài toán quản lý nhân viên, yêu cầu đưa ra lương trung bình hoặc tổng lương của tất cả các nhân viên hoặc cho biết số nhân viên của từng đơn vị thì ta thấy rằng các phép toán đại số cơ bản không thể lấy được dữ liệu, khi đó người ta cần đến phép toán nhóm với các hàm nhóm toán học.
Hàm nhóm:
SUM(<tên cột>): Cho phép tính tổng theo cột.
AVG(<tên cột>): Trả về giá trị trung bình tính theo cột
MIN(<tên cột>), MAX(<tên cột>): Trả về giá trị nhỏ nhất, lớn nhất của cột
COUNT(*): Trả về số dòng của bảng
COUNT(<tên cột>): Trả về số dòng của bảng mà giá trị tại cột chỉ định khác rỗng.
Phép toán nhóm
< các thuộc tính nhóm> ℑ< danh sách các hàm>(R)
Trong đó:
• Các thuộc tính nhóm: là danh sách các thuộc tính của quan hệ được chỉ ra trong R.
• Danh sách hàm là danh sách các cặp (<hàm>(<thuộc tính>)). Trong đó
Trung tâm Đào tạo E-learning Cơ hội học tập cho mọi người
Cơ sở dữ liệu - Bài 3 Trang 9
<hàm> có thể là SUM, AVERAGE, MAX, MIN, COUNT, và <thuộc tính> là một thuộc tính của quan hệ được chỉ ra trong R.
Ví dụ 4.15: Cho biết số nhân viên của từng đơn vị
MãsốDVℑ COUNT ( MãNV)( NHÂNVIÊN) Cho biết lương trung bình của các nhân viên trong từng đơn vị
MãsốDVℑ AVG (Lương)( NHÂNVIÊN) Kết quả của phép toán nhóm là một quan hệ và nếu không chỉ ra thuộc tính nhóm thì các hàm được áp dụng cho các giá trị thuộc tính của tất cả các bộ trong quan hệ, vì vậy quan hệ kết quả chỉ có một bộ.
Ví dụ 4.16: Cho biết lương trung bình của công ty
ℑ AVG (Lương)( NHÂNVIÊN)