Nhập môn cơ sở dữ liệu

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

CSDL

hệ QTCSDL

Học tập H tậ Giáo viên Sinh viên Lớp học Mô h Môn học Điểm thi Điểm thi

2

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

1

Sinh viên

Nhập môn cơ sở dữ liệu

GIAO_VIEN (maGV, hoten, ngaysinh, gioitinh, diachi, hocham, hocvi, bacluong) h ) i b l h h

LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV)

SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi, malop)

MON_HOC(mamon, tenmon, soHT)

3

DIEM_THI(maSV, mamon, lanthi, diem)

Đặt vấn đề

(cid:123) Mục đích của CSDL (cid:122) Lưu trữ lâu dài (cid:122) Khai thác hiệu quả (cid:123) Yêu cầu đ/v thiết kế CSDL

(cid:122) Đảm bảo tính đúng đắn của DL

(cid:123) Tránh sai sót khi cập nhật DL (cid:214) định nghĩa và kiểm tra các

ràng buộc DL

(cid:123) Tránh sai sót trong quá trình thao tác với DL (cid:214) kiểm tra

tính toàn vẹn của các thao tác với DL

(cid:122) Đảm bảo tính an toàn của DL

(cid:123) Tránh truy nhập DL không hợp lệ từ phía người dùng (cid:214)

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

Nội dung

(cid:123) An toàn dữ liệu

(cid:123) Ràng buộc dữ liệu

(cid:123) Toàn vẹn dữ liệu

5

An toàn dữ liệu

(cid:123) Bảo vệ CSDL chống lại sự truy nhập bất hợp

pháp

(cid:190) Cần các cơ chế cho phép (cid:122) Nhận biết người dùng (cid:122) Xác định các thao tác hợp lệ với từng (nhóm) người

6

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

3

dùng

Nhập môn cơ sở dữ liệu

Phân quyền người dùng

(cid:123) Đ/v người khai thác CSDL

(cid:122) Quyền đọc dữ liệu (cid:122) Quyền sửa đổi dữ liệu (cid:122) Quyền bổ sung dữ liệu (cid:122) Quyền xoá dữ liệu (cid:122) ...

(cid:123) Đ/v người quản trị CSDL

dữ liệ Q ề đ

(cid:122) Quyền tạo chỉ dẫn (cid:122) Quyền quản lý tài nguyên: thêm/xoá các quan hệ hệ ê ả lý tài (cid:122) Quyền thay đổi cấu trúc DL: thêm/sửa/xoá các thuộc

thê / á á Q ề

(cid:122) ...

(cid:123) ...

7

tính của các quan hệ

Xác minh người dùng

(cid:123) Sử dụng tài khoản của người dùng

(cid:122) Tên truy nhập (cid:122) Mật khẩu

(cid:123) Sử dụng hàm kiểm tra F(x) (cid:122) Cho 1 giá trị ngẫu nhiên x (cid:122) Người dùng phải biết hàm F để tính giá trị của nó

(cid:123) Sử dụng thẻ điện tử thẻ thông minh (cid:123) Sử dụng thẻ điện tử, thẻ thông minh (cid:123) 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 tạo (nhóm) người dùng

(cid:123) Cú pháp

(cid:122) Tạo người dùng

CREATE USER username IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS 'external_name'};

(cid:122) Xoá người dùng

DROP USER name [CASCADE];

(cid:123) Ví dụ

CREATE USER tin123K47 IDENTIFIED BY nmcsdl

9

Kiểm tra quyền của người dùng

(cid:123) Xác định quyền hạn của (nhóm) người dùng (cid:123) Xác định các khung nhìn để hạn chế truy nhập

đến DL

(cid:123) Xác định và kiểm soát sự lưu chuyển dữ liệu

10

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

5

Nhập môn cơ sở dữ liệu

Lệnh phân quyền cho người dùng

(cid:123) Cú pháp

t> T < il G t < i Grant On To > > O

REVOKE ON FROM [RESTRICT | CASCADE]

Privilege = {Insert | Update | Delete | Select | Create Alter | Drop | Read | Write} Create Alter | Drop | Read | Write}

GRANT SELECT ON DIEM_THI TO tin123K47

11

GRANT SELECT, UPDATE ON DIEM_THI TO vutrinh WITH GRANT OPTION

Object = {Table | View} (cid:123) Ví dụ:

Ràng buộc dữ liệu

(cid:123) Mục đích: định nghĩa tính đúng đắn của DL

trong toàn bộ CSDL

(cid:123) Phân loại

(cid:122) Ràng buộc về miền giá trị (cid:123) Trên 1 thuộc tính (cid:123) Trên nhiều thuộc tính (cùng 1 bản ghi) (cid:123) Trên nhiều bản ghi

