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