Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active - Đỗ Thanh Nghị

Định nghĩa

 Toàn vẹn ngữ nghĩa

 dữ liệu phải hợp lệ và nhất quán

 sự hợp lệ và nhất quán được định nghĩa với sự trợ giúp

ràng buộc toàn vẹn

 Ràng buộc toàn vẹn

 luật được định nghĩa bởi người thiết kế CSDL

 cho phép định nghĩa tính hợp lệ của dữ liệu

 phải được hệ thống kiếm soát

 CSDL phải luôn thỏa tập các ràng buộc

pdf 50 trang yennguyen 2660
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active - Đỗ Thanh Nghị", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active - Đỗ Thanh Nghị

Bài giảng Cơ sở dữ liệu nâng cao - Chương 2: Toàn vẹn và cơ sở dữ liệu active - Đỗ Thanh Nghị
Cơ sở dữ liệu nâng cao
Toàn vẹn và cơ sở dữ liệu active
Đỗ Thanh Nghị 
1
dtnghi@cit.ctu.edu.vn
Cần Thơ
11-10-2016
Toàn vẹn và cơ sở dữ liệu active
 Mục tiêu 
 điều khiển toàn vẹn ngữ nghĩa
 đưa khái niệm trigger
 cài đặt trong mô hình quan hệ
 minh họa với SQL3
2
Toàn vẹn ngữ nghĩa
Định nghĩa
 Toàn vẹn ngữ nghĩa
 dữ liệu phải hợp lệ và nhất quán
 sự hợp lệ và nhất quán được định nghĩa với sự trợ giúp 
ràng buộc toàn vẹn
 Ràng buộc toàn vẹn
4
 luật được định nghĩa bởi người thiết kế CSDL
 cho phép định nghĩa tính hợp lệ của dữ liệu
 phải được hệ thống kiếm soát
 CSDL phải luôn thỏa tập các ràng buộc
Vấn đề
 Định nghĩa ràng buộc
 ngôn ngữ định nghĩa ràng buộc
tích hợp vào SQL, mở rộng
 khi nào, làm sao định nghĩa ràng buộc?
nhiều cách tiếp cận khác
5
 Kiểm chứng các ràng buộc
 khi nào?
 làm sao kiểm chứng?
 giải thuật nào?
Các thể thức ràng buộc 
toàn vẹn
Thể thức
 Ràng buộc cấu trúc
 đặc thù cho một mô hình dữ liệu
 Ràng buộc về xử lý
 sự tiến hóa dữ liệu
7
 Ràng buộc phụ thuộc
 phụ thuộc hàm, bao hàm, đa trị
 Khẳng định tổng quát
 luật quản lý và/hoặc biểu thức số học
Ràng buộc cấu trúc
 Ràng buộc cấu trúc
 đặc thù cho mô hình dữ liệu
 trình bày các đặc tính cơ bản của mô hình
 Mô hình quan hệ
8
 khóa duy nhất
 không rỗng
 phụ thuộc tham chiếu
 ràng buộc miền
Ràng buộc cấu trúc của mô hình 
quan hệ
 Khóa duy nhất
 một hay nhóm thuộc tính được định nghĩa là khóa của 
quan hệ phải có tính duy nhất
thuộc tính NoAp của quan hệ Appartment xác định một 
và chỉ một mẫu tin của quan hệ
9
 Không rỗng
 thuộc tính không nhận giá trị rỗng
thuộc tính NoAp của quan hệ Appartment không nhận 
giá trị rỗng
Ràng buộc cấu trúc của mô hình 
quan hệ
 Phụ thuộc tham chiếu
 sự phụ thuộc giữa những giá trị của thuộc tính (nhóm 
thuộc tính) của một quan hệ với những giá trị của thuộc 
tính (nhóm thuộc tính) của một quan hệ khác
thuộc tính NoAp của quan hệ Room tham chiếu đến 
10
thuộc tính NoAp của quan hệ Appartment
 Ràng buộc miền
 thuộc tính của một quan hệ chỉ nhận giá trị thuộc miền 
giá trị
thuộc tính Name của quan hệ Room có thể nhận giá trị 
nằm thuộc {phòng ngủ, phòng khách, phòng ăn, bếp, 
phòng tắm, văn phòng}
Ràng buộc về xử lý
 Theo thời gian
 đặc tả sự tiến hóa dữ liệu khi cập nhật
lương của nhân viên không thể giảm, giá trị mới phải lớn 
hơn giá trị củ
 Tập hợp
