Các thao tác cơ bản xử lý dữ liệu trong mô hình quan hệ được mô tả thông qua các phép toán. Các phép toán của mô hình quan hệ có thể phân thành hai loại: các phép toán cập nhật và các phép toán khai thác dữ liệu. Các phép toán khai thác dữ liệu với đầu vào là các quan hệ và đầu ra là các quan hệ kết quả được phát triển theo lý thuyết đại số quan hệ. Các phép toán cập nhật được sử dụng để tạo ra một quan hệ đúng đắn. Các phép toán đại số quan hệ được sử dụng để đặc tả các phép khai thác thông tin ra
Trang 1BÀI 3: ĐẠI SỐ QUAN HỆ
Các thao tác cơ bản xử lý dữ liệu trong mô hình quan hệ được mô tả thông qua các phép toán Các phép toán của mô hình quan hệ có thể phân thành hai loại: các phép toán cập nhật và các phép toán khai thác dữ liệu Các phép toán khai thác dữ liệu với đầu vào
là các quan hệ và đầu ra là các quan hệ kết quả được phát triển theo lý thuyết đại số quan
hệ Các phép toán cập nhật được sử dụng để tạo ra một quan hệ đúng đắn Các phép toán đại số quan hệ được sử dụng để đặc tả các phép khai thác thông tin ra
I CÁC PHÉP TOÁN CẬP NHẬT
1.1 Phép chèn (Insert)
• Cho phép bổ sung một bộ vào quan hệ R
• Biểu diễn: INSERT(r; A1 = d1, A2 = d2, , An = dn) trong đó:
o r là quan hệ cần chèn
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1, , n
Nếu thứ tự các trường là cố định, có thể biểu diễn phép chèn dưới dạng không tường minh INSERT(r; d1,d2, , dn)
Ví dụ 4.1: Chèn thêm một bộ t4=(‘004’, ‘Hoàng’,1969, ‘Hà nội’,235) vào quan hệ EMPLOYEE(SSN, Name, BDate, Address, Salary) ta có thể viết tường minh như sau:
INSERT(EMPLOYEE; SSN=‘004’, Name=‘Hoàng’, BDate=1969, Address= ‘Hà nội’, Salary=235)
Hoặc viết thu gọn như sau:
INSERT(EMPLOYEE; ‘004’, ‘Hoàng’, 1969, ‘Hà nội’, 235)
Lưu ý khi viết thu gọn thì trật tự dữ liệu đưa vào phải tương ứng với các trường trong bảng
Chú ý: Kết quả của phép chèn có thể gây ra một số sai sót là:
- Bộ mới được thêm không phù hợp với lược đồ quan hệ cho trước
- Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính đó
- Giá trị khoá của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ
1.2 Phép xóa (Delete)
• Là phép xoá một bộ ra khỏi một quan hệ cho trước
• Biểu diễn: DEL(r; A1 = d1, A2 = d2, , An = dn) hay DEL(r, d1, d2, , dn) trong đó:
o r là quan hệ cần xóa
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1, , n
Trang 2Nếu K=(E1, E2, , Em) là khoá thì có thể viết:
DEL(r; E1 = e1, E2 = e2, , Em = em) trong đó:
o r là quan hệ cần xóa
o Ei là thuộc tính khóa
o ei là một giá trị cụ thể, ei thuộc dom(Ei), với i = 1, , n
Ví dụ 4.2: Để xoá bộ t1 ra khỏi quan hệ r, ta có thể viết tường minh:
DEL(EMPLOYEE; SSN=‘004’, Name=‘Hoàng’, BDate=1969, Address=‘Hànội’, Salary=235)
Cần loại bỏ một nhân viên trong quan hệ EMPLOYEE mà biết giá trị khóa SSN là
‘004’ thì chỉ cần viết: DEL(EMPLOYEE; SSN= ‘004’)
Chú ý: Phép xóa có thể vi phạm ràng buộc dữ liệu
- Bộ dữ liệu cần xóa có ràng buộc dữ liệu với các bộ ở bảng khác
1.3 Phép cập nhật (UPDATE)
• Là phép dùng để sửa đổi một số giá trị nào đó tại một số thuộc tính
• Biểu diễn:
• UPD (r; A1 = d1, A2 = d2, , An=dn; B1 = b1, B2 = b2, , Bk = bk)
trong đó:
o r là quan hệ cần cập nhật
o Ai là thuộc tính
o di là một giá trị cụ thể, di thuộc dom(Ai), với i = 1, , n
o {B1, B2, , Bk} là tập các thuộc tính mà tại đó các giá trị của bộ cần thay đổi {B1, B2, , Bk} ứng với tập thuộc tính {A1, A2, , An}
Hay UPD(r; E1 = e1, E2 = e2, , Em = e; B1 = b1, B2 = b2, , Bk = bk) với K=(E1,
E2, , Em) là khoá
Ví dụ 4.3: Để thay đổi tên nhân viên có SSN= ‘003’ trong quan hệ EMPLOYEE
thành Nguyễn Thanh Mai ta có thể viết:
UPD (EMPLOYEE; SSN= ‘003’; Name= ‘Nguyễn Thanh Mai’)
Chú ý: Phép sửa đổi có thể vi phạm ràng buộc khi:
- Sửa thuộc tính khóa chính, khóa ngoại
- Sửa thuộc tính thông thường: miền giá trị, kiểu dữ liệu,
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
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:
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}
Trang 4Ví dụ 4.6: Cho
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:
Kết quả phép trừ 2 quan hệ là:
r - s ( A, B , C ) a2 b2 c2
Ví dụ 4.9:
Trang 5Kế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à
Trang 6mộ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:
σF1
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)
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ệ
Trang 7tham 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
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*s =ΠABCDE( r |><| s)
C=C
2.8 Phép chia - DIVISION
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:
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 đó
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)
III CÁC TÍNH CHẤT CỦA CÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ
3.1 Tính chất giao hoán
Các phép toán hợp, giao, kết nối là các phép toán có tính chất giao hoán
Với mọi quan hệ R1, R2 ta có:
3.2 Tính chất kết hợp:
Các phép toán hợp, giao, kết nối, tích Đề các là các phép toán có tính chất kết hợp Với mọi quan hệ R1, R2, R3 ta có:
3.3 Tính chất tích lũy đẳng:
Các phép hợp, giao, kết nối trong đại số quan hệ là các phép toán có tính chất tích lũy đẳng Với mọi quan hệ R trên tập thuộc tính U, ta có:
4.3.4 Một số tính chất khác:
Cho R là quan hệ bất kì trên tập U và S là quan hệ bất kì trên tập Y, khi đó:
Trang 10σF1(R) ∪ σF2(R)= σF1 or F2(R)
σF1(R) ∩ σF2(R)= σF1 and F2(R)
σF1(R) - σF2(R)= σF1 and (not F2)(R)
IV TRUY VẤN DỮ LIỆU TRONG ĐẠI SỐ QUAN HỆ
Từ các phép toán đại số quan hệ vừa trình bày, người ta có thể viết các truy vấn dữ liệu trên các quan hệ Một câu lệnh truy vấn dữ liệu có thể biểu diễn dưới dạng biểu thức đại số quan hệ hoặc biểu diễn bằng một cây phép toán quan hệ
Cho Lược đồ Cơ sở dữ liệu của bài toán quản lý Công ty gồm các quan hệ:
1 ĐƠNVỊ(TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu )
2 ĐƠNVỊ_ĐỊAĐIỂM(MãsốĐV, ĐịađiểmĐV)
3 DỰÁN(TênDA, MãsốDA, ĐịađiểmDA, Tgbắtđầu, MãsốĐV)
4 NHÂNVIÊN(Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính, HSL, MãsốĐV)
5 NHÂNVIÊN_NGOẠINGỮ (MãsốNV, Ngoạingữ)
6 THÂNNHÂN(MãsốNV, Tên, Giớitính, Ngàysinh, Quan hệ)
7 NHÂNVIÊN_DỰÁN(MãsốNV, MãsốDA, Sốgiờ)
4.1 Biểu thức quan hệ
Ví dụ 4.17: Đưa ra Họ đệm, Tên và địa chỉ của tất cả các nhân viên làm việc cho đơn vị có tên là “Nghiên cứu”: (Các quan hệ TG1, TG2 là các kết quả trung gian)
- Chọn đơn vị có tên nghiên cứu, quan hệ kết quả là TG1
TG1 ← σTen= “Nghiêncứu” (ĐƠNVỊ)
- Nối quan hệ TG1 với quan hệ Nhân viên, quan hệ kết quả là TG2
TG2 ← (TG1 ∗ NHÂNVIÊN)
- Quan hệ KETQUA là phép chiếu các thuộc tính Họ đêm, Tên, Địa chỉ trên quan hệ TG2
KETQUA ← πHọđệm, Tên, Địachỉ(TG2)
Ví dụ 4.18: Với mỗi dự án đặt tại Hà nội, hãy liệt kê MãsốDA, TênĐV, Tên, Địachỉ, Ngàysinh của người quản lý đơn vị
- Chọn ra các dự án có địa điểm đặt tại Hà nội, quan hệ kết quả là TG1
Trang 11TG1 ← σDiadiemDA=”Hanoi”(DỰÁN)
- Nối quan hệ TG1 với quan hệ Đơn vị, quan hệ kết quả là TG2
TG2 ← (TG1 ∗ ĐƠNVỊ)
- Nối quan hệ TG2 với quan hệ Nhân viên, quan hệ kết quả là TG3
TG3 ← (TG2 * NHÂNVIÊN)
- Quan hệ Kết quả là phép chiếu trên các thuộc tính cần hiển thị trên quan hệ TG3
KẾTQUẢ ← πMãsốDA, TênĐV, Họđệm,Địachỉ, Ngàysinh(TG3)
Ví dụ 4.19: Hãy tìm tên của các nhân viên làm việc trên tất cả các dự án do đơn vị
có mã số = 5 kiểm soát
- Chọn ra các dự án do đơn vị số 5 kiểm soát và thực hiện chiếu lấy ra thuộc tính Mã số DA, quan hệ kết quả là TG1
TG1 ← πMãsốDA (σMã sốDV = 5 (DỰÁN))
- Chiếu lấy ra các thuộc tính Mã số NV, Mã số DA trên quan hệ Nhân viên –
Dự án, quan hệ kết quả là TG2
TG2 ← πMãsốNV, MãsốDA (NHÂNVIÊN_DỰÁN)
- Thực hiện phép chia hai quan hệ TG2 cho TG1 trên thuộc tính chung Mã số
DA, quan hệ kết quả là TG3
TG3 ← TG2 ÷ TG1
- Nối tự nhiên hai quan hệ TG3 và Nhân viên sau đó thực hiện phép chiếu các thuộc tính Họ đệm và tên để thu được kết quả cần tìm
KETQUA ← πHọđệm, Tên(TG3 * NHÂNVIÊN)
4.2 Cây đại số quan hệ
Ví dụ: Đưa ra Họ đệm, Tên và địa chỉ của tất cả các nhân viên làm việc cho đơn vị
có tên là “Nghiên cứu”, ta có cây biểu thức quan hệ như sau:
Trang 12V TỐI ƯU HÓA CÂU HỎI
Tối ưu hóa câu hỏi là việc lựa chọn phương pháp xử lý sao cho khi thực hiện câu truy vấn sẽ đạt hiệu quả cao nhất, tối ưu về thời gian truy xuất thông tin và tối ưu về không gian lưu trữ nhưng vẫn đảm bảo tính độc lập và toàn vẹn dữ liệu
Mỗi câu hỏi truy vấn sẽ được biểu diễn thông qua các phép toán đại số quan hệ, kết quả của các phép toán đó sẽ là một quan hệ chứa các bộ và các thuộc tính có thể lấy
từ nhiều quan hệ khác nhau Vì vậy khi viết các câu hỏi cần cân nhắc lựa chọn các phép toán sao cho chi phí thực hiện thấp nhất mà hiệu quả cao nhất
Khi làm việc với những bài toán mà có khối lượng lưu trữ dữ liệu lớn thì việc phải tối ưu hóa câu hỏi trong truy xuất và tìm kiếm dữ liệu rất quan trọng nhằm nâng cao hiệu quả làm việc Có nhiều kĩ thuật để tối ưu hóa câu hỏi song chúng ta nghiên cứu về phương pháp phân rã câu hỏi dựa trên biểu thức đại số quan hệ
Trở lại với ví dụ về cơ sở dữ liệu quản lý công ty ta có các quan hệ:
1 ĐƠNVỊ(TênĐV, MãsốĐV, MãNVQL, Ngàybắtđầu )
2 NHÂNVIÊN(Họđệm,Tên, MãsốNV, Ngàysinh, Địachỉ, Giớitính, HSL, MãsốĐV)
πHọđệm, Tên, Địa chỉ (σTênDV =’Nghiên
cứu’(Đơnvị*Nhân viên))
*
σTênDV =’Nghiên cứu’
πHọđệm, Tên