Hiểu cơ chế hoạt động của SQL thông qua Đại số quan hệ

Ngày đăng: 24/10/2023

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. 

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

Đại số quan hệ: Phép toán quan hệ

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/

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *