Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint)
Nội dung trình bày
Giới thiệu
Các yếu tốcủa RBTV
Phân loại RBTV
Cài đặt RBTV
Tóm tắt nội dung Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Ràng buộc toàn vẹn 1
Ràng buộc toàn vẹn
(Integrity Constraint)
Chương 6
Nội dung trình bày
 Giới thiệu
 Các yếu tố của RBTV
 Phân loại RBTV
 Cài đặt RBTV
Ràng buộc toàn vẹn 2
Giới thiệu
 RBTV
• Các điều kiện mọi trạng thái của quan hệ đều phải thỏa ở bất kỳ thời điểm 
nào.
• Xuất phát từ các qui tắc quản lý được áp đặt lên các đối tượng trong thế
giới thực.
 Mục đích của RBTV
• Đảm bảo tính nhất quán của dữ liệu.
- Người giám sát phải là một nhân viên trong công ty.
- Dự án phải được điều phối bởi một phòng trong công ty.
• Đảm bảo ngữ nghĩa thực tế của CSDL.
- Ngày nhận chức > Ngày sinh.
- Lương nhân viên < Lương trưởng phòng.
 RBTV có 3 yếu tố
• Nội dung.
• Bối cảnh.
• Bảng tầm ảnh hưởng.
Nội dung của RBTV
 Được phát biểu bằng
• Ngôn ngữ tự nhiên.
- Đơn giản, dễ hiểu.
• Ngôn ngữ hình thức
- Đại số quan hệ, phép tính quan hệ, mã giả (pseudo 
code).
- Có sở toán học, đôi lúc khó hiểu.
Ràng buộc toàn vẹn 3
Ví dụ
 RB-1
• Mỗi nhân viên có một mã số riêng biệt dùng để phân biệt với các 
nhân viên khác.
• ∀t1, t2 ∈ NHANVIEN (t1 ≠ t2 ⇒ t1.MaNV ≠ t2.MaNV)
 RB-2
• Mỗi nhân viên phải làm việc trong một phòng ban.
• NHANVIEN[MaPhong] ⊆ PHONGBAN[MaPB]
 RB-3
• Mỗi nhân viên chỉ được phép tham gia không quá 3 dự án.
• ∀s ∈ THAMGIA (card({t | t ∈ THAMGIA ∧ t.MaNV = s.MaNV}) ≤ 3)
 RB-4
• Mỗi phòng ban phải có ít nhất một nhân viên
• ∀s ∈ PHONGBAN (∃t ∈ NHANVIEN (t.MaPhong = s.MaPB))
Bối cảnh của RBTV
 Là những quan hệ mà RBTV có hiệu lực.
 Bối cảnh có thể là một quan hệ hoặc nhiều quan 
hệ.
 Ví dụ
• RB-1 có bối cảnh là NHANVIEN.
• RB-2, RB-4 có bối cảnh là NHANVIEN, PHONGBAN.
• RB-3 có bối cảnh là THAMGIA.
Ràng buộc toàn vẹn 4
Bảng tầm ảnh hưởng của RBTV (1)
 RBTV có thể bị vi phạm khi thực hiện các thao tác cập nhật 
trên bối cảnh
• Thêm
• Xóa
• Sửa
 Bảng tầm ảnh hưởng dùng để xác định thời điểm cần kiểm 
tra RBTV.
--+Quan hệ k
............
-++Quan hệ 1
SửaXóaThêmTên RBTV
+ : cần phải kiểm tra RBTV
- : không cần kiểm tra RBTV
Các quan hệ
bối cảnh
Ví dụ
--+NHANVIEN
SửaXóaThêmRB-1
-+-PHONGBAN
+-+NHANVIEN
SửaXóaThêmRB-2
--+THAMGIA
SửaXóaThêmRB-3
--+PHONGBAN
+--NHANVIEN
SửaXóaThêmRB-4
Ràng buộc toàn vẹn 5
Bảng tầm ảnh hưởng của RBTV (2)
 Bảng tầm ảnh hưởng tổng hợp
