Chương 3 ĐẠI SỐ QUAN HỆ I. GIỚI THIỆU Trong chương này và chương tiếp theo, ta sẽ đề cập đến các cách tiếp cận với thiết kế ngôn ngữ để hỏi trên các q

Kích thước: px
Bắt đầu hiển thị từ trang:

Download "Chương 3 ĐẠI SỐ QUAN HỆ I. GIỚI THIỆU Trong chương này và chương tiếp theo, ta sẽ đề cập đến các cách tiếp cận với thiết kế ngôn ngữ để hỏi trên các q"

Bản ghi

1 Chương 3 ĐẠI SỐ QUAN HỆ I. GIỚI THIỆU Trong chương này và chương tiếp theo, ta sẽ đề cập đến các cách tiếp cận với thiết kế ngôn ngữ để hỏi trên các quan hệ. Khái niệm về trình bày câu hỏi thường là phần quan trọng nhất của DML. Ngôn ngữ sử dụng dữ liệu (DML) trên mô hình quan hệ thường được gọi tắt là "ngôn ngữ hỏi" (query language). Trong trường hợp tổng quát nhất, các câu hỏi thường dùng một ngôn ngữ phong phú, cao cấp để diễn đạt. Phần không dính líu hỏi đáp của ngôn ngữ hỏi thì liên quan đến phép thêm, xóa và sửa các bộ. Ngôn ngữ hỏi chia làm 2 loại chính: - Ngôn ngữ đại số (algebraic languages), trong đó các câu hỏi được biểu diễn bằng cách áp dụng các toán tử đặc biệt cho các quan hệ. - Ngôn ngữ tính toán tân từ (predicate calculus languages), trong đó các câu hỏi mô tả một tập các bộ cần biết bằng cách đặc tả một tân từ (predicate) mà các bộ phải thỏa mãn. Các ngôn ngữ hỏi trừu tượng này, tất nhiên khi cài đặt trong các HQTDL hiện tại không phải giống chính xác như miêu tả ở đây, nhưng chúng được dùng như một thước đo để đánh giá các hệ đó, vì chúng trưng ra một khả năng tối thiểu phải có ở bất kỳ một ngôn gnuwc hỏi nào được chấp nhận trên mô hình quan hệ. Trong chương 3 này, ta sẽ nói đến đại số quan hệ (relational algebra), phần nền cho loiaj ngôn ngữ đại số. II. MỘT SỐ KHÁI NIỆM 1. Đại số hệ a. Định nghĩa Đại số hệ là một cặp <M, F>, trong đó M là một tập được gọi là tập nền, F là một tập các phép toán trên M. Mỗi phép toán f F là một ánh xạ bộ phận: f: M n M và được gọi là phép toán n ngôi. b. Ví dụ Với F={+, -, *}, = <N, F> tạo thành một đại số hệ. 2. Đại số quan hệ Tập hợp các phép toán quan hệ đã xét, cùng với một CSDL cho trước, tạo thành một đại số hệ, gọi là đại số quan hệ. 3. Biểu thức quan hệ a. Định nghĩa Biểu thức quan hệ được xây dựng từ các quan hệ trong một CSDL cho trước và

