Uploaded by Phương Lý

Database-basic

advertisement
1
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
LỜI NÓI ĐẦU
Ngày nay, cơ sở dữ liệu đã có nhiều ứng dụng trong mọi hoạt động của xã hội.
Muốn thiết kế và sử dụng cơ sở dữ liệu chúng ta phải nắm được các kỹ thuật cơ bản
của cơ sở dữ liệu. Tài liệu học tập này nhằm trình bày các kỹ thuật cơ sở của cơ sở
dữ liệu truyền thống, đó là mô hình liên kết thực thể, mô hình cơ sở dữ liệu quan hệ.
Tài liệu cũng trình bày cách thiết kế một cơ sở dữ liệu quan hệ, cách sử dụng các
phép toán đại số quan hệ để tạo, cập nhật và truy vấn cơ sở dữ liệu và khái niệm phụ
thuộc hàm ứng dụng trong lí thuyết thiết kế và chuẩn hóa cơ sở dữ liệu quan hệ.
Tài liệu học tập “Cơ sở dữ liệu” là sách hướng dẫn học tập dùng cho sinh viên
ngành công nghệ thông tin và ngành mạng máy máy tính & truyền thông dữ liệu.
Nội dung của tài liệu bao gồm:
Chương I: Cơ sở dữ liệu quan hệ
Chương II: Ngôn ngữ truy vấn dữ liệu
Chương III: Lý thuyết thiết kế cơ sở dữ liệu
Chương IV: Bảo mật và toàn vẹn dữ liệu
Tài liệu ”Cơ sở dữ liệu” không chỉ đề cập đến những vấn đề cơ sở lý thuyết mà
còn trình bày một số kỹ năng cần thiết để thiết kế và cài đặt các hệ cơ sở dữ liệu cụ
thể. Hy vọng sẽ có ích cho sinh viên và những người muốn xây dựng các hệ thống tin
học ứng dụng phục vụ cho sản xuất, quản lý trong các doanh nghiệp. Có thể còn nhiều
thiếu sót trong biên soạn, chúng tôi vẫn mạnh dạn giới thiệu tài liệu này và mong
nhận được sự góp ý của bạn đọc.
Nhóm biên soạn
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
2
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
MỤC LỤC
LỜI NÓI ĐẦU ................................................................................................................1
MỤC LỤC ......................................................................................................................2
CHƯƠNG I ....................................................................................................................7
CƠ SỞ DỮ LIỆU QUAN HỆ .......................................................................................7
1.1. Tổng quan về lý thuyết cơ sở dữ liệu ....................................................................7
1.1.1. Mở đầu ..................................................................................................................7
1.1.2. Một số khái niệm cơ bản .....................................................................................8
1.1.2.1. Cơ sở dữ liệu (CSDL) .......................................................................................8
1.1.2.2. Hệ quản trị CSDL ........................................................................................... 10
1.1.2.3. Ngôn ngữ dữ liệu............................................................................................. 11
1.1.3. Kiến trúc của một CSDL ..................................................................................12
1.1.4. Mô hình CSDL dạng quan hệ ...........................................................................13
1.1.4.1. Các khái niệm cơ bản .....................................................................................13
1.1.4.2. Khóa .................................................................................................................15
1.1.4.3. Các phép tính trên CSDL ..............................................................................17
BÀI TẬP CHƯƠNG I .................................................................................................20
CHƯƠNG II .................................................................................................................33
NGÔN NGỮ THAO TÁC DỮ LIỆU .........................................................................33
2.1. Đại số quan hệ .......................................................................................................33
2.1.1. Phép hợp .............................................................................................................33
2.1.2. Phép giao ............................................................................................................34
2.1.3. Phép trừ ..............................................................................................................35
2.1.4. Tích Đề các .........................................................................................................35
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
3
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.1.5. Phép chiếu ..........................................................................................................36
2.1.6. Phép chọn ...........................................................................................................37
2.1.7. Phép kết nối ........................................................................................................38
2.1.8. Phép chia ............................................................................................................40
2.2. Hệ quản trị CSDL SQL Server và ngôn ngữ SQL ............................................40
2.2.1. Giới thiệu về Hệ quản trị CSDL SQL Server .................................................40
2.2.2. Cấu trúc Cơ sở dữ liệu ......................................................................................43
2.2.3 Tạo CSDL bằng công cụ SQL Server ............................................................... 44
2.2.4 Tạo CSDL bằng lệnh ..........................................................................................47
2.2.5 Quản trị CSDL trên SQL Server ......................................................................49
2.2.5.1 Chế độ bảo mật ................................................................................................ 49
2.2.5.2 Quản trị người dùng ........................................................................................51
2.2.5.3 Quản trị xuất, nhập, sao lưu, phục hồi dữ liệu. ............................................53
2.2.6 Ngôn ngữ SQL ....................................................................................................60
2.2.6.1 Các phép toán định nghĩa CSDL ...................................................................60
2.2.6.2 Truy vấn đơn giản ........................................................................................... 66
a. Khối lệnh SELECT ............................................................................................. 66
b. Tìm kiếm không điều kiện ..................................................................................67
c. Tìm kiếm với điều kiện đơn giản .......................................................................68
d. Tìm kiếm có xử lý xâu ký tự...............................................................................69
e. Tìm kiếm nhờ sử dụng IN và BETWEEN ........................................................70
f. Tìm kiếm có sắp xếp ............................................................................................ 72
g. Tìm kiếm có chứa phép tính tập hợp ................................................................ 74
2.2.6.3 Truy vấn lồng nhau .........................................................................................75
2.2.6.4 Truy vấn sử dụng hàm tính toán và gom nhóm ...........................................78
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
4
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
a. Tìm kiếm nhờ mệnh đề GROUP BY .................................................................78
b. Các hàm thư viện ................................................................................................ 81
2.2.6.5. Khung nhìn (View) ........................................................................................83
2.2.7 Giới thiệu về ngôn ngữ lập trình T-SQL trong SQL Server ..........................85
2.2.7.1 Biến cục bộ (Local variable) ............................................................................85
2.2.7.2 Biến hệ thống. ...................................................................................................87
2.2.7.3 Các toán tử. ......................................................................................................88
2.2.8.Các lệnh cơ bản của T-SQL ...............................................................................92
2.2.9 Thủ tục .................................................................................................................98
2.2.9.1 Thủ tục hệ thống .............................................................................................. 99
2.2.9.2 Thủ tục người dùng .......................................................................................100
2.2.10. Hàm .................................................................................................................102
2.2.10.1. Các hàm hệ thống .......................................................................................103
2.2.10.2. Hàm do người dùng định nghĩa ................................................................106
BÀI TẬP CHƯƠNG II ..............................................................................................108
CHƯƠNG 3 ................................................................................................................121
LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU ..........................................................121
3.1. Phụ thuộc hàm ....................................................................................................121
3.1.1 Định nghĩa phụ thuộc hàm ..............................................................................121
3.1.2 Phụ thuộc hàm đầy đủ và không đầy đủ ........................................................122
3.1.3 Hệ tiên đề Amstrong .........................................................................................122
3.1.4. Bao đóng ...........................................................................................................124
3.1.4.1 Bao đóng của tập các phụ thuộc hàm ..........................................................124
3.1.4.2. Bao đóng của tập các thuộc tính .................................................................125
3.1.4.3. Thuật toán tìm bao đóng ..............................................................................125
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
5
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
3.1.5. Phủ tối thiểu .....................................................................................................126
3.1.6. Khóa ..................................................................................................................129
3.2. Phép tách - kết nối ..............................................................................................130
3.2.1 Khái niệm ..........................................................................................................130
3.2.2. Phép tách-kết nối tự nhiên ..............................................................................131
3.2.3 Phép tách - kết nối không mất mát thông tin.................................................131
3.3. Chuẩn hóa lược đồ quan hệ ...............................................................................135
3.3.1. Các dạng chuẩn ................................................................................................135
3.3.1.1. Dạng chuẩn thứ nhất (1NF – First Normal Form) ....................................135
3.3.1.2. Dạng chuẩn thứ 2 (2NF) ...............................................................................136
3.3.1.3. Dạng chuẩn thứ 3 (3NF) ...............................................................................136
3.3.1.4. Dạng chuẩn Boye- Codd (BCNF) ................................................................137
3.3.2. Chuẩn hóa qua phép tách không làm mất mát thông tin ............................138
a. Phép tách lược đồ quan hệ thành BCNF ........................................................138
b. Phép tách lược đồ quan hệ thành 3NF ............................................................140
3.3.3.
Chuẩn hóa nhờ phép tổng hợp ...................................................................141
BÀI TẬP CHƯƠNG III ............................................................................................146
CHƯƠNG IV .............................................................................................................156
TỐI ƯU HÓA CÂU HỎI TRUY VẤN ....................................................................156
4.1. Mở đầu .................................................................................................................156
4.2. Tổng quan về tối ưu hóa câu hỏi .......................................................................157
4.3. Nguyên tắc tối ưu hoá .........................................................................................159
4.4. Kỹ thuật tối ưu hoá các biểu thức đại số quan hệ. ..........................................161
4.4..1 Biểu thức quan hệ ............................................................................................161
4.4.2. Biến đổi biểu thức quan hệ ............................................................................162
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
6
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
4.4.3. Một số nhận xé khi thực hiện tối ưu hoá câu hỏi ........................................162
4.5. Tối ưu hóa bằng khung nhìn (Materialized Views)........................................164
4.5.1 Phép kết nối ......................................................................................................164
4.5.2 Phép chọn và phép chiếu .................................................................................165
4.5.3 Các phép toán khối ..........................................................................................166
4.5.4 Các phép toán khác .........................................................................................166
4.5.5 Tối ưu hóa các câu hỏi và các khung nhìn cụ thể hóa .................................166
4.5.6 Bài tập tối ưu hoá các câu hỏi..........................................................................167
BÀI TẬP CHƯƠNG 4 ...............................................................................................174
CHƯƠNG 5 ................................................................................................................179
BẢO MẬT VÀ TOÀN VẸN DỮ LIỆU ...................................................................179
5.1. Sự cần thiết phải bảo vệ an toàn CSDL ............................................................179
5.2. Tính toàn vẹn dữ liệu..........................................................................................180
5.2.1 Các ràng buộc toàn vẹn ....................................................................................180
5.2.2 Các yếu tố của rằng buộc toàn vẹn (RBTV) ..................................................182
5.2.3 Phân loại các ràng buộc toàn vẹn ....................................................................182
5.3. Vấn đề an toàn và quyền truy nhập cơ sở dữ liệu ...........................................186
5.3.1. Sự vi phạm an toàn cơ sở dữ liệu ...................................................................187
5.3.2. Các mức độ an toàn cơ sở dữ liệu ..................................................................187
5.3.3 Những quyền hạn khi sử dụng cơ sở dữ liệu..................................................189
5.3.4 Cấp phép các quyền truy nhập (bảo vệ tính riêng tư) ..................................193
5.3.5 Kiểm tra dấu vết ...............................................................................................194
BÀI TẬP CHƯƠNG V ..............................................................................................195
TÀI LIỆU THAM KHẢO ..........................................................................................200
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
7
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CHƯƠNG I
CƠ SỞ DỮ LIỆU QUAN HỆ
Mục tiêu: Giới thiệu sự cần thiết tổ chức dữ liệu theo mô hình hệ cơ sở dữ liệu, mục
tiêu và tính độc lập của dữ liệu. Kiến trúc mô hình tổng quát 3 lớp và tính ổn định trong
mô hình quan niệm. Các mô hình truy xuất thông dụng hiện nay.
Trong chương này trình bày những khái niệm cơ bản về các hệ cơ sở dữ liệu.
Những khái niệm này bao gồm mục tiêu của một hệ cơ sở dữ liệu. Sự cần thiết phải tổ
chức dữ liệu dưới dạng cơ sở dữ liệu. Tính độc lập của dữ liệu thể hiện mô hình kiến
trúc 3 mức. Vì vậy có thể nói cơ sở dữ liệu phản ảnh tính trung thực, khách quan của thế
giới dữ liệu. Không dư thừa thông tin và cũng không thiếu thông tin. Nội dung của
chương bao gồm các phần:
Tổng quan về lý thuyết cơ sở dữ liệu
Các khái niệm cơ bản
Kiến trúc của một cơ sở dữ liệu
Mô hình cơ sở dữ liệu
1.1. Tổng quan về lý thuyết cơ sở dữ liệu
1.1.1. Mở đầu
Nhu cÇu cña nh÷ng hÖ thèng lín: Ng©n hµng, hµng kh«ng ®ßi hái ph¶i tæ chøc l-u
tr÷ th«ng tin víi kÝch cì lín mét c¸ch hiÖu qu¶ vµ khoa häc sao cho cã thÓ khai th¸c sö
dông hiÖu qu¶, an toµn dÔ cËp nhËt.
Khèi l-îng d÷ liÖu ë d¹ng phi sè vµ bµi to¸n xö lý d¹ng d÷ liÖu nµy rÊt lín chiÕm
tû träng chñ yÕu trong sö dông m¸y tÝnh.
§Æc ®iÓm ph¸t triÓn m¹ng m¹ch, d÷ liÖu cã thÓ ph©n t¸n ®ßi hái khai th¸c d÷ liÖu
nhanh, an toµn cã c¬ chÕ b¶o mËt.
 §ßi hái ra ®êi lý thuyÕt  x©y dùng c¸c ch-¬ng tr×nh øng dông.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
8
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 LÞch sö ra ®êi vµ ph¸t triÓn:
Khoa häc c¬ së d÷ liÖu ph¸t triÓn qua 3 giai ®o¹n:
Giai ®o¹n nh÷ng n¨m 1960: ra ®êi 2 m« h×nh lý thuyÕt lµ m« h×nh m¹ng vµ m«
h×nh ph©n cÊp.
Giai ®o¹n nh÷ng n¨m 1970: ra ®êi m« h×nh lý thuyÕt míi lµ m« h×nh quan hÖ (do
tiÕn SÜ F.F . Codd ®-a ra)
Giai ®o¹n nh÷ng n¨m 1980 ®Õn nay:
§¸nh dÊu sù ph¸t triÓn m¹ng cña m« h×nh quan hÖ  ph¸t triÓn lý thuyÕt.
M« h×nh quan hÖ thùc thÓ (Entity Relationship model)
M« h×nh d÷ liÖu h-íng ®èi t-îng (Objest oriented Model)
C¬ së d÷ liÖu tri thøc.
PhÇn mÒm: ra ®êi c¸c ng«n ng÷ xö lý dù liÖu m¹nh ngoµi nh÷ng d÷ liÖu nh- sè,
v¨n b¶n cßn xö lý c¸c d÷ liÖu ©m thanh, h×nh ¶nh, siªu liªn kÕt.
1.1.2. Một số khái niệm cơ bản
1.1.2.1. Cơ sở dữ liệu (CSDL)
 Dữ liệu (Data): Là các thông tin được cấu trúc hóa để lưu trữ trong máy
tính.
 CSDL (Database): là tập hợp dữ liệu có liên quan logic với nhau, có thể
dễ dàng chia sẻ và được thiết kế nhằm đáp ứng các nhu cầu sử dụng của một
tổ chức, cá nhân nào đó.
Cơ sở dữ liệu là một bộ sưu tập rất lớn về các loại dữ liệu tác nghiệp, bao
gồm các loại dữ liệu âm thanh, tiếng nói, chữ viết, văn bản, đồ hoạ, hình ảnh tĩnh
hay hình ảnh động....được mã hoá dưới dạng các chuỗi bit và được lưu trữ dưới
dạng File dữ liệu trong các bộ nhớ của máy tính. Cấu trúc lưu trữ dữ liệu tuân
theo các quy tắc dựa trên lý thuyết toán học. Cơ sở dữ liệu phản ảnh trung thực
thế giới dữ liệu hiện thực khách quan.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
9
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Cơ sở dữ liệu là tài nguyên thông tin dùng chung cho nhiều người: Cơ sở
dữ liệu (CSDL) là tài nguyên thông tin chung cho nhiều người cùng sử dụng. Bất
kỳ người sử dụng nào trên mạng máy tính, tại các thiết bị đầu cuối, về nguyên tắc
có quyền truy nhập khai thác toàn bộ hay một phần dữ liệu theo chế độ trực tuyến
hay tương tác mà không phụ thuộc vào vị trí địa lý của người sử dụng với các tài
nguyên đó.
Cơ sở dữ liệu được các hệ ứng dụng khai thác bằng ngôn ngữ con dữ liệu
hoặc bằng các chương trình ứng dụng để xử lý, tìm kiếm, tra cưú, sửa đổi, bổ
sung hay loại bỏ dữ liệu. Tìm kiếm và tra cứu thông tin là một trong những chức
năng qua trọng và phổ biến nhất của các dịch vụ cơ sở dữ liệu. Hệ quản trị CSDL
– HQTCSDL (DataBase Management System - DBMS) là phần mềm điều khiển
các chiến lược truy nhập CSDL. Khi người sử dụng đưa ra yêu cầu truy nhập
bằng một ngôn ngữ con dữ liệu nào đó, HQTCSDL tiếp nhận và thực hiện các
thao tác trên CSDL lưu trữ.
Đối tượng nghiên cứu của CSDL là các thực thể và mối quan hệ giữa các
thực thể. Thực thể và mối quan hệ giữa các thực thể là hai đối tượng khác nhau
về căn bản. Mối quan hệ giữa các thực thể cũng là một loại thực thể đặc biệt.
Trong cách tiếp cận CSDL quan hệ, người ta dựa trên cơ sở lý thuyết đại số quan
hệ để xây dựng các quan hệ chuẩn, khi kết nối không tổn thất thông tin và khi
biểu diễn dữ liệu là duy nhất. Dữ liệu được lưu trữ trong bộ nhớ của máy tính
không những phải tính đến yếu tố về tối ưu không gian lưu trữ, mà phải đảm bảo
tính khách quan, trung thực của dữ liệu hiện thực. Nghĩa là phải đẩm bảo tính
nhất quán của dữ liệu và giữ được sự toàn vẹn của dữ liệu.
 Tính chất của CSDL:
 Một CSDL biểu thị một khía cạnh nào đó của thế giới thực, những
thay đổi của thế giới thực phải được phản ánh một cách trung thực
vào trong CSDL.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
10
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Một CSDL là một tập hợp dữ liệu liên kết với nhau một cách lôgic
và mang một ý nghĩa nào đó.
 Một CSDL được thiết kế và tổ chức cho một mục đích riêng, nó có
một nhóm người sử dụng có chủ định và có một số ứng dụng được
xác định phù hợp với mối quan tâm của người sử dụng.
 Một cơ sở dữ liệu phải thỏa mãn các yêu cầu sau:
-
Không dư thừa dữ liệu
-
Bảo đảm tính nhất quán dữ liệu khi cập nhật.
-
Bảo đảm không có dị thường xảy ra khi thêm hoặc xóa DL.
-
Bảo đảm tính toàn vẹn dữ liệu.
-
Bảo đảm tính dùng chung.
1.1.2.2. Hệ quản trị CSDL
 Hệ quản trị cơ sở dữ liệu (Database Management System - DBMS),
là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu. Cụ thể,
các chương trình thuộc loại này hỗ trợ khả năng lưu trữ, sửa chữa, xóa và tìm
kiếm thông tin trong một cơ sở dữ liệu (CSDL).
Có rất nhiều loại hệ quản trị CSDL khác nhau: từ phần mềm nhỏ chạy
trên máy tính cá nhân cho đến những hệ quản trị phức tạp chạy trên một hoặc
nhiều siêu máy tính.
 Chức năng của hệ QTCSDL:
 Lưu trữ các định nghĩa, các mối liên kết dữ liệu vào một từ điển dữ
liệu. Các chương trình truy cập đến CSDL thông qua hệ QTCSDL,
Hệ QTCSDL sử dụng dữ liệu trong từ điển DL để tìm kiếm các cấu
trúc thành phần DL và các mối liên kết được yêu cầu. Mọi sự thay
đổi trong CSDL sẽ tự động ghi lại vào từ điển dữ liệu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
11
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Tạo ra các cấu trúc phức tạp theo yêu cầu để lưu trữ DL, giúp người
sử dụng định nghĩa và lập trình cho các đặc trưng vật lý của dữ liệu.
 Biến đổi các DL nhập vào để phù hợp với các cấu trúc DL; tạo khuôn
dạng cho các DL được lấy ra, làm cho nó phù hợp với mong muốn
của người sử dụng.
 Tạo hệ thống bảo mật và áp đặt tính bảo mật trong CSDL.
 Tạo cấu trúc phức tạp cho phép người sử dụng truy cập đến dữ liệu.
 Cung cấp các thủ tục sao lưu và phục hồi DL để đảm bảo sự an toàn
và toàn vẹn DL.
 Áp đặt các quy tắc an toàn, cho phép tối thiểu sự dư thừa DL và làm
tối đa tính nhất quán dữ liệu.
 Cung cấp việc truy cập DL thông qua một ngôn ngữ truy vấn.
1.1.2.3. Ngôn ngữ dữ liệu
Ng«n ng÷ d÷ liÖu cã 3 chøc n¨ng:
- §Þnh nghÜa vµ m« t¶ d÷ liÖu.
- CËp nhËt d÷ liÖu
- Hái d÷ liÖu (an toµn vµ toµn vÑn d÷ liÖu)
Descrition
Data
Update
Language
Query
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
12
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ng«n ng÷ (language)
Ng«n ng÷ tù nhiªn
(Natural language))
Ng«n ng÷ h×nh thøc
(Forrmat language)
Ng«n ng÷ ng-êi
Ng«n ng÷ sinh vËt
D©n téc
Format language
Môc tiªu tæng qu¸t
Giao tiÕp ng-êi vµ m¸y
- M· ho¸, an toµn d÷ liÖu
- C¸c ng«n ng÷ lËp tr×nh
- V¨n ph¹m h×nh thøc
- Ng«n ng÷ d÷ liÖu
1.1.3. Kiến trúc của một CSDL
Mét CSDL ®-îc ph©n thµnh c¸c møc kh¸c nhau.
 CSDL vËt lý (møc vËt lý) lµ c¸c tÖp d÷ liÖu theo mét cÊu tróc nµo ®ã ®-îc l-u trªn
c¸c thiÕt bÞ nhí thø cÊp (nh- ®Üa tõ, b¨ng tõ...).
 CSDL møc kh¸i niÖm lµ mét sù biÓu diÔn trõu t-îng cña CSDL vËt lý. Tøc lµ
CSDL møc vËt lý lµ sù cµi ®Æt cô thÓ cña CSDL møc kh¸i niÖm.
 C¸c khung nh×n lµ c¸ch nh×n, lµ quan niÖm cña cña tõng ng-êi sö dông ®èi víi
CSDL møc kh¸i niÖm. Khung nh×n bao gåm tËp tÊt c¶ d÷ liÖu mµ ng-êi sö dông
®-îc phÐp nh×n thÊy, ®-îc phÐp truy nhËp vµo. V× vËy, ®èi víi ng-êi sö dông
khung nh×n chÝnh lµ CSDL.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
13
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
USER 1
Khung nh×n 1
USER 1
Khung nh×n 1
CSDL møc
kh¸i niÖm
(Logic)
USER 1
CSDL møc
VËt lý
Khung nh×n 1
Sơ đồ kiến trúc của một cơ sở dữ liệu
1.1.4. Mô hình CSDL dạng quan hệ
1.1.4.1.
Các khái niệm cơ bản
M« h×nh ph©n cÊp (hierachical model): M« h×nh d÷ liÖu lµ 1 c©y (c¸c nót biÓu
diÔn c¸c tËp thÓ, nót con vµ nót cha ®-îc liªn hÖ theo 1 mèi quan hÖ x¸c ®Þnh).
M« h×nh m¹ng (network model): M« h×nh ®-îc biÓu diÔn lµ 1 ®å thÞ cã h-íng.
M« h×nh quan hÖ (Relational Model): Dùa trªn c¬ së kh¸i niÖm lý thuyÕt tËp hîp.
C¸c ®èi t-îng thÓ hiÖn d-íi d¹ng b¶ng (quan hÖ).
C¸c lo¹i m« h×nh d÷ liÖu trªn cã -u ®iÓm:
•
TÝnh trùc quan cao phï hîp víi thãi quen ®a sè cña ng-êi dïng.
•
Hç trî bëi lý thuyÕt to¸n häc chÆt chÏ (tiªn ®Ò ho¸) tiªn ®Ò Armstrong
(1977), ph¸t triÓn phÇn mÒm øng dông vµ tù ®éng ho¸ thiÕt kÕ.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
14
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
•
TÝnh ®éc lËp d÷ liÖu cao.
Một số khái niệm cơ bản :
 CSDL quan hệ:
•
Được xây dựng từ một hay nhiều bảng quan hệ
•
Mỗi bảng (quan hệ) gồm 2 phần:
•
•
-
Lược đồ: Tên quan hệ, Tên các cột
-
Thể hiện: Các dòng dữ liệu
Trong mỗi bảng:
-
Các cột gọi là các trường hoặc các thuộc tính
-
Các hàng dữ liệu gọi là các bản ghi hoặc các bộ
Yêu cầu:
-
Không có bộ trùng nhau
-
Mỗi thuộc tính phải có một tên riêng
 Thuộc tính: Thuộc tính là một đặc trưng của quan hệ. Mỗi thuộc tính bao giờ
cũng có tên và một miền giá trị gọi là miền xác định của thuộc tính.
-
Ký hiệu: dom(A)
Trong đó: A là tên thuộc tính
- Ví dụ: dom(giới tính) = {nam, nữ}
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
15
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ: Quan hệ ĐIỂM
Lược đồ gồm 5 thuộc tính
MãSV
TênSV
Email
Tuổi
Điểm
TI01
Jones
jo@vnu.edu
18
6
TI02
Smith
mit@vnu.edu
18
8
TI03
Smith
sm@vnu.edu
19
7
Thể
hiện
gồm
3 bộ
 Quan hệ: Là một tập con của tích Đề-các của một hoặc nhiều miền thuộc tính.
Hay: Quan hệ r(R) là một quan hệ toán học cấp n trên các miền giá trị: dom(A1),
dom(A2) ... dom(An ) là tập con của tích Đề-các của các miền giá trị xác định trên
R.
r (R)  dom(A1) x dom(A2) x ... x dom(An)
 Lược đồ quan hệ: Trên một quan hệ mà chỉ đề cập đến các thuộc tính thì người
