Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
415,93 KB
Nội dung
Chương Chương 5. R 5. R à à ng bu ng bu ộ ộ c to c to à à n v n v ẹ ẹ n n GV: Trần Ngân Bình tnbinh@cit.ctu.edu.vn 5. 2 N N ộ ộ i dung i dung Ràng buộctoànvẹn (RBTV) Cài đặt RBTV khi tạo bảng bằng CREATE TABLE Phụ thuộchàm ) Bao đóng củatậpthuộc tính ) Bao đóng củatậpphụ thuộc hàm ) Tậpphụ thuộc hàm tốitiểu ) Tậpphụ thuộc hàm rút gọntự nhiên 5. 3 Kh Kh á á i i Ni Ni ệ ệ m R m R à à ng Bu ng Bu ộ ộ c To c To à à n V n V ẹ ẹ n n Trong mộtCSDL, luôntồntạirất nhiềumối quan hệ ràng buộcgiữacác thuộc tính, các bộ với nhau, Các mối quan hệ này là các điềukiệnbấtbiến mà tấtcả các bộ của các quan hệ trong CSDL phảithỏamãnở bấtcứ thời điểm nào. Các điềukiệnnàyđượcgọi là ràng buộc toàn vẹn(RBTV). Vd: Trong CSDL “QLSV” như sau: 1. SV (MASV, HOTEN_SV, NU, SO_CMND, NGSINH, ÐCHI_SV, TINH, MAKHOA) 2. KHOA (MAKHOA, TENKHOA) 3. MONHOC (MAMH, TENMH, SOTIET) 4. KETQUA (MASV, MAMH, HK, NK, LANTHI, ÐIEM) ) Có các ràng buộc: C1 : Mỗi sinh viên có mộtmãsố riêng biệt không trùng vớibấtcứ sinh viên nào khác. C2 : Mỗi sinh viên phải đăng ký vào một khoa củatrường. C3 : Mỗi sinh viên đượcthitối đahailần cho 1 môn trong 1 HK. 5. 4 Đi Đi ề ề u u ki ki ệ ệ n n & & b b ố ố i i c c ả ả nh RBTV nh RBTV 1. Ðiềukiệncủa RBTV: đượcbiểudiễnbằng ngôn ngữ tự nhiên, ngôn ngữ giả, đạisố quan hệ, hay phụ thuộc hàm, Vd: Các điềukiệntrênđượcbiểudiễnnhư sau: C 1 : ∀ u ∈SV, ∀ v ∈ SV: u<>v Ù u.MASV <> v.MASV C 2 : SV[MAKHOA] ⊆ KHOA[MAKHOA] C 3 : ∀ sv ∈ KETQUA Card({k ∈ KETQUA | ∧ k.MASV = sv.MASV ∧ k. MAMH = sv.MAMH ∧ k.HK= sv.HK ∧ k.NK = sv.NK }) <= 2 2. Bốicảnh củamộtRBTV: 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ầnphảisử dụng để kiểmtraRBTV đó. Vd: Bốicảnh của C1 là quan hệ SV; Bốicảnh của C2 là quan hệ SV và KHOA; Bốicảnh của C3 là quan hệ KETQUA 5. 5 B B ả ả ng ng T T ầ ầ m m Ả Ả nh nh Hư Hư ở ở ng ng 3. Bảng tầm ảnh hưởng củaRBTV: Khi thựchiệnmột thao tác cập nhậttrênbốicảnh củamột RBTV C có thể dẫn đếnC bị vi phạm. Bảng tầm ảnh hưởng cho một RBTV xác định thời điểmcầnkiểm tra RBTV đó. Bảng tầm ảnh hưởng củamột RBTV C i có dạng như sau: C i Thêm SửaXóa R 1 ++ - R 2 + … R n -+- C i : có bốicảnh là R1, R 2 , , R n . Dấu+ : cầnphảikiểmtraC i . Dấu-: không cầnkiểmtraC i . Dấu * : Không được sửa giá trị khoa chính Vd: Bảng tầm ảnh hưởng của C 1 , C 2 ,C 3 như sau: C 2 Thêm SửaXóa SV + + - KHOA - - (*) + C 1 Thêm SửaXóa SV + - (*) - C 3 Thêm SửaXóa KETQUA + - (*) - 5. 6 B B ả ả ng ng T T ầ ầ m m Ả Ả nh nh Hư Hư ở ở ng ng T T ổ ổ ng ng H H ợ ợ p p Bảng tầm ảnh hưởng tổng hợpcủatấtcả các RBTV: ) Các cột là các thao tác cậpnhậttrêntừng quan hệ. ) CácdònglàcácRBTV. Vd: Từ các bảng tầm ảnh hưởng trên, ta có bảng tầm ảnh hưởng tổng hợpnhư sau: Dựavàobảng tầm ảnh hưởng tổng hợp này, chúng ta sẽ dễ dàng xác định cầnphảitiến hành kiểm tra các RBTV nào khi ngườisử dụng thựchiệnmộtthaotáccậpnhật. SV KHOA KETQUA T S X T S X T S X C 1 + - - C 2 + + - - - + C 3 + - - 5. 7 Phân Lo Phân Lo ạ ạ i c i c á á c RBTV c RBTV Các RBTV có thể được 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 ) Toàn vẹn miền giá trị ) 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. 8 Phân Phân Lo Lo ạ ạ i i c c á á c c RBTV (1) RBTV (1) Loại RBTV 1: là những RBTV có bốicảnh là một quan hệ: 1. RBTV về miềntrị: liên quan đếnmiềngiátrị củamộtthuộctính. Vd: NGSINH < date() 0 < ÐIEM < 10 0 < SOTIET <= 180 2. RBTV liên thuộctính: là mốiliênhệ giữacácthuộc tính trong cùng mộtlược đồ quan hệ. ) Vd: CSDL “QLBH” như sau: KHACH (MAKH, TENKH, ÐCHI_KH, ÐTHOAI_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ó ràng buộc: “hàng hóa chỉđượcxuất sau khi lậphóađơn” : ∀ hd ∈ HOADON, hd.NGAY_XUAT ≥ hd.NGAY_HD 5. 9 Phân Phân Lo Lo ạ ạ i i c c á á c c RBTV (2) RBTV (2) 3. RBTV liên bộ: là sự ràng buộcgiữacácbộ bên trong một quan hệ, trong đóphổ biếnlàRBTV về khóa nội. Vd:- MASV là duy nhất trong QH SV. (MASV là khóa của QH SV). -Mỗi sinh viên đượcthitối đa2 lầnchomộ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 ∃ kq ∈ KETQUA, kq.MASV =’01’ Thì phải ∃ s ∈ SV: sv.MASV =’01’ 5. 10 Phân Phân Lo Lo ạ ạ i i c c á á c c RBTV (2) 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 ∃ hd ∈ HOADON, dh ∈ DATHANG, hd.SO_DDH = dh.SO_DDH thì dh.NGAY_DH <= hd. NGAY_HD 3. RBTV liên bộ, liên quan hệ: RBTV loại này có 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: Giữa 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 ∃ hd ∈ HOADON Thì phải ∃ cthd ∈ CT_HD: cthd.SO_HD = hd.SO_HD [...]... A ⊄ B và B ⊄ A 5 13 Cài Đặt RBTV Hầu hết các HQTCSDL đều cung cấp công cụ để cài đặt RBTV trên các bảng dữ liệu Toàn vẹn thực thể: PRIMARY KEY, UNIQUE KEY Toàn vẹn tham chiếu: FOREIGN KEY Toàn vẹn miền giá trị: CHECK, RULE, DEFAULT VALUE, … Toàn vẹn về logic (hay RB khác): TRIGGER Việc cài đặt các RBTV có thể thực hiện: Trong khi tạo bảng: CREATE TABLE Sau khi tạo bảng: ALTER TABLE 5 14 CREATE TABLE... và tổng số tiền thu của khách hàng đó: ∀ kh ∈ KHACH: kh.CONGNO = Σ hd.TRIGIA - Σ pt.SOTIEN hd ∈ Hkh pt ∈ Pkh với Hkh = (HOADON * DATHANG) (MAKH = kh.MAKH) Pkh = PHIEUTHU (MAKH = kh.MAKH) 5 11 Phân Loại các 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... UPDATE ] [ON DELETE ] [, ] ] } ) Hành_động: CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION 5 15 Ví dụ Tạo Bảng có RB Trên Cột CREATE TABLE NhaXB ( MaNXB char(4) NOT NULL CONSTRAINT PK_NXB PRIMARY KEY CHECK (MaNXB IN ('1389', '0736', '0877', '1622', '1 756 ') OR MaNXB LIKE '99[0-9][0-9]'), TenNXB varchar(40) NULL, ThPho varchar(20) NULL, QGia varchar(30) NULL DEFAULT(‘VietNam')... ] | [DROP CONSTRAINT tên_RB [ RESTRICT | CASCADE] ] 5 19 Ví Dụ Thêm RB Trên Bảng ALTER TABLE NhanVien ADD CONSTRAINT FK_MaSep FOREIGN KEY (MaSep) REFERENCES NhanVien(MaNV) ALTER TABLE NhanVien ALTER COLUMN NgayVao DROP DEFAULT ALTER TABLE NhanVien DROP CONSTRAINT FK_MaSep ALTER TABLE NhanVien ADD COLUMN Mobile char( 15) UNIQUE 5 20 Kiểm Tra Ràng Buộc Bằng Trigger Lệnh Tạo Trigger của SQL Server... | X → A} Bổ đề: Cho các tập thuộc tính X,Y,Z ⊆ U Khi đó, X → YZ X→Y ∧ X→Z 5 26 Bao đóng của tập thuộc tính Các tính chất của bao đóng: 1 Tính phản xạ X+ ⊇ X 2 Tính đơn điệu X ⊆ Y => X+ ⊆ Y+ 3 Tính lũy đẳng X ++ = X+ 4 (XY)+ ⊇ X+ Y+ 5 (X + Y)+ = (XY+)+ = (XY)+ 6 X→Y Y ⊆ X+ 7 X→Y Y+ ⊆ X+ 8 X → X+ và X+ → X 9 X+ = Y+ X → Y, Y → X 5 27 Thuật Toán Tìm Bao Đóng của tập thuộc tính Input: tập thuộc tính U,... 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 5 34 Tập phụ thuộc hàm rút gọn tự nhiên Định nghĩa: Cho tập phụ thuộc hàm F = {Li → Ri | Li, Ri ∈ U , i=1 m} F ở dạng rút gọn tự nhiên nếu: Li ∩ Ri = φ , i=1 m Li ≠ Lj , ∀i ≠ j , i,j=1 m Ví dụ: Tìm tập rút gọn tự nhiên của: F = { AB → BC B→D CD → E BE → GA BE → DC } 5 35 Bài Tập 1 Tìm phủ tối tiểu của F = { AB → CD, BC → DEF, D → CEF,... [ n ] } } 5 21 Ví Dụ 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 GO Đây là bảng hệ thống dùng để lưu những dòng vừa bị xóa hoặc dòng cũ vừa bị cập nhật 5 22 Bài Tập Xây dựng bảng... duy nhất TEN_NCC, TEN_HG → GIA Hay, mỗi NCC chỉ có một địa chỉ duy nhất, TEN_NCC → DCHI_NCC 5 24 Tính Chất của Phụ thuộc hàm F1: tính phản xạ : Nếu X ⊇Y 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 thì XZ → YZ F4: tính tựa bắc cầu : Nếu X → Y, YZ → W thì XZ → W F5: tính phản xạ chặt : X → X F6: Mỏ rộng vế trái, thu hẹp vế phải: Nếu X → Y thì mọi Z, W thuộc... F8: Mở rộng vế trái : Nếu X → Y thì 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ì X → Y ( X → Z) F11: tính tích lũy: Nếu X → YZ, Z → AW thì X → YAW 5 25 Bao đóng của tập thuộc tính Định nghĩa Lược Ðồ Quan Hệ: LÐQH là một bộ đôi α = với U : là tập thuộc tính, F : là tập các PTH trên U Ðịnh nghĩa Bao Đóng: Cho một LÐQH α = , trong đó:U = {A1... CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION 5 17 Ví dụ Tạo Bảng có RB Trên Bảng CREATE TABLE Sach_TacGia ( MaTG char(11) REFERENCES TacGia(MaTG) NOT NULL, MaSach char(6) NOT NULL, ThuTuTG 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 Thiết Lập Toàn Vẹn Sau Khi Tạo Bảng ALTER TABLE . Chương Chương 5. R 5. R à à ng bu ng bu ộ ộ c to c to à à n v n v ẹ ẹ n n GV: Trần Ngân Bình tnbinh@cit.ctu.edu.vn 5. 2 N N ộ ộ i dung i dung Ràng buộctoànvẹn. PHIEUTHU (MAKH = kh.MAKH) cthd.SO_HD = hd.SO_HD hd ∈ H kh pt ∈ P kh 5. 12 Phân Phân Lo Lo ạ ạ i i c c á á c c RBTV (5) RBTV (5) 5. RBTV do có chu trình trong đồ thị biểudiễncủalược đồ CSDL: Mộtlược. khác, đólànhững quan hệ cầnphảisử dụng để kiểmtraRBTV đó. Vd: Bốicảnh của C1 là quan hệ SV; Bốicảnh của C2 là quan hệ SV và KHOA; Bốicảnh của C3 là quan hệ KETQUA 5. 5 B B ả ả ng ng T T ầ ầ m m Ả Ả nh nh Hư Hư ở ở ng ng 3.