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

Bài giảng Cơ sở dữ liệu: Chương 6 - Lê Nhị Lãm Thúy

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 (431.6 KB, 18 trang )

Chương 6

RÀNG BUỘC TOÀN VẸN
CƠ SỞ DỮ LIỆU
Khoa Công nghệ thông tin – Đại học Sài Gòn

Nội dung chi tiết

1. Khái niệm

1. Khái niệm

•RBTV (Integrety Constraints) 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

2. Các đặc trưng của RBTV

• 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’

3. Phân loại
4. Cài đặt

•RBTV là một điều kiện được định nghĩa trên một hay nhiều
quan hệ khác nhau
•Các RBTV là những điều kiện bất biến mà mọi thể hiện của
quan hệ đều phải thỏa ở bất kỳ thời điểm nào

Khoa CNTT – Đại học Sài Gòn



3

Khoa CNTT – Đại học Sài Gòn

4

1


2. Các đặc trưng của RBTV

1. Khái niệm
Tại sao cần phải có RBTV?
 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ế

1. Bối cảnh
2. Nội dung
3. Bảng tầm ảnh hưởng

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)
– Giới tính của nhân viên chỉ thuộc 1 trong 2 giá trị «Nam»
hoặc «Nữ»  RBTV

Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

5

a. Bối cảnh

6

a. Bối cảnh
Ví dụ (R1)

Bối cảnh của một RBTV

Mức lương của một người nhân viên không được

Là những quan hệ có khả năng bị

vượt quá trưởng phòng
• Các phép cập nhật

vi phạm RBTV khi thực hiện các

– Cập nhật lương cho nhân viên

phép cập nhật

– 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

Khoa CNTT – Đại học Sài Gòn

7

Khoa CNTT – Đại học Sài Gòn

8

2


a. Bối cảnh

b. Nội dung

Ví dụ (R2)

Nội dung của một RBTV được phát biểu bằng
Ngôn ngữ tự nhiên
• Dễ hiểu nhưng thiếu tính chặt chẽ

Người quản lý trực tiếp phải là một nhân viên trong
công ty

Ngôn ngữ hình thức
• Cô đọng, chặt chẽ nhưng đôi lúc khó hiểu
• Biểu diễn thông qua
– Đại số quan hệ

– Phép tính quan hệ
– Mã giả (pseudo code)

• Các phép cập nhật
– Cập nhật người quản lý trực tiếp của một nhân
viên
– Thêm mới một nhân viên
• Bối cảnh: NHANVIEN

Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

9

b. Nội dung

b. Nội dung

Ví dụ (R1)

Ví dụ (R2)

10

o Ngôn ngữ tự nhiên

o Ngôn ngữ tự nhiên
• Mức lương của một người nhân viên không được vượt quá


• Người quản lý trực tiếp phải là một nhân viên trong công ty

trưởng phòng

o Ngôn ngữ hình thức
o Ngôn ngữ hình thức

t  NHANVIEN ( t.MA_NQL  null 

t  NHANVIEN (
u  PHONGBAN ( v  NHANVIEN (
u.TRPHG  v.MANV 
u.MAPHG  t.PHG 
t.LUONG  v.LUONG )))

Khoa CNTT – Đại học Sài Gòn

s  NHANVIEN (t.MA_NQL  s.MANV ))

11

Khoa CNTT – Đại học Sài Gòn

12

3


c. Bảng tầm ảnh hưởng


Bảng tầm ảnh hưởng một RBTV

Bảng tầm ảnh hưởng

Tên_RB

– Xác định thao tác cập nhật nào cần phải kiểm tra

Thêm


Quan hệ 1

RBTV khi được thực hiện trên quan hệ bối cảnh

Quan hệ 2

Xóa


Sửa
 (Thuộc tính)















Quan hệ n

Có 2 loại
– Bảng tầm ảnh hưởng cho một RBTV

() Vi phạm RBTV

– Bảng tầm ảnh hưởng tổng hợp

