Bắt tuân theo ràng buộc toàn vẹn

Một phần của tài liệu LUẬN VĂN:NGHIÊN CỨU, XÂY DỰNG CƠ SỞ DỮ LIỆU TÍCH CỰC pdf (Trang 42 - 46)

Bắt tuân theo toàn vẹn ngữ nghĩa bao gồm việc loại bỏ các chương trình cập nhật vi phạm một vài ràng buộc toàn vẹn. Một ràng buộc bị vi phạm khi nó trở thành sai trong trạng thái cơ sở dữ liệu mới được cập nhật sinh ra. Khó khăn chính trong việc thiết kế một hệ thống con toàn vẹn là việc tìm các thuật toán bắt tuân theo có hiệu quả. Có hai phương pháp cơ bản cho phép loại bỏ các cập nhật không tương thích. Phương pháp thứ nhất dựa trên sự phát hiện tính không tương thích. Cập nhật u được thực hiện gây ra việc thay đổi trạng thái cơ sở dữ liệu D thành Du. Bằng việc áp dụng các kiểm tra được suy diễn từ các ràng buộc này, thuật toán bắt tuân theo kiểm tra rằng tất cả các ràng buộc thích hợp là thỏa mãn trong trạng thái Du. Nếu trạng thái Du là không tương thích, hệ QTCSDL có thể cố gắng hoặc là đi đến một trạng thái tương thích khác D’u bằng việc sửa đổi Du với các hành động phụ thêm, hoặc là khôi phục trạng thái D bằng cách hủy bỏ u. Bởi vì các kiểm tra này được áp dụng sau khi đã thay đổi trạng thái cơ sở dữ liệu, chúng thường được gọi là hậu kiểm tra (posttest). Phương pháp này có thể không hiệu quả nếu một lượng công việc lớn (cập nhật D) phải bị hủy bỏ trong trường hợp một thất bại toàn vẹn.

R5 Thêm Sửa Xoá Dathang + - - Hoadon + + -

Phương pháp thứ hai dựa trên việc ngăn ngừa sự không tương thích. Một cập nhật được thực hiện chỉ khi nó làm thay đổi trạng thái cơ sở dữ liệu thành một trạng thái tương thích. Các bộ chủ thể cho cập nhật hoặc là đã có sẵn một cách trực tiếp (trong trường hợp chèn) hoặc phải được trích rút từ cơ sở dữ liệu (trong trường hợp loại bỏ hoặc sửa đổi). Thuật toán bắt tuân theo kiểm tra rằng tất cả các ràng buộc thích hợp sẽ thỏa mãn sau khi cập nhật các bộ giá trị này. Điều này thường được thực hiện bằng cách áp dụng với các bộ giá trị này các kiểm tra được suy diễn từ các ràng buộc toàn vẹn. Biết rằng các kiểm tra này được áp dụng trước khi trạng thái cơ sở dữ liệu được thay đổi, chúng thường được gọi là các tiền kiểm tra. Phương pháp ngăn ngừa là hiệu quả hơn phương pháp phát hiện bởi vì các cập nhật không bao giờ cần bị hủy bỏ do vi phạm tính toàn vẹn.

Thuật toán sửa đổi truy vấn là một ví dụ của phương pháp ngăn ngừa có hiệu quả đặc biệt ở việc bắt tuân theo các ràng buộc miền. Nó thêm các điều kiện khẳng định về điều kiện truy vấn bằng phép toán AND sao cho truy vấn được sửa đổi có thể bắt tuân theo tính toàn vẹn.

Để xử lý các khẳng định tổng quát hơn, tiền kiểm tra có thể được tạo ra tại thời điểm định nghĩa khẳng định và bắt tuân theo tại thời gian chạy khi các update xảy ra. Phương pháp được hạn chế đến các cập nhật chèn hoặc xóa một bộ giá trị đơn của quan hệ đơn. Thuật toán xây dựng một tiền kiểm tra tại thời điểm định nghĩa khẳng định cho mỗi khẳng định và mỗi một kiểu cập nhật (insert, delete). Các tiền kiểm tra này được bắt tuân theo tại thời gian chạy. Phương pháp này chấp nhận nhiều quan hệ, các khẳng định nhiều biến, có thể với các hàm nhóm. Nguyên tắc là sự thay thế các biến bộ trong khẳng định bằng các hằng từ một bộ được cập nhật. Mặc dù sự đóng góp quan trọng của nó cho nghiên cứu, phương pháp là khó sử dụng được trong môi trường thực vì sự hạn chế trên các cập nhật.

Trong phần còn lại giới thiệu một phương pháp tổ hợp tính tổng quát của các cập nhật được hỗ trợ với ít nhất tính tổng quát của các khẳng định mà đối với nó các tiền kiểm tra được tạo ra. Phương pháp này dựa trên tích, tại thời

