Chương 3: Đại số quan hệ
Các phép toán thao tác và truy vấn dữ liệu trong mô hình dữ liệu quan hệ. Là nền tảng logic cho ngôn ngữ truy vấn trong các hệ quản trị cơ sở dữ liệu hiện đại.
1. Tổng quan về đại số quan hệ
1.1. Dữ liệu dạng quan hệ và truy vấn
Trong mô hình dữ liệu quan hệ, thông tin được tổ chức dưới dạng các bảng.
Mỗi bảng được xem là một quan hệ. Một quan hệ gồm nhiều bộ, mỗi bộ biểu diễn thông tin về một đối tượng cụ thể.
Các cột trong bảng là các thuộc tính, mỗi thuộc tính có tên và miền giá trị xác định.
Ví dụ, một hệ thống quản lý nhân viên có thể sử dụng các bảng sau:
Từ các bảng này, người dùng cần trả lời nhiều truy vấn, chẳng hạn:
- Nhân viên đang làm việc ở phòng ban nào
- Nhân viên nào tham gia đề án có địa điểm tại TP.HCM
- Nhân viên nào không tham gia bất kỳ đề án nào
Mỗi câu hỏi như vậy là một truy vấn trên mô hình dữ liệu. Để mô tả và xử lý truy vấn một cách rõ ràng và nhất quán, ta cần một hệ thống phép toán có tính hình thức, không phụ thuộc vào cách cài đặt bên dưới. Đại số quan hệ được xây dựng để đáp ứng nhu cầu này.
1.2. Đại số quan hệ là gì
Đại số quan hệ là một hệ thống phép toán chính thức, được xây dựng dựa trên lý thuyết tập hợp, được sử dụng để thao tác và truy vấn dữ liệu trong mô hình dữ liệu quan hệ.
Hệ thống này cung cấp một khuôn khổ toán học để mô tả các bước xử lý dữ liệu của một truy vấn một cách chính xác và tường minh.
Nhờ đó, nó đóng vai trò là cơ sở lý thuyết cho các ngôn ngữ truy vấn có cấu trúc như SQL và là nền tảng tối ưu hóa truy vấn.
Đặc điểm cốt lõi:
- Đầu vào: Một hoặc nhiều quan hệ (bảng) đã tồn tại.
- Đầu ra: Một quan hệ mới (bảng) được tạo ra từ kết quả của phép toán.
Đặc tính này cho phép kết hợp các phép toán với nhau một cách tuần tự (xem kết quả của một phép toán là đầu vào cho phép toán tiếp theo), giúp xây dựng các biểu thức truy vẫn phức tạp một cách có hệ thống.
1.3. Phân loại các phép toán
Các phép toán trong đại số quan hệ được chia thành hai nhóm chính:
1.3.1. Các phép toán tập hợp
Các phép toán có nguồn gốc từ lý thuyết tập hợp, gồm:
- Phép hợp ()
- Phép giao ()
- Phép hiệu ()
- Tích Descartes ()
Để áp dụng các phép toán này, các quan hệ tham gia cần phải tương thích về mặc hợp (khả hợp), nghĩa là chúng phải có cùng số lượng thuộc tính và các miền giá trị tương ứng của các thuộc tính phải giống nhau.
Điều kiện áp dụng: Các quan hệ phải tương thích về lược đồ.
1.3.2. Các phép toán quan hệ
Các phép toán chuyên biệt cho mô hình quan hệ, gồm:
- Phép chọn ()
- Phép chiếu ()
- Phép gán ()
- Phép kết ()
- Phép chia ()
2. Các phép toán cơ sở
Trong quá trình xây dựng và diễn đạt truy vấn, ba thao tác xuất hiện với tần suất cao nhất gồm lựa chọn các bộ thỏa điều kiện, trích xuất một tập thuộc tính cụ thể và tạo lập các quan hệ trung gian phục vụ những bước xử lý tiếp theo. Đại số quan hệ mô hình hóa ba thao tác này thông qua ba phép toán cơ sở là Phép chọn, Phép chiếu và Phép gán.
Phép chọn xác định tập bộ được giữ lại dựa trên một tiêu chí logic. Phép chiếu xác lập tập thuộc tính xuất hiện trong quan hệ đầu ra và loại bỏ các thuộc tính không cần thiết. Phép gán tạo tên cho những quan hệ trung gian, qua đó giúp tổ chức biểu thức truy vấn theo các giai đoạn rõ ràng và tăng mức độ mô tả của toàn bộ quá trình xử lý.
Ba phép toán cơ sở này đóng vai trò khởi tạo cho phần lớn biểu thức đại số quan hệ. Chúng xác định phạm vi dữ liệu được đưa vào xử lý và tạo nền tảng để xây dựng các phép toán phức tạp hơn.
2.1. Lược đồ ví dụ
Để bảo đảm tính thống nhất trong các ví dụ, ta sử dụng quan hệ minh họa:
Ý nghĩa các thuộc tính:
- : mã số sinh viên, phân biệt duy nhất từng sinh viên
- : họ và tên đầy đủ
- : nhận giá trị
'Nam'hoặc'Nu' - : năm sinh, biểu diễn dưới dạng số nguyên
- : địa phương nơi sinh
- : mã lớp sinh hoạt
Một thể hiện minh họa của quan hệ:
| MaHV | HoTen | GioiTinh | NamSinh | QueQuan | MaLop |
|---|---|---|---|---|---|
| HV01 | Nguyen An | Nam | 2005 | Ha Noi | L01 |
| HV02 | Le Sang | Nam | 2003 | Gia Lai | L02 |
| HV03 | Ngo Hien | Nu | 2007 | Ha Noi | L01 |
| HV04 | Mai Ngoc | Nu | 2005 | TPHCM | L02 |
2.2. Phép chọn
2.2.1. Định nghĩa
Phép chọn là phép toán nhằm xác định tập bộ thỏa mãn một điều kiện logic quy định trước. Đối với mỗi bộ trong quan hệ, điều kiện được đánh giá và bộ chỉ được giữ lại trong kết quả khi điều kiện đúng.
Trong ví dụ, nếu ta cần xác định các học viên có quê quán tại Hà Nội, thì phép chọn thực hiện việc đối chiếu giá trị của thuộc tính QueQuan trong từng bộ và chọn ra những bộ tương ứng.
Về lược đồ, phép chọn không làm thay đổi tập thuộc tính của quan hệ. Quan hệ kết quả giữ nguyên cấu trúc cột, chỉ thay đổi về số lượng bộ.
2.2.2. Ký hiệu và cú pháp
Ký hiệu: chữ cái Hy Lạp sigma .
Dạng tổng quát:
Trong đó:
- là tên quan hệ đầu vào
- là điều kiện lựa chọn, là một biểu thức logic nói về các thuộc tính của
Điều kiện đơn giản thường ở dạng so sánh, ví dụ:
Điều kiện phức là điều kiện ghép nhiều điều kiện đơn, dùng phép nối logic:
- nghĩa là và cùng đúng
- nghĩa là ít nhất một trong hai điều kiện đúng
- hoặc là phủ định của
2.2.3. Ví dụ minh họa
Dựa trên quan hệ ở trên.
Ví dụ 1. Chọn theo một thuộc tính
Truy vấn: Lấy danh sách học viên quê .
Biểu thức:
Kết quả gồm các bộ thỏa điều kiện QueQuan = 'Ha Noi':
| MaHV | HoTen | GioiTinh | NamSinh | QueQuan | MaLop |
|---|---|---|---|---|---|
| HV01 | Nguyen An | Nam | 2005 | Ha Noi | L01 |
| HV03 | Ngo Hien | Nu | 2007 | Ha Noi | L01 |
Ví dụ 2. Chọn theo hai điều kiện đồng thời
Truy vấn: Lấy học viên nam, sinh từ năm trở về sau.
Biểu thức:
Kết quả:
| MaHV | HoTen | GioiTinh | NamSinh | QueQuan | MaLop |
|---|---|---|---|---|---|
| HV01 | Nguyen An | Nam | 2005 | Ha Noi | L01 |
Ví dụ 3. Chọn theo điều kiện rời rạc
Truy vấn: Lấy học viên quê hoặc .
Biểu thức:
Kết quả bao gồm các bộ thỏa một trong hai điều kiện:
| MaHV | HoTen | GioiTinh | NamSinh | QueQuan | MaLop |
|---|---|---|---|---|---|
| HV02 | Le Sang | Nam | 2003 | Gia Lai | L02 |
| HV04 | Mai Ngoc | Nu | 2005 | TPHCM | L02 |
2.3. Phép chiếu
2.3.1. Định nghĩa
Phép chiếu () là phép toán nhằm xác định tập thuộc tính cần xuất hiện trong kết quả truy vấn.
Nói cách khác, phép chiếu loại bỏ các thuộc tính không cần thiết và chỉ giữ lại cấu trúc thông tin liên quan.
Nếu có nhiều bộ trùng nhau hoàn toàn trên tập thuộc tính được chiếu, đại số quan hệ giữ lại một bộ duy nhất, vì quan hệ được hiểu là tập hợp, không phải danh sách, nên không có hai bộ hoàn toàn giống nhau.
2.3.2. Ký hiệu và cú pháp
Ký hiệu: Chữ cái Hy Lạp pi ()
Dạng tổng quát:
Trong đó:
- là các thuộc tính cần xuất hiện trong kết quả
- Danh sách này phải là tập hợp con của lược đồ quan hệ
- Thứ tự thuộc tính trong danh sách chiếu quyết định thứ tự cột trong quan hệ đầu ra
2.3.3. Ví dụ minh họa
Tiếp tục từ quan hệ :
Ví dụ 1. Lấy mã số và họ tên
Truy vấn: Lấy mã số và họ tên tất cả học viên.
Biểu thức:
| MaHV | HoTen |
|---|---|
| HV01 | Nguyen An |
| HV02 | Le Sang |
| HV03 | Ngo Hien |
| HV04 | Mai Ngoc |
Kết quả gồm hai cột và , các cột khác không xuất hiện nữa.
Ví dụ 2. Lấy danh sách quê quán
Truy vấn: Liệt kê tất cả quê quán có học viên đang học.
Biểu thức:
| QueQuan |
|---|
| Ha Noi |
| Gia Lai |
| TPHCM |
Ta thấy dữ liệu gốc có hai học viên quê , nhưng phép chiếu chỉ giữ lại một dòng.
Phép chiếu gộp những bộ trùng lặp trên tập thuộc tính đang giữ lại.
2.4. Kết hợp phép chọn và phép chiếu
Cấu trúc thường gặp:
Ví dụ: Liệt kê mã số và họ tên học viên nữ của lớp , sinh từ trở về sau.
Biểu thức đầy đủ:
2.5. Phép gán
2.5.1. Định nghĩa
Phép gán () là phép toán dùng để định danh một quan hệ được tạo ra từ một biểu thức đại số quan hệ.
Trong truy vấn gồm nhiều bước xử lý, việc gán tên cho các quan hệ trung gian:
- Tăng tính mạch lạc
- Giảm độ phức tạp
- Cho phép tái sử dụng kết quả trong các bước tiếp theo
Thông qua phép gán, một biểu thức phức tạp có thể được chia thành nhiều bước nhỏ, mỗi bước xử lý một phần truy vấn và sản sinh quan hệ trung gian có ý nghĩa rõ ràng.
2.5.2. Ký hiệu
Ký hiệu tổng quát:
Trong đó:
- là tên quan hệ mới
- là biểu thức đại số quan hệ
- lưu kết quả của và được xem như một quan hệ độc lập trong các bước tiếp theo
Phép gán không thay đổi bản chất của biểu thức mà chỉ bổ sung một lớp mô tả để tổ chức truy vấn.
2.5.3. Ví dụ minh họa
Ví dụ. Gán kết quả lọc học viên vào quan hệ mới
Câu hỏi: Tạo quan hệ chứa danh sách học viên thuộc lớp .
Biểu thức:
Quan hệ trở thành một đơn vị dữ liệu độc lập và có thể được dùng trong các bước tiếp theo mà không cần lặp lại biểu thức lọc.
3. Các phép toán tập hợp
3.1. Khái quát
Trong đại số quan hệ, ngoài các phép chọn và chiếu, nhóm phép toán mang tính tập hợp đóng vai trò quan trọng khi cần kết hợp hoặc đối chiếu hai quan hệ có cùng cấu trúc.
Các phép toán trong nhóm này bao gồm hợp, giao, hiệu và tích Đề các.
Nhóm phép toán này dựa trực tiếp trên cơ sở lý thuyết tập hợp, nhưng áp dụng cho các quan hệ vốn là tập hợp các bộ có cấu trúc.
Một đặc điểm quan trọng là các phép hợp, giao và hiệu chỉ hợp lệ khi hai quan hệ tham gia có cùng lược đồ hoặc tương thích về lược đồ.
Tích Đề các không yêu cầu điều kiện này, nhưng tạo ra một quan hệ có số lượng thuộc tính bằng tổng số thuộc tính của hai quan hệ tham gia.
3.2. Điều kiện cần để áp dụng các phép hợp, giao và hiệu
Các phép hợp, giao và hiệu chỉ hợp lệ khi hai quan hệ tham gia phép toán có "lược đồ tương thích", hay khả hợp.
Điều này có nghĩa là:
- Hai quan hệ phải có cùng số lượng thuộc tính
- Tên và thứ tự của các thuộc tính tương ứng phải trùng khớp
- Miền giá trị của từng thuộc tính tương ứng phải giống nhau
Nếu các điều kiện này không được thỏa mãn, phép toán không thể thực hiện.
Khi cần, ta có thể sử dụng phép đổi tên hoặc sắp xếp lại thuộc tính để đưa hai quan hệ về cùng lược đồ.
3.3. Phép hợp
3.3.1. Định nghĩa
Phép hợp () cho phép kết hợp hai quan hệ tương thích lược đồ để tạo ra một quan hệ mới, trong đó chứa toàn bộ các bộ xuất hiện trong ít nhất một trong hai quan hệ.
Ký hiệu:
Trong đó, và có cùng lược đồ.
Kết quả là một quan hệ gồm các bộ của , các bộ của và mỗi bộ xuất hiện duy nhất một lần, vì quan hệ được hiểu là tập hợp.
Phép hợp hữu ích khi truy vấn yêu cầu tập dữ liệu phủ rộng hai hoặc nhiều nguồn cùng cấu trúc.
Ví dụ: kết hợp danh sách học viên đang học cùng danh sách học viên tham gia chương trình trao đổi để tạo tập học viên thuộc phạm vi quản lý chung.
3.3.2. Ví dụ
Giả sử hai quan hệ có cùng cấu trúc:
Trong đó, mỗi quan hệ chứa danh sách sinh viên của hai lớp khác nhau.
Biểu thức:
Kết quả là tập sinh viên của cả hai lớp, không trùng lặp.
3.4. Phép giao
3.4.1. Định nghĩa
Phép giao () tạo ra quan hệ bao gồm những bộ xuất hiện đồng thời trong cả hai quan hệ.
Ký hiệu:
Phép giao hữu ích khi cần xác định đối tượng đáp ứng đồng thời hai điều kiện đến từ hai nguồn dữ liệu.
Ví dụ: học viên vừa nằm trong danh sách học lực giỏi vừa nằm trong danh sách xét học bổng.
3.4.2. Ví dụ
Xét hai quan hệ chứa danh sách học viên tham gia hai câu lạc bộ:
Biểu thức:
Kết quả là danh sách học viên cùng tham gia cả hai câu lạc bộ.
3.5. Phép hiệu
3.5.1. Định nghĩa
Phép hiệu () xác định những bộ thuộc quan hệ thứ nhất nhưng không xuất hiện trong quan hệ thứ hai.
Ký hiệu:
Phép hiệu hỗ trợ nhận diện các phần tử không thuộc một tập dữ liệu khác.
Ví dụ: sinh viên chưa nộp học phí, sinh viên không đăng ký môn học.
Kết quả phụ thuộc vào thứ tự quan hệ, vì và tạo ra hai tập dữ liệu hoàn toàn khác nhau.
3.5.2. Ví dụ
Lấy tập học viên thuộc lớp A nhưng không tham gia câu lạc bộ.
Biểu thức:
3.6. Phép tích
3.6.1. Định nghĩa
Phép tích () là phép toán kết hợp mọi bộ của với mọi bộ của , tạo ra một quan hệ mới có số lượng thuộc tính bằng tổng số thuộc tính của hai quan hệ.
Khác với ba phép toán trên, phép tích không yêu cầu hai quan hệ phải tương thích lược đồ.
Ký hiệu:
Phép tích tạo ra số lượng bộ rất lớn.
Nếu có bộ và có bộ thì có bộ
3.6.2. Ví dụ minh họa
Xét hai quan hệ:
Phép tích:
Phép tích kết hợp mọi dòng của với mọi dòng của , tạo ra các bộ phản ánh quan hệ thực giữa hai bảng.
Phép toán này chỉ có ý nghĩa khi được kết hợp với phép chọn để tạo thành các phép kết.
4. Phép kết
4.1. Giới thiệu
Trong mô hình dữ liệu quan hệ, thông tin thường được lưu trong nhiều bảng khác nhau.
Mỗi bảng mô tả một phần của dữ liệu, chẳng hạn sinh viên, lớp học hoặc môn học.
Khi trả lời các truy vấn phức tạp, người dùng phải kết hợp dữ liệu từ nhiều quan hệ.
Phép kết là phép toán quan trọng nhất cho mục đích này.
Phép kết cho phép ghép các bộ từ hai quan hệ dựa trên một điều kiện liên quan giữa chúng.
Không giống phép tích tạo ra tất cả các cặp bộ có thể, phép kết chỉ giữ lại những cặp bộ đáp ứng điều kiện kết.
Nhờ đó, phép kết mô tả chính xác cách các bảng liên hệ với nhau trong cơ sở dữ liệu.
4.2. Cấu trúc và ý nghĩa
Phép kết giữa hai quan hệ và có dạng:
Trong đó là điều kiện kết, xác định cặp thuộc tính giữa hai quan hệ cần so sánh.
Kết quả của phép kết bao gồm:
- Tập thuộc tính của ghép với tập thuộc tính của
- Tập bộ được tạo thành từ các cặp bộ của và thỏa mãn điều kiện kết
4.3. Các dạng phép kết thường dùng
Đại số quan hệ sử dụng nhiều dạng kết khác nhau, mỗi dạng phù hợp với một tình huống truy vấn riêng.
Bốn loại kết thường gặp gồm:
- Kết theta
- Kết bằng
- Kết tự nhiên
- Kết ngoài
Ví dụ:
Quan hệ
| MAHV | HOTEN | MALOP |
|---|---|---|
| HV01 | Nguyen An | L01 |
| HV02 | Le Sang | L02 |
| HV03 | Ngo Hien | L01 |
| HV04 | Pham Huy | L03 |
| HV05 | Mai Ngoc | null |
Quan hệ
| MALOP | TENLOP | CVHT | SISO |
|---|---|---|---|
| L01 | CNTT1 | GV01 | 35 |
| L02 | CNTT2 | GV03 | 40 |
| L03 | CNTT3 | GV02 | 50 |
| L04 | CNTT4 | GV05 | 45 |
Quan hệ
| MAHV | MAMH | DIEM |
|---|---|---|
| HV01 | IT004 | 7.0 |
| HV01 | MA004 | 8.5 |
| HV02 | IT004 | 8.5 |
| HV03 | MA004 | 9.0 |
| HV06 | IT004 | 6.0 |
4.3.1. Kết theta (Theta Join)
Kết theta là dạng tổng quát nhất.
Điều kiện kết có thể sử dụng bất kỳ phép so sánh nào:
, , , , , .
Ký hiệu:
Kết theta cho phép ghép hai quan hệ dựa trên nhiều kiểu điều kiện khác nhau.
Ví dụ
Điều kiện: Lấy học viên thuộc lớp có sĩ số lớn hơn 38
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP | TENLOP | CVHT | SISO |
|---|---|---|---|---|---|
| HV02 | Le Sang | L02 | CNTT2 | GV03 | 40 |
| HV04 | Pham Huy | L03 | CNTT3 | GV02 | 50 |
4.3.2. Kết bằng (Equi-Join)
Kết bằng là trường hợp đặc biệt của kết theta, khi chỉ dùng phép so sánh bằng.
Ký hiệu:
Dạng kết này giữ lại cả hai thuộc tính và trong kết quả.
Ví dụ
Điều kiện:
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP(H) | MALOP(L) | TENLOP | CVHT | SISO |
|---|---|---|---|---|---|---|
| HV01 | Nguyen An | L01 | L01 | CNTT1 | GV01 | 35 |
| HV02 | Le Sang | L02 | L02 | CNTT2 | GV03 | 40 |
| HV03 | Ngo Hien | L01 | L01 | CNTT1 | GV01 | 35 |
| HV04 | Pham Huy | L03 | L03 | CNTT3 | GV02 | 50 |
4.3.3. Kết tự nhiên (Natural Join)
Kết tự nhiên là trường hợp đặc biệt của kết bằng.
Các thuộc tính trùng tên được tự động dùng làm điều kiện kết.
Ký hiệu:
Ví dụ
Điều kiện:
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP | TENLOP | CVHT | SISO |
|---|---|---|---|---|---|
| HV01 | Nguyen An | L01 | CNTT1 | GV01 | 35 |
| HV02 | Le Sang | L02 | CNTT2 | GV03 | 40 |
| HV03 | Ngo Hien | L01 | CNTT1 | GV01 | 35 |
| HV04 | Pham Huy | L03 | CNTT3 | GV02 | 50 |
4.3.4. Kết ngoài (Outer Join)
Kết ngoài mở rộng kết bằng hoặc kết tự nhiên, trong đó các bộ không có bản ghi tương ứng vẫn được giữ lại.
Ba loại:
- Kết ngoài trái (Left Outer Join)
- Kết ngoài phải (Right Outer Join)
- Kết ngoài đầy đủ (Full Outer Join)
Ví dụ kết ngoài trái
Điều kiện: Liệt kê danh sách học viên kèm theo kết quả thi (nếu có)
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP | MAHV(KQ) | MAMH | DIEM |
|---|---|---|---|---|---|
| HV01 | Nguyen An | L01 | HV01 | IT004 | 7.0 |
| HV01 | Nguyen An | L01 | HV01 | MA004 | 8.5 |
| HV02 | Le Sang | L02 | HV02 | IT004 | 8.5 |
| HV03 | Ngo Hien | L01 | HV03 | MA004 | 9.0 |
| HV04 | Pham Huy | L03 | null | null | null |
| HV05 | Mai Ngoc | null | null | null | null |
Ví dụ kết ngoài phải
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP | MAHV(KQ) | MAMH | DIEM |
|---|---|---|---|---|---|
| HV01 | Nguyen An | L01 | HV01 | IT004 | 7.0 |
| HV01 | Nguyen An | L01 | HV01 | MA004 | 8.5 |
| HV02 | Le Sang | L02 | HV02 | IT004 | 8.5 |
| HV03 | Ngo Hien | L01 | HV03 | MA004 | 9.0 |
| null | null | null | HV06 | IT004 | 6.0 |
Ví dụ kết ngoài đầy đủ
Biểu thức:
Kết quả:
| MAHV | HOTEN | MALOP | MAHV(KQ) | MAMH | DIEM |
|---|---|---|---|---|---|
| HV01 | Nguyen An | L01 | HV01 | IT004 | 7.0 |
| HV01 | Nguyen An | L01 | HV01 | MA004 | 8.5 |
| HV02 | Le Sang | L02 | HV02 | IT004 | 8.5 |
| HV03 | Ngo Hien | L01 | HV03 | MA004 | 9.0 |
| HV04 | Pham Huy | L03 | null | null | null |
| HV05 | Mai Ngoc | null | null | null | null |
| null | null | null | HV06 | IT004 | 6.0 |
5. Gom nhóm và hàm tổng hợp
5.1. Mở đầu
Trong nhiều truy vấn, người dùng không cần xem từng dòng dữ liệu một. Thay vào đó họ muốn có thông tin tổng hợp như số học viên của từng lớp, điểm trung bình theo môn hoặc số lượng môn mà một học viên đã tham gia.
Đại số quan hệ sử dụng một nhóm phép toán riêng để gom dữ liệu theo từng giá trị khóa và tính các hàm tổng hợp.
5.2. Khái niệm gom nhóm
Gom nhóm là thao tác chia một quan hệ thành nhiều nhóm nhỏ, mỗi nhóm gồm những bộ có cùng giá trị ở một hoặc nhiều thuộc tính.
Sau bước gom nhóm, ta áp dụng các hàm tổng hợp lên từng nhóm để tính thông tin thống kê.
Ký hiệu đại số quan hệ:
Trong đó:
- : danh sách thuộc tính dùng để gom nhóm
- : danh sách các hàm tổng hợp
- : quan hệ đầu vào
5.3. Các hàm tổng hợp thường dùng
Các hàm tổng hợp:
- : đếm số bộ
- : tính tổng
- : tính trung bình
- : lấy giá trị lớn nhất
- : lấy giá trị nhỏ nhất
Hàm tổng hợp luôn đi kèm gom nhóm hoặc áp dụng trên toàn bộ quan hệ khi không có nhóm.
5.4. Ví dụ minh họa
Dữ liệu
| MAHV | HOTEN | MALOP |
|---|---|---|
| HV01 | Nguyen An | L01 |
| HV02 | Le Sang | L02 |
| HV03 | Ngo Hien | L01 |
| HV04 | Pham Huy | L03 |
| HV05 | Mai Ngoc | null |
| MAHV | MAMH | DIEM |
|---|---|---|
| HV01 | IT004 | 7.0 |
| HV01 | MA004 | 8.5 |
| HV02 | IT004 | 8.5 |
| HV03 | MA004 | 9.0 |
| HV06 | IT004 | 6.0 |
Ví dụ 1
Câu hỏi: Cho biết mỗi lớp có bao nhiêu học viên.
| MALOP | SoHV |
|---|---|
| L01 | 2 |
| L02 | 1 |
| L03 | 1 |
HV05 không có MALOP nên không thuộc nhóm.
Ví dụ 2
Câu hỏi: Số môn học mà mỗi học viên đã có điểm.
| MAHV | SoMon |
|---|---|
| HV01 | 2 |
| HV02 | 1 |
| HV03 | 1 |
| HV06 | 1 |
Ví dụ 3
Câu hỏi: Tính điểm trung bình mỗi học viên.
| MAHV | DTB |
|---|---|
| HV01 | 7.75 |
| HV02 | 8.50 |
| HV03 | 9.00 |
| HV06 | 6.00 |
Ví dụ 4
Câu hỏi: Cho biết điểm cao nhất của từng môn học.
| MAMH | DiemMax |
|---|---|
| IT004 | 8.5 |
| MA004 | 9.0 |
Ví dụ 5
Câu hỏi: Số học viên của từng lớp đã có ít nhất một kết quả thi.
| MALOP | SoHVThi |
|---|---|
| L01 | 2 |
| L02 | 1 |
| L03 | 0 |
Ví dụ 6
Câu hỏi: Tính điểm trung bình theo từng lớp, chỉ xét học viên có điểm thi.
| MALOP | DTBLop |
|---|---|
| L01 | 8.25 |
| L02 | 8.50 |
| L03 | 9.00 |
6. Phép chia
6.1. Mở đầu
Trong các phép toán đại số quan hệ, phép chia là phép mô hình hóa các truy vấn mang tính bao quát trên toàn bộ một tập giá trị. Đây là phép toán duy nhất diễn đạt các câu hỏi dạng "mọi", thường xuất hiện trong các hệ thống quản lý dữ liệu.
Các bài toán như xác định học viên đã thi tất cả môn bắt buộc, nhân viên tham gia toàn bộ dự án thuộc một phòng, hay khách hàng mua đầy đủ sản phẩm trong một danh mục đều là các trường hợp kinh điển cần đến phép chia.
Phép chia thường dùng trong các tình huống:
- Truy vấn yêu cầu kiểm tra xem một thực thể có liên hệ với toàn bộ phần tử của một tập nào đó.
- Mỗi bộ trong quan hệ bị chia được kiểm tra dựa trên sự bao phủ đầy đủ đối với các giá trị của quan hệ chia.
- Kết quả là danh sách các giá trị ở quan hệ bị chia thỏa mãn điều kiện bao quát.
Nói cách khác, phép chia trả lời cho câu hỏi:
“Một giá trị A có liên hệ với mọi giá trị B hay không?”
6.2. Ký hiệu
Giả sử có hai quan hệ:
Trong đó là tập thuộc tính chung.
Ký hiệu phép chia:
Kết quả là một quan hệ gồm các giá trị trong thỏa mãn điều kiện:
mọi giá trị trong đều phải xuất hiện cùng giá trị đó trong .
Có thể hiểu như sau:
- chứa tập giá trị cần kiểm tra đầy đủ.
- chứa các cặp giá trị biểu diễn quan hệ giữa và .
- Một giá trị được đưa vào kết quả khi nó liên hệ với toàn bộ các giá trị trong .
- Nếu còn thiếu bất kỳ giá trị nào trong , thì không được đưa vào kết quả.
Phép chia có thể biểu diễn bằng các phép toán cơ sở:
6.3. Ví dụ minh họa
Ta mở rộng dữ liệu bằng quan hệ :
| MAMH |
|---|
| IT004 |
| MA004 |
Hai môn này được xem là các môn bắt buộc.
| MAHV | MAMH | DIEM |
|---|---|---|
| HV01 | IT004 | 7.0 |
| HV01 | MA004 | 8.5 |
| HV02 | IT004 | 8.5 |
| HV03 | MA004 | 9.0 |
| HV06 | IT004 | 6.0 |
Câu hỏi: Cho biết học viên đã thi đầy đủ các môn học.
Biểu thức:
Chúng ta mô phỏng toàn bộ quy trình theo định nghĩa chuẩn của phép chia.
Bước 1. Lấy các cặp giá trị trong quan hệ bị chia
| MAHV | MAMH |
|---|---|
| HV01 | IT004 |
| HV01 | MA004 |
| HV02 | IT004 |
| HV03 | MA004 |
| HV06 | IT004 |
Bước 2. Xác định tập môn cần thỏa
| MAMH |
|---|
| IT004 |
| MA004 |
Bước 3. Kiểm tra từng học viên
- HV01 có cả IT004 và MA004
- HV02 và HV06 thiếu MA004
- HV03 thiếu IT004
Kết quả
| MAHV |
|---|
| HV01 |
HV01 là học viên duy nhất thi đầy đủ hai môn.