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

Giáo trình hệ quảng trị cơ sở dữ liệu Oracle

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 (10.59 MB, 184 trang )

TRƯỜNG ĐẠI HỌC CẦN THƠ

KHOA CÔNG NGHỆ THÔNG TIN & TT

GIÁO TRÌNH

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

TS. NGUYỄN THÁI NGHE
ThS. TRẦN NGÂN BÌNH
ThS. ĐẶNG QUỐC VIỆT

NĂM 2014


LỜI NĨI ĐẦU
Hiện nay hầu hết các hệ thống thơng tin đều liên quan đến việc lưu trữ và quản trị cơ
sở dữ liệu. Nắm bắt được nhu cầu đó, quyển giáo trình Hệ quản trị cơ sở dữ liệu
(HQTCSDL) được biên soạn với mong muốn mang lại cái nhìn tổng quan về các vấn
đề trong lưu trữ, bảo mật và truy vấn cơ sở dữ liệu.
Trong quyển giáo trình này, sau mỗi phần lý thuyết về HQTCSDL là phần thực hành.
Các bài thực hành được thiết kế theo từng buổi, trong đó có cả phần hướng dẫn từng
bước và phần tự làm để người đọc có thể tự thực hiện. Những bài thực hành này được
thiết kế hướng đến việc sử dụng HQTCSDL Oracle. Quyển giáo trình được cấu trúc
thành hai phần gồm sáu chương và các phụ lục. Trong đó phần 1 giới thiệu về lý
thuyết cơ bản trong HQTCSDL gồm có các chương như: Chương 1 trình bày các khái
niệm chính trong HQTCSDL và vai trị của nhà quản trị CSDL; Chương 2 giới thiệu
các biện pháp bảo vệ CSDL đặc biệt là vấn đề cấp quyền, sao lưu và phục hồi cũng
như toàn vẹn trong CSDL; Chương 3 trình bày về quản lý giao dịch và phục hồi cũng
như các vấn đề về điều khiển cạnh tranh trong CSDL. Phần 2 sẽ tập trung minh họa
trên HQTCSDL cụ thể là Oracle. Trong đó, chương 4 giới thiệu về Oracle và các biện


pháp bảo vệ CSDL trong Oracle. Chương 5 trình bày cách lập trình CSDL trong
Oracle đặc biệt là dùng PL/SQL. Chương 6 giới thiệu về quản lý giao dịch, sao lưu và
phục hồi trong Oracle. Sau cùng là phần phụ lục giới thiệu các lỗi thường gặp, các
hàm xử lý dữ liệu, và kết nối CSDL Oracle từ ứng dụng.
Giáo trình này được biên soạn nhằm mục tiêu giảng dạy cho các sinh viên đại học (các
ngành hệ thống thơng tin, khoa học máy tính, công nghệ thông tin,…) tại Trường Đại
học Cần Thơ. Mặc dù đã nhận được nhiều góp ý quý báo của các đồng nghiệp, tuy vậy
trong quá trình biên soạn và chỉnh sửa giáo trình chắc chắn khơng khỏi có những thiếu
sót. Rất mong tiếp tục nhận được sự góp ý, phản hồi từ các bạn sinh viên, các đồng
nghiệp và các chuyên gia trong lĩnh vực CNTT&TT để quyển giáo trình này càng
ngày càng hồn thiện hơn.
Cần Thơ, ngày 15 tháng 1 năm 2014
Nguyễn Thái Nghe
Trần Ngân Bình
Đặng Quốc Việt

Trang ii


MỤC LỤC
LỜI NĨI ĐẦU .........................................................................................................i
MỤC LỤC ............................................................................................................ iii
DANH MỤC HÌNH ................................................................................................v
DANH MỤC BẢNG ........................................................................................... vii
DANH MỤC TỪ VIẾT TẮT ............................................................................. viii
TỔNG QUAN MÔN HỌC ....................................................................................ix
PHẦN I. HỆ QUẢN TRỊ CSDL.............................................................................1
CHƯƠNG 1. GIỚI THIỆU.....................................................................................2
1.1. Định nghĩa hệ quản trị CSDL ......................................................................2
1.2. Chức năng của hệ quản trị CSDL ................................................................2

1.3. Các thành phần của một HQTCSDL............................................................4
1.4. Kiến trúc hệ CSDL đa người dùng ..............................................................5
1.5. Nhà quản trị CSDL ......................................................................................7
CÂU HỎI ÔN TẬP .............................................................................................8
CHƯƠNG 2. CÁC BIỆN PHÁP BẢO VỆ CSDL .................................................9
2.1. An tồn trong CSDL ....................................................................................9
2.2. Cấp quyền.....................................................................................................9
2.3. Khung nhìn .................................................................................................11
2.4. Sao lưu và phục hồi ....................................................................................13
2.5. Toàn vẹn dữ liệu.........................................................................................14
2.6. Mật hoá dữ liệu ..........................................................................................14
2.7. RAID (Redundancy Array of Independent Disks).....................................15
CÂU HỎI ÔN TẬP ...........................................................................................17
CHƯƠNG 3. QUẢN LÝ GIAO DỊCH & PHỤC HỒI ........................................18
3.1. Giao dịch (transaction) ...............................................................................18
3.2. Điều khiển cạnh tranh (Concurrency control) ...........................................21
3.3. Phục hồi CSDL ..........................................................................................39
CÂU HỎI ÔN TẬP ...........................................................................................44
PHẦN II. HỆ QUẢN TRỊ CSDL ORACLE ........................................................45
CHƯƠNG 4. ORACLE VÀ CÁC BIỆN PHÁP BẢO VỆ CSDL .......................46
4.1. Giới thiệu hệ quản trị CSDL Oracle ..........................................................46
4.2. Các khái niệm và cấu trúc lưu trữ CSDL Oracle .......................................47
4.3. Mở/tắt CSDL và thể hiện (startup/shutdown) ............................................56
4.4. Kết nối CSDL từ client ..............................................................................58
4.5. Bảng dữ liệu và các đối tượng liên quan ....................................................59
4.6. Quản lý người dùng....................................................................................66
4.7. Quản lý quyền trong Oracle .......................................................................69
4.8. Quản lý vai trò (Role) ................................................................................73



4.9. Import và export .........................................................................................76
4.10. Oracle Data Pump ....................................................................................78
BÀI TẬP THỰC HÀNH...................................................................................80
CHƯƠNG 5. LẬP TRÌNH CSDL TRONG ORACLE ........................................96
5.1. PL/SQL ......................................................................................................96
5.2. Các loại mệnh đề ......................................................................................101
5.3. Các cấu trúc điều khiển ............................................................................102
5.4. Kiểu con trỏ (Cursor) ...............................................................................108
5.5. Thủ tục, hàm và trigger ............................................................................112
BÀI TẬP THỰC HÀNH – KHỐI VÔ DANH ...............................................118
BÀI TẬP THỰC HÀNH – HÀM, THỦ TỤC và TRIGGER .........................126
CHƯƠNG 6. QUẢN LÝ GIAO DỊCH TRONG ORACLE ..............................134
6.1. Các mức độ độc lập ..................................................................................134
6.2. Cơ chế khóa của Oracle ...........................................................................135
6.3. Sao lưu, phục hồi trong Oracle ................................................................138
BÀI TẬP THỰC HÀNH.................................................................................145
ÔN TẬP ..............................................................................................................150
PHỤ LỤC ...........................................................................................................153
CÁC LỖI THƯỜNG GẶP .................................................................................153
CÁC HÀM XỬ LÝ DỮ LIỆU ...........................................................................154
KẾT NỐI CSDL TỪ ỨNG DỤNG ....................................................................155
TÀI LIỆU THAM KHẢO ..................................................................................161

Trang iv


DANH MỤC HÌNH
Hình 1. Hệ cơ sở dữ liệu .........................................................................................2
Hình 2. Các thành phần của một HQTCSDL [Thomas 2005]................................4
Hình 3. Các thành phần của Bộ quản lý CSDL ......................................................5

