Bài giảng Cơ sở dữ liệu - Chương 7: An toàn và toàn vẹn dữ liệu - Vũ Tuyết Trinh
Đặ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
4
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
{ 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
4
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
Bạn đang xem tài liệu "Bài giảng Cơ sở dữ liệu - Chương 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:
- bai_giang_co_so_du_lieu_chuong_7_an_toan_va_toan_ven_du_lieu.pdf
Nội dung text: Bài giảng Cơ sở dữ liệu - Chương 7: An toàn và toàn vẹn dữ liệu - Vũ Tuyết Trinh
- Nhập môn cơ sở dữ liệu GIAO_VIEN (maGV, hoten, ngaysinh, gioitinh, diachi, hhhocham, hocvi , bblacluong) 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 Đặtvấ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 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 2
- Nhập môn cơ sở dữ liệu Phân quyềnngười dùng { Đ/v người khai thác CSDL z Quyền đọc dữ liệu z Quyềnsửa đổi dữ liệu z Quyềnbổ sung dữ liệu z Quyềnxoá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ệnnt tử, thẻ thông minh { Sử dụng nhận dạng tiếng nói, vân tay, 8 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 4
- Nhập môn cơ sở dữ liệu Lệnh phân quyền cho người dùng { Cú pháp Gran t On To [With Grant Option] REVOKE ON FROM [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ộcdữ 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 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 6
- Nhập môn cơ sở dữ liệu Lệnh đ/n ràng buộc khoá ngoài { Cú pháp CONSTRAINT FOREIGN KEY REFERENCES [khoa-tham-chieu] { Ví dụ: Trong bảng DIEM CONSTRAINT diem-SV FOREIGN KEY maSV REFERENCCSES SINH_ VIEN[[aS]maSV] CONSTRAINT diem-mon FOREIGN KEY maSV REFERENCES SINH_VIEN[maSV] 15 Toàn vẹndữ liệu { Mục đích: đảmbảo tính đúng đắncủ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ẹnDL khi thựchiệncác thao tác thêm, sửa, xoá ¾ sử dụng các triggers z Kiểm tra tính đúng đắncủa các thao tác trên CSDL ¾ Quảntrị giao dịch ¾ Điềukhiểntương tranh 16 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 8
- Nhập môn cơ sở dữ liệu 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 ảnBn B Sự Ngggân hàng chịu lỗ ??? Giảm số dư của tài khoản A cố 20 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 10
- Nhập môn cơ sở dữ liệu 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àkhikà sau khi kếttthú thúc gi ao 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 gidiao dịchhkhá khác tiến hàn h đồ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); T’: A+B t1:=t1-500; (= 5000+3500) Write(A,t1); } (A+B = 4500+3500) 24 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 12
- Nhập môn cơ sở dữ liệu 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 Roll back (sa vepo int) // sav epoin t = 0 ==> A bor t 27 Điềukhiểntươ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 đốitượng có thể làm mất tính nhất quán củaDL T0: read(A); T1: read(A); A := A -50; temp := A *0.1; write(A); A := A -temp; read(B); write(A); B := B + 50; read(B); write(B); B := B + temp; write(B); 28 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 14
- Nhập môn cơ sở dữ liệu Ví dụ T0: LX(A); T1: LX(A); read(A); read(A); A := A -50; temp := A *0.1; write(A); A := A -temp; LX(B); write(A) read(B); LX(B); B := B + 50; read(B); write(();B); B:=B+temp; UN(A); write(B); UN(B); UN(A); UN(B); 31 Khoá chết (deadlock) T0: LX(B); T1: LX(A); read(B); read(A); B := B +50; temp := A *0.1; write(B); A := A -temp; LX(A); write(A) read(A); LX(B); A := A - 50; read(B); write(A); B:=B+temp; UN(A); write(B); UN(B); UN(A); UN(B); 32 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 16