Phân rã vấn tin

Một phần của tài liệu Đồ án cơ sở dữ liệu (Trang 52 - 58)

CHƯƠNG 3. XỬ LÝ VẤN TIN

3.2. Phân rã vấn tin

Phân rã vấn tin là giai đoạn đầu tiên của quá trình xử lý câu vấn tin. Nó biến đổi câu vấn tin ở dạng phép tính quan hệ thành câu vấn tin đại số quan hệ. Các vấn tin nhập xuất đều tham chiếu các quan hệ toàn cục và không dùng đến các thông tin phân bố dữ liệu. Vì thế phân rã vấn tin đều giống nhau trong cả hệ thống tập trung lẫn phân tán, câu vấn tin xuất sẽ đúng về ngữ nghĩa và đạt chất lượng theo nghĩa là đã loại bỏ các hành động không cần thiết. Phân rã vấn tin có thể xem như bốn bước liên tiếp nhau: Chuẩn hoá, phân tích, loại bỏ dư thừa, viết lại câu vấn tin

Chuẩn hoá

Mục đích của chuẩn hoá (normalization) là biến đổi câu vấn tin thành một dạng chuẩn để xử lý tiếp. Chuẩn hoá một vấn tin nói chung gồm có đặt các lượng từ và lượng từ hoá vấn tin bằng cách áp dụng độ ưu tiên của các toán tử logic.

Với các ngôn ngữ quan hệ như SQL, biến đổi quan trọng nhất là lượng từ hoá vấn tin (mênh đề Where), có thể đó là một vị từ phi lượng từ với độ phức tạp nào đó với tất cả các lượng từ cần thiết (∀ hoặc ∃) được đặt phía trước. Có hai dạng chuẩn có thể cho vị từ, một có thứ bậc cao cho AND(∧) và loại còn lại cho thứ bậc cao OR (∨).

Dạng chuẩn hội là hội (vị từ ∧) của các tuyển vị từ (các vị từ ∨):

(p11 ∨ p12 ∨….∨ p1n) ∧ …..∧ (pm1∨ pm2 ∨….∨ pmn)

trong đó pij là một vị từ đơn giản. Ngược lại, một lượng từ hoá ở dạng chuẩn tuyển như sau:

(p11 ∧ p12 ∧….∧ p1n) ∨ ….∨ (pm1∧ pm2 ∧….∧ pmn)

Biến đổi các vị từ phi lượng từ là tầm thường bằng cách sử các quy tắc tương đương cho cỏc phộp toỏn logic (∧, ∨, ơ): 9

1. p1 ∧ p2 ⇔ p2 ∧ p1

2. p1 ∨ p2 ⇔ p2 ∨ p1

3. p1 ∧( p2 ∧ p3) ⇔ (p1 ∧ p2 )∧ p3

4. p1 ∨( p2 ∨ p3) ⇔ (p1 ∨ p2 )∨ p3

5. p1 ∧( p2 ∨ p3) ⇔ (p1 ∧ p2 )∨(p1∧ p3 ) 6. p1 ∨( p2 ∧ p3) ⇔ (p1∨ p2 ) ∧ (p1∨ p3 ) 7. ơ(p1 ∧ p2 )⇔ ơp1∨ ơp2

8. ơ(p1 ∨ p2 )⇔ ơp1 ∧ơp2

9. ơ(ơp)⇔ p

Trong dạng chuẩn tắc tuyển, câu vấn tin có thể được xử lý như các câu vấn tin con hội độc lập, được nối bằng phép hợp (tương ứng với các tuyển mệnh đề).

Nhận xét: Dạng chuẩn tuyển ít được dùng vì dẫn đến các vị từ nối và chọn trùng nhau. Dạng chuẩn hội hay dùng trong thực tế

Thí dụ 3.3:

Tìm tên các nhân viên đang làm việc ở dự án P1 trong 12 tháng hoặc 24 tháng.

Câu vấn tin được diễn tả bằng SQL như sau:

SELECT TênNV

FROM NV, PC

WHERE NV.MNV=PC.MNV

AND PC.MDA= “P1”

AND Thời gian=12 OR Thời gian=24 Lượng từ hoá ở dạng chuẩn hội là:

