Kiểm soát ngữ nghĩa dữ liệu là một trong những yêu cầu quan trọng của một hệ quản trị CSDL quản trị. Kiểm soát dữ liệu bao gồm: Quản trị khung nhìn, kiểm soát tính an toàn, bảo mật và kiểm soát tính toàn vẹn ngữ nghĩa. Các chức năng nhằm làm cho người sử dụng phải thực hiện đúng đắn các thao tác trên CSDL phân tán nhằm duy trì tính toàn vẹn dữ liệu.
14 trang |
Chia sẻ: haohao89 | Lượt xem: 1877 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Bài giảng Kiểm soát dữ liệu ngữ nghĩa, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG III
KIỂM SOÁT DỮ LIỆU NGỮ NGHĨA
Kiểm soát ngữ nghĩa dữ liệu là một trong những yêu cầu quan trọng của một hệ quản trị CSDL quản trị. Kiểm soát dữ liệu bao gồm: Quản trị khung nhìn, kiểm soát tính an toàn, bảo mật và kiểm soát tính toàn vẹn ngữ nghĩa. Các chức năng nhằm làm cho người sử dụng phải thực hiện đúng đắn các thao tác trên CSDL phân tán nhằm duy trì tính toàn vẹn dữ liệu.
Định nghĩa các quy tắc nhằm kiểm soát các thao tác dữ liệu là một phần của công việc hệ quản trị CSDL, là chức năng thường được nhân viên quản trị CSDL thực hiện, người này cũng phải chịu trách nhiệm áp dụng các chiến lược tổ chức hoạt động.
Các quy tắc kiểm soát dữ liệu phải được lưu trong hồ sơ cơ cấu (catalog), thư mục của một hệ quản trị CSDL phân tán cũng là một hệ CSDL phân tán. Có nhiều cách để lưu trữ các định nghĩa và các quy tắc kiểm soát dữ liệu ngữ nghĩa theo cách quản lý thư mục.
3.1. QUẢN LÝ KHUNG NHÌN
TITLE
SAL
Elect. Eng.
Syst. Anal.
Mech.Eng
Progammer
40000
34000
27000
24000
Hình 3.1-3. Quan hệ PAY
ENO
PNO
RESP
DUR
E1
E2
E2
E3
E3
E4
E5
E6
E7
E8
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
Manager
Analyst
Analyst
Consultant
Engineer
Programmer
Manager
Manager
Engineer
Manager
12
24
6
10
48
18
24
48
36
40
Hình 3.1-4. Quan hệ ASG
3.1.1. Khung nhìn trong các hệ quản trị CSDL tập trung
Một kung nhìn là một quan hệ được dẫn xuất từ các quan hệ cơ sở như kết quả của một câu truy vấn truy xuất. Nó được tạo ra bằng cách gắn tên khung nhìn cho câu truy vấn truy xuất nó.
Ví dụ 3.1-1
CREATE VIEW SYSAN(ENO, ENAME)
AS SELECT ENO, ENAME
FROM EMP
WHERE TITLE “Syst.Anal.”
SYSAN
ENO
ENAME
E1
E5
E8
M.Smith
B.Casey
J.Joné
Hình 3-1. Quan hệ tương ứng với khung nhìn SYSAN
Kết quả câu truy vấn định nghĩa khung nhìn - cho quan hệ có các thuộc tính ENO, ENAME chỉ bao gồm các nhà phân tích hệ thống như hình 3-1 nhưng quan hệ này không được tạo ra, tuy nhiên có thể dùng khung nhìn SYSAN để xử lý như một quan hệ.
Ví dụ 3.1-2
Thực hiện câu truy vấn: “Cho biết tên các nhà phân tích với mã số dự án và nhiệm vụ của họ”. Câu truy vấn này liên quan đến khung nhìn SYSAN và quan hệ ASG:
SELECT ENAME, PNO, RESP
FROM SYSAN, ASG
WHERE SYSAN.ENO = ASG.ENO
Câu truy vấn trên khung nhìn có thể hiệu chỉnh để trở thành câu truy vấn trên các quan hệ cơ sở.
Ví dụ 3.1-3
Câu truy vấn ở ví dụ 3.1-2 có thể hiệu chỉnh thành
SELECT ENAME, PNO, RESP
FROM SYSAN, ASG
WHERE SYSAN.ENO = ASG.ENO
Thông tin thư mục
CREATE VIEW ESAME
AS SELECT *
FROM EMP E1, EMP E2
WHERE E1.TITLE = E2.TITLE
AND E1.NO = USER
Trong đó* là nói là tất cả các thuộc tính, còn hai bộ E1 & E2 biến thiên trên quan hệ EMPđể nói rằng nối bộ của EMP tương ứng với người sử dụng nhập vào hệ thống với tất cả các bộ của EMP có chức năng TITLE như nhau, chẳng hạn câu vấn tin dưới đây được đưa ra bởi người sử dụng J.DOC
SELECT*
FROM ESAME
kết quả vấn tin ở hình 6.1.1-3.
ENO
ENAME
TITLE
E1
E2
J.Doe
L.Chu
Elect.Eng.
Elect.Eng.
Hình 6.1.1-3 kết quả vấn tin trên khung nhìn ESAME
chú ý rằng, người sử dụng j.Doe cũng xuất hiện trong kết quả nếu người sử dụng tạo ra ESAME là Elect.Eng như trong trường hợp này; thi khung nhìn là tất cả
các nhân viên có chức vụ là Elect.Eng.
6.1.2. Cập nhật qua khung nhìn
Khung nhìn có thể sinh ra từ nhũng câu vấn tin phức với các phép chọn, chiếu nối các hàm gộp nhóm,…Khung nhìn có thể đơực truy vấn như một quan hệ cơ sở. tuy nhiên việc cập nhật qua những khung nhìn chỉ được xử lý tự động nếu chúng có thể được chuyển một cách chính xác đến các quan hệ cơ sở. Vì vậy sẽ sinh ra hai loại khung nhìn:
Cập nhật được và không cập nhật được.
Khung nhìn cập nhật được là khung nhìn cập nhật được nếu tất cả các tương tác cập nhật trên khung nhìn được chuyển chính xác đến các quan hệ cơ sở mà không gây ra sự nhầm lẫn nào. Ví dụ khung nhìn SYSAN ở ví dụ 6,1,1-1 là cập nhật được, chẳng hạn khi chèn (201, Smith) tức là ENO = 201 và ENAME =Smith; chúng ta sẽ có thêm một phân tích viên mới (ENO, EMAE, TITLE) = (201, Smith, Syst,Anal.) Trong quan hệ EMP.
Khung nhìn không cập nhật được nếu tất cả không, nếu tất cả các tương tác trên khung nhìn không chuyển chính xác đến các quan hệ cơ sở. Ví dụ khung nhìn
CREATE VIEW EG (ENAME, RESP)
AS SELECT ENAME, RESP
FROM EMP , ASG
WHERE EMP. = ASG. ENO
là khung nhìn không cập nhật được vì nếu ta xóa bộ (Smith, Syts.Anal.) thì thao tác này không chuyển chính xác đến các quan hệ cơ sở. Vì bộ này đều có có trong đều có trong EMP va trong ASG nên hệ thống không hiểu nên xóa ở quan hệ nào,
Chú ý: Với các thuộc tính bị che khuất trong khung nhìn cập nhật được sẽ được gán giá trị Null
có thể khẳng định, khung nhìn được tạo ra bằng phép chọn hay chiếu từ một quan hệ cơ sở.
6.1.3. Khung nhìn trong hệ quản trị CSDLphân tán
Định nghĩa khung nhìn trong hệ quản trị CSDL tập trung và hếCDL phân tán là giống nhau. Tuy nhiên trong trường hợp phân tán, khung nhìn được dẫn xuất từ các quan hệ đã phân mảnh và được lưu ở nhiều vị trí khác nhau trên mạng khi một khung nhìn được đinh nghĩa tên và câu vấn tin truy xuất của nó sẽ được lưu vào hồ sơ cơ cấu. Tùy thuộc vào mức độ từ của vị trí được đưa ra bởi hệ thống các định nghĩa khung nhìn có thể tập trung tại một vị trí, được nhân bản một phần hoặc toàn bộ
Trong trường hợp thông tin liên kết khung nhìn với vị trí định nghĩa của nó phải được nhân bản. Nếu định nghĩa khung nhìn không có tại nơi đưa ra câu vấn tin thì phải truy xuất đến vị trí có định nghĩa khung nhìn đó.
Câu vấn tin trên khung nhìn được ánh xạ thành câu vấn tin trên quan hệ cơ sở (có thể được phân mảnh) cũng có thể được thực hiện như trong hệ thống tập trung, tức là qua phương pháp hiệu chỉnh vấn tin và kỹ thuật này lượng từ hoá dùng để định nghĩa khung nhìn được lấy từ trong hồ sơ cơ cấu của hệ phân tán và được trộn với câu vấn tin theo các quan hệ cơ sở. Một câu vấn tin đã hiệu chuẩn được như vậy sẽ trở thành câu vấn tin phân tán, và như vậy nó có thể ánh xạ thành câu vấn tin trên các mảnh vật lý.
Định nghĩa phân mảnh cũng giống với định nghĩa khung nhìn cụ thể. Vì vậy, Adiba, 1981 đã đề xuất một cơ chế hợp nhất để quản lý khung nhìn và các mảnh. ý tưởng này xem các khung nhìn trong một hệ quản trị CSDL phân tán cũng có thể được định nghĩa bằng các qui tắc định nghĩa mảnh. Chẳng hạn, có thể cài đặt khung nhìn SYSAN trong ví dụ 6.1,1-1 bằng một mảnh tại vị trí đã cho, với điều kiện là có nhiều người sử dụng sẽ truy cập đến khung nhìn này tại cùng vị trí của nó.
Quan điểm hợp nhất giúp quản trị nên CSDL có thể xem hệ CSDL như một phân cấp, mà lá của cây là các mảnh, từ các là này các quan hệ và các khung nhìn được dẫn xuất. Và vì thế quản trị nên có thể tăng cường tính cục bộ tham chiếu bằng cách tạo ra tương ứng 1-1 giữa khung nhìn và mảnh.
Khung nhìn được tạo ra từ các quan hệ phân tán sẽ làm tăng chi phí do có thể có nhiều người sử dụng cùng truy xuất đến cùng một khung nhìn nên phải tối ưu hoá việc tạo khung nhìn và các câu vấn tin.
6.2. An toàn dữ liệu
An toàn dữ liệu do hệ thống tập tin đảm trách trong các hệ diều hành tập trung và phân tán. Phương pháp chính là mã hoá dữ liệu được lưu trên bộ nhớ của máy tính hay trao đổi trên mạng. Dữ liệu sẽ được mã hoá, chỉ được giải mã khi có khoá. Hai lược đồ chính được sử dụng là DES (Data Enoyption Standard) và PES (Public_Key Encryption Shemes) – chuẩn mã hoá dữ liệu và lược đồ mã hoá công cộng. Tuy nhiên chúng ta chỉ đề cập đến PES vì nó đặc trưng cho CSDL. An toàn dữ liệu được thể hiện bởi hai kiểm soát quyền: Kiểm soát cấp quyền tập trung và kiểm soát cấp quyền phân tán.
Kiểm soát cấp quyền chỉ cho phép những người được phép mới được truy cập, hơn nữa, phép truy cập đó được đến mức độ nào đó – ví dụ: chỉ đọc, một phần dữ liệu hay một số mảnh…
Từ các giải pháp kiểm soát cấp quyền trong các hệ thống, chúng ta đưa ra các giải pháp cho các hệ quản trị CSDL phân tán. Tuy nhiên độ phức tạp sẽ cao hơn, xuắt phát từ sự kiện là các đối tượng và người sử dụng có thể được phân tán.
6.2.1 Kiểm soát cấp quyền tập trung
Ba tác nhân chính liên quan đến việc kiểm soát cấp quyền là: Người sử dụng; các thao tác được gắn vào ứng dụng và các đối tượng CSDL sẽ được các thao tác tác động vào. Một cấp quyền (authorijation) có thể xem là bộ ba (người sử dụng, loại thao tác và định nghĩa đối tượng, nó xác định rằng người sử dụng có quyền thực hiện thao tác thuộc loại này trên đối tượng. Để kiểm soát được quyền, đòi hỏi DBMS phải định nghĩa người sử dụng, các đối tượng và các quyền.
Khai báo người sử dụng thường phải có cá tên (user name) và mật khẩu (password), cả hai giá trị này đều phải được trình ra khi đăng nhập vào hệ thống.
Các đối tượng cần được bảo vệ là các tập con của CSDL. Hệ thống quan hệ có thể bảo vệ được các đối tượng ở nhiều mức chi tiết: đối tượng có thể được định nghĩa bằng kiểu của chúng (như khung nhìn, quan hệ, bộ, thuộc tính) cũng như bằng nội dung của chúng thông qua tự chọn. ở 4.1 cũng được đưa ra và một cơ chế bảo vệ, đó là che khuất các tập con của quan hệ (bộ, hoặc thuộc tính) đối với những người sử dụng không được phép.
Quyền biểu thị mối liên hệ giữa người sử dụng và một đối tượng với một tập các thao tác cụ thể . Một thao tác là một câu lệnh bậc cao như SELECT, INSERT, UPDATE hoặc DELETE,… Trao quyền hoặc thu hồi quyền có thể được định nghĩa bởi câu lệnh sau:
GRANT ON TO
REVOKE FROM TO
Từ khoá public dùng để cho phép mọi người đều được quyền, việc trao và thu hồi quyền chỉ được thực hiện bởi người quản trị.
Một các trao quyền phức tạp nhưng linh hoạt hơn là kiểm soát phi tập trung – người tạo ra đối tượng sẽ là chủ nhân và có quyền trao quyền cho những người được phép sử dụng các đối tượng đó. Trao quyền cho người sử dụng có nghĩa là cho họ được quyền sử dụng lện GRANT. Trao quyền kiểu này sẽ tạo ra một cây phân cấp. Việc thu hồi quyền ở 1 cấp nào đó sẽ được thực hiện chỉ sau khi quyền của các cấp con của nó đã được thu hồi.
Quyền của các chủ thể trên các đối tượng được lưu trong hồ sơ cơ cấu (nghĩa là thư mục) dưới dạng các qui tắc cấp quyền. Có nhiều cách đê làm việc đó. Cách hay nhất là dùng ma trận cấp quyền với hàng tiêu đề cột là trên đối tượng tiêu đề hàng là tên chủ thể, ô tương ứng là các thao tác được phép. Chẳng hạn, một thao tác được phép cho cặp = có thể là:
SELECT *
WHERE TITLE = “Syst.Anol”
FROM EMP
Cho phép Jones chỉ được truy xuất đến các bộ của các phần trên viền hệ thống. Hình 4.4 cho ví dụ về ma trận cấp quyền trong đó đối tượng gồm là hai quan hệ EMP và ASG và một thuộc tính là ENAME, còn người sử dụng là Casey, Jones và Smith.
Đối tượng
Người sử dụng
EMP
ENAME
ASG
Casey
UPDATE
UPDATE
UPDATE
Jones
SELECT
SELECT
SELECT WHERE RESP ¹ “Manager”
Smith
NONE
SELECT
NONE
Hình 6.4: Ví dụ về ma trận cấp quyền
6.2.2. Kiểm soát cấp quyền phân tán
Kiểm soát cấp quyền trong môi trường phân tán có nguồn gốc từ sự kiện là các đối tượng và chủ thể đều phân tán. Vấn đề cấp quyền liên quan đến: Cấp quyền cho người sử dụng ở xa, quản lý các quy tắc cấp quyền phân tán và việc xử lý các khung nhìn và các nhóm người sử dụng.
Cấp quyền cho người sử dụng ở xa, là do tại mọi vị trí của DBMS phân tán đều có thể chấp nhận cho các chương trình xử lý và được cấp quyền tại những vị trí xa. Để tránh thâm nhập trái phép người sử dụng phải được nhận diện và xác minh tại ví trí truy xuất hai biện pháp được thực thi ở đây là:
i. Thông tin xác nhận người sử dụng như tên và mật khẩu được nhân bản tại các vị trí trong hồ sơ cơ cấu. Các chương trình cục bộ, nếu được khởi hoạt ở vị trí xa cũng phải được xác nhận tên và mật khẩu của người sử dụng.
ii. Tất cả các vị trí trong hệ thống phân tán cũng nhận diện và xác nhận nhau tương tự như cách đã làm cho người sử dụng. Một vị trí đã được khởi hoạt và xác nhận thì không cần xác minh người sử dụng ở xa của chúng nữa.
Nhóm các người sử dụng được cấp quyền chúng sẽ làm đơn giản đi công việc quản lý CSDL phân tán. Trong DBMS tập trung cái gọi là “mọi người cùng sử dụng” có thể được xem là nhóm công cộng. Còn trong môi trường phân tán, nhóm công cộng biểu thị cho việc mọi người sử dụng đều có thể sử dụng hệ thống. Nhưng người ta cũng đưa ra một mức trung gian nhằm mô tả nhóm công cộng tại một vị trí cụ thể. Để có các nhóm cụ thể người ta có thể định nghĩa nó bằng lệnh.
DEFINE GROUP AS
Nếu thông tin của nhóm và các qui tắc cấp quyền được nhân bản hoàn toàn tại tất cả các vị trí thì quyền truy xuất tương tự như trong hệ thống tập trung. Nhưng để duy trì các bản sao là rất tốn kém. Bài toán sẽ khó hơn khi phải duy trì hoạt động tự trị của vị trí. Để làm giảm độ khó, người ta dùng một số giải pháp như: duy trì quyền truy xuất bằng cách thực hiện truy vấn từ xa đến các nút có lưu trữ các định nghĩa nhóm hoặc nhân bản một định nghĩa nhóm tại mỗi nút có chứa đối tượng có thể được các chủ thể của nhóm truy xuất… các giải pháp này đều có xu hướng làm giảm mức độ tự trị vị trí.
Như vậy, nhân bản hoàn toàn có các thông tin cấp quyền có hai ưu điểm chính: Kiểm soát cấp quyền đơn giản hơn và có thể được thực hiện vào lúc biên dịch. Tuy nhiên chi phí cao hơn vì phải trả cho việc quản lý hồ sơ cơ cấu phân tán.
6.3. Kiểm soát tính toàn vẹn ngữ nghĩa
Trạng thái của CSDL được gọi là nhất quán (consistency) nếu CSDL thoả mãn một tập các rằng buộc được gọi là rằng buộc toàn vẹn ngữ nghĩa (semantic integrity constraint). Duy trì CSDL nhất quán đòi hỏi phải dùng đến nhiều cơ chế khác nhau như điều khiển hoạt động đồng thời, độ tin cậy, bảo vệ và kiểm soát tính toàn vẹn ngữ nghĩa.
Nói chung các ràng buộc toàn vẹn ngữ nghĩa là những quy tắc sự hiểu biết về các tính chất của một ứng dụng. Khái niệm về một qui tắc toàn vẹn có liên quan mật thiết với mô hình lưu dữ liệu theo nghĩa là những thông tin có ý nghĩa về ứng dụng mà chúng ta có thể nắm bắt nhờ các qui tắc này.
Có hai loại ràng buộc toàn vẹn là: ràng buộc cấu trúc và ràng buộc hành vi.
i. Rằng buộc cấu trúc diễn tả những đặc tính ngữ nghĩa cơ bản vốn có trong mô hình. Ví dụ đó là ràng buộc khoá trong mô hình quan hệ, hoặc liên kết một nhiều giữa các đối tượng trong mô hình mạng.
ii. Ràng buộc hành vi (behavioral constraint) diễn tả mối liên kết giữa các đối tượng, ví dụ đó là phụ thuộc hàm trong mô hình quan hệ, hoặc mô tả đặc tính và cấu trúc của đối tượng. Ràng buộc hành vị được dùng để điều hoà các hoạt động của các ứng dụng. Vì vậy chúng rất quan trọng trong quá trình thiết kế CSDL. Chúng ta sẽ nghiên cứu vấn đề kiểm soát tính toàn vẹn ngữ nghĩa cho hệ thống tập trung và hệ thống phân tán.
6.3.1. Kiểm soát toàn vẹn ngữ nghĩa tập trung
Một hệ thống nhỏ kiểm soát ngữ nghĩa có hai thành phần chính: Một ngôn ngữ để diễn tả và thao tác các phán đoán toà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 cưỡng chế tính toàn vẹn khi có cập nhật đặc tả các ràng buộc toàn vẹn.
Ràng buộc toàn vẹ phải do người quản trị CSDL thiết lập trên cơ sở của một ngôn ngữ bậc cao, ví dụ dùng SQL của ANSI (American National Standard Istitule). Chúng ta cần phân biệt ba loại ràng buộc toàn vẹn là: ràng buộc tiền định, ràng buộc tiền biên dịch và ràng buộc tổng quát.
Để minh hoạ, bằng ví dụ, cho ba loại ràng buộc này, chúng ta xét CSDL sau:
EMP (ENO, ENAME, TITLE)
PROJ(PNO, PNAME, BUDGET)
ASG(ENO, PNO, RESP, DUR)
Ràng buộc tiền định (Predefined constraint) dựa trên các từ khoá đơn giản nhờ đó có thể diển tả chính xác các ràng buộc thông dụng trong mô hình quan hệ như thuộc tính không null, khoá duy nhất, khoá ngoài hoặc phụ thuộc hàm. Các ví dụ sau đây minh hoạ cho ràng buộc tiền định:
Ví dụ 6.3.1- 1: Thuộc tính không nhận giá trị null
ENO NOT NULL IN EMP
Thuộc tính mã số nhân viên ENO trong quan hệ EMP không được nhận giá trị null.
Ví dụ 6.3.1-2 Giá trị khoá phải duy nhất
(ENO, PNO) UNIQUE IN ASG
giá trị khoá (ENO, PNO) phải là duy nhất trong quan hệ ASG
Ví dụ 6.3.1-3 Khoá ngoại
PNO IN ASG REFERENCES PNO IN PROJ
Khoá, mã số PNO trong quan hệ ASG là khoá ngoại tương ứng với khoá chính
PNO trong 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.
Ví dụ 6.3.1-4 phụ thuộc hàm
ENO IN EMP DETERMINES ENAME
Giá trị mã số nhân viên ENO, xác định giá trị hàm tên nhân viên ENAME.
Ràng buộc tiền biên dịch (Precompiled constraint) xác định và diễn tả các điều kiện phải được thoả mãn bởi tất cả các bộ trong quan hệ đối với một kiểu cập nhật (INSERT, DELETE, hoặc MODIFILE) đã cho. Để xác định các bộ cần cập nhật trong định nghĩa ràng buộc, chúng ta đưa ra hai biểu NEW và OLD tương ứng với bộ mới - được chèn vào, hay bộ cũ - được sửa chữa hoặc xoá đi. Ràng buộc tiền định, có thể dùng với lệnh CHECK của SQL được bổ sung thêm khả năng đặc tả kiểu cập nhật. Cú pháp của câu lệnh dùng lệnh CHECK là:
CHECK ON WHEN
()
Các ví dụ về ràng buộc tiền biên dịch:
Ví dụ 6.3.1-5: Ràng buộc miền
CHECK ON PROJ 500000 AND BUDGET <1000000)
Kiểm tra ngân sách của dự án trong khoảng từ 500000 đến 1000000
Ví dụ 6.3.1-6: Ràng buộc miền khi xoá
CHECK ON PROJ WHEN DELETE (BUDGET = 0)
Chỉ xoá các bộ giá trị có ngân sách bằng không.
Ví dụ 6.3.1-7: Ràng buộc khi di chuyển
CHECK ON PROJ (NEW.BUDGET>OLD.BUDGET AND NEW.PNO = OLD.PNO)
Ràng buộc tổng quát (general constraint) là 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ử hoá. Ràng buộc tổng quát, là tổng quát hơn ràng buộc tiền biên dịch, vì nó có thể tham chiếu đến nhiều quan hệ. Ví dụ, chúng ta phải dùng ít nhất ba ràng buộc tiền biên dịch để diễn tả một ràng buộc tổng quát liên quan đến ba quan hệ. Cú pháp tổng quát của ràng buộc tổng quát có thể được diễn tả như sau:
CHECK ON danh sách : , ()
Các ví dụ về ràng buộc tổng quát:
Ví dụ 6.3.1-8: Phụ thuộc hàm
CHECK ON e1:EMP, l2:EMP
(e1.ENAME=e2.ENAME IF e1.ENO = e2.ENO)
Mã số nhân viên ENO xác định hàm tên nhân viên ENAME (Xem ví dụ 6.3.1-4)
Ví dụ 6.3.1-9: Ràng buộc có kèm hàm gộp nhóm:
CHECK ON g:ASG, J:PROJ(SUM(g.DUR WHERE g.PNO = j.PNO)<100
IF j.PNAME = “CAD/CAM”
Nghĩa là tổng thời gian của các nhân viên trong dự án CAD/CAM phải nhỏ hơn 100 cưỡng chế thi hành ràng buộc. Cưỡng chế thi hành ràng buộc toàn vẹn bao gồm việc loại bỏ các chương trình cập nhật vi phạm 1 số ràng buộc nào đó. Một ràng buộc bị vi phạm khi trạng thái mới của CSDL do cập nhật sinh ra, các phán đoán ràng buộc trở nên sai. Có hai phương pháp cơ bản cho phép phế bỏ các cập nhật sinh ra mâu thuẫn là: Dựa vào việc pháp hiện mâu thuẫn và dựa trên việc ngăn chặn mâu thuẫn.
i. Dựa vào việc phát hiện mâu thuẫn: Giả sử khi thực hiện cập nhật u sẽ chuyển hàng của CSDL từ D sang Du. Thuật toán cưỡng chế phải xác nhận rằng tất cả các ràng buộc liên đới vẫn đúng trong Du. Nếu trạng thái Du không nhất quán thì DBMS sẽ cố gắng chuyển sang trạng thái khác là D’u bằng cách hiệu chỉnh Du để D’u nhất quán, nếu không được thì phải quay lại trạng thái D. Cách kiểm tra này được áp dụng sau khi trạng thái của SCDL đã thay đổi nên nó được gọi là kiểm tra sau (Posttest). Cách tiếp cận 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.
ii. Dựa trên việc ngăn chặn mâu thuẫn. Một thao tác cập nhật 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. Thuật toán cưỡng chế xác nhận rằng tất cả các ràng buộc liên đới đều đúng sau khi cập nhật các bộ. Như vậy việc kiểm tra được thực hiện trước khi trạng thái CSDL được thay đổi và vì vậy cách kiểm tra được gọi là kiểm tra trước (pretest). Phương pháp ngăn chặn mâu thuẫn hiệu quả hơn phương pháp phát hiện vì chúng ta không phải quay lại trang CSDL trước đó khi có ràng buộc bị vi phạm.
Thuật toán hiệu chỉnh vấn tin là một ví dụ về phương pháp ngăn chặn có hiệu quả đặc biệt trong việc cưỡng chế các ràng buộc miền biến thiên. Nó đưa thêm lượng từ hoá phán đoán vào lượng từ hoá vấn tin bằng toán tử AND cho nên câu vấn tin được hiệu chỉnh có thể được cưỡng chế toàn vẹn.
Ví dụ 6.3.1-10
UPDATE PROJ
SET BUDGET = BUDGET*1.1
WHERE PNAME = “CAD/CAM”
Tăng ngân sách cho các dự án CAD/CAM lên 10%. Câu vấn tin này sẽ biến đổi thành câu vấn tin sau, trong đó có thêm điều kiện nhằm cưỡng ch