Bài giảng Nhập môn 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
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 Nhập môn 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
Tóm tắt nội dung tài liệu: Bài giảng Nhập môn 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 Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 1 An toàn và toàn vẹn dữ liệu Vũ Tuyết Trinh trinhvt@it-hut.edu.vn 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 H tậ hệ QTCSDL CSDL Giáo viên Sinh viên Lớp học Mô h 2 ọc p Sinh viên Điểm thi n ọc Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 2 GIAO_VIEN (maGV, hoten, ngaysinh, gioitinh, diachi, h h h i b l )oc am, ocv , ac uong LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV) SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi, malop) 3 MON_HOC(mamon, tenmon, soHT) DIEM_THI(maSV, mamon, lanthi, diem) Đặ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 Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 3 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 Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 4 Phân quyền người dùng { Đ/v người khai thác CSDL Q ề đ dữ liệz uy n ọc 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 Q ề ả lý tài ê thê / á á hệ 7 z uy n qu n nguy n: m xo c c quan 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 ... { ... 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 8 , { Sử dụng nhận dạng tiếng nói, vân tay, ... Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 5 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]; 9 { Ví dụ CREATE USER tin123K47 IDENTIFIED BY nmcsdl 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 Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 6 Lệnh phân quyền cho người dùng { Cú pháp G t O T ran pr v ege n ec o user [With Grant Option] REVOKE ON FROM [RESTRICT | CASCADE] Privilege = {Insert | Update | Delete | Select | Create Alter | Drop | Read | Write} 11 Object = {Table | View} { Ví dụ: GRANT SELECT ON DIEM_THI TO tin123K47 GRANT SELECT, UPDATE ON DIEM_THI TO vutrinh WITH GRANT OPTION 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 12 z Ràng buộc về khoá { Trên 1 quan hệ: khoá chính { Trên nhiều quan hệ: khoá ngoài Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 7 Lệnh đ/n ràng buộc miền giá trị { Cú pháp CONSTRAINT CHECK { Ví dụ: z Trong bảng DIEM CONSTRAINT gtdiem CHECK ((diem>=0) and (diem<=10)) z Trong bảng SINH VIEN 13 _ CONSTRAINT gttuoi CHECK (tuoi = year(date()) – year(ngaysinh)) Lệnh đ/n ràng buộc khoá chính { Cú pháp CONSTRAINT PRIMARY KEY { Ví dụ z Trong bảng SINH_VIEN CONSTRAINT SV-khoa PRIMARY KEY maSV 14 z Trong bảng DIEM CONSTRAINT diemthi-khoa PRIMARY KEY maSV, mamon Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 8 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 REFERENCES SINH VIEN[maSV] 15 _ CONSTRAINT diem-mon FOREIGN KEY maSV REFERENCES SINH_VIEN[maSV] 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 16 ¾ Quản trị giao dịch ¾ Điều khiển tương tranh Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 9 Trigger { Đ/n Là á ử lý đ ắ ới á bả DLz c c x ược g n v c c ng 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 {BEFORE | AFTER | INSTEAD OF } {UPDATE | INSERT | DELETE} [OF ] ON 17 _ [FOR EACH ROW ] BEGIN > END ; 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 18 set TSSV= TSSV+1 where malop = :new.malop END; Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 10 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 19 set TSSV= TSSV-1 where malop = :old.malop END; Giao dịch – ví dụ Đọ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 Tài khoản A Tài khoản B Sự Ngân hàng 500USD 20 Giảm số dư của tài khoản A cố chịu lỗ ??? Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 11 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 z Nguyên tố (Atomicity) z Tính nhất quán (Consistency) Điều khiển tương tranh 21 z Tính cô lập (Isolation) z Tính bền vững (Durability) Phục hồi dữ liệu Tính nguyên tố { Đ/n: Hoặc là toàn bộ hành động của giao dịch đ th hiệ h ặ khô ó hà h độ àược ực n o c ng c n ng n o được thực hiện { Ví dụ: T: Read(A,t1); If t1 > 500 { Read(B,t2); t2:=t2+500; stop 22 Write(B,t2); t1:=t1-500; Write(A,t1); } Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 12 Tính nhất quán { Đ/n: Tính nhất quán của dữ liệu trước khi bắt đầ à khi kết thú i dị hu v sau c g ao c { Ví dụ T: Read(A,t1); If t1 > 500 { Read(B,t2); t2:=t2+500; A+B = C 23 Write(B,t2); t1:=t1-500; Write(A,t1); } A+B = C Tính cô lập { Đ/n: 1 giao dịch được tiến hành độc lập với các i dị h khá tiế hà h đồ thờig ao c c n n ng { Ví dụ: A= 5000, B= 3000 T: Read(A,t1); If t1 > 500 { Read(B,t2); t2:=t2+500; 24 Write(B,t2); t1:=t1-500; Write(A,t1); } T’: A+B (= 5000+3500) (A+B = 4500+3500) Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 13 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); 25 t2:=t2+500; Write(B,t2); t1:=t1-500; Write(A,t1); } A= 4500, B=3500 sự cố Trạng thái của giao dịch 26 Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 14 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); T1: read(A); A := A -50; temp := A *0.1; write(A); A := A -temp; read(B); write(A); B := B + 50; read(B); 28 write(B); B := B + temp; write(B); Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 15 Ví dụ về thực hiện giao dịch 29 Kỹ thuật khoá { Mục đích Đả bả iệ t hậ đế á DL đ th hiệz m o v c ruy n p n c c ược ực 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 LS(D) kh á hi ẻ 30 z : o c a s z LX(D): khoá độc quyền z UN(D): mở khoá { Tính tương thích LS LX LS true false LX false false Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 16 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; 31 UN(A); write(B); UN(B); UN(A); UN(B); 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; 32 UN(A); write(B); UN(B); UN(A); UN(B); Nhập môn cơ sở dữ liệu Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN 17 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 34 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
File đính kèm:
- bai_giang_nhap_mon_co_so_du_lieu_chuong_7_an_toan_va_toan_ve.pdf