Tải bản đầy đủ (.pdf) (17 trang)

Slide: Bài giảng CSDL: An toàn và toàn vẹn dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (331.09 KB, 17 trang )

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

ndữ 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
H tậ
hệ QTCSDL
CSDL
Giáo viên
Sinh viên
Lớp học
Mô h
2
H
ọc
tậ
p
Sinh viên
Điểm thi


n
h
ọc
Điểm thi
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,
hh h i bl )
h
oc
h
am,
h
ocv
i
,
b
ac
l
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)
Đặ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
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ảovệ CSDL chống lạisự truy nhậpbấthợp
pháp
¾ Cần các cơ chế cho phép
z Nhậnbiếtngười dùng
z Xác định các thao tác hợplệ vớitừ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ềnngười dùng
{ Đ/v người khai thác CSDL
Q

đ
d

li

z
Q
uy

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
Q ề ả lý tài ê thê / á á hệ
7

z
Q
uy

n qu

n


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
{
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ệntử thẻ thông minh
8
{
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,
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ềncủangườ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 < i il > O <Obj t> T < >
G
ran
t <
pr
i
v
il
ege
> O
n

<Obj
ec
t> T
o
<
user
>
[With Grant Option]
REVOKE <privilege> ON <Object> FROM <user>
[RESTRICT | CASCADE]
Privilege = {Insert | Update | Delete | Select |
Create Alter | Drop | Read | Write}
11
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
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
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ộcmiềngiá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 Tr
o
n
g

bả
n
g

S
INH VIEN
13
ogbả gS
_
CONSTRAINT gttuoi CHECK (tuoi = year(date()) –
year(ngaysinh))
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

m
aS
V
14
aS
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 <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
REFEREN
C
E

S S
INH VIEN
[
m
aS
V
]
15
CS S
_
[aS]
CONSTRAINT diem-mon FOREIGN KEY maSV
REFERENCES SINH_VIEN[maSV]
Toàn vẹndữ liệu
{ Mục đích: đảmbảo tính đúng đắncủa DL trong
quá t
r
ì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
16
¾ Quảntrị giao dịch
¾ Điềukhiểntươ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ả DL
z
L
à
c
á
c x




đ
ượ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>
17
[OF <attribute
_
name>] ON <table name>
[FOR EACH ROW ]
BEGIN
<< trigger body goes here >>
END <trigger_name>;
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
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)
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ảnB
Tài khoản A Tài khoản B
Sự
N
g
ân hàn
g

500USD
20
Tăng

số




của

tài

khoản

B

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

cố
gg
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ềukhiển

tương tranh
21
z Tính cô lập (Isolation)
z Tính bền vững (Durability)
Phục hồidữ 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
th
ực
hiệ
n
h
o

c
khô
ng c
ó


n
h

độ
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
t2:=t2+500;
Write(B,t2);
t1:=t1-500;
Write(A,t1);
}
stop
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
đầ àkhikếtthú i dị h
đầ
u v
à
sau
khi

kết

thú
c g

i
ao
dị
c
h
{ Ví dụ
T: Read(A,t1);
If t1 > 500 {
Read(B,t2);
t2:=t2+500;
A+B = C
23
t2:=t2+500;
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
idị hkhá tiế hà h đồ thời
g
i
ao
dị
c
h

khá
c

tiế
n

n
h

đồ
ng
thời
{ Ví dụ: A= 5000, B= 3000
T: Read(A,t1);
If t1 > 500 {
Read(B,t2);
t2:=t2+500;
24
t2:=t2+500;
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 R
o
ll

bac
k
(sa
v
epo
in
t)

//

sa
v
epo
in
t
=
0
==> A
bo
r
t
27
o bac (sa epo t) // sa epo t 0 bo t
Đ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);
28
B := B + 50;
read(B);
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ựchiện giao dịch
29
Kỹ thuật khoá
{ Mục đích
Đả bả iệ thậ đế áDLđ th hiệ
z
Đả
m
bả
o v
iệ
c
t
ruy n

hậ
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
LS(
D
)
kh á hi ẻ
30
z
LS(
D
)
:
kh

o
á
c
hi
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+tem
p;
31

();
p;
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+tem
p;
32
(
);
p;
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ềukhiểntương tranh
z các chế độ khoá, giải quyết khoá chết
z kỹ thuật gán nhãn
{ Lậplịch
{ Các kỹ thuậtphụchồi(recovery)
{
33
Kếtluậ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ẹnvề 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ảiphầ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 đảmbảocáctínhchất ACID cho giao dịch người
dùng

×