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
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
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:
mm»
`
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
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
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
ocr Dấu * : Không được sửa giá trị
R,, - + - khoa chính
Vd: Bang tam anh huéng cua C,, C,, C, | C, Thém Stra Xóa
như sau: SV + - (*) -
C; 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: SV KHOA KETQUA T S xX T S xX T S X C, ¬ ¬ C, + + - - - + C, + - -
= 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
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ệ
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 Vd: NGSINH < date() 0 < DIEM < 10 0 < SOTIET <= 180 2 RBTTV liên thuộc tính: là mồi liên hệ giữa các thuộc tính trong cùng một lược đỗ quan hệ -= Vd: CSDL “QLBH như sau:
KHACH (MAKH, TENKH, DCHI_KH, DTHOAL KH, CONGNO) DATHANG (SO_DDH, MAHH, SL_DAT, NGAY_DH, MAKH) HOADON (SO_HD, NGAY_HD, SO_DDH, NGAYXUAT, TRIGIA) PHIEUTHU(SO_PT, MAKH, NGAYTHU, SOTIEN)
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
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):
= Vd: Néu 3 kq e KETQUA, kq.MASV =’01’
Thì phải 3 s € SV: sv.MASV ='01’
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
quan hệ)
= Vd: Gita hai quan hệ HOADON và CT_HD, Có ràng buộc: “Mỗi hóa đơn phải có ít nhât một mặt hàng”
Nếu 3 hd e HOADON
Thì phải 1 cthd e CT_HD: cthd.SO_ HD = hd.SO_HD
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)
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
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
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
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 } ]
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,
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)],
[MATCH { FULL] PARTIAL | SIMPLE } ]
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
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] ]
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
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]
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
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
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
Ví dụ:
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
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:
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
Trang 274) Bao đóng của tập thuộc tính m Các tính chát của bao đóng:
1 Tinh phan xa X' 3X
2 Tinh don digu X CY => X* c Y*
Trang 28Ế ` mnuạt Toán Tìm Bao Đóng của tập thuộc tính
Trang 29` Tnuạt Toán Tìm Bao Đóng của tập thuộc tính
Trang 304) Bài Tập Tìm Bao Đóng Tập Thuộc Tính
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:
o FTF
5= Khi áp dụng các tính chất F1, F2, F3 ( của phụ thuộc hàm) cho F*thi ta khong thu dugc PTH moi nào ngoài F7
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:
Trang 334) Tập phụ thuộc hàm tối tiêu (1)
= Hai tập phụ thuộc hàm tương đương: Hai tap phụ thuộc hàm F và G được gọi là tương đương nêu F* = G* Khi đó, ta nói F phủ G hay G phủ F Kí hiệu: F = G
ø Định nghĩa tập phụ thuộc hàm tối tiêu: Tập F được gọi là tập phụ thuộc hàm tối tiêu nếu:
5 Về phải của các phụ thuộc hàm trong F chỉ chứa một thuộc tính
5= Không tôn tại phụ thuộc hàm thừa Một phụ thuộc hàm là thừa khi:
F -t‡X>A} tương đương với F
®(F -X>A)” chứa X-—›A
OAc XE KoA)
- Không tôn tại các thuộc tính thừa ở về trái Một thuộc tính ở về trái là thừa khi:
Với ZcX, (F -{X—> A}) U {Z—>A} tương đương với F © Với ZcX, {ZA} e Ft hayAe Z*
thi tap thudc tinh (X - Z) là thừa
Trang 344) Tập phụ thuộc hàm tối tiêu (2)
= Cách chuyên tập pth F về tập pth tối tiểu:
=° Bước 1: Đưa các PTH về dạng chỉ có 1 thuộc tính ở về phải
=> F,
= Buc 2: Loai bo cac pth thtra trong F, => F,
=' Bước 3: Loại bỏ các thuộc tính thừa ở về trái các pth của F;
= Vi du: F={ ABC ACD >B
CoA D— EG
CG > BD BC >D BE>C CE AG}
Tìm phủ tối tiêu của F
EI Định lý: Mọi tập phụ thuộc hàm F đều có một tập phụ thuộc hàm
tôi tiêu G tương đương