ta gọi là một lược đồ quan hệ.
-
Ký hiệu: R={A1, A2,...,An}
hoặc R(A1, A2,...,An)
1.1.4.2.
Khóa
a. Siêu khóa:
-
Gọi R={A1, A2,...,An} là tập hữu hạn các thuộc tính; K  R
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
16
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
K được gọi là siêu khóa trên R khi các giá trị của K là đủ để xác định duy
nhất bộ dữ liệu của bảng
b. Khóa
-
Nếu K là siêu khóa và K là tối thiểu thì K được gọi là khóa của quan hệ
Ví dụ: Quan hệ ĐIỂM
Tuổi
Điểm
MãSV
TênSV
Email
TI01
Jones
jo@vnu.edu
18
6
TI02
Smith
mit@vnu.edu
18
8
TI03
Smith
sm@vnu.edu
19
7
Câu hỏi: Tìm các siêu khóa và khóa của quan hệ trên?
Giải:
-
-
Siêu khóa:
•
Mã SV, Tên SV, Email, Tuổi, Điểm
•
Mã SV, Tên SV, Email, Tuổi
•
Mã SV, Tên SV, Email
•
Mã SV, Tên SV
•
Mã SV
•
Tên SV, Email, Tuổi, Điểm
•
Mã SV, Email
•
Email, Tuổi, Điểm
•
Email, Tuổi
•
Email
Khóa:
•
Mã SV
•
Email
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
17
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Khóa chính: Một siêu khóa được chọn đại diện cho một quan hệ được gọi là
khóa chính của quan hệ đó.
d. Khóa ngoài: Một tập các thuộc tính K được gọi là khóa ngoài của quan hệ r
nếu nó không là khóa chính của quan hệ r nhưng là khóa chính của quan hệ
khác.
•
Ví dụ: SV(MaSV, tenSV, ngsinh, quequan)
MH(MaMH, tenMH, HSMH, Khoa)
BĐ(MaBĐ, MaMH, MaSV, tenSV, diem, ky)
1.1.4.3.
Các phép tính trên CSDL
a. Phép chèn
•
Định nghĩa : Phép chèn dùng để chèn một hoặc nhiều bộ giá trị vào một
quan hệ.
-
Phép chèn cung cấp một danh sách các giá trị cho một bộ mới t được chèn
vào trong một quan hệ R. Phép chèn có thể vi phạm các kiểu ràng buộc được
mô tả ở trên. Các ràng buộc miền có thể bị vi phạm nếu một giá trị thuộc
tính được cho không thuộc vào miền tương ứng. Các ràng buộc khóa có thể
bị vi phạm nếu một giá trị khóa trong bộ mới t đã tồn tại trong một bộ khác
ở trong quan hệ r(R). Sự toàn vẹn thực thể có thể bị vi phạm nếu khóa chính
của bộ mới t là null. Sự toàn vẹn tham chiếu có thể bị vi phạm nếu một giá
trị của một khóa ngoài trong t tham chiếu đến một bộ không tồn tại trong
một quan hệ được tham chiếu.
-
Nếu một phép chèn vi phạm một hoặc nhiều ràng buộc, tùy chọn mặc định
là loại bỏ phép chèn. Trong trường hợp này, thường là các hệ quản trị cơ sở
dữ liệu sẽ thông báo cho người sử dụng nguyên nhân của việc loại bỏ phép
chèn.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
18
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
•
Cú pháp:
1. INSERT(r; A1 = d1, A2 = d2, …, An = dn);
2. INSERT(r; d1, d2, …, dn);
b. Phép loại bỏ
•
Định nghĩa: Phép loại bỏ dùng để loại bỏ 1 hoặc nhiều bộ giá trị của một
quan hệ.
-
Phép xóa được sử dụng để xóa một hoặc nhiều bộ giá trị của một quan hệ.
Phép xóa chỉ có thể vi phạm ràng buộc tham chiếu trong trường hợp bộ bị
xóa được tham chiếu bởi một khóa ngoài từ các bộ khác nhau trong cơ sở
dữ liệu. Để chỉ rõ một phép xóa, cần phải đưa ra một điều kiện trên các
thuộc tính của quan hệ để chọn các bộ sẽ bị xóa.
-
Ba tùy chọn sẵn sàng được sử dụng nếu một phép xóa gây ra sự vi phạm.
Tùy chọn thứ nhất là loại bỏ phép xóa. Tùy chọn thứ hai là cố gắng lan
truyền phép xóa (cascade the deletion) bằng cách xóa đồng thời các bộ
tham chiếu đến bộ bị xóa. Tùy chọn thứ ba là sửa đổi các giá trị của các
thuộc tính tham chiếu gây ra sự vi phạm. Mỗi giá trị như vậy hoặc là làm
cho bằng null hoặc được thay đổi thành bộ có hiệu lực tham chiếu khác.
Chú ý rằng, nếu một thuộc tính tham chiếu gây ra sự vi phạm là một phần
của khóa chính thì không thể làm thành null, bởi vì nếu làm vậy thì sẽ vi
phạm ràng buộc toàn vẹn thực thể. Có thể kết hợp cả ba tùy chọn ở trên.
•
Cú pháp:
1. DEL(r; A1 = d1, A2 = d2, …, An = dn)
2. DEL(r; d1, d2, …, dn)
c. Phép thay thế
•
Định nghĩa : Là phép thay đổi giá trị một bộ trong quan hệ.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
19
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Phép toán sửa đổi được dùng để thay đổi các giá trị của một hoặc nhiều
thuộc tính trong một (hoặc nhiều) bộ của một quan hệ R nào đấy. Để lựa
chọn các bộ cần thay đổi, người sử dụng phải chỉ ra một điều kiện trên các
thuộc tính.
-
Phép sửa đổi một thuộc tính không phải là một khóa chính hoặc một khóa
ngoài thường không gây ra các vi phạm ràng buộc. Hệ quản trị cơ sở dữ
liệu chỉ cần kiểm tra để khẳng định rằng, giá trị mới là thuộc tính miền và
kiểu giá trị đúng đắn. Việc sửa đổi giá trị một khóa chính tương tự như
việc xóa một bộ và chèn các bộ khác vào chỗ của nó. Như vậy, chúng ta
trở về trường hợp đã thảo luận với phép chèn và phép xóa. Nếu một thuộc
tính khóa ngoài bị sửa đổi thì hệ quản trị cơ sở dữ liệu phải đảm bảo rằng,
giá trị mới tham chiếu đến một bộ có tồn tại trong quan hệ được tham
chiếu (hoặc là null).
•
Cú pháp: Cho quan hệ r (A1, A2, …, An) tại bộ t ta cần thay đổi giá trị ở
các thuộc tính {Ai, …, Ap}
CH(r; A1 = d1,…, An = dn ; Ai = ei, …, Ap = ep )
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
20
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
BÀI TẬP CHƯƠNG I
CÂU HỎI TRẮC NGHIỆM
Câu 1: Chọn đáp án đúng cho khái niệm “Cơ sở dữ liệu”
a. Cơ sở dữ liệu là một tập hợp các dữ liệu có liên quan với nhau được lưu trữ
trên máy tính, có nhiều người sử dụng và được tổ chức theo một mô hình.
b. Cơ sở dữ liệu là một tập hợp các dữ liệu không liên quan đến nhau được lưu
trữ trên máy tính, có nhiều người sử dụng và được tổ chức theo một mô
hình.
c. Cơ sở dữ liệu là một tập hợp các dữ liệu có liên quan với nhau được lưu trữ
trên máy tính, do một người sử dụng và được tổ chức theo một mô hình.
d. Cơ sở dữ liệu là một tập hợp các dữ liệu không liên quan đến nhau được lưu
trữ trên máy tính, do một người sử dụng và được tổ chức theo một mô hình.
Câu 2. Điền từ còn thiếu vào dấu … : “… là một tập hợp các dữ liệu có liên quan
với nhau được lưu trữ trên máy tính, có nhiều người sử dụng và được tổ chức theo
một mô hình.”
a. Dữ liệu
b. Cơ sở dữ liệu
c. Cơ sở dữ liệu quan hệ
d. Hệ quản trị cơ sở dữ liệu
Câu 3: Đâu không là bất thường trong CSDL:
a. Dư thừa dữ liệu
b. Dữ liệu không nhất quán
c. Dị thường khi thêm bộ
d. Đưa ra danh sách dữ liệu
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
21
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 4. “Một CSDL biểu thị một khía cạnh nào đó của thế giới thực, những thay đổi
của thế giới thực phải được phản ánh một cách trung thực vào trong CSDL.” Phát
biểu trên đúng với khái niệm nào?
a. Dữ liệu
b. Tính chất của cơ sở dữ liệu
c. Chức năng của hệ quản trị cơ sở dữ liệu
d. Kiến trúc một cơ sở dữ liệu
Câu 5. “Một CSDL là một tập hợp dữ liệu liên kết với nhau một cách lôgic và mang
một ý nghĩa nào đó.” Phát biểu trên đúng với khái niệm nào?
a. Dữ liệu
b. Chức năng của hệ quản trị cơ sở dữ liệu
c. Tính chất của cơ sở dữ liệu
d. Kiến trúc một cơ sở dữ liệu
Câu 6. “Một CSDL là một tập hợp dữ liệu liên kết với nhau một cách lôgic và mang
một ý nghĩa nào đó.” Phát biểu trên đúng với khái niệm nào?
a. Cơ sở dữ liệu
b. Tính chất của cơ sở dữ liệu
c. Chức năng của hệ quản trị cơ sở dữ liệu
d. Kiến trúc một cơ sở dữ liệu
Câu 7: Sơ đồ “Kiến trúc của một hệ cơ sở dữ liệu” gồm:
a. Người sử dụng, khung nhìn, cơ sở dữ liệu mức vật lý
b. Người sử dụng, cơ sở dữ liệu mức vật lý, cơ sở dữ liệu mức khái niệm
c. Người sử dụng, khung nhìn, cơ sở dữ liệu mức khái niệm, cơ sở dữ liệu mức
vật lý
d. Khung nhìn, cơ sở dữ liệu mức khái niệm, cơ sở dữ liệu mức vật lý
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
22
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 8: Phát biểu nào sau đây ứng với: “Cơ sở dữ liệu mức vật lý’’
a. Các file dữ liệu được lưu trữ theo một cấu trúc nào đó trên các thiết bị nhớ.
b. Là sự biểu diễn trừu tượng của “Cơ sở dữ liệu mức vật lý”
c. Là quan niệm của từng người sử dụng với “Cơ sở dữ liệu mức khái niệm”.
d. Tất cả các đáp án trên.
Câu 9: Phát biểu nào sau đây ứng với: “Cơ sở dữ liệu mức khái niệm’’
a. Các file dữ liệu được lưu trữ theo một cấu trúc nào đó trên các thiết bị nhớ.
b. Là sự biểu diễn trừu tượng của “Cơ sở dữ liệu mức vật lý”
c. Là quan niệm của từng người sử dụng với “Cơ sở dữ liệu mức khái niệm”.
d. Tất cả các đáp án trên.
Câu 10: Phát biểu nào sau đây ứng: “Khung nhìn - View’’
a. Các file dữ liệu được lưu trữ theo một cấu trúc nào đó trên các thiết bị nhớ.
b. Là sự biểu diễn trừu tượng của “Cơ sở dữ liệu mức vật lý”
c. Là quan niệm của từng người sử dụng với “Cơ sở dữ liệu mức khái niệm”.
d. Tất cả các đáp án trên.
Câu 11: Theo ANSI-SPARC, kiến trúc của một hệ CSDL gồm có bao nhiêu mức:
a.
2 mức
b.
4 mức
c.
3 mức
d.
1 mức
Câu 12: Đâu KHÔNG phải là mức biểu diễn một CSDL?
a.
Mức trong
b.
Mức khái niệm
c.
Mức liên kết
d.
Mức ngoài
Câu 13: Mức vật lý còn được gọi là:
a. Mức khái niệm
b. Mức trong
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
23
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Mức ngoài
d. Mức logic
Câu 14: Mức khung nhìn còn được gọi là:
a. Mức trong
b. Mức khái niệm
c. Mức ngoài
d. Mức logic
Câu 15: Đâu KHÔNG phải là một hệ quản trị CSDL?
a. Access
b. Sql Server
c. Oracle
d. Word
Câu 16: Thuật ngữ nào chỉ mô hình quan hệ?
a. Network data model
b. Relational data model
c. Relationship data model
d. E-R model
Câu 17: Phát biểu nào sau đây KHÔNG đúng với một CSDL?
a. Tất cả người dùng sử dụng một khung nhìn chung
b. Mỗi người dùng có một khung nhìn riêng của mình
c. Người dùng có thể thay đổi khung nhìn của họ
d. Sự thay đổi khung nhìn của người này không làm ảnh hưởng đến khung
nhìn của người khác
Câu 18: Một bảng (quan hệ) gồm có những thông tin gì?
a. Lược đồ quan hệ, thể hiện
b. Tên quan hệ, tên các thuộc tính
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
24
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Lược đồ quan hệ, các dòng dữ liệu
d. Tên quan hệ, các dòng dữ liệu
Câu 19: Đâu không phải là một quan hệ?
a. Lược đồ, thể hiện
b. Lược đồ, các dòng dữ liệu
c. Tên quan hệ, tên thuộc tính, các dòng dữ liệu
d. Tên quan hệ, tên thuộc tính
Câu 20: Lược đồ quan hệ chỉ đề cập đến những thông tin gì?
a. Tên các thuộc tính và các dòng dữ liệu
b. Tên quan hệ và tên các thuộc tính
c. Tên quan hệ và các dòng dữ liệu
d. Tên thuộc tính và các bộ giá trị
Câu 21: Chọn phát biểu đúng với thuật ngữ “Thuộc tính”:
a. Thuộc tính là một đặc trưng của quan hệ. Mỗi thuộc tính bao giờ cũng có tên
và một miền giá trị gọi là miền xác định của thuộc tính.
b. Thuộc tính là một đặc trưng của quan hệ.
c. Mỗi thuộc tính bao giờ cũng có tên và một miền giá trị gọi là miền xác định
của thuộc tính.
d. Thuộc tính là một tập con của tích Đề-các của một hoặc nhiều miền thuộc
tính.
Câu 22: Miền giá trị để chỉ?
a.
Tên của một cột
b. Một hàng trong bảng
c.
Một bảng
d. Kiểu dữ liệu của một cột
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
25
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 23: Miền giá trị của thuộc tính A ký hiệu là gì?
a. Dim(A)
b. Dom(A)
c. Dam(A)
d. Dem(A)
Câu 24: Một tập con của tích Descartes của một hay nhiều miền thuộc tính là:
a. Một quan hệ trên một tập các thuộc tính
b. Một miền
c. Một CSDL
d. Một lược đồ quan hệ
Câu 25: Để chỉ một quan hệ r xác định trên tập thuộc tính R dùng ký hiệu nào?
a. r(R)
b. r*R
c. r x R
d. R(r)
Câu 26: Trong lý thuyết mô hình cơ sở dữ liệu quan hệ, thuật ngữ quan hệ chỉ:
a. Bảng
b. Thuộc tính
c. Miền
d. Lược đồ quan hệ
Câu 27: Nêu những lỗi có thể xảy ra khi thực hiện lệnh chèn?
a. Không tương thích với miền giá trị, không tương thích với lược đồ dữ liệu.
b. Trùng khóa, không tương thích với miền giá trị, không tương thích với lược
đồ dữ liệu.
c. Trùng khóa, không tương thích với miền giá trị
d. Trùng khóa, không tương thích với lược đồ dữ liệu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
26
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 28: Trong lý thuyết mô hình CSDL quan hệ, thuật ngữ thuộc tính để chỉ tên của
một:
a. Bảng
b. Cột
c. Miền
d. Quan hệ
Câu 29: Trong lý thuyết mô hình CSDL quan hệ, thuật ngữ bộ giá trị để chỉ:
a. Quan hệ
b. Cột
c. Hàng
d. Cơ sở dữ liệu
Câu 30: Một tập hợp các thực thể cùng kiểu được gọi là:
a. Một thực thể
b. Một thuộc tính
c. Tập thực thể
d. Tập thuộc tính
Câu 31: Một sự kết hợp của một số thực thể được gọi là:
a. Một liên kết
b. Tập liên kết
c. Thuộc tính đa trị
d. Thuộc tính đơn trị
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
27
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 32: Thứ tự đúng các mức trong mô hình kiến trúc cơ sở dữ liệu:
a. Các khung nhìn, Các User, CSDL mức khái niệm, CSDL vật lý.
b. Các User, CSDL mức khái niệm, các khung nhìn, CSDL vật lý.
c. Các User, các khung nhìn, CSDL mức khái niệm, CSDL vật lý.
d. Các User, các khung nhìn, CSDL vật lý, CSDL mức khái niệm.
Câu 33: Đây là những lỗi có thể xảy ra khi thực hiện lệnh gì trên cơ sở dữ liệu quan
hệ: “Trùng khóa, không tương thích với miền giá trị, không tương thích với lược đồ dữ
liệu.”?
a. Chèn (Insert)
b. Loại bỏ (Del)
c. Thay thế (Ch)
d. Cả 3 đáp án trên
Câu 34: Các phần mềm sau đây, phần mềm nào không phải là hệ quản trị CSDL quan
hệ?
a. Microsoft Excel
b. Microsoft Access
c. Microsoft SQL server
d. Oracle
Câu 35: Trên cơ sở dữ liệu quan hệ phép chèn (Insert) dùng để làm gì?
a. Dùng để xóa một hoặc nhiều bộ giá trị của một quan hệ.
b. Dùng để chèn một bộ giá trị vào một quan hệ.
c. Dùng để chèn nhiều bộ giá trị vào một quan hệ.
d. Dùng để chèn một hoặc nhiều bộ giá trị vào một quan hệ.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
28
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 36: Trên cơ sở dữ liệu quan hệ phép loại bỏ (Del) dùng để làm gì?
a. Dùng để xóa một bộ giá trị của một quan hệ.
b. Dùng để xóa nhiều bộ giá trị của một quan hệ.
c. Dùng để xóa một hoặc nhiều bộ giá trị của một quan hệ.
d. Dùng để chèn một hoặc nhiều bộ giá trị vào một quan hệ.
Câu 37: Trên cơ sở dữ liệu quan hệ phép thay thế (CH) dùng để làm gì?
a. Là phép thay đổi một quan hệ.
b. Là phép thay đổi giá trị một bộ trong quan hệ.
c. Là phép thay đổi giá trị tất cả các bộ trong quan hệ.
d. Dùng để xóa một hoặc nhiều bộ giá trị của một quan hệ.
Câu 38: Trên cơ sở dữ liệu quan hệ, để chèn một bộ giá trị vào một quan hệ thì sử
dụng cú pháp nào?
a. INSERT(r; A1 = d1, A2 = d2, …, An = dn);
b. INSERT(r; A1, A2, …, A);
c. INSERT(r; d1, d2, …, dn);
d. Cả đáp án a và c
Câu 39: Trên cơ sở dữ liệu quan hệ, để loại bỏ một bộ giá trị khỏi một quan hệ thì sử
dụng cú pháp nào?
a. INSERT (r; A1 = d1, A2 = d2, …, An = dn)
b. DEL(r; A1 = d1, A2 = d2, …, An = dn)
c. DELETE(r; A1 = d1, A2 = d2, …, An = dn)
d. DEL(r; A1, A2, …, An)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
29
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 40: Trên cơ sở dữ liệu quan hệ, để thay đổi một bộ giá trị trong quan hệ thì sử
dụng cú pháp nào?
a. CH(r; A1 = d1,…, An = dn ; A, …, Ap )
b. CH(r; A1 = d1,…, An = dn ; Ai = ei, …, Ap = ep )
c. CHANGE(r; A1 = d1,…, An = dn ; Ai = ei, …, Ap = ep )
d. CH(r; d1,…,dn ; Ai = ei, …, Ap = ep )
Câu 41: Trên cơ sở dữ liệu quan hệ cú pháp sau dùng để làm gì?
Del(r; d1, d2, …, dn);
a. Chèn một bộ giá trị vào một quan hệ
b. Xóa một bộ giá trị khỏi một quan hệ
c. Thay đổi giá trị của một bộ trong một quan hệ
d. Cả đáp án b và c.
Câu 42: Gọi R={A1, A2,...,An} là tập hữu hạn các thuộc tính; K  R; K được gọi là siêu
khóa trên R khi nào?
a. Khi các giá trị của K là đủ để xác định duy nhất bộ dữ liệu của bảng
b. Khi các giá trị của K là đủ để xác định nhiều hơn một bộ dữ liệu của bảng.
c. Khi K là tối thiểu.
d. Tất cả các đáp án trên.
Câu 43: Gọi R={A1, A2,...,An} là tập hữu hạn các thuộc tính; K  R; K được gọi là khóa
của R khi nào?
a. Khi K là siêu khóa
b. Khi K là tối thiểu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
30
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Khi các giá trị của K là đủ để xác định nhiều hơn một bộ dữ liệu của bảng.
d. Cả đáp án a và b.
Câu 44: Phát biểu nào sau đây đúng với thuật ngữ “Khóa chính”
a. Khóa chính của một quan hệ là khi dựa vào nó xác định được một bộ giá trị của
một quan hệ
b. Một siêu khóa được chọn đại diện cho một quan hệ được gọi là khóa chính của
quan hệ đó
c. Khóa chính của một quan hệ là khi dựa vào nó xác định được nhiều bộ giá trị
của một quan hệ
d. Cả đáp án a và c
Câu 45: Phát biểu nào sau đây đúng với thuật ngữ “Khóa ngoài”
a. Một tập các thuộc tính K được gọi là khóa ngoài của quan hệ r nếu nó là khóa
chính của quan hệ r.
b. Một tập các thuộc tính K được gọi là khóa ngoài của quan hệ r nếu nó là khóa
chính của quan hệ khác.
c. Một tập các thuộc tính K được gọi là khóa ngoài của quan hệ r nếu nó không là
khóa chính của quan hệ r nhưng là khóa chính của quan hệ khác.
d. Tất cả các đáp án trên.
Câu 46: Khóa ngoài là một tập hợp gồm một hay nhiều thuộc tính là:
a. Siêu khóa của lược đồ quan hệ đó
b. Siêu khóa của lược đồ quan hệ khác
c. Khóa của lược đồ quan hệ đó
d. Khóa của lược đồ quan hệ khác
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
31
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 47: Giá trị của các bộ ở các thuộc tính thuộc khóa chính phải khác giá trị
a. Xâu rỗng
b. 0
c. null
d. cả xâu rỗng và 0
Câu 48: Cho Cơ sở dữ liệu Quản lý điểm gồm 3 quan hệ sau:
SV(MaSV, tenSV, ngsinh, quequan)
MH(MaMH, tenMH, HSMH, Khoa)
BĐ(MaBĐ, MaMH, MaSV, tenSV, diem, ky)
Thuộc tính MaBĐ là khóa gì?
a. Siêu khóa
b. Khóa
c. Khóa ngoài
d. Khóa chính
Câu 49: Cho Cơ sở dữ liệu Quản lý điểm gồm 3 quan hệ sau:
SV(MaSV, tenSV, ngsinh, quequan)
MH(MaMH, tenMH, HSMH, Khoa)
BĐ(MaBĐ, MaMH, MaSV, tenSV, diem, ky)
Các thuộc tính MaMH, MaSV trên quan hệ BĐ là khóa gì?
a. Siêu khóa
b. Khóa
c. Khóa ngoài
d. Khóa chính
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
32
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 50: Phát biểu nào sau đây KHÔNG đúng?
a. Mọi tập con của tập thuộc tính chứa một siêu khóa cũng là siêu khóa
b. Mỗi quan hệ có ít nhất một siêu khóa
c. Một khóa là siêu khóa tổi thiểu
d. Siêu khóa không thể chỉ là một thuộc tính của lược đồ
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
33
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CHƯƠNG II
NGÔN NGỮ THAO TÁC DỮ LIỆU
Mục tiêu: Chương II sẽ giới thiệu một số ngôn ngữ thao tác dữ liệu, như ngôn ngữ dữ
liệu dựa trên đại số quan hệ, ngôn ngữ SQL .... Ngôn ngữ xử lý dữ liệu được chia thành
hai loại khác nhau dựa trên hai chức năng khác nhau. Đó là các chức năng khai báo và
chức năng tính toán. Với các trình ứng dụng, dữ liệu thường được mô tả và tính toán
khi chương trình thực hiện, còn trong các hệ thống CSDL, dữ liệu được định nghĩa một
lần duy nhất. Vì vậy cần có một phương tiện đề định nghĩa ngôn ngữ dữ liệu có khả
năng mô phỏng các phép tính quan hệ có tính đầy đủ hơn.
Nội dung của chương bao gồm:
Đại số quan hệ
Hệ quản trị CSDL SQL
Ngôn ngữ SQL
2.1. Đại số quan hệ
2.1.1. Phép hợp
a. Định nghĩa: Giả sử r, s là 2 file dữ liệu có cùng số cột n khi đó file dữ liệu là
hợp 2 file r và s ký hiệu là rs, gồm n cột bao gồm các bản ghi, các dòng thuộc
cả file r và file s.
Những dòng giống nhau chỉ lấy một lần.
Nếu r và s là các file có tên các cột khác nhau thì cột của quan hệ hợp không có
tên.
b. Cú pháp:
r  s = [t / t  r hoặc t  s hoặc t  s và r}.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
34
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ:
2.1.2. Phép giao
a. Định nghĩa: Giả sử r và s là 2 file dữ liệu cùng n cột.
Giao của hai file dữ liệu, ký hiệu là rs là tập hợp các bộ t thuộc cả r và s.
Nếu file dữ liệu có các cột khác nhau thì file dữ liệu giao không có tên các cột.
b. Cú pháp:
r  s = { t / t  r và t  s}.
Ví dụ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
35
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.1.3. Phép trừ
a. Định nghĩa : Giả sử r và s là 2 file dữ liệu có cùng n cột.
File dữ liệu gọi là hiệu 2 file r và s, ký hiệu r-s là một file dữ liệu n cột bao gồm
các bản ghi của r nhưng không có mặt trong s.
Nếu r và s có tên các cột khác nhau thi file dữ liệu hiệu không có tên các cột.
b. Cú pháp:
r - s = { t / t  r và t  s}.
Ví dụ:
2.1.4. Tích Đề các
a. Định nghĩa:
- Gọi: r là quan hệ xác định trên tập R1 = {a1,a2,... , an}
s là quan hệ xác định trên tập R2 = {b1,b2, ..., bm}.
- Tích đề - Các r x s của r và s là tập (n+m) cột với:
n số cột của r
m số cột của r
số lượng dòng bằng số lượng dòng của r nhân với số lượng dòng của s
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
36
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Cú pháp:
r x s = { t / t có dạng (a1 ... , an, b1, ... , bm)}
trong đó: (a1 ... , an  r và b1, ... , bm  s).
Ví dụ:
2.1.5. Phép chiếu
a. Định nghĩa: Để trích rút các cột ứng với các thuộc tính nào đó của một quan
hệ.
b. Cú pháp:
Giả sử r là file dữ liệu có tập cột là R={a1,a2,...,an}
Khi đó phép chiếu ký hiệu là  lên tập r là i1,i2,...,ip(r)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
37
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Trong đó:
i là số thứ tự lấy trong tập từ 1 đến n.
j =1,2,...,p
(chỉ số p <= n)
Khi đó ta thực hiện phép chiếu như sau:
- Giữ lại p cột có số hiệu là i1,i2,...,ip
- Và loại bỏ các dòng trùng nhau.
Ví dụ:
2.1.6. Phép chọn
a. Định nghĩa : Để trích rút các bộ giá trị thỏa mãn điều kiện chọn từ một quan
hệ.
b. Cú pháp:
Giả sử r là file dữ liệu trên R={a1,a2,...,an} phép chọn hình thành file dữ liệu ký
hiệu F(r) đó là file dữ liệu có cùng số cột như r nhưng số dòng chỉ bao gồm các
dòng của r thoả mãn điều kiện F.
F(r) = {t  r | F(t) = đúng}
Biểu thức có điều kiện F gồm:
- Các toán hạng (tên cột và hằng)
- Các phép toán quan hệ số học (<,=,=,>,=,?)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
38
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Các phép toán logic (,,  là phép và, hoặc, phủ định)
- Hằng được đặt trong dấu nháy.
Ví dụ:
r đã cho trước
F là điều kiện A=B  D>5
Khi đó F(r) là phép chọn được thực hiện bằng cách rút ra các bản ghi
thoả mãn F từ r và loại bỏ các bản ghi dòng trùng nhau.
2.1.7. Phép kết nối
a. Định nghĩa: là phép ghép các bộ giá trị của hai quan hệ theo điều kiện  nào
đó.
b. Cú pháp:
Cho hai quan hệ r (có n thuộc tính) và s (có m thuộc tính), khi đó r và s được
kết nối theo điều kiện  được biểu diễn như sau:
𝑹 ⋈ 𝒔
= {tu,v / u  r , v  s, bt (A  B) đúng}
𝑨𝜽𝑩
Trong đó: tu,v có (n +m) thuộc tính
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
39
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ:
Lưu ý : Chúng ta cần giả thiết rằng giá trị của thuộc tinh B, C có thể so sánh
được với nhau.
 Phép kết nối tự nhiên: Là phép kết nối bằng tại thuộc tính cùng tên của hai
quan hệ. Ký hiệu: r * s
- Trong trường hợp phép so sánh 𝜽 là dấu ’=’ thì phép nối được gọi là kết nối
bằng . Trường hợp kết nối bằng tại thuộc tính cùng tên của hai quan hệ và một
trong hai thuộc tính đó được loại bỏ qua phép chiếu thì phép kết nối đó được
gọi là phép nối tự nhiên và sử dụng ký hiệu ‘*’. Khi đó phép kết nối tự nhiên
của hai quan hệ r(ABC) và s(CDE) được biểu diễn qua :
r(ABC)*s(CDE) = {t[ABCDE]/t[ABC] ∈ r và t[CDE] ∈ s}.
Ví dụ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
40
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.1.8. Phép chia
Định nghĩa: Cho R là quan hệ trên tập thuộc tính U
S là quan hệ trên tập thuộc tính V
Với V  U. Ta định nghĩa phép chia R cho S như sau:
R  S = { t (trên U – V)/ t’ S : t^t’  R}
Ví dụ:
2.2. Hệ quản trị CSDL SQL Server và ngôn ngữ SQL
2.2.1. Giới thiệu về Hệ quản trị CSDL SQL Server
SQL được phát triển từ ngôn ngữ SEQUEL – 2. Đây là ngôn ngữ con dữ liệu
quan hệ mạnh, phổ dụng và dễ sử dụng. SQL đã xem như ngôn ngữ xử lý dữ liệu chuẩn
cho các CSDL theo hướng mô hình quan hệ một ngôn ngữ phi thủ tục, chuẩn mực, điển
hình. Các hệ thống cài đặt SQL làm tăng rất mạnh và mặt xử lý dữ liệu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
41
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Phép toán cơ bản trong SQL là phép ánh xạ được miêu tả như một khối Select –
From – Where.
Các thuật ngữ trong CSDL quan hệ như quan hệ thuộc, bộ… được thay bằng các
thuật ngữ như bảng, cột, bản ghi hoặc hàng.
* Kiểu dữ liệu: Số, xâu, ngày tháng, tiền tệ:
- Integer: từ -2147483648  2147483647
- Smallinteger: - 32768  32767
- Decimal (5,2) 16856.01
- Decimal (x,y): với x : số chữ số ( phần nguyên)
y: số chữ số sau dấu phẩy thập phân
• Float: số dấu phẩy động.
•
Char (n): xâu ký tự có độ dài n ( n  235)
•
Var char (n): xâu ký tự có độ dài biến đổi 0  n.
- Date: dữ liệu dạng ngày tháng
* Các hàm hỗ trợ:
- Đếm số hàng Count ( )
- Tính tổng theo cột Sum ( )
- Tính trung bình theo cột Avg ( )
- Tính cực đại, cực tiểu theo cột Max ( ), min ( )
* Chức năng:
- ĐN dữ liệu
- Cập nhật dữ liệu
- Hỏi dữ liệu
- Kiểm soát dữ liệu, an toàn dữ liệu.
* SQL gồm:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
42
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Data Definition Language (DDL): Các lệnh mô tả CSDL, gồm tạo, sửa, xóa
các bảng và ràng buộc
-
Data Manipulation Language (DML): Các lệnh thao tác truy vấn dữ liệu
-
Data Control Language (DCL): Các lệnh điều khiển CSDL, gồm việc cấp
quyền hạn của user.
* SQL sử dụng thuật ngữ
-
Bảng ~ quan hệ
-
Cột ~ thuộc tính
-
Dòng ~ bộ
Trong tài liệu này sử dụng các bảng dưới đây làm ví dụ minh họa :
Bảng Employees
Bảng Jobs
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
43
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Bảng Job_history
2.2.2. Cấu trúc Cơ sở dữ liệu
Một CSDL của SQL Server là tập hợp các bảng (Table) dùng để chứa các dữ liệu
và những đối tượng khác, chẳng hạn Views, indexes, store procedures, và triggers…
Chúng được ấn định để hỗ trợ các hoạt động được thực hiện với dữ liệu. Dữ liệu được
chứa trong một CSDL thường liên quan đến một chủ đề hay tiến trình đặc biệt. SQL
Server cú thể hỗ trợ nhiều CSDL. Mỗi một CSDL cú thể liờn quan hay khụng liờn quan
đến các CSDL khác. Ví dụ một SQL Server có thể có CSDL chứa dữ liệu về nhõn sự, và
một CSDL khác chứa các đơn hàng.
Khi bạn tạo một CSDL, bạn phải xây dựng cấu trúc lưu trữ dữ liệu. Các trúc này
bao gồm ít nhất một tập tin dữ liệu (data file) và một tập tin vết giao tác (transaction log
file). Bạn nờn hiểu cách thức Microsoft SQL Server 2000 lưu trữ dữ liệu, cũng như chức
năng của transaction log trước khi bạn làm việc với CSDL của SQL Server.
Cách dữ liệu được lưu trữ trong CSDL của SQL Server:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
44
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Các tập tin CSDL SQL Server:
Một CSDL được lưu chứa trong các tập tin vật lý trờn đĩa cứng, một CSDL trói dài
trờn ớt nhất là hai tập tin. Một vài tập tin dữ liệu (data file), và một tập tin vết (transaction
log file). Những tập tin này được chỉ định khi CSDL được tạo hay hiệu chỉnh. SQL
Server 2000 cho phộp ba loại tập tin CSDL:
 Primary data files: Một CSDL có một primary data file dùng để ghi nhận lại tất
cả những tập tin khác trong CSDL, và lưu trữ dữ liệu. Theo ngầm định, tên của
primary data file cú phần mở rộng là .MDF.
 Secondary data files: Một CSDL có thể không có hoặc có nhiều secondary data
files, dùng để lưu các đối tượng của CSDL. Theo ngầm định, tên của secondary
data file có phần mở rộng là .NDF.
 Log files: một CSDL có ít nhất một log file dựng chứa những thụng tin cần thiết
