1. Trang chủ
  2. » Công Nghệ Thông Tin

Cơ Sở Dữ Liệu ĐH Cần Thơ Chương 5 doc

36 407 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 415,93 KB

Nội dung

Khái Niệm Ràng Buộc Toàn Vẹn „ Trong một CSDL, luôn tồn tại rất nhiều mối quan hệ ràng buộc giữa các thuộc tính, các bộ với nhau,.... -Phân Loại các RBTV„ Các RBTV có thể được phân loại

Trang 1

Chương 5 Ràng buộc toàn vẹn

GV: Trần Ngân Bình tnbinh@cit.ctu.edu.vn

Trang 2

)Bao đóng của tập thuộc tính

)Bao đóng của tập phụ thuộc hàm

)Tập phụ thuộc hàm tối tiểu

)Tập phụ thuộc hàm rút gọn tự nhiên

Trang 3

Khái Niệm Ràng Buộc Toàn Vẹn

„ Trong một CSDL, luôn tồn tại rất nhiều mối quan hệ ràng buộc giữa các

thuộc tính, các bộ với nhau, Các mối quan hệ này là các điều kiện bất biến

mà tất cả các bộ của các quan hệ trong CSDL phải thỏa mãn ở bất cứ thời điểm nào Các điều kiện này được gọi là ràng buộc toàn vẹn (RBTV).

„ Vd: Trong CSDL “QLSV” như sau:

1 SV (MASV, HOTEN_SV, NU, SO_CMND, NGSINH, ÐCHI_SV, TINH, MAKHOA)

2 KHOA (MAKHOA, TENKHOA)

3 MONHOC (MAMH, TENMH, SOTIET)

4 KETQUA (MASV, MAMH, HK, NK, LANTHI, ÐIEM)

) Có các ràng buộc:

 C1 : Mỗi sinh viên có một mã số riêng biệt không trùng với bất cứ sinh viên nào khác.

 C2 : Mỗi sinh viên phải đăng ký vào một khoa của trường.

 C3 : Mỗi sinh viên được thi tối đa hai lần cho 1 môn trong 1 HK.

Trang 4

Điều kiện & bối cảnh RBTV

1. Ðiều kiện của RBTV: được biểu diễn bằng ngôn ngữ tự nhiên,

ngôn ngữ giả, đại số quan hệ, hay phụ thuộc hàm,

Vd: Các điều kiện trên được biểu diễn như sau:

 C1: ∀ u ∈SV, ∀ v ∈ SV: u<>v Ù u.MASV <> v.MASV

 C2 : SV[MAKHOA] ⊆ KHOA[MAKHOA]

 C3 : ∀ sv ∈ KETQUA Card({k ∈ KETQUA |

∧ k.MASV = sv.MASV ∧ k MAMH = sv.MAMH

∧ k.HK= sv.HK ∧ k.NK = sv.NK }) <= 2

2. Bối cảnh của một RBTV: Là những quan hệ mà RBTV đó có hiệu

lực; hay nói cách khác, đó là những quan hệ cần phải sử dụng để kiểm tra RBTV đó.

Vd: Bối cảnh của C1 là quan hệ SV;

Bối cảnh của C2 là quan hệ SV và KHOA;

Bối cảnh của C3 là quan hệ KETQUA

Trang 5

Bảng Tầm Ảnh Hưởng

3. Bảng tầm ảnh hưởng của RBTV: Khi thực hiện một thao tác cập

nhật trên bối cảnh của một RBTV C có thể dẫn đến C bị vi phạm Bảng tầm ảnh hưởng cho một RBTV xác định thời điểm cần kiểm tra RBTV đó.

Bảng tầm ảnh hưởng của một RBTV Cicó dạng như sau:

Dấu + : cần phải kiểm tra Ci.

Dấu - : không cần kiểm tra Ci.

Dấu * : Không được sửa giá trị

Trang 6

„ Dựa vào bảng tầm ảnh hưởng tổng hợp này, chúng ta sẽ dễdàng xác định cần phải tiến hành kiểm tra các RBTV nào khingười sử dụng thực hiện một thao tác cập nhật.

Trang 7

-Phân Loại các RBTV

„ Các RBTV có thể được phân loại theo ý nghĩa như đã giới thiệu trong chương 2:

) Toàn vẹn thực thể

) Toàn vẹn tham chiếu

) Toàn vẹn miền giá trị

) Toàn vẹn về logic (hay RB khác)

