Tài liệu ôn thi cao học - thạc sĩ khoa học máy tính, hệ thống thông tin trường ĐH KHTN TP.HCM: p4
Trang 1Khái niệm RBTV (Integrety Constraints)
RBTV là một điều kiện bất biến được định nghĩa trên một hay nhiều
quan hệ khác nhau mà mọi thể hiện của quan hệ đều phải thỏa ở bất kỳ
thời điểm nào
{ Ví dụ
Mức lương của một người nhân viên không được vượt quá trưởng phòng (R1)
Người quản lý trực tiếp (của một nhân viên) phải là một nhân viên trong công ty (R2)
RBTV xuất phát từ những qui định hay điều kiện
{ Trong thực tế
{ Trong mô hình dữ liệu
Các thao tác làm thay đổi dữ liệu không nên được thực hiện một cách tùy tiện vì có thể
đưa CSDL đến một tình trạng ‘xấu’
Trang 23/20/2008 Ôn thi Cao học 2008 3
Vai trò và Đặc trưng của RBTV
Vai trò
{ Bảo đảm tính kết dính của các thành phần cấu tạo nên CSDL
{ Bảo đảm tính nhất quán của dữ liệu
{ Bảo đảm CSDL luôn biểu diễn đúng ngữ nghĩa thực tế
{ Cập nhật lương cho nhân viên
{ Thêm mới một nhân viên vào một phòng ban
{ Bổ nhiệm trưởng phòng cho một phòng ban
Bối cảnh: NHANVIEN, PHONGBAN
Trang 33/20/2008 Ôn thi Cao học 2008 5
Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu
Biểu diễn thông qua
Trang 43/20/2008 Ôn thi Cao học 2008 7
∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧
∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))
Bảng tầm ảnh hưởng
Bảng tầm ảnh hưởng
{ Xác định thao tác cập nhật nào cần phải kiểm tra RBTV khi được
thực hiện trên quan hệ bối cảnh
Có 2 loại
{ Bảng tầm ảnh hưởng cho một RBTV
{ Bảng tầm ảnh hưởng tổng hợp
Trang 53/20/2008 Ôn thi Cao học 2008 9
+ - -
+ -
-+ - + +
+ -
-+ - +
Trang 63/20/2008 Ôn thi Cao học 2008 11
{ Liên bộ, liên quan hệ
{ Liên thuộc tính, liên quan hệ
R
α β
C 1 5 12
D 1 7 3 9
α β β β
β ∈ {α, β, γ} 9 ∈ {1 10}
Trang 73/20/2008 Ôn thi Cao học 2008 13
Trang 83/20/2008 Ôn thi Cao học 2008 15
RBTV - Liên bộ
Sự tồn tại của một hay nhiều bộ phụ thuộc vào sự tồn tại của một
hay nhiều bộ khác trong cùng quan hệ
Trường hợp đặc biệt
{ RB khóa chính
{ RB duy nhất (unique)
A B α
R
α β
C 1 5 12
D 1 7 3 9
α β β β
Trang 93/20/2008 Ôn thi Cao học 2008 17
Mỗi trận đấu là cuộc thi đấu của đúng 2 đội
Trang 103/20/2008 Ôn thi Cao học 2008 19
RBTV - Liên thuộc tính
Là ràng buộc giữa các thuộc tính trong cùng quan hệ
A B α
R
α β
C 1 5 12
D 1 7 3 9
α β β β
Trang 113/20/2008 Ôn thi Cao học 2008 21
Ví dụ 9
Mỗi khóa học kéo dài ít nhất 3 tháng
Giá trị xuất hiện tại các thuộc tính trong một quan hệ nào đó phải
tham chiếu đến giá trị khóa chính của một quan hệ khác cho trước
Trường hợp đặc biệt
{ RB khóa ngoại
A B α
R
α β
C 1 5 12
D 1 7 3 9
α β β β
E F 7
S
3
1 2
Bắt buộc phải tồn tại trước
Trang 123/20/2008 Ôn thi Cao học 2008 23
+ (MANV) THANNHAN
+
− + (MA_NVIEN)
RBTV - Tham chiếu (tt)
Còn gọi là phụ thuộc tồn tại
Thường có bối cảnh là hai quan hệ
{ Nhưng có trường hợp suy biến thành một quan hệ
∀t ∈ NHANVIEN ( t.MA_NQL ≠ null ∧
∃s ∈ NHANVIEN (t.MA_NQL = s.MANV ))
R 2
NHANVIEN
Thêm Xóa Sửa + + + (MANV, MA_NVIEN)
Trang 133/20/2008 Ôn thi Cao học 2008 25
RBTV - Liên bộ, liên quan hệ
Là ràng buộc xãy ra giữa các bộ trên nhiều quan hệ khác nhau
A B α
R
α β
C 1 5 12
D 1 7 3 9
α β β β
A B α
S
α
2 4 β γ
2 2
C 7 7 3 10
Ví dụ 11
Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn
+ + + (SOHD)
Trang 143/20/2008 Ôn thi Cao học 2008 27
RBTV - Liên thuộc tính, liên quan hệ
Là ràng buộc xãy ra giữa các thuộc tính trên nhiều quan hệ khác
nhau
A B α
R
α β
C 1 5 12
D 1 7 3 9
α β β β
A B α
S
α
2 4 β γ
2 2
C 7 7 3 10
Ví dụ 12
Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức
{ Bối cảnh: NHANVIEN, PHONGBAN
{ Biểu diễn:
{ Bảng tầm ảnh hưởng:
∀t ∈ PHONGBAN ( ∃s ∈ NHANVIEN (
s.MANV= t.TRPHG ∧t.NG_NHANCHUC> s.NGSINH ))
R 12
NHANVIEN
Thêm Xóa Sửa
− + + (NG_NHANCHUC, TRPHG) PHONGBAN
−
−
+ (NGSINH, MANV)
Trang 153/20/2008 Ôn thi Cao học 2008 29
+
− + (SO_NV, MAPHG)
Trang 163/20/2008 Ôn thi Cao học 2008 31
Tên quan hệ Tên thuộc tính
MANV, MADA
MA_NVIEN, SODA
Trang 173/20/2008 Ôn thi Cao học 2008 33
−
− + (MADA,PHONG) PHANCONG + − + (MA_NVIEN,SODA)
Trang 183/20/2008 Ôn thi Cao học 2008 35
PTH được phát biểu dựa trên
{ Ngữ nghĩa của môi trường ứng dụng
Trang 193/20/2008 Ôn thi Cao học 2008 37
Ví dụ
Xét lược đồ quan hệ
Và thể hiện
Phim(Tênphim, Nămsx, Thờilượng, Loạiphim, Xưởngsx, Diễnviên)
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Mark Hamill
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Wayne’s World 1992 95 color Paramount Dana Carvey
Wayne’s World 1992 95 color Paramount Mike Meyers
Tênphim Nămsx→ Thờilượng
Tênphim Nămsx→ Loại
Tênphim Nămsx→ Xưởngsx
Tênphim Nămsx→ Diễnviên
Không là phụ thuộc hàm
Chú ý
Xét thể hiện r1
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Mark Hamill
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Wayne’s World 1992 95 color Paramount Dana Carvey
Wayne’s World 1992 95 color Paramount Mike Meyers
Tênphim → Loại
Trang 203/20/2008 Ôn thi Cao học 2008 39
Chú ý (tt)
Xét thể hiện r2
Tênphim Nămsx Thờilượng Loạiphim Xưởngsx Diễnviên
Star Wars 1977 124 color Fox Carrie Fisher
Star Wars 1977 124 color Fox Mark Hamill
Star Wars 1977 124 color Fox Harrison Ford
Mighty Ducks 1991 104 color Disney Emilio Esteves
Kingkong 1993 120 color Paramount Fay Wray
Kingkong 1993 120 Black/white Paramount Robert Amstrong
Tênphim → Loại
PTH phải được định nghĩa trên lược đồ quan hệ
Thỏa với mọi thể hiện của quan hệ
Một số khái niệm
Trang 213/20/2008 Ôn thi Cao học 2008 41
Nếu X → Y và X → Z Thì X → Y, Z
Nếu X → Y và Z ⊆ Y Thì X → Z
Trang 223/20/2008 Ôn thi Cao học 2008 43
Bao đóng của F
Cho F là tập các PTH định nghĩa trên R
Cho F là tập các PTH định nghĩa trên R
{ Nếu có 1 PTH f khác cũng được thỏa với mọi thể hiện của R
{ Thì ta gọi f là hệ quả của F
Tập hợp các PTH hệ quả từ F được gọi là bao đóng của F
{ Ký hiệu F +
F ⊆ F+
Ví dụ
Xét lược đồ R(A,B,C) thỏa tập PTH
Ta có thể suy diễn R còn thỏa PTH
F = { f1: A → B
f2: B → C } f3: A → C
Trang 233/20/2008 Ôn thi Cao học 2008 45
Trang 243/20/2008 Ôn thi Cao học 2008 47
{ Kiểm tra f có nằm trong F + không
Tìm bao đóng F+ có hiệu quả ???
Chuyển sang bài toán thành viên
{ Ta chỉ cần tìm bao đóng của tập thuộc tính X dựa trên F
{ Kiểm tra Y có thuộc bao đóng của X hay không
Trang 253/20/2008 Ôn thi Cao học 2008 49
Bao đóng của tập thuộc tính X
Trang 263/20/2008 Ôn thi Cao học 2008 51
Kiểm tra PTH AB→D có suy dẫn từ F không?
Trang 273/20/2008 Ôn thi Cao học 2008 53
Ví dụ (tt)
R(A, B, C, D, E, F)
Kiểm tra PTH D→A có suy dẫn từ F không?
D+
F= {D, E}
Không có A trong bao đóng
Kết luận D→A không suy dẫn từ F
Mọi thể hiện của quan hệ
thỏa F1 ≡ Mọi thể hiện của quan hệ thỏa F2
F1 ≡ F2 ⇔ F1 là hệ quả của F2 và
F2 là hệ quả của F1
Trang 283/20/2008 Ôn thi Cao học 2008 55
Ví dụ
R(A, B, C, D, E)
F1 ≡ F2 ?
{ F1 là hệ quả của F2 ⇒ F1 được suy dẫn từ F2
{ F2 là hệ quả của F1 ⇒ F2 được suy dẫn từ F1
Ví dụ (tt)
{ Ta thấy F1 ⊆ F2, hiển nhiên F1 là hệ quả của F2
{ Xét F2 có A→E, tìm xem F1 có A→E ?
Trang 293/20/2008 Ôn thi Cao học 2008 57
{ F1 là hệ quả của F2 ⇒ F1 được suy dẫn từ F2
{ F2 là hệ quả của F1 ⇒ F2 được suy dẫn từ F1
Ví dụ
{ Xét CD→E không thuộc trong F2
{ F1 không được suy dẫn từ F2
{ F1 không là hệ quả của F2
{ Xét F2 có A→E
Trang 303/20/2008 Ôn thi Cao học 2008 59
Trang 313/20/2008 Ôn thi Cao học 2008 61
Ví dụ
R(A, B, C, D, E, I)
BCD→E là phụ thuộc hàm đầy đủ không?
Một số khái niệm (tt)
Xét X → Y là thừa nếu F ≡ F – {X→Y}
Trang 323/20/2008 Ôn thi Cao học 2008 63
Trang 333/20/2008 Ôn thi Cao học 2008 65
Trang 343/20/2008 Ôn thi Cao học 2008 67
Ví dụ
R(A, B, C)
PTT(F) ?
Mọi VP đều có 1 thuộc tính
Trang 353/20/2008 Ôn thi Cao học 2008 69
Xem hình trang 16
Trang 363/20/2008 Ôn thi Cao học 2008 71
Xem hình trang 19
Trang 373/20/2008 Ôn thi Cao học 2008 73
Trang 383/20/2008 Ôn thi Cao học 2008 75
Ví dụ
R(A, B, C, D, E)
f2: B→A f3: AD→Ef4: BD→E}
Trang 393/20/2008 Ôn thi Cao học 2008 77
Assertion
Là một biểu thức SQL luôn mang giá trị TRUE tại mọi thời điểm
{ Người sử dụng cần cho biết cái gì phải đúng
CREATE ASSERTION <Tên_assertion> CHECK (<Điều_kiện>)
DROP ASSERTION <Tên_assertion>
Ví dụ 12
Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức
CREATE ASSERTION R12 CHECK (
NOT EXISTS (
SELECT * FROM NHANVIEN, PHONGBAN
AND NGSINH > NGAY_NHANCHUC ) )
Trang 403/20/2008 Ôn thi Cao học 2008 79
Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000
CREATE ASSERTION R15 CHECK (
NOT EXISTS (
SELECT * FROM NHANVIEN, PHONGBAN
AND LUONG < 50000 ) )
Ví dụ 15 (tt)
ALTER TABLE PHONGBAN (
TENPB VARCHAR(20) UNIQUE,
MAPHG INT NOT NULL ,
TRPHG CHAR(9),
NG_NHANCHUC DATETIME,
CONSTRAINT CHK_PB_LUONGTRPHG CHECK (
TRPHG NOT IN (SELECT MANV FROM NHANVIEN
WHERE LUONG < 50000 )) )
Lương của trưởng phòng phải lớn hơn 50000
Check Constraint
Trang 413/20/2008 Ôn thi Cao học 2008 81
Ví dụ 16
Số lượng nhân viên của mỗi phòng ban không quá 20 người
CREATE ASSERTION R16 CHECK (
20 >= ALL ( SELECT COUNT (MANV)
FROM NHANVIEN GROUP BY PHG ) )
Ví dụ 16 (tt)
Số lượng nhân viên của mỗi phòng ban không quá 20 người
ALTER TABLE NHANVIEN ADD
CONSTRAINT CHK_NV_SLNVPB CHECK (
20 >= ALL ( SELECT COUNT (MANV) FROM NHANVIEN
GROUP BY PHG ))
Check Constraint
Trang 423/20/2008 Ôn thi Cao học 2008 83
Assertion hay Check Constraint ?
Trigger
Là tập hợp các lệnh được thực hiện tự động khi xuất hiện một biến
cố nào đó
row-level statement-level
trước sau
giá trị mới
giá trị cũ
thêm xóa sửa
Trang 433/20/2008 Ôn thi Cao học 2008 85
Trigger (tt)
CREATE TRIGGER <Tên_trigger>
AFTER|BEFORE INSERT|UPDATE|DELETE ON <Tên_bảng>
REFERENCING
NEW ROW|TABLE AS <Tên_1>
OLD ROW|TABLE AS <Tên_2>
FOR EACH ROW | FOR EACH STATEMENT
WHEN (<Điều kiện>)
<Tập_lệnh_SQL>
DROP TRIGGER <Tên_trigger>
Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000
CREATE TRIGGER TR_PB_UPD
AFTER UPDATE OF TRPHG ON PHONGBAN
Trang 443/20/2008 Ôn thi Cao học 2008 87
Ví dụ 15 (tt)
Lương của trưởng phòng phải lớn hơn 50000
CREATE TRIGGER TR_PB_UPD
REFERENCING
NEW ROW AS NewTuple
OLD ROW AS OldTuple
FOR EACH ROW
WHEN (50000 >= (SELECT LUONG FROM NHANVIEN
Lương của trưởng phòng phải lớn hơn 50000
CREATE TRIGGER TR_PB_UPD
AFTER UPDATE OF LUONG ON NHANVIEN
REFERENCING
NEW ROW AS NewTuple
OLD ROW AS OldTuple
FOR EACH ROW
WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN (
SELECT TRPHG FROM PHONGBAN )) UPDATE NHANVIEN
SET LUONG=OldTuple.LUONG
Trang 453/20/2008 Ôn thi Cao học 2008 89
Stored Procedure
Các DBMS thương mại cung cấp cách thức lưu trữ các hàm hay thủ
tục
{ Được lưu trữ trong lược đồ CSDL
{ Được sử dụng trong các câu lệnh SQL
Mỗi trận đấu là cuộc thi đấu của đúng 2 đội
CREATE PROCEDURE Thêm_trận_đấu
t THIDAU , s THIDAU
AS
begin tran
Thêm t vào THIDAU
If @@error <>0 rollback tran Thêm s vào THIDAU
If @@error <>0 rollback tran commit tran
GO
EXEC Thêm_trận_đấu x, y