logo xDuLieu.com

Trang trướcMột số nét về đại số quan hệTrang sau

Giới thiệu

 

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ệ.


Khái quát về đạ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 phép toán kế thừa từ lý thuyết tập hợp, chủ yếu là hợp (UNION), giao (INTERSECTION), hiệu (DIFFERENCE), tích Descartes (CARTESIAN PRODUCT),
  • các phép toán đặc thù cho quan hệ như chọn (SELECT), chiếu (PROJECTION), nối (JOIN), chia (DIVISION), đặt tên (RENAME).

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:

  • chúng có cùng bậc,
  • các thuộc tính tương ứng của hai quan hệ phải có miền xác định giống nhau.

Phép hợp

 

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 :

R1
Ten Tuoi GioiTinh
A 25 Nam
M 32 Nữ
P 36 Nam
T 44 Nam
   
R2
Ten Tuoi GioiTinh
A 26 Nữ
K 36 Nam
M 32 Nữ
T 44 Nam

Ta có R = R1 ∪ R2 như sau :

R = R1 ∪ R2
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


Phép giao

 

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:

R = R1 ∩ R2
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


Phép hiệu

 

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:

R = R1 − R2
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.


Phép tích Descartes

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:

  • T có bậc n + m, nghĩa là T có n + m thuộc tính,
  • T có bản số là rs, nghĩa là T có rs bộ,
  • mỗi bộ của T là một kết nối của một bộ thuộc R và một bộ thuộc S,
  • và ta có thể viết T(A1, A2, . . . , An, B1, B2, . . . , Bm)

Ta ký hiệu như sau :

T = R × S

Thí dụ : Từ hai quan hệ R và S sau :

R
Ten Tuoi GioiTinh
A 25 Nam
M 32 Nữ
P 36 Nam
T 44 Nam
   
S
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 :

T = R × S
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

 

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:

σ Khoa = "TH" (T)
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

 

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 :

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 (R)
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

 

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 trường hợp tổng quát, K có bậc n + m, nghĩa là K có n + m thuộc tính, và có thể trình bày dưới dạng K(A1, A2, . . . , An, B1, B2, . . . , Bm).
  • Mỗi bộ của K thỏa điều kiện C. Trong trường hợp đơn giản C chỉ có một điều kiện (điều kiện đơn); trong trường hợp phức tạp, C gồm một số điều kiện đơn liên kết với nhau bằng các toán tử luận lý.
  • Ta ký hiệu phép nối này như sau : R ⋈ C S
  • Trong thực tế, điều kiện đơn thường có dạng Ai θ Bj, trong đó θ là toán tử so sánh thuộc nhóm =, ≠, >, ≥, <, ≤, . Khi đó phép nối này được gọi là phép nối theta (theta join)

Phép nối bằng & Phép nối tự nhiên

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 :

R
Ten Tuoi GioiTinh
A 25 Nam
M 32 Nữ
P 36 Nam
T 44 Nam
   
S
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 :

R ⋈ Ten = TenNV S
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.


Phép chia

 

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:

  • R có bậc là n,
  • thuộc tính n + i của R1 và thuộc tính i của R2 phải có cùng tên và cùng miền xác định,
  • tất cả kết nối của các bộ thuộc R và các bộ thuộc R2 phải thuộc về R1,
  • ta có ký hiệu như sau: R = R1 ÷ R2

Thí dụ : Ta có hai quan hệ sau :

R1
TenNV BoPhan
A Trộn
A
A Nướng
B Trộn
B Nướng
C Trộn
C
   
R2
BoPhan
Trộn

Nếu ta thực hiện phép chia R1 ÷ R2 thì kết quả là :

R = R1 ÷ R2
TenNV
A
C

Đặt tên

 

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 trướcVề đầu chươngTrang sau


Trang web này được cập nhật lần cuối ngày 25/11/2018