2 các phép toán quan hệ. b. Thứ tự ưu tiên trong biểu thức quan hệ Thông thường, trong một biểu thức quan hệ, người ta coi các phép toán một ngôi có thứ tự ưu tiên cao hơn các phép toán hai ngôi. Ngoài ra, mỗi HQTDLcuj thể lại có những qui định riêng. Ví dụ, phép giao có thể được qui định có thứ tự ưu tiên cao hơn phép hội. Ví dụ: Tìm mã và tên các mặt hàng được nhập và xuất trong ngày 24/12/1997: MA_HANG, TEN_HG ( DVT= cái (HANG)) * ( MA_HANG ( NGAY= 24/12/1997 (HANG_NHAP) ) MA_HANG ( NGAY= 24/12/1997 (HANG_XUAT))) III. CÁC PHÉP TOÁN CƠ BẢN Trong đại số quan hệ, ta giả thiết các cột có thể không cần đặt tên, và quan tâm đến thứ tự các thuộc tính. Nếu dùng số thứ tự thuộc tính trong các biểu thức so sánh, để tránh nhầm lẫn, ta qui ước có dấu $ đứng trước số thứ tự. Ta cũng đã giả định mọi quan hệ đều hữu hạn. Ràng buộc về tính hữu hạn dẫn đến vài khó khăn trong đại số quan hệ và phép tính quan hệ. Chẳng hạn, không thể chấp nhận phép toán bù (complementation) vì R (tập các bộ không thuộc R) sẽ sinh ra một quan hệ vô hạn: không cách chi liệt kê được hết R, cho dù ngôn ngữ hỏi cho phép có một biểu thức như vậy. 1. Phép chọn (select operator, selection/ seïlection, restriction) a. Mục đích Phép chọn là phép tính để xây dựng một tập con gồm các bộ của quan hệ đã cho, thỏa biểu thức logic cho trước. b. Giả thiết - Cho quan hệ R trên tập thuộc tính U- ký hiệu R(U). - Cho biểu thức logic F phát biểu trên U, gồm có: i) Các tác tố (operands): là các hằng, tên hoặc các số thứ tự thuộc tính ii) Các phép so sánh số học: <,, >,, =, iii) Các phép logic: (hoặc), (và), (không). Nói cách khác, F là một tổ hợp gồm các phép so sánh các tác tố, nối nhau bằng các phép logic. F sẽ cho kết quả đúng hoặc sai tùy vào giá trị cụ thể của từng bộ. Ta nói bộ t thỏa mãn F- ký hiệu F(t) nếu thay hết mọi thuộc tính trong F bằng các giá trị cụ thể tương ứng của bộ t thì F sinh ra kết quả đúng. F được gọi là biểu thức chọn hoặc điều kiện chọn. c. Định nghĩa Phép chọn quan hệ R theo điều kiện F cho ta quan hệ P: P= R(F) = { t R F(t) } Ta cũng có thể dùng ký hiệu F(R) thay vì R(F).

3 a. Ví dụ Cho quan hệ: MON_HOC MA_MON TEN_MON SO_TIN_CHI CO_DE_AN 01 Cơ sở dữ liệu 5.f. 02 Cấu trúc dữ liệu 4.f. 03 Phân tích hệ thống 6.f. 04 Cấu trúc máy tính 4.t. Chọn ra các môn có 4 tín chỉ và có đề án cho sinh viên thực hiện. MON_D_A= MON_HOC (SO_ TIN_CHI =4 CO_DE_AN) Hoặc có thể viết: MON_D_A= $ 3=4 $4 (MON_HOC) MON_D_A MA_MON TEN_MON SO_TIN_CH CO_DE_AN I 04 Cấu trúc máy tính 4.t. đó. 2. Phép chiếu (projection) a. Mục đích Phép chiếu trên một quan hệ, thực chất là loại bỏ đi một số thuộc tính của quan hệ b. Giả thiết Cho quan hệ R(U) n ngôi: R=(A1, A2,..., An) và tập thuộc tính X U: Hoặc: Ai U X={ A i j } j=1,..,m ij=1,..., n c. Định nghĩa Phép chiếu quan hệ R trên X là tập hợp: R[X]={ t[x] t R } R[X]= { b 1 b 2...b m ( a 1 a 2...a n ) ( j=1...m) bj= a i j } Cũng có thể dùng ký hiệu R.X hoặc i1, i 2,... i m (R) thay cho R[X]. d. Ví dụ Dùng quan hệ trong ví dụ trên, cho biết mã và tên các môn học: MON_HOC_2= MON_HOC [MA_MON, TEN_MON] = $1, $2 (MON_HOC)

4 MON_HOC_2 MA_MON TEN_MON 01 Cơ sở dữ liệu 02 Cấu trúc dữ liệu 03 Phân tích hệ thống 04 Cấu trúc máy tính 3. Quan hệ tương thích (compatible relations) a. Định nghĩa Hai quan hệ được gọi là tương thích với nhau nếu chungs có cùng sơ đồ quan hệ. b. Ví dụ Hai quan hẹ MON_HOC và MON_D_A ở mục 1 là hai quan hệ tương thích. c. Ứng dụng Với các quan hệ tương thích, ta có thể định nghĩa các phép toán tập hợp như giao, hiệu và hợp. 4. Phép trừ (substraction, [set] difference) a. Định nghĩa Hiệu của hai quan hệ tương thích R(U) và S(U) là quan hệ P(U) gồm các bộ có trong R nhưng không có trong S. P= R S= { t t R t S } b. Ví dụ NHAN_ VIEN LANH_ DAO MA_NV HO_TEN CHUC_VU DON_VI MUC_LG 001 Lê Văn Sỹ GĐ BGĐ Ng Chí Thanh PGĐ BGĐ Châu Văn Liêm TP HCTH Ng An Ninh PP HCTH Phan Đình Phùng HCTH Ngô Gia Tự TV 290 MA_NV HO_TEN CHUC_V DON_VI MUC_LG U 001 Lê Văn Sỹ GĐ BGĐ Ng Chí Thanh PGĐ BGĐ Châu Văn Liêm TP HCTH Ng An Ninh PP HCTH 475

