Tải bản đầy đủ (.docx) (14 trang)

Tổng hợp kiến thức DBMS_Hệ quản trị Cơ sở 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 (241.02 KB, 14 trang )

1. Tại sao bạn lựa chọn hệ thống CSDL thay vì lưu dữ liệu trong file
quản lý bởi hệ điều hành? Khi nào bạn không nên dùng hệ CSDL?




Khi lưu trữ trên file thì chúng ta gặp phải 1 số vấn đề sau:
- Bộ nhớ không đủ để lưu trữ nếu dữ liệu quá lớn
- Dữ liệu phải chuyển qua lại giữa bộ nhớ chính với bộ nhớ phụ nên nếu
dùng hệ điều hành 32bit thì không đủ.
- Với lưu trữ trên file thì mỗi câu truy vấn phải viết 1 chương trình đặc
biệt.
- Không đảm bảo tính nhất quán.
- Khi gặp sự cố thì khôi phục lại dữ liệu một cách khó khăn.
- Gặp vấn đề trong bảo mật và kiểm soát truy cập.
Trong khi đó chúng ta dùng hệ thống CSDL có những lợi ích sau:
- Độc lập dữ liệu và truy cập hiệu quả.
- Giảm thời gian phát triển ứng dụng.
- Hợp nhất dữ liệu và bảo mật.
- Quản trị dữ liệu thống nhất.
- Truy cập đồng thời và khôi phục khi gặp sự cố.

Nếu những lợi ích trên không quan trọng với ứng dụng của bạn, thì việc sử
dụng một tập các file là giải phát tốt hơn vì việc duy trì và thực hiện trên DBMS
phải trả giá thành cao hơn.

2. Độc lập dữ liệu mức logic (Logical data independence) là gì? Tại sao
nó quan trọng?
Độc lập dữ liệu logic là người quản trị có thể thay đổi các cấu trúc
trong mức khái niệm mà không ảnh hưởng đến mức vật lý.
Vì những thay đổi này do người quản trị thay đổi cho phù hợp với sự


thay đổi với sự thay đổi của dữ liệu thực tế liên quan đến hệ thống
CSDL, view ra cho người dùng xem nên nó quan trọng hơn độc lập vật
lý.
3. Giải thích sự khác nhau giữa độc lập dữ liệu mức logic và độc lập dữ
liệu mức vật lý (physical data independence)? Hãy cho ví dụ minh họa.
Độc lập dữ liệu vật lý là các thay đổi trong mức vật lý để nâng cao hiệu năng
lưu trữ mà không ảnh hưởng đến mức khái niệm (người quản trị dữ liệu


không cần quan tâm nhiều đến mức vât lý cũng như sự thay đổi của mức
này).
Độc lập dữ liệu logic là người quản trị có thể thay đổi các cấu trúc trong
mức khái niệm mà không ảnh hưởng đến mức vật lý.

4. Giải thích sự khác biệt giữa lược đồ ý niệm/logic (conceptual /logical
schema), lược đồ vật lý/bên trong (Physical/internal schema) và lược đồ
ngoài (external schema).
Lượt đồ ngoài (external chema) là những bàn ghi cụ thể, người
dùng cũng như người quản trị CSDL sẽ thao tác với mô hình ngoài dùng
ngôn ngữ truy vấn dữ liệu.
Lượt đồ ý niệm/ logic (conceptual/ logical schema) là định nghĩa
các mô hình quan hệ (các bảng).
Lượt đồ trong (Physical/ internal schema) là mô hình, cách thức
lưu dữ liệu vật lý của hệ thống CSDL.
5. Trách nhiệm của DBA. Giả sử là DBA không cần quan tâm đến việc
thực hiện các câu truy vấn của chính DBA, thì DBA có cần hiểu về tối
ưu hóa câu truy vấn không? Tại sao?
Trách nhiệm của DBA:
- Thiết kế lược đồ logic và lược đồ vật lý.
- Điều khiển bảo mật và phân quyền, dữ liệu luôn được toàn vẹn.