„ Tuy nhiên, ta cũng có thể phân chia các RBTV theo phạm vi áp dụng của nó:

) RBTV trên một quan hệ

) RBTV liên quan hệ

Trang 8

Phân Loại các RBTV (1)

„ Loại RBTV 1: là những RBTV có bối cảnh là một quan hệ:

1. RBTV về miền trị: liên quan đến miền giá trị của một thuộc tính

CT_HD ( SO_HD, MAHH, GIA_BAN, SL)

) Trong quan hệ HOADON có ràng buộc: “hàng hóa chỉ được xuất

sau khi lập hóa đơn” :

Trang 9

Phân Loại các RBTV (2)

3. RBTV liên bộ: là sự ràng buộc giữa các bộ bên trong một quan

hệ, trong đó phổ biến là RBTV về khóa nội

Vd:- MASV là duy nhất trong QH SV (MASV là khóa của QH SV).

- Mỗi sinh viên được thi tối đa 2 lần cho một môn.

) RBTV về khóa nội là một RBTV liên bộ rất phổ biến, chúng

thường được biểu diễn bằng các phụ thuộc hàm, và thường được các hệ quản trị CSDL hổ trợ tự động kiểm tra.

„ Loại RBTV 2: Là các RBTV có bối cảnh gồm nhiều quan

hệ:

1. RBTV về phụ thuộc tồn tại (RBTV về khóa ngoài):

) Vd: Nếu ∃ kq ∈ KETQUA, kq.MASV =’01’

Thì phải ∃ s ∈ SV: sv.MASV =’01’

Trang 10

Phân Loại các RBTV (2)

2. RBTV liên thuộc tính, liên quan hệ: là mối liên hệ giữa các

thuộc tính của nhiều quan hệ khác nhau

 Vd: Giữa hai quan hệ DATHANG và HOADON của CSDL

“QLBH”, có ràng buộc như sau:

Nếu hd HOADON, dh DATHANG,

hd.SO_DDH = dh.SO_DDH thì dh.NGAY_DH <= hd NGAY_HD

3. RBTV liên bộ, liên quan hệ: RBTV loại này có tác dụng trên

từng nhóm các bộ của nhiều quan hệ khác nhau (thường là hai quan hệ).

) Vd: Giữa hai quan hệ HOADON và CT_HD, Có ràng buộc: “Mỗi

hóa đơn phải có ít nhất một mặt hàng”

Nếu ∃ hd ∈ HOADON Thì phải ∃ cthd ∈ CT_HD: cthd.SO_HD = hd.SO_HD

Trang 11

Phân Loại các RBTV (4)

4. RBTV về thuộc tính tổng hợp: RBTV này được xác định trong

trường hợp một thuộc tính A của một quan hệ R được tính toán từ các thuộc tính của các quan hệ khác.

 Vd 1: Trị giá của hóa đơn bằng tổng các GIABAN * SL

của các mặt hàng trong hóa đơn đó:

hd.TRIGIA = Σ ( cthd.GIABAN * cthd SL)

 Vd 2: Số tiền công nợ của một khách hàng A sẽ bằng

hiệu số giữa tổng giá trị của các hóa đơn bán cho khách hàng A và tổng số tiền thu của khách hàng đó:

∀ kh ∈ KHACH: kh.CONGNO = Σ hd.TRIGIA - Σ pt.SOTIEN

với Hkh = (HOADON * DATHANG) (MAKH = kh.MAKH)

Pkh = PHIEUTHU (MAKH = kh.MAKH)

cthd.SO_HD = hd.SO_HD

hd ∈ Hkh pt ∈ Pkh

Trang 12

Phân Loại các RBTV (5)

5. RBTV do có chu trình trong đồ thị biểu diễn của lược đồ

CSDL: Một lược đồ CSDL có thể được biểu diễn bằng một đồ thị

vô hướng Trong đồ thị này, ta có 2 loại nút: nút thuộc tính và nút

quan hệ Một cung vô hướng trong đồ thị nối 1 nút thuộc tính A

với một nút quan hệ R khi A thuộc R.

Vd: Một phần đồ thị biểu diễn cho CSDL “QLBH” có dạng như

MAHH

Trang 13

Phân Loại các RBTV (6)