5 NHAN_VIEN là quan hệ chứa các bộ về tất các nhân viên trong cơ quan, còn LANH_DAO chỉ liên quan những lãnh đạo. Tìm các nhân viên quèn (không là lãnh đạo) trong cơ quan. NV_QUEN= NHAN_VIEN LANH_DAO NHAN_VIEN _QUEN MA_ HO_TEN CHUC_ DON_VI MUC_LG NV VU 005 Phan Đình Phùng HCTH Ngô Gia Tự TV Phép hội/ hợp (union) a. Định nghĩa Hợp của hai quan hệ tương thích R(U) và S(U) là quan hệ P(U) gồm các bộ thuộc ít nhất một trong hai quan hệ đã cho. P= R U S= { t t R t S } c. Ví dụ Trong cơ quan, có hai loại nhân viên: biên chế và hợp đồng. BIEN_ CHE MA_NV HO_TEN CHUC_VU DON_VI MUC_ LG 001 Lê Văn Sỹ GĐ BGĐ Ng Chí Thanh PGĐ BGĐ Châu Văn Liêm TP HCTH Ng An Ninh PP HCTH Phan Đình Phùng HCTH Ngô Gia Tự TV 290 HOP_ DONG MA_NV HO_TEN CHUC_VU DON_VI MUC_ LG 011 Lê Văn Tám BV Phạm Văn Đồng BV Ng Văn Linh ĐTTH Kim Đồng ĐTTH 310 Danh sách chung toàn bộ nhân viên của cơ quan là: NHAN_VIEN= BIEN_CHE HOP_DONG NHAN_VIEN MA_NV HO_TEN CHUC_VU DON_VI MUC_LG

6 001 Lê Văn Sỹ GĐ BGĐ Ng Chí Thanh PGĐ BGĐ Châu Văn Liêm TP HCTH Ng An Ninh PP HCTH Phan Đình HCTH 333 Phùng 006 Ngô Gia Tự TV Lê Văn Tám BV Phạm Văn Đồng BV Ng Văn Linh ĐTTH Kim Đồng ĐTTH Phép lấy tích Đề- các (Cartesian product/ produit cartésien) a. Giả thiết Cho quan hệ R(U) n ngôi có r bộ : R=(A1, A2,..., An) Và quan hệ S(V) m ngôi có s bộ: S=(B1, B2,..., Bm) Trong đó, U và V không giao nhau: U V = Ai U Bj V b. Định nghĩa Tích Đề-các của R và S là tập gồm (r.s) bộ, mỗi bộ có (n+m) thuộc tính, với n thuộc tính đầu có dạng của một u R và m thuộc tính sau có dạng của một bộ v S. Nói cách khác, mỗi bộ của R kết nối với mọi bộ của S. R x S= { <u,v> u R v S } c. Ví dụ DM_HANG MA_HANG TEN_HANG DVT A01 Dầu lửa lít A02 Xăng lít B01 Đường trắng kg B02 Đường vàng kg NV_BAN NGAY MA_NV 20/09/ /09/