() Không vi phạm RBTV

Khoa CNTT – Đại học Sài Gòn

13

Bảng tầm ảnh hưởng tổng hợp

Khoa CNTT – Đại học Sài Gòn

14

Khoa CNTT – Đại học Sài Gòn

16


3. Phân loại
3.1. Một quan hệ

Ràng buộc 1 Ràng buộc 2
T

X

S

T

X

S

Quan hệ 1

+

-

+

+

-

+


Quan hệ 2

-

+

-

Quan hệ 3

-

-

+

3.1.1. Miền giá trị

Ràng buộc m






T

X


S

3.1.2. Liên bộ

+

-

+

3.1.3. Liên thuộc tính

-

+

-

-

-

+

3.2. Nhiều quan hệ
3.2.1. Tham chiếu


Quan hệ n


-

+

-

3.2.2. Liên bộ, liên quan hệ
3.2.3. Liên thuộc tính, liên quan hệ
3.3.4. Thuộc tính tổng hợp
3.3.5. Chu trình

Khoa CNTT – Đại học Sài Gòn

15

4


3.1.1. RBTV - Miền giá trị

Ví dụ 3

oRàng buộc qui định các giá trị cho một thuộc tính

Thời gian tham gia đề án của một nhân viên không quá 60 giờ
• Bối cảnh:

R

A


B

C

D





1

1





5

7





12

3






23

9

PHANCONG
  9{,
 ,
{1..10}
}

• Biểu diễn:
t  PHANCONG ( t.THOIGIAN  60 )

oMiền giá trị
• Bảng tầm ảnh hưởng:

• Liên tục

Thêm

R3

• Rời rạc






PHANCONG

Khoa CNTT – Đại học Sài Gòn

Xóa

 (THOIGIAN)

Khoa CNTT – Đại học Sài Gòn

17

Ví dụ 4

Sửa

18

3.1.2. RBTV - Liên bộ

Giới tính của nhân viên là ‘Nam’ hoặc ‘Nu’

oSự 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ệ

o Bối cảnh:
NHANVIEN


R

o Biểu diễn:
t  NHANVIEN ( t.PHAI  {‘Nam’, ‘Nu’} )
hay

A

B

C

D





1

1





5

7






12

3





23

9

DOM(PHAI)  {‘Nam’, ‘Nu’}

oTrường hợp đặc biệt

o Bảng tầm ảnh hưởng:
R4
NHANVIEN

Thêm


Xóa



Sửa

• RB khóa chính

 (PHAI)

• RB duy nhất (unique)

Khoa CNTT – Đại học Sài Gòn

19

Khoa CNTT – Đại học Sài Gòn

20

5


Ví dụ 5

Ví dụ 6

Tên phòng là duy nhất

Một nhân viên được tham gia tối đa 5 đề án

o Bối cảnh:


o Bối cảnh:
PHONGBAN

PHANCONG

o Biểu diễn:
o Biểu diễn:

t  PHANCONG (
∑({ s  PHANCONG | s.MA_NVIEN  t.MA_NVIEN})  5 )

t1, t2  PHONGBAN ( t1 t2  t1.TENPHG  T2.TENPHG )

o Bảng tầm ảnh hưởng:

o Bảng tầm ảnh hưởng:

Thêm

R5

Xóa




PHONGBAN

Sửa
 (TENPHG)


Khoa CNTT – Đại học Sài Gòn

Thêm

R6
PHANCONG

Xóa




 (MA_VIEN, SODA)

Khoa CNTT – Đại học Sài Gòn

21

Ví dụ 7

Sửa

22

3.1.3. RBTV - Liên thuộc tính

THIDAU(NGAY, GIO, DOI, SOBAN)

Là ràng buộc giữa các thuộc tính trong cùng quan hệ


Mỗi trận đấu là cuộc thi đấu của đúng 2 đội
• Bối cảnh:
R

THIDAU