„ Trong hình vẽ trên, chúng ta nhận thấy đồ thị biểu diễn có chứamột chu trình gồm 3 quan hệ DATHANG, HOADON, CT_HD Nhưvậy, CSDL sẽ phải có một RBTV thuộc 1 trong 3 trường hợp sau:

) Một hóa đơn thực hiện cho một đơn đặt hàng chỉ giao những mặt hàng mà khách yêu cầu và phải gồm đầy đủ tất cả những mặt hàng

có trong đơn đặt hàng đó.

) Một hóa đơn thực hiện cho một đơn dặt hàng chỉ giao những mặt hàng mà khách yêu cầu và có thể không giao đầy đủ tất cả các

những mặt hàng có trong đơn đặt hàng đó.

) Một hóa đơn thực hiện cho một đơn đặt hàng có thể gồm tùy ý các

mặt hàng dù có hay không trong đơn đặt hàng của khách.

„ RBTV này thể hiện sự tương giao giữa 2 tập hợp A và B với:

Trang 14

Cài Đặt RBTV

„ Hầu hết các HQTCSDL đều cung cấp công cụ để cài đặt RBTV

trên các bảng dữ liệu

) Toàn vẹn thực thể: PRIMARY KEY, UNIQUE KEY

) Toàn vẹn tham chiếu: FOREIGN KEY

) Toàn vẹn miền giá trị: CHECK, RULE, DEFAULT VALUE, …

) Toàn vẹn về logic (hay RB khác): TRIGGER

„ Việc cài đặt các RBTV có thể thực hiện:

) Trong khi tạo bảng: CREATE TABLE

) Sau khi tạo bảng: ALTER TABLE

Trang 15

CREATE TABLE – Ràng Buộc Trên Cột

„ CREATE TABLE <tên_bảng> (

{ <tên_cột> {<kiểu> | <tên_miền_trị>}

[ NOT NULL ] [ PRIMARY KEY | UNIQUE ][ DEFAULT <trị_mặc_định>] [ CHECK (<điều_kiện>)]

[ REFERENCES <tên bảng cha>

[(<ds tên các cột của khóa chính trong bảng cha>)][MATCH { FULL| PARTIAL | SIMPLE } ]

[ON UPDATE <hành_động>]

[ON DELETE <hành_động>] ][, ] }

)

Hành_động: CASCADE | SET NULL | SET DEFAULT | RESTRICT |

NO ACTION

Trang 16

Ví dụ Tạo Bảng có RB Trên Cột