Hình 4. Kiến trúc client-server 2 tầng ....................................................................6
Hình 5. Trách nhiệm của DA, DBA và SA ............................................................8
Hình 6. Tác dụng của tùy chọn WITH LOCAL CHECK OPTION .....................12
Hình 7. Các mức RAID ........................................................................................16
Hình 8. Tổ chức lưu trữ trong quá trình thực hiện giao dịch cập nhật CSDL ......18
Hình 9. Biểu đồ trạng thái tương ứng với một GD ...............................................19
Hình 10. Các thành phần liên quan việc quản lý GD trong HQTCSDL ..............21
Hình 11. Các lịch trình tuần tự .............................................................................23
Hình 12. Đồ thị chờ có chu trình ..........................................................................33
Hình 13. Sự phân cấp của độ mịn .........................................................................38
Hình 14. Sự cố xảy ra khi các GD đang thực hiện cạnh tranh .............................40
Hình 15. Một thể hiện CSDL ................................................................................47
Hình 16. Quan hệ giữa cấu trúc luận lý và vật lý trong CSDL ............................48
Hình 17. Mối quan hệ giữa Data block, extend và Segment ................................50
Hình 18. Mối tương quan giữa Tablespace và Datafiles ......................................51
Hình 19. Cấp phát thêm vùng lưu trữ cho CSDL .................................................53
Hình 20. Quy trình mở/tắt CSDL Oracle ..............................................................56
Hình 21. Role trong database................................................................................73
Hình 22. Oracle Net Manager ...............................................................................80
Hình 23. Đặt Net Service Name ...........................................................................81
Hình 24. Chọn giao thức mạng được sử dụng ......................................................81
Hình 25. Các thiết lập của giao thức .....................................................................81
Hình 26. Thiết lập tên service ...............................................................................82
Hình 27. Kiểm tra kết nối .....................................................................................82
Hình 28. Thơng báo kết nối thành cơng ...............................................................82
Hình 29. Giao diện SQL Developer .....................................................................83
Hình 30. Kết nối trực tiếp .....................................................................................83
Hình 31. Kết nối thơng qua Oracle Net ................................................................84
Hình 32. Cửa sổ chính của Oracle SQL Developer ..............................................84
Hình 33. Lỗi đăng nhập do chưa có quyền kết nối đến CSDL .............................85

Hình 34. Cấu trúc một khối PL/SQL ....................................................................96
Hình 35. Hai dạng khối chương trình PL/SQL .....................................................97
Hình 36. Vị trí lưu trữ các chương trình trong schema ......................................112
Hình 37. Các sự kiện của Trigger .......................................................................116
Hình 38. Dùng các biến ......................................................................................119
Hình 39. Cửa sổ nhập dữ liệu .............................................................................119
Hình 40. Các lựa chọn sao lưu toàn CSDL.........................................................140


Hình 41. Một chiến lược sao lưu tăng dần chênh lệch .......................................141
Hình 42. Một chiến lược sao lưu tăng dần tích lũy ............................................142
Hình 43. Ngun lý sao lưu, hồn lại và phục hồi CSDL ..................................144
Hình 44. Mơ hình kiến trúc của JDBC tổng quát và dành cho Oracle. ..............156
Hình 45. Mơ hình JDBC Interfaces ....................................................................156
Hình 46. Mơ hình làm việc giữa Java Application với DBMS. .........................156
Hình 47. Các bước sử dụng JDBC trong java ....................................................157
Hình 48. Tạo đối tượng trong NetBean ..............................................................157
Hình 49. Cửa sổ tạo dự án mới. ..........................................................................158
Hình 50. Cửa sổ tạo ứng dụng Java mới. ............................................................158
Hình 51. Nạp thư viện.........................................................................................159
Hình 52. Chọn thư viện cần nạp .........................................................................159
Hình 53. Tạo lớp kết nối. ....................................................................................149
Hình 54. Tạo lớp Java mới .................................................................................149
Hình 55. Tạo form Java ......................................................................................153
Hình 56. Palette chứa các cơng cụ tạo form .......................................................153
Hình 57. Kết quả tạo form ..................................................................................154
Hình 58. Tạo form có bảng để hiện thị dữ liệu ...................................................158
Hình 59. Kết quả tạo form có bảng để hiện thị dữ liệu ......................................159
Hình 60. Tạo mẩu report bằng cơng cụ iReport .................................................159
Hình 61. Kết quả tạo report bằng công cụ iReport .............................................160


Trang vi


DANH MỤC BẢNG

Bảng 1. Lịch trình cạnh tranh ...............................................................................23
Bảng 2. Lịch trình gây mất dữ liệu cập nhật.........................................................24
Bảng 3. Lịch trình phụ thuộc vào GD khơng hồn tất ..........................................25
Bảng 4. Lịch trình phân tích khơng nhất qn......................................................25
Bảng 5. Lịch trình không khả phục hồi ................................................................26
Bảng 6. Giao thức 2PL giải quyết vấn đề mất dữ liệu đã cập nhật. .....................29
Bảng 7. Giao thức 2PL giải quyết vấn đề phụ thuộc vào GD khơng hồn tất......30
Bảng 8. Giao thức 2PL giải quyết vấn đề phân tích khơng nhất qn. ................30
Bảng 9. Lịch trình cuộn nhiều tầng (cascade rollback). ......................................31
Bảng 10. Tình trạng khóa chết ..............................................................................32
Bảng 11. Sự tương thích của các khóa trong cơ chế khóa đa hạt .........................38
Bảng 12. Một đoạn của tập tin nhật ký với 3 GD đang diễn ra song song. ..........41
Bảng 13. Các kiểu dữ liệu trong Oracle ...............................................................59
Bảng 14. Các mẫu biểu thức chính quy ................................................................64
Bảng 15. Một số quyền hệ thống thông dụng .......................................................69
Bảng 16. Một số quyền trên đối tượng thông dụng ..............................................71
Bảng 17. Các roles được định nghĩa sẵn ..............................................................75
Bảng 18. Thông tin về các roles ...........................................................................76
Bảng 19. Các tham số trong lệnh imp và exp .......................................................77
Bảng 20. Các tham số tương đương giữa imp/exp và Oracle Data Pump ............79
Bảng 21. Các ngoại lệ thường xảy ra .................................................................107
Bảng 22. Diễn giải các thuộc tính của con trỏ ....................................................110
Bảng 23. Các mức cơ lập theo chuẩn SQL92 .....................................................134
Bảng 24. Bảng tương thích của các khoá ...........................................................136



DANH MỤC TỪ VIẾT TẮT
TỪ VIẾT TẮT

Ý NGHĨA

CSDL

Cơ sở dữ liệu

GD

Giao dịch

HQTCSDL

Hệ quản trị cơ sở dữ liệu

PL/SQL

Procedural Language extension of SQL (Ngôn ngữ thủ
tục mở rộng của SQL)

RAID

Redundancy Array of Independent Disks (Mảng các đĩa
độc lập dư thừa)

RMAN


Recovery MANager (Chương trình quản lý phục hồi)

SCN

System Change Number (Số đếm thay đổi trong hệ
thống)

SQL

Structured Query Language (Ngôn ngữ truy vấn có cấu
trúc)

Trang viii


TỔNG QUAN VỀ MÔN HỌC HỆ QUẢN TRỊ CƠ SỞ DỮ
LIỆU
1. Mục đích u cầu
Giáo trình này được biên soạn nhằm mục đích phục vụ chủ yếu cho mơn học
Hệ quản trị cơ sở dữ liệu (HQTCSDL) của sinh viên đại học thuộc khoa CNTT&TT
trường Đại học Cần Thơ. Đây là một môn học giúp sinh viên nắm được các kiến thức
và các kỹ năng cơ bản để quản trị một CSDL quan hệ có phân quyền và bảo mật. Đồng
thời, sinh viên có khả năng sử dụng ngơn ngữ lập trình để tương tác mạnh mẽ với
CSDL thơng qua việc thiết kế và sử dụng thủ tục, hàm và trigger. Đa số các hệ quản trị
sử dụng phổ biến trên thị trường hiện nay đều hỗ trợ các tính năng trình bày trong giáo
trình này. Để minh họa, phần mềm được chọn để thực hành là hệ quản trị CSDL
Oracle 10g R2.
2. Nội dung cốt lõi
Tài liệu gồm 4 chương lý thuyết và 6 bài thực hành. Mỗi bài thực hành sẽ tập

