Có bao nhiêu loại rbtv đã được học:

Như các bạn đã biết, một CSDL quan hệ có thể gồm nhiều quan hệ khác nhau và các bộ trong các quan hệ có thể liên hệ với nhau theo một số cách nào đó.Tuy nhiên, để các liên hệ đó được “thuận tiện” và không gây xung đột thì các CSDL phải thoã mãn một số ràng buộc và các giới hạn nhất định – gọi chung là các ràng buộc để đảm bảo tính hợp lý và nhất quán của các giá trị trong CSDL.

Bạn đang xem: Ràng buộc toàn vẹn là gì


Các ràng buộc có thể tồn tại giữa các thuộc tính hoặc các bộ dữ liệu và đồng thời, các bộ của các quan hệ từ một lược đồ CSDL phải thoả mãn các ràng buộc ở bất kì thời điểm nào.

Ràng buộc ngầm định: Là các ràng buộc liên quan đến tính chất của một quan hệ như:Giá trị các thuộc tính phải là nguyên tốKhông được phép có hai bộ giống nhau trong cùng một quan hệThứ tự các bộ trong một quan hệ là không quan trọng,…Ràng buộc dựa trên ứng dụng: Là ràng buộc liên quan đến ngữ nghĩa và hành vi [behavior] của các thuộc tính. Loại ràng buộc này khó mô tả trong mô hình dữ liệu và chỉ được kiểm tra trong quá trình cập nhật dữ liệu dựa trên nền tảng ứng dụng đã được lập trình.Ràng buộc dựa trên lược đồ: Là ràng buộc có thể mô tả trực tiếp trong lược đồ của mô hình dữ liệu. Loại ràng buộc này được mô tả bằng ngôn ngữ DDL bao gồm các ràng buộc về:Miền giá trị [domain constraint]Khoá [key constraint]Các giá trị NULLToàn vẹn thực thể [entity integrity constraint]Toàn vẹn tham chiếu [referential integrity constraint]Ràng buộc dựa trên lược đồ có thể liên quan đến nhiều quan hệ hoặc trong phạm vi chỉ một quan hệ. Nếu phạm vi chỉ là một quan hệ:Miền giá trị [domain constraint]Khoá [key constraint]Các giá trị NULLToàn vẹn thực thể [entity integrity constraint]Phạm vi liên quan đến nhiều quan hệ:Toàn vẹn tham chiếu [referential integrity constraint]Các ràng buộc khácRàng buộc miền giá trị: Là loại ràng buộc về giá trị của một thuộc tính xác định nào đó trong một quan hệ cụ thể. Ràng buộc này có thể áp dụng lên một thuộc tính hoặc một nhóm các thuộc tính tự ràng buộc lẫn nhau về giá trị.Ví dụ: 0 Hay một quan hệ TRASACH có thuộc tính ngayMuon và ngayTra: ngayMuon ngayTraRàng buộc về khoá: Thường được biểu diễn bằng các phụ thuộc hàm, là một loại ràng buộc liên bộ phổ biến xác lập sự tồn tại duy nhất của các bộ trong một quan hệ.Ví dụ: Hai bộ phân biệt của cùng quan hệ không thể có thuộc tính khoá trùng nhau. Mỗi sinh viên có mã số duy nhất, …Ràng buộc về giá trị NULL: Ràng buộc này cho biết một thuộc tính có thể nhận giá trị NULL hay không.Ví dụ:- Nếu mỗi bộ của quan hệ SINH VIÊN bắt buộc phải hợp lệ thì thuộc tính tên sinh viên không được phép NULL. Vì vậy tên sinh viên được ràng buộc là NOT NULL.- Nhưng nếu xét quan hệ KHÁCH HÀNG[id, hoten, dienthoai, tuoi, diachi, luong] thì thuộc tính tuổi và luong có thể ràng buộc là NULL.

Xem thêm: Gta Vice City Cho Android, Game Cướp Đường Phố Cho Android, Tải Game Cướp Đường Phố Gang Star Cho Điện Thoại