„ CREATE TABLE NhaXB (

CHECK (MaNXB IN ('1389', '0736', '0877', '1622', '1756')

OR MaNXB LIKE '99[0-9][0-9]'),

QGia varchar(30) NULL DEFAULT(‘VietNam') )

„ CREATE TABLE NhanVien(

MaNV char(9) PRIMARY KEY

CHECK (MaNV LIKE '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]‘) ,

REFERENCES NhaXB(MaNXB),

)

Trang 17

CREATE TABLE – Ràng Buộc Trên Bảng

„ CREATE TABLE <tên_bảng> (

{ <tên_cột> {<kiểu> | <tên_miền_trị>} [, ] }

[, PRIMARY KEY (<danh_sách_cột>) ]

{ [, UNIQUE (<danh_sách_cột>),] [, ] }

{ [, FOREIGN KEY (<ds_cột_khóa_ngoại>)

REFERENCES <tên_bảng_cha> [(khóa_ứng_viên)], [MATCH { FULL| PARTIAL | SIMPLE } ]

[ON UPDATE <hành_động>]

[ON DELETE <hành_động>] ] [, ] }

{ [, CHECK (<điều_kiện>) [, ] }

)

Hành_động: CASCADE | SET NULL | SET DEFAULT | RESTRICT |

NO ACTION

Trang 18

Ví dụ Tạo Bảng có RB Trên Bảng

„ CREATE TABLE Sach_TacGia (

MaTG char(11) REFERENCES TacGia(MaTG) NOT NULL,

MaSach char(6) NOT NULL,

ThuTuTG smallint NOT NULL,

PRIMARY KEY (MaTG, MaSach),

UNIQUE (MaSach, ThuTuTG), //Khóa ứng viên

FOREIGN KEY (MaSach)

REFERENCES Sach(MaSach) ON DELETE RESTRICT

)

Trang 19

Thiết Lập Toàn Vẹn Sau Khi Tạo Bảng

„ ALTER TABLE <tên_bảng>

[ ADD [COLUMN] <tên_cột> {<kiểu | <miền_trị>}

[NOT NULL] [ PRIMARY KEY | UNIQUE]

[DEFAULT <mặc_định>] [CHECK (<điều_kiện>) ] ]

| [DROP [COLUMN] <tên_cột> [RESTRICT | CASCADE] ]

| [ALTER [COLUMN] <tên_cột>

{SET DEFAULT <mặc_định> | DROP DEFAULT} ]

| [ADD [CONSTRAINT [tên_RB] ] <định_nghĩa_RB>]

| [DROP CONSTRAINT tên_RB [ RESTRICT | CASCADE] ]

Trang 20

Ví Dụ Thêm RB Trên Bảng

„ ALTER TABLE NhanVien

ADD CONSTRAINT FK_MaSep

FOREIGN KEY (MaSep) REFERENCES NhanVien(MaNV)

„ ALTER TABLE NhanVien

ALTER COLUMN NgayVao DROP DEFAULT

„ ALTER TABLE NhanVien

DROP CONSTRAINT FK_MaSep

„ ALTER TABLE NhanVien

ADD COLUMN Mobile char(15) UNIQUE

Trang 21

Kiểm Tra Ràng Buộc Bằng Trigger

„ Lệnh Tạo Trigger của SQL Server 2000

CREATE TRIGGER tên_trigger

ON { table | view }

[ WITH ENCRYPTION ]

{

{ { FOR | AFTER | INSTEAD OF }

{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE] }

AS

<Câu lệnh SQL> [ n ]

}

}

Trang 22

Ví Dụ Trigger

„ Khi một nhân viên bị xóa khỏi bảng NhanVien các thông tin của

NV đó được ghi vào một bảng khác có cùng lược đồ quan hệ:

Cựu_NV (viết trong SQL Server 2000)

CREATE TRIGGER Xoa_NV

ON NhanVien

AFTER DELETE

AS

INSERT INTO Cuu_NV

SELECT * FROM Deleted

GO

Đây là bảng hệ thống dùng để lưu những dòng vừa bị xóa hoặc

dòng cũ vừa bị cập nhật

Trang 24

Phụ thuộc hàm

„ Phụ thuộc hàm: là một công cụ để biểu diễn một số RBTV.

„ Ðịnh nghĩa: Cho tập thuộc tính U; X,Y là tập con của U

Ta gọi X → Y là PTH nếu với mỗi cặp bộ u,v thuộc RBTV,

ta có: u.X = v.X thì u.Y = v.Y

„ Ví dụ:

) Trong quan hệ SV( MASV, HOTEN,NGSINH, )

Có ràng buộc: không có hai sinh viên trùng MASV

MASV → HOTEN

) Trong quan hệ NCC(TEN_NCC, TEN_HG, GIA, DCHI_NCC)

Có ràng buộc: với mỗi cặp giá trị (TEN_NCC, TEN_HG) ta có một GIA duy nhất

TEN_NCC, TEN_HG → GIA Hay, mỗi NCC chỉ có một địa chỉ duy nhất,

TEN_NCC → DCHI_NCC

Trang 25

„ F6: Mỏ rộng vế trái, thu hẹp vế phải:

Nếu X → Y thì mọi Z, W thuộc U, ta có: XZ → Y \ W

Trang 26

Bao đóng của tập thuộc tính

„ Định nghĩa Lược Ðồ Quan Hệ:

F hay X+

X+ = { A ⊆ U | X → A}

„ Bổ đề: Cho các tập thuộc tính X,Y,Z ⊆ U Khi đó,

X → YZ Ù X → Y ∧ X → Z

Trang 27

Bao đóng của tập thuộc tính

Trang 28

Thuật Toán Tìm Bao Đóng của tập thuộc tính

Return Xm

Ví dụ: Cho tập thuộc tính: U ={A,B,C,D,E,F,G,H,I,J}

Tập các phụ thuộc hàm F = { AB → DPG, BD → EH,

C → ADE, DH→ BCE,

Trang 29

Thuật Toán Tìm Bao Đóng của tập thuộc tính

„ Input: tập thuộc tính U, tập các PTH F và một tập thuộc tính X ⊆U

„ Output: X+ thỏa F

„ Phương pháp:

Xm = X; Fc=F Repeat

Until (Xm=Xc) Return Xm

Ví dụ: Cho tập thuộc tính: U ={A,B,C,D,E,F,G,H,I,J}

Trang 30

Bài Tập Tìm Bao Đóng Tập Thuộc Tính

„ Cho tập phụ thuộc hàm F:

F = { AB → C D → EG

C → A BE → C

BC → D CG → BDACD → B CE → AG }Hãy tìm (BD)+, (CD)+, (ABE)+

Trang 31

Bao đóng của tập các PTH (1)

„ Định nghĩa: Cho tập PTH F trên tập thuộc tính U

Bao đóng của F, kí hiệu F+ là tập nhỏ nhất các phụ

thuộc hàm trên U thoả 2 tính chất sau:

) F+ ⊇ F

) Khi áp dụng các tính chất F1, F2 , F3 ( của phụ thuộc hàm)

