1.1. TỔNG QUAN VỀ CSDL QUAN HỆ
1.1.4. Các ngôn ngữ quan hệ dữ liệu
1.1.4.1. Đại số quan hệ
Đại số quan hệ bao gồm một tập hợp các phép toán thao tác trên các quan hệ.
Nó có nguồn gốc từ lý thuyết tập hợp (các quan hệ tương ứng với các tập hợp).
Mỗi phép toán lấy một hoặc hai quan hệ làm toán hạng và tạo ra một quan hệ kết quả. Kết quả đó có thể lại là toán hạng của phép toán khác. Các phép toán này cho phép truy vấn và cập nhật cơ sở dữ liệu.
Các phép toán đại số
Có 5 phép toán đại số quan hệ và 5 phép toán khác có thể đƣợc định nghĩa theo các phép toán này. Các phép toán cơ bản là phép chọn, phép chiếu, phép hợp, phép trừ quan hệ và tích Đecac. Hai phép toán đầu là hai phép toán một ngôi và ba phép toán sau là các phép toán hai ngôi. Các phép toán thêm vào có thể đƣợc định nghĩa theo các phép toán cơ bản này là phép giao, nối θ, nối tự nhiên, nửa nối và phép chia. Trên thực tế, đại số quan hệ đƣợc mở rộng với các phép toán để nhóm hoặc sắp xếp các quan hệ và để thực hiện các hàm số học hoặc hàm nhóm.
Các toán hạng của một số các phép toán hai ngôi phải tương thích hợp. Hai quan hệ R và S là tương thích hợp khi và chỉ khi chúng cùng cấp và thuộc tính thứ i của mỗi quan hệ là đƣợc định nghĩa trên cùng một miền. Dĩ nhiên, phần thứ hai của định nghĩa là đúng khi và chỉ khi các thuộc tính của quan hệ đƣợc xác định bằng các vị trí tương quan của chúng ở bên trong quan hệ chứ không phải bằng tên của chúng. Nếu thứ tự tương quan của các thuộc tính là không quan trọng thì cần phải thay phần thứ hai của định nghĩa bằng câu: các thuộc tính tương ứng của hai quan hệ phải được định nghĩa trên cùng một miền.
Phép chọn
Phép chọn tạo ra một tập con ngang của một quan hệ cho trước. Tập hợp con bao gồm tất cả các bộ thỏa mãn một công thức (điều kiện). Phép chọn từ một quan hệ R đƣợc ký hiệu là:
σ F (R) Phép chiếu
Phép chiếu tạo ra một tập hợp con dọc của một quan hệ. Quan hệ kết quả chỉ chứa các thuộc tính của quan hệ nguyên thủy nào mà trên đó phép chiếu đƣợc thực hiện. Nhƣ vậy, cấp của một quan hệ kết quả là nhỏ hơn hoặc bằng cấp của quan hệ nguyên thủy.
Phép tính của quan hệ R trên các thuộc tính A, B đƣợc ký hiệu là:
A,B (R)
Để ý rằng kết quả của một phép chiếu có thể chứa các bộ giống nhau. Trong trường hợp này, các bộ lặp lại có thể bị xóa khỏi quan hệ kết quả. Có thể chỉ rõ phép chiếu có hoặc không có loại bỏ lặp
Phép hợp
Hợp của hai quan hệ R và S, ký hiệu R S, là tập hợp của tất cả các bộ trong R, hoặc trong S, hoặc trong cả hai. Điều kiện là R và S phải tương thích hợp.
Cũng như trong trường hợp của phép chiếu, các bộ lặp cũng thường được loại bỏ. Phép hợp có thể đƣợc sử dụng để chèn các bộ mới vào một quan hệ đang tồn tại, trong đó các bộ mới này tạo nên một trong các quan hệ toán hạng.
Phép hiệu tập hợp
Hiệu tập hợp của hai quan hệ R và S, ký hiệu là R – S, là một tập hợp tất cả các bộ ở trong R nhưng không ở trong S. Trong trường hợp này R và S cũng phải tương thích hợp. Phép toán này không đối xứng, nghĩa là R – S S – R.
Phép toán này cho phép loại bỏ các bộ ra khỏi một quan hệ. Cùng với phép hợp chúng ta có thể thực hiện các thay đổi các bộ bằng cách loại bỏ sau đó bằng các phép chèn.
Tích Đề-các
Tích Đề-các của hai quan hệ R cấp k1 và S cấp k2 là một tập hợp của các (k1+k2)-bộ, trong đó mỗi bộ kết quả là một kết nối của một bộ của R với mỗi bộ của S, với tất cả các bộ của R và S.
Tích Đề-các của R và S đƣợc ký hiệu là R x S.
Có khả năng là hai quan hệ có thể có các thuộc tính trùng tên. Trong trường hợp này các tên thuộc tính đƣợc bắt đầu bằng tên của quan hệ để duy trì tính duy nhất của các tên thuộc tính bên trong một quan hệ.
Phép giao
Phép giao của hai quan hệ R và S, ký hiệu R S, bao gồm tập hợp tất cả các bộ vừa ở trong R vừa ở trong S. Theo các phép toán cơ bản, nó có thể đƣợc biểu diễn là
R S = R – (R – S).
Nối θ
Phép nối là một suy diễn của tích Đecac. Có nhiều dạng nối, tổng quát nhất là nối θ, thường được gọi là nối. Phép nối θ của hai quan hệ R và S được ký hiệu là
R F S
Trong đó F là một công thức chỉ vị từ nối. Vị từ nối được chỉ ra tương ứng nhƣ một vị từ chọn nhƣng các số hạng có dạng R.A θ S.B, trong đó A và B là các thuộc tính của R và S tương ứng.
Phép nối của hai quan hệ tương đương với việc thực hiện một phép chọn, sử dụng vị từ nối nhƣ là công thức chọn trên tích Đecac của hai quan hệ toán hạng.
Nhƣ vậy
R F S = σ F(R x S)
Trong sự tương đương ở trên chúng ta cần chú ý rằng nếu F bao hàm cả hai thuộc tính của quan hệ mà chúng là chung cho cả hai thì một phép chiếu là cần thiết để đảm
Nối tự nhiên
Một nối tự nhiên là một nối bằng của hai quan hệ trên một thuộc tính đƣợc chỉ ra, cụ thể hơn trên các thuộc tính có miền xác định nhƣ nhau. Có một sự khác nhau là thông thường các thuộc tính mà trên nó phép nối tự nhiên được thực hiện chỉ xuất hiện một làn trong kết quả. Một nối tự nhiên đƣợc thể hiện nhƣ một phép nối không có công thức:
R A S
Trong đó A là thuộc tính chung của R và S. Chú ý rằng các thuộc tính nối tự nhiên có thể có các tên khác nhau trong hai quan hệ. Trong trường hợp đó, cái cần đòi hỏi là chúng có chung một miền giá trị. Trong trường hợp này phép nối đƣợc ký hiệu là R A B S, trong đó A là thuộc tính nối của R, B là của S.
Phép nửa nối
Phép nửa nối của quan hệ R đƣợc xác định trên tập thuộc tính A và quan hệ S đƣợc xác định trên tập thuộc tính B là tập con của các thuộc tính của R tham gia vào phép nối của R và S. Nó đƣợc ký hiệu là:
R F S = A(R F S)
Ƣu điểm của phép nửa nối là nó giảm số các bộ cần phải thực hiện để tạo thành phép nối. Trong các hệ CSDL tập trung, điều đó là quan trọng bởi vì nó thường dẫn đến việc sử dụng bộ nhớ tốt hơn, làm giảm các truy cập bộ nhớ phụ.
Điều đó còn quan trọng hơn trong CSDL phân tán vì nó thường làm giảm số dữ liệu cần truyền giữa các trạm để thực hiện một truy vấn. Chú ý rằng phép nửa nối là không đối xứng, nghĩa là R F S S F R
Phép chia
Phép chia của quan hệ R cấp r với quan hệ S cấp s (r > s và s 0) là một tập các (r-s)-bộ t sao cho với mọi bộ u trong S, bộ tu trong R. Phép chia đƣợc ký hiệu là R S và đƣợc biểu diễn qua các phép toán cơ bản nhƣ sau:
R S = A(R) – A(( A(R x S) – R)
Trong đó A là tập các thuộc tính của R không có trong S.
Các chương trình đại số quan hệ
Vì tất cả các phép toán lấy các quan hệ là dữ liệu vào (input) và tạo ra các quan hệ nhƣ là dữ liệu ra (output), chúng ta có thể lồng các phép toán quan hệ bằng cách sử dụng dấu ngoặc và biểu diễn các chương trình đại số quan hệ. Các dấu ngoặc chỉ thứ tự của việc thực hiện.