Phán đoán riêng

Một phần của tài liệu Xử lý câu truy vấn SQL qua phán đoán và cưỡng chế (Trang 31)

6. Các kết quả dự kiến đạt đƣợc

2.2.1. Phán đoán riêng

Hai trƣờng hợp có thể xẩy ra: Trƣờng hợp thứ nhất, nếu cập nhật là yêu cầu chèn, phán đoán riêng có thể bị ép buộc thi hành tại vị trí đƣa ra cập nhật. Trƣờng hợp nếu cập nhật là xóa hoặc sửa đổi, yêu cầu sẽ gửi đến các vị trí có quan hệ cần cập nhật. Xử lý truy vấn sẽ thực hiện bằng cách lƣợng từ hóa cập nhật cho mỗi mảnh. Các bộ đƣợc tạo ra tại các vị trí sẽ hợp lại thành một quan hệ tạm thời trong trƣờng hợp câu lệnh xóa, hoặc hiệu chỉnh (nghĩa là R+ và R-). Mỗi vị trí có mặt trong cập nhật đều thảm tra các phán đoán có liên quan đến vị trí đó (ví dụ ràng buộc miền khi xóa).

2.2.2.Phán đoán hướng tập hợp

Trƣớc tiên chúng ta nghiên cứu các ràng buộc đơn quan hệ qua một ví dụ. Xét phụ thuộc hàm của ví dụ 2.2. Phán đoán biên dịch kèm với kiểu cập nhật INSERT là

(EMP, INSERT, C) trong đó C là

( e EMP)( NEW1 EMP)( NEW2 EMP) (1)

(NEW1.ENO = e.ENO NEW1.ENAME = e.ENAME) ^ (2)

(NEW1.ENO = NEW2.ENO NEW1.ENAME = NEW2.ENAME) (3)

Dòng thứ hai trong định nghĩa của C kiểm tra ràng buộc giữa các bộ đƣợc chèn (NEWI) và các bộ hiện có (e), còn dòng thứ ba kiểm tra giữa các bộ đƣợc chèn. Điếu

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

này cho thấy tại sao chúng ta khai báo hai biến (NEWl và NEW2) ở dòng thứ nhất. Bây giờ chúng ta xét một thao tác cập nhật EMP. Trƣớc tiên lƣợng từ hoá cập nhật đƣợc thực hiện bởi thể xử lý vấn tin và trả về một hoặc hai quan hệ tạm thời nhƣ trong trƣờng hợp trƣớc. Sau đó những quan hệ tạm thời đƣợc gửi đến tất cả mọi vị trí lƣu EMP. Giả sử rằng cập nhật này là một câu lệnh INSERT. Thế thì mỗi vị trí có chứa một mảnh của EMP sẽ phải thi hành phán đoán C đƣợc mô tả ở trên . Bởi vì e trong C đƣợc lƣợng từ hóa phổ dụng, dữ liệu cục bộ tại mỗi vị trí phải thoả C. Điều này do sự kiện x {a1, a2, …,an)f(x) tƣơng đƣơng với [f(a1) f(a2) … f(an)]. Vì vậy vị trí đƣa ra yêu cầu cập nhật phải nhận đƣợc các thông báo từ mỗi vị trí, cho biết rằng phán đoán này đƣợc thỏa và là một điều kiện cho tất cả mọi vị trí. Nếu phán đoán không đƣợc thỏa mãn tại một vị trí, vị trí này sẽ gửi thông báo lƣu cho biết rằng phán đoán bị vi phạm. Do vậy cập nhật sẽ không có giá trị và khi đó nhiệm vụ của tiểu hệ thống kiểm tra toàn vẹn là quyết định xem toàn bộ chƣơng trình phải đƣợc loại bỏ hay không.

Bây giờ chúng ta xem xét các phán đoán đa quan hệ. Để cho đơn giản, chúng ta giả sử rằng các phán đoán toàn vẹn không có quá một biến bộ biến thiên trên cùng một quan hệ. Có lẽ đây là trƣờng hợp hay gặp nhất. Giống nhƣ với các phán đoán đơn quan hệ, cập nhật đƣợc tính toán tại vị trí đƣa ra yêu cầu này. Cƣỡng chế thi hành đƣợc thực hiện tại vị trí vấn tin chính nhờ thuật toán ENFORCE dƣới đây.

Thuật toán 2.1 ENFORCE

Nguyên liệu: T: kiểu cập nhật; R: quan hệ begin

truy xuất tất cả các phán đoán biện dịch (R, T, Ci)

inconsistency false

for mỗi phán đoán biên dịch do

begin

result truy xuất tất cả các bộ mới (tƣơng ứng là bộ cũ) của Rvới ¬(Ci)

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/ begin inconsistency true exit end if end for

if not(inconsistency) then

gửi các bộ cập nhật đến tất cá các vị trí đang có các mảnh của R else phế bỏ cập nhật

end if

end. {ENFORCE}

Ví dụ 2.5

Chúng ta minh họa thuật toán này qua một thí dụ dựa trên phán đoán khóa ngoại của ví dụ 2.1. Gọi u là một thao tác chèn một bộ mới vào ASG. Thuật toán bên trên dùng phán đoán biên dịch (ASG, INSERT, C), trong đó C là

NEW ASG+ , j PROJ : NEW.PNO = j.PNO

Đối với phán đoán này, câu lệnh lấy dữ liệu là truy xuất tất cả các bộ mới trong ASG+ không thỏa C.

Câu lệnh này có thể đƣợc diễn tả bằng SQL nhƣ sau SELECT NEW. *

FROM ASG+ NEW , PROJ

WHERE COUNT (PROJ.PNO WHERE NEW.PNO = PROJ.PNO) = 0

Chú ý rằng NEW.* biểu thị tất cả các bộ của ASG+.

Vì vậy chiến lƣợc của chúng ta là gửi các bộ mới đến các vị trí có lƣu quan hệ PROJ để thực hiện nối rồi tập trung tất cả mọi kết quả về vị trí vấn tin chính. Với mỗi vị trí có lƣu một mảnh của PROJ, nó sẽ nối mảnh đó với ASG+

và gửi kết quả về vị trí vấn tin chính. Nơi đây sẽ lấy hợp tất cả mọi kết quả. Nếu hợp rỗng thì CSDL nhất quán. Bằng không cập nhật này sẽ dẫn đến một trạng thái không nhất quán. Phế bỏ chƣơng trình khi đó phụ thuộc vào chiến lƣợc đƣợc chọn bởi bộ quản lý chƣơng trình của DBMS phân tán.

Số hóa bởi trung tâm học liệu http://lrc.tnu.edu.vn/

Một phần của tài liệu Xử lý câu truy vấn SQL qua phán đoán và cưỡng chế (Trang 31)

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

(61 trang)