• Xây dựng trên cơ sở bảng tầm ảnh hưởng của các RBTV.
• Để xác định thời điểm kiểm tra RBTV khi một thao tác cập nhật trên 
một quan hệ nào đó được thực hiện.
...
...
...
...
...
+
T
Tên RBTV r
...
-
X
+
...
+
S SXT
-+Quan hệ n
............
--+Quan hệ 1
Tên RBTV 1
Ví dụ
+
-
T
RB-4
-
-
X
-
+
S
...
--+THAMGIA
-+-PHONGBAN
+-+--+NHANVIEN
...SXTSXTSXT
RB-3RB-2RB-1
Ràng buộc toàn vẹn 6
Phân loại RBTV
 Phân loại theo bối cảnh
• Bối cảnh là một quan hệ.
• Bối cảnh là nhiều quan hệ.
 Mục đích
• Giúp người thiết kế phát hiện các RBTV của một CSDL.
 RBTV có bối cảnh là một quan hệ
• RBTV miền giá trị.
• RBTV liên thuộc tính.
• RBTV liên bộ.
 RBTV có bối cảnh là nhiều quan hệ
• RBTV tham chiếu.
• RBTV liên thuộc tính - liên quan hệ
• RBTV liên bộ - liên quan hệ.
• RBTV thuộc tính tổng hợp.
RBTV miền giá trị (1)
 RB-5
• Lương của nhân viên không thấp hơn 10.000.
• ∀t ∈ NHANVIEN (t.Luong ≥ 10.000)
+-+NHANVIEN
SửaXóaThêmRB-5
Ràng buộc toàn vẹn 7
RBTV miền giá trị (2)
 RB-6
• Giả sử quan hệ NHANVIEN có thêm thuộc tính ngày xếp 
lương. Khi mức lương thay đổi, thì giá trị của ngày xếp 
lương phải luôn tăng.
• τ : NHANVIEN → NHANVIEN
∀t ∈ NHANVIEN (t.NgXepLuong < τ(t).NgXepLuong)
+--NHANVIEN
SửaXóaThêmRB-6
RBTV liên thuộc tính
 RB-7
• Ngày xếp lương phải lớn hơn ngày sinh của nhân viên.
• ∀t ∈ NHANVIEN (t.NgSinh < t.NgXepLuong)
 RB-8
• Một nhân viên không được giám sát chính mình.
• ∀t ∈ NHANVIEN (t.MaGSat ≠ t.MaNV)
+-+NHANVIEN
SửaXóaThêmRB-7
+-+NHANVIEN
SửaXóaThêmRB-8
Ràng buộc toàn vẹn 8
RBTV liên bộ
 Sự tồn tại của bộ này phụ thuộc vào bộ
khác.
• Trường hợp đặc biệt là ràng buộc khóa chính.
 RB-1 và RB-3.
RBTV tham chiếu (1)
 RB-9
• Chỉ có nhân viên của công ty mới được tham gia vào dự
án của công ty.
- Sự tồn tại của một bộ t ∈ THAMGIA phụ thuộc vào sự tồn tại của 
một bộ u ∈ NHANVIEN và một bộ v ∈ DUAN.
• ∀t ∈ THAMGIA (∃u ∈ NHANVIEN, ∃v ∈ DUAN (u.MaNV 
= t.MaNV ∧ v.MaDA = t.MaDA))
-+-DUAN
-+-NHANVIEN
--+THAMGIA
SửaXóaThêmRB-9
Ràng buộc toàn vẹn 9
RBTV tham chiếu (2)
 RB-10
• Mọi thân nhân phải có mối quan hệ họ hàng với nhân 
viên của công ty.
- Sự tồn tại của bộ một t ∈ THANNHAN phụ thuộc vào sự tồn tại 
của một bộ u ∈ NHANVIEN.
• ∀t ∈ THANNHAN (∃u ∈ NHANVIEN (u.MaNV = t.MaNV))
--+THANNHAN
-+-NHANVIEN
SửaXóaThêmRB-10
RBTV tham chiếu (3)
 RB-11
• Người giám sát trực tiếp (nếu có) phải là một nhân viên 
trong công ty.
- Sự tồn tại của bộ một t ∈ NHANVIEN phụ thuộc vào sự tồn tại 
của một bộ u ∈ NHANVIEN.
• ∀t ∈ NHANVIEN (t ≠ null ∧ ∃u ∈ NHANVIEN (u.MaNV = 
t.MaGS))
 Nhận xét