- Đảm bảo cho dữ liệu luôn trong tình trạng sẵn sàng và phục hồi lại khi có
sự cố xảy ra.
- Sự điều chỉnh dữ liệu cần phải tối ưu hơn.
DBA cần phải hiểu về tối ưu hóa câu truy vấn vì tầm quan trọng của DBA vì rất
lớn. Cần phải am hiểu trong nhiều mảng liên quan đến lập trình để đảm bảo cho hệ
thống CSDL luôn được hoạt động tốt và am hiểu về tối ưu câu truy vấn để có thể
tối ưu hệ thống CSDL 1 cách tốt nhất khi cần thiết.

6. Ông A cần mua một hệ CSDL. Để tiết kiệm chi phí, ông A chỉ mua
một hệ CSDL với số tính năng ít nhất có thể. Ông ta lập kế hoạch chỉ
chạy nó một mình trên máy PC của ông ấy và không share thông tin với


ai cả. Hãy cho biết tính năng nào trong các tính năng dưới đây của
DBMS ông A mua nên có và tại sao:
+ Tiện ích bảo mật
+ Kiểm soát đồng thời
+ Khôi phục dữ liệu sau sự cố
+ Cơ chế khung nhìn
+ Ngôn ngữ truy vấn
Ông A nên mua DBMS có các tính năng sau:
- Tiện ích bảo mật (nên có vì không có chức năng này dữ liệu của ông A có
thể sẽ bị tấn công).
- Khôi phục dữ liệu sau sự cố (cần thiết để tránh mất dữ liệu khi gặp sự cố).
- Cơ chế khung nhìn (Phải có để ông A dễ dàng sử dụng).
Kiểm soát đồng thời với ngôn ngư truy vấn có thể không cần vì chỉ có 1 mình ông
A sử dụng và ngôn ngữ truy vấn ông A cũng không cần biết vì đó là công việc của
DBA quản lý hệ CSDL đó.

7. Mô tả cấu trúc của một DBMS. Giả sử hệ điều hành của bạn được

nâng cấp để hỗ trợ thêm một số chức năng về file (ví dụ khả năng cho
phép lưu một chuỗi các bytes lên đĩa). Hãy cho biết lớp nào của DBMS
bạn cần phải viết lại để có thể tận dụng ưu điểm của các tính năng mới
đó.
Cấu trúc của một DBMS gồm 4 phần:
-

-

Mức nội (interval level): mô tả cấu trúc lưu trữ vật lý của CSDL
Mức ý niệm (conceptual level):
• Mô tả toàn bộ cấu trúc của cơ sở dữ liệu
• Che dấu chi tiết vật lý
• Tập trung vào mô tả dữ liệu, mối quan hệ, các ràng buộc.
Mức ngoại (external level): mô tả một phần của CSDL ứng với góc nhìn
của một nhóm người dùng.

Để có thể tận dụng ưu điểm của tính năng cho phép lưu một chuỗi các byte
lên đĩa chúng ta cần phải viết lại mức ngoại.

8. Trả lời các câu hỏi sau:


1.

Giao tác (transaction) là gì?
Transaction là một tập hợp các hành động thực hiện cùng một chức năng và
chúng chỉ có thể cùng thành công hoặc thất bại.

2.


Tại sao một DBMS thực hiện xen kẽ các hành động của các giao
dịch khác nhau thay vì thực hiện lần lượt từng giao dịch một ?
DBMS thực hiện xen kẽ các transaction nhằm mục đích tận dụng tối đa thời
gian trống của các chương trình trong hệ thống. Nếu chỉ thực hiện từng giao
dịch một thì một số chương trình sẽ rảnh nhưng không có công việc làm, từ
đó hiệu suất kém.

3.

Một user phải chắc chắn điều gì để đảm bảo tính nhất quán giữa
một giao dịch và CSDL ? Một DBMS nên chắc chắn điều gì để
đảm bảo tính nhất quán giữa thực hiện đồng thời nhiều giao dịch
và CSDL.
DBMS phải đảm bảo rằng giao dịch được thực thi toàn bộ và độc lập với các
giao dịch khác. Một tính chất quan trọng của giao dịch trong DBMS là tính
nguyên tử và có tính cô lập. Các giao dịch hoặc là thành công hoặc thất bại
hoàn toàn. Điều này đảm bảo tính nhất quan của dữ liệu.

