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 dữ li
ệ
u  
Vũ Tuyết Trinh  
Bộ môn Các hệ thống thông tin, Khoa Công nghệ thông tin  
Đại học Bách Khoa Hà Nội  
Ví dụ  
Giáo viên  
CSDL  
Giáo viên  
Sinh viên  
Lớp học  
Môn học  
Điểm thi  
hệ QTCSDL  
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 vấn đề  
{ Mục đích của CSDL  
z Lưu trữ lâu dài  
z Khai thác hiệu quả  
{ Yêu cầu đ/v thiết kế CSDL  
z Đảm bảo tính đúng đắn của DL  
{ Tránh sai sót khi cập nhật DL Ö định nghĩa và kiểm tra các  
ràng buộc DL  
{ Tránh sai sót trong quá trình thao tác với DL Ö kiểm tra  
tính toàn vẹn của các thao tác với DL  
z Đảm bảo tính an toàn của DL  
{ Tránh truy nhập DL không hợp lệ từ phía người dùng Ö  
phân quyền và kiểm tra quyền hạn người sử dụng  
4
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Nội dung  
{ An toàn dữ liệu  
{ Ràng buộc dữ liệu  
{ Toàn vẹn dữ liệu  
5
An toàn dữ liệu  
{ Bảo vệ CSDL chống lại sự truy nhập bất hợp  
pháp  
¾ Cần các cơ chế cho phép  
z Nhận biết người dùng  
z Xác định các thao tác hợp lệ với từng (nhóm) người  
dùng  
6
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Phân quyền người dùng  
{ Đ/v người khai thác CSDL  
z Quyền đọ
c d
ữ
li
ệu  
z Quyền sửa đổi dữ liệu  
z Quyền bổ sung dữ liệu  
z Quyền xoá dữ liệu  
z ...  
{ Đ/v người quản trị CSDL  
z Quyền tạo chỉ dẫn  
z Quyền quản lý tài nguyên: thêm/xoá các quan hệ  
z Quyền thay đổi cấu trúc DL: thêm/sửa/xoá các thuộc  
tính của các quan hệ  
z ...  
{ ...  
7
Xác minh người dùng  
{ Sử dụng tài khoản của người dùng  
z Tên truy nhập  
z Mật khẩu  
{ Sử dụng hàm kiểm tra F(x)  
z Cho 1 giá trị ngẫu nhiên x  
z Người dùng phải biết hàm F để tính giá trị của nó  
{
S
ử
d
ụ
ng th
ẻ đ
i
ệ
n t
ử
, th
ẻ
thông minh  
{ Sử dụng nhận dạng tiếng nói, vân tay, ...  
8
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Lệnh tạo (nhóm) người dùng  
{ Cú pháp  
z Tạo 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
Kiểm tra quyền của người dùng  
{ Xác định quyền hạn của (nhóm) người dùng  
{ Xác định các khung nhìn để hạn chế truy nhập  
đến DL  
{ Xác định và kiểm soát sự lưu chuyển dữ liệu  
10  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Lệnh phân quyền 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 buộc dữ liệu  
{ Mục đích: định nghĩa tính đúng đắn của DL  
trong toàn bộ CSDL  
{ Phân loại  
z Ràng buộc về miền giá trị  
{ Trên 1 thuộc tính  
{ Trên nhiều thuộc tính (cùng 1 bản ghi)  
{ Trên nhiều bản ghi  
z Ràng buộc về khoá  
{ Trên 1 quan hệ: khoá chính  
{ Trên nhiều quan hệ: khoá ngoài  
12  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Lệnh đ/n ràng buộc miền giá trị  
{ Cú pháp  
CONSTRAINT <ten-rang-buoc> CHECK <dieu-kien>  
{ Ví dụ:  
z Trong bảng DIEM  
CONSTRAINT gtdiem CHECK ((diem>=0) and  
(diem<=10))  
z
Trong b
ảng SINH_VIEN  
CONSTRAINT gttuoi CHECK (tuoi = year(date()) –  
year(ngaysinh))  
13  
Lệnh đ/n ràng buộc khoá chính  
{ Cú pháp  
CONSTRAINT <ten-rang-buoc>  
PRIMARY KEY <cac-thuoc-tinh-khoa>  
{ Ví dụ  
z Trong bảng SINH_VIEN  
CONSTRAINT SV-khoa  
PRIMARY KEY maSV  
z Trong bảng DIEM  
CONSTRAINT diemthi-khoa  
PRIMARY KEY maSV, mamon  
14  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Lệnh đ/n ràng buộc 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 bảng DIEM  
CONSTRAINT diem-SV FOREIGN KEY maSV  
REFERENCES SINH_VIEN[maSV]  
CONSTRAINT diem-mon FOREIGN KEY maSV  
REFERENCES SINH_VIEN[maSV]  
15  
Toàn vẹn dữ liệu  
{ Mục đích: đảm bảo tính đúng đắn của DL trong  
quá trình thao tác (thêm, sửa, xoá DL)  
{ Yêu cầu  
z Kiểm tra các ràng buộc toàn vẹn DL khi thực hiện các  
thao tác thêm, sửa, xoá  
¾ sử dụng các triggers  
z Kiểm tra tính đúng đắn của các thao tác trên CSDL  
¾ Quản trị giao dịch  
¾ Điều khiển tương tranh  
16  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Trigger  
{ Đ/n  
z Là các xử
lý
được gắn vớ
i các b
ả
ng DL  
z Được tự động kích hoạt khi thực hiện các thao tác  
thêm, sửa, xoá bản 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 dịch – ví dụ  
500USD  
Tài khoản A  
Tài khoản B  
Đọc số dư của tài khoản A  
Kiểm tra (số dư > số tiền cần rút)  
T
ă
ng s
ố
d
ư
c
ủ
a tài kho
ả
n B  
Giảm số dư của tài khoản A  
Ngân hàng  
S
ự  
cố  
chịu lỗ ???  
20  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Giao dịch  
{ Đ/n: một tập các thao tác được xử lý như một  
đơn vị không chia cắt được  
z Cho phép đảm bảo tính nhất quán và tính đúng đắn  
của dữ liệu  
{ Tính chất ACID  
Điều khiển  
tương tranh  
z Nguyên tố (Atomicity)  
z Tính nhất quán (Consistency)  
z Tính cô lập (Isolation)  
z Tính bền vững (Durability)  
Phục hồi dữ liệu  
21  
Tính nguyên tố  
{ Đ/n: Hoặc là toàn bộ hành động của giao dịch  
đượ
c th
ự
c hi
ện hoặ
c không có hành 
động nào  
được thực hiện  
{ 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 nhất quán  
{ Đ/n: Tính nhất quán của dữ liệu trước khi bắt  
đầ
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ô lập  
{ Đ/n: 1 giao dịch được tiến hành độc lập với 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 bền vững  
{ Đ/n  
z Mọi thay đổi mà giao dịch thực hiện trên CSDL phải  
được ghi nhận bền vững  
{ 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);  
}
sự cố  
25  
A= 4500, B=3500  
Trạng thái của giao dịch  
26  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
Giao diện cho giao dich  
{ Giao diện chính  
z Begin Trans  
z Commit ()  
z Abort()  
{ Điểm ghi nhớ (save point)  
z Savepoint Save()  
z
Rollback (savepoint)
 
// savepoint = 0 ==> Abort  
27  
Điều khiển tương tranh  
{ Mục đích: tránh đụng độ giữa các giao dịch (một  
dãy các thao tác) trên cùng một đối tượng có thể  
làm mất tính nhất quán của 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í dụ về thực hiện giao dịch  
29  
Kỹ thuật khoá  
{ Mục đích  
z Đả
m b
ả
o vi
ệ
c truy nh
ập đế
n các DL
đượ
c th
ự
c hi
ện  
theo phương pháp loại trừ nhau  
{ Các kiểu khoá  
z Chia sẻ: có thể đọc nhưng không ghi DL  
z Độc quyền: đọc và ghi DL  
{ Ký hiệu  
z LS(D): khoá chia sẻ  
z LX(D): khoá độc quyền  
z UN(D): mở khoá  
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 vấn đề về quản trị giao dịch  
{ Các kỹ thuật điều khiển tương tranh  
z các chế độ khoá, giải quyết khoá chết  
z kỹ thuật gán nhãn  
{ Lập lịch  
{ Các kỹ thuật phục hồi (recovery)  
{ ...  
33  
Kết luận  
Để đảm bảo tính an toàn và toàn vẹn dữ liệu  
{ Đ/v người thiết kế CSDL  
z Phải định nghĩa các ràng buộc toàn vẹn về dữ liệu  
{ Đ/v người quản trị hệ thống  
z Phải định nghĩa các khung nhìn  
z Phải phần quyền cho (nhóm) người dùng  
{ Đ/v hệ CSDL  
z Phải xác minh được người dùng  
z Phải kiểm tra các ràng buộc DL một cách tự động  
z Phải đảm bảo các tính chất ACID cho giao dịch người  
dùng  
34  
ũ
Tuy
ế
t Trinh, b/m Các h
ệ
th
ố
ng thông tin,  
pdf 17 trang baolam 26040 Free
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