Ràng buộc toàn vẹn thực thể: Kiểm tra rằng khoá chính không thể mang giá trị NULL hay nói cách khác – các khoá chính được sử dụng để xác định các bộ trong một quan hệ. Nếu có bất cứ khoá chính nào mang giá trị NULL thì các bộ tương ứng đó sẽ không thể xác định được.Ví dụ: Nếu có hai hoặc nhiều bộ có khoá chính mang giá trị NULL => thể không thể phân biệt chúng nếu tham khảo chúng từ các quan hệ khác.Ràng buộc toàn vẹn tham chiếu: Được quy định giữa hai quan hệ và dựa trên ràng buộc thực thể, được sử dụng để duy trì sự thống nhất / nhất quán giữa các bộ trong hai quan hệ. Ràng buộc này được thể hiện qua khái niệm khoá ngoại hay còn gọi là ràng buộc toàn vẹn về khoá ngoại.Ví dụ: Xét 2 quan hệ bên dưới


Một số ràng buộc khác:RBTV liên thuộc tính giữa nhiều quan hệRBTV liên bộ giữa các bộ trong các quan hệRBTV về thuộc tính tổng hợp> Trong các khóa học LẬP TRÌNH WEB VỚI JAVA, LẬP TRÌNH WEB VỚI PHP cũng như các khóa học khác tại NIIT - ICT Hà Nội, bạn sẽ được hướng dẫn rõ hơn về các ràng buộc này khi làm đồ án [Thường là làm 2 đồ án lớn].
Sự tương thông giữa các quan hệ là mối liên hệ giữa các quan hệ trong cùng một cơ sở dữ liệu. Dựa vào sự tương thôngnày, bạn có thể truy xuất các thuộc tính dữ liệu cần thiết từ các quan hệ mà không cần phải xét hết các quan hệ.Chẳng hạn, ta có lược đồ CSDL như sau:
SINHVIEN [MASV, hoten, namsinh, diachi, #ML]LOP [ML, tenlop]MONHOC [MM, tenmon, TC, LT, TH]DIEM [#MASV, #MM, hk, nk, diem]GIAOVIEN [MAGV, hotenGv, namsinhGv, diachiGv]DAY [#MAGV, #MM, hk, nk]
Ta có thể thấy, trong lược đồ CSDL trên có các ràng buộc tham chiếu giữa MSSV giữa hai quan hệ SINHVIEN và DIEM, ML giữa SINHVIEN và LOP, MM giữa MONHOC và DAY, MAGV giữa GIAOVIEN và DAY.Vậy sự tương thông dữ liệu nằm ở đâu? Đó chính là thông qua các ràng buộc tham chiếu mà ta vừa liệt kê ra.Ví dụ: Tìm điểm môn CSDL của sinh viên Trương Vô Kỵ


Tóm lại, ràng buộc là thứ không thể thiếu trong việc thiết kế và vận hành một CSDL trong thực tế. Ràng buộc là kiến thức tiên quyết để bắt đầu xây dựng một CSDL nhất quán và logic để đáp ứng được các nhu cầu khách hàng trong xây dựng và phát triển phần mềm.Mặc dù, nội dung bài viết chỉ giúp các bạn làm quen với mô hình quan hệ - nhưng bạn hãy đọc lại 2 bài vừa rồi vài lần, nắm vững kiến thức này rồi chuyển qua học cách câu lệnh truy vấn SQL để đảm bảo bạn hiểu sâu về CSDL.Nó rất quan trọng khi thiết kế CSDL để lập trình web, lập trình ứng dụng đó.

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.

          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, hđ2 Ỵ HÓAĐƠN, hđ1¹ hđ2 Þ  hđ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đ  Ỵ HÓAĐƠN thì:

hđ.Số-chủng-loại-mặt-hàng = COUNT [cthđ Ỵ CHITIẾT_HĐ, cthđ.Số-hóa-đơn = hđ.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đ Ỵ HÓAĐƠN thì:

hđ.Tổng-trị-giá =  SUM [cthđ.Trị-giá] đối với cáccthđ Ỵ CHITIẾT_HĐ sao cho : cthđ. Số-hóa-đơn= hđ. 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

Video liên quan

Chủ Đề