11
 đặc tả luật để kiểm soát tập hợp dữ liệu
lương trung bình không thể nhỏ hơn 15 000$
Ràng buộc phụ thuộc
 Phụ thuộc hàm
 đặc tả mối liên hệ tồn tại giữa 2 hay những nhóm thuộc 
tính, tổng quát hóa một khóa
code postal xác định thành phố
 Phụ thuộc bao hàm
12
 đặc tả những giá trị của một thuộc tính được bao hàm 
trong tập hợp giá trị của thuộc tính khác
 Phụ thuộc đa trị
 hệ quả của sự giới hạn đơn trị
 đặc tả phụ thuộc của một thuộc tính đến thuộc tính thứ 
hai và độc lập với thuộc tính thứ 3
Định nghĩa ràng buộc
Định nghĩa ràng buộc
 Khi nào định nghĩa ràng buộc?
 thời điểm tạo CSDL
bằng cách lệnh của ngôn ngữ định nghĩa dữ liệu
 Làm sao định nghĩa ràng buộc?
14
 bằng các từ khóa cho từng ràng buộc
NOT NULL, PRIMARY KEY, UNIQUE, 
 với những khẳng định
SQL92: CREATE ASSERTION
Bảo toàn những ràng buộc
 Định nghĩa định dạng cho các ràng buộc
 trình bày thông tin đặc tả ràng buộc
quan hệ, kiểu ràng buộc...
 Lưu trữ ràng buộc
15
 trong các metadata
CSDL mô tả CSDL khác và các lược đồ quan hệ
 tổ chức, chỉ mục ràng buộc
tăng tốc quá trình tìm kiếm ràng buộc
Giải pháp thương mại
 Chuẩn SQL: SQL92
 đề xuất cho các kiểu ràng buộc khác nhau
 NOT NULL, UNIQUE, CHECK, CONSTRAINT, 
ASSERTION, PRIMARY, KEY, REFERENCES
 Trong những hệ thống
16
 cài đặt gần như SQL92
 sử dụng những luật, thủ tục và triggers
 sử dụng các view
Ràng buộc toàn vẹn trong Oracle
 Sử dụng các lệnh định nghĩa quan hệ
 mệnh đề CONSTRAINT trong lệnh CREATE TABLE và 
ALTER TABLE
 Ràng buộc
không rỗng : NOT NULL
17

 duy nhất : UNIQUE
 khóa : PRIMARY KEY
 ràng buộc miền : CONSTRAINT CHECK
 ràng buộc tham chiếu : REFERENCES
Ví dụ 1
CREATE TABLE student ( 
no integer NOT NULL PRIMARY KEY,
lname char(20),
fname char(20),
addr char(40),
18
type char(15) 
CONSTRAINT check_type
CHECK (type in ('graduated', 'undergraduated')));
Chú ý
 Diễn đạt ràng buộc
 không rỗng
NOT NULL
 khóa
PRIMARY KEY
19
 miền
CONSTRAINT và CHECK 
 check
 cho phép diễn đạt những điều kiện trên những thuộc 