trung vào một số nội dung với các bài tập có hướng dẫn và bài tập tự làm. Đối với mơn
học 02 tín chỉ, sinh viên sẽ thực hành trong 6 buổi (30 tiết) ứng với 6 bài thực hành với
các chủ đề khác nhau. Sau khi hồn tất học phần này, sinh viên có thể:
• Kết nối, quản lý CSDL (tạo/xóa/khởi động/tắt CSDL) .
• Quản lý và cấp quyền cho người dùng và sao chép CSDL.
• Thực hiện các thao tác cơ bản trên CSDL (tạo bảng, cài đặt ràng buộc
trên bảng; thêm, sửa, xóa dữ liệu).
• Lập trình tạo hàm, thủ tục, trigger với ngơn ngữ PL/SQL.
• Hiểu được sự điều khiển cạnh tranh giữa các giao dịch.
• Quản lý sao lưu, phục hồi.
• Hiểu và cài đặt các biện pháp bảo vệ hệ thống CSDL.
• Biết kết nối CSDL Oracle từ các ứng dụng bằng Java.
3. Kiến thức tiên quyết
Như một môn bắt buộc, môn học này được đưa vào giảng dạy cho sinh viên
thuộc các ngành Tin Học với yêu cầu sinh viên đã hoàn thành học phần Hệ Cơ Sở Dữ
Liệu (CT106).
4. Phương pháp học tập
Với mục tiêu nâng cao khả năng tự học tập và tự nghiên cứu của sinh viên,
người soạn đã cố gắng lồng ghép vào nội dung các ví dụ minh họa đơn giản, cụ thể;
đồng thời bố trí bố cục với mong muốn tạo sự dễ hiểu cho sinh viên và người đọc.
Để học tốt môn học này, trước hết sinh viên cần phải:
• Tham gia đầy đủ các buổi học lý thuyết trên lớp và các buổi thực hành
trên phịng máy.
• Trước mỗi buổi thực hành, SV tự nghiên cứu và làm phần bài tập có
hướng dẫn ở nhà.
• Trong mỗi buổi thực hành, sinh viên chỉ thực hiện phần bài tập khơng có
hướng dẫn.
• Sinh viên cần lưu lại tất cả các câu lệnh đã làm ở mỗi bài để sử dụng cho
các bài sau.



5. Một số quy ước

Các ký hiệu trình bày trong cú pháp của các câu lệnh có ý nghĩa như sau:
CHỮ HOA

từ khóa

chữ thường

từ do người dùng định nghĩa, cần thay thế khi viết lệnh cụ thể.

{A | B}

mục này bắt buộc phải có, nhưng có thể chọn A hoặc B.

[A]

mục A này khơng bắt buộc.

A ...

mục A có thể xuất hiện nhiều lần.

::=

được thay bằng

6. Các CSDL mẫu sử dụng trong giáo trình
CSDL1:

1. KTRUCSU(HOTEN_KTS, NAMS_KTS, PHAI, NOI_TN, DCHI_LL_KTS):
Mỗi kiến trúc sư có một họ tên, một năm sinh, phái, nơi tốt nghiệp, địa chỉ liên
lạc. Giả sử khơng có hai kiến trúc sư trùng tên.
2. CHUTHAU(TEN_THAU, TEL, DCHI_THAU): Mỗi chủ thầu xây dựng cơng
trình đều có một tên thầu, một số điện thoại và một địa chỉ. Giả sử khơng có hai
chủ thầu trùng tên.
3. CHUNHAN(TEN_CHU, DCHI_CHU): Mỗi chủ nhân của một cơng trình đều
có một tên chủ nhân và một địa chỉ. Giả sử khơng có hai chủ nhân trùng tên.
4. CONGNHAN(HOTEN_CN, NAMS_CN, NAM_VAO_N, CH_MON): Mỗi
công nhân tham gia xây dựng các cơng trình đều có một họ tên, một năm sinh,
một năm vào nghề, và một chuyên mơn nào đó. Giả sử khơng có hai cơng nhân
trùng họ tên.
5. CGTRINH(STT_CTR, TEN_CTR, DCHI_CTR, TINH_THANH, KINH_PHI,
TEN_CHU, TEN_THAU, NGAY_BD): Mỗi cơng trình có một số thứ tự, một
tên cơng trình, một địa chỉ, thuộc về một tỉnh thành nào đó, được xây dựng với
một kinh phí (đơn vị tính là triệu đồng), thuộc về sở hữu của một chủ nhân, do
một chủ thầu xây dựng, và được khởi công xây từ một ngày nào đó.
6. THAMGIA(HOTEN_CN, STT_CTR, NGAY_TGIA, SO_NGAY): Một cơng
nhân có thể tham gia xây dựng nhiều cơng trình, và một cơng trình cũng có
nhiều cơng nhân tham gia. Khi một cơng nhân tham gia vào một cơng trình nào
đó sẽ được ghi nhận lại ngày bắt đầu tham gia và số ngày tham gia.
7. THIETKE(HOTEN_KTS, STT_CTR, THU_LAO): Một kiến trúc sư có thể
thiết kế nhiều cơng trình, mỗi cơng trình cũng có thể do nhiều kiến trúc sư cùng
thiết kế. Khi một kiến trúc sư thiết kế một cơng trình sẽ có một thù lao tương
ứng.
CSDL2:
1. BAIBAO(STT_BAI, TUA, MA_THLOAI): Mỗi bài báo được đánh một số thứ
tự phân biệt, có một tựa bài và cho biết nó thuộc thể loại nào.
2. BAO_TCHI(MA_BAO_TC, TEN, DCHI_TS, TEL, DINH_KY): Mỗi tờ báo
hoặc tạp chí có một mã riêng biệt, có một tên, một địa chỉ toà soạn, một số điện

thoại, và được xuất bản theo một định kỳ nào đó.
Trang x


3. THE_LOAI(MA, DGIAI): Mỗi thể loại bài báo có một mã thể loại và một diễn
giải.
4. DANG_BAI(STT_BAI, MA_BAO_TC, SO_BAO_TC, TRANG): Mỗi bài báo
khi được đăng trong một báo hoặc tạp chí nào đó, thì được ghi nhận là đã đăng
trong số báo hoặc số tạp chí nào và đăng tại trang số mấy.
5. PHATHANH(MA_BAO_TC, SO_BAO_TC, NGAY): Mỗi số báo hoặc số tạp
chí khi được phát hành sẽ được ghi nhận ngày phát hành.
6. VIETBAI(STT_BAI, BUT_HIEU): Mỗi bài báo được viết bởi một tác giả mà
ta ghi nhận bằng bút hiệu.
CSDL3:
1. HANGHOA(MA_HANG,TEN_HG): Mỗi hàng hóa được gán một mã hàng
riêng biệt để dễ phân biệt, và có một tên hàng.
2. DAILY(STT_DL, TEN_DL, DCHI_DL): Mỗi đại lý được gán một số thứ tự
phân, có một tên đại lý và một địa chỉ liên lạc.
3. MUA(MA_HANG, STT_DL, NGAY_MUA, SOLG_MUA, TRIGIA_MUA):
Khi một đại lý mua một mặt hàng nào đó (MA_HANG), vào một ngày nào đó
(NGAY_MUA), sẽ được ghi nhận lại số lượng mua và trị giá mua tổng cộng.
4. BAN(MA_HANG, STT_DL, NGAY_BAN, SOLG_BAN, TRIGIA_BAN):
Khi một đại lý bán một mặt hàng nào đó (MA_HANG), vào một ngày nào đó
(NGAY_BAN), sẽ được ghi nhận lại số lượng bán và trị giá bán tổng cộng.
CSDL HR:1
1. REGIONS (REGION_ID, REGION_NAME): Mỗi vùng có mã vùng duy nhất
và một tên vùng.
2. COUNTRIES (COUNTRY_ID, COUNTRY_NAME, REGION_ID): Mỗi
quốc gia có một mã quốc gia duy nhất, một tên quốc gia và thuộc một vùng.
3. LOCATIONS (LOCATION_ID, STREET_ADDRESS, POSTAL_CODE,

CITY, STATE_PROVINCE, COUNTRY_ID): Mỗi vị trí có một mã vị trí duy
nhất xác định một địa chỉ, mã bưu điện, thành phố, tỉnh và thuộc 1 quốc gia.
4. DEPARTMENTS
(DEPARTMENT_ID,
DEPARTMENT_NAME,
MANAGER_ID, LOCATION_ID): Mỗi bộ phận có một mã bộ phận duy nhất
xác định một tên bộ phận, do một nhân viên (lưu mã nhân viên) quản lý tại một
vị trí nào đó.
5. JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY): Mỗi cơng
việc có một mã cơng việc duy nhất xác định một tên công việc, một mức lương
tối thiểu và một mức lương tối đa.
6. EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL,
PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT,
MANAGER_ID, DEPARTMENT_ID): Mỗi nhân viên có một mã nhân viên
duy nhất, xác định một tên, học, email, số điện thoại, ngày vào làm, mã công
việc, lương, thưởng, người quản lý trực tiếp, và thuộc một bộ phận nào đó.
7. JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID,
DEPARTMENT_ID): Thông tin về sự thuyên chuyển nhân viên sẽ được ghi