cho F+thì ta không thu được PTH mới nào ngoài F+

„ Tính chất của bao đóng của tập PTH :

Trang 32

Bao đóng của tập các PTH (2)

„ Trên lí thuyết, ta hoàn toàn có thế xác định được 1 thủ tục tính baođóng F+ Nhưng dù tập thuộc tính U và tập PTH F là hữu hạn, thìbài toán tìm F+ vẫn khó thực hiện vì tập U và F trong thực tế rất

Hãy xác định f : AE → DGC có thể suy dẫn từ f hay không ?

Hay f : AE → DGC ∈ F+ hay không ?

Ta có: (AE) + = AEBCDG DGC

Vậy, kết luận: AE DGC F +

Trang 33

Tập phụ thuộc hàm tối tiểu (1)

„ Hai tập phụ thuộc hàm tương đương: Hai tập phụ thuộc hàm

F và G được gọi là tương đương nếu F+ = G+ Khi đó, ta nói F

phủ G hay G phủ F Kí hiệu: F ≡ G

„ Định nghĩa tập phụ thuộc hàm tối tiểu: Tập F được gọi là tập

phụ thuộc hàm tối tiểu nếu:

) Vế phải của các phụ thuộc hàm trong F chỉ chứa một thuộc tính.

) Không tồn tại phụ thuộc hàm thừa Một phụ thuộc hàm là thừa khi:

F - {X→A} tương đương với F

Ù (F - {X→ A})+ chứa X→A

Ù A ∈ X+F - {X→A}

) Không tồn tại các thuộc tính thừa ở vế trái Một thuộc tính ở vế trái

là thừa khi:

Với Z ⊂ X, (F - {X→ A}) U {Z→A} tương đương với F

Ù Với Z ⊂ X, {Z→A} ∈ F + hay A ∈ Z +

thì tập thuộc tính (X - Z) là thừa.

Trang 34

Tập phụ thuộc hàm tối tiểu (2)

„ Cách chuyển tập pth F về tập pth tối tiểu:

)Bước 1: Đưa các PTH về dạng chỉ có 1 thuộc tính ở vế phải

=> F1

)Bước 2: Loại bỏ các pth thừa trong F1 => F2

)Bước 3: Loại bỏ các thuộc tính thừa ở vế trái các pth của F2

„ Ví dụ: F= { AB → C ACD → B

C → A D → EG

CG → BD BC → D

BE → C CE →AG}

Tìm phủ tối tiểu của F

„ Ðịnh lý: Mọi tập phụ thuộc hàm F đều có một tập phụ thuộc hàm

tối tiểu G tương đương

Trang 36

Bài Tập

1. Tìm phủ tối tiểu của F = { AB → CD, BC → DEF, D → CEF,

ADE→ G, ABC → G, ABD → G }

2. Cho U = ABCDEGHIJ Hãy tìm tập rút gọn tự nhiên của F

F = { AG → HB, AD → BC, AG → BC,

C→ DB, BCE → G, C → CDA, IB → DJ }

Ngày đăng: 10/08/2014, 17:22

HÌNH ẢNH LIÊN QUAN

3. Bảng tầm ảnh hưởng của RBTV: Khi thực hiện một thao tác cập - Cơ Sở Dữ Liệu ĐH Cần Thơ Chương 5 doc
3. Bảng tầm ảnh hưởng của RBTV: Khi thực hiện một thao tác cập (Trang 5)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w