1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 6 Phép toán quan hệ

44 487 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 6 Phép toán quan hệ
Chuyên ngành Khoa học máy tính
Thể loại Chương
Định dạng
Số trang 44
Dung lượng 914,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

So sánh đại số quan hệ và phép tính quan hệ  Nếu theo đại số quan hệ: trình tự thực hiêện như sau: 1.. So sánh đại số quan hệ và phép tính quan hệ  Nếu theo phép tính quan hệ thì: ◦ T

Trang 1

Chương 6 Phép tóan quan hệ

Trang 3

 Xét về mặt khái niệm, thì SQL lại dựa vào 1

ngôn ngữ truy vấn chính quy hoàn toàn khác

(formal query language)

 Relational calculus (phép tính quan hệ)

Trang 5

So sánh đại số quan hệ và

phép tính quan hệ

 Nếu theo đại số quan hệ: trình tự thực hiêện

như sau:

1 Tạo mối kết nối tự nhiên của 2 quan hệ SUPPLIER và

SHIPMENT trên thuộc tính S#;

2 Dùng phép chọn thu hẹp kết quả của kết nối này, chỉ

còn lại các bộ liên quan đến phụ tùng P2;

3 Dùng phép chiếu (project) để kết quả chỉ còn lại

thuộc tính S#

Trang 6

So sánh đại số quan hệ và

phép tính quan hệ

 Nếu theo phép tính quan hệ thì:

◦ Tìm mã nhà cung cấp S# sao cho tồn tại 1 vận chuyển hàng SP nào đó có cùng mã S# và có mã phụ tùng P# là P2

 The calculus formation is descriptive while the

algebraic one is prescriptive

Trang 7

Phép tính quan hệ

 Là 1 phân nhánh của logic vị từ (predicate logic)

 Được dùng trong CSDL dưới 2 dạng:

Phép tính quan hệ bộ (Tuple relational calculus –TRC)

Phép tính quan hệ miền (Domain relational calculus –

DRC)

Trang 8

Phép tính quan hệ bộ - TRC

 Các query trong TRC đều có dạng:

{T| Condition}

Target chứa biến bộ (Tuple variable) T

 Ví dụ: tìm tất cả thông tin các môn học được

dạy trong mùa thu 2007

{ T | TEACHING(T) AND T.Semester = ‘F2007’}

SELECT * FROM TEACHING

WHERE T.Semester = ‘F2007’

Target

Trang 10

Điều kiện phức

(Complex condition)

 Các điều kiện phức được xây dựng một cách đệ

quy như sau:

 C là 1 điều kiện của query nếu nó là 1 điều kiện nguyên tố

 Nếu C1 và C2 là điều kiện của query thì C1 AND C2, C1

OR C2 và NOT C1 cũng là điều kiện của query

 Nếu C là điều kiện của query, R là tên quan hệ và T là

biến bộ thì ∀ T ∈ R (C) và ∃ T ∈ R (C) cũng là điều kiện

query

Trang 11

Lượng từ

 Lượng từ tồn tại (existential quantifier):

∃T ∈ R (C)  tồn tại 1 bộ t∈r sao cho C trở nên

đúng sau khi t được thay thế bởi T

 Lượng từ phổ quát (universal quantifier):

∀T ∈ R (C)  với mọi bộ t ∈ r, C trở nên đúng nếu

t được thay thế bởi biến T

Trang 12

Biến (variable)

 Nếu biến bộ đứng sau 1 lượng từ ∀, ∃ được gọi

là biến buộc ( bound variable) Ngược lại là biến

tự do (free variable)

X là biến tự do trong phát biểu sau

“X is in CS305” (hay có thể biểu diễn thành C(X) )

Phát biểu trên không đúng cũng không sai cho đến khi gán 1 giá trị cho X

Trang 13

Biến (variable)

X là biến buộc (được định lượng) trong phát biểu

sau

“there exists a student X such that X is in CS305”

(biểu diễn thành ∃ X S (C(X)), với S là tập hợp tất cả sinh viên)