1

/>

nhận gồm mã nhân viên, ngày bắt đầu và kết thúc một cơng việc tại một bộ
phận nào đó.
CSDL Scott: 2
1. EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM,
DEPTNO): Mỗi nhân viên có một mã nhân viên duy nhất, xác định một tên
nhân viên, nghề nghiệp, mã người quản lý trực tiếp, ngày gia nhập cơng ty,
lương, thưởng, mã phịng ban.

2. DEPT (DEPTNO, DNAME, LOC): Mỗi bộ phận có một mã số duy nhất xác
định tên bộ phận (DNAME) và vị trí (LOC).
3. BONUS (ENAME, JOB, SAL, COMM): Lưu trữ thơng tin về tiền thưởng gồm
có tên nhân viên, nghề nghiệp, lương, thưởng.
CSDL Bảo hiểm:
1. DONVI (MaDV, TenDV, Dchi, Tel): Mỗi đơn vị có một mã phân biệt, một tên
phân biệt, địa chỉ và số điện thoại liên lạc.
2. KH (MaKH, HoTen, NamSinh, Phai, MaDV): Mỗi khách hàng có một mã
phân biệt, một họ tên, năm sinh, phái (chỉ mang trị 0 hoặc 1) và thuộc một đơn
vị nào đó.
3. LOAIBH (MaLoai, TenLoai, MucPhi): Mỗi loại bảo hiểm có một mã phân
biệt, một tên phân biệt và một mức phí (số tiền phải đóng cho một tháng), phải
lớn hơn 0, đơn vị tính là ngàn đồng.
4. THEBH (MaLoai, MaKH, NgayBD, ThoiHan): Mỗi thẻ bảo hiểm được xác
định duy nhất qua mã loại, mã khách hàng và ngày bắt đầu có hiệu lực và một
thời hạn, chính là số tháng mà khách mua bảo hiểm.

2

/>
Trang xii


PHẦN I. HỆ QUẢN TRỊ CSDL

Trang 1


CHƯƠNG 1. GIỚI THIỆU
Nội dung chính: Trong chương này, chúng ta sẽ tìm hiểu về Hệ quản trị CSDL

và nhà quản trị CSDL.
Mục tiêu cần đạt: Sau khi học xong chương này, sinh viên có thể:





Định nghĩa hệ quản trị cơ sở dữ liệu (HQTCSDL)
Hiểu các chức năng, thành phần của một HQTCSDL.
Hiểu kiến trúc của HQTCSDL đa người dùng
Hiểu được vai trò, nhiệm vụ của nhà quản trị CSDL.

1.1. Định nghĩa hệ quản trị CSDL
Hệ quản trị CSDL (HQTCSDL) là một hệ thống phần mềm cho phép người
dùng định nghĩa, tạo và duy trì CSDL đồng thời cung cấp dịch vụ truy cập đến CSDL
này một cách có quản lý. Chúng ta cần lưu ý là HQTCSDL chỉ là một phần của một hệ
thống CSDL (database system). Như minh họa trong hình bên dưới, ngồi HQTCSDL,
một hệ CSDL cịn bao gồm các CSDL và các chương trình ứng dụng phục vụ cho
người dùng cuối trong hệ thống.
Các HQTCSDL phổ biến hiện nay
bao gồm Oracle của tập đoàn Oracle,
DB2 của IBM, MS SQL Server của
Microsofts. Ngồi ra cịn có MS Access
của Microsoft và các phần mềm nguồn
mở như MySQL, PostGreSQL, …

1.2. Chức năng của hệ quản trị
CSDL
Lưu trữ, truy xuất và cập nhật dữ liệu
Đây là các chức năng cơ bản của

một HQTCSDL. Người dùng có thể lưu
trữ, truy xuất và cập nhật dữ liệu thơng
Hình 1. Hệ cơ sở dữ liệu
qua việc sử dụng các ngôn ngữ định
nghĩa (Data Definition Langugage – DDL), ngôn ngữ thao tác dữ liệu (Data
Manipulation Langugage – DML) trong đó bao hàm ngơn ngữ truy vấn dữ liệu
(Structured Query Language – SQL). HQTCSDL phải hỗ trợ khả năng thực hiện các
chức năng này từ một máy tính truy cập từ xa vào CSDL qua mạng.
Danh mục hệ thống
Người dùng có thể truy cập vào danh mục chứa thông tin mô tả về các dữ liệu
được lưu trong CSDL gọi là danh mục hệ thống (system catalog) hay còn gọi là tự
điển dữ liệu (data dictionary). Dữ liệu này còn gọi là siêu dữ liệu hay dữ liệu về dữ
liệu (metadata), tùy theo HQTCSDL mà chúng có thể bao gồm:
-

Tên, kiểu, và kích cỡ của các mục dữ liệu
Tên các mối quan hệ giữa các dữ liệu
Ràng buộc toàn vẹn trên dữ liệu
Tên người dùng được quyền truy cập vào dữ liệu
Mục dữ liệu và kiểu truy cập mà mỗi (loại) người dùng có quyền
Trang 2


-

Lược đồ ngoài, lược đồ quan niệm và lược đồ trong và ánh xạ giữa các lược
đồ này.
Các con số thống kê sử dụng như tần suất của giao dịch, số lượt truy cập
đến một đối tượng trong CSDL.