7 DM= NV_BAN x DM_HANG DM NGAY MA_NV MA_HANG TEN_HANG DVT 20/09/ A01 Dầu lửa lít 20/09/ A02 Xăng lít 20/09/ B01 Đường trắng kg 20/09/ B02 Đường vàng kg 21/09/ A01 Dầu lửa lít 21/09/ A02 Xăng lít 21/09/ B01 Đường trắng kg 21/09/ B02 Đường vàng kg 7. Phép đặt tên lại biểu thức quan hệ a. Nhu cầu đặt tên lại Kết quả của các biểu thức quan hệ không có tên để ta có thể gọi đến chúng dễ dàng. Do đó, cần phải đặt tên cho chúng. Ta có thể sử dụng nhiều lần cùng một quan hệ trong một bieerut hwusc quan hệ (ví dụ: tích Đề-các R x R), neenc ó thể muốn đặt tên lại một trong các tác tố cùng tên để dễ dùng ở nhiều công đoạn khác nhau, hoặc để tránh lẫn lộn, hoặc để tránh lưu nó tỏng nhiều vùng nhớ khác nhau, mặc dù chỉ dùng một vùng lưu trữ cho quan hệ. Cần gán quan hệ kết quả trở lại vào quan hệ ban đầu. Ví dụ: P= P-1. Khi muốn thực hiện một trong các phép toán kết nối, phép chia, phép giao, phép hiệu, trong khi các thuộc tính liên quan ở các quan hệ lại khác tên nhau tuy cùng miền giá trị, ta có thể đổi tên thuộc tính cho một trong các quan hệ để có thể thực hiện được phép toán như ý muốn. Ví dụ R(A,C) muốn kết nối với S(B), hoặc chia cho S(B), thì ta phải đổi tên thuộc tính theo một trong hai cách sau: R (A, C B) Hoặc S (B C) b. Định nghĩa Dạng 1: Cho biểu thức quan hệ E, biểu thức: x (E) trả lại kết quả là biểu thức E dưới tên x. Dạng 2: Cho biểu thức quan hệ E có bậc n. Biểu thức: x (A1, A2,..., An) (E) trả lại kết quả là biểu thức E dưới tên x, và các thuộc tính được đặt tên lại là A 1, A 2,..., A n.

8 c. Ví dụ Cho sơ đồ quan hệ: NHAN_VIEN (MA_NV, HO_NV, TEN_NV, MUC_LG, PHONG, DON_VI) Tìm mức lương lớn nhất trong công ty. Như vậy, trước tiên, ta sẽ tìm ra một quan hệ tạm thời chứa các mức lương không phải là lớn nhất trong công ty, rồi sau đó sẽ thực hiện phép toán trừ giữa (NHAN_VIEN) và quan hệ tạm vừa tính được. Quan hệ tạm: MUC_LG ( NHAN_VIEN. MUC_LG<d.MUC_LG (NHAN_VIENx d (NHAN_VIEN))) Kết quả: MUC_LG (NHAN_VIEN) - MUC_LG ( NHAN_VIEN. MUC_LG<d.MUC_LG (NHAN_VIENx d (NHAN_VIEN))) III. CÁC PHÉP TOÁN KHÁC 1. Phép giao (intersection) MUC_LG a. Định nghĩa Giao của hai quan hệ tương thích R(U) và S(U) là quan hệ P(U) gồm các bộ thuộc về cả hai quan hệ đã cho: P= R S= { t t R t S } b. Ví dụ NHA_ HANG TEN DIA_CHI PHUONG QUAN Huy Hoàng 504 Điện biên phủ Tương Lai 229 Ng Chí Thanh 6 5 Ngon 25 Võ Thị Sáu 9 10 Lành 130 Trương Định Phạm Ngũ Lão 1 KHACH_ SAN TEN DIA_CHI PHUONG QUAN Viễn Đông 2 Lê Lợi Bến Nghé 1 Huy Hoàng 504 Điện biên phủ Ánh Hồng 151 Đặng Dung 2 PN Tương Lai 229 Ng Chí Thanh 6 5 Tìm các nơi vừa là khách sạn, vừa là nhà hàng.

9 NH_KS= KHACH_SAN NHA_HANG NH_KS TEN ÂIA_CHI PHUONG QUAN Huy Hoàng 504 Điện biên phủ Tương Lai 229 Ng Chí Thanh Phép chia (division) a. Giả thiết Cho hai quan hệ R(U) n ngôi và S(V) m ngôi, với V U và S. Đặt X=U-V. b. Định nghĩa Kết quả của phép chia quan hệ R cho S là một quan hệ gồm các bộ t có (n-m) thuộc tính, sao cho với mọi bộ v trong S, thì <t,v> là một bộ thuộc R. R S= { t=u[x] u R ( v S) (<t,v> R ) } c. Ví dụ c1) Cho quan hệ: DM NGAY MA_NV MA_HANG TEN_HANG DVT x 20/09/ A01 Dầu lửa lít 20/09/ A02 Xăng lít 20/09/ B01 Đường trắng kg 20/09/ B02 Đường vàng kg x 21/09/ A01 Dầu lửa lít 21/09/ A02 Xăng lít 21/09/ B01 Đường trắng kg 21/09/ B02 Đường vàng kg 22/09/ B01 Đường trắng kg 22/09/ B02 Đường vàng kg HANG MA_HANG TEN_HANG DVT A01 Dầu lửa lít A02 Xăng lít B01 Đường trắng kg B02 Đường vàng kg Tçm DM HANG DM HANG NGAY MA_NV 20/09/ /09/

