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
Mô
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
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
{
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
ử
lý
đ
ượ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ố
dư
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
ó
hà
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
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;
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