Kiểm sốt tồn vẹn ngữ nghĩa tập trung

Một phần của tài liệu Cơ sở dữ liệu phân tán (Trang 95)

Một tiểu hệ thống kiểm soỏt toàn vẹn ngữ nghĩa cú hai thành phần chớnh: một ngụn ngữ cho phộp diễn tả và thao tỏc cỏc phỏn đốn tồn vẹn, và một định chế chịu trỏch nhiệm thực hiện cỏc hành động cụ thể nhằm ộp buộc tớnh tồn ven khi cú cập nhật.

a) Cỏc loại ràng buộc:Bằng một ngụn ngữ cấp cao, người quản trị cơ sở dữ liệu cú thể

thiết lập được cỏc ràng buộc toàn vẹn, khi tạo quan hệ hoặc khi quan hệ đó cú dữ liệu, cú chung một cỳ phỏp. Ngụn ngữ này cho phộp mụ tả, ghi nhận hoặc loại bỏ ràng buộc toàn vẹn. Trong cỏc hệ CSDL quan hệ, ràng buộc toàn vẹn được định nghĩa như là cỏc phỏn đoỏn. Một phỏn đoỏn (Assertion) là một biểu thức đặc biệt được mụ tả bằng phộp tớnh quan

hệ bộ, trong đú mỗi biến được lượng từ húa với mọi (∀) hoặc tồn tại (∃). Vỡ vậy, một phỏn

đốn cú thể được xem như là một lượng từ húa cõu truy vấn, mang giỏ trị đỳng hoặc sai cho

mỗi bộ trong tớch Đề cỏc của cỏc quan hệ được xỏc định bởi cỏc biến bộ. Cú ba loại ràng buộc toàn vẹn: ràng buộc tiền định, ràng buộc tiền dịch hoặc ràng buộc tổng quỏt.

Xột cỏc qun hệ:

EMP(ENO, ENAME, TITLE) PROJ(PNO, PNAME, BUDGET) ASG(ENO, PNO, RESP, DUR)

Ràng buộc tiền định (Predefined Constraint): Ràng buộc tiền định định nghĩa dựa trờn

cỏc từ khúa đơn giản để diễn tả chớnh xỏc cỏc ràng buộc trong mơ hỡnh quan hệ, chẳng hạn như ràng buộc giỏ trị của thuộc tớnh khơng nhận giỏ trị null, hoặc khúa duy nhất, khúa ngoại hoặc phụ thuộc hàm....

Vớ dụ 4.4: Ràng buộc tiền định

• Thuộc tớnh khơng nhận giỏ trị null: Mó số nhõn viờn trong quan hệ EMP khụng

được nhận giỏ trị null.

ENO NOT NULL IN EMP

• Khúa duy nhất: Cặp (ENO, PNO) là khúa duy nhất của quan hệ ASG. (ENO, PNO) UNIQUE IN ASG

• Khúa ngoại: Mó dự ỏn PNO trong quan hệ ASG là khúa ngoại tương ứng với khúa chớnh PNO của quan hệ PROJ. Núi cỏch khỏc, một dự ỏn được tham chiếu trong quan hệ ASG phải tồn tại trong quan hệ PROJ.

PNO IN ASG REFERENCES PNO IN PROJ

• Phụ thuộc hàm: Tờn nhõn viờn phụ thuộc hàm Mó nhõn viờn trong quan hệ EMP ENO IN EMP DETERMINES ENAME

Ràng buộc tiền dịch (Precompiled Constraint): Ràng buộc tiền dịch mụ tả cỏc điều kiện

mà cỏc bộ trong một quan hệ phải được thỏa bởi một kiểu cập nhật đó chọ Kiểu cập nhật cú thể là INSERT, DELETE hoặc MODIFY cho phộp giới hạn kiểm soỏt ràng buộc. Để xỏc

định cỏc bộ cần cập nhật trong định nghĩa ràng buộc, người ta đưa ra hai biến NEW và

