Các phép tính trên cơ sở dữliệu quan hệ

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 1 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội (Trang 34)

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 tR hoặc tS.

Biểu diễn hình thức phép hợp có dạng: RS = {t/tR hoặc tS}

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/tR và tS}

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 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 a2 b2 c2 a2 b1 c2 R A B C S A B C RS 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/tR và tS} 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]/tR}

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) = {tR | 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 a b c d

(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 AB S = {t | t R 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ộ tR 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 | t R 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 ?

Một phần của tài liệu Giáo trình Cơ sở dữ liệu (Nghề: Kỹ thuật sửa chữa, lắp ráp máy tính - Cao đẳng): Phần 1 - Trường CĐ nghề Việt Nam - Hàn Quốc thành phố Hà Nội (Trang 34)