Tải bản đầy đủ (.pdf) (59 trang)

Bài giảng Chương 4: Đại số quan hệ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.16 MB, 59 trang )

1

Chương 4


Nội dung
Ngôn ngữ truy vấn (Query Language)
 Đại số quan hệ
 Các phép toán tập hợp
 Các phép toán quan hệ
 Các phép toán mở rộng


2


Ngôn ngữ truy vấn (Query Language)

3



Là ngôn ngữ đặc biệt dùng để đặt các câu hỏi (Query)
có liên quan đến dữ liệu trong database.



Ngôn ngữ phi thủ tục (non-procedural language) cho
phép người dùng chỉ ra cái (what) họ muốn mà không
cần chỉ ra cách thực hiện như thế nào (how) để được
kết quả đó




SQL là ngơn ngữ phi thủ tục


Đại số quan hệ

4



Đại số quan hệ là một ngôn ngữ thủ tục mức cao (highlevel procedure language) cho phép DBMS tạo 1 kết quả
truy vấn là quan hệ mới từ các quan hệ đầu vào



Query trong đại số quan hệ (relational algebra) được tạo
ra bằng cách kết hợp các biểu thức thơng qua các tốn
tử (operators) . Mỗi query mơ tả trình tự từng bước để
tính tốn cho câu trả lời mong muốn.


5

SQL query

Parser
Relational algebra Expression
Query Optimizer
Query Execution Plan

Code generator
Executable Code


Đại số quan hệ
Relational Algebra

6



Các truy vấn trong đại số được tạo thành bằng tập hợp
các phép toán (operators)



Mỗi phép toán nhận các quan hệ (relation instances) như
đối số và trả về là 1 quan hệ kết quả.


Biểu thức đại số quan hệ được định nghĩa đệ quy


Các phép tốn của đại số quan hệ


7

Gồm 2 nhóm:



Các phép toán tập hợp: union, intersection, difference
và Cartesian product



Các phép toán quan hệ: select, project, join and divide.


Phép toán union

8

Hai quan hệ R1 và R2
phải khả hợp (unioncompatible )


Phép toán intersection

Hai quan hệ R1 và R2
phải khả hợp (unioncompatible )

9


Phép difference

10

Hai quan hệ R1 và R2

phải khả hợp (unioncompatible )


Phép nhân các quan hệ
(Cartesian product )

11

Hai quan hệ R1 và R2
không cần khả hợp
(union-compatible )


Các phép toán quan hệ



12

Các phép toán quan hệ được thực hiện trên quan hệ R
và điều kiện F.
Điều kiện F là 1 biểu thức luận lý có giá trị true/false
<attribute name> <comparison op> <constant value>

Hoặc
<attribute name> <comparison op> <attribute name>


Phép chọn (selection)



13

Phép chọn trên r theo điều kiện F, ký hiệu là F(r), cho
kết quả là 1 quan hệ bao gồm các bộ của r thỏa mãn
điều kiện F
F(r) = {t|t r và F(t) = true}



Nếu quan hệ r có bậc là n và có k bộ thì F(r) có tối đa
bao nhiêu bậc và bộ?
 Bậc là n và có tối đa là k bộ


Ví dụ 1

14


Phép chiếu (Projection)

15

 Cho

quan hệ r trên R(A1, A2,..,Am) và tập con các thuộc
tính X={Aj1, Aj2, …, Ajn} với j1, j2,.., jn là các số nguyên
phân biệt nằm trong khoảng từ 1 đến m


 Phép

hệ

chiếu r trên tập thuộc tính X cho kết quả là 1 quan

X(r) = {t |  u r sao cho t = u[X]}
 Nếu

quan hệ r có bậc là n và có k bộ thì X(r) có tối đa
bao nhiêu bậc vàbợ?
 Bậc là |X| và ln có k bộ


16




Đặt tên kết quả trung gian


17

Có thể đặt tên cho các mối quan hệ trung gian

𝝅𝑭𝒏𝒂𝒎𝒆,𝑳𝒏𝒂𝒎𝒆,𝑺𝒂𝒍𝒂𝒓𝒚 (𝝈𝑫𝒏𝒐=𝟓 𝑬𝑴𝑷𝑳𝑶𝒀𝑬𝑬 )


Đặt lại tên thuộc tính



18

Có thể đặt lại tên thuộc tính trong quan hệ kết
quả.


Tốn tử đổi tên thuộc tính
Renaming operator



19

Có thể đổi tên quan hệ hay tên thuộc tính bằng tốn tử
đổi tên .
(R(𝐹), 𝐸): Các tên trường trong quan hệ mới R tương
tự như trong quan hệ cũ E nhưng được đổi tên theo
danh sách 𝐹.
 𝐹 thường có dạng:
oldname  newname
 hay position  newname.


Ví dụ: (C(1 sid1, 5  sid2), S1 x R1)


Các loại phép kết (join)
Phép kết 

 Phép kết bằng
 Phép kết tự nhiên
 Phép kết ngoại


20


-join


21

Cho quan hệ r trên R, quan hệ s trên S. Gọi T =
R  S, các thuộc tính của R khác với các thuộc
tính của S,  là 1 phép so sánh. A  R và B  S là
2 thuộc tính có thể so sánh với nhau bởi phép 

Q(T) = {t |  tr  r và ts  s với t[R] = tr
và t[S] = ts và t[A]  t[B] }


Phép kết  (-join)


Phép kết của 2 quan hệ r và s
𝑟 ⋈𝐴𝜃𝐵 𝑠 = 𝜎𝐴𝜃𝐵 (𝑟𝑥𝑠)




Phép kết có tính giao hoán

22


Ví dụ

23


Ví dụ

24


Ví dụ
 Cho

các lược đồ quan hệ sau:

STUDENT(Id,Name,BirthDate)
PROFESSOR(Id,Name,Qualification)

TEACHING(ProfID,CrsCode,Semester)
COURSE(CrsCode,Name)

TRANSCRIPT(StudId,CrsCode,Semester, Year, Grade)

25



×