An toàn dữ liệu
An toàn dữ liệu là sự bảo vệ CSDL khỏi những đe dọa có chủ ý hay vơ tình
thơng qua các biện pháp có sử dụng máy tính hoặc khơng có sử dụng máy tinh. Việc
xem xét an tồn không chỉ áp dụng cho dữ liệu trong CSDL, mà còn bao gồm cả phần
cứng, phần mềm và con người. Vì vậy, các HQTCSDL phải cung cấp nhiều tiện ích để
đảm bảo sự an toàn cho dữ liệu như ngăn chận truy cập đối với người dùng không
được phép thông qua việc quản lý và cấp quyền người dùng (user authorization), hoặc
chỉ truy cập dữ liệu thông qua view được cấp quyền. Các tiện ích này sẽ được đề cập
chi tiết hơn trong chương 2.
Toàn vẹn dữ liệu
Dữ liệu với một ý nghĩa trong thực tế luôn phải thỏa mãn các điều kiện ràng
buộc tồn vẹn nào đó về mặt giá trị; chẳng hạn như, điểm thi mang giá trị thực từ 0
đến 10, hoặc giá trị của một hóa đơn phải bằng tổng các tích số lượng hàng bán nhân
đơn giá bán. Các ràng buộc toàn vẹn này cũng góp phần duy trì một hệ CSDL an tồn
bằng cách ngăn không cho dữ liệu thành không hợp lệ, từ đó tránh dẫn đến kết quả sai.
Các HQTCSDL giúp duy trì tính nhất qn của dữ liệu thơng qua việc hỗ trợ các
phương tiện bảo đảm ràng buộc trên dữ liệu (data constraints), cơ chế quản lý giao
dịch (transaction management). Các công cụ cài đặt ràng buộc đã được đề cập trong
mơn học CSDL, nên giáo trình này sẽ khơng nhắc lại. Cơ chế quản lý giao dịch sẽ
được đề cập chi tiết trong chương 3.
Điều khiển cạnh tranh
Trong tình huống CSDL có nhiều người dùng cùng lúc thì có khả năng xảy ra
tình huống cập nhật làm cho dữ liệu mất tính nhất quán. Các HQTCSDL phải cung cấp
cơ chế đảm bảo CSDL được cập nhật đúng đắn khi có nhiều người dùng cùng lúc cập
nhật một mục dữ liệu. Các cơ chế điều khiển cạnh tranh sẽ được phân tích chi tiết
trong chương 3.
Phục hồi CSDL
Để đảm bảo tính an tồn cho hệ thống CSDL ngay cả khi có sự cố xảy ra, các
HQTCSDL cần cung cấp cơ chế cho phép phục hồi CSDL về một trạng thái nhất quán
sau sự cố làm CSDL bị hỏng theo bất cứ kiểu nào. Cơ chế về sao lưu và phục hồi sẽ

được trình bày chi tiết trong chương 3.
Các tiện ích khác
Ngoài các chức năng trên, HQTCSDL thường hỗ trợ thêm các tiện ích khác:
-

Tiện ích nhập/xuất dữ liệu: cho phép tải dữ liệu từ các tập tin văn bản hay từ
CSDL của các HQTCSDL khác và ngược lại.
Tiện ích giám sát: giám sát việc sử dụng và thao tác trên CSDL.
Chương trình phân tích thống kê: dùng để khảo sát hiệu suất và thống kê
việc sử dụng.
Tiện ích tổ chức chỉ mục
Trang 3


1.3. Các thành phần của một HQTCSDL
Để đáp ứng được các chức năng vừa nêu, các HQTCSDL là các phần mềm rất
phức tạp và mỗi HQTCSDL đều có kiến trúc riêng, nên rất khó có thể đưa ra một kiến
trúc chung. Mỗi tài liệu có thể đề xuất một kiến trúc khác nhau. Hình bên dưới mơ tả
một kiến trúc HQTCSDL đề xuất bởi [Thomas 2005].
Lập trình viên

Người dùng

Nhà quản trị

Ứng dụng

Truy vấn

Lược đồ

CSDL

Bộ tiền xử lý
DML

Bộ xử lý truy
vấn

Trình biên
dịch DDL

Mã đối tượng
chương trình

Bộ quản lý
CSDL

Bộ quản lý
tự điển

Cơ chế
Truy cập

Bộ quản lý
Tập tin

HQTCSDL

Vùng đệm hệ
thống

CSDL và
danh mục hệ thống

Hình 2. Các thành phần của một HQTCSDL [Thomas 2005]

Một HQTCSDL có thể phân thành sáu thành phần chính như Hình 2, mỗi phần
đảm trách một cơng việc cụ thể:
- Bộ xử lý truy vấn: Đây là thành phần chủ yếu của một HQTSCDL để biến đổi
các truy vấn thành một tập lệnh cấp thấp chuyển đến bộ quản lý CSDL.
- Bộ quản lý CSDL: nhận vào các mã đối tượng chương trình và các truy vấn,
đối chiếu với lược đồ ngoài và lược đồ quan niệm để xác định các mẫu tin quan niệm
cần thiết để trả lời truy vấn. Bộ phận này được chia nhỏ thành các thành phần nhỏ hơn
như Hình 3.
- Bộ tiền xử lý ngơn ngữ DML: bộ phần này biến đổi các lệnh thao tác dữ liệu
(DML) như insert, delete, update,... thành các lời gọi hàm chuẩn. Bộ phận này phải
tương tác với bộ xử lý truy vấn để sinh mã phù hợp.
- Trình biên dịch DDL: chuyển các lệnh định nghĩa dữ liệu (DDL) thành một
tập các bảng chứa siêu dữ liệu. Các bảng này sau đó được lưu trong tự điển hệ thống.
- Bộ quản lý tự điển: quản lý sự truy cập và duy trì tự điển hệ thống.

Trang 4


Mã đối tượng
chương trình

Bộ quản lý
CSDL

Bộ xử lý SQL


Bộ quản lý
tự điển

Quản lý
Quyền

Bộ kiểm tra
Toàn vẹn

Bộ quản lý
Dữ liệu

Cơ chế
Truy cập

Bộ xử lý Lệnh

Bộ tối ưu
Truy vấn

Bộ quản lý
Giao dịch

Bộ lập lịch
trình

Bộ quản lý
Vùng đệm


Bộ quản lý
Phục hồi

Bộ quản lý
Tập tin

Vùng đệm hệ
thống
CSDL và
danh mục hệ thống

Hình 3. Các thành phần của Bộ quản lý CSDL

Hình 3 mơ tả các thành phần chính của bộ quản lý CSDL, chúng bao gồm:
- Điều khiển quyền: kiểm tra xem người dùng có đủ các quyền cần thiết để thực
hiện thao tác yêu cầu không.
- Bộ xử lý lệnh: xử lý câu lệnh sau khi xác nhận là đủ quyền
- Bộ kiểm tra toàn vẹn: đối với các thao tác làm thay đổi CSDL, bộ phần này sẽ
kiểm tra xem thao tác này có thỏa mãn tất cả các ràng buộc tồn vẹn hay không.
- Bộ tối ưu truy vấn: xác định một chiến lược tối ưu để thực hiện truy vấn.
- Bộ quản lý giao dịch: thực hiện các xử lý cần thiết cho các thao tác nhận được
từ các giao dịch.
- Bộ lập lịch trình: bộ phận này có trách nhiệm đảm bảo rằng các thao tác cạnh
tranh trên CSDL được thực hiện mà khơng gây ra mâu thuẩn. Nó điều khiển trật tự
thực thi tương đối của các thao tác trong từng giao dịch.

1.4. Kiến trúc hệ CSDL đa người dùng
Xử lý từ xa
Đây là một kiến trúc truyền thống. Một máy tính rất mạnh (mainframe) kết nối
với nhiều máy đầu cuối (terminal). Toàn bộ tải (từ lưu trữ CSDL, HQTCSDL và ứng

Trang 5


dụng) đều thực hiện trên mainframe. Một xu hướng được nhìn nhận hiện nay là thay
thế mainframe đắt tiền bằng một tập hợp PC nối mạng nhằm đạt được khả năng tính
tốn mạnh như mainframe.
Máy chủ tập tin (File-server)
CSDL sẽ được lưu trên một máy chủ, HQTCSDL sẽ được cài tại các máy trạm
(workstation) nối với máy chủ qua một mạng cục bộ. Kiến trúc này giúp phân chia tải
trên nhiều máy. Tuy nhiên nó có khuyết điểm là ảnh hưởng đến giao thông mạng, mỗi
máy trạm đều phải cài HQTCSDL, và do đó khả năng quản lý cạnh tranh, phục hồi và
toàn vẹn phức tạp hơn.
Client-server hai tầng
Kiến trúc này gồm 2 tầng: tầng client sẽ cài và chạy chương trình ứng dụng;
tầng server cài HQTCSDL và CSDL. Hình 4 minh họa kiến trúc này.
Nhờ CSDL được quản lý tập trung bởi 1 HQTCSDL tại server nên kiến trúc
này có ưu điểm là khả năng truy cập đến CSDL được mở rộng hơn, tăng hiệu quả hoạt
động, có thể giảm chi phí phần cứng, giảm chi phí truyền thơng (chỉ những dữ liệu
được yêu cầu mới được truyền về cho client), và tính nhất quán được đảm bảo. Tuy
nhiên, phía client nảy sinh 2 khó khăn khi chương trình ứng dụng trở nên lớn. Một là
đòi hỏi nhiều tài nguyên hơn trên máy client để có thể chạy ứng dụng một cách hiệu
quả (fat client). Hai là đòi hỏi thêm nhiều cơng việc quản trị ở phía client.
Nhiệm vụ:

- Chương trình
ứng dụng

- CSDL
- HQTCSDL


-

Giao diện người dùng
Thực hiện các chức năng và
xử lý dữ liệu

Nhiệm vụ:

-

Kiểm tra tính hợp lệ phía
server
Thực hiện truy cập CSDL

Hình 4. Kiến trúc client-server 2 tầng

Client-server ba tầng
Đây là kiến trúc phát triển lên từ kiến trúc client-server 2 tầng. Trong đó,
chương trình ứng dụng sẽ khơng cịn chạy ở các máy client mà sẽ được cài đặt ở một
server nằm ở tầng giữa, gọi là máy chủ ứng dụng (application server), nơi cài đặt các
chương trình ứng dụng. Ưu điểm của kiến trúc này là client ‘nhỏ’, chỉ làm nhiệm vụ
giao diện nên khơng cần phần cứng đắt tiền; việc bảo trì ứng dụng diễn ra tập trung tại
máy chủ ứng dụng; dễ thay đổi hoặc thay thế một tầng mà không làm ảnh hưởng đến
các tầng khác, dễ dàng cân bằng tải thông qua việc gia tăng số lượng máy chủ ứng
Trang 6


dụng ở tầng giữa. Kiến trúc này ánh xạ khá tự nhiên vào môi trường web. Đây là kiến
trúc được sử dụng phổ biến hiện nay.


1.5. Nhà quản trị CSDL
1.5.1. Vai trò, nhiệm vụ của một nhà quản trị CSDL
Nhà quản trị CSDL (Database administrator) hay thường gọi là DBA chịu trách
nhiệm về việc bảo đảm cho sự hoạt động thơng suốt của các chức năng, tính hiệu quả
của các CSDL và ứng dụng truy cập vào các CSDL này của tổ chức. Khi tổ chức cần
phát triển một ứng dụng mới, DBA, với vai trò là người am hiểu nhất về dữ liệu của tổ
chức, tham gia vào tất cả các giai đoạn của đề án từ đặc tả yêu cầu, phân tích, thiết kế,
cài đặt và kiểm thử ứng dụng nhằm đảm bảo cho ứng dụng có được sự truy cập chính
xác, hiệu quả đến dữ liệu của tổ chức. Khi ứng dụng chuẩn bị đưa vào sử dụng, DBA
phải đảm bảo rằng HQTCSDL đã được chuẩn bị sẵn sàng cho tải mới. Điều này bao
gồm cài đặt các biện pháp an ninh, đo đạc, điều chỉnh nhu cầu về lưu trữ và bộ nhớ của
ứng dụng mới đồng thời dự đoán sự ảnh hưởng của tải mới này đối với CSDL và các
ứng dụng trong hệ thống đang vận hành. DBA cũng có trách nhiệm đưa CSDL mới từ
môi trường thử nghiệm vào hoạt động. Khi ứng dụng đã được đưa vào sử dụng, DBA
phải đảm bảo tính sẵn sàng, an ninh, tồn vẹn của hệ thống; giám sát hiệu suất và điều
chỉnh hệ thống, sao lưu và phục hồi hệ thống. Cuối cùng, khi ứng dụng khơng cịn
được sử dụng nữa, DBA phải giúp xác định tình trạng cuối cùng của dữ liệu sử dụng
bởi ứng dụng. Liệu dữ liệu còn cần cho ứng dụng nào khác, hay cần phải lưu trữ theo
một quy định nào đó, v.v…
Trong khn khổ giáo trình này, chúng tơi chủ yếu đề cập đến các công việc cơ
bản mà một DBA đảm trách trong quá trình CSDL đã được đưa vào sử dụng bao gồm:
-

Các thao tác cơ bản trên CSDL: kết nối, quản lý CSDL, nhập/xuất CSDL.
Cài đặt các biện pháp bảo vệ CSDL: quản lý và cấp quyền người dùng.
Đảm bảo đảm tính sẵn sàng của hệ thống: sao lưu, phục hồi.
Đảm bảo tính tồn vẹn dữ liệu: cài đặt ràng buộc trên CSDL.

1.5.2. Các tiêu chí địi hỏi ở một DBA
Để có thể thực hiện tốt các nhiệm vụ trên, một DBA khơng chỉ có kiến thức tốt

về các công nghệ CSDL mà về tất cả những gì kết nối đến CSDL. Cần có các kỹ năng
giao tiếp đặc biệt để có thể hợp tác tốt với các nhân viên khác nhau từ kỹ thuật viên,
lập trình viên, người dùng cuối, khách hàng đến các nhà lãnh đạo. DBA cịn là một
người thích đương đầu với thử thách, với các vấn đề mới và giỏi giải quyết sự cố.
Ngồi các u cầu về chun mơn kỹ thuật, DBA cũng cần có kỹ năng quản lý để
hồn thành tốt nhiệm vụ. DBA không nên thụ động chỉ giải quyết các vấn đề sau khi
nó xảy ra, mà cần chủ động phát triển và cài đặt một kế hoạch chiến lược để triển khai
CSDL trong tổ chức.
1.5.3. Các vai trò quản trị khác nhau
Trong các tổ chức với các hệ thống thơng tin lớn, người ta có thể th nhiều
quản trị viên với các vai trò quản trị khác nhau, bao gồm: Quản trị CSDL (DBA), quản
trị dữ liệu (DA), và quản trị hệ thống (SA).

Trang 7


Hình 5. Trách nhiệm của DA, DBA và SA

Hình 5 cho thấy trong khi SA phụ trách về hạ tầng CNTT, DA liên quan nhiều
đến q trình phân tích thiết kế, đề xuất các chính sách cho dữ liệu và siêu dữ liệu, còn
DBA liên quan nhiều đến các giai đoạn phát triển, kiểm thử, cài đặt, duy trì hệ thống
và điều chỉnh các hoạt động hơn.
Ngoài ra, một số tổ chức với các hệ thống cực lớn cũng có các DBA chuyên
trách cho công việc như: DBA phụ trách sao lưu phục hồi, DBA phụ trách phân tích
hiệu suất hệ thống, DBA phụ trách kho dữ liệu (data warehouse). Đây là các chuyên
gia đầy kinh nghiệm có thể đảm trách các cơng việc rất quan trọng.
CÂU HỎI ƠN TẬP
1.
2.
3.

4.
5.
6.
7.
8.
9.

Hãy định nghĩa hệ quản trị CSDL.
Các chức năng của một hệ quản trị CSDL là gì?
Một hệ quản trị CSDL bao gồm những thành phần nào?
Bộ phận quản lý CSDL bao gồm những thành phần nào, chức năng của mỗi
thành phần đó là gì?
Kể tên các kiến trúc hệ CSLD đa người dùng.
Kiến trúc Client-Server 3 tầng gồm những tầng nào? Chức năng của mỗi tầng là
gì?
Hệ thống đăng ký môn học của Trường đại học Cần Thơ sử dụng kiến trúc hệ
CSDL nào?
Công việc của một nhà quản trị CSDL bao gồm những gì?
Có những vai trị quản trị nào trong một hệ thống? Sự khác biệt của các vai trị
này là gì?

Trang 8


CHƯƠNG 2. CÁC BIỆN PHÁP BẢO VỆ CSDL
Nội dung chính: Trong chương này, chúng ta sẽ tìm hiểu các biện pháp bảo vệ
CSDL bằng máy tính một cách tổng quát và các tiện ích hỗ trợ cài đặt các biện pháp
này trong Oracle.
Mục tiêu cần đạt: Sau khi học xong chương này, sinh viên có thể:
• Định nghĩa an tồn trong CSDL