OLD, tương ứng biến thiờn trờn cỏc bộ mới (được chốn vào) và cỏc bộ cũ (được xúa bỏ). Cỳ phỏp ràng buộc tiền dịch được biểu diễn bởi cõu lệnh sau:

CHECK ON <quan hệ> WHEN <kiểu cập nhật> (<lượng từ húa trờn quan hệ>) • Ràng buộc miền: Ngõn sỏch của một dự ỏn trong khoảng từ 500000 đến 1000000. CHECK ON PROJ (BUDGET ≥ 500000 AND BUDGET ≤ 1000000)

• Ràng buộc miền khi xúa: Xố cỏc bộ cú ngõn sỏch khụng: CHECK ON PROJ WHEN DELETE (BUDGET = 0) • Ràng buộc thay đổi: Ngõn sỏch của dự ỏn chỉ được tăng khi: CHECK ON PROJ (NEW. BUDGET > OLD. BUDGET AND NEW. PNO = OLD. PNO)

Ràng buộc tổng quỏt (General Constraint): Ràng buộc tổng quỏt là cỏc cụng thức của

phộp tớnh quan hệ bộ trong đú tất cả cỏc biến đều được lượng từ húạ Hệ thống CSDL phải

đảm bảo rằng những cụng thức này phải luụn đỳng. Ràng buộc tổng quỏt chuẩn xỏc hơn

ràng buộc tiền dịch vỡ cú thể liờn quan đến nhiều quan hệ. Cú thể sử dụng ớt nhất ba ràng buộc tiền dịch để diễn tả một ràng buộc tổng quỏt trờn ba quan hệ. Một ràng buộc tổng quỏt cú thể được diễn tả với cỳ phỏp như sau:

CHECK ON danh sỏch <tờn biến> : <tờn quan hệ>, (<lượng từ húa>)

Vớ dụ 4.5: Ràng buộc tổng quỏt.

• Phụ thuộc hàm: Tờn nhõn viờn phụ thuộc hàm Mó nhõn viờn trong quan hệ EMP: CHECK ON e1:EMP, e2:EMP

(e1.ENAME = e2.ENAME IF e1.ENO = e2.ENO)

• Ràng buộc cú kốm hàm gộp nhúm: Tổng thời gian của cỏc nhõn viờn trong dự ỏn CAD/CAM phải nhỏ hơn 100

CHECK ON g:ASG, j:PROJ (SUM(g.DUR WHERE g.PNO = j.PNO) < 100 IF j.PNAME = “CAD/CAM”).

b) ẫp buộc thực thi ràng buộc:ẫp buộc thực thi ràng buộc toàn vẹn nghĩa là thực hiện

việc loại bỏ những chương trỡnh cập nhật vi phạm một số ràng buộc nào đú. Một ràng buộc bị vi phạm do cỏc hành động cập nhật hoặc do cỏc phỏn đoỏn ràng buộc bị saị Cú hai phương phỏp cơ bản cho phộp loại bỏ cỏc trỡnh cập nhật phỏt sinh mõu thuẫn.

Phương phỏp phỏt hiện mõu thuẫn (khụng nhất quỏn): Một thao tỏc cập nhật u được thi hành sẽ biến đổi CSDL từ trạng thỏi D sang trạng thỏi Du..Thuật toỏn ộp buộc phải khẳng

định rằng mọi ràng buộc liờn quan vẫn đỳng trong Du bằng cỏch ỏp dụng cỏc ràng buộc này để kiểm trạ Nếu trạng thỏi Du khụng nhất quỏn, hệ quản trị CSDL sẽ chuyển sang một

trạng thỏi Du’ khỏc bằng cỏch hiệu chỉnh lại Du hoặc phải khụi phục lại trạng thỏi D. Vỡ những kiểm tra này được ỏp dụng sau khi trạng thỏi của CSDL đó thay đổi nờn được gọi là kiểm tra sau (Posttest). Phương phỏp này sẽ khụng hiệu quả nếu hệ thống phản hồi lại rất nhiều thao tỏc khi ràng buộc bị vi phạm.