• Biểu diễn:
t  THIDAU ( !s  THIDAU ( t  s  t.NGAY  s.NGAY  t.GIO  s.GIO ))

A

B

C

D





1

1






5

7





12

3





23

9

• Bảng tầm ảnh hưởng
R7
THIDAU

Thêm


Xóa



Sửa
 (NGAY, GIO, DOI)
Khoa CNTT – Đại học Sài Gòn

23

Khoa CNTT – Đại học Sài Gòn

24

6


Ví dụ 8

Ví dụ 9

Một nhân viên không quản lý trực tiếp chính mình

KHOAHOC(MAKH, TENKH, BDAU, KTHUC)
Mỗi khóa học kéo dài ít nhất 3 tháng

• Bối cảnh:

• Bối cảnh:

NHANVIEN

• Biểu diễn:


KHOAHOC

• Biểu diễn:

t  NHANVIEN ( t.MA_NQL  t.MANV  t.MA_NQL  null )

t  KHOAHOC ( t.KTHUC  t.BDAU  3 )

• Bảng tầm ảnh hưởng:
Thêm

R8
NHANVIEN

Xóa


+

• Bảng tầm ảnh hưởng:

Sửa
 (MA_NQL)

Khoa CNTT – Đại học Sài Gòn

B

C


D



1

1





5





12





23

9

 (BDAU, KTHUC)
Khoa CNTT – Đại học Sài Gòn


26

• Bối cảnh:

cho trước


Sửa

Mọi thân nhân phải có mối quan hệ gia đình với một nhân
viên trong công ty

phải tham chiếu đến giá trị khóa chính của một quan hệ khác

A

Xóa


Ví dụ 10

Giá trị xuất hiện tại các thuộc tính trong một quan hệ nào đó

R



25


3.2.1. RBTV - Tham chiếu
o

Thêm

R9
KHOAHOC

Ở thời điểm thêm 1 bộ vào NHANVIEN, MA_NQL là null

S

E

F

7

7

1

3

3

2

• Biểu diễn:


THANNHAN, NHANVIEN

t  THANNHAN ( s  NHANVIEN ( s.MANV  t.MA_NVIEN ))
hay

THANNHAN.MA_NVIEN  NHANVIEN.MANV

• Bảng tầm ảnh hưởng:

Bắt buộc phải tồn tại trước

o Trường hợp đặc biệt

R10

• RB khóa ngoại
Khoa CNTT – Đại học Sài Gòn

27

Thêm

Xóa

NHANVIEN






THANNHAN





Sửa
 (MANV)
 (MA_NVIEN)
Khoa CNTT – Đại học Sài Gòn

28

7


3.2.1. RBTV - Tham chiếu

3.2.2. RBTV - Liên bộ, liên quan hệ

Còn gọi là phụ thuộc tồn tại
Thường có bối cảnh là hai quan hệ

Là ràng buộc xảy ra giữa các bộ trên nhiều quan hệ khác nhau
R

o Nhưng có trường hợp suy biến thành một quan hệ
o Ví dụ (R2)
• Người quản lý trực tiếp phải là một nhân viên trong công ty
• Bối cảnh: NHANVIEN

• Biểu diễn:

A

B

C

D





1

1





5

7






12

3





23

9

A

B

C



2

7



4

7




2

3



2

10

S

t  NHANVIEN ( t.MA_NQL  null 
s  NHANVIEN (t.MA_NQL  s.MANV ))
• Bảng tầm ảnh hưởng
Thêm

R2
NHANVIEN



Xóa


Sửa
 (MANV, MA_NQL)
Khoa CNTT – Đại học Sài Gòn


Khoa CNTT – Đại học Sài Gòn

29

Ví dụ 11

30

3.2.3. RBTV - Liên thuộc tính, liên quan hệ

HOADON(SOHD, MAKH, NGAYHD)
CTHD(SOHD, MAHH, DGIA, SLG)
Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn

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

• Bối cảnh:
R

