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.
Mục lục
SQL là gì?
SQL (Structured Query Language) là ngôn ngữ truy vấn có cấu trúc. Nó là tập hợp các lệnh dùng để tương tác, tạo, sửa và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ.
Đại số quan hệ (Relational Algebra) là gì?
Đạ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ác phép toán trong đại số quan hệ có thể được chia thành hai loại: Phép toán quan hệ và Phép toán tập hợp.
Phép toán quan hệ
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:

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ụ:

Phép chọn (selection)
Định nghĩa: Lựa chọn các bộ trong một quan hệ thỏa 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"

Phép nối (join)
Định nghĩa: ghép các bộ từ 2 quan hệ thỏa mãn điều kiện kết nối
Cú pháp:

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"

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

Phép nối ngoài
a. Phép nối ngoài trái:

b. Phép nối ngoài phải:

Ví dụ: Đưa ra danh sách mã số các sinh viên và mã khóa học mà sinh viên đó đăng ký nếu có:
SELECT, Course
FROM Student
LEFT JOIN Enrol ON ID = SID
Phép chia (Division)
Định nghĩa: cho R1 và R2 lần lượt là các quan hệ n và m ngôi. Kết quả của phép chia R1 cho R2 là một quan hệ (n-m) ngôi
Cú pháp:


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))

Phép toán tập hợp
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.
Hai quan hệ khả hợp được xác định trên cùng miền giá trị.

Ví dụ:
SELECT Name, Course
FROM Subject
UNION
SELECT Name, Course
FROM Subject2

Phép giao (intersection)
Định nghĩa: gồm các bộ thuộc cả hai quan hệ đầu vào
Cú pháp:


SELECT Name, Course
FROM Subject
INTERSECT
SELECT Name, Course
FROM

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.
Hai quan hệ phải là khả hợp.
Cú pháp:



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ụ:

Ứng dụng & 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.
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.
Tham khảo các bài viết về SQL: https://datapot.vn/category/sql/