điểm định nghĩa khẳng định, của các khẳng định thu thập (compled assertion) được sử dụng muộn hơn để ngăn ngừa tổng quát xử lý tập hợp trọn vẹn các khẳng định được sinh ra trong phần trước. Nó làm giảm đáng kể phần của cơ sở dữ liệu phải được kiểm tra khi các khẳng định bắt tuân theo trong sự có mặt của các cập nhật.

Định nghĩa của một khẳng định thu thập dựa trên khái niệm các quan hệ vi phân (differentiale relation). Giả sử u là một cập nhật của quan hệ R. R+ và R- là các quan hệ vi phân của R theo u, trong đó R+ chứa các bộ giá trị đươc chèn vào R bởi u và R- chứa các bộ giá trị của R bị loại bỏ bởi u. Nếu u là một phép chèn, R- là rỗng. Nếu u là một phép xóa, R+ là rỗng. Cuối cùng, nếu u là phép sửa đổi quan hệ R sau khi sửa đổi là bằng với R+ (R – R+).

Một khẳng định thu thập là một bộ ba (R, T, C) trong đó R là quan hệ, T là một kiểu cập nhật, C là một khẳng định biến thiên trên các quan hệ vi phân bao hàm trong một cập nhật của kiểu T. Khi một ràng buộc toàn vẹn I được định nghĩa, một tập hợp các khẳng định thu thập có thể được sinh ra cho các quan hệ được sử dụng bởi I. Mỗi khi một quan hệ được bao hàm trong I được cập nhật bởi một chương trình u, các khẳng định thu thập phải được kiểm tra để bắt tuân theo I chỉ là khằng định đã được định nghĩa trên I đối với kiểu cập nhật u. Ưu điểm thao tác của phương pháp này là gấp đôi. Trước tiên, số các khẳng định để bắt tuân theo là được làm tối thiểu bởi vì chỉ các khẳng định thu thập của kiểu u cần được kiểm tra. Thứ hai, chi phí bắt tuân theo một khẳng định thu thập là nhỏ hơn chi phí bắt tuân theo I bởi vì nói chung, các quan hệ vi phân là nhỏ hơn nhiều so với các quan hệ cơ sở.

Các khẳng định thu thập có thể nhận được bằng cách áp dụng các quy tắc chuyển đổi thành khẳng định nguyên thủy. Các quy tắc dựa trên một phân tích cú pháp của khẳng định và số lượng các giao hoán. Chúng cho phép thay thế các quan hệ vi phân cho quan hệ cơ sở. Bởi vì các khẳng định thu thập là đơn giản hơn các khẳng định nguyên thủy, quá trình tạo ra chúng được gọi là đơn giản hóa.

Xét biểu thức được sửa đổi của ràng buộc khóa ngoài. Các khẳng định thu thập liên kết với ràng buộc này là:

(ASG, INSERT, C1), (PROJ, DELETE, C2) và (PROJ, MODIFY,C3) Trong đó:

C1 là

NEW ASG+, j PROJ : NEW.PNO = j.PNO C2 là

g ASG, OLD PROJ : g.PNO OLD.PNO C3 là

g ASG, OLD PROJ-, NEW PROJ- ; g.PNO OLD.PNO OR OLD.PNO = NEW.PNO

Ưu điểm do các khẳng định thu thập như vậy cung cấp là hiển nhiên. Ví dụ, một loại bỏ trên quan hệ ASG không nằm trong kiểm tra khẳng định nào.

Bây giờ chúng ta tổng kết thuật toán bắt tuân theo. Nhớ lại rằng một chương trình cập nhật cập nhật tất cả các bộ giá trị của một quan hệ R thỏa mãn một điều kiện nào đó. Thuật toán hành động trong hai bước: bước thứ nhất tạo ra các quan hệ vi phân R+ và R- từ R. Bước thứ hai đơn giản bao gồm việc trích rút các bộ giá trị của R+ và R- không thỏa mãn các khẳng định thu thập. Nếu không có bộ giá trị nào được rút ra, khẳng định là hợp lệ.

Ví dụ 1.15

Giả sử có một phép xóa trên PROJ. Sự bắt tuân theo (PROJ, DELETE, C2) bao gồm việc tạo ra lệnh sau đây:

Kết quả trích rút tất cả các bộ giá trị của PROJ- mà ở đó ¬ (C2) Sau đó, nếu kết quả là rỗng, khẳng định được kiểm tra bởi cập nhật.

Chương II

CƠ SỞ DỮ LIỆU TÍCH CỰC

Một phần của tài liệu LUẬN VĂN:NGHIÊN CỨU, XÂY DỰNG CƠ SỞ DỮ LIỆU TÍCH CỰC pdf (Trang 42 - 46)