Bài giảng Nhập môn cơ sở dữ liệu - Bài 7: An toàn và toàn vẹn dữ liệu - Vũ Tuyết Trinh

An toàn và toàn v
n dli
u  
Vũ Tuyết Trinh  
Bmôn Các hthng thông tin, Khoa Công nghthông tin  
Đại hc Bách Khoa Hà Ni  
Ví d  
Giáo viên  
CSDL  
Giáo viên  
Sinh viên  
Lp hc  
Môn hc  
Đim thi  
hQTCSDL  
H
c t
p  
Sinh viên  
2
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
GIAO_VIEN (maGV, hoten, ngaysinh, gioitinh, diachi,  
hocham, hocvi, bacluong)  
LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV)  
SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi,  
malop)  
MON_HOC(mamon, tenmon, soHT)  
DIEM_THI(maSV, mamon, lanthi, diem)  
3
Đặt vn đề  
{ Mc đích ca CSDL  
z Lưu trlâu dài  
z Khai thác hiu quả  
{ Yêu cu đ/v thiết kế CSDL  
z Đảm bo tính đúng đắn ca DL  
{ Tránh sai sót khi cp nht DL Ö định nghĩa và kim tra các  
ràng buc DL  
{ Tránh sai sót trong quá trình thao tác vi DL Ö kim tra  
tính toàn vn ca các thao tác vi DL  
z Đảm bo tính an toàn ca DL  
{ Tránh truy nhp DL không hp ltphía người dùng Ö  
phân quyn và kim tra quyn hn người sdng  
4
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Ni dung  
{ An toàn dliu  
{ Ràng buc dliu  
{ Toàn vn dliu  
5
An toàn dliu  
{ Bo vCSDL chng li struy nhp bt hp  
pháp  
¾ Cn các cơ chế cho phép  
z Nhn biết người dùng  
z Xác định các thao tác hp lvi tng (nhóm) người  
dùng  
6
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Phân quyn người dùng  
{ Đ/v người khai thác CSDL  
z Quyn đọ
c d
li
u  
z Quyn sa đổi dliu  
z Quyn bsung dliu  
z Quyn xoá dliu  
z ...  
{ Đ/v người qun trCSDL  
z Quyn to chdn  
z Quyn qun lý tài nguyên: thêm/xoá các quan hệ  
z Quyn thay đổi cu trúc DL: thêm/sa/xoá các thuc  
tính ca các quan hệ  
z ...  
{ ...  
7
Xác minh người dùng  
{ Sdng tài khon ca người dùng  
z Tên truy nhp  
z Mt khu  
{ Sdng hàm kim tra F(x)  
z Cho 1 giá trngu nhiên x  
z Người dùng phi biết hàm F để tính giá trca nó  
{
S
d
ng th
ẻ đ
i
n t
, th
thông minh  
{ Sdng nhn dng tiếng nói, vân tay, ...  
8
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Lnh to (nhóm) người dùng  
{ Cú pháp  
z To người dùng  
CREATE USER username  
IDENTIFIED {BY password | EXTERNALLY |  
GLOBALLY AS 'external_name'};  
z Xoá người dùng  
DROP USER name [CASCADE];  
{ Ví dụ  
CREATE USER tin123K47  
IDENTIFIED BY nmcsdl  
9
Kim tra quyn ca người dùng  
{ Xác định quyn hn ca (nhóm) người dùng  
{ Xác định các khung nhìn để hn chế truy nhp  
đến DL  
{ Xác định và kim soát slưu chuyn dliu  
10  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Lnh phân quyn cho người dùng  
{ Cú pháp  
Grant <privilege> On <Object> To <user>  
[With Grant Option]  
REVOKE <privilege> ON <Object> FROM <user>  
[RESTRICT | CASCADE]  
Privilege = {Insert | Update | Delete | Select |  
Create Alter | Drop | Read | Write}  
Object = {Table | View}  
{ Ví d:  
GRANT SELECT ON DIEM_THI TO tin123K47  
GRANT SELECT, UPDATE ON DIEM_THI TO vutrinh  
WITH GRANT OPTION  
11  
Ràng buc dliu  
{ Mc đích: định nghĩa tính đúng đắn ca DL  
trong toàn bCSDL  
{ Phân loi  
z Ràng buc vmin giá trị  
{ Trên 1 thuc tính  
{ Trên nhiu thuc tính (cùng 1 bn ghi)  
{ Trên nhiu bn ghi  
z Ràng buc vkhoá  
{ Trên 1 quan h: khoá chính  
{ Trên nhiu quan h: khoá ngoài  
12  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Lnh đ/n ràng buc min giá trị  
{ Cú pháp  
CONSTRAINT <ten-rang-buoc> CHECK <dieu-kien>  
{ Ví d:  
z Trong bng DIEM  
CONSTRAINT gtdiem CHECK ((diem>=0) and  
(diem<=10))  
z
Trong b
ng SINH_VIEN  
CONSTRAINT gttuoi CHECK (tuoi = year(date()) –  
year(ngaysinh))  
13  
Lnh đ/n ràng buc khoá chính  
{ Cú pháp  
CONSTRAINT <ten-rang-buoc>  
PRIMARY KEY <cac-thuoc-tinh-khoa>  
{ Ví dụ  
z Trong bng SINH_VIEN  
CONSTRAINT SV-khoa  
PRIMARY KEY maSV  
z Trong bng DIEM  
CONSTRAINT diemthi-khoa  
PRIMARY KEY maSV, mamon  
14  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Lnh đ/n ràng buc khoá ngoài  
{ Cú pháp  
CONSTRAINT <ten-rang-buoc>  
FOREIGN KEY <cac-thuoc-tinh-khoa>  
REFERENCES <ten-bang>[khoa-tham-chieu]  
{ Ví d: Trong bng DIEM  
CONSTRAINT diem-SV FOREIGN KEY maSV  
REFERENCES SINH_VIEN[maSV]  
CONSTRAINT diem-mon FOREIGN KEY maSV  
REFERENCES SINH_VIEN[maSV]  
15  
Toàn vn dliu  
{ Mc đích: đảm bo tính đúng đắn ca DL trong  
quá trình thao tác (thêm, sa, xoá DL)  
{ Yêu cu  
z Kim tra các ràng buc toàn vn DL khi thc hin các  
thao tác thêm, sa, xoá  
¾ sdng các triggers  
z Kim tra tính đúng đắn ca các thao tác trên CSDL  
¾ Qun trgiao dch  
¾ Điu khin tương tranh  
16  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Trigger  
{ Đ/n  
z Là các x
được gn v
i các b
ng DL  
z Được tự động kích hot khi thc hin các thao tác  
thêm, sa, xoá bn ghi  
{ Cú pháp  
CREATE [OR REPLACE] TRIGGER <trigger_name>  
{BEFORE | AFTER | INSTEAD OF }  
{UPDATE | INSERT | DELETE}  
[OF <attribute_name>] ON <table name>  
[FOR EACH ROW ]  
BEGIN  
<< trigger body goes here >>  
END <trigger_name>;  
17  
Ví dụ  
LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV)  
SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi, malop)  
CREATE TRIGGER tang_TSSV  
AFTER INSERT ON SINH_VIEN  
FOR EACH ROW  
BEGIN  
update LOP  
set TSSV= TSSV+1  
where malop = :new.malop  
END;  
18  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Ví dụ  
LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV)  
SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi, malop)  
CREATE TRIGGER giam_TSSV  
AFTER DELETE ON SINH_VIEN  
FOR EACH ROW  
BEGIN  
update LOP  
set TSSV= TSSV-1  
where malop = :old.malop  
END;  
19  
Giao dch – ví dụ  
500USD  
Tài khon A  
Tài khon B  
Đọc sdư ca tài khon A  
Kim tra (sdư > stin cn rút)  
T
ă
ng s
d
ư
c
a tài kho
n B  
Gim sdư ca tài khon A  
Ngân hàng  
S
ự  
cố  
chu l???  
20  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Giao dch  
{ Đ/n: mt tp các thao tác được xlý như mt  
đơn vkhông chia ct được  
z Cho phép đảm bo tính nht quán và tính đúng đắn  
ca dliu  
{ Tính cht ACID  
Điu khin  
tương tranh  
z Nguyên t(Atomicity)  
z Tính nht quán (Consistency)  
z Tính cô lp (Isolation)  
z Tính bn vng (Durability)  
Phc hi dliu  
21  
Tính nguyên tố  
{ Đ/n: Hoc là toàn bhành động ca giao dch  
đượ
c th
c hi
n ho
c không có hành 
động nào  
được thc hin  
{ Ví d:  
T: Read(A,t1);  
If t1 > 500 {  
Read(B,t2);  
t2:=t2+500;  
stop  
Write(B,t2);  
t1:=t1-500;  
Write(A,t1);  
}
22  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Tính nht quán  
{ Đ/n: Tính nht quán ca dliu trước khi bt  
đầ
u và sau khi k
ế
t thúc giao d
ch  
{ Ví dụ  
A+B = C  
T: Read(A,t1);  
If t1 > 500 {  
Read(B,t2);  
t2:=t2+500;  
Write(B,t2);  
t1:=t1-500;  
Write(A,t1);  
}
A+B = C  
23  
Tính cô lp  
{ Đ/n: 1 giao dch được tiến hành độc lp vi các  
giao d
ch khác ti
ế
n hành
đồ
ng th
i  
{ Ví d: A= 5000, B= 3000  
T: Read(A,t1);  
If t1 > 500 {  
Read(B,t2);  
t2:=t2+500;  
Write(B,t2);  
t1:=t1-500;  
(= 5000+3500)  
Write(A,t1);  
T’: A+B  
}
(A+B = 4500+3500)  
24  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Tính bn vng  
{ Đ/n  
z Mi thay đổi mà giao dch thc hin trên CSDL phi  
được ghi nhn bn vng  
{ Ví d: A= 5000, B= 3000  
T: Read(A,t1);  
If t1 > 500 {  
Read(B,t2);  
t2:=t2+500;  
Write(B,t2);  
t1:=t1-500;  
Write(A,t1);  
}
scố  
25  
A= 4500, B=3500  
Trng thái ca giao dch  
26  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Giao din cho giao dich  
{ Giao din chính  
z Begin Trans  
z Commit ()  
z Abort()  
{ Đim ghi nh(save point)  
z Savepoint Save()  
z
Rollback (savepoint)
 
// savepoint = 0 ==> Abort  
27  
Điu khin tương tranh  
{ Mc đích: tránh đụng độ gia các giao dch (mt  
dãy các thao tác) trên cùng mt đối tượng có thể  
làm mt tính nht quán ca DL  
T0: read(A);  
A := A -50;  
T1: read(A);  
temp := A *0.1;  
write(A);  
read(B);  
A := A -temp;  
write(A);  
B := B + 50;  
write(B);  
read(B);  
B := B + temp;  
write(B);  
28  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Ví dvthc hin giao dch  
29  
Kthut khoá  
{ Mc đích  
z Đả
m b
o vi
c truy nh
p đế
n các DL
đượ
c th
c hi
n  
theo phương pháp loi trnhau  
{ Các kiu khoá  
z Chia s: có thể đọc nhưng không ghi DL  
z Độc quyn: đọc và ghi DL  
{ Ký hiu  
z LS(D): khoá chia sẻ  
z LX(D): khoá độc quyn  
z UN(D): mkhoá  
LS  
LX  
{ Tính tương thích  
LS  
LX  
true  
false  
false false  
0  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Ví dụ  
T0: LX(A);  
read(A);  
T1: LX(A);  
read(A);  
A := A -50;  
temp := A *0.1;  
write(A);  
LX(B);  
read(B);  
B := B + 50;  
write(B);  
UN(A);  
A := A -temp;  
write(A)  
LX(B);  
read(B);  
B:=B+temp;  
write(B);  
UN(A);  
UN(B);  
UN(B);  
31  
Khoá chết (deadlock)  
T0: LX(B);  
read(B);  
T1: LX(A);  
read(A);  
B := B +50;  
temp := A *0.1;  
write(B);  
LX(A);  
read(A);  
A := A - 50;  
write(A);  
UN(A);  
A := A -temp;  
write(A)  
LX(B);  
read(B);  
B:=B+temp;  
write(B);  
UN(A);  
UN(B);  
UN(B);  
32  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
Các vn đề vqun trgiao dch  
{ Các kthut điu khin tương tranh  
z các chế độ khoá, gii quyết khoá chết  
z kthut gán nhãn  
{ Lp lch  
{ Các kthut phc hi (recovery)  
{ ...  
33  
Kết lun  
Để đảm bo tính an toàn và toàn vn dliu  
{ Đ/v người thiết kế CSDL  
z Phi định nghĩa các ràng buc toàn vn vdliu  
{ Đ/v người qun trhthng  
z Phi định nghĩa các khung nhìn  
z Phi phn quyn cho (nhóm) người dùng  
{ Đ/v hCSDL  
z Phi xác minh được người dùng  
z Phi kim tra các ràng buc DL mt cách tự động  
z Phi đảm bo các tính cht ACID cho giao dch người  
dùng  
34  
ũ
Tuy
ế
t Trinh, b/m Các h
th
ng thông tin,  
pdf 17 trang baolam 26/04/2022 7920
Bạn đang xem tài liệu "Bài giảng Nhập môn cơ sở dữ liệu - Bài 7: An toàn và toàn vẹn dữ liệu - Vũ Tuyết Trinh", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nhap_mon_co_so_du_lieu_bai_7_an_toan_va_toan_ven_d.pdf