• Hiểu các biện pháp bảo vệ CSDL bằng máy tính.

2.1. An tồn trong CSDL
An tồn trong CSDL (DB security) là sự bảo vệ CSDL khỏi những đe dọa có
chủ ý hay vơ tình thơng qua các biện pháp có sử dụng máy tính hoặc khơng có sử dụng
máy tinh. Việc xem xét an tồn khơng chỉ áp dụng cho dữ liệu trong CSDL, mà còn
bao gồm cả phần cứng, phần mềm và con người.
Chúng ta xem xét an tồn CSDL trong các tình huống sau:






CSDL bị đánh cắp hay gian lận
CSDL mất đi tính bảo mật
CSDL mất tính riêng tư
CSDL mất tính tồn vẹn
CSDL mất tính sẵn sàng

Nguy cơ (threat) là những tình huống hay sự kiện, có thể là cố ý hay vơ tình, sẽ
ảnh hưởng bất lợi đến một hệ thống và vì vậy ảnh hưởng đến cả tổ chức. Nguy cơ có
thể là hữu hình như mất mát về phần cứng, phần mềm, dữ liệu, hay vơ hình như sự tín
nhiệm của khách hàng. Mỗi nguy cơ phải được xem như một sự vi phạm an ninh có
thể xảy ra. Tổ chức phải nhận định được tất cả các nguy cơ tiềm ẩn, hay ít ra là các
nguy cơ quan trọng, để từ đó đưa ra các kế hoạch phòng tránh cũng như biện pháp đối
phó phù hợp. Khi xây dựng các biện pháp này cần lưu ý chi phí thực hiện và mức độ
cản trở đối với người dùng.
Có rất nhiều biện pháp bảo vệ hệ thống khác nhau có thể chia thành 2 loại là
các biện pháp khơng sử dụng máy tính và những biện pháp có sử dụng máy tính. Các

biện pháp khơng sử dụng máy tính bao gồm các bố trí thiết bị một cách an tồn, quản
trị nhân sự, chính sách an ninh cũng như kế hoạch đối phó với những bất ngờ,… Trong
khn khổ của giáo trình này, ta chỉ quan tâm những biện pháp bảo vệ có sử dụng máy
tính.

Các biện pháp bảo vệ bằng máy tính đề cập trong giáo trình này bao gồm:






Cấp quyền (authorization)
Khung nhìn (Views)
Sao lưu và phục hồi (Backup and restore)
Toàn vẹn dữ liệu (Integrity)
Mật hóa (Encryption)

2.2. Cấp quyền
Cấp quyền (authorization) là sự gán quyền cho một người dùng hay chương
trình để có thể truy cập vào một hệ thống hay một đối tượng của hệ thống. Chứng
Trang 9


thực người dùng (authentication) là cơ chế để xác định một người dùng là ai. Kỹ thuật
cấp quyền kết hợp với cơ chế chứng thực người dùng để đảm bảo người đăng nhập vào
hệ thống chính là người có quyền tương ứng. Cơ chế chứng thực người dùng phổ biến
nhất là sử dụng định danh người dùng cùng với mật khẩu, mặc dù cách này không thể
đảm bảo một cách hồn tồn. Vì vậy, cần phải có những thủ tục đi kèm để nâng cao
tính an tồn cho hệ thống như:






Mật khẩu phải được giữ kín và thay đổi định kỳ.
Định danh và mật khẩu lưu trong hệ thống phải ở dạng mã hóa.
Đưa ra các qui định về thành phần của mật khẩu.
Đề ra các thủ tục cần thiết và theo dõi sát việc cấp quyền cho người
dùng.

Một số HQTCSDL sử dụng các định danh người dùng riêng, một số sử dụng
các định danh người dùng của hệ điều hành bên dưới hoặc hỗ trợ cả hai.
Chủ sở hữu (ownership) của một đối tượng trong CSDL là người đã tạo ra đối
tượng đó. Các đối tượng có sẵn trong HQTCSDL sẽ thuộc về bản thân HQTCSDL mà
đại diện là nhà quản trị CSDL (DBA). Chủ sở hữu có mọi quyền (privileges) trên đối
tượng của mình và có thể gán quyền trên đối tượng đó cho người khác. HQTCSDL ghi
nhận tất cả các quyền đã gán cho người dùng nào và gán bởi ai; để có thể duy trì đúng
đắn tập quyền trên từng người dùng khi quyền được gỡ bỏ. Các HQTCSDL có thể hỗ
trợ nhiều mức cấp quyền khác nhau (mức người dùng - user hoặc nhóm người dùng role). Định danh người dùng thường có độ ưu tiên cao hơn định danh nhóm.
Mỗi người dùng được tạo ra có thể được gán 2 loại quyền:
• Quyền đối tượng (Object Privileges): là các quyền cho phép người dùng
thực hiện các thao tác nào đó trên một đối tượng của CSDL; chẳng hạn
quyền SELECT, INSERT, UPDATE,.. dữ liệu trong một bảng nào đó.
• Quyền hệ thống (System Privileges): là các quyền cho phép người dùng
thực hiện thao tác nào đó trong CSDL nhưng khơng gắn với một đối
tượng đã tồn tại nào; chẳng hạn quyền tạo bảng, tạo view,..
Lệnh SQL để cấp quyền
Các quyền định nghĩa bởi chuẩn ISO bao gồm: SELECT, INSERT, UPDATE,
DELETE, REFERENCES, USAGE.

Gán quyền trên đối tượng cho người dùng bằng lệnh:
GRANT {danh_sách_quyền | ALL PRIVILEGES}
ON
tên_đối tượng TO {danh_sách_định_danh_được_cấp | PUBLIC}
[WITH GRANT OPTION]

Tùy chọn WITH GRANT OPTION cho phép người dùng được cấp tiếp tục cấp
những quyền này cho người khác.
Ví dụ: Gán quyền xem và cập nhật bảng NhanVien cho người dùng user1. Cho
phép user1 có thể gán các quyền này cho người dùng khác.
GRANT Select, Update ON
NhanVien
TO
User1 WITH GRANT OPTION

Lệnh gán quyền hệ thống thông thường cũng được các HQTCSDL cài đặt
tương tự nhưng bỏ đi mệnh đề ON.
Ví dụ: Gán quyền tạo bảng, tạo user người dùng user1.
Trang 10


GRANT Create table, Create user TO User1

Lệnh SQL để thu hồi quyền
Lệnh REVOKE được dùng để gỡ bỏ quyền trên đối tượng khỏi người dùng đã
được cấp:
REVOKE [GRANT OPTION FOR] {ds_quyền| ALL PRIVILEGES}
ON
đối_tượng FROM {danh_sách_định_danh_được_cấp | PUBLIC}
[RESTRICT | CASCADE]


RESTRICT: mặc định, sẽ ngưng thực thi lệnh Revoke nếu kết quả câu lệnh làm
ảnh hưởng đến các đối tượng phụ thuộc.
CASCADE: Các đối tượng phụ thuộc sẽ bị xóa hoặc gỡ ra.
Ví dụ: Để gỡ bỏ quyền cập nhật bảng NhanVien khỏi user1 đã cấp trong ví dụ trên.
Những ai đã được user1 cấp cho quyền này cũng bị gỡ bỏ theo.
REVOKE Update
ON NhanVien

FROM User1

CASCADE

Lệnh thu hồi quyền hệ thống thông thường cũng được các HQTCSDL cài đặt
tương tự nhưng bỏ đi mệnh đề ON.
Ví dụ: Gỡ bỏ quyền tạo bảng khỏi user1
REVOKE Create table FROM User1

