SQL Server 7.0
Trang 1LỜI CẢM ƠN
uốt quá trình học tập trong trường đại học vừa qua, chúng em đã được quýthầy cô cung cấp và truyền đạt tất cả kiến thức chuyên môn cần thiết và quýgiá nhất Ngoài ra, chúng em còn được rèn luyện một tinh thần học tập và làmviệc độc lập, sáng tạo Đây là tính cách hết sức cần thiết để có thể thành công khibắt tay vào nghề nghiệp trong tương lai
S
Luận văn tốt nghiệp là cơ hội để chúng em có thể áp dụng, tổng kết lạinhững kiến thức mà mình đã học Đồng thời, rút ra những kinh nghiệm thực tế vàquý giá trong suốt quá trình thực hiện đề tài Sau một học kỳ chúng em tập trungcông sức cho đề tài và cùng làm việc cực lực với nhau, đặc biệt là nhờ sự chỉ đạovà hướng dẫn tận tình của thầy Nguyễn Trung Trực cùng với các thầy cô trongkhoa, đã giúp cho chúng em hoàn thành đề tài này một cách thuận lợi và gặt háiđược một số kết quả khá khả quan Bên cạnh những kết quả khiêm tốn mà chúng
em đạt được, chắc chắn không tránh khỏi những sai lầm, thiếu sót khi thực hiệnluận văn của mình, kính mong thầy cô thông cảm và tha thứ Sự phê bình, góp ýcủa quý thầy cô sẽ là những bài học kinh nghiệm rất quý báu cho công việc thựctế của chúng em sau này
Là sinh viên ngành máy tính, chúng em rất tự hào về khoa mà mình đangtheo học, tự hào về tất cả các thầy cô của mình Một lần nữa, chúng em xin chânthành cảm ơn công lao dạy dỗ của quý thầy cô Kính chúc quý thầy cô mạnhkhỏe, tiếp tục đạt được nhiều thắng lợi trong nghiên cứu khoa học và sự nghiệpgiáo dục
Trân trọng kính chào! Sinh viên thực hiện
Trang 2MỤC LỤC
A TÌM HIỂU TÍNH CHẤT PHÂN BỐ CỦA SQL SERVER 7.0
PHẦN I : SƠ LƯỢC VỀ CƠ SỞ DỮ LIỆU PHÂN BỐ Trang 1
I CÁC ĐẶC ĐIỂM CỦA CƠ SỞ DỮ LIỆU PHÂN BỐ 2
I.1 Điểu khiển tập trung 2
I.2 Sự độc lập dữ liệu 3
I.3 Sự giảm dư thừa dữ liệu 3
II KIẾN TRÚC THAM KHẢO DÙNG CHO CÁC CƠ SỞ DỮ LIỆU PHÂN BỐ 4
II.1 Lược đồ toàn cục 4
II.2 Lược đồ phân mảnh 6
II.3 Lược đồ định vị 7
II.4 Lược đồ ánh xạ cục bộ 9
III CÁC MỨC TRONG SUỐT 9
IV CÁC LOẠI PHÂN MẢNH 10
IV.1 Quy luật phân mảnh 10
IV.2 Các loại phân mảnh 11
PHẦN II : TỐI ƯU HOÁ TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ Trang 12 Chương 1: TÌM HIỂU VẤN ĐỀ TỐI ƯU HÓA TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ 13
I TRUY VẤN BIỂU THỨC CHUẨN TẮC CỦA TRUY VẤN 13
I.1 Truy vấn 13
I.2 Biểu thức chuẩn tắc của truy vấn 14
II TỐI ƯU HÓA TRUY VẤN TRONG CƠ SỞ DỮ LIỆU TẬP TRUNG 15
II.1 Bước 1 - Kiểm tra ngữ pháp 16
II.2 Bước 2 - Kiểm tra sự hợp lệ 16
II.3 Bước 3 - Dịch truy vấn 17
II.4 Bước 4 - Tối ưu hóa biểu thức đại số quan hệ 17
II.5 Bước 5 - Chọn lựa chiến lược truy xuất 17
II.6 Bước 6 - Tạo sinh mã 18
III TỐI ƯU HÓA TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ 18
III.1 Bước 1 – Phân rã truy vấn 18
III.1.1 Bước 1.1 – Phân tích truy vấn 18
III.1.2 Bước 1.2 – Chuẩn hóa điều kiện của mệnh đề WHERE 21
III.1.3 Bước 1.3 – Đơn giản hóa điều kiện của mệnh đề WHERE 23
III.1.4 Bước 1.4 – Biến đổi truy vấn thành biểu thức đại số quan hệ hiệu quả 24
III.1.5 Một giải thuật tối ưu hóa một biểu thức đại số quan hệ trên lược đồ toàn cục 29
III.2 Bước 2 – Định vị dữ liệu 31
Trang 3III.2.1 Bước 2.1 Biến đổi biểu thức đại số quan hệ trên lược đồ toàn cục
32
III.2.2 Bước 2.2 Đơn giản hóa biểu thức đại số quan hệ trên lược đồ phân mảnh
32
III.2.3 Một giải thuật tối ưu hóa một biểu thức đại số quan hệ trên lược đồ phân mảnh 33
III.3 Bước 3 – Tối ưu hóa truy vấn toàn cục 34
III.4 Bước 4 – Tối ưu hóa truy vấn cục bộ 36
Chương 2: TÌM HIỂU CÔNG CỤ TỐI ƯU HOÁ TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ 37
I TỔNG QUAN VỀ TỐI ƯU HÓA HIỆU QUẢ CỦA CƠ SỞ DỮ LIỆU TRONG SQL SERVER 37
II ĐIỀU CHỈNH TRUY VẤN (QUERY TUNING) 38
III PHÂN TÍCH CÂU TRUY VẤN (ANALYZING A QUERY) 44
IV CÁC KHÁI NIỆM TRONG VIỆC ĐIỀU CHỈNH TRUY VẤN PHỨC TẠP 45
IV.1 Các khái niệm về Nested Loops Join 46
IV.2 Các khái niệm về Merge Join 46
IV.3 Các khái niệm về Hash Join 47
IV.3.1 Hash join trong bộ nhớ 48
IV.3.2 Grace hash join 48
IV.3 3 Hash join đệ qui 48
V PHỤ LỤC 49
V.1 SET SHOW PLAN_ALL (T-SQL) 49
V.2 SET STATISTICS IO (T_SQL)
56
V.3 SET STATISTICS TIME (T-SQL) 59
V.4 SET STATISTICS PROFILE (T-SQL) 62
PHẦN III : TRANSACTION ……….Trang 64 I.GIỚI THIỆU VỀ GIAO DỊCH TRONG SQL SERVER 7.0 65
I.1 Định nghĩa 65
I.2 Các thuộc tính của giao dịch 65
II VIỆC CHỈ RÕ VÀ RÀNG BUỘC TRANSACTION TRONG SQL SERVER 7.0 .65
II.1 Quá trình quản lý giao dịch 66
II.1.1 Khởi động một giao dịch 66
II.1.2 Kết thúc một giao dịch 67
II.1.3 Những lỗi xuất hiện trong quá trình thực thi giao dịch 67
II.2 Loại giao dịch explicit 68
II.3 Loại giao dịch autocommit 68
II.4 Loại giao dịch implicit 70
III GIAO DỊCH PHÂN BỐ (DISTRIBUTED TRANSACTION) 71
III.1 Đặc điểm của giao dịch phân bố 71
Trang 4III.2 Tác vụ của giao dịch phân bố 72
III.3 Khởi động giao dịch phân bo 72
III.4 Truy vấn và giao dịch phân bố 73
IV NHỮNG TÍNH CHẤT KHÁC CỦA GIAO DỊCH 74
IV.1 Giao dịch lồng nhau (nesting transaction) 74
IV.2 Transaction savepoint 75
IV.3 Bound connections 76
IV.4 Điều chỉnh mức độ tách biệt của giao dịch 78
IV.5 Thiết kế giao dịch hiệu quả 78
V.LOCK 79
V.1 Bốn vấn đề đồng thời 79
V.2 Optimistic and pessimistic concurrency 80
V.3 Các mức độ tách biệt 81
V.4 Sự tương thích lock 81
V.5 Sự leo thang lock 83
V.6.Khóa động (dynamic locking) 84
V.7 Deadlock 85
V.7.1 Phát hiện và kết thúc deadlock 86
V.7.2 Tránh deadlock 86
VI KIẾN TRÚC GIAO DỊCH 87
PHẦN IV : NHÂN BẢN TRONG MS SQL SERVER 7.0 Trang 90 Chương 1 : GIỚI THIỆU VỀ NHÂN BẢN 90
I GIỚI THIỆU CHUNG 91
I.1 Tăng hiệu suất máy tính 91
I.2.Tăng tính sẵn sàng 91
I.3.Ít sai sót 91
II YÊU CẦU TRONG NHÂN BẢN 92
II.1.Trong suốt 92
II.2.Nhất quán 92
Chương 2 : KIẾN TRÚC NHÂN BẢN TRONG SQL SERVER 7.0 93
I MỤC TIÊU CHÍNH TRONG NHÂN BẢN 93
I.1 Nhất quán dữ liệu (data consistency) 93
I.1.1 Nhất quán giao dịch 93
I.1.1.1 Nhất quán lập tức (Immediate Transactional Consistency hay Tight Consistency trong MS SQL Server 6.0) 94
I.1.1.2 Nhất quán ngầm (Latent Transactional Consistency hay Loose Consistency trong MS SQL Server 6.0) 94
I.1.2 Hội tụ dữ liệu 94
I.2 Độc lập site (site autonomy) 94
II KIẾN TRÚC NHÂN BẢN : 95
II.1 Các thành phần chính của nhân bản 95
II.2 Chiều di chuyển dữ liệu 96
II.2.1 Push subscription 96
Trang 5II.2.2 Pull subscription 97
III TÁC NHÂN (AGENT) 97
IV CÁC LOẠI NHÂN BẢN 98
Chương 3 : CÁC LOẠI NHÂN BẢN 99
I NHÂN BẢN SNAPSHOT (Snapshot Replication ) 99
I.1 Giới thiệu 99
I.2 Tác nhân (agent) 100
I.2.1 Snapshot agent 100
I.2.2 Distribution agent 100
II NHÂN BẢN GIAO DỊCH (Transation Replication ) 101
II.1 Giới thiệu 101
II.2 Tác nhân (agent) 102
II.2.1 Snapshot agent 102
II.2.2 Log Reader Agent 102
II.2.3 Distribution agent 103
II.3 Thu dọn trong nhân bản transaction: ( tương tự cho nhân bản snapshot) 103
II.4 Các dạng nhân bản giao dịch 104
II.4.1 Cập nhật Subscriber lập tức (Immediate_Updating Subscriber) 104
II.4.1.1 Triggers 104
II.4.1.2 Stored procedures 105
II.4.1.3 MS DTC (Microsoft Distributed Transaction Coordinator) 106
II.4.1.4 Phát hiện tranh chấp 106
II.4.1.5 Phát hiện loopback 106
II.4.2 Nhân bản những thực thi của Stored procedure 107
II.4.2.1 Procedure execution 107
II.4.2.2 Serializable Procedure execution 107
III NHÂN BẢN KẾT HỢP ( Merge Replication ) 107
III.1 Giới thiệu 107
III.2 Tác nhân (agent) 108
III.2.1 Snapshot agent 109
III.2.2 Merge agent 109
III.3 Giải quyết tranh chấp trong nhân bản kết hợp 110
IV GIẢI QUYẾT TRANH CHẤP 110
Chương 4: TOPOLOGY 112
I THIẾT KẾ TOPOLOGY 112
II CÁC KIỂU TOPOLOGY 112
II.1 Central publisher 113
II.2 Central publisher with remote Distributor 115
II.3 Publisher Subcriber 116
II.4 Central Subcriber 116
PHẦN V: CẤU TRÚC CƠ SỞ DỮ LIỆU CỦA SQL SERVER 7.0 Trang 118 I CẤU TRÚC CSDL CỦA SQL SERVER 7.0 119
Trang 6II CẤU TRÚC CSDL VẬT LY 121
II.1.Trang (page) 121
II.2.Extent 121
II.3.Những loại file trong CSDL 122
PHẦN VI: SAO LƯU VÀ KHÔI PHỤC Trang 124 Chương 1: GIỚI THIỆU VỀ SAO CHÉP DỰ PHÒNG (BACKUP) VÀ KHÔI PHỤC (RECOVERY) CƠ SỞ DỮ LIỆU (CSDL) 125
I SAO LƯU CƠ SỞ DỮ LIỆU 125
II KHÔI PHỤC CƠ SỞ DỮ LIỆU 127
Chương 2: CẤU TRÚC SAO CHÉP DỰ PHÒNG (BACKUP) VÀ KHÔI PHỤC (RESTORE) CỦA SQL SERVER 7.0 131
I NHỮNG BACKUP DEVICE 134
II.BACKUP MEDIA 135
III QUÁ TRÌNH SAO LƯU VÀ KHÔI PHỤC 137
IV SAO LƯU VÀ KHÔI PHỤC SONG SONG 138
Chương 3: CÁC LOẠI BACKUP VÀ KHÔI PHỤC CSDL TỪ CÁC BACKUP .139
I.FULL DATABASE BACKUP 139
II.TRANSACTION LOG BACKUP 140
II.1 Khôi phục csdl và áp dụng transaction log backup 141
II.2 Cắt (truncate) transaction log 142
II.3 Điều kiện backup transaction log 142
II.4 Sao lưu những lệnh nonlogged 143
III DIFFERENTIAL BACKUP 145
IV FILE HOẶC FILEGROUP BACKUP 146
V HẠN CHẾ CỦA BACKUP 147
VI SỰ KHÁC NHAU GIỮA DIFFERENTIAL BACKUP VÀ TRANSACTION LOG BACKUP 148
VII SAO LƯU VÀ KHÔI PHỤC CÁC CSDL HỆ THỐNG 148
B.HỆ THỐNG QUẢN LÝ HỌC VỤ PHẦN I : SƠ LƯỢC ĐỀ TÀI Trang 150 Chương 1 : CÁC CÔNG CỤ HỖ TRỢ TRUY XUẤT DỮ LIỆU 151
I.ODBC 152
II.OLE-DB 152
III.ADO 153
IV.KHI NÀO NÊN SỬ DỤNG OLE-DB , ADO VÀ ODBC 153
V.TỔNG QUAN VỀ CÁC LỚP ODBC, OLE-DB VÀ ADO CỦA VISUAL C++
154
Chương 2 :GIỚI THIỆU ĐỀ TÀI 156
I.TỔNG QUAN VỀ ĐỀ TÀI 156
II.CÁC PHÂN HỆ 156
II.1 Phân hệ quản lý sinh viên 156
Trang 7II.2 Phân hệ chương trình đào tạo 156
II.3 Phân hệ xếp thời khoá biểu 157
II.4 Phân hệ đăng ký môn học 157
II.5 Phân hệ xếp lịch thi 158
II.6 Phân hệ quản lý điểm – xét tốt nghiệp 158
III THIẾT KẾ CHƯƠNG TRÌNH 158
III.1 Môi trường hiện thực 158
III.2 Phân bố dữ liệu 159
III.3 Mô hình nhân bản 159
III.4 Tính bảo mật 160
III.4.1 Đăng nhập vào hệ thống 160
III.4.2 Vai trò của người sử dụng 160
PHẦN II : PHÂN HỆ QUẢN LÝ SINH VIÊN 161
Chương 1: MÔ TẢ NGHIỆP VỤ 162
I THÔNG TIN SINH VIÊN 162
II CÁC QUYẾT ĐỊNH ĐỐI VỚI SINH VIÊN 163
Chương 2: PHÂN TÍCH VÀ THIẾT KẾ 164
I.THÔNG TIN SINH VIÊN 164
II.CÁC QUYẾT ĐỊNH ĐỐI VỚI SINH VIÊN 170
III.PHÂN BỐ CƠ SỞ DỮ LIỆU 173
III.1 Sơ đồ toàn cục 173
III.2 Sơ đồ phân mảnh 174
III.3 Sơ đồ định vị 174
III.4 Vai trò của người sử dụng 175
Chương 3: CÁC CHỨC NĂNG CỦA PHÂN HỆ 176
I FORM CẬP NHẬT THÔNG TIN SINH VIÊN, THÊM SINH VIÊN MỚI 176
II FORM CẬP NHẬT LỚP 185
PHẦN III: PHÂN HỆ CHƯƠNG TRÌNH ĐÀO TẠO 186
Chương 1: MÔ TẢ NGHIỆP VỤ 187
I CÁC KHÁI NIỆM 187
I.1 Môn học trước - Môn học tiên quyết 187
I.2 Môn học song hành 187
I.3 Môn học tương đương – Nhóm tương đương 187
I.4 Môn học bắt buộc – Môn học tự chọn 188
II CHƯƠNG TRÌNH ĐẠO TẠO 188
II.1 Mối quan hệ giữa Khoa- Nhóm nghành – Ngành – Khoá ngành – Danh mục hệ đào tạo 188
II.2 Chương trình đào tạo Nhóm ngành – Chuyên ngành – Khoá ngành 189
III TIÊU CHUẨN HOÀN THÀNH GIAI ĐOẠN – TIÊU CHUẨN TỐT NGHIỆP .189
III.1 Tiêu chuẩn hoàn thành giai đoạn 189
Trang 8III.2 Tiêu chuẩn tốt nghiệp 190
IV MỤC ĐÍCH CỦA PHÂN HỆ 190
Chương 2: PHÂN TÍCH VÀ THIẾT KẾ 192
I MỐI LIÊN KẾT GIỮA CÁC MÔN HỌC 192
I.1 Mối liên kết giữa Khoa – Bộ môn – Môn học 192
I.2 Môn học trước – Môn học tiên quyết 194
I.3 Môn học song hành 195
I.4 Môn học tương đương – Nhóm tương đương 196
II CHƯƠNG TRÌNH ĐÀO TẠO 199
II.1 Mối liên kết giữa Khoa – Nhóm ngành – Ngành – Khoá ngành – Danh mục hệ đào tạo 199
II.2 Chương trình đào tạo Khoá ngành 201
II.3 Chương trình đào tạo Nhóm ngành 204
II.4 Chương trình đào tạo Chuyên ngành 206
III TIÊU CHUẨN TỐT NGHIỆP – TIÊU CHUẨN GIAI ĐOẠN 208
III.1 Tiêu chuẩn tốt nghiệp 208
III.2 Tiêu chuẩn giai đoạn 210
Chương 3: PHÂN BỐ DỮ LIỆU VÀ HỆ THỐNG PHÂN QUYỀN 213
I PHÂN BỐ DỮ LIỆU 213
I.1 Sơ đồ toàn cục 213
I.2 Sơ đồ phân mảnh 213
I.3 Sơ đồ phân định vị 218
I.4 Mô hình nhân bản 221
II HỆ THỐNG PHÂN QUYỀN 222
Chương 4: CÁC CHỨC NĂNG TRONG PHÂN HỆ 223
I FORM TỪ ĐIỂN DỮ LIỆU 223
I.1 Tự điển môn học 223
I.2 Tự điển môn học tương đương 224
I.3 Tự điển môn học trước / tiên quyết 226
I.4 Tự điển môn học song hành 227
I.5 Tự điển hệ đào tạo 228
I.6 Tự điển nhóm ngành và ngành 229
I.7 Tự điển khóa ngành 231
II FORM CHƯƠNG TRÌNH ĐÀO TẠO 232
II.1 Form chương trình đào tạo nhóm ngành chuẩn 232
II.2 Form chương trình đào tạo chuyên ngành chuẩn 234
II.3 Form chương trình đào tạo khóa ngành 235
III FORM TIÊU CHUẨN HOÀN THÀNH GIAI ĐOẠN – TIÊU CHUẨN TỐT NGHIỆP 236
III.1 Tiêu chuẩn xét hoàn thành giai đoạn 236
III.2 Form tiêu chuẩn tốt nghiệp 237
PHẦN IV: PHÂN HỆ XẾP THỜI KHÓA BIỂU 239
Chương 1:MÔ TẢ PHÂN HỆ XẾP THỜI KHÓA BIỂU 240
Trang 9I.MỤC ĐÍCH XÂY DỰNG PHÂN HỆ 240
II DỮ LIỆU TRONG PHÂN HỆ 240
III NHỮNG RÀNG BUỘC TRONG PHÂN HỆ XẾP THỜI KHÓA BIỂU 244
III.1 Ràng buộc về tài nguyên 244
III.2 Các ràng buộc theo qui tắc 244
III.3 Một số ràng buộc khác nhằm tăng tính tiện dụng và tăng hiệu quả sử dụng tài nguyên trong hệ thống 245
IV QUI TRÌNH XẾP THỜI KHÓA BIỂU 245
IV.1 Bước chuẩn bị 245
IV.2 Bước nhập liệu 245
IV.3 Bước xếp thời khóa biểu 246
IV.4 Bước chỉnh sửa thời khóa biểu 246
IV.5 Xem thời khóa biểu 247
V THIẾT KẾ GIAO DIỆN 247
V.1 Thiết kế form nhập liệu 247
V.2 Thiết kế report 262
Chương 2: GIẢI THUẬT XẾP THỜI KHÓA BIỂU 267
I SƠ ĐỒ KHỐI 267
II CHIẾN LƯỢC XẾP THỜI KHÓA BIỂU 268
III MÔ HÌNH XẾP THỜI KHÓA BIỂU 269
III.1 Mô hình chạy trên 1 server 270
III.2 Mô hình chạy song song trên nhiều server 273
III.3 Mô hình load tất cả dữ liệu trên hệ phân bố dữ liệu vào quá trình client .275 PHẦN V: PHÂN HỆ ĐĂNG KÝ MÔN HỌC 279
Chương 1: PHÂN TÍCH VÀ THIẾT KẾ 280
I MỤC ĐÍCH 280
II CÁC RÀNG BUỘC 280
III HƯỚNG GIẢI QUYẾT 281
III.1 Sơ đồ các luồng công việc 281
III.2 Thiết kế dữ liệu 284
III.3 Các tiêu chuẩn xét đăng ký môn học 286
III.4 Các chiến lược xét đăng ký môn học trên sơ sở dữ liệu phân bố 286
IV PHÂN QUYỀN 288
Chương 2: CÁC CHỨC NĂNG TRONG PHÂN HỆ 289
I CHỨC NĂNG THỐNG KÊ 289
II CHỨC NĂNG XÉT ĐĂNG KÝ MÔN HỌC 291
III CHỨC NĂNG XÉT VÉT ĐĂNG KÝ MÔN HỌC 293
IV CHỨC NĂNG XEM KẾT QUẢ DKMH CỦA SINH VIÊN 295
V CHỨC NĂNG HIỆU CHỈNH 297
PHẦN VI: PHÂN HỆ XẾP LỊCH THI 301
Chương 1: MÔ TẢ NGHIỆP VỤ 303
I MỤC ĐÍCH 303
I.1 Các yêu cầu 303
Trang 10I.2 Các ràng buộc về sinh viên khi xếp lịch thi cho một môn thi 305
Chương 2: PHÂN TÍCH VÀ THIẾT KẾ 307
I PHÂN TÍCH VẤN ĐỀ 307
II CÁC HƯỚNG TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ 307
II.1 Phương pháp phân nhóm 308
II.2 Phương pháp tuần tự 308
II.3 Chiến lược tìm kiếm tổng quát 311
III CÁCH GIẢI QUYẾT VẤN ĐỀ 313
III.1 Các chiến lược xếp lịch thi 313
III.2 Sự kết hợp giữa các chiến lược 314
III.3 Các tiêu chuẩn và thang điểm đánh giá một lịch thi 315
III.4 Các tùy chọn trong khi xếp lịch thi 315
IV CHỌN MÔ HÌNH KHI LÀM VIỆC TRÊN CƠ SỞ DỮ LIỆU PHÂN BỐ .316 Chương 3: QUAN HỆ THỰC THỂ 317
I.ERD 317
II PHÂN BỐ DỮ LIỆU 319
Chương 4: CÁC CHỨC NĂNG CỦA PHÂN HỆ 320
I TÓM TẮT CHỨC NĂNG 320
II THIẾT KẾ FORM 321
III MÔ TẢ GIẢI THUẬT 337
III.1 Sơ đồ khối tổng quát của chương trình 337
III.2 Các phương pháp cụ thể giải quyết các yêu cầu 337
III.2.1 Chọn đơn vị nhỏ nhất cho quá trình xếp lịch thi 337
III.2.2 Xếp theo độ ưu tiên của các chiến lược 337
III.2.3 Xếp lịch thi với các tùy chọn 338
III.2.4 Đánh giá lịch thi theo thang điểm 339
PHẦN VII: PHÂN HỆ QUẢN LÝ ĐIỂM 340
Chương 1: MÔ TẢ NGHIỆP VỤ 341
Chương 2: PHÂN TÍCH VÀ THIẾT KẾ 346
I MỐI LIÊN KẾT GIỮA SINH VIÊN VÀ ĐIỂM TỔNG HỢP 346
II MỐI LIÊN KẾT GIỮA MÔN HỌC VÀ MÔN HỌC TƯƠNG ĐƯƠNG, NHÓM MÔN HỌC TƯƠNG ĐƯƠNG 347
III MỐI LIÊN KẾT GIỮA KHÓA NGÀNH VÀ MÔN BẮT BUỘC TIÊU CHUẨN TỐT NGHIỆP, NHÓM TỰ CHỌN TIÊU CHUẨN TỐT NGHIỆP 349
IV PHÂN BỐ CƠ SỞ DỮ LIỆU 350
Chương 3: CÁC CHỨC NĂNG CỦA PHÂN HỆ 351
I FORM NHẬP SỬA THÔNG TIN MÔN HỌC 351
II FORM NHẬP ĐIỂM THI 353
III FORM NHẬP ĐIỂM THI 1 SINH VIÊN 354
IV FORM CỘNG ĐIỂM TRUNG BÌNH HỌC KỲ VÀ ĐIỂM TRUNG BÌNH TÍCH LŨY TẤT CẢ SINH VIÊN 356
V FORM CỘNG ĐIỂM TRUNG BÌNH HỌC KỲ VÀ ĐIỂM TRUNG BÌNH TÍCH LŨY 1 SINH VIÊN 358
Trang 11VI FORM CỘNG ĐIỂM TRUNG BÌNH HỌC KỲ VÀ ĐIỂM TRUNG BÌNH TÍCH LŨY THEO DANH SÁCH SINH VIÊN NHẬP VÀO 359VII FORM XÉT TỐT NGHIỆP 360
TÀI LIỆU THAM KHẢO 361
Trang 12PHAÀN A:
TÌM HIEÅU TÍNH CHAÁT PHAÂN BOÁ CUÛA SQL SERVER 7.0
Trang 13PHẦN I:
SƠ LƯỢC VỀ
CƠ SỞ DỮ LIỆU PHÂN BỐ
Trang 14Trong những năm gần đây, cơ sở dữ liệu phân bố đã trở thành một lãnh
vực quan trọng của xử lý thông tin Các công ty hoặc cơ quan có hoạt động quimô lớn cần phải có các hệ thống xử lý thông tin trên một mạng diện rộng Điềunày đòi hỏi một hệ quản trị cơ sở dữ liệu phân bố hiệu quả và có độ tin cậy cao
Cơ sở dữ liệu phân bố tránh được một số nhược điểm của các cơ sở dữ liệu tậptrung và thích hợp với cách tổ chức không tập trung của các công ty hoặc cơ quanlớn
I CÁC ĐẶC ĐIỂM CỦA CƠ SỞ DỮ LIỆU PHÂN BỐ
Cơ sở dữ liệu phân bố không đơn giản là sự phân bố của các cơ sở dữ liệutập trung, bởi vì cơ sở dữ liệu phân bố có nhiều đặc điểm khác biệt so với cơ sởdữ liệu tập trung, truyền thống Phần này so sánh cơ sở dữ liệu phân bố với cơ sở
dữ liệu tập trung ở một số đặc điểm: điều khiển tập trung, sự độc lập dữ liệu, sự
giảm dư thừa dữ liệu, các cấu trúc vật lý phức tạp để truy xuất hiệu quả.
I.1 Điểu khiển tập trung :
Điều khiển tập trung (centralized control) là một đặc điểm của cơ sở dữ
liệu, toàn bộ dữ liệu được tập trung lại nhằm để tránh sự dư thừa dữ liệu, và được
quản lý bởi người quản trị cơ sở dữ liệu Chức năng cơ bản của người quản trị cơ
sở dữ liệu (DBA - database administrator) là bảo đảm sự an toàn của dữ liệu.
Trong các cơ sở dữ liệu phân bố, vấn đề điều khiển tập trung không đượcnhấn mạnh Nói chung, trong các cơ sở dữ liệu phân bố, sự điều khiển được thựchiện theo một cấu trúc điều khiển phân cấp bao gồm hai loại người quản trị cơ sởdữ liệu:
(1) Người quản trị cơ sở dữ liệu toàn cục (global database administrator) là
người có trách nhiệm chính về toàn bộ cơ sở dữ liệu phân bố
(2) Người quản trị cơ sở dữ liệu cục bộ (local database administrator) là người
có trách nhiệm về cơ sở dữ liệu cục bộ của họ
Tuy nhiên, những người quản trị cơ sở dữ liệu cục bộ cần phải có nhữngquyền độc lập riêng về cơ sở dữ liệu dữ liệu cục bộ của mình mà người quản trị
cơ sở dữ liệu toàn cục hoàn toàn không có những quyền này và sự phối hợp giữacác vị trí được thực hiện bởi chính những người quản trị cục bộ Đặc điểm này
được gọi là sự độc lập vị trí Các cơ sở dữ liệu phân bố có thể khác nhau rất nhiều
về mức độ độc lập vị trí: từ sự độc lập vị trí hoàn toàn (không có người quản trị cơsở dữ liệu tập trung) đến sự điều khiển tập trung hầu như hoàn toàn
I.2 Sự độc lập dữ liệu :
Sự độc lập dữ liệu (data independence) cũng là một đặc điểm của cơ sở dữ
liệu Sự độc lập dữ liệu có nghĩa là tổ chức hiện tại của dữ liệu là trong suốt đối
Trang 15với người lập trình ứng dụng Ưu điểm chính của sự độc lập dữ liệu là các chươngtrình không bị ảnh hưởng bởi những thay đổi về tổ chức vật lý của dữ liệu.
Trong các cơ sở dữ liệu phân bố, sự độc lập dữ liệu cũng quan trọng nhưtrong các cơ sở dữ liệu tập trung Tuy nhiên, một đặc điểm mới được đưa vào
trong khái niệm thông thường của sự độc lập dữ liệu là sự trong suốt phân bố
(distribution transparency) Nhờ sự trong suốt phân bố này mà các chương trình
ứng dụng có thể được viết giống như trong cơ sở dữ liệu không được phân bố Chonên, tính đúng đắn của các chương trình ứng dụng không bị ảnh hưởng bởi sự dichuyển dữ liệu từ một vị trí này đến một vị trí khác Tuy nhiên, tốc độ thực hiệncủa các chương trình ứng dụng thì bị ảnh hưởng
Sự độc lập dữ liệu trong cơ sở dữ liệu tập trung được thể hiện thông quamột kiến trúc nhiều mức, các mức này có những mô tả khác nhau về dữ liệu, vàcó những ánh xạ biến đổi giữa các mức này Sự trong suốt phân bố trong cơ sở dữliệu phân bố được thê hiện bằng cách bổ sung thêm các mức trong suốt vào kiến
trúc nhiều mức của cơ sở dữ liệu tập trung Xem “Chương 3 Các mức trong suốt
của dữ liệu phân bố”.
I.3 Sự giảm dư thừa dữ liệu
Trong các cơ sở dữ liệu tập trung, sự dư thừa dữ liệu cần được giảm bớtcàng nhiều càng tốt vì hai lý do: tránh sự không nhất quán giữa nhiều bản sao củacùng dữ liệu bằng cách chỉ có một bản sao, và tiết kiệm vùng nhớ lưu trữ Khi đó,các ứng dụng cùng chia xẻ dữ liệu, cùng truy xuất đến các tập tin dữ liệu
Tuy nhiên, trong các cơ sở dữ liệu phân bố, sự dư thừa dữ liệu như là mộtđặc điểm cần thiết, vì các lý do sau:
(1) Làm tăng tính cục bộ của các ứng dụng nếu dữ liệu được nhân bản tại tất
cả các vị trí mà ứng dụng cần dữ liệu này Khi đó, các ứng dụng cục bộ được thực hiện nhanh hơn vì không cần phải truy xuất dữ liệu từ xa.(2) Làm tăng tính sẵn sàng của hệ thống ứng dụng, bởi vì một vị trí bị hỏng
sẽ không làm ngưng sự thực hiện của các ứng dụng ở những vị trí khác nếu dữ liệu tại vị trí bị hỏng được nhân bản tại các vị trí khác
Tuy nhiên, sự nhân bản dữ liệu cần phải xem xét kỹ lưỡng dựa vào hai
loại ứng dụng cơ bản, đó là ứng dụng chỉ đọc và ứng dụng cập nhật Sự nhân bản
dữ liệu giúp cho các ứng dụng chỉ đọc được thực hiện nhanh hơn, nhưng nó làmcho các ứng dụng cập bị thực hiện lâu hơn vì phải cập nhật dữ liệu tại các vị tríđược nhân bản
Như vậy, sự nhân bản dữ liệu sẽ là một ưu điểm nếu hệ thống có rất nhiềuứng dụng chỉ đọc và có rất ít ứng dụng cập nhật; trong trường hợp ngược lại thì sựnhân bản dữ liệu lại là một nhược điểm
Trang 16II KIẾN TRÚC THAM KHẢO DÙNG CHO CÁC CƠ SỞ DỮ LIỆU PHÂN BỐ
Hình ở trang kế tiếp trình bày một kiến trúc tham khảo dùng cho một cơ sởdữ liệu phân bố Kiến trúc tham khảo này không được thực hiện một cách tườngminh trong tất cả cơ sở dữ liệu phân bố; tuy nhiên, các mức của nó thích hợp ởmức ý niệm để hiểu về tổ chức của một cơ sở dữ liệu phân bố bất kỳ
II.1 Lược đồ toàn cục
Ở mức cao nhất của kiến trúc này là lược đồ toàn cục (global schema).
Lược đồ toàn cục dùng để định nghĩa tất cả các dữ liệu được chứa trong cơ sở dữliệu phân bố và cũng giống như toàn bộ cơ sở dữ liệu không được phân bố Dođó, lược đồ toàn cục có thể được định nghĩa theo cách hoàn toàn giống với cáchđịnh nghĩa trong một cơ sở dữ liệu không phân bố Chúng ta dùng mô hình dữ liệuquan hệ để minh họa cho một lược đồ toàn cục và các ánh xạ giữa các mức khácnhau của cơ sở dữ liệu phân bố Trong mô hình dữ liệu quan hệ này, lược đồ toàn
cục bao gồm định nghĩa một tập hợp các quan hệ toàn cục (global relation).
Ví dụ: Một lược đồ toàn cục như sau
sinhvien (masv, hoten, tuoi, malop)
lop (malop, tenlop, malt, tenkhoa)
hoc (masv, mamh, diem)
monhoc (mamh, tenmh)
trong đó:
Sinhvien chứa thông tin về sinh viên gồm: mã sinh viên (masv), họ tên (hoten),
tuổi (tuoi), thuộc lớp (malop) Khóa là masv
Lop chứa thông tin về lớp học gồm: mã lớp (malop), tên lớp (tenlop), mã lớp
trưởng (malt), thuộc khoa (tenkhoa) Khóa là malop
Monhoc chứa thông tin về môn học gồm: mã môn học (mamh), tên môn học
(tenmh)hoc chứa thông tin về sinh viên (masv) học môn học (mamh) có điểm thi
cuối kỳ (diem) Khóa là masv và mamh
Trang 17II.2 Lược đồ phân mảnh
Mỗi quan hệ toàn cục có thể được phân chia thành nhiều phần không giao
nhau và các phần này được gọi là các mảnh (fragment) Có nhiều cách khác nhau
để thực hiện phép phân chia này Aùnh xạ giữa các quan hệ toàn cục và các mảnh
được định nghĩa trong lược đồ phân mảnh (fragmentation schema) Aùnh xạ này là
một - nhiều, nghĩa là một quan hệ toàn cục có thể được phân chia thành nhiềumảnh, nhưng một mảnh chỉ tương ứng với một quan hệ toàn cục Các mảnh đượcchỉ ra bởi một tên quan hệ toàn cục và một chỉ số mảnh; ví dụ Ri chỉ ra mảnh thứ icủa quan hệ toàn cục R
Ví dụ: Một lược đồ phân mảnh tương ứng với lược đồ toàn cục ở trên như sau, giảsử chỉ có hai khoa tên là ‘CNTT’ và ‘DIEN’
lop1 (malop, tenlop, malt, tenkhoa)
lop2 (malop, tenlop, malt, tenkhoa)
Lược đồ định vị(Allocation schema)
Lược đồ toàn cục(Global Schema)
Lược đồ phân mảnh(Fragmentation Schema)
Hệ quản trị CSDL (DBMS)tại vị trí n
Lược đồ ánh xạ cục bộ n(Local MappingSchema)
CSDL cục bộ n(Local Database)
Hệ quản trị CSDL
(DBMS)tại vị trí 1
Lược đồ ánh xạ cục bộ 1
Trang 18sinhvien1 (masv, hoten, tuoi, malop)
sinhvien2 (masv, hoten, tuoi, malop)
trong đó:
lop1 mảnh chứa dữ liệu của các lớp thuộc khoa ‘CNTT’
lop2 mảnh chứa dữ liệu của các lớp thuộc khoa ‘DIEN’
sinhvien1 mảnh chứa dữ liệu của các sinh viên thuộc khoa ‘CNTT’
sinhvien2 mảnh chứa dữ liệu của các sinh viên thuộc khoa ‘DIEN’
và các ánh xạ phân mảnh là:
lop1 = tenkhoa = ‘CNTT’ (lop)
lop2 = tenkhoa = ‘DIEN’ (lop)
sinhvien1 = sinhvien < malop = malop (lop1)
sinhvien2 = sinhvien < malop = malop (lop2)
II.3 Lược đồ định vị
Các mảnh là những phần luận lý của các quan hệ toàn cục mà chúng được
lưu trữ vật lý ở một hoặc nhiều vị trí khác nhau của mạng Lược đồ định vị
(allocation schema) xác định một mảnh được lưu ở những vị trí nào Loại của ánh xạ được xác định trong lược đồ định vị sẽ xác định cơ sở dữ liệu phân bố là dư
thừa hoặc không dư thừa Nếu một mảnh chỉ được lưu trữ tại một vị trí thì ánh xạ
là một – một (không dư thừa dữ liệu), nếu một mảnh được lưu trữ tại nhiều vị tríkhác nhau thì ánh xạ là một – nhiều (có dư thừa dữ liệu) Tất cả các mảnh tươngứng với cùng một quan hệ toàn cục R và được lưu trữ ở cùng một vị trí j sẽ tạo
thành một hình ảnh vật lý (physical image) của quan hệ toàn cục R tại vị trí j – quan hệ cục bộ (local relation) của R tại vị trí j Vì thế có một ánh xạ một - một
giữa một hình ảnh vật lý với một cặp (quan hệ toàn cục, vị trí); các hình ảnh vật
lý có thể được chỉ ra bởi một tên quan hệ toàn cục và một chỉ số vị trí Để phânbiệt quan hệ cục bộ với các mảnh, chúng ta sẽ dùng chỉ số trên, ví dụ Rj chỉ rahình ảnh vật lý của quan hệ toàn cục R tại vị trí j
Một ví dụ về mối liên kết giữa các loại đối tượng được định nghĩa ở trênsẽ được chỉ ra trong hình dưới đây Một quan hệ toàn cục R được phân chia thànhbốn mảnh R1, R2, R3 và R4 Bốn mảnh này được lưu trữ một cách dư thừa ở ba vịtrí của một mạng máy tính, tạo thành ba hình ảnh vật lý R1, R2 và R3
Trang 19Quan hệ toàn cục Các mảnh Hình ảnh vật lý
Chúng ta sẽ tham khảo đến một nhân bản (replica) của một mảnh ở một
vị trí cho trước, và ký hiệu nó bằng cách dùng tên quan hệ toàn cục và hai chỉ số(một chỉ số mảnh và một chỉ số vị trí)
Ví dụ: Ký hiệu R23 chỉ ra nhân bản của mảnh R2 được lưu trữ ở vị trí 3
Hai hình ảnh vật lý có thể giống nhau Trong trường hợp này, chúng ta sẽnói rằng một hình ảnh vật lý là một nhân bản của một hình ảnh vật lý khác
Ví dụ: R1 là một nhân bản của R2
Trong kiến trúc tham khảo ở trên, chúng ta đã mô tả các mối liên kết giữa
các đối tượng ở ba mức trên cùng của kiến trúc này Ba mức này là độc lập vị trí
R2
(vị trí 2)
R3(vị trí 3)
Trang 20(site independent) bởi vì chúng không phụ thuộc vào mô hình dữ liệu của các
DBMS cục bộ
II.4 Lược đồ ánh xạ cục bộ
Mức thấp hơn ba mức trên sẽ phụ thuộc vào mô hình dữ liệu của DBMScục bộ nhằm để ánh xạ các hình ảnh vật lý vào các đối tượng mà chúng được
thao tác bởi các DBMS cục bộ Aùnh xạ này được gọi là một lược đồ ánh xạ cục bộ (local mapping schema) và phụ thuộc vào loại DBMS cục bộ Vì thế, trong một
hệ thống không đồng nhất (heterogenous system), chúng ta có nhiều loại ánh xạ
cục bộ khác nhau ở các vị trí khác nhau
III CÁC MỨC TRONG SUỐT :
Mức 1 : Tính “trong suốt” phân mảnh : Ở mức này, các trình ứng dụng truy
xuất và cập nhật dữ liệu theo phương thức như là CSDL không được phân bố,và hệ thống có nhiệm vụ thực thi tất cả các thao tác được yêu cầu rõ ràngtrong các sơ đồ phân mảnh và định vị Như vậy, các ứng dụng hoàn toànkhông bị ảnh hưởng khi có bất kỳ sự thay đổi nào trong các sơ đồ nằm dưới sơđồ toàn cục (global schema) trong kiến trúc tham khảo ở trên
Mức 2 : Trính “trong suốt” vị trí : Ở mức này, người lập trình ứng dụng phải
giao dịch rõ ràng với các fragment Và các ứng dụng độc lập với các thay đổi
ở sơ đồ định vị (allocation schema) nhưng lại phải thay đổi khi có sự thay đổi
ở sơ đồ phân mảnh (fragmentation schema) vì các cấu trúc của sự phân mảnhđược đưa vào ứng dụng Tuy nhiên, chính bản thân của tính “trong suốt” vị trícũng rất có ích vì nó cho phép các ứng dụng bỏ qua sự tồn tại nhiều bản saocủa mỗi fragment, qua đó cho phép các bản sao được di chuyển từ site nàyđến site khác và cho phép tạo ra các bản sao mới mà không ảnh hưởng đếncác ứng dụng Ngoài ra, lợi dụng sự hiểu biết cấu trúc của sự phân mảnh,người lập trình có thể chọn ra được chiến lược tốt nhất để thực thi các thaotác trong các ứng dụng, công việc mà ở mức 1 hệ quản lý CSDL phải thựchiện tự động và nhiều khi chiến lược được chọn không phải là tốt nhất
Mức 3 : Tính “trong suốt” ánh xạ cục bộ Các ứng dụng buộc phải liên quan
đến vị trí của các fragment và nếu có sự cập nhật dữ liệu thì phải lưu ý đếnsự sao chép dữ liệu (replication) Các ứng dụng tuy v† n tham khảo đến cácđối tượng thông qua các tên độc lập với các hệ cục bộ riêng lẻ nhưng phải chỉđịnh rõ site lưu giữ các đối tượng đó Trong các ứng dụng, mỗi primitive truyxuất CSDL được hệ quản lý CSDL phân bố gửi đến các site riêng biệt và cácprimitive này sử dụng tên fragment không phụ thuộc site (site-independentfragment names) Nếu sự ánh xạ này không được hệ quản lý CSDL cung cấpthì ứng dụng sẽ phải đưa vào trực tiếp tên tập tin được các hệ cục bộ sử dụng.Tuy nhiên, khía cạnh quan trọng nhất của tính “trong suốt” ánh xạ cục bộ
Trang 21không phải là sự ánh xạ giữa tên fragment và tên cục bộ mà là sự ánh xạgiữa các primitive dùng trong trình ứng dụng và các primitive được các hệCSDL cục bộ sử dụng Vì vậy, tính “trong suốt” ánh xạ cục bộ là một đặctính quan trọng trong một hệ CSDL phân bố không đồng nhất.
Mức 4 : Không có tính “trong suốt” : Người lập trình ứng dụng phải biết tất
cả các thông tin về sự phân mảnh, sự định vị, sự sao chép cũng như tên củacác bản sao của các fragment tại các site khác nhau để có thể tạo ra một ứngdụng thao tác trên các fragment đó Ngoài ra, họ còn phải tạo các chươngtrình hỗ trợ để thực thi các chức năng cần thiết bằng ngôn ngữ thích hợp vớihệ quản lý CSDL cục bộ và cài đặt các chương trình này tại các site tươngứng, đồng thời trong các ứng dụng phải có yêu cầu kích hoạt các chương trìnhhỗ trợ từ xa này để thực hiện các thao tác cần thiết
IV CÁC LOẠI PHÂN MẢNH :
IV.1 Quy luật phân mảnh :
Điều kiện hoàn toàn : Tất cả dữ liệu trong quan hệ toàn cục phải được ánh xạvào phân mảnh
Điều kiện có thể tạo lại được : phải luôn luôn có khả năng tạo lại quan hệtoàn cục
Điều kiện không giao nhau : các phân mảnh phải không giao nhau Điều kiệnnày chỉ áp dụng đối với phân mảnh ngang
IV.2 Các loại phân mảnh :
Phân mảnh ngang : Bao gồm các phân mảnh trong quan hệ toàn cục đượcphân thành những tập con dựa trên thuộc tính của quan hệ và toán hạng lựachọn (selection)
Phân mảnh suy diễn ngang : Các phân mảnh không chia theo thuộc tính củachính quan hệ mà dựa trên sự phân mảnh của quan hệ khác
Phân mảnh dọc : Các phân mảnh được chia theo những thuộc tính tạo thànhnhóm
Trang 23CHƯƠNG 1:
TÌM HIỂU TỐI ƯU HÓA TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ
I TRUY VẤN BIỂU THỨC CHUẨN TẮC CỦA TRUY VẤN
I.1 Truy vấn:
Truy vấn (query) là một biểu thức được biểu diễn bằng một ngôn ngữ thích
hợp và dùng để xác định một phần dữ liệu được chứa trong cơ sở dữ liệu
Một truy vấn có thể được dùng để xác định ngữ nghĩa của một ứng dụng,hoặc nó có thể được dùng để xác định công việc cần được thực hiện bởi một ứngdụng nhằm để truy xuất cơ sở dữ liệu
Ví dụ: Xét truy vấn cho biết tên lớp của lớp có mã lớp là ‘MT01’ Truy vấn nàycó thể được biểu diễn bởi một biểu thức đại số quan hệ như sau:
tenlop (malop=’MT01’ (lop))
Một truy vấn có thể được biểu diễn bởi một cây toán tử Một cây toán tử (operator tree) của một truy vấn, còn được gọi là cây truy vấn (query tree) hoặc cây đại số quan hệ (relational algebra tree), là một cây mà một nút lá là một quan
hệ trong cơ sở dữ liệu, và một nút khác lá (nút trung gian hoặc nút gốc) là mộtquan hệ trung gian được tạo ra bởi một phép toán đại số quan hệ Chuỗi các phéptoán đại số quan hệ được thực hiện từ các nút lá đến nút gốc để tạo ra kết quả củatruy vấn
Ví dụ: Truy vấn trên có thể được biểu diễn bằng một cây toán tử như sau:
tenlop
malop = 1lop
Trang 24I.2 Biểu thức chuẩn tắc của truy vấn
Biểu thức chuẩn tắc (canonical expression) của một biểu thức đại số quan
hệ trên lược đồ toàn cục là một biểu thức có được bằng cách thay thế mỗi tênquan hệ toàn cục xuất hiện trong biểu thức bởi biểu thức tái lập của quan hệ toàncục này
Tương tự, chúng ta có thể biến đổi một cây toán tử trên lược đồ toàn cụcthành một cây toán tử trên lược đồ phân mảnh bằng cách thay thế các nút lá củacây đầu tiên bằng các biểu thức chuẩn tắc của chúng Một điều quan trọng là bâygiờ các nút lá của cây toán tử của biểu thức chuẩn tắc là các mảnh thay vì là cácquan hệ toàn cục
Ví dụ: Giả sử chúng ta chỉ có hai ngành mã số ngành là 4 và 5 Quan hệ lop được phân mảnh ngang dựa vào msnganh thành hai mảnh lop1 và lop2.
lop1 = lop msnganh = 4 (lop)
lop2 = lop msnganh = 5 (lop)
Biểu thức tái lập của quan hệ toàn cục lop là:
lop = lop1 lop2
Biểu thức chuẩn tắc của biểu thức truy vấn này là:
tenlop (malop=’MT01’ (lop1 lop2))
Thay thế quan hệ toàn cục lop trong cây toán tử bởi biểu thức tái lập ở trên,
chúng ta được cây toán tử như sau:
Trang 25Sơ đồ tối ưu hóa truy vấn trong cơ sở dữ liệu tập trung bao gồm các bướcsau:
Truy vấn SQL
Kiểm tra ngữ pháp
Truy vấn đúng ngữ pháp
Kiểm tra sự hợp lệ
Truy vấn SQL hợp lệ
Dịch truy vấn
Truy vấn đại số quan hệ
Tối ưu hóa đại số quan hệ
Truy vấn đại số quan hệ được tối ưu hóa
Chọn chiến lược
Kế hoạch thực hiện
Tạo sinh mã
Mã cho truy vấn
Trang 26Khi một hệ quản trị dữ liệu (DBMS) nhận một truy vấn viết bằng ngônngữ cấp cao, chẳng hạn SQL, DBMS thực hiện các bước sau đây
II.1 Bước 1 - Kiểm tra ngữ pháp (Syntax Checking)
Trong bước này, DBMS sẽ kiểm tra ngữ pháp của truy vấn ban đầu (SQLquery) Nếu truy vấn bị sai ngữ pháp thì DBMS sẽ thông báo truy vấn bị sai ngữpháp và truy vấn này sẽ không được thực hiện Nếu truy vấn đúng ngữ pháp(syntactically correct SQL query) thì DBMS sẽ tiếp tục thực hiện bước 2
Ví dụ: Xét truy vấn
SELECT mssv, hoten
FORM sinhvien;
Truy vấn này bị sai ngữ pháp (viết sai từ khóa FROM)
II.2 Bước 2 - Kiểm tra sự hợp lệ (Validation)
Trong bước này, DBMS sẽ thực hiện các công việc:
- Kiểm tra sự tồn tại của các đối tượng dữ liệu (các cột, các biến, cácbảng, vvv…) của truy vấn trong cơ sở dữ liệu
- Kiểm tra sự hợp lệ về kiểu dữ liệu của các đối tượng dữ liệu (các cột,các biến, vv…) trong truy vấn
Ví dụ: Xét truy vấn
SELECT mssv, hotenFROM sinh_vien;
Truy vấn này có bảng sinh_vien không tồn tại trong cơ sở dữ liệu.
Ví dụ: Xét truy vấn
SELECT mssv, hotenFROM sinhvienWHERE soTCTL = ‘90’;
Truy vấn này không hợp lệ vì có cột soTCTL (thuộc kiểu dữ liệu Number)
so sánh với một hằng chuỗi ‘90’ trong mệnh đề WHERE.
Nếu truy vấn chứa các đối tượng dữ liệu không tồn tại hoặc truy vấn chứacác đối tượng dữ liệu không phù hợp kiểu dữ liệu với nhau thì DBMS sẽ thôngbáo các đối tượng dữ liệu nào không tồn tại hoặc các đối tượng dữ liệu nào khôngphù hợp kiểu dữ liệu và truy vấn này sẽ không được thực hiện Nếu các đối tượng
Trang 27dữ liệu này đều tồn tại trong cơ sở dữ liệu (truy vấn hợp lệ – valid SQL query) thìDBMS sẽ tiếp tục thực hiện bước 3.
II.3 Bước 3 - Dịch truy vấn (Translation)
Trong bước này, DBMS sẽ biến đổi truy vấn hợp lệ này thành một dạngbiểu diễn bên trong hệ thống ở mức thấp hơn mà DBMS có thể sử dụng được.Một trong các dạng biểu diễn bên trong này là việc sử dụng đại số quan hệ bởi vìcác phép toán đại số quan hệ được biến đổi dễ dàng thành các tác vụ của hệthống: truy vấn ban đầu được biến đổi thành một biểu thức đại số quan hệ haycòn gọi là truy vấn đại số quan hệ (relational algebra query)
II.4 Bước 4 - Tối ưu hóa biểu thức đại số quan hệ (Relational Algebra
Optimization)
Trong bước này, DBMS sử dụng các phép biến đổi tương đương của đại sốquan hệ để biến đổi biểu thức đại số quan hệ có được ở bước 3 thành một biểuthức đại số quan hệ tương đương (theo nghĩa chúng có cùng một kết quả) nhưngbiểu thức sau sẽ hiệu quả hơn: loại bỏ các phép toán không cần thiết và giảmvùng nhớ trung gian Cuối bước này, DBMS tạo ra một truy vấn đại số quan hệ đãđược tối ưu hóa (optimized relational algebra query)
II.5 Bước 5 - Chọn lựa chiến lược truy xuất (Strategy Selection)
Trong bước này, DBMS sử dụng các thông số về kích thước của các bảng,các chỉ mục, vv để xác định cách xử lý truy vấn DBMS sẽ đánh giá chi phí củacác kế hoạch thực hiện khác nhau có thể có để từ đó chọn ra một kế hoạch thực
hiện (execution plan) cụ thể sao cho tốn ít chi phí nhất (thời gian xử lý và vùng
nhớ trung gian) Các thông số dùng để đánh giá chi phí của kế hoạch thực hiệngồm: số lần và loại truy xuất đĩa, kích thước của vùng nhớ chính và vùng nhớngoài, và thời gian thực hiện của các tác vụ để tạo ra kết quả của truy vấn Cuốibước này, DBMS tạo ra một kế hoạch thực hiện cho truy vấn
II.6 Bước 6 - Tạo sinh mã (Code Generation)
Trong bước này, kế hoạch thực hiện của truy vấn có được ở cuối bước 5 sẽđược mã hóa và được thực hiện
III TỐI ƯU HÓA TRUY VẤN TRONG CƠ SỞ DỮ LIỆU PHÂN BỐ
Trang 28Tối ưu hóa truy vấn trong cơ sở dữ liệu phân bố bao gồm một số bước đầucủa tối ưu hóa truy vấn trong cơ sở dữ liệu tập trung và một số bước tối ưu hóa cóliên quan đến sự phân bố dữ liệu.
III.1 Bước 1 - Phân rã truy vấn (Query Decomposition)
Bước này còn được gọi là bước Tối ưu hóa truy vấn trên lược đồ toàn cục.
Bước này giống với các bước 1, 2, 3 và 4 của tối ưu hóa truy vấn trong cơ sở dữ liệu tập trung, nhằm để biến đổi một truy vấn viết bằng ngôn ngữ cấp cao, chẳng
hạn SQL, thành một biểu thức đại số quan hệ tương đương (theo nghĩa chúng cho
ra cùng một kết quả) và hiệu quả (theo nghĩa loại bỏ các phép toán đại số quan hệ không cần thiết, giảm vùng nhớ trung gian) Bước này chưa đề cặp đến sự phân bố
dữ liệu
Tối ưu hóa truy vấn trên lược đồ toàn cục bao gồm 4 bước sau:
III.1.1 Bước 1.1 - Phân tích truy vấn
Trong bước này, DBMS kiểm tra ngữ pháp của truy vấn, kiểm trasự tồn tại của các đối tượng dữ liệu (tên cột, tên bảng, vv…) của truy vấntrong cơ sở dữ liệu, phát hiện các phép toán trong truy vấn bị sai về kiểu
dữ liệu, điều kiện của mệnh đề WHERE có thể bị sai về ngữ nghĩa.
Phân tích điều kiện của mệnh đề WHERE để phát hiện truy vấn bị
sai Có hai loại sai:
- Sai về kiểu dữ liệu (type incorrect)
- Sai về ngữ nghĩa (semantically incorrect)Truy vấn bị sai về kiểu dữ liệu
Một truy vấn bị sai về kiểu dữ liệu nếu các thuộc tính của nó hoặc các tên quan hệ không được định nghĩa trong lược đồ toàn cục, hoặc nếu các phép toán được áp dụng cho các thuộc tính bị sai về kiểu dữ liệu
Để giải quyết cho vấn đề này, trong lược đồ toàn cục, chúng taphải mô tả kiểu dữ liệu của các thuộc tính của các quan hệ
Sơ đồ tối ưu hóa truy vấn trong cơ sở dữ liệu phân bố bao gồm cácbước sau:
Trang 29Truy vấn trêncác quan hệ được phân bố
Phân rã truy vấn
(Lược đồ toàn cục)
Truy vấn đại số quan hệ trêncác quan hệ được phân bố
Định vị dữ liệu
(Lược đồ phân mảnh)Truy vấn mảnh
Tối ưu hóa truy vấn toàn cục
Truy vấn mảnh được tối ưu hóavới các tác vụ truyền thông
Tối ưu hóa truy vấn cục bộ
Các truy vấn cục bộ được tối ưu hóa
Ví dụ: Xét truy vấn:
SELECT masv, hoten
Trang 30FROM sinhvien
WHERE soTCTL = ‘123’;
Truy vấn này có hai lỗi sai:
(1) masv không tồn tại trong quan hệ sinhvien, và
(2) soTCTL thuộc kiểu Number không thể so sánh với hằng chuỗi ‘123’.
Truy vấn bị sai về ngữ nghĩa
Một truy vấn bị sai về ngữ nghĩa nếu nó có chứa các thành phần không tham gia vào quá trình tạo ra kết quả của truy vấn
Để phát hiện một truy vấn bị sai về ngữ nghĩa, chúng ta dùng một đồ thị truy vấn (query graph) hoặc đồ thị kết nối quan hệ (relation connection graph) cho
các truy vấn có chứa các phép chọn, phép chiếu và phép kết Trong một đồ thị
truy vấn, một nút biểu diễn cho một quan hệ kết quả (result relation) và các nút khác biểu diễn cho các quan hệ toán hạng (operand relation) Một cạnh giữa hai
nút quan hệ toán hạng biểu diễn cho một phép kết, một cạnh giữa một nút quan hệ toán hạng với một nút quan hệ kết quả biểu diễn cho một phép chiếu Một nút quan hệ toán hạng có thể chứa một điều kiện chọn Một đồ thị con quan trọng củađồ thị này là đồ thị kết (join graph) được dùng trong bước tối ưu hóa truy vấn
Một truy vấn bị sai về ngữ nghĩa nếu đồ thị truy vấn của nó là không liên thông Đồ thị không liên thông là một đồ thị bao gồm nhiều thành phần liên
thông, mỗi thành phần liên thông là một đồ thị con riêng biệt, hai thành phần liênthông không được nối với nhau thông qua các cạnh Trong trường hợp này, một truy vấn được xem là đúng đắn bằng cách chỉ giữ lại thành phần có liên quan đến quan hệ kết quả và loại bỏ các thành phần còn lại
Nếu đồ thị truy vấn của truy vấn là không liên thông, truy vấn bị sai về ngữ nghĩa Có ba giải pháp cho vấn đề này là:
(1) Hủy bỏ truy vấn này
(2) Hủy bỏ các bảng không cần thiết trong mệnh đề From và các điều kiện có
liên quan đến các bảng này trong mệnh đề WHERE.
(3) Bổ sung điều kiện kết sao cho đồ thị truy vấn được liên thông Một đồ thị
truy vấn có thể không bị sai ngữ nghĩa nếu đồ thị này là một đồ thị đơn (cónhiều nhất một cạnh nối giữa hai đỉnh), liên thông và số cạnh bằng số đỉnhtrừ 1
III.1.2 Bước 1.2 - Chuẩn hóa điều kiện của mệnh đề WHERE
Điều kiện ghi trong mệnh đề WHERE là một biểu thức luận lý có
thể bao gồm các phép toán luận lý (not, and, or) được viết dưới một dạng bất kỳ
Trang 31Ký hiệu các phép toán luận lý: not (), and (), or () Bước này nhằm mục đích
chuẩn hóa điều kiện của mệnh đề Where về một trong hai dạng chuẩn:
- Dạng chuẩn giao (conjunctive normal form)
(p11 p12 p1n) (pm1 pm2 pmn)
- Dạng chuẩn hợp (disjunctive normal form)
(p11 p12 p1n) (pm1 pm2 pmn)
trong đó pij là một biến luận lý (có giá trị là true hoặc false) hoặc là một
vị từ đơn giản (simple predicate) có dạng:
Để biến đổi điều kiện của mệnh đề WHERE về một trong hai dạng
chuẩn trên, chúng ta sử dụng các phép biến đổi tương đương của các phéptoán luận lý Ký hiệu là sự tương đương
Các phép biến đổi tương đương:
Trang 32(9) (p) p
Ví dụ: Xét truy vấn
SELECT mslopFROM sinhvienWHERE (NOT (mslop = 1)
AND (mslop = 1 OR mslop = 2)AND NOT (mslop = 2))
OR hoten = ‘Nam’;
Điều kiện q của mệnh đề WHERE là:
(NOT (mslop = 1) AND (mslop = 1 OR mslop = 2) AND NOT (mslop = 2)) OR hoten = ‘Nam’
Ký hiệu:
p1 là mslop = 1
p2 là mslop = 2
p3 là hoten = ‘Nam’
Điều kiện q sẽ là:
(p1 (p1 p2) p2) p3
Bằng cách áp dụng các phép biến đổi (3), (5) để đưa điều kiện q về dạngchuẩn hợp:
(p1 p1 p2) (p1 p2 p2) p3
III.1.3 Bước 1.3 - Đơn giản hóa điều kiện của mệnh đề WHERE
Bước này sử dụng các phép biến đổi tương đương của cácphép toán luận lý (not, and, or) để rút gọn điều kiện của mệnh đề
WHERE.
Các phép biến đổi tương đương gồm có:
(10) p p p(11) p p p
Trang 33Áp dụng phép biến đổi (15), chúng ta được điều kiện q cuối cùng là
p3, tức là hoten = ‘Nam’ Vậy truy vấn này trở thành truy vấn sau:
SELECT mslopFROM sinhvienWHERE hoten = ‘Nam’;
III.1.4 Bước 1.4 - Biến đổi truy vấn thành một biểu thức đại số quan hệ hiệu quả
Bước này sử dụng các phép biến đổi tương đương của các
phép toán đại số quan hệ nhằm để loại bỏ các phép toán đại số
quan hệ không cần thiết và giảm vùng nhớ trung gian được sử dụng
trong quá trình thực hiện các phép toán đại số quan hệ cần thiếtcho truy vấn
Bước này bao gồm hai bước sau đây:
Bước 1.4.1 - Biến đổi truy vấn thành một biểu thức đại số quan hệ,
biểu diễn biểu thức đại số quan hệ này bằng một cây toán tử
Trang 34Bước 1.4.2 - Đơn giản hóa cây toán tử để có được một biểu thức
đại số quan hệ hiệu quả
Bước 1.4.1 Biểu diễn truy vấn bằng cây toán tử
Quá trình biến đổi một truy vấn được viết bằng lệnh
SELECT thành một cây toán tử bao gồm các bước như sau:
(1) Các nút lá được tạo lập từ các quan hệ ghi trong mệnh đềFrom
(2) Nút gốc được tạo lập bằng phép chiếu trên các thuộc tính
ghi trong mệnh đề SELECT.
(3) Điều kiện ghi trong mệnh đề WHERE được biến đổi thành
một chuỗi thích hợp các phép toán đại số quan hệ (phép chọn, phépkết, phép hợp, vv ) đi từ các nút lá đến nút gốc Chuỗi các phéptoán này có thể được cho trực tiếp bởi thứ tự của các vị từ đơn giảnvà các phép toán luận lý
Một cây toán tử tương ứng với một biểu thức đại số quan hệ
Bước 1.4.2 Đơn giản hóa cây toán tử
Đơn giản hóa cây toán tử nhằm mục đích để đạt hiệu quả (loại bỏ các phép toán dư thừa trên các quan hệ, giảm vùng nhớ
trung gian, giảm thời gian xử lý truy vấn) bằng cách sử dụng các
phép biến đổi tương đương của các phép toán đại số quan hệ
Trong bước đơn giản hóa cây toán tử, một điều quan trọngtrong việc áp dụng các phép biến đổi tương đương cho một biểu
thức truy vấn là việc phát hiện các biểu thức con chung (common
subexpression) có trong biểu thức truy vấn, nghĩa là các biểu thức
con xuất hiện nhiều lần trong biểu thức truy vấn Điều này có ý
nghĩa là tiết kiệm thời gian thực hiện truy vấn vì các biểu thức con
này chỉ được định trị duy nhất một lần Một phương pháp để nhậnbiết chúng là ở chỗ việc biến đổi cây toán tử tương ứng thành mộtđồ thị toán tử bằng cách trước tiên gộp các nút lá giống nhau củacây (nghĩa là các quan hệ giống nhau), và sau đó gộp các nút trunggian khác của cây tương ứng với cùng các phép toán và có cùngcác toán hạng
Khi các biểu thức con đã được xác định, chúng ta có thể sửdụng các phép biến đổi tương đương sau đây để đơn giản hóa mộtcây toán tử:
(1) R R R
(2) R R R
Trang 35(3) R - R (4) R F (R) F R(5) R F (R) R(6) R - F (R)
F (R)(7) F1 (R) F2 (R) F1 F2 (R)(8) F1 (R) F2 (R) F1 F2 (R)(9) F1 (R) - F2 (R) F1 F2 (R)(10) R R R
(11) R F (R) F (R)(12) F1 (R) F2 (R) F1 F2 (R)(13) F (R) - R
Ý nghĩa của các phép biến đổi này là loại bỏ các phép toán dư
thừa.
Ví dụ: Xét truy vấn Q13 cho biết các họ tên của các sinh viênthuộc lớp có mã tên lớp là 1 và các sinh viên này có số tín chỉ tích lũykhông lớn hơn 90 tín chỉ Một biểu thức cho truy vấn này là:
hoten((sinhvien mslop = mslop tenlop = 1 (lop)) -
(soTCTL > 90 (sinhvien) mslop = mslop tenlop = 1 (lop))
Cây toán tử tương ứng:
hoten_
Trang 36sinhvien tenlop = 1 tuoi > 20 tenlop = 1
Để phát hiện ra biểu thức con chung, chúng ta bắt đầu bằng cách gộp các
nút lá tương ứng với các quan hệ sinhvien và lop Sau đó chúng ta đặt thừa số là phép chọn trên tenlop đối với phép kết (trong cách làm này, chúng ta di chuyển
phép chọn lên phía trên) Bâây giờ, chúng ta có thể trộn các nút tương ứng với
phép chọn trên soTCTL và cuối cùng các nút tương ứng với phép kết; chúng ta
được cây toán tử sau:
hoten_
soTCTL > 90
mslop = mslop
lopAùp dụng phép biến đổi tương đương (6) với R là biểu thức:
sinhvien mslop = mslop tenlop = 1 lop
chúng ta được cây toán tử sau:
hoten
soTCTL 90
mslop = mslop
Trang 37và biểu thức đại số quan hệ sau khi đã đơn giản hóa là:
hoten (hoten,mslop (soTCTL 90 (sinhvien))
mslop=mslop mslop(tenlop = 1 (lop)))
Đơn giản hóa một biểu thức đại số quan hệ được thực hiện dựa trên cáctiêu chuẩn sau đây:
Tiêu chuẩn 1 Dùng tính idempotence của phép chọn và phép chiếu để tạo ra các
phép chọn và các phép chiếu thích hợp cho mỗi quan hệ toán hạng
Tiêu chuẩn 2 Thực hiện các phép chọn và các phép chiếu càng sớm càng tốt, tức
là đẩy các phép chọn và các phép chiếu xuống phía dưới cây càng xa càngtốt
Trang 38Tiêu chuẩn 3 Khi các phép chọn được thực hiện sau một phép tích thì kết hợp
các phép toán này để tạo thành một phép kết
Tiêu chuẩn 4 Kết hợp chuỗi các phép toán một ngôi liên tiếp nhau áp dụng cho
một quan hệ toán hạng Một chuỗi các phép chọn liên tiếp nhau (hoặc mộtchuỗi các phép kết liên tiếp nhau) có thể được kết hợp thành một phépchọn (hoặc phép kết)
Tiêu chuẩn 5 Khi phát hiện các biểu thức con chung trong biểu thức truy vấn, áp
dụng các phép biến đổi tương đương để đơn giản hóa biểu thức truy vấn
III.1.5 Một giải thuật tối ưu hóa một biểu thức đại số quan hệ trên lược đồ toàn cục
Vào: Một biểu thức đại số quan hệ trên lược đồ toàn cục Ra: Một biểu thức đại số quan hệ đã được tối ưu hóaGiải thuật tối ưu hóa một biểu thức đại số quan hệ trên lược đồtoàn cục bao gồm các bước sau đây:
Bước 1 Phát hiện các biểu thức con chung có trong cây toán tử,
biến đổi cây toán tử dựa trên biểu thức con chung
Bước 2 Thực hiện phép chọn càng sớm càng tốt Sử dụng tính
idempotence của phép chọn, tính giao hoán của phép chọn với phép chiếu,và tính phân phối của phép chọn đối với phép hợp, phép giao, phép hiệu,phép kết và phép tích để di chuyển phép chọn càng xuống phía dưới câycàng tốt
Sử dụng các phép biến đổi tương đương:
Trang 39( nếu F = F1 F2 và Attr(F1) Attr(R) và Attr(F2) Attr(R) Attr(S))
Bước 3 Thực hiện phép chiếu càng sớm càng tốt Sử dụng tính
idempotence của phép chiếu, tính phân phối của phép chiếu đối với phéphợp, phép kết và phép tích để di chuyển phép chiếu càng xuống phía dướicây càng tốt Kiểm tra tất cả các phép chiếu là cần thiết, loại bỏ phépchiếu không cần thiết nếu phép này chiếu trên tất cả các thuộc tính củaquan hệ toán hạng
Sử dụng các phép biến đổi:
Trang 40( nếu X1 Attr(R) và X2 Attr(S))
Bước 4 Nếu một phép chọn được thực hiện ngay sau một phép
tích, mà phép chọn bao gồm các thuộc tính của các quan hệ trong phéptích, thì biến đổi phép tích thành phép kết Nếu phép chọn chỉ bao gồmcác thuộc tính của một quan hệ trong phép tích, thì thực hiện phép chọncho quan hệ này trước khi thực hiện phép tích
Sử dụng các phép biến đổi:
( nếu F = F1 F2 và Attr(F1) Attr(R) và Attr(F2) Attr(R) Attr(S))
Bước 5 Nếu có một chuỗi các phép chọn và/hoặc các phép chiếu,
sử dụng tính giao hoán hoặc tính idempotence để kết hợp chúng thành mộtphép chọn, một phép chiếu hoặc một phép chọn đi trước một phép chiếuvà áp dụng chúng cho mỗi bộ của quan hệ toán hạng Nếu một phép kếthoặc phép tích đi trước một chuỗi các phép chọn hoặc các phép chiếu, thìáp dụng chúng cho mỗi bộ của phép kết hoặc phép chiếu ngay khi tạo rakết quả
Bước 6 Sử dụng tính kết hợp của phép giao, phép tích, và phép kết
để sắp xếp lại các quan hệ trong cây toán tử, sao cho phép toán nào mà nótạo ra kết quả ít nhất sẽ được thực hiện trước tiên
Sử dụng các phép biến đổi:
(R S) T (R T) S
(R S) T (R T) S
(R F1 S) F2 T (R F2 T) F1 S
( nếu Attr(F2) Attr(R) Attr(T))
( nếu Attr(F1) Attr(R) Attr(S))