(cid:122) Ràng buộc về khoá

(cid:123) Trên 1 quan hệ: khoá chính (cid:123) 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 miền giá trị

(cid:123) Cú pháp

(cid:123) Ví dụ:

(cid:122) Trong bảng DIEM CONSTRAINT gtdiem CHECK ((diem>=0) and

CONSTRAINT CHECK

(cid:122) Trong bảng SINH VIEN CONSTRAINT gttuoi CHECK (tuoi = year(date()) –

(diem<=10)) o g bả g S _

13

year(ngaysinh))

Lệnh đ/n ràng buộc khoá chính

(cid:123) Cú pháp

(cid:123) Ví dụ

(cid:122) Trong bảng SINH_VIEN CONSTRAINT SV-khoa PRIMARY KEY maSV aS (cid:122) Trong bảng DIEM CONSTRAINT diemthi-khoa PRIMARY KEY maSV, mamon

14

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

7

CONSTRAINT PRIMARY KEY

Nhập môn cơ sở dữ liệu

Lệnh đ/n ràng buộc khoá ngoài

(cid:123) Cú pháp

(cid:123) Ví dụ: Trong bảng DIEM

CONSTRAINT FOREIGN KEY REFERENCES [khoa-tham-chieu]

CONSTRAINT diem-SV FOREIGN KEY maSV [ aS ] REFERENCES SINH VIEN[maSV] C S S _

15

CONSTRAINT diem-mon FOREIGN KEY maSV REFERENCES SINH_VIEN[maSV]

Toàn vẹn dữ liệu

(cid:123) 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)

(cid:123) Yêu cầu

(cid:122) Kiểm tra các ràng buộc toàn vẹn DL khi thực hiện các

(cid:122) Kiểm tra tính đúng đắn của các thao tác trên CSDL

(cid:190) Quản trị giao dịch (cid:190) Điều khiển tương tranh

16

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

8

thao tác thêm, sửa, xoá (cid:190) sử dụng các triggers

Nhập môn cơ sở dữ liệu

Trigger

(cid:123) Đ/n

Là á ử lý đ

(cid:122) Là các xử lý được gắn với các bảng DL ới á bả DL (cid:122) Được tự động kích hoạt khi thực hiện các thao tác

(cid:123) Cú pháp

thêm, sửa, xoá bản ghi

17

CREATE [OR REPLACE] TRIGGER {BEFORE | AFTER | INSTEAD OF } {UPDATE | INSERT | DELETE} [OF ] ON

[OF ] ON
[FOR EACH ROW ] BEGIN << trigger body goes here >> END ;

Ví dụ

LOP (malop, tenlop, khoa, maloptruong, maGVCN,TSSV) SINH_VIEN(maSV, hoten, ngaysinh, tuoi, gioitinh, diachi, malop) SINH VIEN(maSV hoten ngaysinh tuoi gioitinh diachi malop)

CREATE TRIGGER tang_TSSV AFTER INSERT ON SINH_VIEN FOR EACH ROW BEGIN

18

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

9

update LOP set TSSV= TSSV+1 where malop = :new.malop END;

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) SINH VIEN(maSV hoten ngaysinh tuoi gioitinh diachi malop)

CREATE TRIGGER giam_TSSV AFTER DELETE ON SINH_VIEN FOR EACH ROW BEGIN

19

update LOP set TSSV= TSSV-1 where malop = :old.malop END;

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)

g

Tăng số dư của tài khoản B Tăng số dư của tài khoản B

Ngân hàng g chịu lỗ ???

Sự Sự cố

Giảm số dư của tài khoản A

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

Giao dịch

(cid:123) Đ/n: một tập các thao tác được xử lý như một

đơn vị không chia cắt được (cid:122) Cho phép đảm bảo tính nhất quán và tính đúng đắn

Điều khiển tương tranh

Phục hồi dữ liệu

(cid:122) Nguyên tố (Atomicity) (cid:122) Tính nhất quán (Consistency) (cid:122) Tính cô lập (Isolation) (cid:122) Tính bền vững (Durability)

21

của dữ liệu (cid:123) Tính chất ACID

Tính nguyên tố

hiệ h ặ khô

ó hà h độ

à

(cid:123) Đ/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 th được thực hiện

(cid:123) Ví dụ:

stop stop

T: Read(A,t1); If t1 > 500 {

22

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

11

Read(B,t2); t2:=t2+500; t2:=t2+500; Write(B,t2); t1:=t1-500; Write(A,t1); }

Nhập môn cơ sở dữ liệu

Tính nhất quán

(cid:123) Đ/n: Tính nhất quán của dữ liệu trước khi bắt