Phương phỏp ngăn chặn mõu thuẫn: Một thao tỏc chỉ được thực hiện nếu nú chuyển

CSDL sang một trạng thỏi nhất quỏn khỏc. Cỏc bộ cần cập nhật đó cú sẵn (trong trường hợp chốn) hoặc phải truy nhập trong CSDL (trường hợp xúa hoặc hiệu chỉnh). Thuật toỏn ộp

chung, nú được thực hiện bằng cỏch ỏp dụng cỏc kiểm tra cú được từ cỏc ràng buộc cho cỏc bộ. Như vậy, cỏc kiểm tra được ỏp dụng trước khi trạng thỏi của CSDL bị thay đổi, nờn gọi là cỏc kiểm tra trước (Pretest). Phương phỏp ngăn chặn này hiệu quả hơn phương phỏp phỏt hiện vỡ khơng bao giờ phải hồi lại cỏc thao tỏc cập nhật do ràng buộc bị vi phạm.

Thuật toỏn hiệu chỉnh truy vấn là một vớ dụ về phương phỏp ngăn chặn, cú hiệu quả đặc biệt trong việc ộp buộc cỏc ràng buộc miền biến thiờn. Nú đưa thờm lượng từ húa phỏn đoỏn vào lượng từ húa truy vấn bằng toỏn tử AND, vỡ thể cõu truy vấn được hiệu chỉnh cú thể

được ộp buộc toàn vẹn.

Vớ dụ 4.6: Tăng ngõn sỏch dự ỏn CAD/CAM lờn 10%:

UPDATE PROJ

SET BUDGET = BUDGET * 1.1 WHERE PNAME = “CAD/CAM”

Cõu truy vấn trờn sẽ được biến đổi thành cõu truy vấn sau, cú thờm điều kiện nhằm ộp buộc miền giỏ trị

UPDATE PROJ

SET BUDGET = BUDGET * 1.1 WHERE PNAME = “CAD/CAM” AND NEW. BUDGET ≥ 500000 AND NEW. BUDGET ≤ 1000000