4.

Giải thích về nghi thức khóa 2 giai đoạn nghiêm ngặt (the strict
two-phase locking protocol).
Khóa hai-pha nghiêm ngặt sử dụng các khóa chia sẻ và khóa độc quyền để
bảo vệ dữ liệu. Một giao dịch phải nắm giữ tất cả các khóa cần thiết trước
khi thực thi và không giải phóng bất cứ khóa nào trước khi giao dịch kết
thúc hoàn toàn.

5.


Tính chất WAL là gì và tại sao nó quan trọng ?

Đặc tính WAL ảnh hưởng đến chiến lược logging trong DBMS. WAL là viết tắt
của Write- Ahead Log, có nghĩa là mỗi một thao tác viết lên cơ sở dữ liệu đều phải
được ghi vào log (trên đĩa) trước khi nó thực sự xảy ra trong cơ sở dữ liệu. Điều
này bảo vệ được cơ sở dữ liệu nếu có sự cố xảy ra trong quá trình giao dịch đang
thực hiện. Bằng việc ghi lại những thay đổi vào trong log trước khi những thay đổi
này thực sự diễn ra, cơ sở dữ liệu biết được phải làm lại những thao tác nào để khôi


phục sự cố. Ngược lại, nếu việc ghi vào log diễn ra sau thì cơ sở dữ liệu sẽ không
thể phát hiện được có những thay đổi nào đã xảy ra trong quá trình khôi phục sự cố

TRIGGER
Câu 1: Ràng buộc khóa ngoại là gì? Tại sao các ràng buộc như vậy là quan trọng?
Tính toàn vẹn tham chiếu là gì?
Ràng buộc khóa ngoại trong bảng CSDL là trường phù hợp với trường phù hợp với
trường khóa chính trong bảng khác. Trường khóa ngoại được sử dụng để tạo ra mối
quan hệ với trường khóa chính của bảng chính. Điều này ngăn cản bạn chèn thêm
bất kỳ thêm bất kỳ dữ liệu không hợp lệ trong trường hơp khóa ngoại vì trường
khóa ngoại chỉ chấp nhận những giá trị đã có trong trường khóa chính.
Tính toàn vẹn tham chiếu là sự nhất quan về CSDL giữa 2 quan hệ tham chiếu với
nhau.
Câu 2: Hãy cho biết điểm mạnh và điểm yếu của cơ chế trigger. Trình bày sự
tương phản giữa trigger với các ràng buộc toàn vẹn khác được hỗ trợ bở SQL.
Điểm mạnh của trigger:
Tính toán cập nhật dữ liệu tự động
Kiểm tra dữ liệu nhập
Kiểm tra ràng buộc phức tạp
Bẫy lỗi dễ hiểu

 Điểm yếu của trigger
Không tạo và tham chiếu bảng
Không tạo, thay đổi xóa cấu trúc đối tượng sẵn có trong CSDL
Không gán cấp quyền cho người dùng

-

Trigger có thể tạo ra 1 bảng ảo khi thao tác trên CSDL nó sẽ tự động cập nhật.

TRANSACTION
Câu 1. Trả lời các câu hỏi sau:
1.
2.

3.

Transaction là gì? Nó khác gì khi so với một chương trình thông thường
(chẳng hạn một chương trình viết bằng ngôn ngữ C)
Định nghĩa các thuật ngữ sau: atomicity, consistency, isolation, durability,
schedule, blide write, dirty read, unrepeatable read, serializable schedule,
recoverable schedule, avoids-cascading-aborts schedule.
Mô tả Strict 2PL.


1.

Bài làm:
Transaction (giao dịch)là một thực thi của một chương trình người dùng, và
được DBMS xem như một chuỗi các thao tác(lệnh). Các thao tác này có thể
được thực hiện bằng một giao dịch nào đó bao gồm: các phép đọc và viết lên

