O Q= Q {TQ ∪ BQ}
1.4.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ừ vi :
trong đó mi 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: ~
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
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ụ 4.3:
Tìm tên các nhân viên đang làm việc ở dự án Pl 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= "Pl"
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= "Pl" ^ (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="Pl" ^ Thời~gian=12) v (NV.MNV=PC.MNV ^ PC.MDA="Pl" ^ 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.
Ví dụ : PC (MÃNV, MaDA, NVỤ, Truân) 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:
pl: PC.MaNV = NV.MaNV p2: PC.MaDA=DA.MaDA p 3 : TÊNDA= ' CADICAM' p4 : CVỤ = ' TP '
Ví dụ: Select TÊNNV From PC, NV,DA
Where PC.MaNV = NV.MaNV
and TÊNDA= ' CADICAM ' and CVỤ = ' TP ' and khan > 3 6
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
Ví dụ : Select CVỤ From NV
Where một (CVỤ ='TP') and (CVỤ='TP' oi Cvụ='pp') and not (CVỤ= PPp')) oi Tênnv='Mai' p1: CVụ = ‘TP’ Lượng từ hoá : p2: CVỤ='PP' (¬p1∧(p1v p2) ∧ ¬p2 ) v p3 p3 : TÊNNV = 'Mai' áp dụng : ¬p1 ((pl∧ ∧ ¬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' y Viết lại câu vấn tin
Bước này được chia thành hai bước nhỏ:
(l) 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.
Thí dụ 4.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 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={Al, A2,…,An} và quan hệ S được định nghĩa trên các thuộc tính B={BBl, B2B ,…, Bn}