HOADON, CTHD

• Biểu diễn:
t  HOADON ( s  CTHD ( t.SOHD  s.SOHD ))

A

B


C

D

A

B

C





1

1

S



2

7






5

7



4

7





12

3



2

3





23


9



2

10

• Bảng tầm ảnh hưởng:
R11

Thêm

Xóa

HOADON





CTHD





Sửa
 (SOHD)
 (SOHD)

Khoa CNTT – Đại học Sài Gòn

31

Khoa CNTT – Đại học Sài Gòn

32

8


3.2.4. RBTV - Thuộc tính tổng hợp

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:

• Là thuộc tính có giá trị được tính toán từ các thuộc

NHANVIEN, PHONGBAN

tính khác

• Biểu diễn:
t  PHONGBAN ( s  NHANVIEN (
s.MANV  t.TRPHG 
t.NG_NHANCHUC  s.NGSINH ))

oKhi CSDL có thuộc tính tổng hợp
• RBTV bảo đảm quan hệ giữa thuộc tính tổng hợp và

các thuộc tính nguồn

• Bảng tầm ảnh hưởng:
Thêm

R12

oThuộc tính tổng hợp

Xóa

Sửa

NHANVIEN



+

 (NGSINH, MANV)

PHONGBAN





 (NG_NHANCHUC, TRPHG)
Khoa CNTT – Đại học Sài Gòn


Khoa CNTT – Đại học Sài Gòn

33

Ví dụ 13

3.2.5. RBTV – Chu trình

PHONGBAN(TENPHG, MAPHG, TRPHG, NG_NHANCHUC, SO_NV)

Lược đồ CSDL có thể được biểu diễn bằng đồ thị

Số nhân viên của một phòng ban phải bằng tổng số lượng
nhân viên thuộc phòng đó
• Bối cảnh:

o Đỉnh
• Quan hệ
• Thuộc tính

• Biểu diễn: NHANVIEN, PHONGBAN

Tên thuộc tính

• Đường nối một đỉnh quan hệ với một đỉnh thuộc tính trong
lược đồ CSDL
Tên quan hệ

• Bảng tầm ảnh hưởng:
Thêm


Tên quan hệ

o Cạnh

t  PHONGBAN (
t.SO_NV   { s  NHANVIEN | s.PHG  t.MAPHG} )

R13

Xóa

34

Tên thuộc tính

Chu trình

Sửa

NHANVIEN





 (PHG)

PHONGBAN






 (SO_NV, MAPHG)
Khoa CNTT – Đại học Sài Gòn

o Đồ thị xuất hiện đường đi khép kín ~ Lược đồ CSDL có
chu trình
35

Khoa CNTT – Đại học Sài Gòn

36

9


Ví dụ 14

Ví dụ 14
Nhân viên chỉ được phân công vào các đề án do phòng
ban của mình phụ trách

Nhân viên chỉ được phân công vào các đề án do phòng
ban của mình phụ trách

• Bối cảnh:

NHANVIEN


MANV, MADA

NHANVIEN, DEAN, PHANCONG

• Biểu diễn:

PHG=PHONG

NVDA  NHANVIEN
PHG=PHONG DEAN
t  PHANCONG ( s  NVDA (
t.MA_NVIEN  s.MANV  t.MADA  s.SODA ))

DEAN

• Bảng tầm ảnh hưởng:
MANV=MA_NVIEN

MA_NVIEN, SODA

SODA=MADA

PHANCONG

Khoa CNTT – Đại học Sài Gòn

R14
NHANVIEN


Thêm

Xóa


Sửa



DEAN





 (MADA,PHONG)

PHANCONG





 (MA_NVIEN,SODA)

37

4. Cài đặt

 (MANV,PHG)


Khoa CNTT – Đại học Sài Gòn

38

Khoa CNTT – Đại học Sài Gòn

40

4. Cài đặt
oCác RBTV được cài đặt bởi