các đối tượng cơ sở dữ liệu, trong khi đó các thao tác trong một chương trình
thông thường có thể bao gồm dữ liệu đầu vào của người dùng, truy cập các
thiết bị mạng, xây dựng giao diện người dùng.
Sự khác biệt của Transaction(T) so với các phần mềm viết bằng ngôn ngữ
khác là : T phải thực thi trên DBMS, kích hoạt thực hiện trong quá trình thực
hiện chương trình.

2.

STT
1

Thuật ngữ
atomicity

Định nghĩa
Tính nguyên tử - Tất cả các thao tác nằm trong
giao dịch được thực hiện thành công hoặc thất
bại hoàn toàn. Người dùng không phải lo lắng
về ảnh hưởng của các giao dịch chưa được
thành công (giả sử, có sự cố xảy ra khi giao dịch
này đang trong quá trình thực hiện).

2

consistency

Tính nhất quán - Mỗi giao dịch được thực thi
không tranh chấp với các giao dịch khác, phải
đảm bảo tính chất nhất quán của cơ sở dữ liệu.

DBMS thừa nhận rằng tính nhất quán được đảm
bảo trên mỗi giao dịch. Việc đảm bảo tính chất
này của giao dịch là trách nhiệm của người
dùng.

3

isolation

4

durability

Tính cô lập - Người dùng nên có thể hiểu được
một giao dịch mà không cần xem xét những ảnh
hưởng của các giao dịch tương tranh khác đang
chạy, thậm chí DBMS có thể chèn vào các thao
tác khác vì những lý do thực thi. Tính chất này
đôi khi được nói tới như là tính chấtcô lập.Các
giao dịch được cô lập, hay còn gọi là được bảo
vệ từ những ảnh hưởng của các giao dịch tương
tranh khác.
Tính bền vững - Khi DBMS thông báo cho
người dùng biết rằng giao dịch đã thành công


hoàn toàn, những ảnh hưởng của nó nên được
duy trì ngay cả khi hệ thống gặp sự cố trước khi
tất cả những thay đổi này kịp lưu lại trên đĩa.
5


Schedule

Lược trình – là một chuỗi các giao dịch (có thể
xếp xen kẽ với nhau).
.
Viết mù là việc một giao dịch nào đó viết lên
một đối tượng mà thậm chí không đọc đối tượng
này.

6

blide write

7

dirty read

Đọc bẩn: xảy ra khi một giao dịch nào đó đọc
một đối tượng mà đối tượng này đang được thay
đổi bằng một giao dịch chưa thành công khác.

8

unrepeatable
read

Đọc không thể lặp lại: xảy ra khi một giao dịch
nào đó không thể đọc cùng một giá trị đối tượng
nhiều hơn một lần, thậm chí giao dịch này

không được phép thay đổi giá trị. Giả sử giao
dịch T2 thay đổi giá trị của đối tượng A – đối
tượng đang được đọc bằng một giao dịch T1
trong khi T1 vẫn đang trong quá trình xử lý.
Nếu T1 cố gắng đọc giá trị A một lần nữa, nó sẽ
có một kết quả khác, mặc dù nó không thay đổi
A.

9

serializable
schedule

Lượt biểu tuần tự - trên một tập S của các giao
dịch là một lịch trình mà đều giống với lịch
trình tuần tự hoàn toàn trên tập các giao dịch
thành công trong S.

10

recoverable
schedule

11

avoidscascading-aborts

Lịch trình phục hồi là một lịch trình mà trong đó
một giao dịch có thể được thành công chỉ sau
khi tất cả các giao dịch khác đọc nó đã thành

công.
Lịch trình tránh hủy bỏ chồng là một trong số
các giao dịch chỉ đọc những thay đổi của các


schedule.

giao dịch đã thành công. Một lịch trình như vậy
không chỉ có khả năng phục hồi, việc hủy bỏ
một giao dịch có thể được hoàn thành mà không
hủy bỏ chồng các giao dịch khác.