Thuật toỏn hiệu chỉnh truy vấn đơn giản, tạo ra cỏc kiểm tra trước vào thời điểm thi hành bằng cỏch lấy hội cỏc vị từ phỏn đoỏn với cỏc vị từ cập nhật của mỗi chỉ thị của giao dịch. Tuy nhiờn, thuật toỏn chỉ được ỏp dụng cho cỏc cụng thức phộp tớnh bộ và cú thể mụ tả như sau: Xột phỏn đoỏn (∀x ∈ R) F(x) trong đú R là quan hệ, x là biến bộ của R. Thao tỏc cập nhật của R cú thể viết như sau: (∀x ∈ R) Q(x) ⇒ Update(x), Trong đú Q(x) là biểu thức phộp tớnh bộ cú biến là x.. Núi ngắn gọn hiệu chỉnh truy vấn cần sinh ra thao tỏc cập nhật (∀x ∈ R) ((Q(x) and F(x)) ⇒ Update(x). Vỡ vậy, x cần phải được lượng từ hoỏ phổ dụng.

Vớ dụ 4.7: Phỏn đoỏn cho khoỏ ngoại

∀r ∈ ASG, ∃j ∈ PROJ: g.PNO = j.PNO

Khụng thể được xử lý bởi phộp hiệu chỉnh truy vấn vỡ biến j khụng được lượng từ hoỏ phổ dụng.

Để cú thể xử lý cỏc phỏn đoỏn tổng quỏt, sự kiểm tra trước cần phải đưqợc xõy dựng khi định nghĩa phỏn đoỏn và nú được thực hiện khi cập nhật. Phương phỏp này cú thể định

nghĩa phỏn đoỏn đa quan hệ, đơn biến và cú thể gộp nhúm bằng cỏch thay thế cỏc biến bộ trong phỏn đoỏn bằng cỏc từ một bộ được cập nhật. Tuy nhiờn phương phỏp này khú được sử dụng trong thực tế, vỡ .cú nhiều hạn chế khi thực hiện cỏc cập nhật.

Định nghĩa cỏc phỏn đoỏn biờn dịch dựa trờn khỏi niệm quan hệ vi phõn (Differential

Relation). Goi u là một cập nhật trờn quan hệ R. R+ và R- là cỏc quan hệ vi phõn của R do u, với R+ chứa cỏc bộ được chốn vào R và R- là quan hệ chứa cỏc bộ bị xoỏ khỏi R. Nếu u là thao tỏc chốn, khi đú R- sẽ rỗng. Nếu u là thao tỏc xố thỡ quan hệ R+ cũng là rỗng. Nếu u

là thao tỏc sửa đổi, quan hệ R sau khi sửa đổi sẽ là R+ ∪ ( R – R-). Một phỏn đoỏn biờn dịch là bộ ba (R, T, C). Trong đú R là một quan hệ, T là kiểu cập nhật và C là một phỏn

đoỏn biến thiờn trờn cỏc quan hệ vi phõn cú mặt trong kiểu cập nhật T. Khi một ràng buộc I được định nghĩa, một tập phỏn đoỏn biờn dịch cú thể được sinh ra cho cỏc quan hệ được I

tỏc động. Mỗi khi một quan hệ cú trong I được cập nhật bởi một chương trỡnh u, cỏc phỏn

đoỏn biờn dịch được định nghĩa trờn I cho kiểu cập nhật u cần phải được thẩm trạ Cú hai ưu điểm về hiệu năng. Một là số lượng cỏc phỏn đoỏn cần cưỡng chế thấp tối đa, vỡ chỉ cú

cỏc phỏn đoỏn thuộc kiểu u mới được kiểm trạ Ưu điểm thứ hai là chi phớ cưỡng chế thi hành một phỏn đoỏn biờn dịch nhỏ hơn chi phớ cưỡng chế I, vỡ cỏc quan hệ vi phõn nhỏ hơn nhiều so với cỏc quan hệ cơ sở.

Phỏn đoỏn biờn dịch cú thể thu được bằng cỏch ỏp dụng cỏc quy tắc biến đổi cho phỏn đoỏn gốc. Cỏc quy tắc này dựa trờn phõn tớch ngữ nghĩa của phấn đoỏn và cỏc hoỏn vị

lượng từ. Cho phỏp thay thế cỏc quan hệ cơ sở bằng cỏc quan hệ vi phõn, vỡ cỏc phỏn đoỏn biờn dịch đơn giản hơn phỏn đoỏn gốc. Quỏ trỡnh tạo ra phỏn đoỏn biờn dịch gọi là quỏ trỡnh

đơn giản hố (Simplỡtication).

Vớ dụ 4.8: Xột biểu thức ràng buộc khoỏ ngoại:

∀r ∈ ASG, ∃j ∈ PROJ: g.PNO = j.PNO Phỏn đoỏn biờn dịch đi kốm với ràng buộc này sẽ 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- : NEW.PNO ≠ j.PNO C3 là: ∀g ∈ ASG, ∀OLD ∈ PROJ, ∃NEW ∈ PROJ+.:

g.PNO ≠ OLD.PNO OR OLD = NEW.PNỌ Thao tỏc xoỏ trờn quan hệ ASG khụng gõy ra bất kỳ một kỉờm tra nàọ

Cú 3 loại phỏn đoỏn: phỏn đoỏn đơn quan hệ, phỏn đoỏn đa quan hệ và phỏn đốn cú cỏc hàm gộp nhúm. Thuật toỏn cưỡng chế sử dụng cỏc phỏn đoỏn biờn dịch và được chuyờn biệt hoỏ theo từng loại phỏn đoỏn. Một chương trỡnh cập nhật sẽ hiệu chỉnh tất cả cỏc bộ của quan hệ R, thoả một lượng từ hoỏ nào đú. Thuật toỏn cưỡng chế được thực hiện trong hai bước như sau:

• Bước 1: Tạo cỏc quan hệ vi phõn R+ và R-. từ quan hệ R.

• Bước 2: Truy xuất cỏc bộ trong R+ và R- , lấy cỏc bộ khụng thoả cỏc phấn đoỏn biờn dịch. Nếu khụng truy xuất được bộ nào, phỏn đoỏn sẽ cú giỏ trị.

Vớ dụ 4.9: Giả sử cú thao tỏc xố trờn PROJ. Cưỡng chế (PRỌ, DELETE, C2) tạo ra cỏc

cõu lệnh sau:

Result ← Truy xuất tất cả cỏc bộ của PROJ trong đú ơ (C2) đỳng. Nếu Result

4.4.2 Kiểm sốt tồn vẹn ngữ nghĩa phõn tỏn

Phần này trỡnh bày cỏc thuật toỏn đảm bảo tớnh tồn vẹn ngữ nghĩa của cỏc CSDL phõn tỏn, được mở rộng từ cỏc phương phỏp đơn giản trong phần kiểm sốt tồn vẹn ngữ nghĩa tập trung. Giả thiết cỏc thuật tốn cú tớnh đến yếu tố tự trị vị trớ, nghĩa là mỗi vị trớ cú thể xử lý cỏc cõu truy vấn cục bộ và thực hiện việc kiểm soỏt dữ liệu như một hệ quản trị CSDL tập trung. Giả thiết này làm đơn giản việc mụ tả phương phỏp. Hai vấn đề chớnh của thiết kế một tiểu hệ thống kiểm sốt tồn vẹn trong một hệ quả trị CSDL phõn tỏn, đú là vấn

đề định nghĩa và lưu trữ cỏc phỏn đoỏn và vấn đề ộp buộc thi hành cỏc phỏn đoỏn nàỵ.

a) Định nghĩa cỏc phỏn đốn tồn vẹn phõn tỏn: Giả sử một phỏn đốn tồn vẹn được

