Tải bản đầy đủ (.pdf) (70 trang)

Bài giảng Cơ sở dữ liệu (Databases) - Chương 4: Ràng buộc toàn vẹn (RBTV)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (983.66 KB, 70 trang )

CƠ SỞ DỮ LIỆU
( Databases )

Chương 4: Ràng buộc toàn vẹn (RBTV)


Nội dung
1.
2.
3.
4.
5.

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 4 - Ràng buộc toàn vẹn (RBTV)

2


4.1.1. Định nghĩa RBTV
 Ràng buộc toàn vẹn (RBTV) là điều kiện không được
vi phạm trong CSDL. RBTV còn được gọi là các quy
tắc quản lý (Rules) được áp đặt lên các đối tượng

của thế giới thực.
 Trong 1 CSDL, các RBTV được xem như 1 công cụ


để diễn đạt ngữ nghĩa của CSDL đó.
 Trong quá trình khai thác CSDL, các RBTV phải được
thỏa mãn nhằm đảm bảo cho CSDL luôn ở trạng thái
an toàn và nhất quán.
Chương 4 - Ràng buộc toàn vẹn (RBTV)

3


4.1.1. Định nghĩa RBTV (tt)
 Định nghĩa:
– RBTV là một quy tắc định nghĩa trên một hoặc nhiều quan
hệ do môi trường ứng dụng quy định  Đó chính là quy tắc
để đảm bảo tính nhất quán của dữ liệu
– Mỗi RBTV được định nghĩa bằng 1 thuật toán trong CSDL.

 Ví dụ:
– R1: Mỗi Nhân viên có 1 mã số duy nhất để phân biệt với
nhân viên khác
– R2: Mỗi đề án phải do 1 Phòng/Ban nào đó chủ trì
– R3: Mỗi nhân viên có thể tham gia nhiều đề án khác nhau
– R4: Mỗi nhân viên có nhiều hoặc không có thân nhân nào

Chương 4 - Ràng buộc toàn vẹn (RBTV)

4


4.1.1. Định nghĩa RBTV (tt)
 Khóa nội, Khóa ngoại, NOT NULL là những RBTV về

miền giá trị của thuộc tính trong quan hệ

 Hệ quản trị CSDL có cơ chế tự động kiểm tra các
RBTV về miền trị của Khóa nội, Khóa ngoại, NOT
NULL qua khai báo cấu trúc của bảng.
 Các RBTV được kiểm tra 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 CSDL chỉ được xem là hợp lệ nếu
nó không vi phạm RBTV nào.

 Nếu vi phạm RBTV, hệ thống sẽ hủy bỏ thao tác cập
nhật (hoặc hệ thống sẽ có 1 xử lý thích hợp nào đó)
Chương 4 - Ràng buộc toàn vẹn (RBTV)

5


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ủa 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 người phân tích thiết kế cài đặt)

 Thời điểm kiểm tra RBTV
– Ngay sau khi thực hiện thao tác cập nhật CSDL
– Kiểm tra định kỳ hoặc đột xuất

Chương 4 - Ràng buộc toàn vẹn (RBTV)


6


4.1.2. Đ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 (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 4 - Ràng buộc toàn vẹn (RBTV)

7


4.1.2. Điều kiện của RBTV (tt)
 Ví dụ: Cho CSDL quản lý hóa đơn bán hàng gồm các bảng:

HOADON(SoHD, SoMatHang, Tongtien)
DMHANG(MaH, TenH, DvTinh)
CHITIETHD(SoHD, MaH, SL, Dongia, Thanhtien)
 R1: Mỗi hóa đơn có 1 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 bằng số bộ của của chi tiết hóa đơn có cùng
số hóa đơn

 R3:Tổng các thành tiền của các mặt hàng trong CHITIETHD có
cùng số hóa đơn phảibằng Tổng tiền ghi trong HOADON
 R4: Mỗi bộ của chi tiết hóa đơn phải có Mã Hàng thuộc về
Danh mục hàng.
Chương 4 - Ràng buộc toàn vẹn (RBTV)

8


4.1.2. Điều kiện của RBTV (tt)
 Ví dụ - Biểu diễn bằng đạ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) đối với các
cthđ ∈ CHITIETHD sao cho:
cthđ.SoHD= hđ.SoHD.
Chương 4 - Ràng buộc toàn vẹn (RBTV)

9


4.1.2. Điều kiện của RBTV (tt)
 Ví dụ - Biểu diễn bằng đại số tập hợp (tt)

R4: CHITIETHD[MaH] DMHANG[MaH]
hoặc biểu diễn bằng cách khác

 cthđ  CHITIETHD,  hh  DMHANG
sao cho: cthđ.MaH=hh.MaH.

Chương 4 - Ràng buộc toàn vẹn (RBTV)

10


4.1.3. Bối cảnh của RBTV
 Bối cảnh có thể định nghĩa trên một quan hệ cơ sở
hay nhiều quan hệ cơ sở.
 Đó là những quan hệ mà RBTV áp dụng trên đó
 Ví dụ:
– R1: có bối cảnh là 1 quan hệ HOADON

– R2, R3: có bối cảnh là 2 quan hệ HOADON và
CHITIEHD
– R4: có bối cảnh là 2 quan hệ CHITIETHD và DMHANG

Chương 4 - Ràng buộc toàn vẹn (RBTV)

11


4.1.4. Tầm ảnh hưởng của RBTV
 Một RBTV có thể liên quan đến một số quan hệ, chi
khi có thao tác cập nhật (Thêm, Sửa, Xóa) mới xuất
hiện nguy cơ vi phạm RBTV  Cần phải xác định rõ
khi nào dẫn đến việc kiểm tra RBTV
 Trong quá trình phân tích, thiết kế một CSDL, người


phân tích phải lập bảng xác định tầm ảnh hưởng cho
mỗi RBTV  nhằm xác định khi nào phải tiến hành
kiểm tra các RBTV đó
Chương 4 - Ràng buộc toàn vẹn (RBTV)

12


4.1.4. Tầm ảnh hưởng của RBTV (tt)
 Bảng xác định tầm ảnh hưởng
– Gồm 4 cột:
• Cột 1: Tên các bảng (quan hệ) có liên quan đến RBTV
• Cột 2, 3, 4: Ứng với các thao tác Thêm/Sửa/Xóa 1 bộ

– Đánh dấu (+) tại ô mà RBTV có nguy cơ bị vi phạm. Có
thể ghi thêm các thuộc tính nào nếu được cập nhật mới
sẽ dẫn đến vi phạm RBTV bằng cách liệt kê chúng
dưới dấu (+)

– Đánh dấu (-) tại ô không có nguy cơ bị vi phạm.
– Đánh dấu (- (*) ) nếu không bị vi phạm vì không được
phép sửa đổi.
Chương 4 - Ràng buộc toàn vẹn (RBTV)

13


4.1.4. Tầm ảnh hưởng của RBTV (tt)
 Ví dụ

– Bảng tầm ảnh hưởng của R1
Quan hệ

HOADON

Thêm

Sửa

Xóa

+ (SoHD)

- (*)

-

– Bảng tầm ảnh hưởng của R2
Quan hệ

Thêm

Sửa

Xóa

HOADON

+


+ (SoMatHang)

-

CHITIETHD

+

-

+

Thêm

Sửa

Xóa

HOADON

+

+ (Tongtien)

-

CHITIETHD

+


+ (Thanhtien)

+

– Bảng tầm ảnh hưởng của R3
Quan hệ

Chương 4 - Ràng buộc toàn vẹn (RBTV)

14


4.1.4. Tầm ảnh hưởng của RBTV (tt)
 Ví dụ (tt)
– Bảng tầm ảnh hưởng của R4
Quan hệ

Thêm

Sửa

Xóa

CHITIETHD

+ (MaH)

- (*)

-


-

- (*)

+

DMHANG

Chương 4 - Ràng buộc toàn vẹn (RBTV)

15


4.1.4. Tầm ảnh hưởng của RBTV (tt)
 Bảng tầm ảnh hưởng tổng hợp của R1, R2, R3, R4
Q.Hệ

HOADON

CHITIETHD

RBTV

Thêm

Sửa

Xóa


R1

+
(SoHD)

- (*)

-

R2

+

+
(SoMatHang)

R3

+

+
(Tongtien)

R4

DMHANG

Thêm

Sửa


Xóa

-

+

-

+

-

+

+
(Thanhtien)

+

+
(MaH)

- (*)

-

Chương 4 - Ràng buộc toàn vẹn (RBTV)

Thêm


-

Sửa Xóa

- (*)

+

16


4.1.5. Hành động khi RBTV bị vi phạm
 Khi RBTV bị vi phạm, cần có hành động thích hợp
(gồm 2 phần):
– Thông báo: báo cho người dùng biết dữ liệu bị 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 hoặc tiếp tục cho hiệu chỉnh dữ liệu

 Thông thường có 2 giải pháp:
– (1) Đư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. TB này phải đầy đủ và dễ hiểu với
người dùng  giải pháp này phù hợp cho việc xử lý
thời gian thực
– (2) Từ chối thao tác cập nhật  giải pháp này phù hợp
với việc xử lý theo lô
Chương 4 - Ràng buộc toàn vẹn (RBTV)

17



4.2. Các loại RBTV
 RBTV có bối cảnh là 1 bảng
– RBTV về miền trị của thuộc tính
– 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 về liên thuộc tính – liên quan hệ
RBTV về liên bộ - liên quan hệ
RBTV có tính chu trình

Chương 4 - Ràng buộc toàn vẹn (RBTV)

18


4.2.1. RBTV về miền trị
 Rất phổ biến trong các CSDL quan hệ.
 Mỗi thuộc tính không chỉ đặc trưng 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 đó
 Khi cập nhật (thêm/sửa/xóa) giá trị cho 1 bộ trong
quan hệ, phải kiểm tra RBTV này

 Ví dụ: DIEMTHI(MaSV, Lanthi, Diemthi)
– R1: kq  DIEMTHI thì 0  kq.Diemthi  10

– R2: kq  DIEMTHI thì 0  kq.Lanthi  2
Chương 4 - Ràng buộc toàn vẹn (RBTV)

19


4.2.2. RBTV Liên thuộc tính
 Là loại RBTV liên quan đến nhiều thuộc tính của quan
hệ
 Thông thường đó là các thuộc tính suy diễn từ 1 hoặc
nhiều thuộc tính trong cùng một bộ giá trị
 Ví dụ:
– Trong quan hệ:
CHITIETHD(SoHD, MaH, SL, Dongia, Thanhtien)
– Có RBTV liên thuộc tính:
∀ cthđ ∈ CHITIETHD thì
cthđ.Thanhtien = cthđ.SL* cthđ.Đơn-giá

Chương 4 - Ràng buộc toàn vẹn (RBTV)

20


4.2.3. RBTV liên bộ, liên thuộc tính
 Là loại RBTV có liên quan đến 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ụ:

– Mã số sinh viên không được trùng nhau
sv1, sv2  SINHVIEN thì sv1.MaSV  sv2.MaSV
– Điểm thi của sinh viên lần sau phải lớn hơn lần trước:
kq  DIEMTHI
• Nếu kq.Lanthi = 1 thì 0 ≤ kq.Điểm ≤ 10 hoặc:
• Nếu kq.Lanthi > 1 thì ∃ kq’ ∈ DIEMTHI, sao cho
kq’.Lanthi = kq.Lanthi - 1 và kq.Diem ≥ kq’.Diem

Chương 4 - Ràng buộc toàn vẹn (RBTV)

21


4.2.4. RBTV về phụ thuộc tồn tại
 Đây là loại RBTV phổ biến trong các CSDL quan hệ.
Còn được gọi là RBTV phụ thuộc về khóa ngoại
 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ộ tương ứng trên một quan
hệ khác
 RBTV 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ện diện của khóa ngoại
– Có sự lồng khóa giữa các quan hệ

Chương 4 - Ràng buộc toàn vẹn (RBTV)

22



4.2.4. RBTV về phụ thuộc tồn tại (tt)
 Ví dụ:
– Mỗi sinh viên phải thuộc 1 lớp
– Mỗi lớp phải thuộc 1 khoa

– Mỗi Điểm phải của 1 sinh viên, 1 môn
– Mỗi nhân viên phải thuộc 1 Phòng
– Mỗi Mã hàng trong CHITIETHD phải tồn tại trong
DMHANG
– Mỗi Số Hóa đơn trong CHITIETHD phải tồn tại trong
HOADON
Chương 4 - Ràng buộc toàn vẹn (RBTV)

23


4.2.5. RBTV liên thuộc tính - liên quan hệ
 Một thuộc tính trong quan hệ này cố mối liên hệ với
một thuộc tính trong quan hệ khác
 Ví dụ:
– Ngày giao hàng phải sau ngày đặt
HOADON.Ngaygiao  CHITIETHD.Ngaydat

– Trưởng phòng phải có tuổi trên 40
YEAR(PHONGBAN.NgayBD) – YEAR(NHANVIEN.Ngaysinh)  40

Chương 4 - Ràng buộc toàn vẹn (RBTV)

24



4.2.5. 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 quan hệ khác.
 Ví dụ:
– Mỗi GV phải dạy ít nhất 1 lớp
– HOADON.SoMatHang = Số bộ của CHITIETHD có
cùng số hóa đơn
– Mỗi phiếu mượn chỉ mượn được tối đa 3 cuốn sách.

Chương 4 - Ràng buộc toàn vẹn (RBTV)

25


×