TRUE/FALSE tại bất kỳ 1 thời điểm nào

đó của database

Trang 14

So sánh biến buộc và biến tự do

trong TRC

 Biến buộc (Bound variable) được dùng để đánh giá các bộ trong 1 quan hệ (được dùng trong condition)

 Biến tự do (Free variable) được dùng cho các bộ

được trả về bởi truy vấn (được dùng trong target

◦ Khi 1 giá trị được thay thế cho biến S thì điều kiện sẽ trở

nên true hoặc false

◦ Chỉ có biến S là biến tự do trong điều kiện{S | Student(S) AND ( T Transcript

(S.Id = T.StudId AND T.CrsCode =

‘CS305’))}

(S.Id = T.StudId AND T.CrsCode =

‘CS305’))}

Trang 15

Ví dụ 1

 {E| COURSE(E) AND ∀S∈ STUDENT (∃T

∈TRANSCRIPT(T.StudId = S.Id AND T.CrsCode = E.CrsCode))}

???

Liệt kê tất cả các môn học mà mọi sinh viên đều

học

Trang 16

Ví dụ 2

 Liệt kê tên của tất cả giáo sư đã dạy môn

MGT123??

{P.Name| PROFESSOR(P) AND ∃T ∈ TEACHING

(P.Id= T.ProfId AND T.CrsCode = ‘MGT123’)}

 Câu lệnh SQL tương ứng

SELECT P.Name

FROM PROFESSOR P, TEACHING T

WHERE P.Id= T.ProfId AND T.CrsCode = ‘MGT123’

Trang 17

Ví dụ 3

 Tìm mã số tất cả các sinh viên đã học cùng 1

môn 2 lần ở những học kỳ khác nhau

{T.StudId | TRANSCRIPT(T) AND ∃T1 ∈

TRANSCRIPT( T.StudId = T1.StudId AND

T.CrsCode = T1.CrsCode AND T.Semester ≠

T1.Semester)}

Trang 18

Một số lưu ý khi dùng lượng từ

 Các lượng từ tồn tại (∃) kề nhau có thể hoán vị cho nhau

Ví dụ:

∃R ∈ TRANSCRIPT (∃T ∈ TEACHING)( ))

T ∈ TEACHING (∃R ∈ TRANSCRIPT)( ))

Trang 19

Một số lưu ý khi dùng lượng từ

 Các lượng từ phổ quát (∀) và tồn tại (∃) không hoán

vị cho nhau được

 Ví dụ:

∀T ∈ TEACHING(∃R ∈ TRANSCRIPT )

“For every TEACHING tuple there is a TRANSCRIPT

tuple such that statement St is true”

Khác với

R ∈ TRANSCRIPT (∀T ∈ TEACHING … C)

“There is a TRANSCRIPT tuple such that for all

TEACHING tuples St is true”

Trang 20

Một số lưu ý khi dùng lượng từ

 Các lượng từ tương tự như khối begin/end, dùng

Trang 21

Ví dụ 4

 Liệt kê tất cả sinh viên đã học 1 môn học mà mọi giáo sư đều đã từng dạy môn đó

{R.StudId| ∀T ∈ TEACHING (∃T1 ∈ TEACHING

(TRANSCRIPT(R) AND T.ProfId= T1.ProfID AND

T1.CrsCode = R.CrsCode AND T1.Semester =

R.Semester))}

Trang 22

Dùng view trong TRC

 Liệt kê tất cả sinh viên đã học những môn mà

được dạy bởi tất cả các giáo sư CS

 Cách 1:

{R.StudId| ∀T ∈ TEACHING ( ∃T1 ∈ TEACHING

(TRANSCRIPT(R) AND

NOT (∃P∈ PROFESSOR (P.DetpId= ‘CS’ AND P.Id = T.ProfId))

OR (T.ProfId= T1.ProfID AND T1.CrsCode =

Trang 23

Dùng view trong TRC

 Liệt kê tất cả sinh viên đã học những môn mà

được dạy bởi tất cả các giáo sư CS

 Cách 2 :

 Tạo 1 view như sau:

CSPROF = {P.ProfId| PROFESSOR(P) AND P.DeptId = ‘CS’}

 Tạo query

{R.StudId | ∀P ∈ CSPROF ( ∃T1 ∈ TEACHING

(TRANSCRIPT(R) AND P.ProfId = T1.ProfId AND T1.CrsCode

Trang 24

Truy vấn SQL và truy vấn TRC

 Một số sách SQL đã dựa vào đại số quan hệ để

xác định ngữ nghĩa khi phát ra các truy vấn SQL

 Biểu thức đại số cũng không trực giác hơn truy

vấn TRC và cũng không hỗ trợ nhiều với SQL cao cấp

◦ Việc dịch truy vấn SQL có subquery thành biểu thức đại

số không dễ dàng

◦ Đại số quan hệ không phải là phương tiện tốt để dịch

truy vấn SQL thành English để kiểm tra xem nó có đúng yêu cầu mong đợi không.

Trang 25

Truy vấn SQL và truy vấn TRC

 Mặc dù mô tả bằng tiếng Anh không chính quy

bằng định nghĩa toán học nhưng nó giúp cho cả khách hàng và người lập trình dễ hiểu nhau hơn

 SQL query liệu có thỏa mãn những định nghĩa

bằng tiếng Anh?

Trang 26

So sánh giữa SQL và TRC

 Có 1 sự tương đương gần giữa SQL và TRC

 Với 1 SQL query, xây dựng 1 TRC query tương

đương, sau đó dịch TRC query này thành tiếng

Anh

 Chuyển bài toán kiểm chứng SQL query xuống thành bài toán dịch SQL thành TRC

 Với các query phức tạp (có subquery) thì việc

dịch này sẽ như thế nào??

Trang 27

Dịch SQL thành TRC

 Xét 1 mẫu SQL phức như sau:

SELECT R1.A, R2.C

FROM REL1 R1, REL2 R2

WHERE Condition1(R1, R2) AND

R1.B AND (SELECT R3.E

FROM REL3 R3, REL4 R4WHERE Condition2(R2, R3, R4))

Biến R3, R4 là cục bộ của subquery và R1, R2 là

biến toàn cục

Trang 28

Dịch SQL thành TRC

 Subquery được tham số hóa bởi biến toàn cục R2

 Condition2 của subquery hiển nhiên không phải

là dạng mà TRC hiểu được

 Cách giải quyết: dùng view với tập thuộc tính

của danh sách đích của subquery ( tức R3.E)

cùng với biến R2

Trang 29

Dịch SQL thành TRC

 View có tên Temp được định

nghĩa như sau:

Temp = {R3.E,R2.C, R2.D |

REL2(R2) AND REL3(R3) AND ∃R4

∈ REL4 (Condition2(R2,R3,R4)) }

 Biến R2, R3 là free nhưng biến R4 phải định lượng

vì nó không xuất hiện trong danh sách đích

(target) của view

Trang 30

Dịch SQL thành TRC

 SQL query được dịch thành TRC:

{R1.A, R2.C| REL1(R1) AND REL2(R2) AND

Condition1(R1,R2) AND ∃R ∈TEMP (R.E= R1.B

AND R.C= R2.C AND R.D = R2.D) }

Trang 31

Phép tính quan hệ miền

Domain relational calculus

(DRC) Là cơ sở cho ngôn ngữ truy vấn trực quan như

MS Access, IBM QBE, Borland Paradox

 DRC tương tự như TRC, chỉ khác nhau là DRC sử dụng biến miền (Domain variable) thay cho biến

bộ (Tuple variable)

Trang 32

Domain variable

 Biến miền sẽ nhận giá trị từ miền giá trị

(domain) của 1 thuộc tính nào đó

 Ví dụ: quan hệ TEACHING có thuộc tính ProfId

với miền giá trị chứa các số Id hợp lệ Nếu biến

Pid là biến miền thì nó sẽ có giá trị từ miền chứa các ID hợp lệ này

Trang 33

DRC query Kết quả của DRC query cũng là 1 quan hệ và có

dạng chung sau:

{X1,…,Xn| Condition}

 Ví dụ: TRC và DRC query tương đương nhau:

{Pid, Code | TEACHING (Pid, Code, F2007)}

{T | TEACHING(T) AND T.Semester=‘F2007’}

DRC query đơn giản hơn, loại trừ được phép so

sánh T.Semester=‘F2007’

Biến miền Target

Trang 34

◦ Các biến đích ( target variable) chỉ được phép là tự do

trong biểu thức điều kiện

◦ Cho phép các hằng số (constant) xuất hiện trong phần

target (đích)

Trang 35

Điều kiện cơ bản

◦ X oper Y với oper là toán tử so sánh, X và Y là biến miền

◦ X oper const: tương tự như trên nhưng so sánh với hằng

số const

Trang 36

Điều kiện phức

 Các condition phức được xây dựng đệ quy như

sau:

◦ C là điều kiện của query nếu nó là 1 atomic condition

◦ If C1 và C2 là điều kiện của query thì C1 AND C2, C1 OR C2 và NOT C1 cũng là điều kiện của query

◦ Nếu C là điều kiện của query, R là tên của quan hệ và X

là biến miền thì ∀ X ∈ R.A (C) và ∃ X ∈ R.A (C) cũng là

điều kiện của query

Trang 37

Lượng từ và biến miền

 ∀X ∈ R.A (C) đọc là “ với mọi giá trị xảy ra trong cột A của quan hệ R thì điều kiện C phải đúng

 và ∃X ∈ R.A (C) đọc là “ có ít nhất một giá trị x trong cột R.A sao cho C trở nên true nếu x được thay thế cho tất cả các biến X

Trang 38

DRC query

 Có dạng {X1, ,Xn| condtion}

Trong đó Xi với i=1, n hoặc là biến tự do xuất hiện trong condition hoặc là hằng số

 Kết quả của query trên là 1 tập tất cả các chọn

lựa của bộ (x1,…, xn) sao cho khi thay x1 cho

X1, x2 cho X2,… thì condition trở nên đúng

Trang 39

DRC query

 DRC query thường sử dụng nhiều biến hơn TRC

tương ứng vì biến DRC dùng cho mỗi giá trị đơn trong khi biến TRC dùng cho cả bộ

 Miền phổ dụng ( universal domain) U chứa tất cả các giá trị trong tất cả các domain

 ∃X ∈ U (Condition) được viết tắt thành ∃X

(Condition)

Trang 40

Ví dụ

 Liệt kê tên tất cả các giáo sư dạy môn MGT123

{N| ∃I ∈ PROFESSOR.Id ∃D ∈ PROFESSOR.DeptId (PROFESSOR(I,D,N) AND ∃S ∈ TEACHING (I,

MGT123, S)))}

Trang 41

Mối quan hệ giữa đại số quan hệ, phép tính quan hệ TRC, DRC

 Cả 3 ngôn ngữ đều có khả năng diễn đạt mạnh

như nhau: các query được viết bằng ngôn ngữ

này có thể được viết bằng ngôn ngữ khác

Trang 42

Tương đương của 3 ngôn ngữ

◦ Algebra: σ Condition (R)

◦ TRC: {T|R(T) AND Condition1}

◦ DRC: {X1,…,Xn|R(X1,…,Xn) AND Condition2}

Trong đó: nếu Condition có dạng A=B and C=d thì

 Condition1 sẽ là T.A = T.B AND T.C =D

 Condition2 sẽ là X1=X2 AND X3=d

Trang 43

Tương đương của 3 ngôn ngữ

Giả sử R có 5 attribute với A,B,C là 3 thuộc tính

đầu được dùng trong phép chiếu

Trang 44

Tương đương của 3 ngôn ngữ

Giả sử R có 3 thuộc tính A,B,C và S có 2 thuộc tính D,E

Ngày đăng: 12/05/2014, 12:04

TỪ KHÓA LIÊN QUAN

w