Bài giảng gồm 3 nội dung chính trình bày về các kiến thức Ràng buộc toàn vẹn, cài đặt ràng buộc toàn vẹn khi tạo bảng Create table và phụ thuộc hàm. Mời các bạn cùng tham khảo. Bài giảng gồm 3 nội dung chính trình bày về các kiến thức Ràng buộc toàn vẹn, cài đặt ràng buộc toàn vẹn khi tạo bảng Create table và phụ thuộc hàm. Mời các bạn cùng tham khảo.
Trang 1Chương 5 Ràng buộc toàn vẹn mmamxxaawwnnnnnnnnnnsaaaaaaa
GV: Trần Ngân Bình
tnbinh@cit.ctu.edu.vn
Trang 24) Nội dung
m hàng buộc toàn ven (RBTV)
m= Cài đặt RBTV khi tạo bang bang CREATE TABLE
= Phụ thuộc hàm
= Bao đóng của tập thuộc tính
= Bao đóng của tập phụ thuộc ham
5= Tập phụ thuộc hàm tối tiểu
=” Tập phụ thuộc hàm rút gọn tự nhiên
5 2
Trang 34) Khái Niệm Rang Budc Toan Ven
= Trong một CSDL, luôn tôn tại rất nhiều mối quan hệ ràng buộc giữa các
thuộc tính, các bộ với nhau, Các mối quan hệ này là các điều kiện bất biến
mà tất cả các bộ của các quan hệ trong CSDL phải thỏa mãn ở bất cứ thời
điểm nào Các điều kiện này được gọi là ràng buộc toàn vẹn (RBTV)
m Vd: Trong CSDL “QLSV” như sau:
1 SV (MASV, HOTEN_SV, NU, SO_CMND, NGSINH, DCHI_SV, TINH, MAKHOA)
KHOA (MAKHOA, TENKHOA) MONHOC (MAMH, TENMH, SOTIET) KETQUA (MASV, MAMH, HK, NK, LANTHI, DIEM)
Có các ràng buộc:
C1 : Mỗi sinh viên có một mã số riêng biệt không trùng với bất cứ
sinh viên nào khác
=J C2 : Mỗi sinh viên phải đăng ký vào một khoa của trường
C3 : Mỗi sinh viên được thi tối đa hai lần cho 1 môn trong 1 HK
9.3
Trang 44) Điều kiện 8 bối cảnh RBTV
1 Điều kiện của RBTV: được biêu diễn bằng ngôn ngữ tự nhiên,
ngôn ngữ giả, đại sô quan hệ, hay phụ thuộc hàm,
Vd: Các điều kiện trên được biểu diễn như sau:
C,: Vu e€SV, Vv € SV: us>v & U.MASV <> v.MASV
C; : SV[MAKHOA] c KHOA[MAKHOA]
zj C¿:V sv e KETQUA_ Card({k e KETQUA |
^ k.MASV = sv.MASV a k MAMH = sv.MAMH
A k.HK= sv.HK A k.NK = sv.NK }) <= 2
2 Bồi cảnh của một RBTV: Là những quan hệ mà RBTV đó có hiệu
lực; hay nói cách khác, đó là những quan hệ cần phải sử dụng để
kiêm tra RBTV đó
Vd: Bói cảnh của C1 là quan hé SV;
Bồi cảnh của C2 là quan hệ SV va KHOA;
Bói cảnh của C3 là quan hệ KETQUA
5 4
Trang 54) Bang Tầm Ảnh Hưởng
3 Bảng tầm ảnh hưởng của RBTV: Khi thực hiện một thao tác cập nhật trên bôi cảnh của một RBTV C có thé dan đến C bj vi phạm Bảng tâm ảnh hưởng cho một RBTV xác định thời điểm can kiém
tra RBTV do
Bảng tầm ảnh hưởng của một RBTV C, có dạng như sau:
C, Thêm | Sửa Xóa | C,: có bối cảnh là R1, R¿, , R,
R, + + Dau + : can phai kiém tra C
R, - - + Dấu - : không cân kiêm tra C
Vd: Bang tam anh huéng cua C,, C,, C, | C, Thém Stra Xóa
Ca Thêm | Sửa Xóa
Trang 64) Bang Tam Ảnh Hưởng Tổng Hợp
m Bảng tâm ảnh hưởng tông hợp của tất cả các RBTV:
` Các cột là các thao tác cập nhật trên từng quan hệ
= Cac dong là các RBTV
m Vd: Từ các bảng tâm ảnh hưởng trên, ta có bảng tam anh
hưởng tông hợp như sau:
= Dựa vào bảng tầm ảnh hưởng tổng hợp này, chúng ta sẽ dễ
dàng xác định cân phải tiên hành kiêm tra các RBTV nào khi người sử dụng thực hiện một thao tác cập nhật
5 6
Trang 74) Phan Loai cac RBTV
m Cac RBTV co thé dug phân loại theo ý nghĩa như đã giới thiệu trong chương 2:
= Toàn vẹn thực thể
Toàn vẹn tham chiếu 5= Toàn vẹn miền giá trị 5= Toàn vẹn về logic (hay RB khác)
= Tuy nhiên, ta cũng có thể phân chia các RBTV theo phạm vi áp dụng của nó:
= RBTV trén một quan hệ
= RBTV liên quan hệ
5 7
Trang 84) Phan Loai cac RBTV (1)
= Loại RBTV 1: là những RBTV có bối cảnh là một quan hệ:
1 RBTV về miền trị: liên quan đến miền giá trị của một thuộc tính
CT_HD ( SO_HD, MAHH, GIA_BAN, SL)
© Trong quan hé HOADON cé rang buéc: “hang héa chỉ được xuất
sau khi lập hóa don’ :
v hd e HOADON, hd.NGAY_ XUAT > hd.NGAY_ HD
5 8
Trang 94) Phan Loai cac RBTV (2)
3 RBTV lién bo: la sự ràng buộc giữa các bộ bên trong một quan
hệ, trong đó phô biên là RBTV vê khóa nội
Vd:- MASV là duy nhất trong QH SV (MASV Ia khéa cla QH SV)
- Mỗi sinh viên được thi tối đa 2 lần cho một môn
= RBTV về khóa nội là một RBTV liên bộ rất phổ biến, chúng
thường được biểu diễn bằng các phụ thuộc hàm, và thường được
các hệ quản trị CSDL hỗ trợ tự động kiểm tra
ø= Loại RBTV 2: Là các RBTV có bối cảnh gồm nhiều quan
hệ:
1.Ề RBTV về phụ thuộc tồn tại (RBTV về khóa ngoài):
Thì phải 3 s € SV: sv.MASV ='01’
5.9
Trang 104) Phan Loai cac RBTV (2)
2 RBTV liên thuộc tính, liên quan hệ: là mối liên hệ giữa các
thuộc tính của nhiễu quan hệ khác nhau
Vd: Giữa hai quan hệ DATHANG và HOADON của CSDL
“QLBH”, có ràng buộc như sau:
Nếu 7hd e HOADON, dh e DATHANG,
hd.SO_DDH = dh.SO_DDH thì dh.NGAY_DH <= hd NGAY_HD
3 RBTV lién bo, lien quan he: RBTV loai nay co tác dụng trên
từng nhóm các bộ của nhiêu quan hệ khác nhau (thường là hai
Trang 114) Phan Loai cac RBTV (4)
4 RBTV vé thu6c tinh tong hop: RBTV nay duoc xac định trong
trường hop médt thudc tinh A cua mét quan hé R được tính toán từ
các thuộc tính của các quan hệ khác
Vd 1: Trị giá của hóa đơn bằng tổng các GIABAN * SL của các mặt hàng trong hóa đơn đó:
hd.TRIGIA => (cthd.GIABAN * cthd SL) cthd.SO_HD = hd.SO_HD
=| Vd 2: Sô tiên công nợ của một khách hàng A sẽ băng hiệu số giữa tổng gia tri cua các hóa đơn bán cho khách hang A và tổng số tiền thu của khách hàng đó:
V kh e KHACH: kh.CONGNO = >hd.TRIGIA - >ptSOTIEN
hd € Hy, pt < P,,,
voi H,, =(HOADON * DATHANG) (MAKH = kh.MAKH) P,, = PHIEUTHU (MAKH = kh.MAKH)
5 11
Trang 124) Phan Loai cac RBTV (5)
5 RBTV do có chu trình trong đồ thị biéu diễn của lược đồ
CSDL: Một lược đô CSDL có thể được biễu diễn bằng một đô thị
vô hướng Trong đô thị này, ta có 2 loại nút: nút thuộc tính và nút
quan hệ Một cung vô hướng trong đô thị nồi 1 nút thuộc tinh A
với một nút quan hệ R khi A thuộc H
Vd: Một phần đồ thị biểu diễn cho CSDL “QLBH” có dạng như
SƠ HD
MAHH:
5 12
Trang 134) Phan Loai cac RBTV (6)
= Trong hinh ve trên, chúng ta nhận thấy đồ thị biểu diễn có chứa một chu trình gồm 3 quan hệ DATHANG, HOADON, CT_ HD Như vậy, CSDL sẽ phải có một RBTV thuộc 1 trong 3 trường ‘hop Sau:
Một hóa đơn thực hiện cho một don dat hang chi giao những mặt hàng mà khách yêu câu và phải gồm đây đủ tất cả những mặt hàng
có trong đơn đặt hàng đó
5> Một hóa đơn thực hiện cho một đơn dặt hàng chỉ giao những mặt hàng mà khách yêu cầu và có thể không giao đây đủ tất cả các những mặt hàng có trong đơn đặt hàng đó
5 Một hóa đơn thực hiện cho một đơn đặt hàng có thể gồm tùy ý các
mặt hàng dù có hay không trong đơn đặt hàng của khách
= RBTV này thể hiện sự tương giao giữa 2 tập hợp A và B với:
“= A = DATHANG[SO_DDH, MAHH]
== B= (HOADON * CT_HD)[SO_DDH, MAHH]
Trường hợp thứ nhất: A=B
Trường hợp thứ hai: A 5 B Trường hợp thứ ba: Az BvàBz A
5 13
Trang 144) Cai Dat RBTV
m= Hầu hết các HQTCSDL đều cung cấp công cụ dé cai dat RBTV
trên các bảng dữ liệu
= Toàn vẹn thực thể: PRIMARY KEY, UNIQUE KEY
= Toan ven tham chiéu: FOREIGN KEY
= Toan ven mién gia tri: CHECK, RULE, DEFAULT VALUE
= Toan ven vé logic (hay RB khac): TRIGGER
= Việc cài đặt các RBTV có thê thực hiện:
= Trong khi tao bang: CREATE TABLE
= Sau khi tao bang: ALTER TABLE
5 14
Trang 15Ế 3 cnEATE TABLE - Ràng Buộc Trên Cột
m CREATE TABLE <tén_bang> (
{ <tên_cột> {<kiéu> | <tén_mién_tri>}
[NOT NULL] [PRIMARY KEY | UNIQUE ] [ DEFAULT <tri_ma&c_dinh>] [ CHECK (<diéu_kién>)]
[ REFERENCES <tén bang cha>
[(<ds tên các cột của khóa chính trong bảng cha>)] [MATCH { FULL] PARTIAL | SIMPLE } ]
[ON UPDATE <hanh_ddng>]
[ON DELETE <hanh_d6ng>] ]
Trang 164) Ví dụ Tạo Bảng có RB Trên Cột
m CREATE TABLE NhaxB (
MaNXB char(4) NOT NULL CONSTRAINT PK_NXB PRIMARY KEY CHECK (MaNXB IN ('1389"', '0736', '0877', '1622', '1756')
OR MaNXB LIKE '99[0-9][0-9]'), TenNXB varchar(40) NULL,
ThPho varchar(20) NULL, QGia varchar(30) NULL DEFAULT(‘VietNam') _ )
m CREATE TABLE NhanVien(
MaNV char(9) PRIMARY KEY CHECK (MaNV LIKE ‘[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]‘) , TenNV varchar(30) NOT NULL,
MaNXB char(4) NOTNULL DEFAULT (9952) REFERRENCES NhaXB(MaNXB),
NgayVao datetime NOT NULL DEFAULT (getdate() ) MaSep char(9)
)
5 16
Trang 17+ @REATE TABLE — Rang Buéc Trén Bang
=m CREATE TABLE <tén_bang> (
{<tên cột> {<kiéu> | <tén_mién_tri>} [ |] }
[, PRIMARY KEY (<danh_sách_ cột>) ]
{ [LUNIQUE (<danh sách cột>)| [ ] }
{ [, FOREIGN KEY (<ds_c6t_khéa_ngoai>)
REFERENCES <tén_bang_cha> [(khéa_tng_vién)],
[ON UPDATE <hanh_ddéng>]
[ON DELETE <hanh_dd6ng>] ] [ ] }
Trang 184) Vi du Tao Bang co RB Trén Bang
m CREATE TABLE Sach_TacGia (
MaTG char(11) REFERENCES TacGia(MaTG) NOT NULL,
MaSach char(6) NOT NULL, ThuTulG smallint NOT NULL,
PRIMARY KEY (MaTG, MaSach), UNIQUE (MaSach, ThuTuTG), /Khóa ứng viên FOREIGN KEY (MaSach)
REFERENCES Sach(MaSach) ON DELETE RESTRICT
5 18
Trang 194) Thiét Lap Toan Ven Sau Khi Tao Bang
= ALTER TABLE <tén_bang>
[ADD [COLUMN] <tén_cdt> {<kiéu | <mién_tri>}
[NOT NULL] [ PRIMARY KEY | UNIQUE]
[DEFAULT <m&ac_dinh>] [CHECK (<diéu_kién>)] ]
| [DROP [COLUMN] <tén_cét> [RESTRICT | CASCADE] ]
| [ALTER [COLUMN] <tén_cdt>
{SET DEFAULT <mac_dinh> | DROP DEFAULT} ]
| [ADD [CONSTRAINT [tén_RB] ] <dinh_nghia_RB>]
| [DROP CONSTRAINT tén_RB [ RESTRICT | CASCADE] ]
5 19
Trang 204) Ví Dụ Thêm RB Trên Bang
= ALTER TABLE NhanVien
ADD CONSTRAINT FK_MaSep
FOREIGN KEY (MaSep) REFERENCES NhanVien(MaNV)
= ALTER TABLE NhanVien
ALTER COLUMN NgayVao DROP DEFAULT
m ALTER TABLE NhanVien
DROP CONSTRAINT FK MaSep
= ALTER TABLE NhanVien
ADD COLUMN Mobile char(15) UNIQUE
5 20
Trang 214) Kiém Tra Rang Buéc Bang Trigger
m Lénh Tao Trigger cua SQL Server 2000
CREATE TRIGGER fén_trigger
ON { fable | view } [ WITH ENCRYPTION ]
{
{{ FOR | AFTER | INSTEAD OF }
{[INSERT ][, ][UPDATE ][, 1[DELETE] }
AS
<Câu lệnh SQL> [ 1]
9 21
Trang 224) Vi Du Trigger
= Khi một nhân viên bị xóa khỏi bảng NhanVien các thông tin của
NV đó được ghi vào một bảng khác có cùng lược đô quan hệ:
Cựu NV (viét trong SQL Server 2000)
CREATE TRIGGER Xoa_NV
ON NhanVien
AFTER DELETE
AS
INSERT INTO Cuu_NV
SELECT * FROM Deleted
Trang 234) Bai Tap
m Xay dyng bảng mô tả CSDL mức vật lý cho CSDL ban hang voi
đây đủ tât cả các ràng buộc toàn vẹn có thê có
m Viết tất cả các câu lệnh dé cai dat CSDL nay
5.23
Trang 24@ Phụ thuộc hàm
Phụ thuộc hàm: là một công cụ đề biểu diễn một số RBTV
Định nghĩa: Cho tập thuộc tính U; X,Y là tập con của U
Ta gọi X —› Y là PTH nếu với mỗi cặp bộ u,v thuộc RBTV,
ta có: uUX=v.X thì u.Y =v.Y
Trong quan hệ SV( MASV, HOTEN,NGSINH, .)
Có ràng buộc: không có hai sinh viên trùng MASV
MASV — HOTEN
Trong quan hệ NCC(TEN_NGC, TEN_HG, GIA, DCHI_NCC)
Có ràng buộc: với mỗi cặp giá trị (TEN_NCC, TEN_HG) ta có một GIÁ duy nhật
TEN_NÓCC, TEN_HG —› GIA
Hay, mỗi NCC chỉ có một địa chỉ duy nhất,
TEN_NCC -› DCHI_NCC
5 24
Trang 254) Tính Chất của Phụ thuộc hàm
F1: tính phản xạ : Nếu X 5Y thì X — Y
F2: tính bắc cầu: Nếu X —› Y., Y — Z thì X —› Z
F3: tính mở rộng hai về: Nếu X > Y thi XZ > YZ F4: tính twa bac cau : Néu X > Y, YZ > W thi XZ > W
FS: tinh phan xa chat : X > X
F6: Mỏ rộng về trái, thu hẹp về phải:
Néu X > Y thi moi Z, W thuộc U, ta có: XZ -› Y\W F7: Cộng tính đây đủ : Nếu X — Y , Z — W thì XZ — YW F8: Mở rộng về trái : Nếu X > Y thi XZ > Y
F9 Cộng tính ở về phải: Nếu X —› Y , X —› Z thì X > YZ
F10: Bộ phận ở về phải: Nếu X — YZ thì XY (X->Z) F11: tinh tich liy: Néu X > YZ, Z > AW thi X > YAW
5 25
Trang 264) Bao đóng của tập thuộc tính
= Dinh nghĩa Lược Đồ Quan Hệ:
LDQH là một bộ đôi ơ = <U,F>
với UU: là tập thuộc tính, F : là tập các PTH trên U
= Định nghĩa Bao Đóng:
Cho mot LDQH a = <U,F>, trong do:U = {A,,A,, ,A,},
F={L oR |L,,R, CU,i=1 m}, va tap thudc tinh X CU Bao đóng của tập X đồi với tập PTH F, ky hiéu: X*- hay X*
X'={AcU|X—A)
= Bồ đề: Cho các tập thuộc tính X,Y,Z c U Khi đó,
X->YZ ©®X->Y AX->Z
5 26
Trang 274) Bao đóng của tập thuộc tính
m Các tính chát của bao đóng:
2 Tinh don digu X CY => X* c Y*
Tinh liy dang X** =X*
Trang 28Ế ` mnuạt Toán Tìm Bao Đóng của tập thuộc tính
= Input: tap thudc tinh U, tap cac PTH F và một tập
5 28
Trang 29` Tnuạt Toán Tìm Bao Đóng của tập thuộc tính
= Input: tap thudc tinh U, tap cac PTH F va mot tap thudc tinh X c
X= AEDB Ket qua: X*=ABCDEGHI
5 29
Trang 304) Bài Tập Tìm Bao Đóng Tập Thuộc Tính
= Cho tập phụ thuộc ham F:
F={AB>5C D>EG
BC >D CG > BD ACD > B CE > AG}
Hay tim (BD)*, (CD)*, (ABE)*
5 30
Trang 314) Bao dong cua tap cac PTH (1)
= Dinh nghia: Cho tap PTH F trén tap thuộc tinh U
Bao đóng của F, kí hiệu F+ là tập nhỏ nhất các phụ
thuộc hàm trên U thoả 2 tính chất sau:
Trang 324) Bao đóng của tập cac PTH (2)
m Trên lí thuyết, ta hoàn toàn có thế xác định được 1 thủ tục tính bao
dong F* Nhưng dù tap thudc tinh U va tap PTH F là hữu hạn, thì bai toan tim F* van khó thực hiện vi tập L U và F trong thực tế rất lớn Do đó, có thé dan đến sự bùng nô tổ hợp
= Thay vào đó người ta thường xét bài toán khác : “Kiểm tra 1 phụ thuộc hàm f có thuộc F* hay không?" > “Bài Toan Thanh Vien”
= Để giải bài toán thành viên, người ta dựa vào tinh chat:
X>YeF ` ®YcXx"
ø Ví dụ:
F={ABC, BD, CD—-E, BE > GA}
Hãy xác định f : AE —› DGC có thê suy dẫn từ f hay không ? Hay f: AE — DGC c F* hay không 2?
Ta co: (AE)* = AEBCDG > DGC
Vậy, kết luận: AE DGC e F:
9 32