Bài giảng chương 6: 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 này phải bảo đảm cho những người sử dụng được phép sẽ thực hiện đúng đắn các thao tác trên CSDL nhằm duy trì tính toàn vện dữ liệu.

doc12 trang | Chia sẻ: haohao89 | Lượt xem: 1862 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Bài giảng chương 6: 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 VI 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 này phải bảo đảm cho những người sử dụng được phép sẽ thực hiện đúng đắn các thao tác trên CSDL 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 trông công tác quản trị CSDL, là một 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. 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ế rằng buộc miền giá trị như đã thấy ở ví dụ 6.3.1-5 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 vấn tin tạo ra các kiểm tra trước lúc thực thi 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ỉ áp dụng cho phép tính bộ và được đặc tả như sau: Xét phán đoán ("xÎR) F(x) trong đó F là biểu thức quan hệ bộ, x là biến bộ duy nhất. Thao tác cập nhật của R có thể được viết là ("xÎR)(Q(x)=>update(x)) trong đó Q là biểu thức pháp tính bộ có biến tự do duy nhất. Hay nói ngắn gọn hơn, hiệu chỉnh vấn tin cần sinh ra thao tác cập nhật ("xÎR)((Q(x) and F(x)=>update(x). Vì thế x cần phải được lượng từ hoá phổ dụng Ví dụ 6.3.1-11: "gÎASG, $j Î PROJ: g.PNO = j.PNO Đây là phán đoán khoá ngoại (Xem ví dụ 6.3.1-7), nói rằng một dự án được tham chiếu trong quan hệ ASG phải tồn tại (chứ không phải là ") trong quan hệ PROJ, do đó j không được lượng từ hoá phổ dụng cho nên câu vấn tin trên không thể được xử lý bởi phép hiệu chỉnh vấn tin. Phương pháp ngăn chặn mâu thuẫn (kiểm tra trước) khác là dựa vào việc tạo ra các phán đoán. Biên dịch (compiled assertion) vào lúc định nghĩa phán đoán và có thể sử dụng để ngăn chặn sự xuất hiện các mâu thuẫn trong CSDL. Đây là một phương pháp ngăn chặn tổng quát, có thể xử lý được toàn bộ các phán đoán đã được giới thiệu ở trên. Đị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 (differentinal relation). Gọi u là một cập nhật trên quan hệ R;
Tài liệu liên quan