Sự phát triển của mô hình quan hệ của cơ sở dữ liệu dựa rất nhiều vào Toán học. Trước khi hình thành ngôn ngữ SQL, người ta đã tạo ra hai "ngôn ngữ" mang rất đậm màu sắc Toán học là đại số quan hệ (relational algebra) và giải tích quan hệ (relational calculus). Chính SQL cũng đặt cơ sở trên các khái niệm của hai ngôn ngữ này. Vì thế trong giai đoạn đầu của lịch sử phát triển của mô hình quan hệ, màu sắc Toán học đã làm rất nhiều người không thấy được khả năng ứng dụng của nó. Trong phần này, ta sẽ xem xét một số nét của đại số quan hệ.
Khi ta xem quan hệ là một tập hợp, thì theo lý thuyết tập hợp, ta có thể tác động lên một hay nhiều quan hệ một số thao tác nào đó, thường được gọi là các phép toán (operation), để tạo ra một quan hệ mới. Lĩnh vực khảo sát các phép toán lên quan hệ theo hướng này được gọi là đại số quan hệ. Do đó đại số quan hệ chịu ảnh hưởng đáng kể của lý thuyết tập hợp như ta sẽ thấy trong các phần sau.
Ta có hai nhóm phép toán chính :
Các quan hệ tham gia vào phép toán được gọi là các toán hạng (operand). Có phép toán chỉ cẩn một toán hạng (unary) như chiếu, nhưng cũng có phép toán cần hai toán hạng (binary) như hợp. Một số phép toán hai toán hạng yêu cầu hai toán hạng này tương thích nhau (compatible). Hai quan hệ được xem là tương thích nhau khi:
Hợp của hai quan hệ tương thích nhau R1 và R2 là quan hệ R chứa tất cả các bộ (tuple) của R1 và R2. Ta ký hiệu như sau:
R = R1 ∪ R2
Thí dụ : Từ hai quan hệ R1 và R2 sau :
Ten | Tuoi | GioiTinh |
---|---|---|
A | 25 | Nam |
M | 32 | Nữ |
P | 36 | Nam |
T | 44 | Nam |
Ten | Tuoi | GioiTinh |
---|---|---|
A | 26 | Nữ |
K | 36 | Nam |
M | 32 | Nữ |
T | 44 | Nam |
Ta có R = R1 ∪ R2 như sau :
Ten | Tuoi | GioiTinh |
---|---|---|
A | 26 | Nữ |
A | 25 | Nam |
K | 36 | Nam |
M | 32 | Nữ |
P | 36 | Nam |
T | 44 | Nam |
Phép hợp có tính kết hợp (associative), nghĩa là :
R1 ∪ (R2 ∪ R3) = (R1 ∪ R2) ∪ R3
và giao hoán (commutative), nghĩa là :
R1 ∪ R2 = R2 ∪ R1
Giao của hai quan hệ tương thích nhau R1 và R2 là quan hệ R chứa các bộ (tuple) vừa thuộc R1, vừa thuộc R2. Ta ký hiệu như sau:
R = R1 ∩ R2
Thí dụ : Từ hai quan hệ R1 và R2 như thí dụ trên, ta có R = R1 ∩ R2 như sau:
Ten | Tuoi | GioiTinh |
---|---|---|
M | 32 | Nữ |
T | 44 | Nam |
Phép giao cũng có tính kết hợp, nghĩa là :
R1 ∩ (R2 ∩ R3) = (R1 ∩ R2) ∩ R3
và giao hoán, nghĩa là :
R1 ∩ R2 = R2 ∩ R1
Hiệu của quan hệ R1 và quan hệ R2 (hai quan hệ này tương thích nhau) là quan hệ R chứa tất cả các bộ (tuple) thuộc R1 nhưng không thuộc R2. Ta ký hiệu như sau:
R = R1 − R2
Thí dụ : Từ hai quan hệ R1 và R2 như hai thí dụ trên, ta có R = R1 − R2 như sau:
Ten | Tuoi | GioiTinh |
---|---|---|
A | 25 | Nam |
P | 36 | Nam |
Phép hiệu không có tính kết hợp và giao hoán.
Tích Descartes của quan hệ R(A1, A2, . . . , An), có bản số là r, và quan hệ S(B1, B2, . . . , Bm), có bản số là s, là quan hệ T với:
Ta ký hiệu như sau :
T = R × S
Thí dụ : Từ hai quan hệ R và S sau :
Ten | Tuoi | GioiTinh |
---|---|---|
A | 25 | Nam |
M | 32 | Nữ |
P | 36 | Nam |
T | 44 | Nam |
Khoa | Nganh |
---|---|
TH | Mạng Máy Tính |
TP | Công Nghệ |
HH | Vật Liệu |
Ta có T = R × S như sau :
Ten | Tuoi | GioiTinh | Khoa | Nganh |
---|---|---|---|---|
A | 25 | Nam | TH | Mạng Máy Tính |
A | 25 | Nam | TP | Công Nghệ |
A | 25 | Nam | HH | Vật Liệu |
M | 32 | Nữ | TH | Mạng Máy Tính |
M | 32 | Nữ | TP | Công Nghệ |
M | 32 | Nữ | HH | Vật Liệu |
P | 36 | Nam | TH | Mạng Máy Tính |
P | 36 | Nam | TP | Công Nghệ |
P | 36 | Nam | HH | Vật Liệu |
T | 44 | Nam | TH | Mạng Máy Tính |
T | 44 | Nam | TP | Công Nghệ |
T | 44 | Nam | HH | Vật Liệu |
Phép chọn dùng để chọn các bộ của quan hệ R thỏa mãn điều kiện P nào đó, và ta ký hiệu phép chọn như sau: σ P (R)
Thí dụ : Từ quan hệ T trong thí dụ về tích Descartes ở trên, ta muốn chọn những người thuộc khoa 'TH' thì kết quả phép chọn như sau:
Ten | Tuoi | GioiTinh | Khoa | Nganh |
---|---|---|---|---|
A | 25 | Nam | TH | Mạng Máy Tính |
M | 32 | Nữ | TH | Mạng Máy Tính |
P | 36 | Nam | TH | Mạng Máy Tính |
T | 44 | Nam | TH | Mạng Máy Tính |
Lưu ý : Phép chọn trong đại số quan hệ không giống phép chọn trong SQL. Phép chọn trong đại số quan hệ chỉ tương đương với hai mệnh đề FROM . . . WHERE . . . trong phát biểu SELECT của ngôn ngữ SQL.
Phép chiếu sẽ tạo ra một quan hệ với một số thuộc tính của quan hệ R. Ta ký hiệu phép chiếu từ R như sau: π < danh sách một số thuộc tính > (R)
Thí dụ : Từ quan hệ R :
Ten | Tuoi | GioiTinh |
---|---|---|
A | 25 | Nam |
M | 32 | Nữ |
P | 36 | Nam |
T | 44 | Nam |
Ta muốn tạo ra danh sách gồm tên, tuổi thì ta sử dụng phép chiếu và có kết quả như sau :
Ten | Tuoi |
---|---|
A | 25 |
M | 32 |
P | 36 |
T | 44 |
Ghi chú : Phép chiếu trong đại số quan hệ tương đương với phát biểu SELECT . . . FROM . . . trong ngôn ngữ SQL.
Phép nối dùng để kết nối quan hệ R(A1, A2, . . . , An), với quan hệ S(B1, B2, . . . , Bm), theo các điều kiện cho sẵn (tạm gọi là điều kiện C), sẽ tạo ra quan hệ K :
Trong thực tế, trường hợp thường gặp nhất là C chỉ chứa toán tử so sánh "=". Khi đó phép nối còn được gọi là phép nối bằng (equijoin). Ký hiệu phép nối bằng khi chỉ có một điều kiện là :
R ⋈ Ai = Bj S
Thí dụ : Ta có hai quan hệ R và S sau :
Ten | Tuoi | GioiTinh |
---|---|---|
A | 25 | Nam |
M | 32 | Nữ |
P | 36 | Nam |
T | 44 | Nam |
TenNV | Khoa | BoMon |
---|---|---|
A | TH | Mạng Máy Tính |
K | HH | Vật Liệu |
M | TP | Công Nghệ |
T | TH | Phần Mềm |
Ta dùng phép nối R ⋈ Ten = TenNV S thì thu được kết quả sau :
Ten | Tuoi | GioiTinh | TenNV | Khoa | BoMon |
---|---|---|---|---|---|
A | 25 | Nam | A | TH | Mạng Máy Tính |
M | 32 | Nữ | M | TP | Công Nghệ |
T | 44 | Nam | T | TH | Phần Mềm |
Khi tên của thuộc tính dùng để so sánh trong hai bảng giống hệt nhau, ta sẽ bỏ bớt một thuộc tính trong kết quả. Khi ấy, phép nối được gọi là phép nối tự nhiên (natural join) và ký hiệu là R ⋈ S.
Khi ta chia quan hệ R1 có bậc n + m cho quan hệ R2 có bậc m, ta thu được quan hệ R:
Thí dụ : Ta có hai quan hệ sau :
TenNV | BoPhan |
---|---|
A | Trộn |
A | Ủ |
A | Nướng |
B | Trộn |
B | Nướng |
C | Trộn |
C | Ủ |
BoPhan |
---|
Trộn |
Ủ |
Nếu ta thực hiện phép chia R1 ÷ R2 thì kết quả là :
TenNV |
---|
A |
C |
Khi ta thực hiện các phép toán trên, kết quả thu được là một quan hệ. Ta có thể đặt tên cho kết quả này bằng cách dùng dấu "=", hay dùng phép gán "←" (ASSIGNMENT) dưới dạng R ← E với E là một biểu thức của các quan hệ và các phép toán quan hệ.
Ta cũng có thể dùng phép đặt tên (RENAME) theo cách viết sau : ρ R (E) , trong đó ρ là ký hiệu của phép đặt tên.
Ta cũng có thể dùng phép đặt tên ρ để đặt lại tên cho thuộc tính theo cách trình bày sau : ρ A/B (R) , trong đó thuộc tính A của R được đặt lại tên là B.
Trang web này được cập nhật lần cuối ngày 25/11/2018
Cơ sở dữ liệu
Các chuyên đề
Xử lý dữ liệu
Ma trận
R