Bài giảng Cơ sở dữ liệu - Chương 4: Ràng buộc toàn vẹn (RBTV) cung cấp cho người học các kiến thức: Các vấn đề liên quan đến RBTV, các loại RBTV, phụ thuộc hàm, khóa. Cuối bài giảng có phần bài tập để người học có thể ôn tập và củng cố kiến thức.
CƠ SỞ DỮ LIỆU ( Databases ) Chương 4: Ràng buộc toàn vẹn (RBTV) Nội dung Các vấn đề liên quan đến RBTV Các loại RBTV Phụ thuộc hàm Khóa Bài tập Chương - Ràng buộc toàn vẹn (RBTV) 4.1.1 Định nghĩa RBTV Ràng buộc tồn vẹn (RBTV) điều kiện khơng vi phạm CSDL RBTV gọi quy tắc quản lý (Rules) áp đặt lên đối tượng giới thực Trong CSDL, RBTV xem công cụ để diễn đạt ngữ nghĩa CSDL Trong trình khai thác CSDL, RBTV phải thỏa mãn nhằm đảm bảo cho CSDL trạng thái an toàn quán Chương - Ràng buộc toàn vẹn (RBTV) 4.1.1 Định nghĩa RBTV (tt) Định nghĩa: – RBTV quy tắc định nghĩa nhiều quan hệ môi trường ứng dụng quy định Đó quy tắc để đảm bảo tính quán liệu – Mỗi RBTV định nghĩa thuật toán CSDL Ví dụ: – R1: Mỗi Nhân viên có mã số để phân biệt với nhân viên khác – R2: Mỗi đề án phải Phòng/Ban chủ trì – R3: Mỗi nhân viên tham gia nhiều đề án khác – R4: Mỗi nhân viên có nhiều khơng có thân nhân Chương - Ràng buộc toàn vẹn (RBTV) 4.1.1 Định nghĩa RBTV (tt) Khóa nội, Khóa ngoại, NOT NULL RBTV miền giá trị thuộc tính quan hệ Hệ quản trị CSDL có chế tự động kiểm tra RBTV miền trị Khóa nội, Khóa ngoại, NOT NULL qua khai báo cấu trúc bảng Các RBTV kiểm tra thực thao tác cập nhật CSDL (Thêm, Sửa, Xóa) Thao tác cập nhật CSDL xem hợp lệ khơng vi phạm RBTV Nếu vi phạm RBTV, hệ thống hủy bỏ thao tác cập nhật (hoặc hệ thống có xử lý thích hợp đó) Chương - Ràng buộc toàn vẹn (RBTV) 4.1.1 Định nghĩa RBTV (tt) Như vậy: Phương pháp kiểm tra RBTV – Kiểm tra tự động (qua khai báo cấu trúc bảng) – Thông qua thủ tục kiểm tra xử lý vi phạm RBTV (do người phân tích thiết kế cài đặt) Thời điểm kiểm tra RBTV – Ngay sau thực thao tác cập nhật CSDL – Kiểm tra định kỳ đột xuất Chương - Ràng buộc toàn vẹn (RBTV) 4.1.2 Điều kiện RBTV Là mô tả biểu diễn hình thức nội dung Có thể biểu diễn bằng: – Ngôn ngữ tự nhiên – Thuật giải (bằng mã giả - Pseudo Code, ngôn ngữ tựa Pascal) – Ngôn ngữ đại số tập hợp, đại số quan hệ – Các phụ thuộc hàm Chương - Ràng buộc toàn vẹn (RBTV) 4.1.2 Điều kiện RBTV (tt) Ví dụ: Cho CSDL quản lý hóa đơn bán hàng gồm bảng: HOADON(SoHD, SoMatHang, Tongtien) DMHANG(MaH, TenH, DvTinh) CHITIETHD(SoHD, MaH, SL, Dongia, Thanhtien) R1: Mỗi hóa đơn có số hóa đơn riêng biệt, khơng trùng với hóa đơn khác R2: Số mặt hàng số của chi tiết hóa đơn có số hóa đơn R3:Tổng thành tiền mặt hàng CHITIETHD có số hóa đơn phảibằng Tổng tiền ghi HOADON R4: Mỗi chi tiết hóa đơn phải có Mã Hàng thuộc Danh mục hàng Chương - Ràng buộc toàn vẹn (RBTV) 4.1.2 Điều kiện RBTV (tt) Ví dụ - Biểu diễn đại số tập hợp R1: ∀ hđ1, hđ2 ∈ HOADON, hđ1 ≠ hđ2 ⇒ hđ1.SoHD ≠ hđ2.SoHD R2: ∀ hđ ∈ HOADON thì: ⇒ hđ.SoMatHang = COUNT(cthđ ∈ CHITIETHD, cthđ.SoHD = hđ.SoHD) R3: ∀ hđ ∈ HOADON thì: hđ.Tongtien = SUM(cthđ.Thanhtien) cthđ ∈ CHITIETHD cho: cthđ.SoHD= hđ.SoHD Chương - Ràng buộc toàn vẹn (RBTV) 4.1.2 Điều kiện RBTV (tt) Ví dụ - Biểu diễn đại số tập hợp (tt) R4: CHITIETHD[MaH] DMHANG[MaH] biểu diễn cách khác cthđ CHITIETHD, hh DMHANG cho: cthđ.MaH=hh.MaH Chương - Ràng buộc tồn vẹn (RBTV) 10 4.4 Khóa (tt) Tập thuộc tính S gọi siêu khóa S K Thuộc tính A gọi thuộc tính khóa AK với K khóa Q Ngược lại A gọi thuộc tính khơng khóa Một lược đồ quan hệ có nhiều khóa tập thuộc tính khơng khóa rỗng Chương - Ràng buộc tồn vẹn (RBTV) 56 4.4.2 Thuật tốn tìm khóa Bước 1: – gán K = Q+ Bước 2: – A thuộc tính K, đặt K’ = K - A Nếu K’+= Q+ gán K = K' thực lại bước • Nếu muốn tìm khóa khác (nếu có) lược đồ quan hệ, ta thay đổi thứ tự loại bỏ phần tử K Chương - Ràng buộc tồn vẹn (RBTV) 57 4.4.2 Thuật tốn tìm khóa (tt) Ví dụ 1: cho lược đồ quan hệ Q tập phụ thuộc hàm F sau: – Q (A,B,C,D,E) – F={ABC, AC B, BC DE} – Tìm khóa K Giải: B1: K=Q+ K=ABCDE B2:(K\A)+ (BCDE)+=BCDE ≠ Q+ K=ABCDE B3:(K\B)+ (ACDE)+= ABCDE = Q+ K=ACDE B4: (K\C)+ (ADE)+ = ADE ≠ Q+ K=ACDE B5: (K\D)+ (ACE)+ = ACEBD=Q+ K=ACE B6: (K\E)+ (AC)+ = ACBDE =Q+ K=AC Chương - Ràng buộc tồn vẹn (RBTV) 58 4.4.2 Thuật tốn tìm khóa (tt) Ví dụ 2: cho lược đồ quan hệ Q(ABCDEGHI) tập phụ thuộc hàm – F={ AC B; BI AC; ABC D; H I; ACE BCG; CG AE} – Tìm Khóa K Chương - Ràng buộc toàn vẹn (RBTV) 59 4.4.2 Thuật tốn tìm khóa (tt) Thuật tốn 2: Biểu diễn lược đồ quan hệ đồ thị có hướng sau: – Mỗi đỉnh đồ thị thuộc tính lược đồ quan hệ – Mỗi phụ thuộc hàm AB biểu diễn cung có hướng từ đỉnh A đến đỉnh B • Đỉnh (thuộc tính) có mũi tên gọi nút gốc • Đỉnh (thuộc tính) có mũi tên vào gọi nút – Khóa lược đồ quan hệ phai bao phủ tập nút gốc đồng thời không chứa nút – Thuật tốn: • Bước 1: Xuất phát từ tập nút gốc (X) • Bước 2: Tính bao đóng tập thuộc tính X (X+) • Bước 3: Nếu X+ = U thi X khóa Ngược lại, bổ sung thuộc tính khơng thuộc nút vào X lặp lại Bước Chương - Ràng buộc tồn vẹn (RBTV) 60 4.4.2 Thuật tốn tìm khóa (tt) Ví dụ: – Cho R(U) với U = {A,B,C,D,E,H} với tập phụ thuộc hàm F = {ABC, CDE, ECA, CDH, HB} – Hãy tìm khóa R H f5 B f4 C f1 A f2 D f3 E Nút gốc Chương - Ràng buộc toàn vẹn (RBTV) 61 4.4.2 Thuật tốn tìm khóa (tt) Tính D+ = Do CD có mặt vế trái phụ thuộc hàm (CDH, CDE) nên ta ghép C vào tập nút gốc tính bao đóng H f5 CD+ = CDEHBA Vậy CD khóa R B f4 C f1 A f2 D f3 E Chương - Ràng buộc toàn vẹn (RBTV) 62 4.4.3 Thuật tốn tìm khóa Bước 1: – Xác định tất tập khác rỗng Q+={X1, X2, …,X2n-1 } Bước 2: – Tìm bao đóng Xi Bước 3: – Siêu khóa Xi có Xi+= Q+ – Giả sử ta có siêu khóa S = {S1,S2,…,Sm} Bước 4: – xét Si, Sj S (i ≠ j), Si Sj loại Sj (i,j=1 n), kết cịn lại S tập tất khóa cần tìm Chương - Ràng buộc tồn vẹn (RBTV) 63 4.4.3 Thuật tốn tìm khóa (tt) Ví dụ: – Tìm tất khóa lược đồ quan hệ tập phụ thuộc hàm sau: Chương - Ràng buộc toàn vẹn (RBTV) 64 4.4.3 Thuật tốn tìm khóa (tt) Thuật tốn cải tiến – Bước1: tạo tập thuộc tính nguồn TN, tập thuộc tính trung gian TG – Bước2: • Nếu TG = lược đồ quan hệ có khóa K = TN kết thúc • Ngược lại Qua bước – Bước3: tìm tất tập Xi tập trung gian TG Chương - Ràng buộc tồn vẹn (RBTV) 65 4.4.3 Thuật tốn tìm khóa (tt) – Bước 4: tìm siêu khóa Si cách Xi • if (TN Xi)+ = Q+ then • Si = TN Xi – Bước 5: Loại bỏ siêu khóa khơng tối thiểu • Si, Sj S • if Si Sj then – Loại Sj khỏi Tập siêu khóa S • S cịn lại tập khóa cần tìm Chương - Ràng buộc toàn vẹn (RBTV) 66 4.4.3 Thuật tốn tìm khóa (tt) Ví dụ 1: – Cho lược đồ quan hệ Q(CSZ) tập phụ thuộc hàm F={CS Z; Z C} Áp dụng thuật toán cải tiến, tìm khóa Q Giải: – TN = {S}; TG = {C,Z} – Gọi Xi tập tập TG: Chương - Ràng buộc tồn vẹn (RBTV) 67 4.4.3 Thuật tốn tìm khóa (tt) Ví dụ 2: – Cho quan hệ R (U), U = {A,B,C,D,G} phụ thuộc hàm F = {BC, CB, AGD} tìm tất khóa R Chương - Ràng buộc tồn vẹn (RBTV) 68 Chương - Ràng buộc toàn vẹn (RBTV) 69 Tổng kết chương Hệ luật dẫn Amstrong hệ Thuật tốn tìm bao đóng tập thuộc tính Thuật tốn tìm phủ tối thiểu tập phụ thuộc hàm Thuật tốn tìm khóa quan hệ Thuật tốn tìm tất khóa quan hệ Cho phụ thuộc hàm XY tập Phụ thuộc hàm F, làm cách xác định XY F+ hay không ? Cho tập phụ thuộc F G, làm xác định F G tương đương? Chương - Ràng buộc toàn vẹn (RBTV) 70 ... hệ Chương - Ràng buộc toàn vẹn (RBTV) 14 4.1.4 Tầm ảnh hưởng RBTV (tt) Ví dụ (tt) – Bảng tầm ảnh hưởng R4 Quan hệ Thêm Sửa Xóa CHITIETHD + (MaH) - (*) - - - (*) + DMHANG Chương - Ràng buộc toàn. .. (SoMatHang) R3 + + (Tongtien) R4 DMHANG Thêm Sửa Xóa - + - + - + + (Thanhtien) + + (MaH) - (*) - Chương - Ràng buộc tồn vẹn (RBTV) Thêm - Sửa Xóa - (*) + 16 4.1.5 Hành động RBTV bị vi phạm Khi... đề liên quan đến RBTV Các loại RBTV Phụ thuộc hàm Khóa Bài tập Chương - Ràng buộc tồn vẹn (RBTV) 4.1.1 Định nghĩa RBTV Ràng buộc toàn vẹn (RBTV) điều kiện không vi phạm CSDL RBTV gọi quy tắc