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
17 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1056 | Lượt tải: 0
Nội dung tài liệu An toàn và toàn vẹn dữ liệu =, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
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
Các file đính kèm theo tài liệu này:
- notes7_3563.pdf