3. Transactions có tính ACID:
- Nguyên tử: được thực hiện toàn bộ hoặc không được thực hiện nào cả.
nếu sự cố xảy ra thì hệ thống sẽ hủy.
-Tính nhất quán: các ràng buộc sẽ được duy trì, đảm bảo.
-Cô lập: khi được ng dùng thực hiện thì sẽ coi như 1 tiến trình thực hiện
nhưng thực tế là nhiều tiến trình xảy ra.Sẽ được thực hiện không có transactin
nào chen nganh
-Bền vững: 1 transaction đảm bảo khi hệ thống có sự cố xảy ra.
Trạng thái transactions:
-Khởi động: duy trì suốt quá trình được thao tác
-Hoàn thành 1 phần: sau khi lệnh cuối cùng đã được thực hiện
-Thất bại: sau khi phục hồi những thao tác không thể tiến hành được nữa
-Hủy bỏ: sau khi transaction đã được rolled back và csdl được phục hồi ở trạng
thái trước
trạng thái bắt đầu của transaction(khởi động: nếu không có lỗi, hoặc hủy hoàn
tòan)
-Committed: sau khi transaction đã thực hiện hoàn toàn
4.


Strict 2PL là một giao thức khóa được sử dụng rộng rãi nhất trong đó
1. Một giao dịch yêu cầu một khóa chia sẻ/ độc quyền trên một đối tượng
trước khi nó đọc/ sửa đối tượng đó.
2.Tất cả các khóa mà giao dịch nắm bắt được giải phóng khi giao dịch đó
thành công.


5.

Lịch trình tuần tự là lịch trình mà các chỉ thị được thực hiện tuần tự đến
khi hoàn tất một giao dịch thì mới chuyển sang thực hiện chỉ thị của giao
dịch khác.
Tính khả tuần tự (Serializability): một lịch trình có tính khả tuần tự là một
lịch trình tương đương với một lịch trình tuần tự nào đó.
Xung đột (Confict): 2 chỉ thị trong một lịch trình gọi là xung đột khi nó
thỏa 3 điều kiện sau:
- Thuộc về 2 giao dịch khác nhau
- Thực hiện trên cùng dữ liệu X
- Ít nhất một chỉ thị là Write (X)
Tương đương xung đột (conflict equivalent): nếu lượt biểu này có được
nếu đổi chỗ các lệnh không xung đột các lượt biểu kia.
Vd:
S1
R1(X)
W2(X)

S2
W2(X)
R1(X)




Không tương đương xung đột

Khả tuần tự xung đột (confilct serializable): nếu nó tương đương xung
đột với lượt biểu tuần tự.
Lược tiểu tuần tự View (View Serializability): thỏa 2 điều kiện
-

Nếu Ti đọc giá trị đầu của Q trong S thì trong S’ Ti cũng đọc giá trị ban
đầu của Q
Với mỗi đối tượng dữ liệu Q,trong Ti thực hiện thao tác đọc(read) Q mà
Q này trước đó được ghi(write) bởi Tj
Nếu Ti ghi(write) giá trị cuối cùng của Q thì Tj cũng ghi(write) bởi giá trị
cuối cùng của Q

Khả tuần tự view (view serializable): 1 lịch trình gọi là khả tuần tự view
nếu nó tương đương view với 1 lịch trình tuần tự.
-

Lịch trình khả tuần tự xung đột là khả tuần tự view


-

Lịch trình khả tuần tự view có thể không khả tuần tự xung đột -> do các
write mù (blind write)
Write mù: thực hiện hoạt động write mà không thực hiện read.


