Đạ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 tập hợp, phép chọn và các phép toán mở rộng. Trong bài viết này chúng ta sẽ đi tìm hiểu về các phép toán tập hợp, đây là các phép toán cơ bản nhất cũng là quan trọng nhất của đại số quan hệ. Những phép toán tập hợp bao gồm: Phép hội (set union), phép giao (set intersection), phép hiệu (set defference) và phép tích (castesian product)
1. Phép hội
Trước tiên chúng ta hãy cùng xem qua ví dụ sau:
Qua ví dụ trên chúng ta có thể thấy khi hội hai quan hệ sẽ được một quan hệ mới có các bộ chỉ thuộc một quan hệ. Các bộ trùng nhau sẽ bị loại đi, trong trường hợp này là bộ {Number: 9824, Surname: Darkes, Age: 38}. Chúng ta cũng có thể biểu diễn phép hội qua biểu thức sau:
2. Phép giao
Chúng ta thực hiện phép giao trên hai quan hệ Graduates và Managers
Kết quả trả về là một quan hệ mới chỉ bao gồm các bộ đồng thời thuộc hai qua hệ ban đầu. Dưới đây là biểu thức biểu diễn phép giao giữa hai quan hệ:
3. Phép hiệu
Phép hiệu trong đại số quan hệ cũng có nét tương đồng với phép hiệu đại số thông thường. Chúng ta hãy cùng xem qua ví dụ sau đây đển hiểu rõ hơn.
Quan hệ kết quả trong trường hợp trên chỉ có một bộ duy nhất. Đây cũng là bộ duy nhất thuộc quan hệ Graduates mà không thuộc quan hệ Managers. Vậy tổng quát chúng ta có thể định nghĩa phép hiệu của hai quan hệ qua biểu thức:
Phép hiệu của R và S sẽ cho kết quả là một quan hệ bao gồm các bộ chỉ thuộc R mà không thuộc S.
4. Phép tích
Bây giờ trên hai quan hệ Employees và Projects, chúng ta hãy cùng xem kết quả trả về khi thực hiện phép tích giữa hai quan hệ đó là gì.
Kết quả chúng ta nhận được là một quan hệ mới có số bộ bằng tích số giữa số bộ của quan hệ Employees và số bộ của Projects trong khi lược đồ của nó lại là tổ hợp của hai lược đồ ban đầu.
Đây là điều khác biệt giữa phép tích và các phép toán chúng ta đã được tìm hiểu ở trên. Phép hội, phép giao và phép hiệu chỉ thực hiện được khi hai quan hệ đầu vào có cùng lược đồ và kết quả cũng là một quan hệ có lược đồ giống với lược đồ của hai quan hệ ban đầu. Như vậy có thể thấy, phép tích sẽ làm phát sinh tổ hợp cả về “hai chiều”, điều đó làm nảy sinh trường hợp tồn tại những bộ trong quan hệ kết quả không mang nhiều ý nghĩa. Do đó phép tích thường đi kèm với một điều kiện nào đó để loại trừ đi những kết quả không mong muốn.
Kết luận
Các phép toán tổ hợp thể hiện mối tương quan giữa các quan hệ với nhau. Trong các ngôn ngữ truy vấn, trong những trường hợp để có được kết quả cần có sự kết hợp giữa các bảng với nhau thì các phép toán tổ hợp sẽ được thực hiện trước sau đó các phép toán chọn sẽ được áp dụng để loại bỏ các kết quả không thỏa mãn. Phần sau chúng ta sẽ đi sâu vào các phép toán chọn cũng như tìm hiểu sự tương đồng giữa chúng và các từ khóa trong SQL.