24/05/2018, 14:52

Ràng buộc toàn vẹn

( Integrity Constraint / Rule viết tắt là: RBTV) và kiểm tra sự vi phạm ràng buộc toàn vẹn là hai trong những vấn đề rất quan trọng trong quá trình phân tích, thiết kế và khai thác CSDL. Trong quá trình phân tích - thiết kế cơ sở dữ ...

  (Integrity Constraint / Rule viết tắt là: RBTV) và kiểm tra sự vi phạm ràng buộc toàn vẹn là hai trong những vấn đề rất quan trọng trong quá trình phân tích, thiết kế và khai thác CSDL. Trong quá trình phân tích - thiết kế cơ sở dữ liệu, nếu không quan tâm đúng mức đến những vấn đề trên, thì có thể dẫn đến những hậu quả rất nghiêm trọng về tính an toàn và toàn vẹn dữ liệu, đặc biệt trong những CSDL tương đối lớn.

  Chương này được chia làm 3 mục nhỏ: Mục thứ nhất trình bày các khái niệm cơ bản của ràng buộc toàn vẹn; mục thứ hai sẽ giới thiệu các cách phân loại ràng buộc toàn vẹn và phần thứ ba sẽ đề cập đến một công cụ để biểu diễn một số các ràng buộc toàn vẹn: Phụ thuộc hàm.

, các yếu tố của RBTV.

Định nghĩa.  

là một điều kiện bất biến không được vi phạm trong một CSDL.  

Trong một CSDL, luôn luôn tồn tại rất nhiều mối liên hệ ảnh hưởng qua lại lẫn nhau giữa các thuộc tính của một quan hệ, giữa các bộ giá trị trong một quan hệ và giữa các thuộc tính của các bộ giá trị trong các quan hệ với nhau. Các mối quan hệ phụ thuộc lẫn nhau này chính là những điều kiện bất biến mà tất cả các bộ của những quan hệ có liên quan trong cơ sở dữ liệu đều phải thỏa mãn ở bất kỳ thời điểm nào. còn được gọi là các quy tắc quản lý (Rules) được áp đặt lên trên các đối tượng của thế giới thực.  

    Ví dụ 4.1.1:  

Trong CSDL về quản lý học viên của một trường học đã cho trong các ví dụ của mục 3.1 trong Chương III (Bài 4), chúng ta có một số ràng buộc toàn vẹn như sau:

   R1 : Mỗi lớp học phải có một mã số duy nhất để phân biệt với mọi lớp học khác trong trường.

   R2 : Mỗi lớp học phải thuộc một KHOA của trường.

   R3 : Mỗi học viên có một mã số riêng biệt, không trùng với bất cứ học viên nào khác.

   R4 : Mỗi học viên phải đăng ký vào một lớp của trường.

   R5 : Mỗi học viên được thi tối đa 3 lần cho mỗi môn học.

   R6 : Tổng số học viên của một lớp phải lớn hơn hoặc bằng số lượng đếm được của lớp tại một thời điểm.  

Khóa nội, Khóa ngoại, giá trị NOT NULL ... là những RBTV về miền giá trị của các thuộc tính. Những RBTV vừa nêu trên cũng mới chỉ là những RBTV đơn giản trong CSDL nhỏ về quản lý học viên. Trong thực tế, tất cả các RBTV của một cơ sở dữ liệu phải được người phân tích thiết kế phát hiện đầy đủ và mô tả một cách chính xác, rõ ràng trong hồ sơ phân tích, thiết kế.  

Trong một CSDL, ràng buộc toàn vẹn được xem như một công cụ để diễn đạt ngữ nghĩa của cơ sở dữ liệu đó. Trong suốt quá trình khai thác cơ sở dữ liệu, các RBTV đều phải được thỏa mãn ở bất kỳ thời điểm nào nhằm đảm bảo cho CSDL luôn luôn ở trạng thái an toàn và nhất quán về dữ liệu.  

Các hệ quản trị CSDL thường có các cơ chế tự động kiểm tra các RBTV về miền giá trị của Khóa nội, Khóa ngoại, giá trị NOT NULL qua khai báo cấu trúc các bảng (mô hình dữ liệu của quan hệ) hoặc thông qua những thủ tục kiểm tra và xử lý vi phạm RBTV do những người phân tích - thiết kế cài đặt. Việc kiểm tra RBTV có thể được tiến hành vào một trong các thời điểm sau:  

