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ệ. Phân rã vấn tin đều giống nhau trong cả hệ thống tập trung lẫn phân tán. 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.
2.3.3.1. Chuẩn hóa
Mục đích của việc chuẩn hoá là biến đổi một câu truy vấn sang một dạng chuẩn để xử lý tiếp. Với các ngôn ngữ quan hệ như SQL, việc chuyển đổi quan trọng nhất là lượng từ hoá truy vấn (mệnh đề WHERE). Có 2 dạng chuẩn có thể cho việc dự đoán: một là đưa ra mức độ ưu tiên cho phép AND và còn lại cho phép OR.
Dạng chuẩn hội là hội của các tuyển như sau: (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 tuyển: (p11 ∧ p12 ∧ … ∧ p1n) ∨…∨ (m1
Biến đổi các vị từ phi lượng từ bằng cách sử dụng các quy tắc tương đương như sau: 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
Thí dụ “Tìm tên các sinh viên học môn MH1 có điểm thi lần 1 là 9 hoặc 10 điểm”.
SELECT HOTEN
FROM SINHVIEN, DIEM
WHERE SINHVIEN.MASV = DIEM.MASV AND MAMONHOC = “MH1”
AND LANTHI = 1
AND DIEMTHI = 9 OR DIEMTHI = 10
Lượng từ hoá dạng chuẩn hội là:
SINHVIEN.MASV = DIEM.MASV ∧ DIEM.MAMONHOC = “MH1” ∧
LANTHI = 1 ∧ (DIEMTHI = 9 V DIEMTHI = 10)
Lượng từ hoá dạng chuẩn tuyển là:
(SINHVIEN.MASV = DIEM.MASV ∧ DIEM.MAMONHOC = “MH1” ∧
LANTHI = 1 ∧ DIEMTHI = 9) ∨ (SINHVIEN.MASV = DIEM.MASV ∧
DIEM.MAMONHOC = “MH1” ∧ LANTHI = 1 ∧ DIEMTHI = 10)
2.3.3.2. Phân tích
Bước phân tích câu truy vấn cho phép loại bỏ câu truy vấn đã được chuẩn hoá nhưng sai kiểu hoặc không đúng ngữ nghĩa.
Sai kiểu: Một câu truy vấn sai kiểu nếu có một thuộc tính trong quan hệ hay tên một quan hệ cha được khai báo trong lược đồ toàn cục, hoặc các thao tác áp dụng cho các thuộc tính có kiểu không thích hợp. Tìm các truy vấn có kiểu không đúng tương tự
như kiểm tra khai báo kiểu trong các ngôn ngữ lập trình. Chẳng hạn SELECT MAMONHOC FROM SINHVIEN WHERE HOTEN > 5. Truy vấn này sai kiểu, vì
Thuộc tính MAMONHOC không phải là thuộc tính của lược đồ quan hệ toàn
cục.
HOTEN có kiểu chuỗi không thể so sánh với 5 kiểu số.
Sai ngữ nghĩa: Một câu truy vấn được 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ả. Để có thể xác định tính đúng đắn ngữ nghĩa câu truy vấn tổng quát, bằng cách biểu diễn đồ thị truy vấn hay đồ thị kết nối gồm các phép chọn, phép chiếu và các phép kết nối, không chứa các phép tuyển và phép phủ định.
Người ta biểu diễn bằng đồ thị vấn tin, với một số kí pháp sau :
Một Node biểu thị một quan hệ kết quả;
Các nút khác biểu thị cho quan hệ toán hạng;
Đường nối giữa 2 Node không phải là quan hệ kết quả biểu thị cho phép kết nối;
Đường nối có Node đích là quan hệ kết quả biểu thị cho phép chiếu;
Các Node quan hệ toán hạng có thể được gán nhãn là một vị từ chọn hoặc vị từ tự kết nối;
Đồ 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ụ xét cơ sở dữ liệu với các bảng dữ liệu:
Diem (MaSV, Mamonhoc, lanthi, diemthi) Sinhvien (MaSV, hoten, diachi, malop) Monhoc (Mamonhoc, tenmonhoc, soTC)
“Tìm tên của những sinh viên có malop=‟L1‟ có điểm thi môn „Cơ sở dữ liệu‟ cao hơn hoặc bằng 5.
Select hoten
From Diem, Sinhvien, Monhoc
Where Diem.MaSV = Sinhvien.MaSV and Diem.Mamonhoc = Monhoc.Mamonhoc and tenmonhoc = „Cơ sở dữ liệu‟
Các vị từ đơn giản: p1: Diem.MaSV = Sinhvien.MaSV; p2: Diem.Mamonhoc = Monhoc.Mamonhoc; p3: tenmonhoc = „Cơ sở dữ liệu‟; p4: malop =‟L1‟; p5: diemthi >=5.
Hình 2.7. Đồ thị câu hỏi, tức đồ thị vấn tin
Hình 2.8. Đồ thị nối quan hê ̣
2.3.3.3. Loại bỏ dư thừa
Trong một câu truy vấn, có thể loại bỏ các vị từ dư thừa và các thao tác dư thừa bằng cách giản ước các lượng từ hoá bằng các quy tắc luỹ đẳng sau đây:
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
2.3.3.4. Viết lại câu vấn tin
Quá trình viết lại câu hỏi cơ sở dữ liệu phân tán, người ta tuân theo hai bước: 1. Biến đổi câu vấn tin từ phép tính quan hệ thành đại số quan hệ
Để 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ụ đối với câu vấn tin: “Tìm tên các sinh viên trừ Trần Quân, đã thi môn Cơ sở dữ liệu với điểm thi là 9 hoặc 10 điểm”. Ngườ i ta có thể sử du ̣ng câu SQL như sau :
SELECT hoten
FROM Sinhvien, Diem, Monhoc WHERE Sinhvien.MaSV=Diem.MaSV
AND Diem.Mamonhoc=Monhoc.Mamonhoc AND hoten „Trần Quân‟
AND Monhoc.Tenmonhoc=‟Cơ sở dữ liệu‟ AND (Diemthi=9 OR Diemthi=10)
Các phép đại số quan hê ̣ thể hiện trong cây trong hình vẽ.
Cho 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 : R x S S x R; R|><| S S|><| R.
Quy tắc này cũng áp dụng được cho hợp nhưng không áp dụng cho hiệu tập hợp hay nối nửa.
2. Tính kết hợp của các phép toán hai ngôi :
(R x S) x T R x (S x T); (R |><| S) |><| T R |><| (S |><| T); 3. Tính lũy đẳng của các phép toán đơn ngôi:
Nếu R được định nghĩa trên tập thuộc tính A và A‟ A, A” A và A‟ A” thì
A‟A‟(A” (R)) A‟(R).
p1(A1)(p2(A2)(R))p1(A1) p2(A2)(R); trong đó pi là một vị từ được áp dụng cho thuộc tính Ai
4. Giao hoán phép chọn với phép chiếu:
A1…An(p(Ap)(R)) A1…An(p(Ap)(A1…An,Ap(R))).
Lưu ý rằng nếu Ap là phần tử của {A1, A2,…,An} thì phép chiếu cuối cùng trên {A1, A2,…,An} ở vế phải của hệ thức không có tác dụng.
5. Giao hoán phép chọn với phép toán hai ngôi :
p(Ai)(R x S) (p(Ai)(R)) x S;
p(Ai)(R |><| p(Ạj, Bk)S) (p(Ai)(R)) |><| p(Ạj, Bk)S;
p(Ai)(R T) p(Ai)(R) p(Ai)(T)
6. Giao hoán phép chiếu với phép toán hai ngôi:
Nếu C=A‟ B‟, trong đó A‟A, B‟ B, và A, B là các tập thuộc tính tương ứng của quan hệ R và S, chúng ta có:
C(R x S) A(R)B(S);
C(R |><| p(Ại, Bj)S) A(R) |><| p(Ại, Bj) B(S);
C(R S) A(R) B(S).
Các quy tắc trên có thể được sử dụng để cấu trúc lại cây một cách có hệ thống nhằm loại bỏ các cây “xấu”, áp dụng các phép toán đơn ngôi (chọn/ chiếu) càng sớm càng tốt nhằm giảm bớt kích thước của quan hệ trung gian. Tái cấu trúc cây trong hình trên sinh ra cây trong hình sau. Nó tránh truy xuất nhiều lần đến cùng một quan hệ và các phép toán chọn lựa nhiều nhất được thực hiện trước tiên.
Hình 2.10. Cây đại số quan hê ̣ đã cấu trúc lại
2.4. Kết luận
Chương trên đã trình bày một số khái niệm liên quan đến thiết kế cơ sở dữ liệu phân tán. Người ta sử du ̣ng nhi ều kiểu tổ chức phân tán khác nhau . Hai dạng được kể đến là (i) phân đoạn ngang; (ii) phân đoạn dọc.
Việc hỏi dữ liệu, tức đặt câu truy vấn trong cơ sở dữ liệu phân tán là cần thiết. Nó được thực hiện theo các bước. Việc sắp xếp lại các phép đại số quan hê ̣ có ý nghĩa đ ối với việc tối ưu câu hỏi quan hệ.
Chƣơng 3. Xây dựng cơ sở dữ liệu phân tán phục vụ quản lý đào tạo