2.3. Khung nhìn
Khung nhìn là kết quả động của một hoặc nhiều thao tác quan hệ trên các quan
hệ cơ sở (base table) để sinh ra một quan hệ khác. Một khung nhìn cịn được gọi là
một bảng ảo (virtual table), nó khơng thực sự tồn tại trong CSDL, nhưng nó được sử
dụng như một bảng. Thay vì cấp quyền cho người dùng trên nhiều bảng, ta có thể gán
các quyền thích hợp trên một khung nhìn định nghĩa trên các bảng này. Bằng cách này
ta sẽ đảm bảo tính an tồn cho dữ liệu tốt hơn là gán quyền trên nhiều bảng cơ sở nhờ
che dấu đi nhiều thông tin về lược đồ của CSDL. Vì vậy, khung nhìn cũng là một biên
pháp góp phần bảo vệ CSDL.
Lệnh dùng để tạo view
CREATE VIEW tên_view [(tên_cột [,...])]
AS câu_truy_vấn

[WITH [CASCADED | LOCAL] CHECK OPTION]

Kết quả khi mở một view bằng lệnh Select chính là kết quả của câu truy vấn
bên trong định nghĩa của view, phản ánh dữ liệu hiện có trong CSDL. Nếu có dịng dữ
liệu biến mất khỏi view khi mở view thêm lần nữa thì gọi là dịng ra khỏi view. Nếu có
dịng dữ liệu xuất hiện thêm trong view khi mở lần sau thì gọi là dịng đi vào. Dịng đi
vào và ra khỏi view được gọi chung là các dòng di cư (migrating rows).
WITH CHECK OPTION là tùy chọn để đảm bảo rằng các dịng khơng di cư ra
khỏi view qua các thao tác insert và update trên view (nghĩa là, nếu một dịng khơng
thỏa điều kiện WHERE trong câu truy vấn của view thì dịng đó sẽ khơng được cập
nhật vào bảng cơ sở).
Nếu chọn CASCADE thì việc đảm bảo này cũng áp dụng trên các view định
nghĩa trên view này (đây là chế độ mặc định).
Trang 11


Nếu chọn LOCAL thì việc đảm bảo này cũng áp dụng trên các view định nghĩa
trên view này trừ khi dịng đó cũng di cư khỏi view hay table nền của view này.
Hình 6 minh họa một trường hợp trong đó các view low_salary, high_salary và
manager3_staff được tạo ra theo trình tự này. Khi đó lệnh UPDATE trên
manager3_staff sẽ khơng được thực thi vì nó làm cho dịng muốn cập nhật có sno =
SG37 di cư ra khỏi view high_salary.
CREATE VIEW manager3_staff AS SELECT * FROM high_salary
WHERE bno = ‘B3’

CREATE VIEW high_salary AS SELECT * FROM low_salary
WHERE salary > 10000

WITH LOCAL CHECK OPTION


CREATE VIEW low_salary AS S ELECT * FROM staff
WHERE salary > 9000

UPDATE manager3_staff SET salary = 9500
WHERE sno = ‘SG37’

Hình 6. Tác dụng của tùy chọn WITH LOCAL CHECK OPTION

Lệnh dùng để xóa view
DROP VIEW tên_view [RESTRICT | CASCADE]

Nếu có các đối tượng khác tham chiếu view này thì trường hợp có:
• RESTRICT: lệnh này sẽ khơng được thực hiện
• CASCADE: lệnh này sẽ xóa ln cả các đối tượng kia.
Thuận lợi và bất lợi của việc sử dụng view
Các thuận lợi khi sử dụng view là:
• Độc lập dữ liệu: Một view giúp thể hiện một bức tranh nhất quán, không
đổi về cấu trúc của CSDL, thậm chí khi các bảng nguồn bên dưới có thay
đổi (như thêm, bớt cột; mối quan hệ thay đổi; các bảng được tách ra, cấu
trúc lại, đổi tên).
• Tính mới nhất: mọi sự thay đổi dữ liệu trong các bảng nền ngay lập tức
được phản ánh trong view.
• Nâng cao tính an toàn: Nếu mỗi người dùng được cấp quyền truy cập
vào CSDL chỉ thông qua một tập nhỏ các views chứa dữ liệu thích hợp
thì sẽ giới hạn và quản lý sự truy cập của người dùng vào CSDL tốt hơn.
• Giảm sự phức tạp: Một view có thể đơn giản hố câu truy vấn, thay vì
phải truy vấn trên nhiều bảng thì trở thành truy vấn trên một bảng.
Trang 12



• Thuận tiện: Tạo sự đơn giản cho người dùng khi nhìn vào CSDL chỉ
thấy những gì họ cần.
• Khả năng tùy biến: view cung cấp cơ chế để tuỳ chỉnh diện mạo của
CSDL, vì vậy có thể tạo nhiều cách nhìn khác nhau vào cùng một CSDL.
• Tồn vẹn dữ liệu: Nếu mệnh đề WITH CHECK OPTION được dùng khi
tạo view, thì SQL đảm bảo khơng có dịng nào không thoả mệnh đề
WHERE trong định nghĩa view mà được cập nhật thơng qua view đó.

Bất lợi:
• Hạn chế cập nhật: mọi cập nhật trong một bảng nền phải được phản ánh
ngay tức thì trong tất cả các view có tham chiếu đến bảng này. Tương tự
như vậy, nếu ta cập nhật dữ liệu thơng qua view thì các bảng nền cũng
thay đổi. Tuy nhiên, có một số giới hạn như sau:
o Chỉ cho phép cập nhật trên các view định nghĩa trên 1 bảng và có
chứa các thuộc tính khố chính hoặc khố ứng viên (khố duy nhất).
o Khơng cho phép cập nhật trên view liên quan đến nhiều bảng. Tuy
nhiên, điều này có thể khắc phục bằng cách sử dụng instead of
trigger (giới thiệu ở trang 115).
o Không cho phép cập nhật trên view có kết tập hay nhóm dữ liệu.
• Hạn chế cấu trúc: cấu trúc của view được xác định ở thời điểm tạo ra nó.
Nếu trong định nghĩa, ta dùng SELECT * FROM… thì view sẽ lấy tất cả
các cột. Nhưng nếu sau đó bảng nền có thêm cột mới thì cột mới này sẽ
khơng có mặt trong view trừ khi ta xố view và tạo lại nó.
• Hiệu quả hoạt động: Khi sử dụng view ta phải mất một ít thời gian để
thực thi câu lệnh select trong view. Trong một số trường hợp, thời gian
này không đáng kể; trong những trường hợp khác nó có thể là một vấn
đề.

2.4. Sao lưu và phục hồi
Sao lưu là quá trình sao chép CSDL và các tập tin nhật ký (có thể kể cả chương

trình) vào các thiết bị lưu trữ dự phòng một cách định kỳ. Đây là công việc của các nhà
quản trị CSDL và cần phải thực hiện một cách có tổ chức, các qui định, bước thực hiện
sao lưu phải được mô tả rõ ràng. Sao lưu là một cách bảo vệ dữ liệu chống lại các lỗi
ứng dụng và sự mất mát dữ liệu không mong đợi. Nếu dữ liệu gốc bị mất, chúng có thể
được xây dựng lại từ bản sao lưu. Thông tin về phiên bản sao lưu phải chính xác. Bản
sao lưu phải được lưu trữ nhiều nơi. Nơi lưu trữ các bản sao lưu phải được đảm bảo an
toàn.
Các HQTCSDL ngày nay thường hỗ trợ chức năng tự động thực hiện sao lưu
theo lịch trình định trước của nhà quản trị. Ta có thể lựa chọn chế độ complete backup
để sao lưu toàn bộ CSDL hoặc incremental backup chỉ sao lưu các thay đổi mới diễn
ra kể từ lần sao lưu trước. Thông thường, các bản sao lưu này được lưu trong bộ lưu
trữ offline như băng từ.
Nếu có sự cố làm cho CSDL bị hỏng, các bản sao chép dự phòng và các chi tiết
lưu trong các tập tin nhật ký sẽ được sử dụng để phục hồi lại hệ thống về tình trạng ổn
định gần nhất có thể. Q trình phục hồi này cũng cần phải được mô tả rõ ràng và phải
tổ chức kiểm thử thường xuyên để đảm bảo hệ thống có thể phục hồi nếu có sự cố.
Trang 13


×