Upload
khacthuong2008
View
449
Download
2
Embed Size (px)
Citation preview
www.elarion.com
CƠ SỞ DỮ LiỆU
LARION_TDT@internship_03
Never stop improving quality
Phần 4: Ràng buộc toàn vẹn
Khái niệm về RBTV
• Khái niệm:
Ràng buộc toàn vẹn (RBTV) là một qui tắc định nghĩa trên một hay nhiều quan hệ do môi trường ứng dụng qui định.
RBTV là qui tắc để đảm bảo tính nhất quán của dữ liệu trong CSDL.
Mỗi RBTV được định nghĩa bằng một thuật toán bên trong CSDL.
VD: Mỗi lớp học có 1 mã số duy nhất để phân biệt với các lớp học khác.
LOPHOC
MALOP TENLOP
08TH1D Tin học khóa 2008
08TA1D Trung Anh khóa 2008
08TA1D Trung Anh khóa 2009
Không được trùng MALOP
Kiểm tra RBTV
• Phương pháp kiểm tra RBTV:
Hệ quản trị CSDL có các cơ chế tự động kiểm tra các RBTV về miền giá trị của Khóa nội,khóa ngoại, NOT NULL qua khai báo cấu trúc bảng.
Thông qua những thủ tục kiểm tra và xử lý vi phạm RBTV do những người phân tích và thiết kế cài đặt.
• Thời điểm kiểm tra RBTV:
Ngay khi thực hiện 1 thao tác cập nhật CSDL (thêm, sửa, xóa).
Thao tác cập nhật được xem là hợp lệ nếu không vi phạm ràng buộc nào.
Đối với những trường hợp vi phạm hệ thống sẽ có hướng xử lý thích hợp.
Các yếu tố của RBTV
• Các yếu tố của RBTV:
Điều kiện: tức là nội dung của RBTV từ đó xác định cách biểu diễn.
Bối cảnh: RBTV xảy ra trên một hay nhiều quan hệ, cụ thể là các quan hệ nào.
Tầm ảnh hưởng: khả năng tính toàn vẹn dữ liệu bị vi phạm.
Hành động: cần phải có khi phát hiện có RBTV bị vi phạm.
Điều kiện của RBTV (1/4)
• Điểu kiện của RBTV:
Là sự mô tả và biểu diễn hình thức nội dung của nó.
Có thể được biểu diễn bằng:
Ngôn ngữ tự nhiên Thuật giải Ngôn ngữ đại số tập hợp, đại số quan hệ. Các phụ thuộc hàm
VD: Cho 1 CSDl quản lý hóa đơn bán hàng gồm các bảng:
HOADON
SOHOADON SOMATHANG TONGTRIGIA
DANHMUCHANG
MAHANG TENHANG DONVI
CHITIETHOADON
SOHOADON MAHANG SOLUONGDAT DONGIA TRIGIA
Điều kiện của RBTV (2/4)
Ràng buộc R1: “Mỗi hóa đơn có một số hóa đơn riêng biệt không trùng với hóa đơn khác”:
Biễu diễn: ∀ hđ1, hđ2 HOADON, hđ1 ≠ hđ2∈ ⇒ hđ1.SOHOADON ≠ hđ2.SOHOADON.
Ràng buộc R2:”SOMATHANG = số bộ củaCHITIETHOADON có cùng SOHOADON
Biểu diễn: hđ H”AĐƠN thì: ∀ ∈ hđ.SOMATHANG= COUNT (cthđ ∈ CHITIETHOADON,
cthđ.SOHOADON = hđ.SOHOADON)
HOADON
SOHOADON SOMATHANG TONGTRIGIA
CHITIETHOADON
SOHOADON MAHANG SOLUONGDAT DONGIA TRIGIA
Điều kiện của RBTV (3/4)
Ràng buộc R3 : “Tổng các trị giá của các mặt hàng trong CHITIETHOAĐON có cùng SOHOADON phải bằng TONGTRIGIA ghi trong HOADON”:
Biểu diễn: hđ H∀ ∈ OAĐON thì: hđ.TONGTRIGIA= SUM
(CHITIETHOADON.TRIGIA) đối với các cthđ ∈CHITIETHOADON sao cho: cthđ.SOHOADON=hđ.SOHOADON
HOADON
SOHOADON SOMATHANG
TONGTRIGIA
A001 3 1.400.000
A002 1 600.000
CHITIETHOADON
SOHOADON MAHANG SOLUONGDAT DONGIA TRIGIA
A001 KTS035 2 500.000 1.000.000
A001 MG047 1 400.000 400.000
A002 LCD022 1 600.000 600.000
Điều kiện của RBTV (4/4)
Ràng buộc R4: “Mỗi bộ của CHITIETHOADON phải có MAHANG thuộc về DANHMUCHANG”:
Biểu diễn: CHITIETHOADON [MAHANG] ⊆ DMHANG [MAHANG]
∀ cthđ ∈ CHITIETHOADON, hh ∃ ∈ DANHMUCHANG, sao cho cthđ.MAHANG=hh.MAHANG
DANHMUCHANG
MAHANG TENHANG DONVI
KTS035 Máy ảnh KTS Canon cái
LCD022 Tivi LCD SamSung cái
CHITIETHOADON
SOHOADON MAHANG SOLUONGDAT DONGIA TRIGIA
A001 KTS035 2 500.000 1.000.000
A002 LCD022 1 600.000 600.000
Bối cảnh của RBTV
• Bối cảnh của RBTV:
Trong ví dụ trên bối cảnh của các ràng Trong ví dụ trên, bối cảnh của các ràng buộc toàn vẹn như sau:
R1 :chỉ là một quanhệ HOADON. R2 : 2 quan hệ HOADON và CHITIETHOADON. R3 : 2 quan hệ HOADON và CHITIETHOADON. R4 : 2 quan hệ CHITIETHOADON và DANHMUCHANG.
Tầm ảnh hưởng của RBTV
• Tầm ảnh hưởng của RBTV:
Một RBTV có thể liên quan đến một số quan hệ, và chỉ khi có thao tác cập nhật (Thêm, Sửa, Xóa) mới có nguy cơ dẫn đến vi phạm RBTV.
Cần xác định rõ thao tác nào dẫn đến việc cần xác định rõ thao tác nào dẫn đến việc cần phải kiểm tra RBTV.
Trong quá trình phân tích thiết kế một CSDL, người phân tích cần lập bảng xác định tầm ảnh hưởng cho mỗi ràng buộc toàn vẹn nhằm xác định khi nào thì phải tiến kiểm tra các ràng buộc toàn vẹn đó.
Bảng tầm ảnh hưởng (1/3)
• Bảng tầm ảnh hưởng:
Bảng tầm ảnh hưởng gồm 4 cột :cột 1 chứa tên các bảng liên quan tới RBTV; 3 cột tiếp theo là thao tácThêm/ Sửa / Xóa1 bộ giá trị.
Nếu RBTV có nguy cơ bị vi phạm thì tại ô đó người ta đánh dấu bằng dấu cộng (+).
Có thể chỉ rõ thêm các thuộc tính nào nếu được cập nhật mới dẫn đến vi phạm RBTV bằng cách liệt kê chúng dưới dấu (+).
Nếu RBTV không có nguy cơ bị vi phạm kh icập nhật CSDL thì đánh dấu trừ (-).
Nếu không bị vi phạm vì không được phép sửa đổi thì ký hiệu là trừ với dấu sao ( -(*) ).
VD: <Xem trang sau>
Bảng tầm ảnh hưởng (2/3)
Bảng tầm ảnh hưởng của R1,R2,R3,R4:R1
Quan hệ Thêm Sửa Xóa
HOADON + (SOHOADON) - (*) -
R2
Quan hệ Thêm Sửa Xóa
HOADON + +(SOMATHANG) -
CHITIETHOADON + - +
R3
Quan hệ Thêm Sửa Xóa
HOADON + +(TONGTRIGIA) -
CHITIETHOADON + +(TRIGIA) +
R4
Quan hệ Thêm Sửa Xóa
CHITIETHOADON + (MAHANG) - (*) -
DANHMUCHANG - - (*) +
Bảng tầm ảnh hưởng (3/3)
Bảng tầm ảnh hưởng tổng hợp.
QH HOADON CHITIETHOADON DANHMUCHANG
RB Thêm Sửa Xóa Thêm Sửa Xóa Thêm Sửa Xóa
R1 + - (*) -
R2 + + - + - +
R3 + + - + + +
R4 + - (*) - - - (*) +
Hành động khi vi phạm RBTV
• Hành động khi RBTV bị vi phạm
Hành động (phản ứng) gồm 2 phần:
Thông báo: thông báo cho người dùng biết dữ liệu vi phạm RBTV nào và cần sửa lại như thế nào.
Xử lý: Đưa ra phương án xử lý khi RBTV bị vi phạm, có thể từ chối thao tác hoặc tiếp tục cho hiệu chỉnh dữ liệu.
Thông thường có 2 giải pháp:
Đưa ra thông báo và yêu cầu sửa chữa dữ liệu cho phù hợp với RBTV. Thông báo phải đầy đủ và tạo được sự thân thiện với người sử dụng.Giải pháp này là phù hợp cho việc xử lý thời gian thực.
Từ chối thao tác cập nhật.Giải pháp này là phù hợp đối với việc xử lý theo lô (Batch processing).
Phân loại ràng buộc toàn vẹn
• RBTV có bối cảnh là 1 bảng:
RBTV về miền giá trị RBTV về miền giá trị.
RBTV liên thuộc tính.
RBTV liên bộ.
• RBTV có bối cảnh là nhiều bảng:
RBTV về phụ thuộc tồn tại.
RBTV liên thuộc tính – liên quan hệ.
RBTV liên bộ – liên quan hệ.
RBTV do có chu trình.
RBTV về miền giá trị
• RBTV về miền giá trị
Trong hầu hết các CSDL quan hệ loại RBTV này là rất phổ biến.
Mỗi thuộc tính được đặc trưng không chỉ bởi kiểu giá trị,mà còn bị giới hạn bởi miền giá trị trong kiểu dữ liệu đó.
Do đó,khi thực hiện các thao tác cập nhật (thêm, xóa, sửa) cho quan hệ đều phải kiểm tra RBTV này.
VD:Trong quan hệ KetQUA-THI(MASV, MAMH, LANTHI, DIEM), do quy định mỗi sinh viên chỉ được thi 1 môn tối đa 3 lần, và điểm thi của môn học trong mọi lần thi không bị âm và không vượt quá 10.
Có 2 RBTV về miền giá trị trong quan hệ:R1: kq KQUẢ-THI thì0 ≤ kq.Lầnthi ≤ 3 ∀ ∈R2: kq KQUẢ-THI thì0 ≤ kq.Điểm ≤ 10 ∀ ∈
RBTV liên thuộc tính
• RBTV liên thuộc tính
Đó là loại RBTV có liên quan tới nhiều thuộc tính của một quan hệ.
Thông thường đó là các phụ thuộc tính toán, hoặc một suy diễn từ giá trị của một hay nhiều thuộc tính trong cùng một bộ giá trị.
VD: Quan hệ NHANVIEN (MANV, HOTEN, PHAI, NGAYSINH, NGAY-TD, HESOLUONG) Với quy định18 tuổi trở lên mới được tuyển. Ta có RBTV liên thuộc tính sau:
∀ nv∈NHANVIEN/Year(nv.NGAY-TD)–Year(nv.NGAYSINH) ≥18
NHANVIEN
MANV HOTEN PHAI NGAYSINH NGAY-TD HESOLUONG
KT025 Trần Tiến 1 02/12/1978 11/05/2008 3.0
HM011 Trần Thu Hà 0 16/04/1989 12/10/2010 1.8
RBTV liên bộ
• RBTV liên bộ
Liên quan tới nhiều bộ và có thể tới nhiều thuộc tính của (các) bộ giá trị trong một quan hệ.
Ví dụ: Qui định điểm thi phải >=0 và <= 10 và điểm thi lần sau >= lần trước:
∀ kq K∈ ETQUATHI
Nếu kq.LANTHI = 1 thì 0 ≤ kq.ĐIEM ≤ 10 hoặc:
Nếu kq.LANTHI> 1 thì kq’ K∃ ∈ ETQUATHI
Sao cho kq’.LANTHI=kq.LANTHI và kq.DIEM ≥ kq’.DIEM
KETQUATHI
MSSV LANTHI DIEM LANTHI DIEM
080095T 1 9
080173T 1 5 2 10
090051T 1 4 2 3
Status
OK
OK
NOT OK
RBTV về phụ thuộc tồn tại
• RBTV về phụ thuộc tồn tại:
RBTV về phụ thuộc tồn tại còn được gọi là phụ thuộcvề khóa ngoại. Đây là loại RBTV phổ biến trong các CSDL.
Bộ giá trị của quan hệ này được thêm vào một cách hợp lệ nếu tồn tại một bản ghi tương ứng của 1 quan hệ khác.
Phụ thuộc tồn tại xảy ra nếu có một trong hai trường hợp sau:
Có sự hiệndiệncủa khóa ngoại.
Có sự lồng khóa giữa các quan hệ. VD: mỗi lớp phải thuộc một khoa
LOP
MALOP TENLOP
08TH1D Tin học khóa 2008
08TA1D Anh văn khóa 2008
DANHSACHLOP-KHOA
MALOP TENKHOA
08TH1D Công nghệ thông tin
08TA1D Ngoại ngữ
RBTV liên thuộc tính – liên quan hệ
• RBTV liên thuộc tính – liên quan hệ:
Một thuộc tính trong 1 quan hệ này có mối liên hệ với 1thuộc tính trong 1 quan hệ khác.
Ví dụ: Ngày giao hàng phải sau ngày đặt
HOADON.NGAYGIAO >= DATHANG.NGAYDATDATHANG
MADON-DH MAHANG SOLUONG NGAYDAT NGUOIDAT
DH033 TV017 1 20/09/2010 Nguyễn Văn Minh
DH034 MG005 1 20/09/2010 Nguyễn Văn Minh
DH035 DT012 1 21/09/2010 Trịnh Bảo Chi
HOADON
MAHOADON MADON-DH NGAYGIAO MAHANG SOLUONG THANHTIEN
HD053 DH033 26/09/2010 TV017 1 3.950.000
HD053 DH034 26/09/2010 MG005 1 3.500.000
HD054 DH035 27/09/2010 DT012 1 1.100.00
RBTV liên bộ - liên quan hệ
• RBTV liên bộ – liên quan hệ:
Một thuộc tính của quan hệ này có mối liên hệ với các bộ của 1 quan hệ khác.
Ví dụ: Mỗi phiếu mượn chỉ được mượn tối đa 3 quyển sách.
PHIEUMUON
MAPM SOLUONG NGAYMUON TENNGUOIMUON
PM032 3 22/06/2010 Lê Văn Linh
PM033 1 22/06/2010 Lý Minh Hà
CHITIET-PHIEUMUON
MAPM TENSACH NXB
PM032 Giáo trình Mỹ học Giáo dục
PM032 Không gia đình Văn học
PM032 Cánh đồng bất tận Hôi nhà văn
PM033 Cơ sở tin học Giáo dục
RBTV do có chu trình (1/5)
• RBTV do có chu trình:
Biểu diễn cấu trúc CSDL dưới dạng đồ thị như sau: Mỗi nút �của đồ thị biểu diễn1 quan hệ hoặc1 thuộc tính.
Quan hệ được biểu diễn bằng nút tròn trắng.
Thuộc tính được biểu diễn bởi một nút tròn đen nhỏ hơn.
Các nút đượcchỉ rõ bằng tên của quan hệ hoặc thuộc tính. Thuộc tính thuộc một quan hệ được biểu diễn bởi một cung nối giữa nút tròn trắng và nút tròn đen đó.
Nếu trên đồ thị ta thấy xuất hiện 1 đường Nếu trên đồ thị, ta thấy xuất hiện 1 đường khép kín thì ta nói rằng trong lược đồ CSDL có sự hiện diện của chu trình.
Sự hiện diện này làm nảy sinh một vấn đề mới: Xác định khả năng đảm bảo tính nhất quán của dữ liệu, đó là một RBTV, do sự hiện diện của chu trình.
RBTV do có chu trình (2/5)
• Ví dụ:
Q1 (Mã-nhân-viên, Mã-phòng)
Q2 (Mã-phòng, Mã-đề-án)
Q3 (Mã-đề-án, Tên-đề-án)
Q4 (Mã-đề-án, Mã-nhân-viên)
RBTV do có chu trình (3/5)
• Giả thiết 1: Với tân từ sau:
Mỗi nhân viên được phân công vào tất cả các đề án do phòng đó phụ trách.
2 con đường mang ý nghĩagiống nhau. Đường dài hơn Q1 kết nối với Q2 (ký hiệu là Q1 I><I Q2) ? con đường ngắn hơn Q4 khi cùng xác định 1 đề án mà 1 nhân viên tham gia vào. Đây là một chu trình giả.
Nếu vẫn muốn giữ lại quan hệ Q4, tức là không hủy bỏ chu trình, thì phải có một RBTV với thuật toán sau:
Q1 I><I Q2 [Mã-nhân-viên, Mã-đề-án] = Q4 [Mã-nhân-viên, Mã-đề-án]
RBTV do có chu trình (4/5)
• Giả thiết 2: Với tân từ sau:
Mỗi nhân viên được phân công vào một số đề án do phòng đó phụ trách.
Con đường ngắn Q4 phụ thuộc vào con đường dài Q1 I><I Q2, vì 1 nhân viên có thể không tham gia vào tất cả các đề án do phòng mình phụ trách. Chu trình trên mang ý nghĩa thực sự.
RBTV được thể hiện bởi thuật toán sau:
Q4 [Mã-nhân-viên.Mã-đề-án] ? Q1 I><I Q2 [Mã-nhân-viên. Mã-đề-án]
RBTV do có chu trình (5/5)
• Giả thiết 3: Với tân từ sau:
Mỗi nhân viên được phân công vào những đề án bất kỳ.
2 con đường hoàn toàn độclập nhau, không liên quan gì tới nhau, mang ý nghĩa hoàn toàn khác nhau.
Do đó không có RBTV.
Tài liệu tham khảo
• Giáo trình CSDL, ThS Lê Thị Ngọc Thảo - ĐH Tôn Đức Thắng.