tính của một quan hệ
Ví dụ 2
CREATE TABLE inscription (
(no integer 
CONSTRAINT fk_no REFERENCES student(no)
ON DELETE CASCADE,
nc integer 
20
CONSTRAINT fk_nc REFERENCES course(nc),
dateins date );
Chú ý
 Ràng buộc
 tham chiếu : CONSTRAINT REFERENCES
 tham chiếu COURSE và INSCRIPTION
 tham chiếu STUDENT và INSCRIPTION
Xóa cascade
21

 ON DELETE CASCADE : khi xóa mẫu tin của STUDENT, 
những đăng ký của sinh viên này cũng bị xóa theo
SQL và định nghĩa ràng buộc
 Tạo các quan hệ
 có thể định nghĩa một số ràng buộc
ràng buộc cấu trúc
 Thay đổi lược đồ quan hệ
22
 có thể thay đổi ràng buộc
thêm, xóa, thay đổi ràng buộc
 Ràng buộc khác
 cần sử dụng cơ chế khác
Triggers
Toàn vẹn ngữ nghĩa
Kiểm soát ràng buộc
Vấn đề
 Khi nào kiểm tra ràng buộc?
 trước, trong khi hay sau cập nhật?
 bắt đầu hay kết thúc giao dịch?
 Làm thế nào để kiểm chứng ràng buộc?
24
 trên toàn bộ CSDL?
mất thời gian, chi phí cao
 trên tập con CSDL?
làm sao để xác định?
 Chi phí?
 phức tạp của một số kiểm chứng
 thời gian thực thi kiểm chứng
Khi nào kiểm chứng?
 Khi chèn, xóa, thay đổi mẫu tin
 tất cả ràng buộc của quan hệ liên quan đến sự cập nhật 
phải được kiểm chứng
cập nhật không thỏa ràng buộc bị bỏ
 Sự cần thiết
25
 mỗi lần cập nhật
tìm tất cả các ràng buộc
kiểm chứng mỗi ràng buộc
Khi nào kiểm chứng?
 Phụ thuộc vào kiểu ràng buộc
 ràng buộc miền
khi thao tác chèn, thay đổi, xóa
 ràng buộc tham chiếu
có thể kiểm tra vào cuối giao dịch
26
 Phụ thuộc vào thứ tự thao tác
 kiểm chứng cuối giao dịch
ràng buộc tham chiếu
trình tự sau phép chèn
 quá khó, chi phí cao
thường không khả thi
Làm sao kiểm chứng?
 Kiểm chứng tập các mẫu tin tương ứng 
với một ràng buộc
 toàn bộ CSDL
 tập con của CSDL
Tập mẫu tin thao tác và kiểm chứng phải 
27

được tối thiểu hóa
 xác định tập con của CSDL liên quan đến việc cập nhật
 có thể tùy thuộc vào kiểu ràng buộc khác nhau
 Tiếp cận
 phát hiện
 xét đoán
Phát hiện
 Nguyên lý
 mọi cập nhật m được thực hiện;
 trạng thái của CSDL D được thay đổi thành Dm
 nếu Dm được phát hiện không nhất quán, ta có thể phục 
hồi lại trạng thái D
28
 Khó khăn
 tập các mẫu tin cần kiểm chứng có thể là toàn bộ CSDL
 cần thực hiện lại giao dịch khi phát hiện sự thiếu nhất 
quán dữ liệu
Xét đoán
 Nguyên lý
 một thay đổi m chỉ được thực hiện nếu trạng thái CSDL 
kết quả đảm bảo nhất quán
 Khái niệm kiểm tra trước
tìm một điều kiện dễ kiểm chứng trước
29

 tối thiểu số mẫu tin cần kiểm chứng
 Giả thiết
 bắt đầu giao dịch, CSDL nhất quán
tất cả ràng buộc được kiểm chứng
 kết thúc giao dịch, CSDL phải nhất quán
Tiếp cận bằng quan hệ khác biệt
 Một thay đổi quan hệ R
 mẫu tin chèn vào R+
 mẫu tin bị xóa R-
 Kiểm chứng cập nhật
30
 kết hợp phép hội và trừ
R= (R UNION R+) DIFFERENCE R-
 Ý tưởng
 định nghĩa những kiểm tra trên R+ và R-
 cực tiểu số lần kiểm chứng
 cần phân tích ràng buộc
Ví dụ
 Ràng buộc tham chiếu Student-Inscription
 kiểm tra trước Inscription+
Inscription+.No=Student.No
 kiểm tra trước Inscription-
31
 kiểm tra trước Student+
 kiểm tra trước Student-
COUNT (Inscription.No WHERE Inscription.No=Student-.No)=0
CSDL active
Mục tiêu
 Giới thiệu về sự năng động trong CSDL
 bắt sự kiện (event)
 định nghĩa phép toán kích hoạt 
 Tích hợp cơ chế điều khiển
33
 cung cấp cơ chế sử dụng để giải quyết các vấn đề khác 
nhau
 cho phép tăng thao tác điều khiển và định nghĩa các 
thao tác điều khiển mới
Thực hiện
 Định nghĩa
 trigger là luật dạng 
nếu thì 
 khi sự kiện xãy ra thì hệ thống kích hoạt hành động
Cơ chế trigger
34

 cho phép định nghĩa các « daemon »
 kích hoạt và điều khiển thực thi các « daemon »
 đảm nhận thực thi tốt tập các hành động
Hoạt động trong CSDL
 Trong ứng dụng
 mô hình hóa sự năng động
 cho phép tự động hóa một số hành động và phép toán
 ví dụ : quản lý giao dịch chứng khoán
nếu quantity of stock < value 
35
thì generate a new command
Hoạt động trong CSDL
 Trong hệ thống
 quản lý sự toàn vẹn
 quản lý view cụ thể
 cải tiến hiệu quả
 ví dụ
36
trường hợp cập nhật một quan hệ, kích hoạt cập nhật 
view tương ứng
Những hệ thống trigger
 Vấn đề
 trình bày trigger
 mô hình thực thi tập các triggers
 Nhiều trình bày có thể của một trigger
37
 mô hình EA : Event ==> Action
 mô hình ECA : 
khi Event nếu thì 
 mô hình khác : tập luật
Event, condition, action
 Sự kiện
 sự kiện ngoài hay trong
phép chèn trong một quan hệ
thời điểm cho trước
 tham số của sự kiện 
38
quan hệ có liên quan, thời điểm 
 ngữ cảnh của sự kiện
dữ liệu cần thiết cho đánh giá luật
 Kiểu sự kiện
 đơn giản
 phức hợp
Event, condition, action
 Điều kiện
 diễn đạt trên những dữ liệu của CSDL
 tùy chọn
 Hành động
39
 mã thực thi khi điều kiện được thỏa mãn
 những thao tác trên CSDL (truy vấn SQL)
 thao tác giao dịch (kiểm chứng, từ bỏ)
Mô hình thực thi
 Khi nào hệ thống kích hoạt trigger?
 trước sự kiện
BEFORE
 sau sự kiện 
AFTER
40
 diễn ra sự kiện 
INSTEAD
 Kích hoạt hành động trigger như thế nào?
 chỉ một lần trên các dữ liệu liên quan
STATEMENT
 từng mẫu tin một
ROW
Mô hình thực thi
 Kích hoạt tập hợp triggers
 làm sao hệ thống quản lý tập hợp triggers và sự kích 
hoạt?
 nếu sự kiện kích hoạt nhiều triggers, thực thi tất cả các 
triggers? theo thứ tự ưu tiên?
41
xếp gối lên nhau của các ngữ cảnh thực thi
 Kích hoạt một cách đệ quy
 kích hoạt một trigger có thể kích hoạt tập triggers khác
làm sao kết thúc?
giới hạn độ sâu
Triggers và HQTCSDL quan hệ
 Đề nghị trong SQL 3
 lệnh tạo trigger
CREATE TRIGGER
 định nghĩa biến về ngữ cảnh
OLD/NEW
42
 những hành động: truy vấn SQL trừ
lệnh thực hiện kết nối (connection)
lệnh định nghĩa lược đồ
Triggers trong Oracle
Triggers trong Oracle
 Tương thích chuẩn SQL3
 Định nghĩa bộ ba (E, C, A): event, condition, 
action
 Cung cấp khả năng tốt nhất để kiểm chứng 
44
ràng buộc
 Cho phép giới thiệu sự năng động
 Sử dụng ngôn ngữ PL/SQL
Cú pháp
CREATE [OR REPLACE] TRIGGER [schema.]trigger
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF column [, column] ...]}
[OR {DELETE | INSERT | UPDATE [OF column [, column] ...]}] ...
45
ON [schema.]table
[ [REFERENCING { OLD [AS] old [NEW [AS] new]
| NEW [AS] new [OLD [AS] old] } ]
FOR EACH ROW
[WHEN (condition)] ]
pl/sql_block
Hành động
 Ngôn ngữ PL/SQL
 ngôn ngữ thủ tục
 SQL và ngôn ngữ lập trình (giới hạn)
 cho phép sử dụng cấu trúc điều khiển
46
IF-THEN-ELSE, LOOP
 cho phép khai báo biến
 sử dụng để định nghĩa triggers và thủ tục
Hành động
 Khối lệnh PL/SQL
DECLARE
khai báo biến
BEGIN
lệnh 
47
END.
RUN;
Ví dụ
 Toàn vẹn tham chiếu
 giữa Inscription và Student 
 tạo trigger thực hiện kiểm chứng toàn vẹn tham chiếu 
khi chèn vào quan hệ Inscription
 Sự kiện
48
 chèn vào Inscription
 Hành động
 kiểm tra xem bảng Student, tham khảo có tồn tại trong 
bảng Student
Ví dụ
CREATE TRIGGER verifstudent
BEFORE INSERT ON inscription 
FOR EACH ROW
DECLARE 
present integer; 
49
BEGIN
select count(no) into present
from student where no=:new.no;
if present < 0
then raise_application_error(-1, ‘no student');
end if;
END.
RUN;
50

File đính kèm:

  • pdfbai_giang_co_so_du_lieu_nang_cao_chuong_2_toan_ven_va_co_so.pdf