NV.MNV=PC.MNV ∧ PC.MDA= “P1” ∧ (Thời gian=12 ∨ Thời gian=24)

Còn lượng từ hoá ở dạng chuẩn tuyển là

(NV.MNV=PC.MNV ∧ PC.MDA=”P1” ∧ Thời gian=12) ∨ (NV.MNV=PC.MNV ∧ PC.MDA=”P1” ∧ Thời gian=24)

ở dạng sau, xử lý hai hội độc lập có thể là một công việc thừa nếu các biểu thức con chung không được loại bỏ.

Phân tích

Phân tích câu vấn tin cho phép phế bỏ các câu vấn tin đã chuẩn hoá nhưng không thể tiếp tục xử lý được hoặc không cần thiết, những lý do chính là do chúng sai kiểu hoặc sai ngữ nghĩa.

- Một câu vấn tin gọi là sai kiểu nếu nó có một thuộc tính hoặc tên quan hệ chưa được khai báo trong lược đồ toàn cục, hoặc nếu nó áp dụng cho các thuộc tính có kiểu không thích hợp.

Select MaDA From TenNV >200

- Một câu vấn tin gọi là sai nghĩa nếu các thành phần của nó không tham gia vào việc tạo ra kết quả.

Nếu các các vấn tin không chứa các tuyển và phủ định ta có thể dùng đồ thị vấn tin. Vấn tin chứa phép chọn nối chiếu.

- Biểu diễn bằng đồ thị vấn tin:

+ 1 nút biểu thị quan hệ kết quả

+ Các nút khác biểu thị cho quan hệ toán hạng

+ Một cạnh giữa hai nút không phải là quan hệ kquả biểu diễn cho một nối + Cạnh mà nút đích là kết quả sẽ biểu thị cho phép chiếu.

+ Các nút không phải là kết quả sẽ được gán nhãn là một vị từ chọn hoặc 1 vị từ nối (chính nó).

- Đồ thị nối: một đồ thị con quan trọng của đồ thị vấn tin, nó chỉ có các nối.

Thí dụ 3.4:

PC (MãNV, MaDA, NVụ, Tgian) NV (MaNV, TênNV, CVụ)

DA (MaDA, TênDA, Kphí, Đđiểm)

“ Tìm tên, Nvụ các của những người có Cvụ=’TP’ đã làm việc ở dự án

‘CAD/CAM’ trong hơn 3 năm”

Select TênNV From PC, NV,DA

Where PC.MaNV = NV.MaNV and PC.MaDA=DA.MaDA and TênDA=’CAD/CAM’ and CVụ =’TP’ and tgian >36

Các vị từ đơn giản:

p1: PC.MaNV = NV.MaNV p2: PC.MaDA=DA.MaDA

p3: TênDA=’CAD/CAM’ p4: CVụ =’TP’ p5: tgian >36

Đồ thị vấn tin Đồ thị nối

Thí dụ 3.5:

Select TênNV From PC, NV,DA

Where PC.MaNV = NV.MaNV

and TênDA=’CAD/CAM’ and CVụ =’TP’ and tgian >36 PC

N V

D A

K Q

P1 P2

P3 P5

P4

PC

N

V D

A

PC

VN

D A

K Q P1

P 3 P

5

P 4

PC

NV D

A

=> Đồ thị không liên thông

Nhận xét: Câu vấn tin sai ngữ nghĩa nếu đồ thị vấn tin của nó không liên thông:

1 hoặc nhiều đồ thị con bị tách rời với đồ thị kết quả.

Loại bỏ dư thừa

Một câu vấn tin của người sử dụng thường được diễn tả trên một khung nhìn có thể được bổ sung thêm nhiều vị từ để có được sự tương ứng khung nhìn - quan hệ, bảo đảm được tính toàn vẹn ngữ nghĩa và bảo mật. Thế nhưng lượng từ hoá vấn tin đã được sửa đổi này có thể chứa các vị từ dư thừa, có thể phải khiến lặp lại một số công việc. Một cách làm đơn giản vấn tin là loại bỏ các vị từ thừa

- Loại bỏ vị từ dư thừa bằng qui tắc luỹ đẳng: 10