diễn tả bằng phộp tớnh quan hệ bộ. Mỗi phỏn đoỏn được coi là một lượng từ húa truy vấn, trong đú nú nhận giỏ trị đỳng hoặc sai với mỗi bộ trong tớch Đề cỏc của cỏc quan hệ được xỏc định bằng cỏc biến bộ. Cỏc phỏn đoỏn cú thể liờn quan đến dữ liệu lưu trờn nhiều vị trớ khỏc nhaụ Vỡ vậy chọn vị trớ lưu trữ phỏn đoỏn sao cho giảm thiểu chi phớ kiểm tra toàn vẹn. Một chiến lược phỏn đốn tồn vẹn chia ra ba lớp:

1. Phỏn đoỏn riờng: là cỏc phỏn đoỏn đơn biến đơn quan hệ. Chỉ đề cập đến cỏc bộ được

cập nhật, độc lập với phần cũn lại của CSDL. Ràng buộc miền giỏ trị của vớ dụ “Ngõn sỏch của một dự ỏn trong khoảng 500000 đến 1000000” là một phỏn đoỏn riờng. 2. Phỏn đoỏn hướng tập hợp: bao gồm cỏc ràng buộc đa biến đơn quan hệ như phụ

thuộc hàm (mó số nhõn viờn xỏc định tờn nhõn viờn) và đa biến đa quan hệ như cỏc ràng buộc khúa ngoạị

3. Phỏn đốn cú cỏc hàm gộp: đũi hỏi phải được xử lý đặc biệt do chi phớ ước lượng

hàm gộp. Phỏn đốn trong vớ dụ 4.5 là một đại diện cho lớp phỏn đoỏn nàỵ

Định nghĩa một phỏn đốn tồn vẹn cú thể được bắt đầu tại một vị trớ cú lưu cỏc quan hệ

trong phỏn đoỏn. Quan hệ cú thể bị phõn mảnh, một vị từ phõn mảnh là một trường hợp đặc biệt của phỏn đoỏn thuộc lớp 1. Cỏc mảnh khỏc nhau của một quan hệ cú thể cú trờn nhiều vị trớ khỏc nhaụ Vỡ vậy, định nghĩa một phỏn đoỏn toàn vẹn sẽ là một thao tỏc phõn tỏn và

được thực hiện qua hai bước. Bước đầu tiờn biến đổi cỏc phỏn đoỏn ở cấp cao thành cỏc

phỏn đoỏn biờn dịch. Bước tiếp theo là lưu trữ cỏc phỏn đoỏn này tựy theo lớp phỏn đoỏn. Cỏc phỏn đoỏn thuộc lớp 3 được xử lý giống như cỏc phỏn đoỏn thuộc lớp 1 hoặc 2, tựy thuộc vào đặc tớnh của chỳng là riờng hay theo tập hợp.

Phỏn đoỏn riờng: Định nghĩa phỏn đoỏn được gửi đến tất cả vị trớ lưu trữ mảnh của quan

hệ cú mặt trong phỏn đoỏn. Phỏn đoỏn phải tương thớch với dữ liệu của quan hệ tại mỗi vị trớ. Tớnh tương thớch cú thể được kiểm tra ở hai cấp: cấp vị từ và cấp dữ liệụ Trước tiờn, tương thớch vị từ được xỏc nhận bằng cỏch so sỏnh vị từ phỏn đoỏn với vị từ mảnh. Một phỏn đoỏn C được coi là khụng tương thớch với vị từ mảnh p nếu “C đỳng” dẫn đến “p sai”, và ngược lại thỡ được coi là tương thớch. Nếu khụng tương thớch tại một vị trớ, định nghĩa phỏn đoỏn phải bị loại bỏ ở mức toàn cục vỡ cỏc bộ của mảnh đú khơng thỏa món ràng buộc toàn vẹn nàỵ Nếu cú tương thớch vị từ, phỏn đoỏn sẽ được kiểm tra ứng với thể hiện của mảnh. Nếu thể hiện đú khơng thỏa món phỏn đốn thỡ nú cũng bị loại bỏ ở mức toàn cục.

Nếu tương thớch, phỏn đoỏn sẽ được lưu lại tại mỗi vị trớ. Việc kiểm tra tớnh tương thớch

được thực hiện cho cỏc phỏn đoỏn biờn dịch với kiểu cập nhật là “chốn” (cỏc bộ trong cỏc

mảnh coi như là “được chốn vào”).

Vớ dụ 4.10: Xột quan hệ EMP phõn mảnh ngang trờn ba vị trớ bởi cỏc vị từ

P1: 0 ≤ ENO ≤ “E3” P2: “E3” ≤ ENO ≤ “E6” P3: ENO > “E6”

Phỏn đoỏn miền biến thiờn C: ENO < “E4”. Như vậy phỏn đoỏn C tương thớch với P1 và

P2, nghĩa là nếu C đỳng thỡ P1 đỳng.và nếu C đỳng thỡ P2 chưa chắc đó sai, nhưng khụng tương thớch với P3, vỡ nếu C đỳng thỡ P3 saị Vỡ vậy phỏn đoỏn C buộc phải bị loại bỏ bởi vỡ cỏc bộ tại vị trớ 3 khụng thoả C. Vỡ vậy quan hệ EMP khụng thoả C.

Phỏn đoỏn hướng tập hợp: Phỏn đoỏn hướng tập hợp thuộc loại đa quan hệ, nghĩa là cú

cỏc vị từ kết nốị Tuy nhiờn mỗi phỏn đoỏn biờn dịch chỉ được liờn kết với một quan hệ. Vỡ

Một phần của tài liệu Cơ sở dữ liệu phân tán (Trang 95)