Tải bản đầy đủ (.ppt) (27 trang)

Bai giang mon CSDL 5 Rang buoc toan ven

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 (498.91 KB, 27 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1></div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2></div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3></div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4></div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5></div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

 <b>Đặt vấn đề</b>: Trong một cơ sở dữ liệu, luôn


luôn tồn tại rất nhiều mối liên hệ, sự ràng
buộc qua lại giữa các thuộc tính, giữa các
bộ với nhau, … Các mối liên hệ, ràng buộc
này là những điều kiện bất biến mà tất cả
các bộ của những quan hệ có liên quan
trong cơ sở dữ liệu đều phải thoả mãn ở bất
kỳ thời điểm nào. Những điều kiện bất biến


đó được gọi là <b>ràng buộc toàn vẹn</b>


(Integrity Constraint).


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

 Trong thực tế, ràng buộc toàn vẹn thường


là các qui tắc, qui phạm được áp đặt lên
trên các đối tượng của thế giới thực.


 Ví dụ: Xét quan hệ nhân viên với 2 thể


hiện sau:


 Qui định: Giới tính của nhân viên chỉ thuộc


1 trong 2 giá trị “Nam” hay “Nữ”  là


một RBTV


II. Các đặc trưng của RBTV
III. Phân loại RBTV



MANV TENNV PHAI DIACHI


001 Nguyễn Minh Nam Dak Lak


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

 RBTV là các quy định, điều kiện từ thực tế


được cài đặt để đảm bảo dữ liệu lưu trữ
trong CSDL phải thõa mãn những quy định
này.


 Các điều kiện này phải luôn đúng sau


những thao tác (thêm, xóa, sữa) làm thay
đổi trạng thái CSDL


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

 Mục đích của RBTV:


▪ <sub>Nhằm đảm bảo sự kết dính (coherence) </sub>


giữa các bộ phận cấu thành nên CSDL hay
nói cách khác nhằm bảo đảm tính nhất
quán của CSDL và biễu diễn đúng ngữ
nghĩa thực tế của CSDL (tính đứng đắn)


▪ Việc kiểm tra RBTV có thể tiến hành


ngay khi thực hiện một thao tác cập nhật
CSDL (thêm, xóa, sửa) hoặc có thể kiểm
tra định kỳ, đột xuất. (Tiến hành độc lập


với thao tác cập nhật dữ liệu)


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

 Tầm quan trọng của RBRV:


 Giúp CSDL thể hiện trung thực thế giới


thực mà CSDL đang mô tả.


 <sub>Ngăn chặn nhưng thao tác gây sai trên </sub>


CSDL.


 Giúp CSDL luôn đúng đắn.


 Ví dụ: Ngày sinh của sinh viên phải nhỏ


hơn ngày nhập học là một RBTV


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11></div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

1. Nội dung của RBTV


 Là điều kiện phải thỏa


 Được phát biểu bằng ngôn ngữ tự nhiên hoặc 1


ngơn ngữ hình thức (phép tính quan hệ, đại số quan
hệ, mã giả,…)


 <sub>Ngôn ngữ tự nhiên: dễ hiểu nhưng khơng chặt chẽ, </sub>


logic.



 <sub>Ngơn ngữ hình thức: chặt chẽ, cơ động nhưng đơi lúc </sub>


khó hiểu.


 Ví dụ : Một RBTV được phát biểu bằng:


 <sub>Ngôn ngữ tự nhiên: giới tính nhân viên phải thuộc 1 </sub>


trong 2 phái « nam » và «nữ »
II. Các đặc trưng của RBTV


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

2. Bối cảnh của 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. Bối
cảnh của RBTV có thể là một hoặc nhiều
quan hệ.


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

3. Tầm ảnh hưởng của RBTV


 Nhằm xác định thời điểm cần phải tiến


hành kiểm tra các RBTV, cần lập bảng tầm
ảnh hưởng cho mỗi RBTV.


 Tầm ảnh hưởng của RBTV được biểu diễn



bằng 1 bảng 2 chiều gọi là bảng tầm ảnh
hưởng.


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

 <b>Bảng tầm ảnh hưởng của RBTV có dạng </b>
<b>như sau:</b>


 Kí hiệu:


 + : có thể gây ra vi phạm RBTV
 - : không thể gây ra vi phạm RBTV


 +(A) : có thể gây ra vi phạm RBTV khi thao tác trên


thuộc tính A.


 -(*) : Khơng vi phạm RBTV do thao tác không thực


hiện được.


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

 Ví dụ: xét quan hệ nhân viên với thể hiện


sau với quy định: Giới tính nhân viên chỉ
thuộc 1 trong 2 giá trị « Nam » hoặc « Nữ »


 Nếu thêm 1 dòng <sub></sub> phải thực hiện kiểm tra RBTV
 Nếu xóa 1 dịng <sub></sub> khơng cần thực hiện kiểm tra


RBTV


 Nếu sửa thuộc tính « PHAI » của 1 dòng<sub></sub> thực



II. Các đặc trưng của RBTV
III. Phân loại RBTV


MANV TENNV PHAI DIACHI


001 Nguyễn Minh Nam Dak Lak


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

 <b>RBTV có miền giá trị</b>: quy định tập giá trị


mà một thuộc tính có thể nhận.


 <b>Ví dụ 1: </b>


 Dom(PHAI)={“Nam”, “Nữ”}


 Dom(DIEM)= {0, 0.5, 1,…10}


II. Các đặc trưng của RBTV
III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

 <b>Ví dụ 2: </b>Xét lược đồ quan hệ:


NHANVIEN(MANV, TENNV, PHAI,
DCHI)


 Xét RBTV:



 <b>Nội dung</b>:


 <sub>PHAI của NHANVIEN chỉ có thể là “nam” hoặc </sub>


“nữ”.


 ∀<sub>n NHANVIEN: n.PHAI IN {“Nam”,”Nữ”}</sub>∈


 <b>Bối cảnh</b>: Quan hệ nhân viên
 <b>Tầm ảnh hưởng</b>:


II. Các đặc trưng của RBTV
III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

 <b>RBTV liên bộ</b>:


 <sub>Là điều kiện ràng buộc giữa các bộ trên cùng </sub>


một quan hệ


 Các RBTV liên bộ thường là các ràng buộc


về khóa nội (ràng buộc về khóa chính –
Primary key).


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


III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

 Ví dụ (liên bộ):


Xét RBTV


 Nội dung:


 <sub>Hai bộ khác nhau trong PHONGBAN sẽ khác </sub>


nhau tại MAPHG


 ∀ <sub>p1, p2 PHONGBAN: p1 ≠ p2</sub>∈


⇒ p1[MAPHG] ≠ p2[MAPHG]


 Bối cảnh: quan hệ PHONGBAN


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


II. Các đặc trưng của RBTV
III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

 <b>RBTV liên thuộc tính: </b>



 <sub>Là ràng buộc giữa các thuộc tính trong cùng một </sub>


quan hệ


II. Các đặc trưng của RBTV
III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

 Ví dụ (liên thuộc tính):


 Xét lược đồ quan hệ: DEAN (MADA,


TENDA, DAY_BD, DAY_KT)


 Xét RBTV:


 Nội dung: với mỗi đề án ngày bắt đầu dự kiến


phải nhỏ hơn ngày kết thúc


▪ ∀d DEAN, d[DAY_BEGIN] <= d[DAY_END]∈


 <sub>Bối cảnh: quan hệ DEAN</sub>
 <sub>Bảng tầm ảnh hưởng:</sub>


II. Các đặc trưng của RBTV
III. Phân loại RBTV



<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


<b>2.</b> <b>RBTV có bối cảnh trên </b>
<b>nhiều quan hệ </b>


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

 <b>RBTV có giá trị thuộc tính thay đổi theo </b>


<b>thời gian:</b> RBTV liên bộ, liên quan hệ: là
điều kiện giữa các bộ trên nhiều quan hệ
khác nhau.


II. Các đặc trưng của RBTV
III. Phân loại RBTV


<b>1.</b> <b>RBTV có bối cảnh trên </b>
<b>một quan hệ</b>


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24></div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25></div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26></div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27></div>

<!--links-->

×