Lịch trình khả phục hồi (Recoverable schedule): là lịch trình trong đó,
đối với mỗi cặp giao dịch Ti, Tj, nếu Tj đọc hạng mục dữ liệu được viết bởi
Ti thì hoạt động bàn giao của Tj phải xảy ra sau hoạt động bàn giao của Ti.
Phục hồi : commit của transaction ghi xuất hiện trước commit của
transaction đọc
Lịch trình khả phục hồi nhưng không lan truyền (Cascadeless
schedules): là lịch trình trong đó mỗi cặp giao dịch Ti, Tj nếu Tj đọc một
hạng mục dữ liệu được viết trước đó bởi Ti, hoạt động bàn giao của Ti phải
xuất hiện trước hoạt động đọc của Tj.
Phục hồi: commit của transactuon ghi phải xuất hiện trước read của
transaction đọc.
Nghi thức kiểm soát đồng thời dựa trên Lock (Lock-Based Concurrency
Control):
Nghi thức 2 giai đoạn nghiêm ngặt Strict Two – Phase Locking:
Nếu trans yêu cầu đọc thì hệ thống sẽ cấp thẻ (S), nếu yêu cầu sửa thì cấp
(X).
S – sau khi dùng xong thì mới trả
X – trả lúc nào cũng được nhưng không được cấp lại nữa.


PHÂN QUYỀN TRONG SQL SERVER


Hình thành theo cơ cấu
- Người đăng nhập (login)
- Người dùng (user)
- Quyền hạn (permission)
- Nhóm quyền (role)

@ Người đăng nhập thể hiện là mỗi một người dùng với một số quyền hạn

ứng với một dữ liệu.


ĐĂNG NHẬP (LOGIN)
-

Tạo người đăng nhập
Exec sp_addlogin ‘tên_login’, ‘mật_khẩu’ [,’dữ liệu’]
Create login tên_login with password = ‘mật_khẩu’ [,default_database =
dữ_liệu]

-

-

Xóa người đăng nhập
Exec sp_droplogin ‘tên_login’
Drop login tên_login
Thay đổi người đăng nhập
Alter login { [enable | disable] | with {password = ‘…’ | default_database
= …}

NGƯỜI DÙNG (USER)
-

Tạo người dùng cho từng dữ liệu


Exec sp_adduser ‘tên_login’, ‘tên_user’ [,’tên_role’]
-


Create user tên_user for tên_login
Xóa người dùng
Exec sp_dropuser ‘tên_user’
Drop user tên_user

NHÓM QUYỀN (ROLE)
-

Tạo nhóm quyền:
exec sp_addrole 'tên_role'
create role tên_user

-

Xóa nhóm quyền
exec sp_droprole 'tên_role'
drop role tên_role

NGƯỜI DÙNG VÀ NHÓM QUYỀN
-

Gắn người dùng với nhóm quyền
exec sp_addrolemember 'tên_role', 'tên_user'

-

Xóa nhóm quyền
exec sp_droprolemember 'tên_role', 'tên_user'


QUYỀN HẠN (PERMISSION)

-

Tạo quyền hạn
grant {ALL | permission} on table[(column [,...n])]
to { user | role [,...n]} [with grant option]
with grant option: được phép gán lại quyền mà mình cho người khác

-

Xóa quyền hạn


Revoke [grant option for] {ALL | permission }
on table[column [,...n])] to { user | role [,...n] } [cascade]
grant option for: bỏ tính năng cấp lại quyền cho người khác (quyền vẫn
được giữ lại)
cascade: bỏ tất cả các quyền ( ở các kế thừa)
VÍ DỤ
-

-

Đăng nhập ‘sa’
Exec sp_addlogin ‘u1’,’123’
Exec sp_addlogin ‘u2’,’123’
Exec sp_adduser ‘u1’,’u1’
Exec sp_adduser ‘u2’,’u2’
Grant select on sinhvien to u1 with grant option

 U1 có quyền dùng 2 lệnh
• Select * from sinhvien
• Grant select on sinhvien to u2 [with grant option]
Đăng nhập ‘u1’
Grant select on sinhvien to u2 with grant option
 Vậy u2 có quyền select và grant
Đăng nhập với ‘sa’
Revoke select on sinhvien to u1 cascade
 Xóa hết quyền select và grant ở u1 và cả u2
Revoke grant option for select on sinhvien to u1 cascade
 Xóa quyền grant ở u1 và quyền select và grant ở u2



×