à

i

đầ đầu và sau khi kết thúc giao dịch dị h khi kết thú (cid:123) Ví dụ

A+B = C

T: Read(A,t1); If t1 > 500 {

A+B = C

23

Read(B,t2); t2:=t2+500; t2:=t2+500; Write(B,t2); t1:=t1-500; Write(A,t1); }

Tính cô lập

(cid:123) Đ/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 thời dị h khá tiế hà h đồ

i

(cid:123) Ví dụ: A= 5000, B= 3000

T: Read(A,t1); If t1 > 500 {

24

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

12

T’: A+B (= 5000+3500) Read(B,t2); t2:=t2+500; t2:=t2+500; Write(B,t2); t1:=t1-500; Write(A,t1); } (A+B = 4500+3500)

Nhập môn cơ sở dữ liệu

Tính bền vững

(cid:123) Đ/n

(cid:122) Mọi thay đổi mà giao dịch thực hiện trên CSDL phải

(cid:123) Ví dụ: A= 5000, B= 3000

ổ được ghi nhận bền vững

T: Read(A,t1); If t1 > 500 {

25

Read(B,t2); t2:=t2+500; Write(B,t2); t1:=t1-500; Write(A,t1); } sự cố

A= 4500, B=3500

Trạng thái của giao dịch

26

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

13

Nhập môn cơ sở dữ liệu

Giao diện cho giao dich

(cid:123) Giao diện chính (cid:122) Begin Trans (cid:122) Commit () (cid:122) Abort()

(cid:123) Điểm ghi nhớ (save point)

(cid:122) Savepoint Save() bo t (cid:122) Rollback (savepoint) // savepoint = 0 ==> Abort

27

o bac (sa epo t) // sa epo t 0

Điều khiển tương tranh

(cid:123) 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; write(A); read(B); B := B + 50; B := B + 50; write(B);

temp := A *0.1; A := A -temp; write(A); read(B); read(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ụ về thực hiện giao dịch

29

Kỹ thuật khoá

(cid:122) Đảm bảo việc truy nhập đến các DL được thực hiện

(cid:123) Mục đích Đả bả theo phương pháp loại trừ nhau

(cid:123) Các kiểu khoá

(cid:122) Chia sẻ: có thể đọc nhưng không ghi DL (cid:122) Độc quyền: đọc và ghi DL

(cid:123) Ký hiệu

hậ đế á DL đ iệ t hiệ th

(cid:122) LS(D): khoá chia sẻ LS(D) kh á hi ẻ (cid:122) LX(D): khoá độc quyền (cid:122) UN(D): mở khoá (cid:123) Tính tương thích

LS LX

true false LS

30

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

15

false false LX

Nhập môn cơ sở dữ liệu

Ví dụ

T0: LX(A);

T1: LX(A);

read(A); A := A -50; write(A); LX(B); read(B); B := B + 50; write(B); ( ); UN(A); UN(B);

read(A); temp := A *0.1; A := A -temp; write(A) LX(B); read(B); B:=B+temp; p; write(B); UN(A); UN(B);

31

Khoá chết (deadlock)

T0: LX(B);

T1: LX(A);

read(B); B := B +50; write(B); LX(A); read(A); A := A - 50; write(A); ( ); UN(A); UN(B);

read(A); temp := A *0.1; A := A -temp; write(A) LX(B); read(B); B:=B+temp; p; write(B); UN(A); UN(B);

32

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

16

Nhập môn cơ sở dữ liệu

Các vấn đề về quản trị giao dịch

(cid:123) Các kỹ thuật điều khiển tương tranh (cid:122) các chế độ khoá, giải quyết khoá chết (cid:122) kỹ thuật gán nhãn

(cid:123) Lập lịch (cid:123) Các kỹ thuật phục hồi (recovery) (cid:123) ...

33

Kết luận

Để đảm bảo tính an toàn và toàn vẹn dữ liệu (cid:123) Đ/v người thiết kế CSDL

ế ế

(cid:122) Phải định nghĩa các ràng buộc toàn vẹn về dữ liệu

(cid:123) Đ/v người quản trị hệ thống

(cid:122) Phải định nghĩa các khung nhìn (cid:122) Phải phần quyền cho (nhóm) người dùng

(cid:123) Đ/v hệ CSDL

(cid:122) Phải xác minh được người dùng (cid:122) Phải kiểm tra các ràng buộc DL một cách tự động (cid:122) Phải đảm bảo các tính chất ACID cho giao dịch người

34

Vũ Tuyết Trinh, b/m Các hệ thống thông tin, khoa CNTT, ĐHBKHN

17

dùng

Có thể bạn quan tâm