1. Assertion

• Primary key

2. Trigger

• Foreign key

3. Transaction (giao tác)

• Check contraint

4. Stored Procedure (thủ tục lưu trữ nội)
• Assertion
• Trigger
• Transaction

Khoa CNTT – Đại học Sài Gòn


39

10


Sửa bài

Sửa bài

•PHONGBAN (MAPHG, TENPHG, TRPHG, NGNC)

•PHONGBAN (MAPHG, TENPHG, TRPHG, NGNC)
Mỗi phòng ban: tên, mã phòng duy nhất. Trưởng phòng là nhân viên của công ty. Ngày
nhận chức phải lớn hơn ngày sinh của nhân viên đó.

Mỗi phòng ban: tên, mã phòng duy nhất. Trưởng phòng là
nhân viên của công ty. Ngày nhận chức phải lớn hơn ngày
sinh của nhân viên đó.

•DIADIEM_PHG (MAPHG, DIADIEM)
Mỗi phòng ban có thể có nhiều địa điểm khác nhau.
•DEAN (MADA, TENDA, DDIEM_DA, PHONG, NGBD_DK, NGKT_DK)
Mỗi đề án: tên, mã duy nhất. Ngày bắt đầu phải nhỏ hơn ngày kết thúc dự kiến của đề án.
•NHANVIEN (MANV, HONV, TENLOT, TENNV, NGSINH, PHAI, DCHI, MA_NQL,
PHONG, LUONG)

t1, t2  PHONGBAN ( t1 t2  t1.TENPHG  t2.TENPHG )

2. Trưởng phòng là NV của công ty:


Phái phải là nam hoặc nữ. Lương của nhân viên phải nhỏ hơn lương của người quản lý
•PHANCONG (MANV, MADA, THOIGIAN)

t PHONGBAN ( t1 t2  t1.TENPHG  t2.TENPHG )

Mỗi nhân viên chỉ có thể tham gia không quá 3 đề án và các đề án phải do phòng của
mình chủ trì. Tổng thời gian tham gia đề án của mỗi NV không quá 40h

3. Ngày nhận chức phải lớn hơn ngày sinh:

•THANNHAN (MANV, MATN, TENTN, PHAI, NGSINH, QUANHE)

t  PHONGBAN ( s  NHANVIEN ( s.MANV t.TRPHG
 t.NGNC  s.NGSINH ))

Mỗi thân nhân phải có quan hệ với nhân viên trong công ty, và chỉ có thể là quan hệ Vo
chong hoặc Con
Khoa CNTT – Đại học Sài Gòn

1. Tên phòng ban duy nhất:

Khoa CNTT – Đại học Sài Gòn

41

Sửa bài

42


Sửa bài

•DEAN (MADA, TENDA, DDIEM_DA, PHONG,
NGBD_DK, NGKT_DK)

•NHANVIEN (MANV, HONV, TENLOT, TENNV,
NGSINH, PHAI, DCHI, MA_NQL, PHONG, LUONG)

Mỗi đề án: tên, mã duy nhất. Ngày bắt đầu phải nhỏ hơn
ngày kết thúc dự kiến của đề án.

Phái phải là nam hoặc nữ. Lương của nhân viên phải nhỏ
hơn lương của người quản lý

4. Tên đề án duy nhất:

6. Phái phải là nam hoặc là nữ:
t  NHANVIEN ( t.PHAI  {‘Nam’, ‘Nu’} )

t1, t2  DEAN ( t1 t2  t1.TENDA  t2.TENDA )

7. Lương NV nhỏ hơn lương của người quản lý:

5. Ngày bắt đầu nhỏ hơn ngày kết thúc:
t DEAN ( t.NGBD_DK < t.NGKT_DK )

t  NHANVIEN ( s  NHANVIEN ( t.MA_NQL = s.MANV t.LUONG < s.LUONG ))

Khoa CNTT – Đại học Sài Gòn


43

