Trong các quan hệ dựa trên tính toán quan hệ, thay vì chỉ rõ làm thế nào để nhận được kết quả, người ta chỉ ra kết quả là gì bằng cách biểu diễn mối liên kết
được đề nghị để đảm nhận kết quả. Các ngôn ngữ tính toán quan hệ rơi vào hai nhóm: tính toán quan hệ bộ và tính toán quan hệ miền. Sự khác nhau của hai nhóm là theo thuật ngữ của biến nguyên thủy được sử dụng trong việc diễn đạt truy vấn.
Các ngôn ngữ tính toán quan hệ có một cơ sở lý thuyết vững chắc bởi vì chúng dựa trên logic vị từ bậc nhất. Ngữ nghĩa được cho trước đối với các công thức bằng cách thể hiện chúng như là các khẳng định trên CSDL. Một CSDL quan hệ có thể được xem như một tập hợp các bộ hoặc một tập hợp các miền. Tính toán quan hệ bộ thể hiện một biến trong một công thức như là một bộ của quan hệ trong khi đó tính toán quan hệ miền thể hiện một biến như giá trị của một miền.
Các tính toán quan hệ bộ (tuple relational calculus)
Biến nguyên thủy được sử dụng trong các tính toán quan hệ là một biến bộ, nó chỉ rõ một bộ của quan hệ. Nói cách khác, nó biến thiên trên các bộ của quan hệ. Các tính toán bộ là các tính toán quan hệ ban đầu được Codd phát triển (Codd-1970)
Trong tính toán quan hệ bộ, các truy vấn được chỉ ra dưới dạng: { t | F(t) }
Trong đó: t là một biến bộ, F là một công thức xây dựng tốt (wff). Các công thức nguyên tử thuộc hai dạng:
a. Biểu thức thành viên của bộ: nếu t là một biến bộ biến thiên trên các bộ của quan hệ R thì biểu thức “bộ t thuộc quan hệ R” là một công thức nguyên tử và được diễn đạt là R.t hoặc R(t)
b. Điều kiện. Các điều kiện được định nghĩa như sau:
(a). s[A] θ t[B], trong đó s và t là các biến bộ, A và B là các thành phần của s và t tương ứng, θ là một trong các so sánh số học <, >, =, , . Điều kiện này chỉ rõ rằng thành phần A của s đứng trong quan hệ θ đối với thành phần B của t. Ví dụ, s[SAL] > t[SAL]
(b). s[A] θ c, trong đó s, A và θ được định nghĩa như trên và c là một hằng. Ví dụ, s[NAME] = “Smith”
Để ý rằng A được định nghĩa như một thành phần của biến bộ s. Bởi vì biến thiên của s là một quan hệ cụ thể, chẳng hạn S nó bị bắt buộc là thành phần A của s tương ứng với thuộc tính A của s
Có nhiều ngôn ngữ dựa trên tính toán bộ, ngôn ngữ phổ biến nhất là SQL. SQL bây giờ là một chuẩn quốc tế với các phiên bản công bố vào năm 1986 (SQL 1), 1989 (sửa đổi SQL 1) và 1992 (SQL 2). Một phiên bản mới bao gồm các mở rộng ngôn ngữ hướng đối tượng đang được công bố từng phần từ 1998. SQL cung cấp một cách tiếp cận không đổi đến thao tác dữ liệu (trích rút, cập nhật), định nghĩa dữ liệu (thao tác lược đồ) và kiểm soát (quyền, tính toàn vẹn, …)
Các truy vấn trong SQL có dạng: Ví dụ 1.7: Truy vấn trích rút
SELECT EMP, ENAME FROM EMP, ASG, PROJ
WHERE EMP.ENO = ASG.ENO AND ASG.PNO = PROJ.PNO
AND PROJ.PNAME = “CAD/CAM” Ví dụ 1.8: Truy vấn cập nhật
UPDATE PAY SET SAL = 25000
WHERE P.TITLE = “Programmer”;
Các tính toán quan hệ trên miền
Sự khác nhau cơ bản giữa ngôn ngữ quan hệ bộ và ngôn ngữ quan hệ miền là việc sử dụng biến miền trong ngôn ngữ quan hệ miền. Một biến miền biến thiên trên các giá trị trong một miền và chỉ rõ một thành phần của một bộ. Nói cách khác, miền biến thiên của một biến miền bao gồm các miền mà trên đó quan hệ được định nghĩa. Các wff được thể hiện theo hoàn cảnh đó. Các truy vấn được chỉ ra dưới dạng sau đây:
x1, x2, …, xn | F(x1, x2,…, xn)
Thành công của ngôn ngữ tính toán quan hệ miền chủ yếu là ngôn ngữ QBE (Zloof 1977), đó là một ứng dụng hiển thị của tính toán miền. Các truy vấn trích rút và cập nhật tương ứng với các truy vấn SQL ở trên được viết trong QBE như sau:
EMP ENO ENAME TITLE E2 P.
ASG ENO PNO RESP DUR E2 P3
PROJ PNO PNAME BUDGET P3 CAD/CAM
Trong đó P. có nghĩa là Print
Hình 1.5 Truy vấn trích rút trong QBE
Trong đó U. có nghĩa là Update
Hình 1.6 Truy vấn cập nhật trong QBE