1. p Λ p ⇔ p 6. p v True ⇔ True

2. p v p ⇔ p 7. p Λ ơ p ⇔ False

3. p Λ True ⇔ p 8. p v ơ p ⇔ True

4. p v False ⇔ p 9. p1 Λ (p1v p2) ⇔ p1 5. p Λ False ⇔ False 10. p1 v (p1 Λ p2) ⇔ p1 Thí dụ 3.6 :

Select CVụ From NV

Where (Not (CVụ =’TP’) and (CVụ=’TP’ or CVụ=’PP’) and not (CVụ=’PP’)) or TênNV=’Mai’

p1: CVụ =’TP’ Lượng từ hoá:

p2: CVụ=’PP’ (ơ p1 Λ (p1 v p2) Λ ơ p2 ) v p3 p3: TênNV=’Mai’

ỏp dụng : (ơ p1 Λ ((p1 Λ ơ p2 ) v (p2 Λ ơ p2 ))) v p3 ỏp dụng 3: (ơ p1 Λ p1 Λ ơ p2 ) v (ơ p1 Λ p2 Λ ơ p2 ) v p3 ỏp dụng 7: (False ơ p2) v (ơ p1 Λ False) v p3

áp dụng 5: False v False v p3 = p3 Viết lại: Select CVụ

From NV

where TênNV=’Mai’

Viết lại câu vấn tin

Bước này được chia thành hai bước nhỏ:

(1) Biến đổi câu vấn tin từ phép tính quan hệ thành đại số quan hệ (2) Cấu trúc lại câu vấn tin đại số nhằm cải thiện hiệu năng.

Để cho dễ hiểu, chúng ta sẽ trình bày câu vấn tin đại số quan hệ một cách hình ảnh bằng cây toán tử. Một cây toán tử là một cây với mỗi nút lá biểu thị cho một quan hệ được lưu trong CSDL và các nút không phải là nút lá biểu thị cho một quan hệ trung gian được sinh ra bởi các phép toán quan hệ. Chuỗi các phép toán đi theo hướng từ lá đến gốc biểu thị cho kết quả vấn tin.

Biến đổi câu vấn tin phép tính quan hệ bộ thành một cây toán tử có thể thu được dễ dàng bằng cách sau. Trong SQL, các nút lá có sẵn trong mệnh đề FROM. thứ hai nút gốc được tạo ra như một phép chiếu chứa các thuộc tính kết quả. Các thuộc tính này nằm trong mệnh đề SELECT của câu vấn tin SQL. Thứ ba, lượng từ hoá (mệnh đề Where của SQL) được dịch thành chuỗi các phép toán quan hệ thích hợp (phép chọn, nối, hợp, ..) đi từ các nút lá đến nút gốc. Chuỗi này có thể được cho trực tiếp qua thứ tự xuất hiện của các vị từ và toán tử.

Thí dụ 3.7:

Câu vấn tin: “tìm tên các nhân viên trừ J.Doe đã làm cho dự án CAD/CAM trong một hoặc hai năm”.

Biểu thức SQL là:

SELECT TênNV

FROM DA, PC, NV

WHERE PC.MNV=NV.MNV

AND PC.MDA=DA.MDA

AND TênNV ≠ “J.Doe”

AND DA.TênDA=”CAD/CAM”

AND (Thời gian=12 OR Thời gian=24) Các thể được ánh xạ thành cây trong hình dưới.

Bằng cách áp dụng các quy tắc biến đổi, nhiều cây có thể được thấy rằng tương đương với cây được tạo ra bằng phương pháp được mô tả ở trên. Sáu quy tắc tương đương hữu ích nhất và được xem là các phép toán đại số quan hệ cơ bản :

R, S, T là những quan hệ, trong đó R được định nghĩa trên các thuộc tính A={A1, A2,…,An} và quan hệ S được định nghĩa trên các thuộc tính B={B1, B2,

…,Bn}.

1. Tính giao hoán của phép toán hai ngôi

Một phần của tài liệu Đồ án cơ sở dữ liệu (Trang 52 - 58)

Tải bản đầy đủ (DOC)

(118 trang)
w