Bây giờ ta cần kiểm tra các tiêu chuẩn đối với các thuật toán. • Tính đầy đủ
Lương Trí Quân Trang 37
ASG1
ENO PNO RESP DU R E3 P3 Consultant 10 E3 P4 Engineer 48 E4 P2 Programmer 18 E7 P3 Engineer 36 ASG2
ENO PNO RESP DU R E1 P1 Manager 12 E2 P1 Analyst 24 E2 P2 Analyst 6 E5 P2 Manager 24 E6 P4 Manager 48 E8 P3 Manager 40
Tính đầy đủ của phân mảnh ngang nguyên thuỷ dựa vào các vị từ chọn được dùng.Với điều kiện các vị từ chọn là đầy đủ, phân mảnh thu được cũng đảm bảo đầy đủ. Bời vì cơ sở của thuật toán phân mảnh là tập các vị từ cực tiểu và đầy đủ Pr’, tính đầy đủ sẽ được đảm bảo.
Tính đầy đủ của phân mảnh ngang dẫn xuất có phức tạp hơn. Trước tiên chúng ta định nghĩa lại qui tắc đầy đủ.
Cho R là quan hệ thành viên của đường nối với quan hệ chủ S. Quan hệ S được phân mảnh thành FS = {S1, ... , Sk }. Gọi A là thuộc tính nối giữa R và S. Khi đó với mỗi bộ t của R thì phải có 1 bộ t’ của S thoả t[A]=t’[A].
Tính đầy đủ ở đây thực chất là đảm bảo toàn vẹn tham chiếu. • Tính tái thiết
Tái thiết một quan hệ toàn cục từ các mảnh được thực hiện bằng toán tử hợp trong cả phân mảnh ngang nguyên thuỷ lẫn dẫn xuất.
i F R R R i∈ = •Tính tách rời
Trong phân mảnh ngang nguyên thuỷ tính tách rời được đảm bảo nếu các vị từ hội sơ cấp xác định phân mảnh có tính loại trừ tương hỗ.
Tuy nhiên phân mảnh dẫn xuất có hàm chứa các bán nối có phức tạp hơn. Tính tách rời được đảm bảo nếu đồ thị nối thuộc loại đơn giản. Nếu đồ thị nối không đơn giản thì phải xem xét các giá trị thực sự của phân mảnh.
Ví dụ:
Khi phân mảnh quan hệ PAY ở ví dụ trước, các vị từ hội sơ cấp M={m1, m2} là m1 = SAL ≤ 30000
m2 = SAL > 30000
Vì m1 và m2 loại trừ tương hỗ, phân mảnh của PAY là tách biệt. Tuy nhiên với quan hệ EMP ta đòi hỏi
(i) Mỗi kỹ sư có 1 chức vụ duy nhất.
(ii) Mỗi chức vụ có 1 giá trị lương duy nhất đi kèm.
3.2. Phân mảnh dọc
Một phân mảnh dọc của quan hệ R là tập các mảnh R1,..., Rk, trong đó mỗi mảnh chứa tập con thuộc tính của R và các khoá của R. Mục đích của phân mảnh dọc là phân hoạch một quan hệ thành tập các quan hệ nhỏ hơn để nhiều ứng dụng chỉ cần chạy trên 1 mảnh. Phân mảnh tối ưu cho phép giảm tối đa thời gian thực thi các ứng dụng chạy trên các mảnh đó.
Phân mảnh dọc phức tạp hơn so với phân mảnh ngang. Điều này do số khả năng phân mảnh dọc rất lớn. Trong phân mảnh ngang, nếu tổng số vị từ đơn giản trong Pr là n thì có 2n vị từ hội sơ cấp có thể định nghĩa trên nó. Ngoài ra có thể loại bỏ một số lớn trong đó mâu thuẫn với phép kéo theo hiện có, như vậy sẽ làm giảm di số mảnh dự tuyển. Trong trường hợp phân mảnh dọc, nếu quan hệ có m thuộc tính không khoá, thì số mảnh có thể bằng B(m), số Bell thứ m. Với m lớn B(m) ≈ mm, chẳng hạn với B(10)≈115000, B(15)≈109, B(30)≈1023.
Những giá trị này cho thấy, nỗ lực tìm lời giải tối ưu cho bài toán phân hoạch doc không hiệu quả; vì thế phải dùng đến các phương pháp heuristic. Chúng ta nêu ở đây hai loại heuristic cho phân mảnh dọc các quan hệ toàn cục.
(1) Nhóm thuộc tính: Bắt đầu bằng cách gán mỗi thuộc tính cho một mảnh, và tại mỗi bước nối số mảnh lại cho dến khi thoả tiêu chuẩn nào đó.
(2) Tách mảnh: Bắt đầu bằng một quan hệ và quyết định cách phân hoạch có lợi dựa trên hành vi truy xuất của các ứng dụng trên các thuộc tính.
Trong phần tiếp chúng ta chỉ thảo luận kỹ thuật tách mảnh, vì nó thích hợp phương pháp thiết kế từ trên xuống hơn và giải pháp tối ưu gần với quan hệ đầy đủ hơn là tập các mảnh chỉ có 1 thuộc tính. Hơn nữa kỹ thuật tách mảnh sinh ra các mảnh với các thuộc tính không khoá không chồng nhau.
Việc nhân bản khoá chính cho các mảnh là đặc trưng của phân mảnh dọc, cho phép tái thiết quan hệ toàn cục. Vì thế phương pháp tách mảnh chỉ đề cập đến các thuộc tính không khoá.
Mặc dù có những vấn đề phát sinh, nhân bản các thuộc tính khoá có ưu điểm nổi bật là duy trì tính toàn vẹn ngữ nghĩa sẽ được thảo luận sau.
Một chọn lựa khác đối với nhân bản các thuộc tính khoá là sử dụng một mã định bộ
(TID - tuple identifier). Đây là giá trị duy nhất được hệ thống gán cho mối bộ của quan hệ.