Khoa CNTT – Đại học Sài Gòn

44

11


Sửa bài

Sửa bài

•PHANCONG (MANV, MADA, THOIGIAN)
Mỗi nhân viên chỉ có thể tham gia không quá 3 đề án và các đề án
phải do phòng của mình chủ trì. Tổng thời gian tham gia đề án của
mỗi NV không quá 40h
8. NV tham gia không quá 3 đề án:

•THANNHAN (MANV, MATN, TENTN, PHAI,
NGSINH, QUANHE)
Mỗi thân nhân phải có quan hệ với nhân viên trong công
ty, và chỉ có thể là quan hệ Vo chong hoặc Con
11. Thân nhân phải có quan hệ với NV:

t  PHANCONG ( ∑({ s  PHANCONG | s.MANV  t.MANV})  3 )

t  THANNHAN (s  NHANVIEN ( s.MANV  t.MANV))

9. NV tham gia đề án do phòng mình chủ trì:

NVDA  NHANVIEN PHG=PHONG DEAN
t  PHANCONG ( s  NVDA ( t.MANV  s.MANV  t.MADA  s.SODA ))

12. Quan hệ chỉ có thể là Vo chong hoặc Con:
t  THANNHAN ( t.QUANHE  {‘Vochong’, ‘Con’} )

10. Tổng thời gian tham gia đề án không quá 40h
t  PHANCONG (s  PHANCONG ( s.MANV  t.MANV  ∑ s.THOIGIAN <=40 ))
Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

45

Bài tập – Xác định PK, FK, RBTV

46

a. Assertion

•KHOA (MAKHOA, TENKHOA, NAMTHANHLAP)

oLà một biểu thức SQL luôn mang giá trị TRUE tại mọi thời
điểm

Tên khoa không trùng lắp nhau.
•SVIEN (MASV, TEN, NAM, MAKH)

Người sử dụng cần cho biết cái gì phải đúng


Năm học là một trong các năm từ 1 đến 4.
•MHOC ( MAMH,TENMH, TINCHI, MAKH)

oCú pháp

Tên môn học không trùng lắp nhau. Số tín chỉ từ 1 đến 5
•DKIEN (MAMH, MAMH_TRUOC)

CREATE ASSERTION <Tên_assertion> CHECK (<Điều_kiện>)

Mỗi môn học có ít nhất một môn học bắt buộc phải học trước
•HPHAN (MAHP, MAMH, HOCKY, NAM, GV)

DROP ASSERTION <Tên_assertion>

Mỗi học phần chỉ có thể mở tối đa 2 học kì trong cùng 1 năm học
•KQUA (MASV, MAHP, DIEM)
Sinh viên chỉ theo học các khóa học mở môn học thuộc về khoa mà sinh viên đang
theo học. Ứng với một khóa học mà sinh viên theo học, sinh viên có một điểm số
duy nhất (DIEM) từ 0 đến 10 điểm
Khoa CNTT – Đại học Sài Gòn

47

oRất khó cài đặt Assertion hiệu quả, do đó một số HQT
không có Assertion.
Khoa CNTT – Đại học Sài Gòn

48


12


Ví dụ 12

Ví dụ 15

Ngày sinh của trưởng phòng phải nhỏ hơn ngày nhận chức

Lương của trưởng phòng phải lớn hơn 50000

CREATE ASSERTION R12 CHECK

CREATE ASSERTION R15 CHECK

(

(
NOT EXISTS (

NOT EXISTS (

SELECT *

SELECT *

FROM NHANVIEN, PHONGBAN

FROM NHANVIEN, PHONGBAN


WHERE MANV=TRPHG

WHERE MANV=TRPHG

AND NGSINH > NGAY_NHANCHUC )

AND LUONG < 50000 )

)

)

Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

49

50

Ví dụ 16

Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000

Số lượng nhân viên của mỗi phòng ban không quá 20
người