10 c2) Cho quan hệ: CHUYEN MA_CH NGAY NOI_DI NOI_DEN SO_XE MA_TXE SO_HK 01 01/08 TP HCM Đà Lạt A A /08 TP HCM Phan Rang H B /08 TP HCM Cần Thơ A A /08 Cần Thơ TP HCM A A /08 Phan Rang Vĩnh long B I /08 Đà Lạt TP HCM A A /08 Đà Lạt Cần Thơ B I /08 Vĩnh long TP HCM C I1 15 * Câu hỏi: Tìm mã các tài xế có nơi đến ít ra là như tài xế có mã A3. * Giải: Danh sách nơi đến của tài xế A3: DS_ND= CHUYEN (MA_TXE='A3') [NOI_DEN] DS_ND NOI_DEN Cần Thơ TP HCM - Danh sách các nơi đến kèm theo các tài xế: TX_ND= CHUYEN [ NOI_DEN, MA_TXE ] TX_ND NOI_DEN MA_TXE Đà Lạt A1 Phan Rang B2 Cần Thơ A3 TP HCM A3 Vĩnh long I1 TP HCM A1 Cần Thơ I1 TP HCM I1 - Danh sách mã các tài xế có nơi đến ít ra là như tài xế có mã A3: DS_TX= TX_ND DS_ND DS_TX MA_TXE A3 I1

11 Ta thấy ngoài tài xế A3 có nơi đến là Cần Thơ và TP HCM, còn có tài xế I1 lái xe đến 3 nơi Vĩnh long, Cần Thơ và TP HCM (rộng hơn của A3). 3. Phép kết nối bình thường (join, inner join) a. Định nghĩa Gọi là một trong các phép so sánh số học (<,, >,, =, ). Cho hai quan hệ R(U) và S(V). Phép kết nối- giữa quan hệ R đối với thuộc tính A (A U) và quan hệ S đối với thuộc tính B (B V), được định nghĩa như sau: R S = { <u,v> u R v S u[a] v[b] } A B Phép kết nối này chỉ thực hiện được khi thực hiện được giữa A và B. Nếu không dựa trên phép so sánh, thì R S trở thành tích Đề-các của R và S. Nếu là phép so sánh "=", ta gọi đây là phép kết nối bằng (equijoin). Phép kết nối là phương tiện chủ yếu cho sự thông thương giữa các quan hệ. b. Ví dụ Cho hai quan hệ: GIAO_VIEN MA_GV HO_TEN SO_TIET_DA_DAY 01 Phạm Thúc Trung Phạm Gia Tiến Phạm Xuân Lạc Võ Văn Chín 260 MON_HOC MA_MON TEN_MON SO_DVHT CO_DE_AN 07 Cơ sở dữ liệu 5.F. 08 Cấu trúc dữ liệu 4.F. 09 Phân tích hệ thống 6.T. 10 Cấu trúc máy tính 4.T. * Câu hỏi: Biết rằng mỗi đơn vị học trình chiếm 15 tiết. Hãy lập bảng dự kiến phân công giảng dạy thêm các môn trong danh sách đã cho, sao cho nếu các giáo viên có dạy thêm thì cũng không vượt quá số giờ chuẩn (280 tiết). * Giải: - Trước tiên, ta nhận xét bảng phân công chỉ cần mã giáo viên, số giờ đã dạy, mã môn học và số đơn vị học trình. Như vậy, nó sẽ là kết quả của phép kết nối giữa hai quan hệ có sơ đồ sau: GIAO_VIEN_2 (MA_GV, SO_TIET_DA_DAY) MON_HOC_2 (MA_MON, SO_DVHT) Với điều kiện kết nối là : SO_TIET_DA_DAY + SO_DVHT * 15<= 280