-Kiểm tra ngay khi thực hiện một thao tác cập nhật CSDL (thêm, sửa, xóa). Thao tác cập nhật chỉ được xem là hợp lệ nếu như nó không vi phạm bất cứ một RBTV nào, nghĩa là nó không làm mất tính toàn vẹn dữ liệu của CSDL. Nếu vi phạm RBTV, thao tác cập nhật bị coi là không hợp lệ và sẽ bị hệ thống hủy bỏ (hoặc có một xử  lý thích hợp nào đó).  

-Kiểm tra định kỳ hay đột xuất, nghĩa là việc kiểm tra RBTV được tiến hành một cách độc lập đối với thao tác cập nhật dữ liệu. Đối với những trường hợp vi phạm RBTV, hệ thống sẽ có những xử lý ngầm định hoặc yều cầu người sử dụng xử lý những sai sót một cách tường minh.

Các yếu tố của ràng buộc toàn vẹn:

          Khi xác định một RBTV cần chỉ rõ:

     Điều kiện (tức là nội dung) của RBTV, từ đó xác định cách biểu diễn.

     Bối cảnh xảy ra RBTV : trên một hay nhiều quan hệ, cụ thể trên các quan hệ nào.

     Tầm ảnh hưởng của RBTV. Khả năng tính toàn vẹn dữ liệu bị vi phạm, và

     Hành động cần phải có khi phát hiện có RBTV bị vi phạm.

  Điều kiện của RBTV:  

Điều kiện của RBTV là sự mô tả, và biểu diễn hình thức nội dung của nó, có thể được biểu diễn bằng ngôn ngữ tự nhiên, thuật giải (bằng mã giả - Pseudo Code, ngôn ngữ tựa Pascal), ngôn ngữ đại số tập hợp, đại số quan hệ v.v hoặc bằng các phụ thuộc hàm (sẽ được trình bày chi tiết trong mục 3 của chương này).  

      Ví dụ 4.1.2:

Giả sử có một CSDL quản lý hóa đơn bán hàng gồm các bảng sau:

HÓAĐƠN (Số-hóa-đơn, Số-chủng-loại-mặt-hàng, Tổng-trị-giá).

DM_HÀNG (Mã-hàng, Tên-hàng, Đơn-vị-tính).

CHITIẾT-HĐ (Số-hóa-đơn, Mã-hàng, Số-lượng-đặt, Đơn-giá, Trị-giá).

  Điều kiện của ràng buộc toàn vẹn có thể biểu diễn như sau:

R1 : “Mỗi hóa đơn có một Số hóa đơn riêng biệt, không trùng với hóa đơn khác”:

  "  hđ1, 2 Ỵ HÓAĐƠN, 1¹ hđ2 Þ  1.Số-hóa-đơn ¹ hđ2. Số-hóa-đơn.

R2 : “Số-chủng-loại-mặt-hàng = số bộ của CHITIẾT_HĐ có cùng Số-hóa-đơn”:

        "   Ỵ HÓAĐƠN thì:

.Số-chủng-loại-mặt-hàng = COUNT (cthđ Ỵ CHITIẾT_HĐ, cthđ.Số-hóa-đơn = .Số-hóa-đơn)

R3 : “Tổng các trị giá của các mặt hàng trong CHITIẾT_HĐ có cùng Số-hóa-đơn phải bằng Tổng-trị-giá ghi trong HÓAĐƠN”:

          "  Ỵ HÓAĐƠN thì:

.Tổng-trị-giá =  SUM (cthđ.Trị-giá) đối với cáccthđ Ỵ CHITIẾT_HĐ sao cho : cthđ. Số-hóa-đơn= . Số-hóa-đơn.

R4 : “Mỗi bộ của CHITIẾT_HĐ phải có mã hàng thuộc về danh mục hàng”:

CHITIẾT_HĐ [Mã-hàng] Í DM_HÀNG[Mã-hàng]

hoặc biểu diễn bằng cách

0