ALTER TABLE PHONGBAN
(


Check Constraint

CREATE ASSERTION R16 CHECK

TENPB VARCHAR(20) UNIQUE,

(

MAPHG INT NOT NULL,

20 >= ALL ( SELECT COUNT(MANV)

TRPHG CHAR(9),

FROM NHANVIEN

NG_NHANCHUC DATETIME,

GROUP BY PHG )

CONSTRAINT CHK_PB_LUONGTRPHG CHECK (

)

TRPHG NOT IN (SELECT MANV FROM NHANVIEN
WHERE LUONG < 50000 ))
)
Khoa CNTT – Đại học Sài Gòn


51

Khoa CNTT – Đại học Sài Gòn

52

13


Ví dụ 16
Số lượng nhân viên của mỗi phòng ban không quá 20
người
Check Constraint

ALTER TABLE NHANVIEN ADD
CONSTRAINT CHK_NV_SLNVPB CHECK
(

ASSERTION HAY CHECK CONSTRAINT ?

20 >= ALL ( SELECT COUNT(MANV) FROM NHANVIEN
GROUP BY PHG )
)

Khoa CNTT – Đại học Sài Gòn

54

53


b. Trigger

b. 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 đó
thêm
xóa
sửa

trước
sau

Cú pháp
CREATE TRIGGER <Tên_trigger>
AFTER|BEFORE

INSERT|UPDATE|DELETE

ON <Tên_bảng>

REFERENCING

Biến
cố

NEW ROW|TABLE AS <Tên_1>
OLD

ROW|TABLE AS <Tên_2>


FOR EACH ROW | FOR EACH STATEMENT

giá trị
mới giá
trị cũ

Điều kiện
Không
thỏa

Thông báo lỗi

Thỏa

WHEN (<Điều kiện>)

Tập hợp các lệnh

<Tập_lệnh_SQL>

row-level
statementlevel
Khoa CNTT – Đại học Sài Gòn

DROP TRIGGER <Tên_trigger>

55

Khoa CNTT – Đại học Sài Gòn


56

14


Trigger – FOR

Ví dụ 15
Lương của trưởng phòng phải lớn hơn 50000

CREATE TRIGGER TênTrigger ON Tên Bảng

CREATE TRIGGER TR_PB_UPD

FOR Hành động cập nhật

AFTER UPDATE OF TRPHG ON PHONGBAN

AS

REFERENCING

Khai báo biến …

NEW ROW AS NewTuple
FOR EACH ROW

Nhận dữ liệu từ bảng trung gian …


WHEN (50000 >= (SELECT LUONG

Các kiểm tra ….

FROM NHANVIEN
WHERE MANV=NewTuple.TRPHG)

GO

)
Thông báo lỗi cho người dùng

Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

57

Ví dụ 15 – cách 1

Ví dụ 15 – cách 2

Lương của trưởng phòng phải lớn hơn 50000

Lương của trưởng phòng phải lớn hơn 50000

CREATE TRIGGER TR_PB_UPD

CREATE TRIGGER TR_PB_UPD


AFTER UPDATE OF TRPHG ON PHONGBAN

AFTER UPDATE OF LUONG ON NHANVIEN

REFERENCING

REFERENCING

58

NEW ROW AS NewTuple

NEW ROW AS NewTuple

OLD ROW AS OldTuple

OLD ROW AS OldTuple

FOR EACH ROW

FOR EACH ROW

WHEN (NewTuple.LUONG <= 50000 AND NewTuple.MANV IN (

WHEN (50000 >= (SELECT LUONG

SELECT TRPHG FROM PHONGBAN ))

FROM NHANVIEN
WHERE MANV=NewTuple.TRPHG))


UPDATE NHANVIEN
SET LUONG=OldTuple.LUONG

UPDATE PHONGBAN

WHERE LUONG=NewTuple.LUONG

SET TRPHG=OldTuple.TRPHG
WHERE TRPHG=NewTuple.TRPHG
Khoa CNTT – Đại học Sài Gòn