12 hay: vì: SO_TIET_DA_DAY <= SO_DVHT * 15 - Như vậy, ta phải thwujc hiện các phép chiếu trên GIAO_VIEN vaì MON_HOC, GIAO_VIEN_2 = GIAO_VIEN [ MA_GV, SO_TIET_ÂA_DAY ] MON_HOC_2 = MON_HOC [ MA_MON, SO_DVHT ] GIAO_VIEN_2 MA_GV SO_TIET_ÂA_DAY MON_HOC_2 MA_MON SO_DVHT Sau đó, sẽ thực hiện phép kết nối: PH_CONG_DAY= GIAO_VIEN_2 MON_HOC_2 SO_TIET_DA_DAY <= SO_DVHT *15 PH_CONG_DAY MA_GV SO_TIET_DA_DAY MA_MON SO_DVHT Phép kết nối tự nhiên (natural join) a. Định nghĩa Trường hợp kết nối bằng được thực hiện tại thuộc tính cùng tên của hai quan hệ, và một trong hai thuộc tính đó bị loại bỏ qua phép chiếu, thì phép kết nối được gọi là phép kết nối tự nhiên, và sử dụng ký hiệu "*". b. Ví dụ Đã có một lịch thi và bảng phân công chính thức, hãy phân công dự kiến cho các giáo viên gác môn mình sắp dạy hoặc đã dạy.

13 LICH_THI MA_MON NGAY PHONG 01 12/07/1994 B 02 14/07/1994 B 03 16/07/1994 B 04 17/07/1994 C 05 12/07/1994 C 06 14/07/1994 C 07 16/07/1994 D 08 17/07/1994 E 09 12/07/1994 D 10 14/07/1994 E PH_CONG_CT MA_GV MA_MON Ta thực hiện một phép kết nối tự nhiên như sau: PH_CONG_GAC= LICH_THI * PH_CONG_CT PH_CONG_GAC MA_MON NGAY PHONG MA_GV 01 12/07/1994 B /07/1994 B /07/1994 B /07/1994 C /07/1994 C /07/1994 C /07/1994 D /07/1994 E /07/1994 D /07/1994 E Phép kết nối mở rộng (outer join) a. Định nghĩa Phép toán này cho phép làm việc với thông tin bị thiếu, tức là vẫn thực hiện phép

14 kết nối tự nhiên trên các thuộc tính trống của thuộc tính dùng để kết nối. Như vậy sẽ tránh làm mất thông tin như trong trường hợp kết nối bình thường. Có 3 loại kết nối mở rộng: mở rộng trái, mở rộng phải và mở rộng toàn bộ. Loại Ký hiệu Định nghĩa Mở rộng trái Kết quả = P ( R S ), với: R S (left outer P = {<u, v> u R, u không tương ứng với bộ nào của S join) & v S, các trị của các thuộc tính trong v đều được gán trị trống } Mở rộng Kết quả = Q ( R S ), với: phải R S Q = {<u, v> v S, v không tương ứng với bộ nào của R (right outer & u R, các trị của các thuộc tính trong u đều được gán join ) trị trống } Mở rộng Kết quả = P Q ( R S ) toàn bộ (full Với P và Q được định nghĩa như trên. outer join) a. Ví dụ Cho hai quan hệ: NHAN_VIEN MA_NV HO_NV TEN_NV PHAI PHONG A12 Lê Trình Nam H.chánh A13 Phan Đán Nam K.nghiệm A14 Trần Mai Nữ K.nghiệm A15 Nguyễn Minh Nam Thiết bị VO_CHG_NV MA_NV HO_NV TEN_NV A16 Tống Đào A13 Lê Lan Anh A14 Phạm Tuấn A17 Lê Trang Gọi: TAM = TRAI = PHAI = HAI_BEN = NHAN_VIEN NHAN_VIEN NHAN_VIEN NHAN_VIEN VO_CHG_NV VO_CHG_NV VO_CHG_NV VO_CHG_NV TAM MA_NV HO_NV TEN_NV PHAI PHONG HO_VC TEN_VC

