Đại số quan hệ (Relational algebra) là một bộ các toán tử và quy tắc được sử dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới. Sau khi Edgar F. Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng.
1. Khái niệm về Relational Algebra .
Đại số quan hệ (Relational algebra) là một bộ các toán tử và quy tắc được sử dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới. Sau khi Edgar F. Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng. SQL cung cấp cú pháp đơn giản nhưng mạnh mẽ, giúp người dùng có được các kết quả mong muốn mà không cần nêu rõ cách thức để đạt được điều đó như thế nào. Tuy nhiên, với những vấn đề và yêu cầu mang tính phức tạp, việc viết một câu truy vấn chính xác và hiệu quả đòi hỏi phải có hiểu biết về cấu trúc dữ liệu và cách thức hoạt động của ngôn ngữ truy vấn. Vì vậy nắm vững các kiến thức về đại số quan hệ sẽ là nền tảng để việc tìm hiểu về SQL trở nên dễ dàng hơn.
Các phép toán trong đại số quan hệ có thể được chia thành ba loại: Phép toán quan hệ và phép toán tập hợp.
2. Nội dung
2.1 Phép toán quan hệ
2.1. Phép chiếu (projection)
Định nghĩa: Lựa chọn một số thuộc tính từ một quan hệ.
Cú pháp: 𝜋𝐴1,𝐴2,…(𝑅)
SELECT Colum_name
FROM
Ví dụ: Đưa ra danh sách tên tất cả sinh viên
SELECT Name
FROM Student
– Đặc trưng:
+ Phép chiếu loại bỏ các bộ trùng nhau
+ Kết quả là một quan hệ:
- Có bậc bằng số thuộc tính của danh sách thuộc tính
- Có bậc nhỏ hơn hoặc bằng bậc của R
- Có số bộ ít hơn hoặc bằng số bộ của R
– Mở rộng phép chiếu: Cho phép sử dụng các phép toán số học trong danh sách thuộc tính
Ví dụ: 𝜋𝐴,2∗𝐶(𝑅)
2.1.2 Phép chọn (selection)
Định nghĩa: Lựa chọn các bộ trong một quan hệ thoả mãn điều kiện cho trước.
Cú pháp: 𝜎<𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛>(𝑅)
SELECT Colum_name
FROM Table
WHERE
Ví dụ: Đưa ra tên của các sinh viên sống ở Bundoora
SELECT Name
FROM Student
WHERE Suburb ="Bundoora"
2.1.3 Phép nối (join)
Định nghĩa: ghép các bộ từ 2 quan hệ thoả mãn điều kiện kết nối
Cú pháp: 𝑅1 ⊳𝖺𝑗𝑜𝑖𝑛_𝑐𝑜𝑛𝑑𝑖𝑡𝑖𝑜𝑛 𝑅2
SELECT Column_name
FROM Table_A
JOIN Table_B ON A=
Ví dụ: Đưa ra danh sách sinh viên và khóa học
SELECT *
, SID
, Course
FROM Student
JOIN Enrol ON Id = SID
Ví dụ: chọn, chiếu và kết nối:
SELECT Name, Course
FROM Student
JOIN Enrol ON Id= SID
WHERE Suburb="Bundoora"
2.1.4 Phép nối tự nhiên
Định nghĩa: là phép kết nối với điều kiện bằng trên các thuộc tính trùng tên
2.1.5 Phép nối ngoài
- Phép nối ngoài trái
- Phép nối ngoài phải:
Ví dụ: Đưa ra danh sách mã số các sinh viên và mã khoá học mà sinh viên đó đăng ký nếu có
SELECT, Course
FROM Student
LEEFT JOIN Enrol ON ID = SID
2.1.6 Phép chia (Division)
Định nghĩa: cho 𝑅1 và 𝑅2 lần lượt là các quan hệ n và m ngôi. Kết quả của phép chia 𝑅1 cho 𝑅2 là một quan hệ (n-m) ngôi
Cú pháp: 𝑅1: 𝑅2
Ví dụ:
SELECT DISTINCT Name
FROM Subject
WHERE NOT EXISTS(
(SELECT Course FROM Subject)
EXCEPT
(SELECT Course FROM Course WHERE Course="BCS" AND Course='MCS))
2.2 Phép toán tập hợp
2.2.1 Phép hợp (union)
– Định nghĩa: gồm các bộ thuộc ít nhất một trong hai quan hệ đầu vào
+ 2 quan hệ khả hợp được xác định trên cùng miền giá trị
Ví dụ
SELECT Nam, Course
FROM Sublect
UNION
SELECT Name, Course
FROM Subject2
2.2.2 Phép giao (intersection)
Định nghĩa: gồm các bộ thuộc cả hai quan hệ đầu vào
Cú pháp: 𝑅1 ∩ 𝑅2
SELECT Name, Course
FROM Sublect
INTERSECT
SELECT NAme, Course
FROM
2.2.3 Phép trừ (Difference)
Định nghĩa: gồm các bộ thuộc quan hệ thứ nhất nhưng không thuộc quan hệ thứ hai
+ 2 quan hệ phải là khả hợp
Cú pháp: 𝑅1\𝑅2
2.2.4 Phân tích đề- các (cartesian product)
Định nghĩa: là kết nối giữa từng bộ của quan hệ thứ nhất và mỗi bộ của quan hệ thứ hai
Ví dụ:
3. ỨNG DỤNG VÀ KẾT LUẬN.
Phép toán quan hệ và phép toán tập hợp giúp chúng ta sử dụng để kết hợp các bảng trong cơ sở dữ liệu theo một cách cụ thể để truy xuất thông tin từ các bảng khác nhau. Các phép toán này làm nền tảng cơ sở cho các phép toán, câu lệnh phức tạp.
Việc tìm hiểu về Đại số quan hệ giúp ta có cái nhìn tổng quan về cách thức hoạt động của các ngôn ngữ truy vấn nói chung và SQL nói riêng từ đó góp phần hiệu quả khi thao tác trên cơ sở dữ liệu.