59

Khoa CNTT – Đại học Sài Gòn

60

15


c. Transaction

c. Transaction

Là tập các lệnh thực hiện một xử lý nào đó trong một ứng
dụng CSDL, sao cho

oGiao tác phải đảm bảo


• Hoặc là tất cả các lệnh đều được thực hiện thành công

• Tính nguyên tố (atomicity)

• Hoặc là không có lệnh nào được thực hiện

• Tính nhất quán của CSDL (consistency)
Các RBTV không bị vi phạm

Ví dụ: xử lý chuyển tiền trong ngân hàng

 Trong khi thực hiện giao tác

Giao tác Chuyển_tiền

 Trước và sau khi thực hiện giao tác

Giảm tiền trong tài khoản người gửi
Tăng tiền trong tài khoản người nhận
Nếu tất cả đều thành công thì hoàn tất giao tác
Ngược lại quay lui giao tác
Cuối giao tác
Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

61

Ví dụ 7


62

Ví dụ 7

Mỗi trận đấu là cuộc thi đấu của đúng 2 đội

Giao tác Xóa_trận_đấu(ngay, gio)
Với mọi sTHIDAU (s.NGAYngay  s.GIOgio)

Giao tác Thêm_trận_đấu(t, s)

Xóa s khỏi THIDAU

Thêm t vào THIDAU
Thêm s vào THIDAU

Cuối với mọi

Nếu có một thao tác thất bại thì

Nếu có một thao tác thất bại thì

Quay lui giao tác

Quay lui giao tác
Ngược lại

Ngược lại

Hoàn tất giao tác


Hoàn tất giao tác

Cuối nếu

Cuối nếu

Cuối giao tác

Cuối giao tác

Khoa CNTT – Đại học Sài Gòn

63

Khoa CNTT – Đại học Sài Gòn

64

16


Ví dụ 11

Ví dụ 11

Mỗi hóa đơn phải có ít nhất một chi tiết hóa đơn

Giao tác Thêm_hóa_đơn


Giao tác Thêm_hóa_đơn

Thêm HOADON

Thêm HOADON

Thêm chi tiết thứ 1 vào CTHD

Thêm chi tiết thứ 1 vào CTHD

Thêm chi tiết thứ 2 vào CTHD

Thêm chi tiết thứ 2 vào CTHD





Nếu có một thao tác thêm thất bại thì

Nếu có một thao tác thêm thất bại thì

Quay lui giao tác

Quay lui giao tác

Ngược lại

Ngược lại


Hoàn tất giao tác

Hoàn tất giao tác

Cuối nếu

Cuối nếu

Cuối giao tác

Cuối giao tác
Khoa CNTT – Đại học Sài Gòn

Khoa CNTT – Đại học Sài Gòn

65

d. Stored Procedure

Ví dụ 7

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

Mỗi trận đấu là cuộc thi đấu của đúng 2 đội

66

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

– Được lưu trữ trong lược đồ CSDL
– Được sử dụng trong các câu lệnh SQL

Cú pháp

Thêm s vào THIDAU
If @@error<>0 rollback tran
commit tran

CREATE PROCEDURE <Tên_thủ_tục> <DS_tham_số>
AS
GO

Khai báo biến cục bộ

EXEC Thêm_trận_đấu x, y

Thân chương trình
GO
EXEC <Tên_thủ_tục> <DS_ tham_số>
Khoa CNTT – Đại học Sài Gòn

67

Khoa CNTT – Đại học Sài Gòn


68

17


Nhận xét
DBMS sẽ kiểm tra RBTV
• Sau khi một thao tác cập nhật diễn ra trên CSDL
• Cuối mỗi giao tác

Thank you!

Nên cài đặt RBTV ở đâu ???
• DBMS
• Application
 Trigger quá nhiều  hệ thống chậm chạm
 Stored Procedure  hiệu quả cao
Khoa CNTT – Đại học Sài Gòn

69

18



×