15 A13 Phan Đán Nam K.nghiệm Lê Lan Anh A14 Trần Mai Nữ K.nghiệm Phạm Tuấn TRAI MA_NV HO_NV TEN_NV PHAI PHONG HO_VC TEN_VC A12 Lê Trình Nam H.chánh A13 Phan Đán Nam K.nghiệm Lê Lan Anh A14 Trần Mai Nữ K.nghiệm Phạm Tuấn A15 Nguyễn Minh Nam Thiết bị PHAI MA_NV HO_NV TEN_NV PHAI PHONG HO_VC TEN_VC A16 Tống Đào A13 Phan Đán Nam K.nghiệm Lê Lan Anh A14 Trần Mai Nữ K.nghiệm Phạm Tuấn A17 Lê Trang HAI_ BEN MA_NV HO_NV TEN_NV PHAI PHONG HO_VC TEN_VC A12 Lê Trình Nam H.chánh A13 Phan Đán Nam K.nghiệm Lê Lan Anh A14 Trần Mai Nữ K.nghiệm Phạm Tuấn A15 Nguyễn Minh Nam Thiết bị A16 Tống Đào A17 Lê Trang 6. Các hàm kết tập (aggregate functions) a. Các hàm kết tập bình thường Định nghĩa: Các hàm kết tập bình thường là các hàm thực hiện trên một tập các giá trị và trả lại kết quả là giá trị duy nhất. Tập hợp được xét có thể có nhiều lần xuất hiện cho một giá trị và được gọi là tập bội (multiset); hoặc nó cũng có thể chỉ có một lần xuất hiện cho một giá trị, đó là tập hợp ta thường gặp (set). Nếu xét trên tập bội, nhưng ta muốn loại trừ các trị trùng nhau, thì phải thêm từ khóa distinct vào sau tên hàm và dấu gạch ngang. Danh sách hàm: Tên hàm sum avg Ý nghĩa Tính tổng của một tập giá trị số Tính trung bình của một tập giá trị số

16 count max min Đếm số giá trị của một tập hợp Tính giá trị lớn nhất của một tập giá trị Tính giá trị nhỏ nhất của một tập giá trị Ví dụ: Dùng quan hệ GIAO_VIEN mà ta đã biết: GIAO_VIEN MA_GV HO_TEN SO_TIET_DA_DAY 01 Phạm Thúc Trung Phạm Gia Tiến Phạm Xuân Lạc Võ Văn Chín 260 Câu hỏi Hàm Kết quả Tổng số tiết các giáo viên đã dạy sum SO_TIET_DA_DAY (GIAO_VIEN) 890 Trung bình số tiết đã dạy/ giáo viên avg SO_TIET_DA_DAY (GIAO_VIEN) Tổng số giáo viên đã dạy count (GIAO_VIEN) 4 Số tiết đã dạy nhiều nhất / giáo viên max SO_TIET_DA_DAY (GIAO_VIEN) 280 Số tiết đã dạy ít nhất / giáo viên min SO_TIET_DA_DAY (GIAO_VIEN) 150 Ví dụ: LICH_THI MA_MON NGAY SO_TS PHONG 01 12/07/ B 02 14/07/ B 03 16/07/ B 04 17/07/ C 05 12/07/ C 06 14/07/ C 07 16/07/ D 08 17/07/ E 09 12/07/ D 10 14/07/ E Câu hỏi Hàm Kết quả Số môn có trong lịch thi count (LËCH_THI) 10 Số phòng được xếp cho thi count-distinct PHONG (LËCH_THI) 4 Tổng số thí sinh đi thi sum SÄO_TS (LËCH_THI) 370 Ngày thi trễ nhất max-distinct NGAY (LËCH_THI) 17/07/1994 Ngày thi sớm nhất min-distinct NGAY (LËCH_THI) 12/07/1994 b. Hàm kết tập trên nhóm các bộ Nhu cầu:

17 Có những trường hợp ta muốn áp dụng hàm kết tập không phải chỉ trong một tập các bộ thôi, mà trên nhiều nhóm, mỗi nhóm là một tập các bộ. Định nghĩa: Gọi E là một biểu thức đại số quan hệ bất kỳ. G 1, G 2,..., G m tạo thành danh sách các thuộc tính mà việc chia nhóm dựa trên đó. Với mỗi i=1,..., n, mỗi F i là một hàm kết tập và mỗi A i là một tên thuộc tính. Hàm kết tập trên nhóm có dạng: G1, G2,..., Gm Ģ F1 A1, F2A2,..., FnAn (E) Các bộ trong biểu thức E sẽ được chia thành các nhóm sao cho: + Tất cả các bộ trong cùng một nhóm sẽ có cùng giá trị trên G 1, G 2,..., G m. + Các bộ ở các nhóm khác nhau sẽ có trị khác nhau trên G 1, G 2,..., G m. Như vậy, các nhóm có thể được xác định bằng giá trị của các thuộc tính G 1, G 2,..., G m. Đối với mỗi nhóm (g 1, g 2,..., g m ), kết quả sẽ có một bộ (g 1, g 2,..., g m, a 1, a 2,..., a n ) Trong đó, với mỗi i, a i là kết quả của việc áp dụng hàm F i trên tập bội các trị của A i trong nhóm. Ví dụ 1 Dùng quan hệ LICH_THI ở trên. Câu hỏi Hàm Kết quả Số môn có trong lịch thi/ phòng Tổng số thí sinh đi thi/ ngày Ngày thi trễ nhất / phòng Ngày thi sớm nhất / phòng PHONG Ģ count MA_MON (LICH_THI) NGAY Ģ sum SO_TS (LICH_THI) PHONG Ģ max NGAY (LICH_THI) PHONG G min NGAY (LICH_THI) PHÒNG B 3 PHÒNG C 3 PHÒNG D 2 PHÒNG E 2 12/07/ /07/ /07/ /07/ PHÒNG B 16/07/1994 PHÒNG C 17/07/1994 PHÒNG D 16/07/1994 PHÒNG E 17/07/1994 PHÒNG B 12/07/1994 PHÒNG C 12/07/1994 PHÒNG D 12/07/1994 PHÒNG E 14/07/1994 Ví dụ 2 GVIEN (MS_GV, HO, TEN, MA_KHOA, CHUC_VU, HOC_VI, CHUC DANH) GTRINH (MS_GT, TEN, SO_TC, SO_TRG, TH_DIEM_P_HANH) VIET_GT (MS_GT, MS_GV, LA_TG_CHINH)

18 KHOA (MA_KHOA, TEN_KHOA) 1. Tìm số giáo trình mà hiệu trưởng Nguyễn Anh Tuấn đã phát hành từ năm 1998 đến Tìm ngày phát hành sớm nhất của giáo trình Mạng máy tính viết bởi giáo viên Phan Thượng Cang. 3. Tìm số giáo trình mà mỗi giáo viên ở Khoa Nông nghiệp đã viết. 4. Tìm số trang dày nhất trong số các giáo trình mang tên Dinh dưỡng cho cá. 5. Tìm thời điểm phát hành gần nhất trong số các giáo trình viết bởi mỗi giáo viên. 6. Tìm tổng số tín chỉ mà mỗi giáo viên Khoa Khoa học đã viết giáo trình. 7. Tìm tổng số giáo viên có học vị thạc sĩ hoặc tiến sĩ ở mỗi khoa đã viết giáo trình trong khoảng thời gian từ năm 2004 đến nay. 8. Tìm trung bình số tín chỉ của các giáo trình viết bởi các giáo viên có chức vụ Trưởng bộ môn. 9. Tìm tên các giáo trình mà thạc sĩ Lê Văn Lâm đã viết. 10. Tìm họ tên và tên khoa của giáo viên viết được nhiều giáo trình nhất từ năm 2007 đến nay. 11. Tìm mã và tên của các quyển giáo trình có số tín chỉ nhiều nhất Khoa CNTT- TT. 12. Tìm tổng số giáo trình đã viết trong khoa có nhiều giáo viên nhất. 13. Tìm tên các khoa có trung bình số giáo trình viết bởi mỗi giáo viên lớn hơn 3. Ví dụ 3 THI_SINH (MS_TS, HO, TEN, NAM_SINH, TRĐO_VH, TINH) GIAM_KHAO (MS_GK, PHAI, HO, TEN, NAM_SINH, NGHE, NOI_CGTAC) SO_THÍCH (MS_ST, DGIAI) THÍCH (MS_TS, MS_ST) CHAM (VONG, MS_GK, MS_TS, DIEM) 14. Tìm số thí sinh có sở thích về thời trang. 15. Tìm sở thích có nhiều thí sinh chọn nhất. 16. Tìm mã số và họ tên các thí sinh lọt vào vòng bán kết (giả sử đạt trung bình trên 9 điểm). 17. Tìm họ tên các vị giám khảo đã cho ở vòng 2 thí sinh Huỳnh Thị Hồng Loan điểm bằng với điểm cao nhất. 18. Tìm thí sinh thích đi du lịch nhưng không thích nấu ăn. 19. Tìm những thí sinh có nhiều sở thích nhất. 20. Tìm vị giám khảo ở vòng chung kết vừa cho điểm cao nhất cho thí sinh Nguyễn Thùy Lâm, vừa cho điểm cao nhất cho thí sinh Mai Phương Thúy. 21. Tìm vị giám khảo cao tuổi nhất và có số vòng chấm điểm nhiều nhất.