CHƯƠNG 2. MÔ HÌNH DỮ LIỆU QUAN HỆ
2.3. C ÁC PHÉP TOÁN ĐẠI SỐ QUAN HỆ
2.3.2. Các thao tác cơ sở trên các quan hệ
a. Phép chọn (Selection)
Định nghĩa 2.16. Phép chọn là phép toán đại số quan hệ được sử dụng để chọn một tập hợp các bộ thỏa mãn điều kiện chọn từ một quan hệ.
Ta có thể xem phép chọn như một bộ lọc, nó chỉ giữ lại các bộ thỏa mãn điều kiện đặt ra. Quan hệ kết quả của phép chọn có cùng thuộc tính như R.
Phép chọn được ký hiệu là: <điều kiện chọn>(R), trong đó
• được dùng để ký hiệu phép chọn
• <điều kiện chọn> là một biểu thức lôgic.
Biểu thức lôgic chỉ ra trong <điều kiện chọn> được tạo ra nên từ một số hạng mục có dạng: <tên thuộc tính><phép so sánh><giá trị hằng>
hoặc <tên thuộc tính><phép so sánh><tên thuộc tính>, trong đó
<tên thuộc tính> là tên của một thuộc tính trong R,
<phép so sánh> là một trong các phép so sánh {<, <=, =, >, >=, ≠},
<giá trị hằng> là một giá trị hằng từ miền giá trị của thuộc tính.
Các hạng mục có thể được nối với nhau bằng các phép toán logic và (˄), hoặc (˅), phủ định (ơ) để tạo ra một điều kiện chung.
Ví dụ 2.19.
Chọn các sinh viên có giới tính Nam từ quan hệ SINH_VIEN
GioiTinh= “Nam” (SINH_VIEN)
Chọn sinh viên Nam và sinh năm 1998 từ quan hệ SINH_VIEN
GioiTinh= “Nam” NamSinh=1998 (SINH_VIEN)
Chọn sinh viên quê ở “Thanh Hoá” hoặc “Nghệ An” từ quan hệ SINH_VIEN
QueQuan= “Thanh Hoá” ˅ QueQuan= “Nghệ An” (SINH_VIEN)
Chọn sinh viên quê ở Thanh Hoá hoặc Giới tính Nữ từ quan hệ SINH_VIEN
QueQuan= “Thanh Hoá” ˅ GioiTinh= “Nữ” (SINH_VIEN)
Lưu ý: các phép toán so sánh trong tập hợp {<, =, >, , , ≠} áp dụng cho các thuộc tính có miền giá trị là các giá trị có thứ tự (ví dụ: miền giá trị số). Miền giá trị của dãy ký tự được xem như có thứ tự dựa trên việc so sánh các dãy ký tự. Nếu miền giá trị của một thuộc tính là một tập hợp các giá trị không có thứ tự thì chỉ có các phép tính so sánh trong tập hợp {=, ≠} là có thể áp dụng được. Ngoài ra, có thể còn các phép so sánh bổ sung, chẳng hạn như “là dãy con của…” hoặc “trong khoảng từ … đến …”.
Phép chọn là một phép toán có tính chất giao hoán, nghĩa là:
<Điều kiện 1>(<Điều kiện 2>(R)) = <Điều kiện 2>(<Điều kiện 1>(R))
Ví dụ 2.20. Chọn sinh viên Nam và sinh năm 1998 từ quan hệ SINH_VIEN
54
GioiTinh= “Nam”(NamSinh=1998 (SINH_VIEN))= NamSinh=1998(GioiTinh= “Nam”(SINH_VIEN)) Hơn nữa, ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn giản bằng cách sử dụng phép toán ˄.
<Điều kiện 1>(<Điều kiện 2>(R)) = <Điều kiện 2> ˄ <Điều kiện 1>(R)
Ví dụ 2.21. Chọn sinh viên Nam và sinh năm 1998 từ quan hệ SINH_VIEN
GioiTinh= “Nam”(NamSinh=1998 (SINH_VIEN))= GioiTinh=“Nam” NamSinh=1998 (SINH_VIEN) b. Phép chiếu (Projection)
Nếu coi một quan hệ như một bảng thì
• phép chọn chọn một số hàng của bảng thỏa mãn điều kiện chọn
• phép chiếu là phép toán chọn một số cột của bảng.
Định nghĩa 2.17. Phép chiếu được ký hiệu là: <danh sách các thuộc tính>(R) trong đó
• là ký hiệu dùng để biểu diễn phép chiếu,
• <danh sách các thuộc tính> là một danh sách con các thuộc tính
Kết quả của phép chiếu là một quan hệ chỉ có các thuộc tính nằm trong <danh sách các thuộc tính> và có cùng thứ tự như thứ tự của chúng trong danh sách. Như vậy, cấp của quan hệ kết quả là số các thuộc tính có trong <danh sách các thuộc tính>.
Nếu <danh sách các thuộc tính> chỉ bao gồm các thuộc tính không phải thuộc tính khóa của R thì quan hệ kết quả có thể có những bộ trùng nhau. Phép chiếu loại bỏ mọi bộ trùng lặp, và như vậy, kết quả của phép chiếu là một tập hợp các bộ và là một quan hệ đúng đắn.
Ví dụ 2.22. Cho quan hệ SINH_VIEN
MaSV HoTenSV NamSinh GioiTinh QueQuan MaLop 1361030001 Lê Đình Bách 1996 Nam Thanh Hoá 136103A 1561030007 Lê Thị Hoa 1998 Nữ Nam Định 156103A
Phép chiếu MaSV, HoTenSV, GioiTinh(SINH_VIEN) cho kết quả là một quan hệ có các thuộc tính MaSV, HoTenSV, GioiTinh. Bảng kết quả phép chiếu sau:
MaSV HoTenSV GioiTinh 1361030001 Lê Đình Bách Nam 1561030007 Lê Thị Hoa Nữ
Số các bộ trong quan hệ kết quả từ một phép chiếu luôn luôn nhỏ hơn hoặc bằng số các bộ trong R. Nếu danh sách chiếu là một siêu khóa của R (nghĩa là nó chứa một khóa nào đó của R) thì quan hệ kết quả có cùng một số bộ như R.
Ngoài ra, phép chiếu có tính chất sau:
<Danh sách 1>(<Danh sách 2>(R)) = <Danh sách 1>(R) với <Danh sách 1><Danh sách 2>
Phép chiếu không có tính giao hoán.
Ví dụ 2.23. Kết hợp của phép chiếu và phép chọn
55 Cho quan hệ SINH_VIEN
MaSV HoTenSV NamSinh GioiTinh QueQuan MaLop 1361030001 Lê Đình Bách 1996 Nam Thanh Hoá 136103A 1561030007 Lê Thị Hoa 1998 Nữ Nam Định 156103A
Hãy đưa ra danh sách các sinh viên Nam, sinh năm 1998. Danh sách gồm các thuộc tính: Mã sinh viên, họ tên sinh viên, quê quán.
MaSV, HoTenSV, QueQuan(GioiTinh=“Nữ” NamSinh=1998 (SINH_VIEN)) Kết quả được mô tả trong bảng
MaSV HoTenSV QueQuan 1561030007 Lê Thị Hoa Nam Định c. Phép kết nối (Join)
Định nghĩa 2.18. Giả sử có 2 quan hệ R (A1, A2, ..., An) và S (B1, B2, ..., Bm).
t = (a1, a2, ..., an) là một bộ giá trị của R và u = (b1, b2, ..., bm) là một bộ giá trị của S. Gọi v là bộ ghép nối u vào t (hay bộ giá trị t và u được “xếp cạnh nhau” để tạo thành bộ giá trị mới v) được định nghĩa như sau:
v = (t, u) = (a1, a2, ..., an, b1, b2, ..., bm).
A ϵ R+ và B ϵ S+ là hai thuộc tính có thể so sánh được.
Gọi θ là một trong các phép toán so sánh {<, =, >, , , ≠}
Định nghĩa 2.19. Phép kết nối hai quan hệ (có thể nói tắt là phép kết) R với S trên các thuộc tính A và B với phép so sánh θ, với giả thiết là giá trị cột R[A] có thể so sánh được (qua phép so sánh θ) với mỗi giá trị của cột R[B], được định nghĩa qua:
R S = {v = (t, u) | t ϵ R , u ϵ S và t.A θ u.B}
Hoặc:
R S = (R x S) : (A θ B).
Phép kết nối 2 quan hệ R và S có thể xem như được thực hiện qua 2 bước:
• Bước 1: Thực hiện tích Descartes hai quan hệ R và S.
• Bước 2: Chọn các bộ giá trị thỏa mãn điều kiện A θ B.
Ngữ nghĩa: Định nghĩa trên cho ta kết quả của phép kết nối hai quan hệ R và S với phép so sánh θ trên 2 thuộc tính A và B là một quan hệ mới. Đó là kết quả cuối cùng của phép toán quan hệ (phép Chọn) trên quan hệ kết quả của phép toán tập hợp (tích Descartes ).
Nếu θ là phép toán so sánh bằng (=) thì ta gọi đó là phép kết nối bằng (Equi Join).
Nếu các thuộc tính so sánh là giống tên nhau thì trong kết quả của phép kết nối sẽ loại bỏ đi một trong 2 thuộc tính đó, khi đó phép kết nối được gọi là phép kết nối tự
56
nhiên (Natural Join) và sử dụng ký hiệu cho phép toán là “*” hoặc chỉ ký hiệu I><I (không có A θ B) ở phía trên của phép toán.
Trong các trường hợp còn lại, phép toán được gọi chung là phép kết nối theta (θ -Join).
Ví dụ 2.24.
Quan hệ SINH_VIEN
MaSV HoTenSV NamSinh GioiTinh QueQuan MaLop 1361030001 Lê Đình Bách 1996 Nam Thanh Hoá 136103A 1561030007 Lê Thị Hoa 1998 Nữ Nam Định 156103A
Quan hệ LOP
MaLop TenLop MaKhoa 136103A ĐH CNTT K16 CNTT 146103A ĐH CNTT K17 CNTT 156103A ĐH CNTT K18 CNTT 166103A ĐH CNTT K19 CNTT
Kết quả phép kết nối tự nhiên của 2 quan hệ SINH_VIEN và LOP (SINH_VIEN*LOP) là quan hệ SV_LOP với các bộ giá trị như sau: