Professional Documents
Culture Documents
6 - Rang Buoc Toan Ven
6 - Rang Buoc Toan Ven
6 - Rang Buoc Toan Ven
2
1. Giới thiệu
3
1. Giới thiệu
4
2. Các đặc trưng của một
RBTV
2.1 Nội dung
2.2 Bối cảnh
2.3 Bảng tầm ảnh hưởng
5
2.1 Nội dung
6
2.2 Bối cảnh
7
2.3 Bảng tầm ảnh hưởng (1)
8
2.3 Bảng tầm ảnh hưởng (2)
11
3.1 RBTV có bối cảnh 1 quan hệ
12
Lược đồ CSDL quản lý giáo vụ
13
3.1.1 Ràng buộc miền giá trị
14
3.1.1 Ràng buộc miền giá trị
R2: Điểm thi của học viên phải nằm trong khoảng
từ 0 đến 10.
◼ Nội dung:
kq KETQUATHI (kq.diem ≥ 0 kq.diem 10)
Hoặc: kq KETQUATHI (kq.diem [0..10] )
◼ Bối cảnh: KETQUATHI
◼ Bảng tầm ảnh hưởng:
R2 Thêm Xóa Sửa
KETQUATHI + - +(diem)
15
3.1.2 Ràng buộc liên thuộc tính
R4: Nếu điểm thi < 5 thì kết quả là rớt (ROT), ngược lại là đậu
(DAU)
◼ Nội dung:
k KETQUATHI
((k.diem<5→k.kqua=‘ROT’) (k.diem ≥5→k.kqua=‘DAU’))
◼ Bối cảnh : KETQUATHI
◼ Bảng tầm ảnh hưởng:
R4 Thêm Xóa Sửa
KETQUATHI + - +(diem, kqua)
17
3.1.3 Ràng buộc liên bộ
Là ràng buộc giữa các bộ trên cùng một quan hệ (có thể
liên quan đến nhiều thuộc tính).
R5: Tất cả các học viên phải có mã số phân biệt với nhau
◼ Nội dung:
h1,h2 HOCVIEN: Nếu h1h2 thì h1.Mahvh2.Mahv
◼ Bối cảnh: quan hệ HOCVIEN
◼ Bảng tầm ảnh hưởng:
18
3.1.3 Ràng buộc liên bộ
Là ràng buộc giữa các bộ trên cùng một quan hệ (có thể
liên quan đến nhiều thuộc tính).
R6: Tất cả các KHOA phải có tenkhoa phân biệt với nhau
◼ Nội dung:
k1,k2 KHOA(k1k2 → k1.Tenkhoak2.Tenkhoa)
◼ Bối cảnh: KHOA
◼ Bảng tầm ảnh hưởng:
19
3.1.3 Ràng buộc liên bộ
R7: Các giáo viên có cùng học vị, cùng hệ số lương thì
mức lương sẽ bằng nhau
◼ Nội dung:
gv1,gv2 GIAOVIEN(
(gv1.Hocvi=gv2.Hocvi)(gv1.Heso=gv2.Heso) →
gv1.Mucluong=gv2.Mucluong
◼ Bối cảnh: quan hệ GIAOVIEN
◼ Bảng tầm ảnh hưởng:
21
3.2.1 Ràng buộc tham chiếu
22
3.2.1 Ràng buộc tham chiếu
R8: Học viên thi một môn học nào đó thì môn học đó
phải có trong danh sách các môn học.
◼ Nội dung:
⚫ k KETQUATHI (m MONHOC (k.Mamh = m.Mamh))
⚫ Hoặc: KETQUATHI[Mamh] MONHOC[Mamh]
◼ Bối cảnh: KETQUATHI, MONHOC
◼ Bảng tầm ảnh hưởng:
25
3.2.2 Ràng buộc liên thuộc tính
R10: Ngày giáo viên giảng dạy một môn học phải lớn hơn hoặc
bằng ngày giáo viên đó vào làm.
◼ Bối cảnh: GIANGDAY, GIAOVIEN
◼ Bảng tầm ảnh hưởng:
26
3.2.2 Ràng buộc liên thuộc tính
R11: Ngày thi một môn học phải lớn hơn ngày kết thúc học
môn học đó.
◼ Nội dung:
kq KETQUATHI
Nếu gd GIANGDAY, hv HOCVIEN:
(gd.Malop=hv.Malop)(kq.Mamh=gd.Mamh) thì
gd.Denngay < kq.Ngthi
27
3.2.2 Ràng buộc liên thuộc tính (3)
28
3.2.3 RBTV do thuộc tính tổng hợp
Là ràng buộc giữa các thuộc tính, các bộ trên những quan
hệ khác nhau.
Thuộc tính tổng hợp là thuộc tính được tính toán từ giá trị
của các thuộc tính khác, các bộ khác.
Cho lược đồ CSDL:
HOADON(Sohd, Nghd, Makh,Trigia)
CTHD(Sohd, Masp, Soluong, Gia, Thanhtien)
Ví dụ RBTV do thuộc tính tổng hợp:
Trị giá của một hoá đơn bằng tổng thành tiền của các chi
tiết thuộc hoá đơn đó.
29
3.2.3 RBTV do thuộc tính tổng hợp
31
3.2.3 RBTV do thuộc tính tổng hợp
32
3.2.3 RBTV do thuộc tính tổng hợp
Doanh số của một khách hàng bằng tổng trị giá các
hoá đơn mà khách hàng đó đã mua
◼ Bối cảnh: KHACHHANG, HOADON
◼ Bảng tầm ảnh hưởng:
33
3.2.3 RBTV do thuộc tính tổng hợp
l LOP(
l.Siso = Count(hv HOCVIEN: hv.Malop = l.Malop)(mahv))
Hoặc
l LOP(
l.Siso = Count{hv.mahv| hv HOCVIEN (hv.malop = l.malop)} )
34
3.2.3 RBTV do thuộc tính tổng hợp
35
3.2.4 Do hiện diện của chu trình (1)
Magv
Malop
GIANGDAY
X
GIAOVIEN
Mamh
Hoten Y
Hocvi Tenmh
MONHOC
…
Makhoa
TCLT
37
3.2.4 Do hiện diện của chu trình (3)
X = GIANGDAY[Magv, Mamh]
Y = (GIAOVIEN ⋈ MONHOC) [Magv,Mamh]
Makhoa
Ý nghĩa:
◼ X: giáo viên và những môn học đã được phân công cho
giáo viên đó giảng dạy
◼ Y: giáo viên và những môn học thuộc khoa giáo viên đó
phụ trách
Mối quan hệ giữa X và Y trong các ràng buộc sau:
38
3.2.4 Do hiện diện của chu trình (4)
39
3.2.4 Do hiện diện của chu trình (4)
40
Bảng tầm ảnh hưởng tổng hợp (1)
Bảng tầm ảnh hưởng tổng hợp của m ràng buộc trên n
quan hệ bối cảnh
41
Bảng tầm ảnh hưởng tổng hợp (2)
R1 + - +
R2 + - +
R3 + - -*
R4 + - +
R5 - + -* + - -*
R6 - - + + - +
R7 - - + - - + + - +
R8 + + + + - +
R9 - - + - - + + - +
42
Trigger
Khi trigger được thực thi, SQL tự động tạo ra 2 bảng tạm với cùng cấu
trúc với bảng mà trigger được định nghĩa trên đó.
Bảng INSERTED chứa dữ liệu mới khi thực thi câu lệnh Insert hoặc câu
lệnh Update.
Bảng DELETED chứa dữ liệu bị xoá khi thực thi câu lệnh Delete hoặc
chứa dữ liệu cũ khi thực thi câu lệnh Update.
Hai bảng này chỉ tồn tại trong thời gian trigger xử lý và cục bộ cho mỗi
trigger.
Hoạt động Bảng INSERTED Bảng DELETED
INSERT dữ liệu mới được insert không có dữ liệu
DELETE không có dữ liệu chứa dữ liệu bị xóa
UPDATE chứa dữ liệu sau khi được cập nhật chứa dữ liệu trước khi cập nhật
44
Trigger
HOADON INSERTED
SOHD NGHD MAKH TRIGIA SOHD NGHD MAKH TRIGIA
1001 23/07/2006 KH01 320,000 1004 01/09/2006 KH02 180,000
1002 12/08/2006 KH01 840,000
1003 23/08/2006 KH02 100,000
1004 01/09/2006 KH02 180,000
DELETED
SOHD NGHD MAKH TRIGIA
HOADON INSERTED
SOHD NGHD MAKH TRIGIA SOHD NGHD MAKH TRIGIA
1001 23/07/2006 KH01 320,000
1002 12/08/2006 KH01 840,000 DELETED
1003 23/08/2006 KH02 100,000 SOHD NGHD MAKH TRIGIA
1004 01/09/2006 KH02 180,000
46
Trigger
HOADON INSERTED
SOHD NGHD MAKH TRIGIA SOHD NGHD MAKH TRIGIA
1001 23/07/2006 KH01 320,000 1004 01/09/2006 KH07 300,000
1002 12/08/2006 KH01 840,000 DELETED
1003 23/08/2006 KH02 100,000 SOHD NGHD MAKH TRIGIA
1004 01/09/2006 KH02
KH07 180,000
300,000 1004 01/09/2006 KH02 180,000
47
Trigger
Cú pháp
48
Trigger
49
Trigger
50
Trigger
HOẶC:
52
Trigger
CREATE TRIGGER nghd_ngdk_hoadon_update
ON hoadon
AFTER UPDATE
AS
IF (UPDATE (makh) OR UPDATE (nghd))
BEGIN
DECLARE @ng_muahang smalldatetime
DECLARE @ng_dangky smalldatetime
SELECT @ng_muahang=nghd, @ng_dangky=ngdk
FROM khachhang, inserted
WHERE khachhang.makh=inserted.makh
IF @ng_muahang< @ng_dangky
BEGIN
rollback transaction
print ‘ngay mua hang phai lon hon ngay dang ky’
END
END; 53
Trigger
HOẶC:
54
Trigger
CREATE TRIGGER nghd_ngdk_khachhang_update
ON khachhang
AFTER UPDATE
AS
DECLARE @ng_dangky smalldatetime, @makhhang char(4)
SELECT @ng_dangky=ngdk, @makhhang=makh
FROM inserted
IF (UPDATE (ngdk))
BEGIN
IF (EXISTS (SELECT *
FROM hoadon
WHERE makh=@makhhang AND @ng_dangky>nghd))
BEGIN
rollback transaction
print ‘thao tac sua ngay dang ky phai nho hon ngay hoa don’
END
END; 55
Trigger
HOẶC:
56
Bài tập
59