cho việc phục hồi tất cả những giao tác (transaction) trong CSDL. Theo ngầm
định, log file có phần mở rộng là .LDF.
Mỗi tập tin CSDL có năm thuộc tính: Tên tập tin logic, một tên tập tin vật lý, một
kích thuớc (size) ban đầu, một kích thước tối đa (maximum size), và gia số tăng kích
thước (growth increment). Các thuộc tính của mỗi tập tin, theo cùng với những thông tin
khỏác được ghi chú trong bảng hệ thống sysfiles, một dòng ứng với mỗi tập tin đuợc dùng
trong một CSDL.
2.2.3 Tạo CSDL bằng công cụ SQL Server
Để tạo một CSDL, trước hết bạn phải định nghĩa một tên cho CSDL, kích cỡ của
nó, và các tập tin primary data file, secondary data file và file group dùng để lưu trữ nó.
Bạn nên xem xét vài nhân tố sau trước khi bạn tạo CSDL:
- Quyền để tạo một CSDL mặc nhiên phải là thành viên của sysadmin và
DBCreator fixed server role, mặc dự quyền này có thể gán cho bất kỳ user nào.
- User - người tạo ra CSDL trở thành chủ (owner) của CSDL.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
45
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Có thể có tối đa 32767 CSDL có thể tạo trong một server.
- Tên của CSDL phải đặt theo qui tắc định danh.
Khi tạo CSDL bạn nên chỉ định dung lượng lớn nhất có thể có của một CSDL, điều
này sẽ ngăn chặn sự gia tăng không kiểm soát kích thước của CSDL. SQL Server tạo
CSDL thông qua 2 bước:
- SQL Server sử dụng một bản sao của CSDL Model để khởi tạo CSDL mới và biến đổi
nó.
- Sau đó SQL Server nhồi đầy phần còn lại của CSDL bởi các trang trống.
Các phương pháp tạo, hiệu chỉnh một CSDL của SQL Server.
Cách 1: Dựng SQL Enterprise Manager
Cách 2: Dựng Create Database Wizard.
Cách 3: Dựng câu lệnh CREATE DATABASE.
Tạo bằng Database Wizard (Ở tại cửa sổ Enterprise Manager)
1. Mở rộng server group, sau đó nới rộng server nơi mà sẽ tạo CSDL.
2. Chọn thực đơn Tools --> Wizards.
3. Mở rộng Database.
4. Nhấp phải chuột tại Create Database Wizard.
5. Hoàn tất các bước trong Wizard.
Tạo bằng Enterprise Manager (ở tại cửa sổ Enterprise Manager)
1. Mở rộng server group, sau đó nới rộng server nơi mà sẽ tạo CSDL.
2. Nhắp nút phải chuột tại nút Database, chọn New DataBase.
3. Khai báo các thông tin cần thiết, sau đó chọn OK:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
46
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Trang General
+ Name: <Tờn logic của CSDL>
Trang Data Files
+ Location : <Tên của tập tin Datafile, vị trí lưu tập tin trên đĩa> + Initial size: <Kích
cở khởi tạo CSDL>
+ File Group : <Tờn của File Group>
+ File properties: Khai báo một số thuộc tính khác như tỉ lệ gia tăng (File
Growth), kích cỡ tối đa (maximun size)
Trang Transaction log: Tương tự như trang Data files nhưng khai báo cho tập tin log.
Hộp thoại xem thuộc tính của SQL Server
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
47
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.4 Tạo CSDL bằng lệnh
Cú pháp:
CREATE DATABASE database_name
[ ON
[ < filespec > [,...n ] ]
[, < filegroup > [,...n ] ]
]
[ LOG ON { < filespec > [,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
([ NAME = logical_file_name, ]
FILENAME = 'os_file_name'
[, SIZE = size ]
[, MAXSIZE = { max_size | UNLIMITED } ]
[, FILEGROWTH = growth_increment ]) [,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [,...n ]
Thực hiện:
(1) Gõ lệnh trong cửa sổ Query Analyzer
(2) Gọi thực thi câu lệnh
Ví dụ:
Tạo CSDL có tên là SalesDB, tập tin dữ liệu tên là SalesDB_dat.mdf đặt trong
C:\Data, kích cỡ khởi tạo là 10MB, kích thước tối đa là 50MB, tỉ lệ gia tăng là 5MB, và
tập tin vết tên là SalesDB_log.ldf đặt trong C:\Data, kích thước khởi tạo là 5MB, kích
thước tối đa là 25MB, tỉ lệ gia tăng là 10%.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
48
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CREATE DATABASE SalesDb
ON
(NAME = SalesDb_dat,
FILENAME = 'c:\data\salesDB_dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5)
LOG ON
(NAME = 'SalesDb_log',
FILENAME = 'c:\data\salesDB_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 10%)
GO
Lưu ý:
-
Thư mục Data phải hiện hữu trong C:\
-
Sao khi gõ câu lệnh, đánh dấu chọn khối lệnh và nhấn F5 để thực thi.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
49
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.5 Quản trị CSDL trên SQL Server
2.2.5.1 Chế độ bảo mật
Mô hình truy cập bảo mật của SQL Server:
Các lớp kiểm tra bảo mật chứng thực của SQL Server
Việc kết nối đến SQL Server thật đơn giản. Sự bảo mật được kiểm tra ở ba nơi khác
nhau: có thể bị kiểm hợp lệ bởi Windows 2000, bản thân SQL Server, mức CSDL riêng
lẽ. Ngay sau khi bạn kết nối vào SQL Server bạn chưa thật sự truy cập được bất kỳ một
đối tượng CSDL nào, bạn cần phải được cấp quyền (permissions) truy cập đến đối tượng.
Các chế độ bảo mật.
SQL Server cung cấp hai chế độ bảo mật:
Hai loại chứng thực
Windows Authentication
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
50
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
SQL Server kiểm tra nhận dạng của user và sau đó cho phép hay từ chối đăng
nhập truy xuất dựa trên cơ sở tên của User mà không cần tên đăng nhập và
password riêng biệt. Điều này gọi là kết nối tin tưởng. Khi bạn kết nối đến SQL Server
theo cách này thì có nghĩa là bạn trình bày với SQL Server một ủy nhiệm bảo mật của
Windows (như là một thẻ bài truy cập của bạn). Bạn xây dựng các ủy nhiệm này trong
quá trình đăng nhập vào mạng windows. Các ủy nhiệm bảo mật này được truyền âm
thầm cho bạn, vì thế bạn không cần làm bất cứ điều gì đặc biệt để vượt qua việc kiểm
tra bảo mật.
SQL Server Authentication
Người quản trị CSDL có thể tạo ra các tài khoản và password đăng nhập SQL
Serevr. Các tài khoản này hoàn toàn không tuỳ thuộc vào các tài khoản hay nhóm
người dùng hệ điều hành. Nếu có một kết nối chỉ định chứng thực SQL Server thì SQL
Server thực thi chứng thực chính nó bằng cách kiểm tra xem tài khoản đang nhập có
tồn tại hay không và mật khẩu chỉ định có khớp với một ghi nhận trước đây trong SQL
Server không.
Chế độ chứng thực:
Windows Authentication mode: Người sử dụng chỉ có thể kết nối với SQL Server
bằng Windows Authentication (Kết nối tin tưởng)
Mixed mode: Người dùng có thể kết nối với SQL Server bằng cách dùng cả
Windows Authentication và SQL Server Authentication
Chuyển đổi chế độ chứng thực:
Sau khi cài đặt, bạn có thể sử dụng Enterprise Manager để chuyển đổi qua lại giữa
các chế độ. Tại cửa sổ Enterprise Manager, nhắp nút phải chuột tại instance và chọn
Properties
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
51
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.5.2 Quản trị người dùng
Người dùng trong SQL Server được chia thành 2 mức: Người truy nhập vào SQL
Server gọi là Login, người khai thác CSDL gọi là User.
Login.
Là đối tượng được quyền truy nhập vào SQL Server, tùy theo chế độ bảo mật
của SQL Server mà những login là account của Windows NT hay của SQL Server,
login do Server quản lý trực tiếp.
Tạo bằng công cụ.
- Chọn chức năng Security của Server -> Logins
- Nhấn phải chuột -> New Login...
- Nhập các tham số: Nếu chọn Account của Windows NT thì bạn có thể chọn trong
danh sách. Nếu tạo login của SQL Server thì bạn nhập tên mới, mật khẩu, chọn login
thuộc server role nào, có thể gán quyền truy nhập khai thác CSDL nào.
Tạo bằng câu lệnh. Sử dụng câu lệnh
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
52
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
Ví dụ: Tạo login có tên ‘Albert’, mật khẩu ‘corporate’
EXEC sp_addlogin 'Albert', 'food', 'corporate'
Mọi thao tác sửa, xóa được thực hiện như các đối tượng khác.
User.
User là đối tượng khai thác CSDL, nếu login chỉ xác định truy nhập vào SQL
Server thì User là login ID tham gia khai thác CSDL, user do CSDL quản lý trực tiếp.
- Chọn CSDL -> users
- Nhấn phải chuột -> new user...
- Chọn Login, nhập user name, chọn role mà user thuộc ->Ok
Các thao tác xóa, sửa thực hiện như các đối tượng khác, để gán quyền cho user
bạn có thể chọn lại user vừa tạo cho CSDL sau đó vào nhấn vào Permissions.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
53
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.5.3 Quản trị xuất, nhập, sao lưu, phục hồi dữ liệu.
a. Import – Nhập dữ liệu.
Dùng nhập dữ liệu từ ngoài vaof CSDL từ hệ quản trị CSDL khác hoặc CSDL
khác của SQL Server.
- Chọn Databases -> All tasks -> Import Data...
- Next -> Chọn Data Source (Có thể là SQL Server, Oracle, Access,...), trong ví
dụ minh họa chọn Access.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
54
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Chọn tập tin (file name) -> Next
- Chọn Instance cần chuyển dữ liệu vào, user name., tên CSDL (có trước hoặc
tạo tại thời điểm này bằng cách chọn New) -> Next
- Chọn cách chuyển toàn bộ bảng dữ liệu hay thông qua câu lệnh truyên vấn
(trong ví dụ minh họa chọn bảng dữ liệu) -> Next
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
55
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Chọn các bảng, khung nhìn cần Import (có thể lựa chọn một số chức năng khác
cụ thể hơn, bạn đọc tự tìm hiểu), tên các bảng, khung nhìn của SQL Server nhận
dữ liệu -> Next.
- Chọn chức năng thực hiện ngày hay theo lịch –> Next -> Finish
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
56
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Xem thông báo sau khi chuyển -> Done
b. Export – Xuất dữ liệu.
Phần này giới thiệu kỹ thuật xuất dữ liệu từ một CSDL của SQL Server ra một
hệ quản trị CSDL khác hoặc một CSDL khác của SQL Server. Tương tự như Import
nhưng Export thực hiện Data Source là SQL Server, còn Destination là hệ quản trị CSDL
khác hoặc CSDL khác của SQL Server (phần này bạn đọc tự xem xét).
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
57
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Các mô hình phục hồi dữ liệu
+ Full Recovery model: Là mô hình phục hồi toàn bộ hoạt động giao dịch của dữ
liệu (Insert, Update, Delete, hoạt động bởi lệnh bcp, bulk insert). Với mô hình này ta có
thể phục hồi dữ liệu tại một thời điểm trong quá khứ đã được lưu trong transaction log
file.
+ Bulk-Logged Recovery Model: Mô hình này được thực thi cho các thao tác
bcp, bulk insert, create index, writetext, updatetext, các hoạt động này chỉ nhật ký sự
kiện vào log để biết mà không sao lưu toàn bộ dữ liệu, chi tiết như trong full recover.
Các sự kiện Insert, Update, Delete vẫn được nhật ký và khôi phục bình thường.
+ Simple Recovery Model: Với mô hình này bạn chỉ phục hồi lại thời điểm
backup gần nhất mà không theo thời điểm khác trong quá khứ.
Cách đặt mô hình khôi phục:
-
Chọn CSDL.
-
Nhấn nút phải chuột -> Properties -> Options -> Recovery
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
58
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Xét ví dụ sau: Giả sử ta có một CSDL được backup theo chiến lược như hình vẽ:
Nhìn hình trên ta thấy CSDL được lập lịch Full Database Backup vào ngày chủ
nhật, Differential Database Backup vào ngày thứ ba và thứ năm, còn Log Database
Backup vào 5 ngày trong tuần, ngày thứ sáu có sự cố với CSDL data file bị hỏng, vấn
đề đặt ra là phải phục hồi dữ liệu và CSDL hoạt động bình thường. Ta phải làm các bước
sau:
+ Thực hiện Backup log file (giả sử log file không bị hỏng).
+ Khôi phục Full Database của ngày chủ nhật.
+ Phục hồi Differential Database của ngày thứ năm.
+ Khôi phục Transaction log backup ngày thứ năm.
d. Sao lưu cơ sở dữ liệu
Trước khi xem xét kỹ thuật sao lưu CSDL, ta thống nhất một số thuật ngữ bằng
tiếng Anh như sau:
+ Backup: Là quá trình copy toàn bộ hoặc một phần database, transaction log,
file, file group thành lập một backup set được chứa trong backup media (disk hoặc tape)
bằng cách sử dụng một backup device (tape drive name hoặc physical filename).
+ Backup Device: Một file vật lý hoặc một drive tape.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
59
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
+ Backup file: Một file chứa Backup set.
+ Backup media: LÀ Disk hoặc tape.
+ Backup set: Một bộ backup một lần backup đơn chứa trên backup media.
Các bước thực hiện backup như sau:
-
Chọn CSDL cần backup.
-
Nhấn phải chuột -> All Tasks -> Backup Database…
-
Nhập các tham số, lựa chọn kiểu.
e. Phục hồi cơ sở dữ liệu
Là chức năng thực hiện khôi phục dữ liệu đã sao lưu, tùy theo chiến lược backup
mà bạn có thể phục hồi đến thời điểm nào, thu được bộ dữ liệu trong quá khứ như thế
nào. Khôi phục dữ liệu được thực hiện theo thứ tự backup, thông tin này được lưu trữ
trong msdb.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
60
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Các bước thực hiện như sau:
-
Chọn mục Databases -> Nhấn nút phải chuột -> All Tasks -> Restore
Database…
-
Nhập tham số, chọn mô hình khôi phục.
2.2.6 Ngôn ngữ SQL
2.2.6.1 Các phép toán định nghĩa CSDL
o Lệnh tạo và xóa CSDL:
-
Tạo CSDL:
Create Database <tên CSDL>
-
Xóa CSDL
Drop Database <tên CSDL>
-
Ví dụ: Tạo CSDL QuanLyNhanSu
Create Database QuanLyNhanSu
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
61
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
o Lệnh tạo bảng: CREATE TABLE
o Để định nghĩa một bảng
-
Tên bảng
-
Các thuộc tính
• Tên thuộc tính
• Kiểu dữ liệu
• Các ràng buộc toàn vẹn trên thuộc tính (RBTV)
o Cú pháp
CREATE TABLE <Tên_bảng>
(
<Tên_cột> <Kiểu_dữ_liệu1>,
<Tên_cột> <Kiểu_dữ_liệu2>,
…
)
o Kiểu dữ liệu
Char(w): Kiểu dữ liệu ký tự có kích thước cố định.
Varchar(w): Kiểu dữ liệu ký tự có thay đổi từ 0 đến giá trị max là 2000
Number: Kiểu dữ liệu số
Int: Kiểu số nguyên
Datetime: Kiểu dữ liệu ngày tháng
Logical: Kiểu dữ liệu logic (True/Flase)
…
o Ví dụ: Tạo bảng Nhân Viên với các thuộc tính: Mã nhân viên, tên nhân
viên, Ngày sinh, địa chỉ, giới tính, lương, mã người quản lý, phòng ban.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
62
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CREATE TABLE NHANVIEN
(
MANV CHAR(9),
TENNV VARCHAR(50),
NS
DATETIME,
DCHI VARCHAR(50),
GT CHAR(3),
LUONG INT,
MA_NQL CHAR(9),
PHG INT
)
o Lệnh sửa bảng (ALTER TABLE ): Được dùng để thay đổi cấu trúc bảng hoặc
thay đổi RBTV.
-
Thêm cột
ALTER TABLE <Tên_bảng>
ADD COLUMN <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]
Ví dụ: ALTER TABLE NHANVIEN
ADD COLUMN NGHENGHIEP CHAR(20)
-
Xóa cột
ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột>
Ví dụ: ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP
-
Mở rộng cột
ALTER TABLE <Tên_bảng> ALTER COLUMN
<Tên_cột> <Kiểu_dữ_liệu_mới>
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
63
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ: ALTER TABLE NHANVIEN ALTER COLUMN
NGHENGHIEP CHAR(50)
o Lệnh xóa bảng (DROP TABLE): Được dùng để xóa cấu trúc bảng (Tất cả dữ
liệu của bảng cũng bị xóa)
Cú pháp: DROP TABLE <Tên_bảng>
Ví dụ: DROP TABLE NHANVIEN
o Thêm một bộ (Insert Into)
Câu lệnh INSERT INTO nhằm mục đích chèn một bản ghi vào một bảng theo
yêu cầu của người dùng.
Cú pháp:
INSERT INTO tên_bảng(Danh_sách_tên_cột) VALUES (các_giá_trị)[câu_hỏi_con]
Ví dụ:
Lưu ý: Khi thêm các bộ vào tất cả các thuộc tính trong bảng, ta có thể bỏ qua
việc liệt kê danh sách tên cột (xem ví dụ dưới).
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
64
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
o Xóa bản ghi ( Delete)
Mệnh đề xóa bản ghi có thể được thực hiện cho một hoặc nhiều bản ghi thỏa
mãn một điều kiện nào đó.
Cú pháp:
DELETE tên_bảng [FROM {tên_bảng| view}]
[WHERE biểu_thức_điều_kiện]
Ví dụ:
o Sửa đổi dữ liệu ( Update)
Mệnh đề Update dùng để cập nhật (sửa đổi) lại dữ liệu đã tồn tại trong bảng.
Khi UPDATE được sử dụng, nó thường đi với mệnh về Where.
Cú pháp:
UPDATE tên_bảng SET tên_cột = biểu_thức [FROM tên_bảng]
[WHERE biểu_thức_điều_kiện]
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
65
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ:
Lưu ý: Khi sử dụng lệnh Update mà không có mệnh đề Where đi kèm thì mệnh
đề Update sẽ ảnh hưởng đến toàn bộ các thuộc tính nằm sau mệnh đề SET trên tất cả
các bản ghi.
Ví dụ :
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
66
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.6.2 Truy vấn đơn giản
a. Khối lệnh SELECT
Cấu trúc đơn giản nhất trong SQL là khối SELECT, được miêu tả về cú pháp
như là một khối select – from- where.
Một cách tổng quát khối select gồm ba mệnh đề chính:
- Select : Xác định nội dung các cột cần đưa ra kết quả
- From : Xác định các bảng ( quan hệ) cần lấy thông tin ra
- Where : Xác định điều kiện các bản ghi được chọn để đưa ra.
Ngoài ra, để mở rộng khả năng của ngôn ngữ, khối select- from- where còn
được bổ sung thêm các mệnh đề group by, order by, having, các hàm mẫu và một số
phần mềm còn có thêm cả mệnh đề compute, for browse. Trong các phần sau sẽ trình
bày chi tiết từng mệnh đề.
Dạng tổng quát của khối select được biểu diễn như sau :
SELECT [*| DISTINCT] danh_sách_chiếu
FROM danh_sách_tên_bảng| tên_các_view
[WHERE biểu_thức_điều_kiện]
[GROUP BY danh_sách_tên_cột]
[HAVING biểu_thức_điều_kiện]
[ORDER BY danh_sách_côt [ASC|DESC]]
Ví dụ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
67
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Tìm kiếm không điều kiện
Trước hết làm quen với các câu hỏi chỉ liên quan đến một bảng. Trong mệnh đề
select có danh sách chiếu. Danh sách này xác định tên các cột cần có trong bảng kết
quả. Nếu xuất hiện giá trị ’* ‘ (Select * from….) có nghĩa là chọn toàn bộ các cột của
bảng.
Ví dụ : Select * From Employees
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
68
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
* Lưu ý: Sau khi thực hiện câu lệnh SQL, để bảng đúng là một quan hệ (có
nghĩa là không có bộ giá trị nào trùng nhau) thì trong mệnh đề select ta dùng từ khóa
DISTINCT.
Ví dụ: Cho bảng Nhanvien (MaNV, TenNV, Ngaysinh, Dchi, Luong, GT, MaPB)
Hiển thị bảng lương của nhân viên trong công ty?
SELECT LUONG
SELECT DISTINCT LUONG
FROM NHANVIEN
FROM NHANVIEN
Kết quả:
LUONG
3.000.000
2.500.000
4.000.000
c. Tìm kiếm với điều kiện đơn giản
Thông thường, việc tìm kiếm đoan giản chỉ cần thêm điều kiện vào sau từ khóa
where.
Trong SQL, các phép so sánh được sử dụng bao gồm >, < , >=, <=,<>.
Các phép toán logic: AND, OR, và NOT
Các từ khóa: BETWEEN … AND, IN,…
Ví dụ :
Tìm kiếm trong bảng Employees những người có lương (salary) lơn hơn 10000.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
69
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
d. Tìm kiếm có xử lý xâu ký tự
Xử lý xâu ký tự gần đúng còn được gọi là phép tính ‘thông minh’. Trong trường
hợp người sử dụng không nhớ rõ tên người hoặc địa danh… thì việc tìm kiếm gần
đúng này mang lại rất nhiều lợi ích.
Để thực hiện việc tìm kiếm dần đúng xâu ký tự, SQL sử dụng toán tử LIKE.
Cú pháp:
Select …..From….Where …..LIKE ‘[ _ ][%]Xâu_ký_tự[%][ _ ]’
Khi sử dụng ký hiệu phần trăm (%) ví dụ như : ‘Alex%’ thì điều này có nghĩa là
chúng ta đang thực hiện việc tìm kiếm với điều kiện xâu ký tự bao gồm {Alex[xâu ký
tự bất kỳ]}. Lúc này điều kiện chỉ đúng khi xâu đang xét phải có chuỗi ký tự ‘Alex’ và
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
70
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
theo sau nó là bất kỳ ký tự nào. Tương tự như % , khi sử dụng ký hiệu dấu gạch dưới
( _ ) thì mỗi dấu gạch này thể hiện cho một ký tự.
Ví dụ 1:
Ví dụ 2:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TenNV LIKE ‘Nguyen _ _ _ _’
Ví dụ 3:
SELECT MANV, TENNV
FROM NHANVIEN
WHERE TenNV LIKE ‘Nguyen %’
e. Tìm kiếm nhờ sử dụng IN và BETWEEN
Ngoài việc sử dụng các con số, xâu ký tự cụ thể thì SQL cung cấp một số toán
tử giúp việc diễn giải điều kiện đơn giản và ngắn gọn hơn cho người dùng, ở đây sử
dụng toán tử IN và BETWEEN.
Toán tử In và Between có cú pháp như sau:
Select…..From….Where …. IN (Tập hợp)
Select…..From….Where …..BETWEEN number1 AND number2
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
71
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ 1: Cho bảng Nhanvien (MaNV, TenNV, Ngaysinh, GT, Luong, MaPB)
Tìm những nhân viên nào có lương từ 2 triệu đến 3 triệu đồng?
SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong> 2.000.000 AND Luong< 3.000.000

SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong BETWEEN 2.000.000 AND 3.000.000
Ví dụ 2: Tìm những nhân viên nào có lương một trong 3 mức sau: 2 triệu, 3 triệu,
4 triệu đồng.
SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong= 2.000.000 OR Luong= 3.000.000 OR Luong=4.000.000

SELECT MANV, TENNV
FROM NHANVIEN
WHERE Luong IN ( 2.000.000 , 3.000.000, 4.000.000)
Ví dụ 3:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
72
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
f. Tìm kiếm có sắp xếp
Vấn đề đặt ra khi chúng ta cần sắp xếp dữ liệu truy vấn theo một cách nào đó.
SQL cung cấp mệnh đề ORDER BY giúp chúng ta thực hiên việc này.
Từ khoá ORDER BY được sử dụng để sắp xếp kết quả trả về. Mệnh đề
ORDER BY được dùng để sắp xếp các dòng.
Cú pháp:
Select …..From….Where…..ORDER BY (Danh_sách_cột) [ASC|DESC]
Trong đó:
-
ASC: Sắp xếp tăng dần (Mặc định khi không có chỉ thị)
-
DESC: Sắp xếp giảm dần
Ví dụ:
Bảng Orders:
Company
OrderNumber
Sega
3412
ABC Shop
5678
W3Schools
2312
W3Schools
6798
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
73
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Để lấy danh sách các công ty theo thứ tự chữ cái (tăng dần):
SELECT Company, OrderNumber FROM Orders
ORDER BY Company
Kết quả trả về:
Company
OrderNumber
ABC Shop
5678
Sega
3412
W3Schools
6798
W3Schools
2312
 Lấy danh sách các công ty theo thứ tự chữ cái (tăng dần) và hoá đơn đặt
hàng theo thứ tự số tăng dần:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company, OrderNumber
Kết quả trả về:
Company
OrderNumber
ABC Shop
5678
Sega
3412
W3Schools
2312
W3Schools
6798
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
74
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Lấy danh sách các công ty theo thứ tự giảm dần:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC
Kết quả trả về:
Company
OrderNumber
W3Schools
6798
W3Schools
2312
Sega
3412
g. Tìm kiếm có chứa phép tính tập hợp
Trong khi truy vấn dữ liệu, việc truy vấn có thể thực hiện các phép tính trên tập
hợp bao gồm cả việc tìm kiếm. SQL cung cấp toán tử MINUS nhằm phục vụ truy vấn,
tìm kiếm có chưa các tập hợp.
Toán tử MINUS có tác dụng gần giống như một toán tử trừ ‘-‘ hai tập hợp.
Ví dụ:
Bảng Jobs có trường Job_ID chứa tất cả các mã công việc (Job) của một công ty
A. Bảng Job_history có trường Job_ID chứa các mã công việc mã nhân viên đó đã làm
trong tháng. Để tìm ra mã công việc chưa được làm trong tháng ta sử dụng câu lệnh truy
vấn SQL như sau:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
75
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ngoài ra, câu lệnh dưới đây cũng là tương đương
2.2.6.3 Truy vấn lồng nhau
Trong phần này trình bày việc tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ
lồng nhau hoặc qua phép kết nối.
 Phép kết nối
Trong phép kết nối, các cột tham gia kết nối phải có miền giá trị có thể so sánh
được với nhau. Tên cột của các bảng khác nhau có thể được viết tường minh qua tên
bảng hoặc bí danh.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
76
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Cú pháp:
Select ….
From Table1, Table2
Where Table1.ColName = Table2.ColName
Ví dụ 1: Cho cơ sở dữ liệu quản lý thông tin bán hàng của các đại lý gồm các
quan hệ sau:
 S(S#, Sname, City, Status)
 P(P#, Pname, Color, Weight, Price)
 SP(S#, P#, Sdate, QTY)
Tìm tên các đại lý đã cung cấp ít nhất một mặt hàng?
Select S.SName
From S, SP
Where S.S# = SP.S#
Ví dụ 2:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
77
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Ánh xạ lồng
Ngoài cách sử dụng phép nối ta có thể sử dụng ánh xạ lồng để thực hiện
công việc tương tự. Phép lồng nhau có thể được lồng nhiều mức hoặc sử dụng
ánh xạ lồng với sự dẫn trỏ giữa các khối tới các bảng khác nhau.
Về mặt cú pháp cũng tương tự như khi sử dụng phép nối, tuy nhiên thay
vì sử dụng nhiều bảng trong mỗi mệnh đề select- from- where thì ánh xạ chỉ dùng
một bảng.
Ví dụ 1: Cho cơ sở dữ liệu quản lý thông tin bán hàng của các đại lý gồm các
quan hệ sau:
 S(S#, Sname, City, Status)
 P(P#, Pname, Color, Weight, Price)
 SP(S#, P#, Sdate, QTY)
Tìm tên các đại lý đã cung cấp ít nhất một mặt hàng?
Select SName
From S
Where S# IN (Select S# from SP)
Ví dụ 2: Cho cơ sở dữ liệu gồm các bảng:
Job (Job_id, Job_title, Min_Salary, Max_Salary)
Employees (Employee_id, First_name, Last_name, email, phone_number,
hire_date, Job_id, salary)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
78
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.6.4 Truy vấn sử dụng hàm tính toán và gom nhóm
a. Tìm kiếm nhờ mệnh đề GROUP BY
Khi truy vấn mẩu tin trên một hay nhiều bảng dữ liệu, thông thường có những
bản ghi nào đó cùng giá trị.
Mệnh đề GROUP BY…được thêm vào SQL bởi vì các hàm tập hợp (như
SUM) trả về một tập hợp của các giá trị trong cột mỗi khi chúng được gọi, và nếu
không có GROUP BY ta không thể nào tính được tổng của các giá trị theo từng nhóm
riêng lẻ trong cột.
Cú pháp của GROUP BY như sau:
SELECT tên_cột, SUM (tên_cột) FROM tên_bảng GROUP BY tên_cột
Ví dụ 1:
Giả sử ta có bảng Sales như sau:
Company
Amount
W3Schools
5500
IBM
4500
W3Schools
7100
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
79
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu lệnh SQL sau:
SELECT Company, SUM (Amount) FROM Sales
sẽ trả về kết quả:
Company
SUM(Amount)
W3Schools
17100
IBM
17100
W3Schools
17100
Kết quả trả về ở trên đôi khi không phải là cái mà ta mong đợi. Ta thêm mệnh
đề GROUP BY vào trong câu lệnh SQL:
SELECT Company, SUM (Amount) FROM Sales GROUP BY Company
và kết quả trả về lần này sẽ là:
Company
SUM(Amount)
W3Schools
12600
IBM
4500
Kết quả này đúng là cái mà ta mong muốn.
Ví dụ 2: Cho cơ sở dữ liệu quản lý thông tin bán hàng của các đại lý gồm các quan hệ
sau:
 S(S#, Sname, City, Status)
 P(P#, Pname, Color, Weight, Price)
 SP(S#, P#, Sdate, QTY)
Tìm số lượng cung cấp lớn nhất của từng mặt hàng?
Select P#, max (QTY)
From SP
Group by P#
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
80
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Bảng SP
Kết quả:
Khi sử dụng Group by ta thường sử dụng mệnh đề HAVING đi kèm. Having
được thêm vào SQL vì mệnh đề WHERE không áp dụng được đối với các hàm tập
hợp (như SUM). Nếu không có HAVING, ta không thể nào kiểm tra được điều kiện
với các hàm tập hợp.
Cú pháp của HAVING như sau:
SELECT tên_cột, SUM (tên_cột) FROM tên_bảng
GROUP BY tên_cột
HAVING SUM (tên_cột) điều_kiện giá_trị
Ta sử dụng lại bảng Sales ở trên. Câu lệnh SQL sau:
SELECT Company, SUM (Amount) FROM Sales
GROUP BY Company
HAVING SUM (Amount) > 10000
sẽ trả về kết quả:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
81
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Company
SUM(Amount)
W3Schools
12600
Chú ý:
 Mệnh đề GROUP BY
 Các thuộc tính trong mệnh đề GROUP BY phải được xuất hiện trong
mệnh đề SELECT.
 Mệnh đề HAVING:
 Chỉ kiểm tra điều kiện trên nhóm, mệnh đề Having không lọc trên từng
bản ghi. (Điều kiện trong mệnh đề Having tác động trên các bản ghi của
một nhóm)
 Điều kiện trên nhóm (ở mệnh đề HAVING) được thực hiện sau khi gom
nhóm.
 Điều kiện trong mệnh đề Where tác động trên toàn bộ các bản ghi của bảng
b. Các hàm thư viện
o Hàm Count()
Hàm Count() trả về số lượng mẩu tin trong câu truy vấn trên bảng.
Cú pháp:
Select Count(tên_cột) From tên_bảng….
Ví dụ :
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
82
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Lưu ý:
- Khi sử dụng Count(*) sẽ trả về số bản ghi của bảng
- Cần phân biệt Cout( tên_cột) với Count(*) : Về cơ bản chúng giống
nhau tuy nhiên hàm Count(*) đếm cả những bản ghi có giá trị NULL,
Count(tên_cột) thì không.
Ví dụ:
Trong bảng Employees có 107 bản ghi, thuộc tính
Commission_PCT có vị trí chứa giá trị NULL.
Khi sử dụng hàm Count(*) và hàm Count(Commisson_pct) ta có :
Để tránh đếm những giá trị trùng lặp ta có thể dùng thêm từ khóa DISTINCT.
Ví dụ:
o Hàm Sum()
Hàm trả về tổng các giá trị của trường, cột trong câu truy vấn
Ví dụ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
83
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
o Hàm Min, Max
Hàm min, max trả về giá trị nhở nhất, giá trị lớn nhất của cột hay trường trong
câu truy vấn.
Cú pháp : Select Min [Max] (tên_cột) From tên_bảng [Where điều_kiện]
Ví dụ:
o Hàm tính trung bình cộng
Trả về giá trị bình quân của cột hay trường trong câu truy vấn.
Cú pháp : Select AVG (tên_cột) From tên_bảng [Where điều_kiện]
Ví dụ:
2.2.6.5. Khung nhìn (View)
Trong SQL, View là một bảng ảo được tạo ra dựa trên kết quả của một câu lệnh
truy vấn SQL. Một view chứa các dòng và các cột, nó chỉ giống như một bảng, mỗi
trường của view là một thuộc tính từ một hoặc nhiều bảng thực ( real table) trong cơ sở
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
84
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
dữ liệu. Với view có thể sử dụng các hàm truy vấn SQL, mệnh đề Where và các câu
lệnh Join để xem và hiển thì dữ liệu giống như truy vấn từ một bảng đơn bình thường.
Cú pháp:
CREATE VIEW tên_view (danh_sách_tên_cột) AS mệnh_đề_select
 Khi tạo View cần chú ý một số điểm sau:
•
Tên view phải tuân theo quy tắc về định danh và phải duy nhất đối với người sử
dụng.
•
Không thể ràng buộc các mặc định, các quy tắc cho view.
•
Trong câu lệnh Create view không nhất thiết phải chỉ định tên cột. Tên của các
cột cũng như kiểu dữ liệu của chúng sẽ tương ứng với các cột trong danh sách
chọn của câu lệnh Select.
•
Bạn phải xác định tên cột trong câu lệnh Create view trong các trường hợp sau:
 Mỗi cột của view được phát sinh từ một biểu thức số học, một hàm cài sẵn
hay một hằng.
 Hay nhiều cột của view có trùng tên.
 Bạn muốn thay đổi tên cột trong view khác với tên cột của bảng cơ sở.
Ví dụ 1: Cho database Quanlysinhvien
Y/c: Tạo view Thongtin_sv (masv, hoten, tuoi, tenlop)
Create view thongtin_sv (masv, hoten, tuoi, tenlop)
As
Select masv, hoten, datediff(year, ngaysinh, getdate()), tenlop
From sinhvien, lop
Where sinhvien.malop = lop.malop
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
85
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ 2:
2.2.7 Giới thiệu về ngôn ngữ lập trình T-SQL trong SQL Server
2.2.7.1 Biến cục bộ (Local variable)
-
Được khai báo trong phần thân của một bó lệnh hoặc một thủ tục.
-
Phạm vi hoạt động của biến bắt đầu từ điểm mà nó được khai báo cho đến khi
kết thúc một lô (batch) hoặc stored procedure hoặc Function mà nó được khai báo.
-
Tên của biến bắt đầu @
Khai báo:
DECLARE @var_name var_type
trong đó:
@var_name: Tên của biến được đặt theo qui tắc định danh.
var_type: Kiểu dữ liệu của biến.
string_expr: Một biểu thức trả về giá trị chuỗi.
Ví dụ:
DECLARE @mMaSP Nchar(3), @mSL int
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
86
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
DECLARE @mNHD DATETIME
Gán giá trị cho biến:
Nếu biến vừa khai báo xong thì biến mặc nhiên được gán giá trị là NULL. Để gán
biến ta dùng lệnh SET hoặc dùng câu lệnh SELECT
SET @var_name = expression
SELECT { @var_name = expression } [,...n ]
Ví dụ: gán giá trị là ngày 25/03/2014 vào biến mNHD
DECLARE @mNHD DATETIME
SET @mNHD='2014-03-25'
In giá trị của biến cục bộ:
PRINT msg_str | @local_variable | string_expr
Trong đó:
msg_str: Hằng chuỗi;
@local_variable: Biến cục bộ;
Ví dụ : Tìm số lượng bán được lớn nhất của sản phẩm mã S1
DECLARE @mSL INT
SELECT @mSL=MAX(SL)
FROM CTHD
WHERE MaSP='S1'
PRINT @mSL
 Chú ý: Khi có kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu chuỗi bằng hàm
CAST hay CONVERT
CAST(Tên_biến as Kiểu_DL)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
87
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CONVERT(kiểu_DL,Tên_biến)
Ví dụ : Tìm số lượng bán được lớn nhất của sản phẩm mã S1
declare @msl int
select @msl=max(sl)
from cthd
where masp='s1'
print 'max s1 = '+cast(@msl as char(10))
Hoặc
declare @msl int
select @msl=max(sl)
from cthd
where masp='s1'
print 'max s1 = '+convert(char(10), @msl)
2.2.7.2 Biến hệ thống.
Global variable trong SQL Server gọi là System Function: Từ SQL Server 7.0
biến Global được định nghĩa như là hàm hệ thống. Mỗi kết nối sẽ tạo ra một session, SQL
Server tạo ra sẳn một số biến có sẳn rất tiện ích trong việc lập trình và quản trị hệ thống.
Các biến này không có kiểu, tên bắt đầu @@.
Các biến
Ý nghĩa
@@VERSION
Phiên bản của SQL Server và hệ điều hành
@@TRANCOUNT
Xem coi có bao nhiêu transaction đang mơ
@@ROWCOUNT
Trả về số dòng bị ảnh hưởng đối với lệnh thực thi
gần nhất
@@IDENTITY
Trả về số Identity phát sinh sau cùng
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
88
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
@@ERROR
Trả về lỗi số (STT lỗi) của lệnh sau cùng mà SQL
thực thi, là 0 có nghĩa là câu lệnh thực thi hoàn
thành.
@@FETCH_STATUS
Trả về trạng thái của lệnh Fetch của biến con trỏ có
thành công hay không (0: Thành công, -1: bị lỗi
hoặc vượt quá phạm vi; -2: Thất bại)
@@LANGUAGE
Tên của ngôn ngữ đang được sử dụng
@@MAX_CONNECTIONS Số kết nối tối đã có thể
@@SERVERNAME
Tên của máy chủ
@@SERVICENAME
Tên của dịch vụ SQL trên máy chủ
@@TIMETICKS
Số milliseconds trong một tick trên máy chủ
2.2.7.3 Các toán tử.
Toán tử số học :
Toán tử số học được phép sử dụng trong việc tính toán các phép tính : cộng, trừ,
nhân, chia và chia lấy phần dư. Các biểu thức, giá trị tính toán phải có kiểu dữ liệu là số
khi thực hiện các toán tử này. Thứ tự ưu tiên của các toán tử số học là : nhân, chia và
chia lấy phần dư trước sau đó đến cộng và trừ. Tuy nhiên bạn nên chỉ định tường minh
thứ tự thực hiện các toán tử số học bằng cách đưa vào các dấu ngoặc đơn trong một biểu
thức tính toán.
Ví dụ :
Hai câu lệnh bên dưới sẽ trả về kết quả như nhau :
SELECT 10 +15*70/100
Và
SELECT 10 +((15*70)/100)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
89
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Tuy nhiên với câu lệnh thứ hai, bạn thấy rõ ràng hơn bởi vì phép nhân bên trong
cùng của dấu ngoặc đơn sẽ thực hiện trước sau đó là tới phép chia và cuối cùng mới là
phép cộng.
Toán tử số học được phép sử dụng cho các kiểu dữ liệu số như : int, bigint, smallint,
tinyint, numeric, decimal, float, real, money và smallmoney. Tuy nhiên đối với phép
tính chia lấy phần dư chỉ được sử dụng cho các kiểu dữ liệu số nguyên như : int, bigint,
smallint và tinyint.
Ví dụ :
Thể hiện phép chia lấy phần dư của hai số nguyên 15 và 6. Bạn sử dụng câu lệnh như
sau :
SELECT 15%6
Kết quả trả về là 3.
Toán tử nối chuỗi :
Toán tử nối chuỗi được phép sử dụng trong việc kết nối các chuỗi rời rạc thành một
chuỗi liên tục. Các biểu thức, giá trị khi nối chuỗi phải có kiểu dữ liệu là chuỗi hoặc
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
90
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
phải được chuyển đổi thành kiểu dữ liệu chuỗi trước khi thực hiện toán tử này. Ký hiệu
của toán tử nối các chuỗi lại với nhau là dấu cộng (+).
Ví dụ :
Để nối hai chuỗi "Hello" và "The World !" lại thành chuỗi "Hello The World !", bạn sử
dụng câu lệnh sau :
SELECT “Hello”+
“ ” + “The
World”
Ví dụ :
Cho biết ngày đặt hàng của đơn đặt hàng số D007 là bao nhiêu, bạn sử dụng câu lệnh
sau :
SELECT “Ngày đặt hàng D007 là: “
+CASE(NGAYDH AS CHAR(11))
FROM
DONDH
WHERE SODH = “D007”
Trong ví dụ trên bắt buộc phải chuyển đổi giá trị dữ liệu của cột ngày đặt hàng trong
bảng DONDH từ kiểu dữ liệu ngày sang kiểu dữ liệu chuỗi trước khi thực hiện toán tử
nối chuỗi.
Toán tử so sánh :
Toán tử so sánh được phép sử dụng để thực hiện các phép so sánh như : bằng, khác, lớn
hơn, nhỏ hơn, … cho các biểu thức cần được so sánh. Giá trị trả về của việc so sánh sẽ
là đúng hoặc sai tùy thuộc vào biểu thức điều kiện mà bạn đưa ra để so sánh.
Các toán tử so sánh có thể được sử dụng trên nhiều kiểu dữ liệu khác nhau như : kiểu
số, kiểu chuỗi hoặc kiểu ngày. Thông thường các biểu thức so sánh sẽ được lồng vào
các mệnh đề WHERE hoặc HAVING của các câu lệnh truy vấn.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
91
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ :
Sử dụng toán tử so sánh bằng để lọc ra các vật tư hiện đang có trong bảng VATTU với
đơn vị tính là "Bộ", bạn sử dụng câu lệnh sau :
SELECT *
FROM VATTU
WHERE DVTINH = “Bộ”
Trong ví dụ trên, toán tử so sánh bằng được thực hiện trên kiểu dữ liệu chuỗi và kết hợp
trong mệnh đề WHERE.
Ví dụ :
Sử dụng toán tử so sánh lớn hơn để lọc ra các phiếu xuất hàng có tổng trị giá lớn
hơn 3,000,000 vnđ. Bạn sử dụng câu lệnh sau :
SELECT SOPX, SUM(SLXUAT*DONGIA) AS TONGTG
FROM CTXUAT
GROUP BY SOPX
HAVING SUM(SLXUAT*DGXUAT)>3000000
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
92
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Trong ví dụ trên, toán tử so sánh lớn hơn được thực hiện trên kiểu dữ liệu số và
kết hợp trong mệnh đề HAVING.
Toán tử luận lý :
Toán tử luận lý được phép sử dụng để thực hiện việc kết hợp nhiều biểu thức so
sánh đơn lẻ thành một biểu thức so sánh chung. Có ba toán tử luận lý rất quan trọng
thường dùng : AND, OR và NOT. Khi sử dụng toán tử luận lý bạn nên thêm vào các
dấu ngoặc đơn cần thiết để giúp cho người đọc dễ hiểu bởi vì nó làm cho câu lệnh rõ
ràng hơn.
Ví dụ :
Hiển thị danh sách các vật tư trong bảng VATTU thỏa điều kiện như sau :
- Đơn vị tính là "Bộ" và phần trăm lớn hơn 10.
- Hoặc đơn vị tính là "Cái" và phần trăm lớn hơn 20.
Bạn sử dụng câu lệnh như sau:
SELECT *
FROM VATTU
WHERE (DVTINH=”Bộ” AND PHANTRAM>10)
OR (DVTINH=”Cái” AND PHANTRAM>20)
Trong ví dụ trên, cả hai toán tử AND và OR được sử dụng kết hợp trong các biểu
thức so sánh.
2.2.8.Các lệnh cơ bản của T-SQL
a. Các lệnh truy vấn
SELECT [*| DISTINCT] danh_sách_chiếu
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
93
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
FROM danh_sách_tên_bảng| tên_các_view
[WHERE biểu_thức_điều_kiện]
[GROUP BY danh_sách_tên_cột]
[HAVING biểu_thức_điều_kiện]
[ORDER BY danh_sách_côt [ASC|DESC]]
b. Các lệnh điều khiển
Cũng giống như một số ngôn ngữ lập trình khác, T-SQL cung cấp một số cấu trúc
điều khiển cơ bản cho phép thực thi một khối lệnh dựa trên kết quả của một phép so
sánh.
BEGIN … END
BEGIN .. END được dùng để nhóm các lệnh đơn thành một khối lệnh. BEGIN ..
END được sử dụng trong bất kỳ một cấu trúc điều khiển nào khi cần thực thi một khối
lệnh hoặc nhiều hơn hai lệnh SQL.
Cú pháp:
BEGIN
{ sql_statement | statement_block
}
END
PRINT
Dùng để in thông tin ra màn hình kết quả của câu lệnh SQL.
Cú pháp:
PRINT 'any ASCII text' | @local_variable
| @@FUNCTION | string_expr
Ví dụ:
PRINT 'Hello!'
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
94
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
PRINT N'Chào bạn'
PRINT @@VERSION
IF … ELSE
Là một cấu trúc điều khiển cho phép thực thi một hoặc nhiều phát biểu tùy thuộc
vào một điều kiện nào đó.
Cú pháp:
IF condition
{statements}
[ ELSE [Condition 1]
{statements}]
Trong đó:
 Statements: Một lệnh đơn hoặc một khối lệnh SQL
 Condition: là một biểu thức logic, có giá trị True hoặc False. Tùy thuộc vào
condition, một trong hai khối lệnh sẽ được thực thi.
Ví dụ: Kiểm tra xem trong bảng SP có thông tin bán hàng của S1 hay không. Nếu
có thì in ra các dòng thông tin chi tiết.
if (select count(*) from sp where s#='S1')>0
begin
print N'Thống kê các lần bán hàng của S1'
select * from sp where s#='S1'
end
else
print N'Không tìm thấy thông tin bán hàng của S1'
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
95
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Biểu thức CASE.
Biểu thức CASE là một biểu thức điều kiện được áp dụng bên trong một phát biểu
khác. Case trả về các giá trị khác nhau tuỳ thuộc vào điều kiện hoặc một điều khiển nào
đó.
Dạng 1:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[ELSE else_result_expression]
END
Dạng 2:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[ELSE else_result_expression]
END
Ví dụ 1: Cho 2 số a và b, so sánh 2 số đó, số nào lớn hơn số nào?
DECLARE @a As int, @b As int,
@ketqua as nvarchar(30)
SET @a=3
SET @b=5
SET @ketqua = CASE
WHEN @a<@b THEN N'A nhỏ hơn B'
-- When chỉ dùng trong case
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
96
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
WHEN @a<@b THEN N'A lớn hơn B' ELSE
N'A bằng B'
END -- END của CASE
PRINT @ketqua
Ví dụ 2: So sánh giá trung bình các mặt hàng của HTC với các mặt hàng của HP.
declare
@gia_htc as int, @gia_hp as int,
@ketqua as nvarchar(30)
select @gia_htc=avg(price) from p
where pname like 'HTC%'
select @gia_hp = avg(price) from p
where pname like 'HP%'
set
@ketqua = case
when @gia_htc < @gia_hp
then N'Giá của HTC nhỏ hơn HP'
when @gia_htc > @gia_hp
then N'Giá của HTC lớn hơn HP'
when @gia_htc = @gia_hp
then N'Giá của HTC bằng HP'
end
print @ketqua
Ví dụ 3: Đưa ra mã mặt hàng, tổng số lượng đã bán và đánh giá trong đó nếu tổng
số lượng đã bán lớn hơn 10 thì đánh giá là Bán tốt, nếu không thì bỏ trống.
select p#, TổngSL=sum(qty),
Ghichú = case
when sum(qty)>10 then N'Bán tốt'
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
97
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
else N' '
end
from sp group by p#
Cấu trúc WHILE
Là phát biểu điều khiển vòng lặp. Vòng lặp sẽ thực hiện cho đến khi biểu thức điều
kiện (Boolean_expression) trong While mang giá trị False. Biểu thức điều kiện có thể là
một câu SELECT.
Cú pháp:
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
Trong đó:
[ BREAK ] : Dùng để kết thúc vòng lặp khi gặp một trường hợp cụ thể nào đó.
[ CONTINUE ] : Quay lại đầu vòng lặp.
Ví dụ: Giảm giá liên tục các mặt hàng của HTC-VAIO xuống 5% cho đến khi giá
trung bình của các mặt hàng này không vượt quá 16 triệu.
while (select avg(price) from p
where pname like 'HTC-VAIO%')>16000000
update p set price = 0.95*price
where pname like 'HTC-VAIO%'
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
98
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
RETURN
RETURN [ integer_expression ]
Phát biểu Return dùng để thoát ra khỏi một đoạn lệnh hay thủ tục. Các phát biểu
sau Return sẽ không được biên dịch.
WAITFOR
Là một chỉ thị cho SQL Server tạm dừng một thời gian trước khi xử lý tiếp các
phát biểu sau đó.
WAITFOR { DELAY 'time' | TIME 'time' }
Trong đó:
 DEPLAY ‘Time’: Hệ thống tạm dừng trong khoảng thời gian ‘Time’.
 TIME ‘Time’: Hệ thống được tạm dừng đến thời gian ‘Time’ chỉ ra. ‘Time’:
được viết theo dạng hh:mm:ss, tối đa là 24 giờ.
Ví dụ:
WAITFOR
’02:10’
2.2.9 Thủ tục
 Tập hợp biên dịch các câu lệnh T-SQL được lưu trữ với một tên xác định
 Sử dụng để thực hiện các nhiệm vụ quản trị, hoặc áp dụng các luật giao dịch
phức tạp
 Có hai loại thủ tục lưu trữ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
99
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Thủ tục lưu hệ thống đề cập đến phương pháp quản trị dữ liệu và cập
nhật thông tin vào các bảng (thường bắt đầu bằng sp_).
 Thủ tục lưu trữ do người dùng định nghĩa.
2.2.9.1 Thủ tục hệ thống
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
100
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ về hệ thống thủ tục lưu trữ hệ thống:
2.2.9.2 Thủ tục người dùng
- Tạo thủ tục bằng lệnh Create proceduce
CREATE PROC[EDURE] <tên thủ tục> (<DSách tham số>)
[ WITH RECOMPILE|ENCRYPTION
|RECOMPILE, ENCRYPTION]
AS DECLARE <biến cục bộ>
<Các câu lệnh của thủ tục>
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
101
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ:
Create Proc test (@MaSV nchar(3))
As
Begin
Select * From SinhVien Where MaSV=@MaSV
End
-
Thực thi một Stored procedures
EXEC[UTE] <tên_thủ_tục> [DS_các_đối_số>]
Thứ tự của các đối số được truyền cho thủ tục có thể không cần phải tuân theo thứ
tự của các tham số như khi định nghĩa thủ tục nếu tất cả các đối số được viết dưới dạng
@<tên_tham_số> = <giá_trị>
Ví dụ:
-
Exec test '0989999999'
Hiệu chỉnh một stored procedures
ALTER PROCEDURE tên_thủ_tục (DS_tham_số)]
[WITH RECOMPILE|ENCRYPTION| RECOMPILE,ENCRYPTION]
AS
<Các_câu_lệnh_của_thủ_tục>
Xóa một stored procedures
DROP PROCEDURE <tên_thủ_tục >
Ví dụ: Tạo thủ tục in ra tổng trị giá của một mã hóa đơn
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
102
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Create proc in_trigia(@msohd nchar(3))
As
Declare @mtongtg decimal
Begin
Select @mtongtg=sum(SP.gia * CTHD.sl)
From SP,CTHD
Where SP.masp=CTHD.masp and CTHD.sohd = @msohd
Print 'Tong tri gia cua hoa don ' + @msohd + 'la: '+
cast(@mtongtg as nvarchar(15))
End
2.2.10. Hàm
Khái niệm:
Cũng giống như thủ tục, hàm gồm một tập hợp các phát biểu T-SQL được lưu trữ
dưới một tên và được gọi thực thi như một đơn vị độc lập.
SQL Server hỗ trợ hai dạng hàm: built-in function và user-defined funtion. Buil-in
functions là những hàm được định nghĩa sẵn trong T-SQL và không thể hiệu chỉnh.
User-defined function (UDF) là những hàm do người dùng tự định nghĩa để đáp ứng
một mục tiêu nào đó.
Các hàm built-in được chia thành 3 nhóm
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
103
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Hàm
Mô tả
Rowset Function
Trả lại một đối tượng có thể sử dụng như bảng SQL
Aggregate Function
Hàm thao tác trên một tập giá trị và trả về một giá trị đơn
(hàm gộp)
Ranking Function
Trả lại một tập hợp các dòng được sắp xếp
Scalar Function
Trả lại một giá trị vô hướng. Hàm Scalar Function được
sử dụng trong biểu thức SQL
Các hàm user-defined cũng được chia thành 3 nhóm là Scalar-Value function là
hàm trả về một giá trị vô hướng; Inline Table- Value function là hàm trả về một table
dựa trên một câu lệnh SQL duy nhất và Multistatement Table - Value function là hàm
trả về một table dựa trên nhiều câu lệnh SQL.
2.2.10.1. Các hàm hệ thống
Nhóm hàm làm việc với dữ liệu kiểu số
Hàm
ABS ( m )
Đối số
m = biểu thức số
POWER ( m, n ) m = biểu thức số, n = số mũ
ROUND (m, n) m = biểu thức số, n = số chữ
số thập phân, ngầm định là 0
SQRT ( n )
n = biểu thức dương
EXP ( n )
n = biểu thức số
LN ( n )
n>0
LOG ( n2, n1 )
n1,n2>0
CEILING ( n )
n = biểu thức số
FLOOR ( n )
n = biểu thức số
SIGN ( n )
n = biểu thức số
Giá trị trả về
Giá trị tuyệt đối của m
m mũ n
làm tròn m với n chữ số thập
phân
căn bậc hai của n
e raised to the power n
logarit tự nhiên của n
logarit cơ số n2 của n1
Số nguyên nhỏ nhất lớn hơn
hoặc bằng n
Số nguyên lớn nhất không
vượt quá n
-1 nếu n < 0, 0 nếu n = 0, bằng
1 nếu n > 0
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
104
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Nhóm hàm làm việc với chuỗi ký tự
Đối số
Hàm
LOWER ( s )
s = chuỗi
Giá trị trả về
Tất cả các ký tự chuyển thành
chữ thường
UPPER ( s )
s = chuỗi
Viết hoa chuỗi
CONCAT ( s1, s2 )
s1, s2 = chuỗi
Nối chuỗi s2 vào chuỗi s1
LTRIM ( s )
s = chuỗi
Trả lại chuỗi s sau khi xóa các
dấu cách thừa ở đầu chuỗi
RTRIM (s)
s = chuỗi
Trả lại chuỗi s sau khi xóa các
dấu cách thừa ở cuối chuỗi
s = chuỗi
Trích từ s ra một chuỗi con
n=số ký tự
gồm n ký tự đầu chuỗi s
s = chuỗi
Trích từ s ra một chuỗi con
n=số ký tự
gồm n ký tự cuối chuỗi s
REPLACE ( s,
s = chuỗi
Thay tất cả các chuỗi
search_s , replace_s] )
search_s = chuỗi tìm kiếm
search_s tìm được trong s
replace_s = chuỗi thay thế
bằng chuỗi replace_s
s1,s2=chuỗi
Xóa n ký tự khỏi chuỗi s1, bắt
m=vị trí bắt đầu
đầu từ vị trí m và chèn chuỗi
n=số ký tự
s2 vào đó
s = chuỗi
Trả về một chuỗi con của s có
m = vị trí bắt đầu
độ dài n ký tự, bắt đầu từ ký
n = số ký tự
tự ở vị trí m
LEN ( s )
s = chuỗi
Trả về số ký tự của chuỗi s
REPLICATE(s,n)
s=chuỗi, n: biểu thức
Lặp lại chuỗi s n lần
LEFT(s,n)
RIGHT(s,n)
STUFF ( s1, m, n, s2 )
SUBSTRING (s,m,n)
nguyên
REVERSE(s)
s = chuỗi
Đảo ngược chuỗi s
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
105
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Nhóm hàm làm việc với kiểu dữ liệu ngày tháng, thời gian
Đối số
Hàm
Giá trị trả về
Ngày giờ hiện tại của hệ thống
GETDATE()
d= biểu thức ngày
DAY(d)
Trả về một giá trị từ 1-31
tương ứng với ngày của d
d= biểu thức ngày
MONTH(d)
Trả về một giá trị từ 1-12
tương ứng với tháng của d
d= biểu thức ngày
YEAR(d)
Trả về một số có bốn chữ số
tương ứng với năm của d
DATEPART(dp, d)
d=biểu thức ngày
Hàm trả về một thành phần
dp= tham số xác định phần trong biểu thức ngày
trả về trong biểu thức ngày
DATEADD(dp,n,d) d=biểu thức ngày, n= biểu
Trả về một thời điểm mới bằng
thức nguyên, dp= tham số
cách cộng thêm n vào phần
xác định phần trả về trong
được chỉ định (dp) trong biểu
biểu thức ngày
thức ngày
DATEDIFF(dp,d1,
d1,d2=biểu thức ngày
Trả về khoảng cách giữa hai
d2)
dp= tham số xác định phần thời điểm d1 và d2 (tính theo
trả về trong biểu thức ngày tham số dp)
Trong đó tham số xác định phần trả về của biểu thức ngày được biểu diễn như sau:
Viết tắt
Giá trị
Viết tắt
Giá trị
Hour
hh
0-23
Week
wk
1-53
Minute
Mi
0-59
Weekday
dw
1-7
Second
Ss
0-59
Month
mm
1-12
Millisecond
Ms
0-999
Quarter
qq
1-4
Day of year
Dy
1-366
Year
yy
1753-9999
Day
Dd
1-31
dp
dp
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
106
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2.2.10.2. Hàm do người dùng định nghĩa
Hàm trả về 1 giá trị đơn ( Scalar-Value Function)
- Cú pháp:
Create Function <Tên hàm>(<Danh sách tham số>)
Returns <Kiểu dữ liệu>
As
Begin
Return <Kiểu dữ liệu>
End
- Ví dụ:
Create Function test(@MaSV nchar(20))
Returns int
As
Begin
Declare @soSV int
Select @soSV=Count(*) from SinhVien Where MaSV=@MaSV
Return @soSV
End
Hàm trả về 1 bảng đơn giản dựa trên câu lệnh Select (Inline Table Value
Function):
- Cú pháp:
Create Function <Tên hàm> (<Danh sách tham số>)
Returns table
as return (<Câu lệnh select>)
- Ví dụ:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
107
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Create Function test3(@MaSV nchar(20))
Returns Table
As Return
Select * from SinhVien Where MaSV=@MaSV
Hàm trả về 1 bảng phức tạp (Multistatement Table Value Function)
- Cú pháp:
Create Function <Tên hàm>(<Danh sách tham số>)
Returns @<Tên bảng trả về> Table (<Định nghĩa bảng>)
As
Begin
Return
End
- Ví dụ:
Create Function test3(@MaSV nchar(20))
Returns @table table(id int, password nvarchar(20))
As
Begin
Insert into @table select id from SinhVien Where MaSV=@MaSV
Return
End
-LỜI GỌI HÀM:
1. PRINT dbo.<tên hàm> (danh sách tham số)
2. select * from dbo.<tên hàm> (danh sách tham số)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
108
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
BÀI TẬP CHƯƠNG II
CÂU HỎI TRẮC NGHIỆM
Câu 1: SQL là tên viết tắt của:
a. Structured Query Language
b. Structure Query Language
c. Stored Queation Language
d. Standard Question Layer
Câu 2: Phát biểu nào sau đây đúng với Phép chọn?
a. Phép chọn dùng để trích rút các bộ giá trị thỏa mãn điều kiện chọn từ một
quan hệ.
b. Phép chọn dùng để trích rút các cột ứng với các thuộc tính nào đó của một
quan hệ.
c. Phép chọn là phép kết nối bằng tại thuộc tính cùng tên của 2 quan hệ.
d. Phép chọn là phép nối các bộ giá trị của hai quan hệ đã cho.
Câu 3: Phát biểu nào sau đây đúng với Phép chiếu?
a. Phép chiếu dùng để trích rút các bộ giá trị thỏa mãn điều kiện chọn từ một
quan hệ.
b. Phép chiếu dùng để trích rút các cột ứng với các thuộc tính nào đó của một
quan hệ.
c. Phép chiếu là phép kết nối bằng tại thuộc tính cùng tên của 2 quan hệ.
d. Phép chiếu là phép nối các bộ giá trị của hai quan hệ đã cho.
Câu 4: Phép chiếu còn được gọi là phép gì?
a. Phép tìm kiếm
b. Phép tìm kiếm theo chiều ngang
c. Phép tìm kiếm theo chiều dọc
d. Tất cả các đáp án trên
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
109
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 5: Phép chọn còn được gọi là phép gì?
a. Phép tìm kiếm
b. Phép tìm kiếm theo chiều ngang
c. Phép tìm kiếm theo chiều dọc
d. Tất cả các đáp án trên
Câu 6: Điều kiện trong mệnh đề Having tác động trên…?
a. Toàn bộ các bản ghi của bảng
b. Các bản ghi của một nhóm
c. Một bản ghi
d. Cả đáp án a và b
Câu 7: Các thuộc tính trong mệnh đề Group by phải được xuất hiện trong mệnh đề… ?
a. Select
b. From
c. Where
d. Having
Câu 8: Chọn cú pháp đúng cho lệnh tạo View trong SQL?
a. Create view [(DS cột)]
AS mệnh_đề Select
b. Create view Tên_View [(DS cột)]
mệnh_đề Select
c. Create view Tên_View [(DS cột)]
AS mệnh_đề Select
d. Create view Tên_View [(DS cột)]
AS mệnh_đề Where
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
110
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 9: Chọn cú pháp đúng cho lệnh INSERT trong SQL?
a. INSERT INTO (<danh sách các thuộc tính>)
VALUES (<danh sách các giá trị>)
b. INSERT INTO <tên bảng>(<danh sách các thuộc tính>)
c. INSERT INTO <tên bảng>(<danh sách các thuộc tính>)
VALUE (<danh sách các giá trị>)
d. INSERT INTO <tên bảng>(<danh sách các thuộc tính>)
VALUES (<danh sách các giá trị>)
Câu 10: Chọn cú pháp đúng cho lệnh DELETE trong SQL?
a. DELETE FROM [WHERE <điều kiện>]
b. DELETE FROM <tên bảng> [WHERE <điều kiện>]
c. DELETE <tên bảng> [WHERE <điều kiện>]
d. Cả đáp án a và c
Câu 11: Khi thực hiện lệnh DELETE trong SQL thì số lượng dòng bị xóa phụ thuộc
vào điều kiện ở mệnh đề nào?
a. DELETE
b. FROM
c. WHERE
d. Cả đáp án a và c
Câu 12: Khi thực hiện lệnh DELETE trong SQL nếu không chỉ định điều kiện ở mệnh
đề WHERE thì… ?
a. Tất cả các bản ghi trong bảng sẽ bị xóa
b. Một số bản ghi trong bảng sẽ bị xóa
c. Một bản ghi trong bảng sẽ bị xóa
d. Không bản ghi nào trong bảng bị xóa
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
111
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 13: Chọn cú pháp đúng cho lệnh UPDATE trong SQL?
a. UPDATE
SET <tên thuộc tính>=<giá trị mới>,
<tên thuộc tính>=<giá trị mới>,
…
[WHERE <điều kiện>]
b. UPDATE <tên bảng>
<tên thuộc tính>=<giá trị mới>,
<tên thuộc tính>=<giá trị mới>,
…
[WHERE <điều kiện>]
c. UPDATE <tên bảng>
[WHERE <điều kiện>]
d. UPDATE <tên bảng>
SET <tên thuộc tính>=<giá trị mới>,
<tên thuộc tính>=<giá trị mới>,
…
[WHERE <điều kiện>]
Câu 14: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho danh sách các mặt hàng được sản xuất tại Nam Định?
A. δNoiSX = ‘Nam Định’(MH)
B. δNoiSX = ‘NĐ’(MH)
C. δNơi sản xuất = ‘Nam Định’(MH)
D. δ (MH) NoiSX = ‘Nam Định’
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
112
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 15: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho biết tên các NCC đã cung cấp ít nhất 1 mặt hàng?
A.ΠTenNCC (NCC * NM)
B. ΠTenNCC (NCC ^ NM)
C. ΠTenNCC (NCC)
D. ΠTenNCC (NCC * MH)
Câu 16: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho biết tổng số các NCC đã bán được hàng?
A. Count(NM, MaNCC)
B. Count(MaNCC)
C. Sum(NM, MaNCC)
D. Count(MH, MaNCC)
Câu 17: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Tìm số lượng cung cấp lớn nhất của mặt hàng P1?
A. Max(δMaMH = ‘P1’(NM), Soluong)
B. Max(δMaMH = ‘P1’(NM))
C. Max(δMaMH = ‘P1’(Soluong))
D. Max(δMaMH = ‘P1’(MH), Soluong)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
113
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 18: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho thông tin về các mặt hàng màu đỏ được sản xuất ở Hà Nội?
A. δ(Mau = ‘Đỏ’)^(NoiSX = ‘HN’)(MH)
B. δ(Màu = ‘Đỏ’)^(NoiSX = ‘HN’)(MH)
C. δ(Màu = ‘Đỏ’)^(Nơi sản xuất = ‘HN’)(MH)
D. δ(Mau = ‘Đỏ’)(NoiSX = ‘HN’)(MH)
Câu 19: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho biết tên các mặt hàng đã được bán với số lượng lớn hơn 10?
A. ΠTenMH(δsoluong > 10(MH*NM))
B. ΠTenMH(δsoluong > 10(MH^NM))
C. ΠTenMH(δsoluong > 10(NM))
D. ΠTenMH(δsoluong > 10(MH))
Câu 20: Cho CSDL sau:
NCC (MaNCC, TenNCC, Tinhtrang, NoiSX)
MH (MaMH, TenMH, Mau, Khoiluong, NoiSx)
NM (MaNCC, MaMH, Soluong)
Cho danh sách các nhà cung cấp tại TP Hồ Chí Minh?
A. δNoisx = ‘TPHCM’(NCC)
B. δNơi sản xuất = ‘TPHCM’(NCC)
C. δNoisx = TPHCM(NCC)
D. δNoisx = ‘TPHCM’(MH)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
114
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 21: Cho cơ sở dữ liệu sau:NCC(MaNCC, TenNCC,Tinhtrang, NoiSX);
MH(MaMH, TenMH, Mau, Khoiluong, NoiSX); NM(MaNCC, MaMH, Soluong).
Đưa ra mã những nhà cung cấp đã cung cấp mặt hàng có mã SM02 với số lượng >2?
A. Select MaNCC from NM where MaMH=’SM02’ and Soluong>2
B. Select * from NM where MaMH=’SM02’ and Soluong>2
C. Select MaNCC from MH where MaMH=’SM02’ and Soluong>2
D. Select MaMH from NM where MaMH=02 and Soluong>2
Câu 22: Cho cơ sở dữ liệu sau:NCC(MaNCC, TenNCC,Tinhtrang, NoiSX);
MH(MaMH, TenMH, Mau, Khoiluong, NoiSX); NM(MaNCC, MaMH, Soluong).
Đưa ra tên các nhà cung cấp đã cung cấp mặt hàng có mã SM02?
A. Select TenNCC from NCC, NM Where ( NCC.MaNCC= NM.NCC)
B. Select NCC.TenNCC from NCC, NM
Where ( NCC.MaNCC=
NM.MaNCC) and (NM.MaMH=’SM02’)
C. Select TenNCC from NCC, NM Where ( NCC.MaNCC= MH.MaNCC)
D. Select TenNCC from NCC, MH Where ( NCC.MaNCC= MH.MaNCC) and
(MH.MaMH=’SM02’)
Câu 23: Cho cơ sở dữ liệu sau:NCC(MaNCC, TenNCC,Tinhtrang, NoiSX);
MH(MaMH, TenMH, Mau, Khoiluong, NoiSX); NM(MaNCC, MaMH, Soluong).
Đưa ra tên các mặt hàng bắt đầu bằng chữ “S” sản xuất tại Hà Nội?
A. Select * from MH
B. Select * from MH where TenMH=’S
C. Select TenMH from MH where TenMH like ‘S%’ and NoiSX=’Hà Nội’
D. Select TenMH from MH where TenMH like ‘S_’ and NoiSX = ‘Hà Nội’
Câu 24: Cho cơ sở dữ liệu sau:NCC(MaNCC, TenNCC,Tinhtrang, NoiSX);
MH(MaMH, TenMH, Mau, Khoiluong, NoiSX); NM(MaNCC, MaMH, Soluong).
Cho biết tổng số các nhà cung cấp đã cung cấp mặt hàng SM02?
A. Select count(*) from NM where MaMH=’MS 02’
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
115
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
B. Select count(*) from NM where MaMH=’SM02’
C. Select count(*) from NM where MaNCC like ‘SM02’
D. Select Sum(MaNCC) from NM where MaMH = ‘SM02’
Câu 25: Cho cơ sở dữ liệu sau:NCC(MaNCC, TenNCC,Tinhtrang, NoiSX);
MH(MaMH, TenMH, Mau, Khoiluong, NoiSX); NM(MaNCC, MaMH, Soluong).
Đưa ra mã những nhà cung cấp đã cung cấp mặt hàng có mã SM02 và sắp xếp theo thứ
tự giảm dần của mã NCC?
A. Select MaNCC from NCC where MaMH=’SM02%’
B. Select MaNCC from NM where MaMH= ‘SM02’ order by MaNCC
C. Select MaNCC from NCC where MaMH=’SM02_’
D. Select MaNCC from NM Where MaMH=’SM02’ order by MaNCC
DESC
BÀI TẬP - THỰC HÀNH
BÀI TẬP 1:
Cho cơ sở dữ liệu quản lý thông tin bán hàng của các đại lý gồm các quan hệ sau:
 S(S#, Sname, City, Status) - quan hệ cho biết thông tin về các đại lý gồm mã đại
lý, tên đại lý, địa chỉ đại lý, tình trạng vốn của đại lý (đvt: 1.000.000 VND).
 P(P#, Pname, Color, Weight, Price) - quan hệ cho biết thông tin về các mặt hàng
bao gồm mã mặt hàng, tên mặt hàng, màu sắc, trọng lượng, đơn giá.
 SP(S#, P#, Sdate, QTY) - quan hệ cho biết thông tin về các lần bán hàng của đại
lý bao gồm mã đại lý bán hàng, mã mặt hàng được bán, ngày bán, số lượng.
Câu 1: Hãy tạo các bảng dữ liệu trên
Dùng ĐSQH và SQL thực hiện các yêu cầu ở câu 2;
Dùng SQL thực hiện các yêu cầu ở câu 3,4,5,6,7:
Câu 2
- Hiển thị thông tin về các đại lý
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
116
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Hiển thị thông tin về các mặt hàng
- Đưa ra mã các đại lý đã bán ít nhất một mặt hàng
- Đưa ra mã các mặt hàng đã được bán ít nhất một lần
Câu 3:
- Xem thông tin các đại lý ở Nam Định
- Xem thông tin các đại lý có số vốn trên 5 tỷ
- Xem thông tin về các lần bán mặt hàng mã P1
- Xem thông tin về các lần bán hàng của đại lý mã S1
- Xem thông tin về các lần bán hàng của S1 trong ngày hôm nay
- Xem thông tin bán hàng của mặt hàng P1 trong quý 4 năm 2011
- Tìm tên và địa chỉ của các đại lý có mã gồm 3 ký tự và bắt đầu bằng S1
Câu 4:
- Cho biết số lần bán và tổng số lượng bán của mặt hàng mã P1
- Tìm số lượng bán lớn nhất của mặt hàng mã P2
- Cho biết có bao nhiêu đại lý đã bán được ít nhất một mặt hàng
- Cho biết có bao nhiêu mặt hàng đã được bán ít nhất một lần
Câu 5:
- Cho biết mã các đại lý đã bán ít nhất 2 mặt hàng
- Cho biết mã các mặt hàng đã được bán ít nhất bởi hai đại lý
- Đưa ra tên đại lý và số các mặt hàng đại lý này đã bán được
- Đưa ra tên từng mặt hàng và tổng số lượng bán của mặt hàng này
- Thống kê số lần bán hàng theo từng ngày
- Tìm mã các đại lý đã bán mặt hàng P1 và đưa ra theo thứ tự tăng dần
Câu 6:
- Đưa ra màn hình thông tin chi tiết về các lần bán hàng bao gồm mã đại lý bán hàng,
mã mặt hàng được bán, tên mặt hàng, đơn giá, số lượng, thành tiền (với thành tiền bằng
đơn giá nhân số lượng)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
117
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Tìm tên những mặt hàng đã được bán ít nhất một lần
- Tìm tên những đại lý đã bán hàng ít nhất một lần
- Đưa ra thông tin về mặt hàng có giá lớn nhất
- Đưa ra thông tin về đại lý có số vốn lớn nhất
- Tìm thông tin về những đại lý bán mặt hàng P1 và không bán mặt hàng P2
- Tìm thông tin về những đại lý đã bán cả hai mặt hàng P1 và P2
- Tìm thông tin về những lần bán mặt hàng có màu đỏ
Câu 7:
- Giảm giá 1% cho những mặt hàng có đơn giá trên 5 triệu
- Xóa thông tin bán hàng của mặt hàng P1
- Tạo View có tên CT chứa thông tin bán hàng chi tiết gồm mã đại lý, tên đại lý, ngày
bán, mã mặt hàng, tên mặt hàng, đơn giá, số lượng, thành tiền
- Thống kê số tiền bán hàng theo từng ngày
- Thống kê số tiền bán hàng của từng đại lý
- Tìm mã đại lý có số tiền bán hàng lớn nhất
BÀI TẬP 2:
Cho cơ sở dữ liệu gồm các bảng sau:
SV (MSV, HOTEN, GT, NS, QUE)
MH (MAMON, TENMON, DVHT)
HT (MSV, MAMON, DIEM)
Trong đó:
MSV: Mã sinh viên HOTEN: Tên sinh viên GT: Giới tính
NS: Ngày sinh QUE: Quê quán MAMON: Mã số môn học
DIEM: Điểm thi DVHT: Đơn vị học trình TENMON: Tên môn học
Câu 1: Tạo các bảng trên
Câu 2: Dùng ngôn ngữ SQL biểu diễn các câu hỏi sau:
1) Cho biết mã số, họ tên và ngày sinh của những sinh viên lớp K9A
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
118
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
2) Cho biết danh sách gồm mã số, tên môn và điểm thi tất cả các môn của sinh viên mã
số ‘BK10000’. Sắp xếp theo chiều tăng của mã môn.
3) Cho biết mã số, tên môn và điểm thi ở những môn mà sinh viên ‘BK10000’ phải thi
lại (DIEM<5)
4) Cho biết mã số và họ tên của những sinh viên đã thi ít nhất là một trong 3 môn Cơ sở
dữ liệu, Cấu trúc dữ liệu, Mạng máy tính.
5) Cho biết số lượng sinh viên nữ của lớp K9A
6) Cho biết số lượng sinh viên phải thi lại môn Cơ sở dữ liệu
7) Cho biết tổng số đơn vị học trình của những môn mà sinh viên ‘BK1000’ phải thi lại
8) Cho biết điểm cao nhất môn m1 mà các sinh viên đạt được
9) Cho biết mã số, tên và lớp của sinh viên đạt điểm cao nhất môn Cơ sở dữ liệu
10)Đối với mỗi môn, cho biết tên môn và số sinh viên phải thi lại môn đó
11) Đối với mỗi sinh viên, cho biết tổng số đơn vị học trình của những môn mà sinh
viên này phải thi lại
12)Hãy tổng kết số môn phải thi lại, tổng số đơn vị học trình của những môn phải thi lại
của mỗi sinh viên. Cần đưa ra kết quả là danh sách sinh viên có tổng số đơn vị học trình
của những môn thi lại lớn hơn 10.
BÀI TẬP 3:
Câu 1:
- Tạo cơ sở dữ liệu có tên QL_Diem với các bảng có tên và cấu trúc như sau: (các
khóa chính được in đậm và gạch chân)
SinhVien
(MaSV int, TenSV nvarchar(50), NamSinh smallint, GioiTinh
nvarchar (5))
DiemThi
(MaSV int ràng buộc khóa ngoại tham chiếu đến MaSV trong bảng
SinhVien, TenMT nvarchar (50), SoTC int, NgayThi datetime,
Diem decimal ràng buộc check điều kiện điểm thi lớn hơn 0 và nhỏ
hơn 10)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
119
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Xây dựng thủ tục có tên BangDiem với tham số truyền vào là tên môn thi (@mt).
Thủ tục hiển thị bảng điểm chi tiết của môn đó bao gồm mã sinh viên, tên sinh
viên, năm sinh, giới tính, điểm thi. (Sử dụng CSDL QL_Diem)
Câu 2:
- Tạo cơ sở dữ liệu có tên QL_NV với các bảng có tên và cấu trúc như sau: (các khóa
chính được in đậm và gạch chân)
NhanVien
(MaNV int, TenNV nvarchar(50), NamSinh smallint, GioiTinh
nvarchar (5))
KetQua
(MaNV int ràng buộc khóa ngoại tham chiếu đến MaNV trong bảng
NhanVien, TenSP nvarchar (50), DonGia decimal, SoLuong int, ThanhTien
decimal)
- Xây dựng thủ tục có tên ThongKeSP với tham số truyền vào là tên sản phẩm (@sp).
Thủ tục hiển thị kết quả làm việc của các nhân viên đối với sản phẩm đó bao gồm
mã nhân viên, tên nhân viên, số lượng, thành tiền và hiển thị dòng thống kê tổng số
lượng đã đạt được của sản phẩm đó. (Sử dụng CSDL QL_NV)
Câu 3:
- Tạo cơ sở dữ liệu có tên KQ_ThiNN quản lý thông tin về kỳ thi cấp chứng chỉ ngoại
ngữ với các bảng có tên và cấu trúc như sau: (các khóa chính được in đậm và gạch chân)
DanhSach
(MaSV int, TenSV nvarchar(50), NamSinh smallint, GioiTinh
nvarchar (5), Diemthi decimal , DanhGia nvarchar (20))
KQ_Thi
(MaSV int ràng buộc khóa ngoại tham chiếu đến MaSV trong bảng
DanhSach, NgayThi datetime, Diem decimal ràng buộc check điều kiện điểm thi
lớn hơn 0 và nhỏ hơn 10)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
120
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Xây dựng thủ tục có tên BangDiemNN với tham số truyền vào là ngày thi (@nt) .
Thủ tục hiển thị bảng điểm chi tiết của các thí sinh tham dự kỳ thi trong ngày đó
gồm các thông tin về mã sinh viên, tên sinh viên, ngày thi, điểm và dòng thống kê
số lượng sinh viên tham dự kỳ thi. (Sử dụng CSDL KQ_ThiNN)
Câu 4:
- Tạo cơ sở dữ liệu có tên QL_BH với các bảng có tên và cấu trúc như sau: (các khóa
chính được in đậm và gạch chân)
SanPham (MaSP int, TenSP nvarchar(50), NhaCC nvarchar(30), DonGia
decimal)
BanHang (SoHD int, NgayBan datetime, MaSP int ràng buộc khóa ngoại
tham chiếu đến MaSP trong bảng SanPham, NguoiBan nvarchar(50), SoLuong
int, ThanhTien decimal)
-
Xây dựng thủ tục có tên ThongKeBHvới tham số truyền vào là ngày bán hàng(@nb)
. Thủ tục hiển thị kết quả bán hàng trong ngày đó. Thông tin đưa ra gồm các cột số
hóa đơn, tên người bán, mã sản phẩm, tên sản phẩm, đơn giá, số lượng, thành tiền
và dòng thống kê tổng số tiền đã bán được trong ngày đó. (Sử dụng CSDL QL_BH)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
121
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CHƯƠNG 3
LÝ THUYẾT THIẾT KẾ CƠ SỞ DỮ LIỆU
Mục tiêu: Chương này sẽ trình bày những khái niệm cơ bản nhất về lý thuyết cơ sở dữ
liệu quan hệ do E.F Codd đề xuất, đó là các khái niệm về quan hệ, về khóa của lược đồ
quan hệ. Những khái niệm này có vai trò quan trọng trong việc thiết kế và cài đặt các
hệ cơ sở dữ liệu quan hệ và các hệ quản trị cơ sở dữ liệu.
Nội dung của chương bao gồm các phần:
Phụ thuộc hàm
Bao đóng
Phủ tối thiểu
Khóa của lược đồ quan hệ
Phép tách – kết nối
Các dạng chuẩn của lược đồ quan hệ
Các phương pháp chuẩn hóa lược đồ quan hệ
3.1. Phụ thuộc hàm
3.1.1 Định nghĩa phụ thuộc hàm
Cho một quan hệ R xác định trên tập thuộc tính U, kí hiệu là R(U). X, Y là các
tập con của U, ta nói rằng X xác định Y hay Y phụ thuộc hàm vào X, kí hiệu X  Y
nếu trên quan hệ R ta có mọi bộ giá trị t1, t2 bất kỳ mà giá trị của tập thuộc tính X trên
bộ t1 (kí hiệu t1[X]) bằng giá trị của tập thuộc tính X trên bộ t2 (kí hiệu là t2[X]) thì t1[Y])
= t2[Y]).
Phụ thuộc hàm ký hiệu là FD. Cần chú ý rằng chỉ xét các phụ thuộc hàm thỏa
mãn cho mọi quan hệ trên lược đồ tương ứng của nó. Không thể xem xét một phụ thuộc
hàm thỏa mãn một quan hệ r đặc biệt ( ví dụ quan hệ rỗng) của lược đồ R rồi sau đó qui
nạp rằng phụ thuộc hàm đó là thỏa trên R.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
122
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
S (S# STATUS
SP (S#
P#
CITY)
P (P#
PNAME
COLOR
WEIGHT
CITY)
QTY)
Trong quan hệ S của hàng cung ứng, mỗi một trong số các thuộc tính SNAME,
STATUS, CITY đều phụ thuộc hàm vào thuộc tính S#. Mỗi giá trị S# tồn tại vừa đúng
một giá trị tương ứng đối với từng thuộc tính SNAME, STATUS, CITY.
Khi đó có thể viết:
S# → SNAME, S# → STATUS và S# → CITY.
3.1.2 Phụ thuộc hàm đầy đủ và không đầy đủ
 Phụ thuộc hàm (FD) đầy đủ: Một FD X Y là một phụ thuộc hàm đầy đủ nếu
loại bỏ bất kỳ thuộc tính A nào ra khỏi X thì FD không còn đúng nữa
 Phụ thuộc hàm không đ
 ầy đủ (FD bộ phận): Một FD X Y là phụ thuộc hàm bộ phận nếu có thể bỏ đi
1 thuộc tính A  X ra khỏi X mà FD vẫn còn đúng.
3.1.3 Hệ tiên đề Amstrong
Gọi F là tập tất cả các phụ thuộc hàm đối với lược đồ quan hệ R(U) và X→Y là
một phụ thuộc hàm, X,Y⊆ U. Nói rằng X→Y được suy diễn logic từ F nếu mối quán
hệ r trên R(U) đều thỏa các phụ thuộc hàm của F thì cũng thỏa X→Y. Chẳng hạn F=
{A→B,B→C} thì A→C suy ra từ F. Gọi F+ là bao đóng (closure) của F, tức là tập tất
cả các phụ thuộc hàm được suy diễn logic từ F. nếu F= F+ thì F là họ đầy đủ( full
family) của các phụ thuộc hàm.
Để có thể xác định khóa của một lược đồ quan hệ và các suy diễn logic giữa các
phụ thuộc hàm cần thiết phải tính được F+ từ F. Do đó đòi hỏi phải có các hệ tiên đề.
Tập các quy tắc của hệ tiên đề được Armstrong (1974) đưa ra, thường được gọi là hệ
tiên đề Armstrong.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
123
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Gọi R(U) là lược đồ quan hệ với U= {A1, ….., An} là tập các thuộc tính. X,Y, Z,
W ⊆ U. Hệ tiên đề Armstrong bao gồm :
 A1(phản xạ): nếu Y⊆X thì X→Y
 A2(tăng trưởng):nếu Z⊆U và X→Y thì XZ→YZ trong đó ký hiệu XZ là
tập hợp của 2 tập X và Z thay cho ký hiệu X∪Z.
 A3(bắc cầu): nếu X→Y và Y→Z thì X→Z
Ví dụ : AB→C, C→A
Cần chứng minh rằng BC→ABC
Thật vậy từ :
1. C→A ( giả thiết)
2. BC→AB ( luật tăng trưởng (1) thêm B)
3. AB→C ( giả thiết)
4. AB→ABC ( tăng trưởng (3) thêm AB)
5. BC→ABC ( bắc cầu từ (2) và (4))
Định lý :
Hệ tiên đề Armstrong là đúng. Có nghĩa là F là tập các phụ thuộc hàm đúng
trên quan hệ r. nếu X→Y là một phụ thuộc hàm được suy diễn từ F nhờ hệ tiên đề
Armstrong thì X→Y là đúng trên quan hệ r.
Chứng minh :
Lần lượt kiểm tra tính đúng đắn của ba tiên đề A1, A2, A3
A1 : Tiên đề A1 rõ ràng là đúng vì không thể có hai bộ bằng nhau trên X mà lại không
bằng nhau trên tập con của nó.
A2 : Giả sử rằng quan hệ r thỏa mãn X→Y. Tồn tại hai bột, u ∈r sao cho
t[XZ] = u[ZX] mà t[YZ] ≠ u[YZ]. Vì rằng t[Z] = u[Z] nên để có t[YZ] ≠ u[YZ] thì
t[Y] ≠ u[Y]. Nhưng vì t[X] = u[X] nên t[Y] ≠ u[Y] là trái với giả thiết X→Y. Vì vậy
A2 đúng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
124
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
A3 : Cho X→Y và Y→Z đúng trên quan hệ r. Giả sử tồn tại hai bộ t, u∈r sao cho t[Y]
= u[Y]. Nhưng lại có t[Y] = u[Y] và t[Z] ≠ u[Z] là trái với giả thiết Y→Z. Do vậy t[Z]
= u[Z]. Suy ra X→Z đúng trên quan hệ r.
Từ hệ tiên đề Armstrong suy ra một số luật sau đây :
Định lý :
a. Luật hợp: nếu X→Y và X→Z thì X→YZ
b. Luật tựa bắc cầu: nếu X→Y và WY→X thì XW→Z
c. Luật tách: nếu X→Y và Z⊆Y thì X→Z
Chứng minh:
a. Từ X→Y dùng luật tăng trưởng thêm X có X→XY, dùng luật bắc cầu ta có
điều phải chứng minh.
b. Từ X→Y, dùng luật tăng trưởng, thêm W có WX→WY. Dùng luật bắc cầu cho
WX→WY và Wy→Z suy ra WX→Z.
c. Vì Z⊆Y nên Y→Z theo luật phản xạ. Dùng luật bắc cầu cho X→Y và Y→Z có
X→Z.
3.1.4. Bao đóng
3.1.4.1 Bao đóng của tập các phụ thuộc hàm
Định nghĩa: Cho quan hệ R xác định trên tập thuộc tính U, F là tập các phụ thuộc hàm.
Tập hợp tất cả các phụ thuộc hàm được suy diễn logic từ tập F được gọi là bao đóng của
F và kí hiệu là F+
Ví dụ: Cho quan hệ R, U ={ A, B, C, D, E, I }
F= {AI, ACD, BC, DE}
Ta có: 1. BC (gt)
2. AB  AC (tăng trưởng thêm A vào (1))
3. AC D (gt)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
125
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
4. AB  D (bắc cầu (2) và (3))
CM tương tự có: AC E, AB E
Vậy: F+ ={AI, ACD, BC, DE, ABD, ACE, ABE}
3.1.4.2. Bao đóng của tập các thuộc tính
Định nghĩa: Cho quan hệ R xác định trên tập các thuộc tính U, gọi F là tập các
phụ thuộc hàm trên tập U, X  U, X+ là bao đóng của X trên tập F được định nghĩa
như sau:
X+ = { X  A / X  A  F+ }
3.1.4.3. Thuật toán tìm bao đóng
 Input: U, F; X, Y, Z  U
 Output: X+
 Phương pháp: Tính liên tiếp tập các thuộc tính X0, X1, … theo quy tắc:
 B1: X0 = X
 Bi: Xi+1 = Xi  A
Nếu tồn tại phụ thuộc hàm Y  Z thuộc F+ mà A  Z, Y  Xi
Do X  U mà U hữu hạn nên i hữu hạn, khi đó X+ = Xi+1
Ví dụ: Cho quan hệ R xác định trên U,
với U = { A, B, C, D, E, I};
F= {AI, ACD, BC, DE}
Tìm (AC)+
Giải:
1. X0 = AC
2. X1= ACDI (vì A  I, AC  D)
3. X2= ACDIE (vì D  E)
Vậy: (AC)+ = ACDEI
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
126
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
3.1.5. Phủ tối thiểu
Phủ của tập các phụ thuộc hàm :
Gọi F và G là các tập của các phụ thuộc hàm. Nói rằng F, G là tương đương nếu
F+ = G+. Nếu F, G là tương đương đôi khi còn nói F phủ G (và G phủ F). Dễ dàng
kiểm tra liệu F và G có tương đương với nhau hay không. Phương pháp kiểm tra:
Lấy mỗi phụ thuộc hàm Y→Z thuộc F, kiểm tra xem liệu Y→Z có thuộc G+
không ? Dùng thuật toán 3.1 để tính Y+ và kiểm tra liệu Z⊆ Y+ hay không ?
Nếu tồn tại một phụ thuộc hàm Y→Z thuộc F mà không phụ thuộc G+ thì chắc
chắn F+ ≠ G+. Nếu mỗi phụ thuộc hàm thuộc F cũng thuộc G+ thì mỗi phụ thuộc hàm
V→W thuộc F+ cũng thuộc G+.
Để kiểm tra mỗi phụ thuộc G là thuộc F+ quá trình làm hoàn toàn tương tự. Do
đó F và G là tương đương khi và chỉ khi mỗi phụ thuộc hàm thuộc F là thuộc G+ và
mỗi phụ thuộc hàm thuộc G thuộc F+.
Định lý :
Mỗi tập các phụ thuộc hàm F đều được phủ bằng tập các phụ thuộc hàm G mà
vế phải các phụ thuộc hàm đó bao gồm không quá một thuộc tính.
Chứng minh :
Gọi G là tập các phụ thuộc hàm X→A sao cho với X→Y thuộc F thì A∈Y.
TừX→Y suy ra X→A.
Do vậy G⊆ F+
Ngược lại, có F⊆ G+ vì nếu Y= A1…An thì X→Y được suy ra từ :
X→A1, ….., X→An nhờ luật hợp.
Để có thể phục vụ quá trình thiết kế lược đồ cơ sở dữ liêu, sau đây sẽ đưa ra
một số khái niệm:
Gọi tập các phụ thuộc hàm F là tối thiểu nếu:
a. Mỗi vế phải của một phụ thuộc hàm thuộc F chỉ có một thuộc tính.
b. Không tồn tại một phụ thuộc hàm X→A thuộc F mà
F+ = (F- {X→A}) +.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
127
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c. Không tồn tại một phụ thuộc hàm X→A thuộc F và một tập hợp con
Z của X mà F+= (F- {X→A}∪ {Z→A}) +
Thực vậy, điều kiện b đảm bảo cho tập F không có một phụ thuộc hàm nào mà
dư thừa, điều kiện C đảm bảo không có thuộc tính nao tham gia phía trái của phụ thuộc
hàm là dư thừa. Vế phải của phụ thuộc hàm ở điều kiện a chỉ có một thuộc tính đảm
bảo chắc chắn không có một thuộc tính nào trên vế phải là dư thừa.
Định lý
Mỗi tập phụ thuộc hàm F đều tương đương với một tập F’ tối thiểu.
Chứng minh:
Giả sử rằng không vế phải nào của các phụ thuộc hàm của F có nhiều hơn một
thuộc tính. Để kiểm tra điều kiện b, xét (X→Y) ∈F.
Nếu (F- {X→Y}) + =F+ thì loại bỏ X→Y khỏi F.
Chú ý rằng các phụ thuộc hàm được sắp theo một thứ tự khác nhau thì sẽ cho
ra kết quả khác nhau.
Ví dụ:
Cho tập F gồm:
A→B, A→C, B→C, B→A, C→A
Có thể loại bỏ F : B→A và A→C hoặc loại bỏ B→C nhưng không thể đồng
thời loại bỏ cả ba phụ thuộc hàm.
Như vậy điều kiện b được thỏa. Cần kiểm tra điều kiện c cho tập các phụ thuộc
còn lại của F. Ở đây cũng cần lưu ý tới thứ tự các thuộc tính xuất hiện bên vế trái của
các phụ thuộc hàm.
Loại bỏ các thuộc tính vế trái của các phụ thuộc hàm sao cho tập các thuộc tính
vẫn là tương đương. Quá trình tiếp tục cho đến khi không thể loại bỏ phụ thuộc hàm
nào được nữa. Như vậy tập các phụ thuộc hàm còn lại của F sẽ tạo nên F’ và thỏa ba
điều kiện của một tập tối thiểu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
128
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Tìm phủ tối thiểu
 B1: Tách các thuộc tính ở vế phải của mỗi phụ thuộc hàm thành nguyên tử (Vế
phải của mỗi phụ thuộc hàm chỉ có 1 thuộc tính)
 B2: Loại bỏ phụ thuộc hàm dư thừa
Giả sử: Xét phụ thuộc hàm XY
 Tính X+ trên tập F’ (F’ đã loại bỏ FD XY )
Nếu X+ Y thì loại XY khỏi tập F
 B3: Loại bỏ các thuộc tính dư thừa ở vế trái
Giả sử: Xét phụ thuộc hàm XYZ (Loại X hoặc loai Y?)
Xét XZ tính X+ (trên tập F) nếu Y X+  Loại Y
Xét YZ tính Y+ (trên tập F) nếu X Y+  Loại X
Vậy, tập các phụ thuộc hàm còn lại là phủ tối thiểu cần tìm.
Ví dụ: Cho F = {X → Z, XY → WP, XY → ZWQ, XZ → R}.
Xác định tập phủ tối thiểu từ tập F?
Giải:
B1. Tách các vế phải của các phụ thuộc hàm sao cho chỉ chứa duy nhất
một thuộc tính:
F = {X→Z, XY→W, XY →P, XY→Z, XY →W, XY → Q, XZ → R}.
B2. Loại bỏ các phụ thuộc dư thừa: xét lần lượt từng phụ thuộc hàm
+ Xét X→Z. Tính X+ trên F-{X→Z}
Có X+ =X ko chứa Z.
+ Xét XY →W (vì trong tập phụ thuộc hàm F có 2 phụ thuộc hàm này nên loại
đi)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
129
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 F={X→Z, XY→W, XY →P, XY→Z, XY → Q, XZ → R}
+ Xét XY→Z vì (XY)+=XYZWPQ (Tính (XY)+ trên F-{ XY→Z})
Ta thấy Z ⊂ (XY)+ vì vậy loại XY→Z
 F: = {X→Z, XY →W, XY →P, XY → Q, XZ → R}
B3. Loại bỏ các thuộc tính vế trái dư thừa: xét tất cả các phụ thuộc hàm mà
VT có từ 2 thuộc tính trở lên:
+ Xét XY→W:
X→W có X+=XZR không chứa Y nên Y ko dư thừa
Y→W có Y+=Y không chứa X nên X ko dư thừa
Tương tự xét: XZ → R
Có X+=XZR chứa Z nên Z dư thừa.
Ta có phủ tối thiểu:
G: = {X→Z, XY →W, XY →P, XY → Q, X → R}.
3.1.6. Khóa
 Thuật toán tìm tất cả các khóa
 Tìm tập thuộc tính nguồn (TN): Chứa tất cả các thuộc tính xuất hiện ở vế trái
(VT) và không xuất hiện ở vế phải (VP) của các phụ thuộc hàm và những thuộc
tính không xuất hiện ở VT lẫn VP của các phụ thuộc hàm.
 Tập thuộc tính trung gian (TG): Chứa tất cả những thuộc tính xuất hiện ở cả VT
lẫn VP của các phụ thuộc hàm.
 Thuật toán:
 B1: Tạo tập TN và TG
 B2: Nếu TG =  thì lược đồ quan hệ chỉ có một khóa K = TN  Kết
thúc,
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
130
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ngược lại, chuyển sang B3
 B3: Tìm tất cả các tập con Xi của tập trung gian TG
 B4: Tìm tất cả các siêu khoá Si bằng cách với  Xi :
Nếu (TN  Xi )+ = Tập thuộc tính của R
Thì Si = TN  Xi
 B5: Tìm khóa bằng cách loại bỏ các siêu khóa không tối thiểu
Si, Sj  S, nếu Si  Sj thì Loại Sj ra khỏi tập siêu khoá S; Si còn lại chính
là tập khóa cần tìm.
Ví dụ: Cho lược đồ quan hệ R(C,S,Z) và tập phụ thuộc hàm như sau:
F = {CS → Z, Z → C}
Tìm tất cả các khóa của R?
Ta có: TN={S}, TG={C,Z}
Xi
(Xi TN)
(Xi TN)+

S
S
C
CS
Z
CZ
Siêu khóa
Khóa
CSZ
CS
CS
SZ
CSZ
SZ
SZ
CSZ
CSZ
CSZ
3.2. Phép tách - kết nối
3.2.1 Khái niệm
Phép tách một lược đồ quan hệ R = {𝐴1 … … , 𝐴𝑛 } là việc thay thế lược đồ quan
hệ R bằng các cặp lược đồ {𝑅1 ……,𝑅𝑘 } trong đó 𝑅𝑖 ⊆ R, i = l, …., k và
R = 𝑅1 ∪ 𝑅2 ∪…..∪ 𝑅𝑘 .
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
131
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ở đây không đòi hỏi các lược đồ 𝑅𝑖 phải là phân biệt. Mục tiêu của phép tách
chủ yếu là loại bỏ các dị thường dữ liệu.
3.2.2. Phép tách-kết nối tự nhiên
Cho lược đồ quan hệ người cung cấp: S(SNAME, ADD, PRO, PRICE)
và giả sử có các phụ thuộc hàm :
SNAME → ADD SNAME → PRO, SNAME → PRICE
Lược đồ S có thể thay thế bằng hai lược đồ khác là S1(SNAME, ADD) và S2
(SNAME, PRO, PRICE)
Như vậy rõ ràng ở S1 mỗi nhà cung cấp chỉ cần một lần lưu địa chỉ tương ứng
của họ chứ không phải lặp đi lặp lại như ở lược đồ S.
Vấn đề đặt ra là liệu một cơ sở dữ liệu r thỏa mãn trên S, khi tách ra S1 và S2
có phù hợp không?
Hai hình chiếu r[𝑆1 ] và r[𝑆2 ] có còn phù hợp k? Hai hình chiếu r[𝑆1 ] và có còn
giữ được cùng thông tin với r? Nói cách khác, nếu kết nối 2 hình chiếu r[𝑆1 ] và r[𝑆2 ]
thành 1 quan hệ mới, ví dụ s = r[𝑆1 ] * r[𝑆2 ] liệu r # s hay r=s? để nghiên cứu các điều
kiện cho kết quả phép kết nối tự nhiên nêu trên là duy nhất và bằng quan hệ ban đầu,
cần thiết phải nghiên cứu 3.2.3 Phép tách - kết nối không mất mát thông tin.
3.2.3 Phép tách - kết nối không mất mát thông tin.
a. Kết nối không mất thông tin
Nếu R là một lược đồ quan hệ được tách thành các lược đồ con 𝑅1 ,𝑅2 …𝑅𝑘 và D
là tập các phụ thuộc dữ liệu, nói rằng phép tách là tách - kết nối không mất mát thông
tin (lossless Join decomposition) đối với D nếu mối quan hệ r trên R thỏa D:
r = Π𝑅1 (𝑟) ∗ Π𝑅2 (𝑟) ∗ … .∗ Π𝑅𝑘 (𝑟)
tức là r được tạo nên từ phép nối tự nhiên của các hình chiếu của nó trên các 𝑅𝑖 ,
i= 1…,k.
Sau đây xem xét một số tính chất của kết nối không mất mát thông tin.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
132
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Tập các lược đồ 𝜌 = (R1, …., Rk) được thay thế cho lược đồ R. Gọi m𝜌 là ánh
xạ xác định nhờ m𝜌(𝑟) = Π𝑅𝑖 (𝑟) có nghĩa là m𝜌(𝑟) là kết nói của phép chiếu của r trên
các lược đồ con trong 𝜌. Điều kiện để kết nói không mất mát thông tin đối với D được
biểu diễn như sau:
Với mọi r thỏa D, r= m𝜌(𝑟)
Định lý:
Gọi R là lược đồ quan hệ 𝜌 = (R1, …., R2) là phép tách của R, r là quan hệ trên
R và ri = Π𝑅𝑖 (𝑟) thì:
a. r⊆ m𝜌(𝑟)
b. Nếu s= m𝜌(𝑟) thì Π𝑅𝑖 (𝑟) = 𝑟𝑖
c. m𝜌(m𝜌(𝑟)) = m𝜌(𝑟)
b. Kiểm tra phép kết nối không làm mất mát thông tin
Liệu một phép tách có phép kết nối không mất mát thông tin hay không đối với
tập các phụ thuộc hàm được kiểm tra qua thuật toán sau đây:
Thuật toán: Kiểm tra kết nối không mất mát thông tin
Input : Lược đồ quan hệ R, tập các phụ thuộc hàm F và phép tách.
Output : Kết luận phép tách có phải là không mất mát thông tin ?
Phương pháp :
Thiết lập một bảng với n cột và k hàng, cột thứ j ứng với thuộc tính Aj, hàng thứ
i ứng với lược đồ Ri. Tại hàng j và cột j điền ký hiêu aj nếu Aj ∈Ri, nếu không điền ký
hiệu bij.
Bây giờ xem xét đến các phụ thuộc hàm từ F áp dụng cho bảng vừa thiết lập
được. Giả sử xem xét (X→Y) ∈F. Xét các hàng nếu có giá trị bằng nhau trên thuộc tính
X thì làm bằng các giá trị của chúng trên Y. Chú ý khi làm bằng giá trị trên Y, nếu một
trong hai giá trị là aj thì ưu tiên làm bằng ký hiệu là aj. Ngoài ra làm bằng chúng bằng
một trong các ký hiệu bij.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
133
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Tiếp tục áp dụng thuật toán cho các phụ thuộc hàm, kể cả các phụ thuộc hàm đã
áp dụng cho tới khi không còn áp dụng được nữa.
Xem xét lại bảng kết quả: Nếu xuất hiện một hàng gồm các ký hiệu a1…an thì
phép kết nối không làm mất thông tin. Trường hợp ngược lại là kết nối mất mát thông
tin (lossy join).
Ví dụ: Cho R(U) , U = {A, B, C, D}.
F = {A  C, B C, CD  B, CD}
Phép tách  = {R1(AB), R2(BD), R3(ABC), R4(BCD)}
Kiểm tra phép tách  có mất mát thông tin?
Giải:
Lập một bảng gồm:
-
4 cột (A, B, C, D)
-
4 hàng (R1, R2, R3, R4)
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
134
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Áp dụng phụ thuộc hàm : A  C
Áp dụng phụ thuộc hàm: B C
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
135
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Áp dụng phụ thuộc hàm: CD
Kết luận: Dòng (hàng) thứ 3 xuất hiện toàn giá trị a (a1,a2,a3,a4) nên phép tách không
bị mất mát thông tin.
Định lý
Nếu 𝜌= (R1, R2) là một phép tách của R và F là tập hợp phụ thuộc hàm thì 𝜌 là
phép tách không mất mát thông tin đối với F khi và chỉ khi :
R1∩ R2 -→ R1- R2 hoặc R1∩ R2 -→ R2 – R1
Chú ý rằng các phụ thuộc hàm nêu trên không nhất thiết phải thuộc tập F ban đầu
nhưng là đủ để thuộc F+.
3.3. Chuẩn hóa lược đồ quan hệ
3.3.1. Các dạng chuẩn
3.3.1.1. Dạng chuẩn thứ nhất (1NF – First Normal Form)
Một lược đồ quan hệ R được gọi là ở dạng chuẩn một nếu và chỉ nếu toàn bộ các
miền có mặt trong R đều chỉ chứa các giá trị nguyên tố.
Từ định nghĩa này cho ta thấy rằng bất kỳ quan hệ chuẩn hóa nào cũng ở dạng
1NF và tất nhiên điều đó đúng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
136
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ: SV (MSSV,Hoten, Ngsinh, ngoaingu)
Quan hệ SV chưa ở dạng chuẩn 1 vì có thuộc tính ngoại ngữ là đa trị.
3.3.1.2. Dạng chuẩn thứ 2 (2NF)
Lược đồ quan hệ R ở dạng chuẩn thứ hai nếu nó ở dạng 1NF và nếu mỗi thuộc
tính không khóa của R là phụ thuộc hàm đầy đủ vào khóa chính.
Ví dụ:
Cho quan hệ R (A, B, C, D, E)
F= {AB CD, CE}
 Ở dạng chuẩn 2
3.3.1.3.
Dạng chuẩn thứ 3 (3NF)
Cho lược đồ quan hệ R(U), X là tập con các thuộc tính X⊆ U, A là một thuộc
tính thuộc U. A được gọi là phụ thuộc bắc cầu vào X trên R nếu tồn tại một tập con Y
của R sao cho X→Y, Y→A nhưng Y ↛ X (không xác định hàm) với A ∉ XY.
Ví dụ 1: Cho lược đồ quan hệ R(SAIP) với các phụ thuộc hàm SI→P và S→A.
R là không ở dạng 3NF, thậm chí không ở dạng 2NF.
Giả sử X= SI, Y= S, A là thuộc tính không khóa vì chỉ có 1 khóa là SI. Vì X→Y và
Y→A nhưng lại có Y→X tức là S→SI là không thỏa. Chú ý rằng trong trường hợp này
X→Y và Y→A không chỉ thỏa trên R mà là những phụ thuộc đã cho. Điều đó là đủ để
nói rằng X→Y, Y→A suy ra từ tập các phụ thuộc hàm.
Như vậy A là phụ thuộc bắc cầu vào khóa chính SI.
Ví dụ 2: Cho phụ lược đồ quan hệ R(CSZ) với các phụ thuộc hàm CS→Z, Z→C.
Trong lược đồ này mọi thuộc tính đều là thuộc tính khóa. Do vậy R là ở dạng 3NF.
Ví dụ 3: Cho R (A, B, C, D, E, F)
F= {AB CD, ABE, E F}
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
137
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Quan hệ R không ở dạng chuẩn 3
Vì thuộc tính F phụ thuộc bắc cầu vào khóa AB
Định nghĩa : Lược đồ quan hệ R là ở dạng chuẩn thứ ba (3NF) nếu nó là 2NF và mỗi
thuộc tính không khóa của R là không phụ thuộc hàm bắc cầu vào khóa chính.
3.3.1.4.
Dạng chuẩn Boye- Codd (BCNF)
Lược đồ quan hệ R với tập các phụ thuộc hàm được gọi là ở dạng chuẩn BCNF
nếu X→A thỏa trên R, A∈X thì X là một khóa của R.
Ví dụ 1: Trong ví dụ R(CSZ) nêu trên, rõ ràng R không ở BCNF mà là ở 3NF vì
rằng Z→C nhưng không phải là khóa của R.
Ví dụ 2: cho R (A1,A2,A3,A4,A5)
Với các phụ thuộc hàm:
A1,A2 → A3,A4,A5
A4 → A2
 R vi phạm dạng chuẩn BCNF
Vì có thuộc tính khóa (A2) phụ thuộc hàm vào thuộc tính không khóa (A4).
Từ ví dụ này thấy rằng một lược đồ quan hệ có thể có 3NF nhưng không phải
BCNF. Do đó mỗi lược đồ quan hệ ở BCNF là 3NF. Để khẳng định điều đó có định lý
sau đây.
Định lý : Nếu một lược đồ quan hệ R với tập phụ thuộc hàm F là ở BCNF thì nó là ở
3NF.
Chứng minh:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
138
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Giả sử rằng lược đồ quan hệ R là ở dạng BCNF nhưng không ở dạng 3NF. Như
vậy sẽ tồn tại một phụ thuộc hàm bắc cầu hoặc phụ thuộc hàm thành phần X→ Y→A
trong đó X là khóa của R, A ∉X hoặc A ∉Y. Và Y→X ∉ F+.
Do vậy Y không phải là một khóa của R. Nhưng A∉ Y, do đó Y→A là một phụ
thuộc hàm cho nên vi phạm điều kiện BCNF (tức là Y phải là khóa).
3.3.2. Chuẩn hóa qua phép tách không làm mất mát thông tin
a. Phép tách lược đồ quan hệ thành BCNF
Định lý :
a. Giả sử R là một lược đồ quan hệ với tập phụ thuộc hàm F.
Gọi 𝛒 =(R1, ….., Rk) là một phép tách không mất mát thông tin của R đối với
F. Gọi Fi là hình chiếu của F trên Ri, i=1…k, tức là tập của (X→Y) ∈ F + sao
cho X⊆ Ri và Y⊆ Ri.
Gọi 𝛅 =(S1,……,Sm) là phép tách không mất mát thông tin của Ri đối với
Fi . Khi đó phép tách của R thành (R1,….., Ri-1, S1….. ,Sm, Ri+1….., Rk) đối với F
là không mất mát thông tin.
b. Giả sử R, F và 𝝆 như ở mục (a).
Gọi t= (R1,….., Rk, Rk+1, ……, Rn) là một phép tách của R thành tập các lược
đồ bao gồm cả 𝛒 thì t cũng là phép tách không làm mất mát thông tin đối với F.
Thuật toán: Tách một lược đồ quan hệ thành BCNF
Input : Lược đồ quan hệ R và tập phụ thuộc hàm F
Output : Phép tách của R không làm mất mát thông tin sao cho mỗi lược đồ quan
hệ trong phép tách đều ở dạng BCNF đối với phép chiếu của F trên lược đồ đó.
Phương pháp:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
139
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Cấu trúc phép tạch 𝝆 trên R theo phương pháp lặp liên tiếp. Tại mỗi bước phép
tách 𝝆 là đảm bảo không mất mát thông tin đối với F.
Bước đầu: 𝝆 chỉ bao gồm R
Các bước tiếp theo : Nếu S là một lược đồ thuôc 𝝆 , S chưa ở dạng BCNF, chọn
X→A là phụ thuộc hàm thỏa trên S, trong đó X không chứa khóa của S, A∉ X. Rõ ràng
cần phải có một số thuộc tính khác của S vừa không phải A, vừa không thuộc X hoặc
nếu không thuộc X thì phải chứa một khóa của S. Thay thế S trong 𝝆 bởi S1và S2 với
S1=XA, S2= S - A
Theo định lý, phép tách S thành S1 và S2 là không mất mát thông tin đối với
tập phụ thuộc hàm trên S vì rằng S1 ∩ S2 = X, X→S1 –S2 = A.
Theo bổ đề phần (a) được thay S bằng S1 và S2 là không mất mát thông tin.
Mỗi lược đồ đều có số thuộc tính ít hơn S.
Quá trình tiếp tụ cho tới khi tất cả các lược đồ đều ở BCNF. Chú ý rằng tại mọi
thời điểm 𝝆 luôn đảm bảo không mất mát thông tin, vì rằng 𝝆 ban đầu là R, mà bước
thay đổi 𝝆 đều bảo toàn tính chất đó.
Ví dụ:
Cho lược đồ R(CTHRSG), trong đó C- giáo trình, T- Thầy giáo, H- giờ, RPhòng học, S- Sinh viên, G- Lớp. Tập các phụ thuộc hàm:
C→T : Mỗi giáo trình có một thầy dạy
HR→C : Chỉ một môn học (giáo trình) ở một phòng tại một thời điểm
HT→R : Tại mỗi thời điểm mỗi thầy chỉ có thể dạy ở một phòng
CS→G : Mỗi sin viên chỉ ở một lớp theo học mỗi giáo trình
HS→R : Mỗi sinh viên chỉ có thể ở một phòng tại mỗi thời điểm
Giải :
Khóa của R là HS
Tách lược đồ R thành lược đồ BCNF:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
140
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Xét CS→G cho R. Vi phạm điều kiện BCNF vì CS không chưa khóa. Do vậy, dùng
thuật toán 3.3 để tách R thành R1(CSG) và R2(CTHRS). Bước tiếp theo cần tính F+ và
chiếu xuống R1 và R2, sau đó kiểm tra các lược đồ đã ở BCNF hay chưa. Có thể biểu
diễn quá trình tách qua sơ đồ sau :
C→ T
HR→ C
TH→ R
R (CTHRSG)
Khóa = HS
R1 (CSG)
Khóa = CS
CS→G
HS→R
R2 (CTHRS)
Khóa = SH
C→T
TH→R
HHS→C
HS→R
R→C
CSG
R21 (CT)
Khóa = C
R22 (CHRS)
Khóa = HS
C→T
CH→R
HR→C
C→T
R221 (CHR)
Khóa = CH, HR
CH→R, HR→C
R222 (CHS)
KhóaCH→R,
= SH
HR→C
HS→C
R→C
b. Phép tách lược đồ quan hệ thành 3NF
Tương tự như phép tách không mất mát thông tin một lược đồ quan hệ thành
BCNF, ở đây sẽ đưa ra thuật toán tách thành 3NF.
Thuật toán: Tách một lược đồ thành 3NF
Input : Lược đồ quan hệ R, tập các phụ thuộc hàm F, để không làm mất tín tổng
quát, ta giả sử rằng nó là phủ tối thiểu.
Output : Phép tách không làm mất mát thông tin trên R bảo toàn các phụ thuộc
hàm sao cho mỗi lược đồ con đều ở 3NF.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
141
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Phương pháp :
i. Loại bỏ tất cả các thuộc tính của R nếu các thuộc tính đó không liên quan đến
một phụ thuộc hàm nào của F, hoặc vế trái, hoặc vế phải.
ii. Nếu có một phụ thuộc hàm nào của F mà liên quan tới tất cả các thuộc tính của
R thì kết quả ra chính là R.
iii. Ngoài ra, phép tách 𝝆 đưa ra các lược đồ gồm các thuộc tính XA cho phụ thuộc
hàm X→A thuộc F, nếu X→A1,….., X→An thuộc tính F thì thay thế tập thuộc
tính XA1A2….An cho XAi (1≤ i≤ n). Quá trình tiếp tục.
Chú ý : Tại mỗi bước kiểm tra lược đồ R, nếu mỗi thuộc tính không khóa không phụ
thuộc bắc cầu vào khóa chính, khi đó R sẽ ở dạng 3NF, ngược lại cần áp dụng bước (iii)
để tách tiếp.
Ví dụ: Cho lược đồ quan hệ R(CTHRSG) với tập phụ thuộc hàm tối thiểu C→F, HR→C,
HT→R, CS→ G và HS→R dùng thuật toán trên cho tập lược đồ ở dạng chuẩn 3NF:
R1(CT), R2(CHR), R3(RHT), R4(CGS) và R5(HRS).
3.3.3. Chuẩn hóa nhờ phép tổng hợp
Trong phần 3.3.2 đã xem xét quá trình chuẩn hóa một lược đồ quan hệ thành 3NF
nhờ phép tách không mất mát thông tin đối với các phụ thuộc hàm. Trong phần này sẽ
trình bày quá trình chuẩn hóa nhờ phép tổng hợp. Điều khác nhau cơ bản ở phép tổng
hợp so với phép tách là thông tin ban đầu gồm tập các thuộc tính (hiểu theo nghĩa người
sử dụng chỉ biết tên các thuộc tính) và tập các phụ thuộc hàm, còn trong phương pháp
tách, thông tin ban đầu là một lược đồ rất cụ thể. Qua phép tổng hợp (hoặc phép tách)
kết quả đều cho một tập các lược đồ đều ở 3NF.
Để làm rõ thuật toán, ở đây nhắc lại khái niệm phụ thuộc hàm dư thừa và phủ
không dưa thừa. Một FD X→Y là dư thừa trong tập phụ thuộc hàm F nếu F+ = (F-
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
142
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
{X→Y}) +. G là phủ không dư thừa của F nếu G+ = F+ và G không chứa một FD nào dư
thừa.
Một thuộc tính thuộc vế trái một phụ thuộc hàm được gọi là dư thừa nếu loại bỏ
nó không làm thay đổi bao đóng của tập các phụ thuộc hàm, tức là:
Nếu X→Y∈F, A∈X, A là dư thừa nếu (X→A)→Y ∈F+.
Định lý :
Gọi F là tập các phụ thuộc hàm trên R. (X→Y)∈F. Nếu (V→W)∈F+ và X→Y
được sử dụng cho một dẫn xuất nào đó của h từ F nhờ hệ tiên đề Armstrong thì
(V→X)∈F+.
Thuật toán. Tổng hợp thành các lược đồ ở 3NF
Input : Tập các thuộc tính An, tập các phụ thuộc hàm F
Output : Tập các lược đồ quan hệ ở 3NF
Phương pháp:
Tìm phủ không dư thừa H của F (tức là loại bỏ các phụ thuộc hàm dư thừa).
Phân chia tập phụ thuộc hàm H thành các nhóm sao cho các phụ thuộc hàm
trong một nhóm là có cùng vế trái.
Mỗi cặp nhóm, ví dụ H1 và H2 có vế trái là X và Y mà tồn tại song ảnh (X↔Y)(∈
H+ (tức là X→Y và Y→X) thì hòa hai nhóm đó lại với nhau. Với mỗi A∈Y (nếu X→A)∈
H thì loại bỏ nó khỏi H. Tương tự cho mỗi (Y→B)∈H với B∈X.
Ở mỗi nhóm đạt được cấu trúc các lược đồ quan hệ bao gồm tất cả các thuộc tính
xuất hiện trong nhóm đó. Mỗi tập thuộc tính xuất hiện ở vế trái của một FD trong nhóm
là một khóa của lược đồ quan hệ. Các khóa tìm được gọi là khóa được tổng hợp. Mỗi
tập được cấu trúc như trên là một lược đồ quan hệ.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
143
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Định lý
Lược đồ quan hệ R(A1,…., An) được tổng hợp qua thuật toán 5.5 từ tập các phụ
thuộc hàm F ở 3NF. Nói cách khác không một thuộc tính không khóa nào của R là phụ
thuộc hàm bắc cầu vào một khóa chính của R.
Chứng minh:
Giả sử Ai là một thuộc tính không khóa và phụ thuộc bắc cầu vào khóa K của R
(K không nhất thiết là khóa được tổng hợp nên). Tức là tồn tại một tập hợp X⊆
{A1,…., An} sao cho K→X, X→K và X→Ai là thuộc F+ và Ai∈X.
Cần chứng minh rằng R là ở 3NF, nói cách khác, giả thiết tồn tại phụ thuộc bắc
cầu nêu trên là vô lý.
Trước hết xem xét Ai là phụ thuộc bắc cầu vào một khóa được tổng hợp của R.
Gọi Z là khóa của R xuất hiện ở vế trái của một phụ thuộc hàm. (Z→X)(∈ F+ vì Z là
khóa của R. Hơn nữa X→Z vì nếu X→Z thì X→Z và Z→K suy ra Z→K trái với giả
thiết là X→K nếu trên. Do vậy Z→X, X→Z và X→Ai là một phụ thuộc hàm bắc cầu.
Gọi H là một phủ không dư thừa của F được tính toán qua thuật toán. Cần chỉ ra
rằng Z→Ai xuất hiện trong H là dư thừa. Để đạt được điều đó chỉ cần đủ để chỉ ra rằng
Z→X và X→Ai không thể cả hai phụ thuộc hàm được suy dẫn từ H - {Z→Ai}.
Thật vậy, vì chỉ những phụ thuộc hàm được sử dụng trong quá trình tổng hợp của
R có dạng Z→Ai, cho nên Z→Xk là thỏa trong H với mọi Xk∈X. Vì Ai ∉ X nên (Z→Xk)∈
H- {Z(∈ Ai}. Giả sử tồn tại một cách suy dẫn cho X→Ai trong H mà có dùng tới Z→Ai.
Theo bổ đề suy ra X→Z. Nhưng như trên đã chỉ rõ X→Z. Như vậy X→Ai là có thể suy
dẫn được mà không cần sử dụng tới Z→Ai.
Vì Z→X và X→Ai, cả hai phụ thuộc hàm đều được suy dẫn từ H- {Z- Ai} cho
nên Z→Ai là dư thừa trong H.
Điều đó là trái với giả thiết H là không dư thừa. Có nghĩa là giả thiết có tồn tại
phụ thuộc bắc cầu là không đúng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
144
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Ví dụ 1: Cho quan hệ R(A,B,C,D,E,G,H) và tập phụ thuộc hàm:
F={AD,ABDE, CEG, EH}
a. Tìm khóa
b. Xác định dạng chuẩn
Giải:
a. Tìm khóa
TN={A,B,C}
TG={E}
Xi
Xi U TN
(Xi U TN)+
Siêu Khóa
Khóa
Ø
ABC
ABCDEGH
ABC
ABC
E
ABCE
ABCDEGH
ABCE
b. Xác định dạng chuẩn
Có AD theo giả thiết. Vậy R không ở dạng chuẩn 2 vì thuộc tính không khóa D
phụ thuộc vào bộ phận khóa.
Ví dụ 2: Cho R(XYZWPQR),
F = {X → Z, XY → WP, XY → ZWQ, XZ → R}.
Chuẩn hóa R về 3NF.
Giải:
B1: Khóa={XY}
B2: Xác định tập phủ tối thiểu từ tập F?
Ta có phủ tối thiểu: G: = {X→Z, XY →W, XY →P, XY → Q, X → R}.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
145
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
B3: Tách thành các lược đồ con:
R1(XZR), R2(XYWPQ) → R1(XZR), R2(XYWPQ)
R1, R2 đã ở 3NF
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
146
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
BÀI TẬP CHƯƠNG III
CÂU HỎI TRẮC NGHIỆM
Câu 1: Cho R(U) là sơ đồ quan hệ với U là tập thuộc tính. X, Y, Z là tập con của U.
Tính chất tăng trưởng (augmentation) của hệ tiên đề Amstrong: với điều kiện nào
dưới đây thì YZ là phụ thuộc hàm vào XZ?
a. X là phụ thuộc hàm vào Y
b. Y là phụ thuộc hàm vào X
c. X không là phụ thuộc hàm vào Y
d. Y không là phụ thuộc hàm vào X
Câu 2: Cho R(U) là sơ đồ quan hệ với U là tập thuộc tính. X, Y, Z là tập con của U.
Tính chất: nếu Y là phụ thuộc hàm vào X, Z là phụ thuộc hàm vào Y thì Z là phụ
thuộc vào X là tính chất gì trong hệ tiên đề Amstrong?
a. Phản xạ (reflexivity)
b. Tăng trưởng(augmentation)
c. Bắc cầu(transitivity)
d. Kết hợp(associativity)
Câu 3: Cho R(U) là sơ đồ quan hệ với U là tập thuộc tính. X, Y, Z là tập con của U.
Tính chất Phản xạ (reflexivity) của hệ tiên đề Amstrong: với điều kiện nào dưới
đây thì Y là phụ thuộc hàm vào X?
a. X là con của Y
b. Y là con của X
c. X không là con của Y
d. Y không là con của X
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
147
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 4: Một quan hệ có chứa một miền giá trị của một thuộc tính nào đó là không
nguyên tố được gọi là
a. Quan hệ chuẩn hóa
b. Quan hệ không chuẩn
c. Quan hệ chuẩn hóa loại 1
d. Quan hệ chuẩn hóa loại 2
Câu 5: Cho R(U) là sơ đồ quan hệ với U là tập thuộc tính. X, Y, Z là tập con của U.
Luật hợp: Nếu Y là phụ thuộc hàm vào X, Z là phụ thuộc hàm vào X thì :
a. Y là phụ thuộc hàm vào XZ
b. Z là phụ thuộc hàm vào XY
c. YZ là phụ thuộc hàm vào X
d. XZ là phụ thuộc hàm vào YZ
Câu 6: Cho R(U) là sơ đồ quan hệ với U là tập thuộc tính. X, Y, Z, W là tập con của U.
Luật tựa bắc cầu: Nếu Y là phụ thuộc hàm vào X, Z là phụ thuộc hàm vào WY thì :
a. XW là phụ thuộc hàm vào Z
b. Z là phụ thuộc hàm vào XW
c. XZ là phụ thuộc hàm vào W
d. W là phụ thuộc hàm vào XZ
Câu 7: B phụ thuộc hàm vào A (A->B) được suy dẫn logic từ F bằng cách:
a. Áp dụng các quy tắc tách/hợp
b. Áp dụng các quy tắc phản xạ
c. Áp dụng các quy tắc bắc cầu
d. Áp dụng hệ tiên đề Amstrong
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
148
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 8: Phát biểu nào đúng với khái niệm Phụ thuộc hàm?
a. Cho R(U). X, Y là các tập con của U, ta nói rằng X  Y nếu trên quan hệ R
có t1[X]) = t2[X]) thì t1[Y]) = t2[Y].
b. Cho R(U). X, Y là các tập con của U, ta nói rằng X  Y nếu trên quan hệ R
có t1[X]) = t2[X]) thì t1[Y])  t2[Y].
c. Cho R(U). X, Y là các tập con của U, ta nói rằng X  Y nếu trên quan hệ R
có t1[X])  t2[X]) thì t1[Y]) = t2[Y].
d. Tất cả các đáp án trên.
Câu 9: Chọn phát biểu đúng để tìm tập nguồn (TN)?
a. Tập TN chứa tất cả các thuộc tính xuất hiện ở vế trái (VT) và không xuất
hiện ở vế phải (VP) của các phụ thuộc hàm.
b. Tập TN chứa tất cả các thuộc tính xuất hiện ở vế trái (VT) và vế phải (VP)
của các phụ thuộc hàm.
c. Tập TN chứa tất cả các thuộc tính không xuất hiện ở VT lẫn VP của các phụ
thuộc hàm.
d. Cả đáp án a và c
Câu 10: Chọn phát biểu đúng để tìm tập trung gian (TG)?
a. Tập TG chứa tất cả những thuộc tính xuất hiện ở cả VT lẫn VP của các phụ
thuộc hàm.
b. Tập TG chứa tất cả những thuộc tính không xuất hiện ở cả VT lẫn VP của
các phụ thuộc hàm.
c. Tập TG chứa tất cả những thuộc tính xuất hiện ở VT của các phụ thuộc
hàm.
d. Tập TG chứa tất cả những thuộc tính xuất hiện ở VP của các phụ thuộc hàm.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
149
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 11: Chọn phát biểu đúng để tìm tập đích (TĐ)?
a. Tập TĐ chứa tất cả những thuộc tính xuất hiện ở VT của các phụ thuộc
hàm.
b. Tập TĐ chứa tất cả những thuộc tính xuất hiện ở VP và không xuất hiện ở
VT của các phụ thuộc hàm.
c. Tập TĐ chứa tất cả những thuộc tính không xuất hiện ở VP và không xuất
hiện ở VT của các phụ thuộc hàm.
d. Tập TĐ chứa tất cả những thuộc tính không xuất hiện ở VP và chỉ xuất hiện
ở VT của các phụ thuộc hàm.
Câu 12: Hệ tiên đề Armstrong cho các phụ thuộc hàm gồm các quy tắc:
a. Bắc cầu.
b. Phản xạ.
c. Tăng trưởng.
d. Cả 3 đáp án trên.
Câu 13: Hệ tiên Amstrong có các hệ quả là:
a. Luật hợp, luật bắc cầu, luật tách
b. Luật hợp, luật tựa bắc cầu, luật tăng trưởng
c. Luật hợp, luật tựa bắc cầu, luật tách
d. Luật phản xạ, luật tựa bắc cầu, luật tách
Câu 14: Khẳng định nào là phụ thuộc hàm:
a. Họ và tên → Thành phố
b. Họ và tên → Địa chỉ
c. Họ và tên → Số chứng nhân dân
d. Số chứng nhân dân → Họ và tên
Câu 15: Trong thuật toán tìm tất cả các khóa của lược đồ quan hệ R(U).
Sau khi tạo tập TN và tập TG. Nếu TG = ϴ Thì:
a. Lược đồ quan hệ chỉ có một khóa K = TG
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
150
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Lược đồ quan hệ chỉ có một khóa K = TN
c. Lược đồ quan hệ chỉ có một khóa K = ϴ
d. Lược đồ quan hệ chỉ có một khóa K = U
Câu 16: Chọn phát biểu đúng cho khái niệm dạng chuẩn 1(1NF)?
a. Một quan hệ được gọi là ở dạng chuẩn 1 (1NF) nếu giá trị của mỗi thuộc
tính trong một bộ giá trị là một giá trị nguyên tử (đơn, không phân chia
được) lấy từ miền giá trị của thuộc tính đó.
b. Một quan hệ được gọi là ở dạng chuẩn 1(1NF) nếu tồn tại thuộc tính phụ
thuộc một phần vào khóa.
c. Một quan hệ được gọi là ở dạng chuẩn 1 (1NF) nếu giá trị của mỗi thuộc
tính trong một bộ giá trị có thể phân chia ra được.
d. Một quan hệ được gọi là ở dạng chuẩn 1(1NF) nếu tồn tại thuộc tính phụ
thuộc bắc cầu vào khóa.
Câu 17: Chọn phát biểu đúng cho khái niệm dạng chuẩn 2(2NF)?
a. Một quan hệ được gọi là ở dạng chuẩn 2(2NF) nếu nó ở dạng chuẩn 1 và
không tồn tại thuộc tính phụ thuộc bắc cầu vào khóa.
b. Một quan hệ được gọi là ở dạng chuẩn 2(2NF) nếu nó ở dạng chuẩn 1 và
không tồn tại thuộc tính phụ thuộc một phần vào khóa.
c. Một quan hệ được gọi là ở dạng chuẩn 2 (2NF) nếu giá trị của mỗi thuộc
tính trong một bộ giá trị là một giá trị nguyên tử (đơn, không phân chia
được) lấy từ miền giá trị của thuộc tính đó.
d. Một quan hệ được gọi là ở dạng chuẩn 2(2NF) nếu nó ở dạng chuẩn 1 và
không tồn tại thuộc tính khóa phụ thuộc hàm vào thuộc tính không phải là
khóa.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
151
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 18: Chọn phát biểu đúng cho khái niệm dạng chuẩn 3(3NF)?
a. Một quan hệ được gọi là ở dạng chuẩn 3(3NF) nếu nó ở dạng chuẩn 2 và
không tồn tại thuộc tính khóa phụ thuộc hàm vào thuộc tính không phải là
khóa.
b. Một quan hệ được gọi là ở dạng chuẩn 3 (3NF) nếu giá trị của mỗi thuộc
tính trong một bộ giá trị là một giá trị nguyên tử (đơn, không phân chia
được) lấy từ miền giá trị của thuộc tính đó.
c. Một quan hệ được gọi là ở dạng chuẩn 3(3NF) nếu nó ở dạng chuẩn 2 và
không tồn tại thuộc tính phụ thuộc bắc cầu vào khóa.
d. Một quan hệ được gọi là ở dạng chuẩn 3(3NF) nếu nó ở dạng chuẩn 2 và
không tồn tại thuộc tính khóa phụ thuộc hàm vào thuộc tính không phải là
khóa.
Câu 19: Chọn phát biểu đúng cho khái niệm dạng chuẩn Boyce – Codd (BCNF)?
a. Một quan hệ được gọi là ở dạng chuẩn BCNF nếu nó ở dạng chuẩn 3 và
không tồn tại thuộc tính khóa phụ thuộc hàm vào thuộc tính không phải là
khóa.
b. Một quan hệ được gọi là ở dạng chuẩn BCNF nếu giá trị của mỗi thuộc tính
trong một bộ giá trị là một giá trị nguyên tử (đơn, không phân chia được) lấy
từ miền giá trị của thuộc tính đó.
c. Một quan hệ được gọi là ở dạng chuẩn BCNF nếu nó ở dạng chuẩn 3 và
không tồn tại thuộc tính phụ thuộc bắc cầu vào khóa.
d. Một quan hệ được gọi là ở dạng chuẩn BCNF nếu nó ở dạng chuẩn 3 và
không tồn tại thuộc tính khóa phụ thuộc hàm vào thuộc tính không phải là
khóa.
Câu 20: Phát biểu nào sau đây đúng với Phụ thuộc hàm đầy đủ?
a. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu loại bỏ bất kỳ
thuộc tính A nào ra khỏi X thì phụ thuộc hàm luôn đúng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
152
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu loại bỏ bất kỳ
thuộc tính A nào ra khỏi X thì phụ thuộc hàm không còn đúng nữa.
c. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu thêm bất kỳ
thuộc tính A nào ra khỏi X thì phụ thuộc hàm luôn đúng.
d. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu thêm bất kỳ
thuộc tính A nào ra khỏi X thì phụ thuộc hàm không còn đúng nữa.
Câu 21: Phát biểu nào sau đây đúng với Phụ thuộc hàm bộ phận?
a. Một phụ thuộc hàm X Y là phụ thuộc hàm bộ phận nếu có thể bỏ đi 1
thuộc tính A  X ra khỏi X mà phụ thuộc hàm vẫn còn đúng.
b. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu loại bỏ bất
kỳ thuộc tính A nào ra khỏi X thì phụ thuộc hàm không còn đúng nữa.
c. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu thêm bất
kỳ thuộc tính A nào ra khỏi X thì phụ thuộc hàm luôn đúng.
d. Một phụ thuộc hàm X Y là một phụ thuộc hàm đầy đủ nếu thêm bất
kỳ thuộc tính A nào ra khỏi X thì phụ thuộc hàm không còn đúng nữa.
Câu 22: Tìm phủ tối thiểu (Phủ không dư thừa) có mấy bước?
a. 1
b. 2
c. 3
d. 4
Câu 23: Cho quan hệ R (A, B, C, D, E); Khóa là AB
Tập phụ thuộc hàm F= {AB CD, CE}
Quan hệ trên ở dạng chuẩn nào?
a. 1NF
b. 2NF
c. 3NF
d. BCNF
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
153
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 24: Cho R (A, B, C, D, E, F); Khóa là AB
Tập phụ thuộc hàm F= {AB CD, ABE, E F}
Quan hệ trên ở dạng chuẩn nào?
a. 1NF
b. 2NF
c. 3NF
d. BCNF
Câu 25: Cho R (A, B, C, D, E); Khóa là AB
Tập phụ thuộc hàm F= {AB CDE, DB}
Quan hệ trên ở dạng chuẩn nào?
a. 1NF
b. 2NF
c. 3NF
d. BCNF
BÀI TẬP THỰC HÀNH
Bài 1.
Cho LĐQH p = (U,F) víi U = ABCDE, F = { A  C, BC  D, D  E, E  A }.
Tính:
a) (AB)+
b) (BD)+
c) D+
Bài 2.
Cho LĐQH p = (U,F) víi U = ABCDEG, F = { B  C, AC  D, D  G, AG  E }.
Chứng minh rằng: a) AB  G  F+ ?
b) BD  AD  F+ ?
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
154
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Bài 3.
Cho R(U), U={A, B, C, D, E, G},
F ={B →C, AC→D, D→G, AG→E}.
Tìm tất cả các khóa của R?
Bài 4.
Cho R(U), U={H, I, K, L, M, N},
F={I→LM, HI→K, K→N, KN→I}.
Tìm tất cả các khóa của R?
Bài 5.
Cho R(U), U={ A, B, C, D, E, F}.
F={A→B, BC→D, CE→D, AE→F, CD→A}.
Tìm tất cả các khóa của R?
Bài 6. Cho R(U), U={A, B, C, D , E, G}
F= {D →G, C→A, CD→E, A→B}
Tìm phủ tối thiểu?
Bài 7. Cho R(U), U={B, O, I, S, Q}
F={ B→I, O→ I, I→S, SQ→I, IQ→B}.
Tìm phủ tối thiểu?
Bài 8. Cho R(U), U = {A, B, C, D, E, F}
F = { A B, BC D, CE D, AE F, CD A}
Tìm phủ tối thiểu?
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
155
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Bài 9.
Cho R(U), U={A, B, C, D, E, G}
F ={B →C, AC→D, D→G, AG→E}.
Chuẩn hóa quan hệ về 3NF?
Bài 10.
Cho R(U), U={H, I, K, L, M, N},
F={I→LM, HI→K, K→N, KN→I}.
Chuẩn hóa quan hệ về 3NF?
Bài 11.
Cho R(U), U={ A, B, C, D, E, F}.
F={A→B, BC→D, CE→D, AE→F, CD→A}.
Chuẩn hóa quan hệ về 3NF?
Bài 12. Cho R(U), U={A, B, C, D , E, G}
F= {D →G, C→A, CD→E, A→B}
Phép tách  ={GD, AC, CDE, AB}. Kiểm tra phép tách có bị mất mát thông tin hay
không?
Bài 13. Cho R(U), U={C, T, H, R, S, G}.
F= {C→T, HT→R, HS→R, CS→G, HR→C}
Phép tách  =(CSG, CT, CHR, CHS). Kiểm tra phép tách có bị mất mát thông tin hay
không?
Bài 14. Cho R(U), U={A, B, I, H, K}, F={ B→I, A→ I, I→H, HK→I, IK→B}.
Phép tách  = {BI, IH, AK, AI, BK}. Kiểm tra phép tách có làm mất mát thông tin hay
không?
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
156
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CHƯƠNG IV
TỐI ƯU HÓA CÂU HỎI TRUY VẤN
Mục tiêu: Tối ưu hóa câu hỏi là quá trình lựa chọn phương pháp sao cho khi thực hiện
các câu hỏi truy vấn có hiệu quả nhất, có thể đánh giá được các khả năng xử lý câu hỏi
từ nhiều chiến lược khác nhau, đặc biệt là cho những câu hỏi phức tạp. Một phương
pháp khi thực hiện có chi phí thấp, tức là tối ưu về thời gian truy xuất thông tin và tối
ưu về không gian lưu trữ mà vẫn bảo đảm được tính độc lập và toàn vẹn dữ liệu.
Nội dung của chương gồm các phần sau:
Khái quát về tối ưu hóa câu hỏi
Nguyên tắc tối ưu hóa
Kỹ thuật tối ưu hoá các biểu thức đại số quan hệ
Một số nhận xét khi tối ưu hóa câu hỏi
Tối ưu hóa câu hỏi bằng khung nhìn
4.1. Mở đầu
Ngôn ngữ con dữ liệu là một tập các phép toán có cấu trúc quan hệ được dùng để
thao tác trên các dữ liệu dưới dạng quan hệ. Kết quả của các phép toán được biểu diễn
duy nhất bằng một quan hệ. Các thuộc tính và các bộ của nó được rút ra từ một hay
nhiều quan hệ cho trước, vì vậy trước khi thực hiện các câu hỏi cần thiết phải biến đổi
hợp lý sao cho chi phí thời gian thực hiện các phép toán là ít nhất. Quá trình biến đổi
này được gọi là quá trình tối ưu hoá các câu hỏi truy vấn dữ liệu.
Tối ưu hoá câu hỏi rất có ý nghĩa khi tìm kiếm và truy xuất dữ liệu tại các thiết bị
đầu cuối. Nâng cao hiệu suất các phiên làm việc của người sử dụng. Không những tối
ưu về thời gian truy xuất thông tin mà là nhân tố quan trọng trong việc bảo đảm tính độc
lập của dữ liệu với các chiến lược tìm kiếm, truy xuất dữ liệu. Có nhiều kỹ thuật khác
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
157
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
nhau để tối ưu hoá các câu hỏi, trong đó có kỹ thuật phân rã câu hỏi dựa trên ngôn ngữ
của đại số quan hệ.
4.2. Tổng quan về tối ưu hóa câu hỏi
Xét cơ sở dữ liệu quản lý mạng cáp gồm các quan hệ sau:
a. Thông tin về các tuyến cáp: TUYEN (T#, TC, DAI).
b. Thông tin về các loại cáp:
CAP (M#, MC, GIA, NSX).
c. Thông tin về các loại cáp đã được lắp đặt: L_DAT (T#, M#, SL, NG)
Trong đó:
T#
ký hiệu mã tuyến
TC
Tên gọi tuyến cáp,
DAI
Độ dài tuyến cáp
M#
Mã cáp
MC
Tên gọi cáp
GIA Đơn giá.
NSX
Nước sản xuất
SL
NG
Ngày lắp đặt cáp.
Số lượng cáp lắp đặt.
Để có được cách nhin tổng quát của việc tối ưu hoá câu hỏi, xét ví dụ sau:
liệt kê tên tất cả các tuyến cáp có lắp đặt cáp Việt nam.
Biểu thức đại số quan hệ và cây đại số quan hệ được biểu diễn như sau :
1. TTC ( σ MC# =’Việt nam’ (TUYEN X L_DAT) X CAP))
Cây đại số quan hệ chưa tối ưu hoá
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
158
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Biểu thức trên mô tả quá trình thực hiện câu hỏi như sau: Trước hết, biểu thức
tạo ra quan hệ TUYEN X L_DAT X CAP trung gian, bằng cách kết nối tự nhiên hoặc
thực hiện tích Đề các các quan hệ TUYEN, L_DAT và CAP với một số lượng bản ghi
bằng tích số lượng các bản ghi và các thuộc tính bao gồm các thuộc tính của 3 quan hệ
trên. Như vậy sau bước này, quan hệ tạm có lực lượng khá lớn và chiều dài của một bản
ghi cũng không phải là nhỏ, nếu kích cỡ các quan hệ nguồn lớn. Tuy nhiên kết quả câu
hỏi chỉ quan tâm đến thuộc tính tên tuyến cáp TTC và các bộ dữ liệu có tên loại cáp
trùng với “Việt nam”.
Như vậy sau khi tính tích Đề các, hệ thống sẽ thực hiện các phép chọn và phép
chiếu để đưa ra quan hệ kết quả. Trong cách biểu diễn này, số lượng các phép toán thực
hiện tương đối lớn, chi phí thời gian quá cao và chi phí lưu trữ tốn kém.
Chú ý rằng, câu hỏi chỉ quan tâm đến các bộ dữ liệu cáp “Việt nam”. Thông tin
này được chứa trong các quan hệ L_DAT, và CAP (trong nhật ký lắp đặt là mã các loại
cáp Việt nam và trong danh mục là chuỗi “Việt nam”).
Như vậy có thể thực hiện các phép chọn trong các quan hệ L_DAT và CAP. Kết
quả trung gian các phép chọn sẽ làm giảm đáng kể số lượng các bản ghi, kích cỡ của
quan hệ của phép kết nôi tự nhiên của 2 thành phần trung gian trên với quan hệ TUYEN.
Càng dễ dàng khi thực hiện phép chiếu trên thuộc tính tên tuyến cáp TTC. Có thể biến
đổi biểu thức đại số ban đầu tối ưu hơn, bằng cách thực hiện các phép chiếu và chọn,
tiếp sau mới thực hiện phép kết nối. Kết quả biến đổi như sau:
TTC (σ MC# =’Việt nam’ (L_DAT) X (σ MC# =’Việt nam’( CAP ) X TUYEN))
Biểu thức này tương đương như biểu thức đại số ban đầu, nhưng nó tạo ra các
quan hệ trung gian có kích cỡ nhỏ hơn nhiều so với kích cỡ của TUYEN X L_DAT X
CAP.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
159
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Cây đại số được tối ưu hóa
Như vậy, biến đổi một biểu thức đại số quan hệ về một biểu thức đại số quan hệ
tương đương tối ưu theo nghĩa sẽ cho cùng một kết quả nhưng với chi phí thời gian thực
hiện và sử dụng bộ nhớ ít hơn rất nhiều.
4.3. Nguyên tắc tối ưu hoá
 Ưu tiên thực hiện các phép chiếu và chọn, nhằm giới hạn khối lượng dữ liệu trung
gian. Giảm chi phí truy nhập bộ nhớ.
 Trước khi phải thực hiện phép tích Đề các, hãy tìm chiến lược truy nhập tốt nhất
vào CSDL. Ví dụ như sử dụng các phép sắp xếp, hoặc chọn chỉ số trên thành
phần tham gia vào tích Đề các.
 Thực hiện các phép kết nối cân bằng chi phí sẽ rẻ hơn nhiều so với chi phí thực
hiện phép tích Đề các.
 Nhóm các phép toán chọn và chiếu liên tiếp thành một phép toán duy nhất.
 Nhóm các phép tích và chiếu liên tiép thành một phép toán duy nhất. Trong khi
thi thực hiện phép tích có thể giới hạn chi phí thực hiện bằng phép chiếu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
160
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Tìm biểu thức chung trong một biểu thức. Nếu kết quả là một quan hệ không lớn
lắm nhưng tần xuất xuất hiện nhiều lần, nên có biểu thức con chung.
 Đánh giá sơ bộ trước khi thực hiện câu hỏi. Số phép toán thực hiện, tổng chi phí
thực hiện: thời gian, bộ nhớ ...
Ví dụ: Tên các loại cáp sử dụng trên tuyến “T03”
a) Ngôn ngữ đại số quan hệ
Cách 1:
Cách 2:
b) Biểu diễn bằng ngôn ngữ SQL:
CREATE VIEW KQ
AS
SELECT
FROM
R. M# , R. MC
CAP R, L_DAT S
WHERE S.T# = “T03” and R.M# = S.M#
//Kiểm tra kết quả
SELECT
*
FROM
KQ
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
161
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Như vậy với cách biểu diễn trên, câu hỏi đã được phân rã thành 2 câu hỏi con
theo chiều hướng ít tốn kém hơn.
4.4. Kỹ thuật tối ưu hoá các biểu thức đại số quan hệ.
4.4..1 Biểu thức quan hệ
Biểu thức quan hệ là một biểu thức mà các toán hạng là các quan hệ trong một
CSDL và các phép toán là các phép toán trong đại số quan hệ. Biểu thức E1 và E2 tương
đương với nhau, ký hiệu là E1 ≅ E2 , nếu chúng biểu diễn cùng một ánh xạ, nghĩa là
các quan hệ giống nhau trong biểu thức, thì kết quả cũng giống nhau.
Khi thực hiện các phép toán trong một biểu thức quan hệ, các phép toán một ngôi
có thứ tự ưu tiên cao hơn so với phép toán hai ngôi. Có thể xem phép chiếu được ưu tiên
hơn so với phép hợp, hoặc phép trừ. Tuỳ từng hệ cụ thể mà có thể có những quy định
về thứ tự ưu tiên.
Ví dụ trong một hệ có qui định phép giao có thứ tự ưu tiên trước phép hợp hai
quan hệ. Mỗi biểu thức quan hệ thông thường là một câu hỏi của người sử dụng. Hay
nói cách khác, người sử dụng thể hiện nội dung câu hỏi để truy nhập vào CSDL thông
qua một biểu thức quan hệ nào đó. Khi một một câu hỏi đã được được đưa vào hệ thống,
thì hệ thống cần thực hiện một số các chức năng tiếp theo: Kiểm tra chức năng của biểu
thức E. Nếu biểu thức E không có lỗi, thì thực hiện việc tối ưu hoá quá trình thực hiện
E.
Tối ưu hoá là xác định trật tự thực hiện các phép toán trong E nhằm đáp ứng các
nhu cầu: Cho cùng kết quả cho việc thực hiện theo trật tự ban đầu của biểu thức E, giảm
bớt được miền nhớ và thời gian thực hiện. Cuối cùng thực hiện biểu thức đã được tối ưu
hoá E.
Khi các quan hệ càng nhỏ thì thời gian chi phí cần thiết để thực hiện các thao tác
trên quan hệ càng thấp. Quan hệ nhỏ hiểu theo nghĩa là lực lượng và bậc của quan hệ
nhỏ. Đối với các phép toán quan hệ thì phép chọn sẽ làm giảm kích thước chiều dọc,
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
162
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
phép chiếu làm giảm kích thước chiều ngang. Các phép toán này thường hay được sử
dụng trong các biểu thức quan hệ. Phép chia cũng có tác dụng làm nhỏ quan hệ, nhưng
tần số sử dụng không nhiều. Nhận thấy rằng muốn tối ưu hoá một biểu thức quan hệ,
chuyển đổi thích hợp trật tự các phép toán quan hệ sao cho các phép chiều, chọn có thể
thực hiện càng sớm càng tốt và thực hiện phép kết nối càng muộn càng tốt.
4.4.2. Biến đổi biểu thức quan hệ
Hai biểu thức đại số quan hệ được gọi là tương đương nếu trên một mô hình dữ
liệu bất kỳ, hai biểu thức này tạo ra hai quan hệ có tập các bộ dữ liệu giống nhau. Giống
nhau theo nghĩa thứ tự của các bộ không nhất thiết phải tương ứng với nhau, có thể thứ
tự khác nhau và thứ tự của các thuộc tính cũng không nhất thiết phải như nhau. Nói một
cáh khái quát, 2 quan hệ trùng nhau nếu 2 bộ thuộc tính là như nhau và bộ dữ liệu của
quan hệ này cũng là bộ dữ liệu của quan hệ kia và ngược lại.
4.4.3. Một số nhận xé khi thực hiện tối ưu hoá câu hỏi
Tối ưu hoá câu hỏi dựa trên chi phí thấp là chủ yếu. Tuy nhiên nhiều khi thực
hiện việc tối ưu cũng rất tốn kếm. Qua kinh nghiệm, người ta rút ra một số nhận xét sau:
Thực hiện các phép chọn càng sớm càng tốt: Thường các phép chọn chỉ quan
tâm đến các bộ thỏa một điều kiện nào đó, như vậy các bước tiếp theo chỉ thực hiện trên
một quan hệ kích cỡ nhỏ hơn. Đây là một nhận xét kinh nghiệm, vì không phải lúc nào
cũng cho chi phí giảm .
Ví dụ biểu thức:
Trong đó: F có liên quan đến các thuộc tính của s.
Phép chọn này có thể được thực hiện trước khi kết nối. Nếu r là vô cùng nhỏ so
với s khi đó thực hiện phép chọn sớm sẽ hiệu quả cao. Phép chiếu cũng như phép chọn,
làm giảm độ lớn của các quan hệ. Vì thế bất cứ lúc nào cũng cần tạo ra một quan hệ tạm
thời, có lợi khi áp dụng ngay lập tức với bất cứ phép chiếu nào nếu có thể.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
163
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Thực hiện các phép chọn sớm hơn các phép chiếu thường tốt hơn, vì phép lựa
chọn có khả năng làm giảm bớt độ lớn của các quan hệ và cho phép sử dụng các chí số
để truy nhập cơ sở dữ liệu.
Sau đây là cách khái quát các bước trong một thuật toán tối ưu hoá kinh nghiệm
tiêu biểu.
1. Tách các phép chọn liên kết thành một chuỗi phép chọn riêng lẻ. Bước này
dựa trên qui tắc tương đương.
2. Chuyển các phép chọn xuống dưới cây đại số để thực hiện trước. Bước này
sử dụng các tính chất giao hoán và tính chất phân phối của các phép chọn được thể hiện
trong các qui tắc tương đương. Chăng hạn, biến đổi
hoặc
thành
mỗi khi có thể. Thực hiện các phép chọn dựa trên giá trị càng sớm
càng giảm được chi phí của sự sắp xếp và sự hoà lẫn các kết quả trung gian.
3. Xác định các phép chọn và các phép kết nối sẽ đưa ra các biểu thức quan hệ
nhỏ nhất, nghĩa là sẽ đưa ra số bộ dữ liệu ít nhất. Sử dụng tính chất kết hợp của phép
toán
để xắp xếp lại cây cho các quan hệ node-lá vơi sự lựa chọn thu hẹp nàyđược
thực hiện trước. Bước này dựa vào tính chất kết hợp của phép toán nhị phân đã cho của
qui tắc tương đương. Lưu ý rằng, phép chọn bị hạn chế khi số các bản ghi không thỏa
điều kiện, vì vậy cần phải cân nhắc tính chất của phép chọn hoặc điều kiện kết nối.
4. Có thể thay phép kết nối của kết quả theo tích Đề-các bằng một điều kiện
chọn. Kết quả phép tich Đề-các thường tốn kém khi thực hiện vì khi nhân bao gồm một
bản ghi cho mỗi kết nối của các bản ghi từ quan hệ A và quan hệ B. Phép chọn này có
thể làm giảm đáng kể một số bản ghẻptong quá trình thực hiện kết nối. It tốn kém hơn
nhiều so với phép tich Đề-các.
5. Phá vỡ và chuyển càng nhanh càng tốt danh sách các thuộc tính trong phép
chiếu xuống phía dưới cây, tạo ra phép chiếu ở nơi cần. Bước này dựa trên các đặc tính
của phép chiếu đã qui định trong các qui tắc tương đương.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
164
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
6. Nhận dạng các cây con mà các phép toán của nó thực hiện theo đường không
rẽ nhánh và thực thi chúng.
Tóm lại các phép chọn sớm sẽ làm giảm bớt số bộ dữ liệu và phép chiếu sớm làm
giảm số các thuộc tính.
4.5. Tối ưu hóa bằng khung nhìn (Materialized Views)
Thông thường, quan hệ kết quả được sinh ra bởi các câu hỏi truy vấn sẽ được
lưu trữ trong các khung nhìn đã được định nghĩa. Ngược lại, khung nhìn cụ thể hóa là
khung nhìn lưu trữ toàn bộ dữ liệu tính toán và kết quả tính toán. Trong nhiều ứng dụng
mà các thao tác lặp lại nhiều lần, có thể sử dụng các kết quả của các thao tác trước cho
các thao tác sau rất hiệu quả.
Ví dụ nếu trước đấy có câu hỏi truy vấn về tổng số từng loại cáp lắp đặt trên
tuyến:
CREATE VIEW SO_LUONG (Loai_cap, SLG)
AS
SELECT
MC# , SUM (SL)
FROM
L_DAT
GROUP BY MC#
Và nếu đựơc lưu trữ trong khung nhìn cụ thể hóa thì những câu hỏi về số lượng
một số loại cáp cụ thể nào đó sẽ tìm kiếm nhanh chóng, không mất nhiều thời gian.
4.5.1 Phép kết nối
Giả sử
.
Giả sử, chèn thêm vào R một tập IR . Nếu giá trị cũ của R được biểu thị bằng
Rold , và giá trị mới của R bằng Rnew, thì Rnew= Rold ∪ IR .
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
165
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Khi đó, giá trị cũ của Vold được biểu diễn bởi
được biểu diễn bởi
Khi đó
,và giá trị mới Vnew
.
biểu diễn biểu thức tối ưu như sau:
Như vậy, khi thực hiện phép chèn thêm, nếu sử dụng phương pháp khung nhìn
cụ thể hóa, thì việc thực hiện sẽ đơn giản hơn, chỉ cần thêm
vào nội dung
cũ. Tương tự, giả sử cần xóa một số bộ DR khỏi quan hệ R, với khung nhìn cụ thể hóa,
chỉ cần thực hiện:
4.5.2 Phép chọn và phép chiếu
 Xem xét phép chọn V = σF(R):
• Chèn thêm tập các bộ IR vào quan hệ R:
• Xóa khỏi R một tập các bộ DR:

Xem xét phép chọn V = ΠA(R):
Giả sử quan hệ R có dạng R=(A,B) và chứa hai bộ (a,2) và (a,3). Sau khi thực
hiện phép chiếu trên thuộc tính A, quan hệ kết quả ΠA(R) chứa bộ đơn (a). Nếu
xóa bộ (a,2) ra khỏi R:
• Xóa trực tiếp từ ΠA(R): khi đó quan hệ ΠA(R) là quan hệ rỗng.
• Xóa từ quan hệ R trước khi chiếu, quan hệ ΠA(R) sẽ chứa bộ đơn (a).
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
166
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Như vậy tùy từng trường hợp cụ thể sử dụng phương pháp khung nhìn. Trong
trường hợp xóa sau phép chiếu đúng, nếu lực lượng của ΠA(R) lớn hơn 1. Ngược lại sẽ
cho kết quả sai.
4.5.3 Các phép toán khối
Các phép toán khối, về nguyên tắc cũng như các phép chiếu và chọn. Các phép
khối trong SQL là các phép COUNT(), SUM() , AVG(), MIN() và MAX().

COUNT(): Xem xét khung nhìn cụ thể hóa V= COUNT(GROUP BY A)), phân
hoạch theo thuộc tính A và đếm theo nó: Chèn
• Nếu không tồn tại, chèn thêm ( t.A.1) vào khung nhìn cụ thể hóa.
• Nếu tồn tại ( t.A) , thêm 1 vào giá trị đếm của nhóm.

SUM(): V = SUM(GROUP BY A)).

AVG()

MIN(), MAX().
4.5.4 Các phép toán khác
 Phép giao tập hợp: V = R ∩ S, :
• Chèn một bộ vào R.
• Xóa khỏi tập giao nếu nó tồn tại trong đó.

Các phép toán tập hợp khác: Hợp và hiệu được thực hiện theo kiểu tương tự .
4.5.5 Tối ưu hóa các câu hỏi và các khung nhìn cụ thể hóa
Tối ưu hóa các câu hỏi có thể được thực hiện bằng cách xem các khung nhìn cụ
thể hoá như là các quan hệ . Tuy nhiên, sử dụng phương pháp các khung nhìn cụ thể hóa
tùy trong các trường hợp cụ thể.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
167
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU

Biến đổi câu hỏi để sử dụng khung nhìn cụ thể hóa: Giả sử có một khung nhìn
cụ thể
và một câu hỏi
. Khi đó câu hỏi có
thể biến đổi và được sử dụng khung nhìn cụ thể như sau:
 Thay thế khung nhìn cụ thể bằng khung nhìn bình thường. Giả sử có một khung
nhìn cụ thể
và một câu hỏi của người sử dụng yêu cầu thực
hiện: σ A= 10(V). Giả sử S có một chỉ số trên thuộc tính B và R có một chỉ số
trên thuộc tính A. Khi đó phương án tốt nhất cho câu hỏi này có thể thay thế
khung nhìn cụ thể V bởi khung nhìn bình thường:
.
Phép chọn và kết nối có thể được thực hiện một cách hiệu quả bằng cách sử dụng
tương ứng các chỉ số trong R.A và S.B . Ngược lại đánh giá phép chọn một cách
trực tiếp trên V có thể đòi hỏi sự quét toàn bộ V mà có thể tốn kém hơn nhiều.
4.5.6. Bài tập tối ưu hoá các câu hỏi.
Xét các quan hệ sau:
TUYEN (TC#, TC, DAI)
CAP (MC#, MC, GIA, N#, NSX)
L_DAT (TC#, MC#, SL)
Trong đó:
TC# : Mã tuyến cáp;
MC# : Mã cáp
TC :Tên tuyến cáp;
MC :Tên gọi cáp
DAI :Độ dài tuyến cáp;
GIA :Đơn giá loại cáp
N# :Mã nước sản xuất cáp;
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
168
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
NSX :Tên nước sản xuất cáp.
SL :Số lượng cáp lắp đặt
Ngữ nghĩa của dữ liệu như sau:

Trên một tuyến cáp có nhiều loại cáp khác nhau đựôc lắp đặt.

Một loại cáp có thể được lắp đặt trên nhiều tuyến.

Thông tin về tuyến cáp: không tồn tại 2 mã tuyến trùng nhau.

Không tồn tại mã 2 loại cáp trùng nhau.
Ví dụ: Hãy liệt kê tất cả thông tin về các tuyến cáp có độ dài trên 50 km và lắp đặt các
loại cáp do Việt nam sản xuất.
Hình vẽ:
a) Cây đại số ban đầu chưa tối ưu hóa
b) Cây đại số đã tối ưu hóa
a) Biểu thức đại số quan hệ ban đầu như sau:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
169
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Kết nối tự nhiên các quan hệ TUYEN, CAP và L_DAT tạo thành một quan hệ trung
gian với lực lượng bằng tích của bậc của 3 quan hệ và các thuộc tính là thuộc tính của 3
quan hệ.
Tiếp theo thực hiện phép chọn với điều kiện chỉ quan tâm đến các lôại cáp do Việt
nam sản xuất được lắp đặt trên các tuyến có chiều dài trên 50 Km.
b) Biểu thức tối ưu
Đây là biểu thức tương đương với biểu thức ban đầu. Quan hệ trung gian có kích
thước nhỏ hơn cũng như về lực lượng. Thời gian thực hiện nhanh hơn, chi phí bộ nhớ
ít hơn.
Trước tiên thực hiện phép chọn trên quan hệ TUYEN, tạo quan hệ trung gian bao
gồm các bộ thỏa chiều dài trên 50 km.
Phép chọn trên các quan hệ CAP, tạo ra quan hệ có một bộ duy nhất, nước sản xuất
là Việt Nam, và trên quan hệ L_DAT, gồm các bộ thỏa N# =’VNA’.
Khi thực hiện phép kết nối các quan hệ trung gian trên, sẽ có quan hệ kích thước
nhỏ hơn và lực lượng bé hơn, chi phí thấp hơn.
Ví dụ: Hãy cho biết thông tin về các loại cáp do Việt nam sản xuất được lắp đặt trên
các tuyến “T01” (Hà nội- Quảng ninh) và “T02” (Hà nội – Hải phòng) trong các năm
1990 đến 1999 có giá trị trên 2 tỷ đồng Viêt nam.
Giả sử khung nhìn cần phải tạo có tên là CAP_VN chứa các thông tin về M# mã cáp,
MC tên cáp, GIA giá cáp, T_DAI tổng độ dài và giá trị của cùng loại cáp GTR.
Để tạo khung CAP_VN cần kết nối các quan hệ TUYEN, CAP và L_DAT:
πS (σF (TUYEN x CAP x L_DAT).
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
170
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Trong đó:
S là danh sách khung nhìn: CAP_VN: S = M#, MC, GIA, T_DAI, GTR.
Điều kiện chọn F:
F = (T# = “T01” ∨ T# =”T02” ) ∧ (NSX=’Viẹt Nam’ ) ∧
(1990 ≤ NG ≤ 1999 ) ∧ (SUM(DAI*SL*GIA) ≥ 2) ∧
(TUYEN.T#= L_DAT.T# ) ∧ (CAP.M# = L_DAT.M#))
Cây đại số chưa tối ưu hóa
Tách biểu thức chọn F:
F1 = {1990 ≤ NG ≤ 1999}
F2 = {NSX=’Việt Nam’ }
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
171
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
F3 = {T# = “T01” ∨ T# =”T02” }
F4 = { TUYEN.T#= L_DAT.T# }
F5 = {CAP.M#
= L_DAT.M# }
F6 = {SUM(DAI*SL*GIA) ≥ 2}
T1 = πT#,DAI(σF3 (TUYEN ))
= πT#,DAI (σ T# = “T01” ∨
T# =”T02”
(TUYEN ))
T2 = πT#,M#,SL(σ F1 (L_DAT))
= π T#,M#,SL(σ 1990 ≤ YEAR ≤ 1999 (L_DAT))
T3 = π M#,MC,GIA(σ F2 (CAP)
= π M#,MC,GIA(σ NSX=’Viẹt Nam’ (CAP))
T4 = σ F6 (( T1
F4 T2)
F5 T3)
T5 =π M#, MC (T4) .
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
172
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Cây cú pháp tối ưu hóa biểu thức quan hệ
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
173
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Biểu diễn bằng ngôn ngữ SQL:
CREATE VIEW
T1
AS
SELECT
T#, DAI
FROM
TUYEN
WHERE
T#="T01" AND T#="T03"
CREATE VIEW
T2
AS
SELECT
T#, M#, SL
FROM
L_DAT
WHERE YEAR FROM NG ) BETWEEN 1990 AND 1999.
CREAT VIEW
T3
AS
SELECT
M#, MC, GIA
FROM
CAP
WHERE
NSX=’Viẹt Nam’
CREAT VIEW
T4
AS
SELECT
M#, MC#, DAI*SL*GIA GT
FROM
T1, T2, T3
WHERE
(T1.T#=T2.T# and T3.M#=T2.M# ) and DAI*SL*GIA ≥ 2
//Kiểm tra
SELECT
FROM
*
T4
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
174
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
BÀI TẬP CHƯƠNG 4
CÂU HỎI TRẮC NGHIỆM
Câu 1. Quá trình tối ưu hoá các câu hỏi truy vấn dữ liệu là quá trình:
a. Cần thiết phải biến đổi các câu hỏi hợp lý
b. Chi phí thời gian thực hiện các phép toán là ít nhất.
c. Cần thiết phải biến đổi các câu hỏi hợp lý sao cho chi phí thời gian thực
hiện các phép toán là ít nhất.
d. Kết quả của các phép toán được biểu diễn duy nhất bằng một quan hệ.
Câu 2. Ý nghĩa của biểu thức π TTC ( σ MC# =’Việt nam’ (TUYEN X L_DAT) X CAP))
a. Liệt kê tên tất cả loại cáp Việt nam.
b. Liệt kê tên tất cả các loại cáp Việt nam có lắp đặt trên câc tuyến
c. Liệt kê tên tất cả các tuyến có lắp đặt các loại cáp Việt nam.
d. Liệt kê tên tất cả các tuyến cáp
Câu 3. Hai biểu thức nào sau đây tương đương với nhau
a. π TTC (σ MC# =’Việt nam’ (L_DAT) X (σ MC# =’Việt nam’( CAP )
X TUYEN))
b. π TTC ( σ MC# =’Việt nam’ (TUYEN X L_DAT) X CAP))
c. π TTC (σ MC# =’Việt nam’ (L_DAT) X σ MC# =’Việt nam’( CAP )
X TUYEN))
d. π TTC ( σ MC# =’Việt nam’ (CAP X L_DAT) X TUYEN))
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
175
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 4. Biểu thức nào dưới đây biểu diễn câu truy vấn: Tên các loại cáp sử dụng trên
tuyến Hà nội- Hải phòng “T03” ?.
Câu 5. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Tối ưu hoá câu hỏi
không những tối ưu về thời gian truy xuất thông tin mà là nhân tố quan trọng trong việc
bảo đảm...............với các chiến lược tìm kiếm, truy xuất dữ liệu.
a. Tính khả thi của dữ liệu
b. Tính toàn vẹn dữ liệu
c. Tính độc lập của dữ liệu
d. Tính nhất quán của dữ liệu
Câu 6. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Có nhiều kỹ thuật
khác nhau để tối ưu hoá các câu hỏi, trong đó có kỹ thuật phân rã câu hỏi dựa trên..........
a. Ngôn ngữ của đại số quan hệ.
b. Ngôn ngữ dữ liệu.
c. Biểu thức đại số quan hệ.
d. Suy dẫn logic từ các tiên đề Armstrong
Câu 7. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Biến đổi một biểu
thức đại số quan hệ về một biểu thức đại số quan hệ tương đương ...... theo nghĩa sẽ cho
cùng một kết quả nhưng với chi phí thời gian thực hiện và sử dụng bộ nhớ ít hơn rất
nhiều
a. Ngữ nghĩa dữ liệu
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
176
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Tối ưu
c. Thực hiện
d. Tiết kiệm bộ nhớ
Câu 8. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Cách tiếp cận cơ
bản để đánh giá tối ưu hóa biểu thức quan hệ thường cây kết nối trái theo chiều sâu, là
phương án ưu hóa câu hỏi R không quan tâm tới thứ tự kết nối khi các toán hạng bên
phải của mỗi phép kết nối . Cây kết nối trái theo chiều sâu rất có.......
a. Chi phí rất nhỏ.
b. Chi phí bằng chi phí biểu thức ban đầu.
c. Cho phí thời gian nhỏ.
d. Chí phí bộ nhớ nhỏ
Câu 9. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khảng định sau: Trong biểu thức
quan hệ các toán hạng là ..........và các phép toán là các phép toán trong đại số quan hệ.
a. Các quan hệ trong một CSDL
b. Các thuộc tính.
c. Các phụ thuộc hàm.
d. Các phần tử
Câu 10. Biểu thức E1 và E2 tương đương với nhau (E1 ≅ E2) , nếu chúng biểu diễn
cùng một ánh xạ, nghĩa là .......... giống nhau trong biểu thức, thì kết quả cũng giống
nhau.
a. Các quan hệ.
b. Các thuộc tính.
c. Các bản ghi.
d. Các toán hạng
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
177
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CÂU HỎI VÀ BÀI TẬP
Câu hỏi: Hãy tối ưu hoá các câu hỏi sau:
1. Thông tin về các tuyến có lắp đặt các loại cáp do Việt nam sản xuất có giá trị trên
10 tỷ đồng.
2. Thông tin về các tuyến cáp có lắp đặt các loại cáp sau năm 1999, hoặc có các loại
cáp do Việt nam sản xuất.
3. Thông tin về các tuyến cáp xuất phát từ Hà nội, có các loại cáp được lắp đặt sau
năm 1999, tổng giá trị tuyến cáp không lớn hơn 3 tỷ đồng.
4. Thông tin về các tuyến cáp có tổng giá trị lớn hơn tổng giá trị các tuyến cáp xuất
phát từ Hà nội.
5. Thông tin về các tuyến cáp mà trong đó mỗi một loại chỉ có một loại cáp được lắp
đặt , hoặc có có ít nhất 5 loại cáp được lắp đặt.
6. Thông tin về các tuyến cáp mà trong đó lắp đặt tất cả các loại cáp có trong danh
mục.
7. Tổng giá trị các loại cáp lắp đặt trong các tuyến.
8. Thông tin về các tuyến cáp không sử dụng các loại cáp do Việt nam sản xuất.
9. Thông tin về các tuyến cáp có mã loại cáp không đúng với danh mục ( ngoài danh
mục).
10. Tổng giá trị các tuyến cáp
11. Thông tin về các tuyến cáp có tổng giá trị nhỏ hơn giá trị của tuyến mang mã hiệu
“T15”
12. Thông tin về các tuyến cáp mà trong đó số loại cáp lắp đặt nhiều hơn số loại cáp
lắp đặt trong tuyến “T01”.
13. Thông tin về các loại cáp do Việt nam sản xuất có giá trị trên 10 tỷ đồng, được sử
dụng trong năm 1999.
14. Thông tin về các loại cáp do Việt nam sản xuất hoặc do các liên doanh Việt sản
xuất.
15. Thông tin về các loại cáp được lắp đặt trên các tuyến xuất phát từ Hà nội, có giá trị
cáp không lớn nhỏ 5 triệu đồng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
178
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
16. Thông tin về các loại cáp có chiều dài sử dụng và giá trị của nó lớn hơn chiều dài
và giá trị sử dụng của loại cáp mang mã hiệu “M03”.
17. Thông tin về các loại cáp được sử dụng trên hơn 10 tuyến.
18. Thông tin về các loại cáp được sử dụng duy nhất trên một tuyến cáp.
19. Thông tin về các loại cáp được sử dụng trên tất cả các tuyến.
20. Thông tin về các loại cáp chưa được sử dụng trên các tuyến.
21. Thông tin về các loại cáp được sử dụng trên 2/3 tuyến cáp.
22. Thông tin về các loại cáp được lắp đặt trên các tuyến xuất phát từ Hà nội, hoặc đến
Hà nội có các loại cáp do Việt Nam sản xuất, có giá trị cáp lớn 5 triệu đồng.
BÀI TẬP
Bài 1. Giả sử các quan hệ R1(A,B,C), R2(C,D,E) và R3 (E,F), và R1 có 1000 bộ, R2
có
1500 bộ và R3 có 750 bộ. Đánh giá kích cỡ của tích Đề các của R1, R2 và R3. Hãy
đề xuất một chiến lược hiệu quả để tính toán phép kết nối.
Bài 2. Giả sử các quan hệ R1 (A,B,C), R2(A, D, F) và R3 (B, E, T, Z) và R1 có 3500
bộ,
R2 có 500 bộ và R3 có 700 . Hãy tính chi phí cho các thao tác sau:

Thêm 100 bộ vào R1 .

Thêm 20 bộ vào R2.

Thêm 20 bộ vào R3 .

Biết chi phí của R1 X R hãy tính chi phí R1 X R2 X R3
Bài 3. Hãy tính chi phí cho các biểu thức quan hệ sau: Thông tin về các loại cáp có giá
trị
trung bình cao hơn giá trị trung bình của các loại cáp do Việt nam sản xuất được lắp
đặt trên từng tuyến.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
179
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
CHƯƠNG 5
BẢO MẬT VÀ TOÀN VẸN DỮ LIỆU
Mục tiêu: Giới thiệu một cách tổng quát về khái niệm an toàn và toàn vẹn dữ liệu. và
một số biện pháp cần thiết để bảo vệ cơ sở dữ liệu. “An toàn” dữ liệu nghĩa là các hệ
cơ sở dữ liệu cần phải được bảo vệ chống truy nhập trái phép như sửa đổi hay phá hoại
dữ liệu. Tính toàn vẹn dữ liệu theo nghĩa dữ liệu không mâu thuẫn, dị thường thông tin
trong các hệ thống khi thực hiện các phép lưu trữ, truy vấn, tìm kiếm.
Nội dung của chương gồm các phần sau:
Sự cần thiết phải bảo vệ an toàn cơ sở dữ liệu
Tính toàn vẹn của dữ liệu
Ngôn ngữ vấn tin - ngôn ngữ ràng buộc toàn vẹn
An toàn cơ sở dữ liệu.
Các mức độ bảo vệ an toàn cơ sở dữ liệu.
Bảo mật cơ sở dữ liệu
5.1. Sự cần thiết phải bảo vệ an toàn CSDL
Hiện nay cùng với sự phát triển nhanh chóng của CNTT và sự bùng nổ của hệ
thống mạng thì an toàn và bảo mật thông tin luôn là vấn đề quan tâm lớn nhất của
các tổ chức, doanh nghiệp. Cơ sở dữ liệu của một cơ quan, một xí nghiệp, của một
ngành... thường được cài đặt tập trung hay phân tán trên các máy chủ trên mạng, là
tài nguyên thông tin chung cho nhiều người cùng sử dụng.
Các phương thức tấn công thông qua mạng có thể làm mất mát thông tin, thậm
chí có thể làm sụp đổ hoàn toàn hệ thống thông tin của doanh nghiệp.Vì vậy các hệ
cơ sở dữ liệu cần phải có cơ chế kiểm soát, quản lý và truy xuất khai thác thông tin
sao cho dữ liệu phải được an toàn và toàn vẹn. Thuật ngữ “an toàn” dữ liệu có nghĩa
là các hệ cơ sở dữ liệu cần phải được bảo vệ chống truy nhập nhằm sửa đổi hay phá
hoại một cách chủ định hay không chủ định.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
180
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Như vậy các hệ thống cơ sở dữ liệu cần thiết phải quản trị, bảo vệ tập trung,
nhằm bảo đảm được tính toàn vẹn và an toàn dữ liệu. Toàn vẹn dữ liệu khác với an
toàn dữ liệu, tuy rằng chúng có mối quan hệ mật thiết với nhau. Có thể sử dụng chung
một số biện pháp để thực hiện. Có rất nhiều mối nguy hiểm đe doạ đến các hệ thống
dữ liệu: Cơ sở dữ liệu được cài đặt tập trung hay phân tán trên các vị trí địa lý khác
nhau, được khai thác từ các đầu cuối khác nhau theo chế độ Client/Server.
Nhiều người sử dụng truy nhập và khai thác trên cùng một cơ sở dữ liệu. Rất
nhiều loại dữ liệu được tải về giữ trên các máy cục bộ để khai thác. Truy xuất vào
các hệ cơ sở dữ liệu bằng nhiều ngôn ngữ thao tác dữ liệu khác nhau, bằng nhiều hệ
ứng dụng khác nhau trên cùng một nội dung thông tin. Vì vậy có thể xẩy ra. Những
sai sót ngoài ý muốn, khi thực hiện thêm, sửa, xoá hay do lỗi khi lập trình. Truy nhập
trái phép với mục đích xấu: sửa, xoá thông tin hay đánh cắp thông tin... Sự cố kỹ
thuật như lỗi do các thiết bị, lỗi lập trình...
An toàn và bảo mật thông tin là nhiệm vụ rất nặng nề và khó đoán trước được.
Phương thức bảo mật CSDL bao gồm các hệ thống, các quy trình và thủ tục để
bảo vệ CSDL khỏi các cuộc tấn công phá hoại cũng như các hành vi sử dụng không
đúng hoặc sai sót của con người.
Có rất nhiều phương thức để bảo mật CSDL như bảo đảm an ninh hệ thống, có
thể là để ngăn chặn, hoặc làm giảm, hoặc giám sát, hoặc phát hiện, hoặc để khắc
phục các sự cố xảy ra, hoặc chỉ dùng để phục hồi lại hệ thống khi có sự cố.
5.2. Tính toàn vẹn dữ liệu
5.2.1 Các ràng buộc toàn vẹn
Các mô hình dữ liệu không đủ để diễn tả mọi ngữ nghĩa của thế giới thực, vì vậy
phải bổ sung thêm các đặc tả thường gọi là các rằng buộc toàn vẹn. Rằng buộc toàn
vẹn là một đặc tả mà một CSDL phải thỏa mãn để giữ được tính đúng đắn của nó. Rằng
buộc toàn vẹn thường được diễn đạt dưới dạng 1 tân từ. Như vậy các ràng buộc toàn
vẹn dữ liệu phải bảo đảm tính độc lập và toàn vẹn dữ liệu. Dữ liệu lưu trữ trong các hệ
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
181
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
thống cơ sở dữ liệu phải phản ánh hiện thực khách quan trong mọi thời điểm có thể,
không dư thừa và mâu thuẫn thông tin.
Có 2 loại ràng buộc chủ yếu:
- Rằng buộc có tính cấu trúc: Liên quan đến các giá trị trong CSDL (tên, kiểu, độ
dài của thuộc tính). Mô tả tính chất của các thuộc tính khi tạo lập CSDL như tên,
kiểu, độ dài của thuộc tính. Chẳng hạn thuộc tính “Số điện thoại” là kiểu chuỗi có
độ dài đúng bằng 7 ký tự. Hệ thống sẽ không chấp nhận, nếu nhập vào CSDL một
giá trị kiểu số hoặc kiểu xâu nhưng chưa đủ hoặc vượt quá 7 ký tự. Ràng buộc biểu
diễn giá trị của các thuộc tính bằng đẳng thức toán học, các toán hạng là giá trị
của các thuộc tính khác. Điển hình là những ràng buộc hạn chế một trường chỉ
nhận được một số giá trị trong một phạm vi nào đó hoặc diễn tả một mối liên hệ
số học giữa các trường khác.
- Rằng buộc logic giữa các thuộc tính: biểu diễn mối quan hệ giữa các thuộc tính
là tập các rằng buộc được mô tả bằng khái niệm phụ thuộc hàm và phụ thuộc đa
trị (còn gọi là phụ thuộc dữ liệu). Theo định nghĩa, mọi khoá của một lược đồ quan
hệ đều có tính duy nhất. Không tồn tại 2 bộ có cùng một giá trị trên các thuộc tính
khoá. Giá trị của khoá theo quy
định không được nhận giá trị null hay giá trị
không xác định. Hệ quản trị CSDL có trách nhiệm phải từ chối khi giá trị của
khoá nếu vẫn còn chứa các giá trị chưa xác định hoặc đã tồn tại trong cơ sở dữ
liệu thông qua các phép thêm hoặc sửa đổi dữ liệu. Như vậy các ràng buộc toàn
vẹn dữ liệu phải bảo đảm tính độc lập và toàn vẹn dữ liệu. Dữ liệu lưu trữ trong
các hệ thống cơ sở dữ liệu phải phản ánh hiện thực khách quan trong mọi thời điểm
có thể, không dư thừa và mâu thuẫn thông tin.
Ví dụ:
Cho CSDL gồm các quan hệ sau:
KHOA (Mã-khoa, Tên-khoa), là một quan hệ 2 ngôi.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
182
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Tân từ: "Mỗi khoa có một tên gọi và một mã số duy nhất để phân biệt với tất cả các
khoa khác của trường".
LỚP-HỌC (Mã-lớp, Tên-lớp, Niên-khóa, Số-học-viên, Mã-khoa) là quan hệ 5 ngôi
với tân từ: "Mỗi lớp học trong trường có một mã số quy ước duy nhất để phân biệt với
tất cả các lớp học khác trong trường; có một tên gọi của lớp học, một số lượng học
viên theo học và thuộc một khoa của trường".
MÔN-HỌC (Mã-môn, Tên-môn, Số-đv-học-trình) là quan hệ 3 ngôi. Tân từ: "Mỗi
môn học có một tên gọi cụ thể, được học trong một số đơn vị học trình nhất định và
ứng với môn học là một mã số duy nhất để phân biệt với mọi môn học khác".
HỌC-VIÊN (Mã-học-viên, Tên-học-viên, Ngày-sinh, Quê-quán, Mã-lớp) là quan
hệ 5 ngôi. Tân từ: "Mỗi học viên có một họ và tên, ngày sinh, quê quán, ... và được cấp
một mã số duy nhất để phân biệt với mọi học viên khác trong trường; học viên được
ghi danh vào một lớp học duy nhất trong trường"
5.2.2 Các yếu tố của rằng buộc toàn vẹn (RBTV)
Khi xác định một RBTV cần chỉ rõ:
- Điều kiện (tức là nội dung) của RBTV, từ đó xác định cách biểu diễn.
- Bối cảnh xảy ra RBTV: trên một hay nhiều quan hệ, cụ thể trên các quan hệ nào.
-Tầm ảnh hưởng của RBTV. Khả năng tính toàn vẹn dữ liệu bị vi phạm.
- Hành động cần phải có khi phát hiện có RBTV bị vi phạm
5.2.3 Phân loại các ràng buộc toàn vẹn
a. Rằng buộc toàn vẹn tĩnh:
Là một điều kiện mà CSDL phải thỏa mãn vào bất cứ lúc nào để có thể ở trong
trạng thái đúng đắn. Bao gồm:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
183
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Các rằng buộc trên thuộc tính
- Các rằng buộc trên bộ
- Rằng buộc trên quan hệ
- Rằng buộc trên nhiều quan hệ
*Các rằng buộc trên thuộc tính
-
Rằng buộc tồn tại: thuộc tính đó phải xác định trong mọi bộ của quan hệ (≠
null)
VD: thuộc tính khóa
-
Rằng buộc về miền: giá trị của mỗi thuộc tính A phải là giá trị nguyên tử và
thuộc 1miền giá trị Dom(A)
VD: Thuộc tính điểm có giá trị từ 0..10
Thuộc tính BAOHIEM luôn bắt đầu bằng số 1 hoặc 2
-
Rằng buộc về giá trị mặc định: chỉ rõ giá trị phải gán cho 1 thuộc tính khi tạo
lập
VD: NGAY_HĐ lấy giá trị mặc định là ngày hiện tại.
* Các rằng buộc trên bộ: thể hiện bằng 1 tân từ hay 1 công thức được đề cập đến
các giá trị của nhiều thuộc tính
VD:Thuộc tính BAOHIEM nếu bắt đầu bởi sô 1 thì GIOITINH phải lấy giá trị là
nam ngược lại là nữ
Hoặc ThanhTien=SoLuong*ĐơnGia
*Rằng buộc trên quan hệ:
- Rằng buộc về khóa: Ràng buộc khoá và ràng buộc trên các giá trị không xác định
(null): Một quan hệ được định nghĩa như một tập hợp các bộ. Theo định nghĩa, các
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
184
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
phần tử của một tập hợp là khác nhau, vì vậy, mọi bộ trong quan hệ phải khác
nhau.
Điều đó có nghĩa là không có hai bộ có cùng một tổ hợp giá trị cho tất cả các
thuộc tính của chúng.
Thông thường, có tồn tại các tập con của các thuộc tính của một lược đồ quan
hệ có tính chất là không có hai bộ nào ở trong mọi trạng thái quan hệ r của R có cùng
một tổ hợp giá trị cho các thuộc tính của nó.
Giả sử chúng ta ký hiệu một tập con như vậy là SK, khi đó với hai bộ khác nhau
bất kỳ t1 và t2 trong một trạng thái quan hệ r của R chúng ta có ràng buộc là t1[SK]
≠ t2[SK].
Tập hợp thuộc tính SK như vậy được gọi là một siêu khoá của lược đồ quan hệ
R. Một siêu khoá SK xác định rõ một ràng buộc về tính duy nhất, phát biểu rằng
không có hai bộ khác nhau trong một trạng thái r của R có cùng một giá trị cho SK.
Mỗi quan hệ có ít nhất là một siêu khoá mặc định, đó là tập hợp tất cả các thuộc tính
của nó.
Một khoá K của một lược đồ quan hệ R là một siêu khoá của R với tính chất là
nếu bỏ đi bất kỳ thuộc tính A nào ra khỏi K thì sẽ còn lại một tập K không phải là
siêu khoá của R. Như vậy, một khoá là một siêu khoá tối thiểu, nghĩa là đó là một
siêu khoá mà ta không thể vứt bỏ thuộc tính nào ra khỏi nó mà vẫn giữ được ràng
buộc về tính duy nhất.
Ví dụ, xét quan hệ SINHVIÊN với các thuộc tính Mãsố, Họtên, Ngàysinh,
Giớitính, Địachỉ. Thuộc tính {Mãsố} là một khoá của SINHVIÊN bởi vì không có
hai bộ sinh viên có cùng một giá trị cho Mãsố. Mọi tập hợp thuộc tính có chứa Mãsố,
vídụ {Mãsố, Họtên, Ngàysinh}, đều là một siêu khoá. Tuy nhiên, siêu khoá {Mãsố,
Họtên, Ngàysinh} không phải là khoá bởi vì nếu bỏ đi thuộc tính Họtên hoặc
Ngàysinh hoặc cả hai thì nó vẫn còn là một siêu khoá. Giá trị của một thuộc tính khoá
có thể được sử dụng để xác định một cách duy nhất mỗi bộ trong một quan hệ. Ví dụ,
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
185
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
giá trị 4515202 của Mãsố xác định một cách duy nhất bộ giá trị tương ứng với sinh
viên Lê Vân trong quan hệ SINHVIÊN.
Chú ý rằng một tập hợp thuộc tính tạo nên một khoá là một tính chất của lược
đồ quan hệ. Điều ràng buộc là tính chất đó phải thỏa mãn trên mọi trạng thái của lược
đồ.
Một khoá được xác định từ ý nghĩa của các thuộc tính và tính chất là bất biến,
tính chất đó phải thỏa mãn khi chúng ta chèn thêm các bộ mới vào quan hệ. Ví dụ,
ta không thể và không được chỉ định thuôc tính Họtên của quan hệ SINHVIÊN là
khoá bởi vì không có gì đảm bảo rằng không tồn tại hai sinh viên có cùng họ tên. Nói
chung, một lược đồ quan hệ có thể có nhiều hơn một khoá. Trong trường hợp đó, mỗi
một khoá được gọi là một khoá dự tuyển.
Thông thường ta phải chỉ định một trong các khoá dự tuyển làm khoá chính của
quan hệ. Khoá chính là một khoá dự tuyển mà các giá trị của chúng được dùng để xác
định các bộ trong quan hệ. Ta quy ước rằng, các thuộc tính tạo nên khoá chính của
một lược đồ quan hệ được gạch dưới.
Ví dụ: SINHVIÊN( Mãsố, Họtên, Ngàysinh, Giớitính, Địachỉ ). Chú ý rằng khi
một lược đồ quan hệ có nhiều khoá dự tuyển, việc lựa chọn một khoá dự tuyển để
làm khoá chính là tuỳ ý, tuy nhiên tốt nhất là chọn khoá chính gồm một thuộc tính
hoặc có số các thuộc tính ít nhất. Một ràng buộc khác trên các thuộc tính chỉ rõ khi
nào thì cho phép các giá trị null. Những thuộc tính luôn luôn phải có một giá trị xác
định và hợp lệ thì bị ràng buộc là NOT NULL.
- Rằng buộc phụ thuộc hàm
- Rằng buộc về dạng chuẩn
- Rằng buộc về bản số
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
186
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
*Rằng buộc trên nhiều quan hệ:
-Rằng buộc về khóa ngoài
-Rằng buộc toàn vẹn tham chiếu
b. Rằng buộc toàn vẹn động
Là các rằng buộc nhằm đặc tả 1 thay đổi trạng thái đúng đắn của CSDL. Bao gồm:
- Rằng buộc định nghĩa bởi luật ứng xử
- Rằng buộc định nghĩa bởi các tiền đề, hậu đề
*Rằng buộc định nghĩa bởi luật ứng xử:
Các rằng buộc này chỉ ra các hành động phải thực hiện đáp lại 1 thay đổi trạng thái
chợt đến trong CSDL.
*Rằng buộc định nghĩa bởi các tiền đề, hậu đề
- Rằng buộc loại tiền đề
- Rằng buộc loại hậu đề
- Rằng buộc tiền và hậu đề
VD: không được loại bỏ1khách hàng còn có các đơn hàng chưa thanh toán
5.3. Vấn đề an toàn và quyền truy nhập cơ sở dữ liệu
- Dữ liệu lưu trữ trong CSDL cần phải được bảo vệ để tránh việc truy nhập trái phép
và phá hoại có chủ định hay không chủ định khi thực hiện cập nhật, sửa đổi hay bổ
sung thông tin trong các cơ sở dữ liệu.
- Cần phải có biện pháp bảo vệ chống lại việc đưa dữ liệu vào một cách không nhất
quán ảnh hưởng nghiêm trọng đến tính toàn vẹn dữ liệu.
Các dạng truy cập có chủ định bao gồm:
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
187
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Không cho phép đọc dữ liệu.

Không cho phép sửa đổi dữ liệu.

Không cho phép phá huỷ dữ liệu.
5.3.1. Sự vi phạm an toàn cơ sở dữ liệu
- Vấn đề an toàn cơ sở dữ liệu đề cập đến việc bảo vệ chống lại sự truy cập có chủ
định.
- Việc bảo vệ tuyệt đối các hệ cơ sở dữ liệu khỏi truy nhập là không thể, nhưng phải
có các biện pháp đủ mạnh để ngăn chặn hầu hết truy cập trái phép vào cơ sở dữ liệu.
Các dạng truy cập có chủ định bao gồm:
 Không cho phép đọc dữ liệu.

Không cho phép sửa đổi dữ liệu.

Không cho phép phá huỷ dữ liệu.
5.3.2. Các mức độ an toàn cơ sở dữ liệu
 Mức độ an toàn hệ thống cơ sở dữ liệu
 Mức độ an toàn hệ thống điều hành
 An toàn mức độ mạng
 Nhận diện người sử dụng
 Bảo vệ mức vật lý
 Kiểm tra truy nhập
-
Mức độ an toàn hệ thống cơ sở dữ liệu: Tùy thuộc vào yêu cầu của người sử
dụng mà người quản trị cơ sở dữ liệu cấp phép truy nhập một phần vào cơ sở
dữ liệu. Những người sử dụng khác có thể được phép thực hiện các câu hỏi
truy vấn, nhưng có thể bị ngăn cấm ý định sửa đổi dữ liệu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
188
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Mức độ an toàn hệ thống điều hành: Mức hệ thống kiểm soát toàn bộ mức
điều hành hệ thống. Vấn đề an toàn mức hệ thống điều hành sẽ được đảm
bảo bởi mức độ an toàn hệ thống cơ sở dữ liệu. An toàn trong hệ điều hành
đã được tiến hành tại nhiều cấp độ từ sắp xếp các mật mã truy cập vào hệ
thống cho tới sự cô lập các quá trình đang cùng xử lý trong hệ thống. Tệp hệ
thống cũng cung cấp một số cấp độ bảo vệ. Sự tham khảo những chú ý trong
thư mục là bao quát của những chủ đề này trong các bài học về hệ thống điều
hành.
-
An toàn mức độ mạng. Hầu hết các hệ thống cơ sở dữ liệu đều cho phép truy
cập từ xa thông qua các thiết bị đầu cuối. An toàn dữ liệu mức độ mạng là
chống ăn cắp thông tin, sao chép thông tin và sửa đổi nội dung thông tin trên
đường truyền. Vân đề an toàn cấp mức mạng đã đạt được nhiều kết quả, ứng
dụng phổ biến trên mạng Internet. Danh sách các chú ý trong thư mục đã bao
quát nền tảng nguyên lý của vấn đề an toàn mạng.
-
Nhận diện người sử dụng: Từ định nghĩa an toàn dữ liệu có thể suy ra rằng,
hệ quản trị cơ sở dữ liệu DBMS không cho phép người sử dụng được thực
hiện một thao tác nào nếu không được phép của người quản trị CSDL. Người
quản trị CSDL phải: Xác định cho hệ thống những thao tác mà người sử dụng
được phép thực hiện. Cung cấp một phương tiện cho người sử dụng để hệ
thống nhận biết họ. Nói chung người sử đụng đều được trao những quyền
khác nhau. Những quyền này có thể bảo đảm quyền đọc một số phần của cơ
sở dữ liệu, quyền chèn thêm, xóa hay sửa đổi dữ liệu. Hình thức thông dụng
nhất để nhận ra người sử dụng là mật khẩu, và chỉ có hệ thống
và người sử
dụng biết. Mật khẩu cũng được hệ thống bào vệ như bảo vệ dữ liệu.
-
Bảo vệ mức vật lý: Một mô hình bảo vệ đáng tin cậy cũng có khả năng bị tấn
công vào cơ sở dữ liệu, từ việc phá được mật khẩu đến việc đánh cắp các thiết
bi. Có thể chống đánh cắp khá hiệu quả bằng cách mã hóa, che dấu dữ liệu.
Một hệ thống có bảo mật cao cần phải có những phương thức nhận diện khác
tốt hơn mật khẩu, như nhận diện từng người sử dụng qua một nhân viên bảo
vệ, hoặc kết với các quy định về hành chính...
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
189
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
-
Kiểm tra truy nhập: Với mỗi người sử dụng hệ thống sẽ quản lý một hồ sơ
được phát sinh từ việc các chi tiết về thủ tục xuất trình, xác minh và các chi
tiết được quyền thao tác mà người quản trị cơ sở dữ liệu cấp cho người sử
dụng. Hệ thống sẽ kiểm tra tính pháp lý của mỗi một thao tác của người sử
dụng. Ví dụ yêu cầu được đọc lời đánh giá hàng năm của mỗi một nhân viên,
chỉ có thể được phép nếu cơ sở dữ liệu có chứa thông tin quy định rằng người
yêu cầu phải là Giám đốc, trưởng, phó phòng tổ chức, chánh văn phòng. Tất
cả các đối tượng khác không có trong cơ sở dữ liệu không được phép truy
xuất. DBMS sẽ kiểm tra mỗi một thao tác của người sử dụng xem có vi phạm
các ràng buộc an toàn hay không, nếu có sẽ phải huỷ bỏ. Một ràng buộc truy
nhập nói chung có liên quan đến một bộ phận của cơ sở dữ liệu. Do đó tồn
tại một đặc quyền thích hợp, giả sử là chương trình sẽ kiểm tra mỗi một yêu
cầu của người sử dụng. Chương trình sẽ sắp xếp quyền truy nhập theo mức
độ phức tạp tăng dần sao cho đạt tới quyết định cuối cùng nhanh nhất có thể.
An ninh ở tất cả các cấp độ phải được duy trì nếu an ninh cơ sở dữ liệu được
bảo đảm. Một sự yếu kém ở vấn đề an toàn cấp thấp (cấp độ vật lý hay cấp
độ con người) cho phép sự phá vỡ các biện pháp an toàn nghiêm ngặt ở cấp
độ cao (cấp độ hệ thống cơ sở dữ liệu).
5.3.3. Những quyền hạn khi sử dụng cơ sở dữ liệu
 Đọc một cách hợp pháp: người sử dụng được phép đọc, nhưng không được sửa
đổi nội dung dữ liệu.
 Chèn một cách hợp pháp: là cho phép người sử dụng được chèn thêm dữ liệu
mới vào cơ sở dữ liệu, nhưng không sửa đổi dữ liệu hiện có.
 Sửa đổi một cách hợp pháp: cho phép người sử dụng được phép sửa đổi nội
dung dữ liệu, nhưng không được xoá dữ liệu.
 Xoá một cách hợp pháp: cho phép người sử dụng được phép xoá dữ liệu.
 Cho phép việc tạo và xoá các chỉ số.
 Cho phép việc tạo các mối quan hệ mới.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
190
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
 Sửa đổi cấu trúc: cho phép chèn thêm, sửa đổi hoặc xoá các thuộc tính trong các
quan hệ.
 Bỏ hợp pháp: cho phép xoá các quan hệ.
Một người sử dụng có thể có tất cả các quyền trên, hoặc chỉ có một số quyền hạn
nhất định. Thêm vào đó những dạng của sự cho phép truy cập dữ liệu chúng ta có thể
ban cho người sử dụng được phép sửa đổi cơ cấu cơ sở dữ liệu. Cho phép bỏ và xoá là
khác nhau trong đó xoá hợp pháp là chỉ cho phép xoá bộ dữ liệu.
Nếu một người sử dụng xoá tất cả các bộ của một quan hệ, quan hệ đó sẽ vẫn tồn
tại nhưng quan hệ đó không còn gì. Nếu một quan hệ bị bỏ nó sẽ không còn tồn tại
nữa. Các mệnh đề sau chỉ là một vài ý niệm phạm vi bảo vệ thông tin trong các hệ cơ
sở dữ liệu, chỉ ra các mức truy nhập CSDL và trao quyền cho từng lớp người sử dụng:
1. Người sử dụng được phép truy nhập không điều kiện tới toàn bộ cơ sở dữ liệu, với
mọi phép toán lưu trữ và truy vấn dữ liệu.
2. Người sử dụng không được phép truy nhập tới bất kỳ bộ phận nào của cơ sở dữ liệu,
với mọi phép toán.
3. Người sử dụng có thể đọc đúng một nội dung công việc của họ trong cơ sở dữ liệu,
nhưng không được phép sửa đổi, bổ sung nó.
4. Người sử dụng có thể đọc đúng một nội dung công việc của họ trong cơ sở dữ liệu,
và được phép sửa đổi, bổ sung nó.
5.Người sử dụng có thể đọc và sửa đổi thuộc tính mã nhân viên, họ và tên nhân viên,
đơn vị công tác theo định kỳ vào tuần đầu của mỗi tháng.
6. Người sử dụng cấm đọc thuộc tính nhận xét hàng năm, các thuộc tính mức lương
và ngày lên lương được đọc và sửa đổi, các thuộc tính khác chỉ được đọc. Công việc
chỉ được thực hiện trong khoảng thời gian từ 9 giờ đến 11 giờ trong các ngày của tuần
cuối tháng.
7. Người sử dụng có quyền sử dụng các phép toán thống kê cho thuộc tính mức lương
để tính mức lương trung bình trong từng đơn vị. Cấm sửa đổi dữ liệu.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
191
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
- Đối tượng truy nhập là dữ liệu thì quyền truy nhập:read, insert, select, delete,
write, update (điều chỉnh giá trị thuộc tính), expand (thêm thuộc tính), drop (loại bỏ
cả tệp), index (tạo chỉ mục)…
- Đối tượng truy nhập là chương trình thì quyền truy nhập: run (thi hành chương
trình)…
Khung nhìn –một cơ chế bảo vệ:
Khung nhìn, bằng cách định nghĩa lại cơ sở dử liệu khái niệm, không chỉ tạo điều kiện
thuận lợi khi lập trình trình ứng dụng và làm tăng tính độc lập dữ liệu logic, mà còn
được sử dụng như một cơ chế bảo vệ.
Có hai loại khung nhìn:
- Loại khung nhìn chỉ đọc, không cho phép sửa đổi. Loại khung này gọi là khung chỉ
đọc.Trong nhiều trường hợp, người quản trị CSDL cho phép người sử dụng này được
đọc dữ liệu, nhưng người khác vừa được đọc, vừa được quyền sửa đồi, bổ sung...
- Loại khung nhìn thứ hai cho phép đọc và ghi lên các thành phần của khung nhìn. và
mọi sửa đồi cho khung nhìn có thể được lưu trong lược đồ khái niệm. SQL đề xuất cho
phép đọc/ghi các khung nhìn trong một phạm vi nhất định. Với phương pháp này thiết
kế các chương trình ứng dụng linh hoạt hơn loại khung chỉ đọc. Tuy nhiên, khi thao
tác cập nhật trên các khung nhìn đọc/ghi thường gây tác động đến một số thành phần
của cơ sở dữ liệu không nằm trong khung nhìn.
Ví dụ: Trong một hệ CSDL phân cấp, trong khung nhìn chỉ có kiểu bản ghi gốc, không
có bản ghi phụ thuộc. Nếu xóa xuất hiện của kiểu bản ghi nay, kéo theo phải xóa các
xuất hiện bản ghi phị thuộc. Đây là một hành động không hợp lệ, vi phạm nguyên tắc
không cho người sử dụng được phép xóa một đối tượng mà họ không thấy được trong
khung nhìn. Cũng tương tự như trong mô hình mạng, nếu xóa một bản ghi khi không
biết các bản ghi khác nằm ngoài khung nhìn bhưng có quan hệ với nó. Và nhiều trường
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
192
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
hợp khác tương tự. Vì vậy, tất cả các hệ quản trị cơ sở dữ liệu .DBMS giới hạn quyền
cập nhật các khung nhìn trong một số trường hợp cụ thể.
Ví dụ về hoạt động của ngân hàng, một thư ký cần biết tên của tất cả các khách hàng
có các khoản vay tại nhiều chi nhánh. Người thư ký này không được phép xem những
thông tin về khoản vay đặc biệt mà khách hàng có thể có. Hành động của cô thư ký bị
từ chối khi truy nhập trực tiếp tới quan hệ cho vay, nhưng có thể truy nhập bằng khung
nhìn cust-loan bao gồm các thông tin như: tên của khách hàng và chi nhánh nơi mà
khách đó có khoản vay. Khung nhìn này có thể được định nghĩa trong SQL như sau:
CREATE VIEW cust-loan AS (SELECT branch-name, customer-name
FROM borrower, loan
WHERE borrower.loan-number= loan.loan-number)
Giả sử rằng cô thư ký đưa ra truy vấn SQL như sau:
SELECT *
FROM cust-loan
Như vậy người thư ký được phép xem kết quả của truy vấn trên, tuy nhiên quá trình
xử lý truy vấn này sẽ được thực hiện trên các quan hệ BORROWER and LOAN. Vì
vậy hệ thống phải kiểm tra các quyền hạn trên truy vấn của thư ký trước khi bắt đầu
quá trình xử lý truy vấn. Việc tạo một khung nhìn không phụ thuộc vào các quan hệ
nguồn. Một người sử dụng tạo ra một khung nhìn không được nhận tất cả các đặc
quyền trên khung nhìn. Ví dụ, người sử dụng không được quyền cập nhật trên khung
nhìn nếu không có quyền cập nhật vào quan hệ bằng khung nhìn đã được định nghĩa.
Nếu người sử dụng tạo ra một khung nhìn trên những quyền hạn không được phép, thì
hệ thống sẽ phủ nhận yêu cầu tạo khung nhìn. Trong ví dụ khung nhìn cust-loan ở trên,
người tạo khung nhìn phải có quyền đọc trên cả hai quan hệ BORROWER and LOAN.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
193
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
5.3.4 Cấp phép các quyền truy nhập (bảo vệ tính riêng tư)
Mục đích: Bảo đảm các tài nguyên không bị sử dụng bởi các cá nhân không có
quyền hoặc theo các cách không hợp pháp
- Gán cho mỗi loại người dùng 1 số quyền truy cập nhất định
- Cho phép 1 số người dùng được phép ủy quyền, tức là giao quyền truy nhập cho
người khác
- Để thực hiện việc giao quyền ta phải lập 2 thủ tục “ủy quyền” (GRANT) và “rút
quyền” (REVOKE)
a. Ủy quyền:
Một người dùng có phép ủy quyền với 1 đối tượng truy nhập nào đó có thể dùng
lệnh GRANT để trao quyền truy nhập cho người khác
Người cho có thể chỉ là người được phép ủy quyền (không nhất thiết là người
chủ đứng tên của đối tượng)
Cú pháp của lệnh GRANT:
GRANT <các quyền> ON <bảng/view> TO <người dùng> [WITH GRANT OPTION]
Nếu phần tùy chọn (trong []) được dùng thì có nghĩa là cho phép người dùng được
phép ủy quyền tiếp cho người khác
Người dùng: tên 1 người, 1 nhóm, 1DS hoặc dùng từ khóa Public, World
Ví dụ: Grant read on R to Nga with Grant Option
Trao quyền đọc bảng R cho người dùng Nga, người này có thể trao tiếp quyền cho
người khác.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
194
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
b. Rút quyền
Cú pháp của lệnh Revoke:
REVOKE <các quyền> ON <bảng/view> FROM <người dùng>
Ví dụ: Rút quyền đọc bảng R của người dùng tên Nga
Revoke Read On R From Nga
5.3.5. Kiểm tra dấu vết
Nhiều ứng dụng về bảo mật cơ sở dữ liệu cần duy trì một cơ chế kiểm tra dấu vết.
- Một sự kiểm tra dấu vết là một bản lưu tất cả các thay đổi khi thực hiện các phép
lưu trữ như chèn thêm, xoá và sửa đổi thông tin trong CSDL cùng với những thông tin
phát sinh thêm trong quá trình thực hiện.
- Việc kiểm tra dấu vết sẽ giúp cho việc dò tìm được các nguyên nhân nhanh và chính
xác.
Ví dụ: Nếu một tài khoản nào đó được phát hiện không cân đối, người quản trị có thể
lần dấu vết của tất cả các cập nhật đã xảy ra trong tài khoản để tìm thấy sự cập nhật
không đúng (có thể là gian lận) của những người đã thực hiện việc cập nhật.
- Tạo ra một sự kiểm tra dấu vết bằng cách định nghĩa các chuỗi phản ứng thích hợp
trên các cập nhật quan hệ (sử dụng hệ thống các giá trị đã định nghĩa để nhận biết tên
người sử dụng và lần truy nhập).
- Nhiều hệ thống cơ sở dữ liệu cung cấp phương pháp tạo sự kiểm tra dấu vết thuận
tiện và dễ sử dụng.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
195
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
BÀI TẬP CHƯƠNG V
CÂU HỎI TRẮC NGHIỆM
Câu 1.An toàn dữ liệu có thể hiểu là:
a. Thống nhất các tiêu chuẩn, thủ tục và các biện pháp bảo vệ, an toàn dữ liệu
b. Tính nhất quán và toàn vẹn dữ liệu
c. Dễ dàng cho công việc bảo trì
d. Ngăn chặn các truy nhập trái phép, sai quy định từ trong ra hoặc từ ngoài vào…
Câu 2. Người sử dụng có thể truy cập:
a. Môt phần cơ sở dữ liệu
b. Toàn bộ cơ sở dữ liệu
c. Hạn chế
d. Phụ thuộc vào quyền truy nhập
Câu 3.Cơ sở dữ liêu cần thiết phải bảo vệ vì:
a. Rất nhiều loai dữ liệu được tải về giữ trên các máy cục bộ để khai thác
b. Một bô sưu tâp rất lớn về các loại dữ liệu tác nghiệp
c. Truy suất vào cơ sở dữ liệu bằng nhiều ngôn ngữ thao tác dữ liệu khác nhau
d. Tài nguyên chung, nhiều người sử dụng
Câu 4.Hãy chọn từ/cụm từ tương ứng để hoàn thiện khẳng định sau: Hình thức thông
dụng nhất để nhận biết người sử dụng là mật khẩu......
a. Đảm bảo toàn vẹn dữ liệu
b. Và các quy tắc bảo vệ cơ sở dữ liệu
c. Mới được phép truy nhập CSDL
d. Chỉ có hệ thống và người sử dụng biết
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
196
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 5.Không nhất quán dữ liệu:
a. Không xuất hiện mâu thuẫn thông tin
b. Không thể sửa đổi, cập nhật, bổ sung dữ liêu
c. Có thể triển khai tra cứu tìm kiếm
d. Làm cho dữ liệu mất đi tính toàn ven của nó
Câu 6. Rằng buộc dữ liệu là:
a. Các định nghĩa, tiên đề, định lý
b. Quy tắc biểu diễn cấu trúc dữ liêu
c. Các quy tắc quy định
d. Mối quan hệ giữa các thực thể dữ liệu
Câu 7. Rằng buộc kiểu:
a. Quy tắc đăt tên cơ sở dữ liêu
b. Mối quan hê giữa các thưc thể dữ liệu
c. Quy tắc truy nhập CSDL
d. Mô tả tính chất của các thuộc tính khi tạo lâp CSDL
Câu 8. Rằng buộc giải tích
a. Mô tả tính chất của các thuộc tính khi tạo lâp CSDL
b. Quy tắc biểu diễn cấu trúc dữ liệu
c. Các phép toán đai số quan hê
d. Mối quan hệ giữa các thuộc tính được biểu diễn bằng các biểu thức toán học
Câu 9. Rằng buộc logic:
a. Các phép so sánh
b. Mối quan hệ giữa các thuộc tính được biểu diễn bằng các biểu thức toán học
c. Các phép toán quan hệ
d. Mối quan hệ giữa các thuộc tính được biểu diễn bằng các phụ thuộc hàm
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
197
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
Câu 10. Bảo vệ an toàn cơ sở dữ liệu có thể là:
a. Không cho phép ghi đè dữ liệu
b.Không cho phép cập nhât dữ liệu
c.Không cho phép sửa đổi dữ liệu
d. Không cho phép đọc, sửa, ghi, xóa dữ liệu…
Câu 11. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khẳng định sau: Hình thức thông
dụng nhất để nhận biết người sử dụng là mật khẩu......
a. Đảm bảo toàn vẹn dữ liệu
b. Và các quy tắc bảo vệ cơ sở dữ liệu
c. Mới được phép truy nhập CSDL
d. Chỉ có hệ thống và người sử dụng biết
Câu 12. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khẳng định sau: Toàn vẹn
dữ liệu nghĩa là ......
a. Có thể thực hiện các chiến lược truy nhập dữ liệu.
b. Bảo đảm tính độc lập dữ liệu tại mọi thời điểm
c. Có thể tìm kiếm tại mọi thời điểm
d. Dữ liệu trong CSDL luôn luôn chính xác tại mọi thời điểm
Câu 13. An toàn dữ liệu có thể là:
a. Chống sửa đổi hay phá hoai
b.Cần thiết phải quản trị, bảo vệ tập trung
c. Chống vi phạm có chủ định
d. Cần phải được bảo vệ chống truy nhập trái phép
Câu 14. Mức độ an toàn hệ thống CSDL:
a. Có thể được phép thực hiện các câu hỏi truy vấn
b.Người quản trị CSDL cấp phép truy nhập cho bất kỳ người sử dụng
c. Phụ thuộc vào người sử dụng không cần cấp phép của người quản trị
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
198
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
d.Người quản trị cấp phép truy nhập cho người sử dụng khi có nhu cầu
Câu 15. Mức bảo vệ vật lý:
a.Nhận diện bằng các phương pháp trao quyền.
b.Nhận diện bằng mặt khẩu
c.Nhận diện bằng cách kiểm tra
d. Nhận diện qua nhân viên bảo vệ, hoặc các quy định về hành chính...
Câu 16. Hãy chọn từ/cụm từ tương ứng để hoàn thiện khẳng định sau: Người sử dụng
được quyền ghi và đọc bao gồm các quyền như:
a.GRANT SELECT ON R TO GROUP /WORLD
b.GRANT READ ON R TO GROUP /WORLD
c.GRANT ALL ON R TO GROUP /WORLD
d.GRANT READ/WRITE ON R TO GROUP /WORLD
Câu 17. Dạng thu hồi quyền truy nhập:
a.REVOKE ON <THUộC tính>FROM
b.REVOKE <NGười dụng sử>ON FROM
c.REVOKE ON FROM
d.REVOKE <các thao tác> ON <quan hệ> FROM <người sử dụng>
Câu 18. Chọn một khẳng định nào sau đây là đúng nhất
a.Tổ chức lưu trữ theo lý thuyết cơ sở dữ liệu, các thuộc tính có thể lặp lại.
b.Tính toàn vẹn dữ liệu đảm bảo dữ liệu luôn luôn đúng
c.Tính nhất quán dữ liệu đảm bảo cho sự cập nhật, bổ sung dễ dàng
d.Sự không nhất quán dữ liệu trong lưu trữ làm cho dữ liệu mất đi tính toàn vẹn
Câu 19. Mục tiêu của cơ sở dữ liệu là:
a.Tính toàn vẹn dữ liệu
b.Tính phụ thuộc dữ liệu
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
199
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
c.Phản ánh thế giới thực dữ liệu
d.Tính độc lập dữ liệu
CÂU HỎI VÀ BÀI TẬP
1.Vì sao phải bảo vệ an toàn các hệ thống cơ sở dữ liệu.
2. Các ràng buộc toàn vẹn. Ví dụ minh hoạ.
3. Tính bảo mật.
4. Nhận diện người sử dụng.
5. Bảo vệ vật lý.
6. Kiểm tra truy nhập.
7. Khung nhìn –Một cơ chế bảo vệ.
8. Sử dụng ngôn ngữ vấn tin định nghĩa các quyền truy nhập 9. Tính bảo mật trong
SQL.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
200
TÀI LIỆU HỌC TẬP CƠ SỞ DỮ LIỆU
TÀI LIỆU THAM KHẢO
1. Nguyễn Tuệ, Giáo trình Nhập môn CSDL, NXBGD, 2009.
2. Phạm Thế Quế, Cơ sở dữ liệu, Tài liệu đào tạo Đại học từ xa, Học viện Công nghệ
Bưu chính Viễn thông, 2006
3. Đỗ Trung Tuấn, Cơ sở dữ liệu, NXB ĐHQGHN, 2006
4. Nguyễn Thị Ngọc Mai, Cơ sở dữ liệu, NXB Lao động - Xã hội, 12-2007
5. Đỗ Trung Tuấn, Nhập môn Cơ sở dữ liệu, Học viện Công nghệ Bưu chính Viễn thông,
2006.
KHOA CNTT – TRƯỜNG ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
Download