• RBTV tham chiếu có thể có bối cảnh là một quan hệ.
+++NHANVIEN
SửaXóaThêmRB-11
Ràng buộc toàn vẹn 10
RBTV liên thuộc tính - liên quan hệ
 Mối liên hệ giữa các thuộc tính trong nhiều lược đồ
quan hệ.
 RB-12
• Ngày nhận chức của trưởng phòng phải lớn hơn ngày 
sinh.
• ∀t ∈ PHONGBAN (∃u ∈ NHANVIEN (u.MaNV = 
t.TrPhong ∧ u.NgSinh < t.NgNhanChuc))
+-+PHONGBAN
+--NHANVIEN
SửaXóaThêmRB-12
RBTV liên bộ - liên quan hệ
 Mối liên hệ giữa các bộ trên nhiều lược đồ quan 
hệ.
 RB-4.
 RB-13
• Lương của nhân viên không được cao hơn lương trưởng 
phòng.
• ∀t ∈ NHANVIEN (∃u ∈ PHONGBAN (∃v ∈ NHANVIEN 
(v.MaNV = u.TrPhong ∧ u.MaPB = t.MaPhong ∧ v.Luong 
> t.Luong)))
+-+PHONGBAN
+-+NHANVIEN
SửaXóaThêmRB-13
Ràng buộc toàn vẹn 11
RBTV thuộc tính tổng hợp
 Thuộc tính của lược đồ này được tính toán từ các 
thuộc tính hoặc các bộ của các lược đồ khác.
 RB-14
• Giả sử PHONGBAN có thêm thuộc tính lưu số nhân viên 
của phòng. Khi đó số nhân viên của phòng phải bằng 
tổng số nhân viên thuộc phòng đó.
• ∀t ∈PHONGBAN (t.SoNV = card({u | u ∈ NHANVIEN ∧
u.MaPhong = t.MaPB}))
+-+PHONGBAN
+++NHANVIEN
SửaXóaThêmRB-14
Cài đặt RBTV với Assertion (1)
 create assertion check 
 drop assertion 
 RB-12
• create assertion RB_12
check (not exists (
select *
from PHONGBAN, NHANVIEN
where TrPhong = MaNV and
NgSinh > NgNhanChuc));
Ràng buộc toàn vẹn 12
Cài đặt RBTV với Assertion (2)
 RB-3
• create assertion (
check (not exists (
select MaNV
from THAMGIA
group by MaNV
having count(*) > 3));
Cài đặt RBTV với Check (1)
 create table (
 check ,
 ...,
 check 
);
 RB-5
• create table NHANVIEN (
...,
Luong int check (Luong >= 10000),
..., 
)
Ràng buộc toàn vẹn 13
Cài đặt RBTV với Check (2)
 RB-7
• create table NHANVIEN (
...,
NgSinh date,
NgXepLuong date,
...,
check (NgSinh < NgXepLuong)
);
Cài đặt RBTV với Trigger (1)
 Tập hợp các lệnh tự động thực hiện khi xảy ra các 
sự kiện nào đó.
 Mô hình ECA (Sự kiện - Điều kiện - Hành động)
SỰ KIỆN HÀNH ĐỘNGĐIỀU KIỆN
Đúng
-Thêm
-Xóa
-Sửa
Tập hợp các lệnhXác định trên 
các bộ củ và mới
Ràng buộc toàn vẹn 14
Cài đặt RBTV với Trigger (2)
 create trigger 
 on <Tên 
bảng>
[for each row | for each statement]
[when ]
;
 drop trigger 
Cài đặt RBTV với Trigger (3)
 RB-13
• create trigger RB_13
before insert or update of Luong on NHANVIEN
for each row
when (
new.Luong > (select Luong
from NHANVIEN
where MaNV = new.MaGSat))
ERROR(“Luong moi cao hon luong giam sat”);
Ràng buộc toàn vẹn 15
Cài đặt RBTV trên SQL Server
 SQL Server 2000
• Không hổ trợ Assertion.
• Hổ trợ Check và Trigger.
 Trigger trên SQL 2000
• Xem Help Book Online
- Transact SQL → CREATE TRIGGER.
File đính kèm:
 Bài giảng Cơ sở dữ liệu - Chương 6 Ràng buộc toàn vẹn (Integrity Constraint).pdf Bài giảng Cơ sở dữ liệu - Chương 6 Ràng buộc toàn vẹn (Integrity Constraint).pdf




