Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint)

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="">

RBTV có 3 yếu tố

Nội dung.

Bối cảnh.

Bảng tầm ảnh hưởng.

ppt 28 trang yennguyen 2860
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint)

Bài giảng Cơ sở dữ liệu - Chương 6: Ràng buộc toàn vẹn (Integrity Constraint)
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 
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ó cơ sở toán học, đôi lúc khó hiểu. 
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. 
 t 1 , t 2 NHANVIEN (t 1  t 2  t 1 .MaNV t 2 .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. 
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ửa 
Xóa 
Thêm 
Tê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ửa 
Xóa 
Thêm 
RB-1 
- 
+ 
- 
PHONGBAN 
+ 
- 
+ 
NHANVIEN 
Sửa 
Xóa 
Thêm 
RB-2 
- 
- 
+ 
THAMGIA 
Sửa 
Xóa 
Thêm 
RB-3 
- 
- 
+ 
PHONGBAN 
+ 
- 
- 
NHANVIEN 
Sửa 
Xóa 
Thêm 
RB-4 
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 
S 
X 
T 
- 
+ 
Quan hệ n 
... 
... 
... 
... 
- 
- 
+ 
Quan hệ 1 
Tên RBTV 1 
Ví dụ 
+ 
- 
T 
RB-4 
- 
- 
X 
- 
+ 
S 
... 
- 
- 
+ 
THAMGIA 
- 
+ 
- 
PHONGBAN 
+ 
- 
+ 
- 
- 
+ 
NHANVIEN 
... 
S 
X 
T 
S 
X 
T 
S 
X 
T 
RB-3 
RB-2 
RB-1 
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ửa 
Xóa 
Thêm 
RB-5 
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ửa 
Xóa 
Thêm 
RB-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ửa 
Xóa 
Thêm 
RB-7 
+ 
- 
+ 
NHANVIEN 
Sửa 
Xóa 
Thêm 
RB-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ửa 
Xóa 
Thêm 
RB-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ửa 
Xóa 
Thêm 
RB-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ửa 
Xóa 
Thêm 
RB-11 
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ửa 
Xóa 
Thêm 
RB-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ửa 
Xóa 
Thêm 
RB-13 
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 tong số luong của phòng. Khi đó tong số luong của phòng phải bằng tổng cac gia tri luong nhân viên thuộc phòng đó. 
 t PHONGBAN (t.TongLuong = sum({u.Luong | u NHANVIEN  u.MaPhong = t.MaPB})) 
+ 
- 
+ 
PHONGBAN 
+ 
+ 
+ 
NHANVIEN 
Sửa 
Xóa 
Thêm 
RB-14 
Cài đặt RBTV 
Các RBTV được cài đặ t bởi 
Primary key 
Foreign key 
Check constraint 
Assertion 
Trigger 
Stored Procedure 
Assertion (1) 
create assertion check 
drop assertion 
RB-12 : Ngày nhận chức của trưởng phòng phải lớn hơn ngày sinh. 
create assertion RB_12 
	check (not exists ( 
 select * 
 from PHONGBAN, NHANVIEN 
 where TrPhong = MaNV and 
 NgSinh > NgNhanChuc)); 
Assertion (2) 
RB-3 : Mỗi nhân viên chỉ được phép tham gia không quá 3 dự án. 
create assertion ( 
	check (not exists ( 
 select MaNV 
 from THAMGIA 
 group by MaNV 
 having count(*) > 3)); 
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ệnh 
Xác định trên các 
bộ giá trị cũ và mới 
Trigger (2) 
create trigger 
	after|before insert|delete|update on 
	referencing 
	new row|table as 
	old row|table as 
	for each row | for each statement 
	when () 
	; 
drop trigger 
Trigger (3) 
RB-13 : Lương của nhân viên không được cao hơn lương trưởng phòng. 
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”); 
Stored Procedure 
Các DBMS th ươn g mại cung cấp cách thức l ư u trữ các hàm hay thủ tục 
Đ ược l ư u trong các l ược đồ CSDL 
Đ ược sử dụng trong các câu lệnh SQL 
Cú pháp 
create procedure 
as 
	Khai báo biến cục bộ 
	Thân ch ươn g trình 
go 
exec 

File đính kèm:

  • pptbai_giang_co_so_du_lieu_chuong_6_rang_buoc_toan_ven_integrit.ppt