Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Transcript of Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
1.1. Một số khái niệm
a/ Cơ sở dữ liệu
- 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.
- Là một hệ thống thông tin có cấu trúc được lưu trữ trên các thiết bị như
băng đĩa,.. để thỏa mãn yêu cầu khai thác đồng thời của nhiều người sử dụng.
CSDL gắn liền với đại số, logic toán và một số lĩnh vực khác.
Ví dụ, để quản lý việc học tập trong một môi trường đại học, các dữ liệu là các
thông tin về sinh viên, về các môn học, điểm,...Chúng ta tổ chức các dữ liệu đó
thành các bảng SINHVIÊN, MÔNHỌC, HỌCPHẦN, ĐIỂM và lưu giữ chúng vào
sổ sách hoặc sử dụng một phần mềm máy tính để lưu giữ chúng trên máy tính. Ta
có một tập các dữ liệu có liên quan đến nhau và mang nhiều ý nghĩa, đó là một cơ
sở dữ liệu. Cấu trúc của cơ sở dữ liệu và một vài mẫu dữ liệu ví dụ được mô tả như
sau:
1
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
b/ Hệ quản trị CSDL.
- Hệ quản trị cơ sở dữ liệu (DataBase Management System) là hệ thống phần
mềm cho phép tạo lập CSDL và điều khiển mọi truy cập đối với CSDL đó.
VD: Microsoft Access, SQL server, Oracle, Visual Foxpro,..
Các chức năng chủ yếu của một hệ quản trị cơ sở dữ liệu:
- Mô tả dữ liệu tạo lập và duy trì sự tồn tại của CSDL
- Cho phép truy xuất vào CSDL theo thẩm quyền đã được cấp
- Cập nhật, chèn thêm, loại bỏ hay sửa đổi dữ liệu mức tệp.
- Đảm bảo an toàn, bảo mật dữ liệu và tính toàn vẹn dữ liệu.
- Tạo cấu trúc dữ liệu tương ứng với mô hình dữ liệu.
2
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
- Đảm bảo tính độc lập dữ liệu. Tức là cấu trúc lưu trữ dữ liệu độc lập với các
trình ứng dụng dữ liệu.
- Tạo mối liên kết giữa các thực thể.
- Cung cấp các phương tiện sao lưu, phục hồi (backup, recovery).
- Điều khiển tương tranh
Các bước thực hiện của hệ quản trị CSDL có thể tóm tắt như sau:
- Người sử dụng đưa ra yêu cầu truy nhập bằng ngôn ngữ con dữ liệu.
- DBMS sẽ tiếp nhận và phân tích yêu cầu.
- DBMS xem xét sơ đồ ngoài, ánh xạ ngoài, sơ đồ quan niệm, ánh xạ trong,...
- Thực hiện các thao tác trên CSDL lưu trữ.
Các thành phần của một hệ QTCSDL: Một hệ QTCSDL thông thường có các thành
phần chính như sau:
- Ngôn ngữ định nghĩa dữ liệu (Data Definition Language).
- Ngôn ngữ thao tác dữ liệu (Data Manipulation Language).
- Ngôn ngữ truy vấn dữ liệu (Query Language).
- Bộ báo cáo (Report Write).
- Bộ đồ hoạ (Graphics Generator).
- Bộ giao tiếp ngôn ngữ chủ (Host Language Interface).
- Ngôn ngữ thủ tục (Procedure Language)
- Từ điển dữ liệu.
- Bộ phát sinh ứng dụng.
c/ Hệ cơ sở dữ liệu
Là hệ thống gồm 4 thành phần:
Cơ sở dữ liệu hợp nhất: CSDL của hệ có hai tính chất là tối thiểu hóa dư
thừa và được chia sẻ.
Những người sử dụng: là bất kỳ người nào có nhu cầu truy cập vào CSDL,
có nghĩa là người sử dụng bao gồm tất cả những người sử dụng cuối, những người
3
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
viết chương trình ứng dụng và những người điều khiển toàn bộ hệ thống hay còn
gọi là người quản trị cơ sở dữ liệu.
Phần mềm hệ quản trị CSDL
Phần cứng bao gồm các thiết bị nhớ thứ cấp được sử dụng để lưu trữ CSDL
1.2. Kiến trúc của hệ CSDL
- Tại đáy của kiến trúc, ta nhìn thấy một sự biểu diễn của thiết bị nhớ ngoài
lưu trữ dữ liệu và siêu dữ liệu (thông tin về cấu trúc của CSDL).
- Bộ quản lý lưu trữ có nhiệm vụ lấy ra thông tin yêu cầu từ những thiết bị
lưu trữ dữ liệu và thay đổi những thông tin này khi được yêu cầu bởi mức trên nó
của hệ thống.
- Bộ xử lý câu hỏi có nhiệm vụ tìm ra một cách tốt nhất một thao tác được
yêu cầu và phát ra các lệnh đối với bộ quản lý lưu trữ để thực thi thao tác đó.
- Bộ quản trị giao dịch: có trách nhiệm đảm bảo tính toàn vẹn của hệ thống
này. Nó phải đảm bảo rằng một số thao tác thực hiện đồng thời không cản trở mỗi
thao tác khác và hệ thống sẽ không mất dữ liệu thậm chí khi lỗi hệ thống xảy ra. Nó
4
Các thay đổi sơ đồ Các truy vấn Các thay đổi dữ liệu
Bộ quản trị giao dịch
Bộ xử lý câu hỏi
Bộ quản lý lưu trữ
Dữ liệuSiêu dữ liệu
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
tương tác với bộ xử lý câu hỏi, do đó nó phải biết dữ liệu nào được tương tác bởi
các tương tác hiện thời để tránh sự đụng độ các hành động.
- Tại đỉnh của kiến trúc, ta thấy 3 kiểu thao tác đối với hệ quản trị CSDL
gồm:
+ Các truy vấn: đây là các thao tác hỏi đáp về dữ liệu được lưu trữ
trong CSDL.
+ Các cập nhật dữ liệu: đây là các thao tác thay đổi dữ liệu như: thêm,
sửa, xóa dữ liệu trong CSDL.
+ Các thay đổi sơ đồ: các lệnh này thường được phát ra bởi một người
sử dụng được cấp phép, thường là những người quản trị CSDL.
1.3. An toàn dữ liệu và độc lập dữ liệu
a/ An toàn dữ liệu
- An toàn dữ liệu tức là các hệ CSDL cần phải có khả năng phục hồi lại dữ liệu khi
có sự hỏng hóc xảy ra đồng thời 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.
-Để thực hiện công việc này các hệ CSDL cho phép tạo ra các khung nhìn (View) mà
người sử dụng chỉ được phép quan sát dữ liệu trên các khung nhìn.
- Khung nhìn không tồn tại vật lý như tập tin nhưng có thể vấn tin nó giống như tập
tin.
Ví dụ: Giả sử có quan hệ NHANVIEN(TEN,DIA_CHI,TEN_CTY, LUONG). Để
người dùng có thể truy cập vào file dữ liệu này nhưng không được biết lương của
nhân viên, khi đó ngôn ngữ SQL tạo ra khung nhìn như sau:
CREATE VIEW L_NHAN_VIEN
SELECT TEN, DIA_CHI,TEN_CTY
FROM NHAN_VIEN;Khung nhìn được tạo ra như một quan hệ với tên L_NHAN_VIEN(TEN,
DIA_CHI,TEN_CTY).
5
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
b/ Độc lập dữ liệu
Khả năng thay đổi một định nghĩa sơ đồ trong một mức mà không ảnh hưởng
đến định nghĩa sơ đồ trong mức cao hơn tiếp theo được gọi là tính độc lập dữ liệu.
Có hai mức độc lập dữ liệu:
- Độc lập dữ liệu mức vật lý (physical data independence) là khả năng thay
đổi sơ dồ vật lý mà không dẫn đến các chương trình ứng dụng phải viết lại. Các
thay đổi tại mức vật lý đôi khi là cần thiết để tăng hiệu năng hệ thống.
- Độc lập dữ liệu mức logic (logical data independence) là khả năng thay đổi
sơ đồ logic mà không dẫn đến các chương tình ứng dụng phải viết lại. Các thay đổi
tại mức logic là cần thiết bất kể khi nào cấu trúc logic của cơ sở dữ liệu bị sửa đổi.
Ví dụ, khi các tài khoản tiền tệ chứng khoán được thêm vào hệ thống ngân hàng.
Độc lập dữ liệu mức logic khó đạt hơn so với độc lập dữ liệu mức vật lý do
các chương trình ứng dụng phụ htuộc nhiều vào cấu trúc logic của dữ liệu mà họ
đang truy cập.
- Tính độc lập dữ liệu là tính bất biến của các hệ ứng dụng đối với các thay đổi
trong cấu trúc lưu trữ và chiến lược truy nhập.
- Khi thay đổi cấu trúc lưu trữ và các chiến lược truy nhập dữ liệu không kéo theo
thay đổi nội dung của các chương trnh ứng dụng và ngược lại, khi các chương trnh
thay đổi cũng không làm ảnh hưởng đến cấu trúc lưu trữ và các chiến lược.
- Tính độc lập dữ liệu đảm bảo cho việc biểu điễn nội dung thông tin cho các thực
thể là duy nhất và đảm bảo tính toàn vẹn, nhất quán dữ liệu trong lưu trữ.
1.4. Ràng buộc dữ liệu
- Giữa các thực thể tồn tại các mối quan hệ ràng buộc nhau. Các ràng buộc
này chính là tập các quy tắc, quy định yêu cầu dữ liệu trong CSDL phải thỏa mãn.
Mục đích xây dựng các ràng buộc dữ liệu là nhằm bảo đảm tính độc lập và tính toàn
vẹn dữ liệu. Các hệ CSDL cần phải có các cơ chế cho việc mô tả các ràng buộc và
quản lý các ràng buộc đã được mô tả.
- Có rất nhiều loại ràng buộc:
6
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ràng buộc về kiểu:
là loại ràng buộc thấp nhất, mô tả tính chất của các thuộc tính khi tạo lập CSDL.
Ngoài tên của thuộc tính, còn có kiểu thuộc tính là: chuỗi kí tự, số, ngày hay kiểu
logic và độ dài ?
Ví dụ: kiểu của số điện thoại thì phải là kiểu chuỗi. Nếu ta nhập vào là kiểu số thì
hệ thống đưa ra phản ứng dữ liệu không hợp lệ.
Ràng buộc giải tích:
là các ràng buộc 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.
Ví dụ: Nhập "đơn giá" và "số lượng" của mặt hàng, hệ thống cũ tự động tính giá trị
của thuộc tính "thành tiền" theo công thức: số lượng *đơn giá = thành tiền.
Ràng buộc logic:
Mối quan hệ giữa các thuộc tính với nhau không phải là các ràng buộc giải tích
được gọi là phụ thuộc hàm. Thuộc tính Y phụ thuộc hàm vào thuộc tính X tức là
mỗi giá trị của X xác định một giá trị của Y.
Ví dụ: Giá trị của số điện thoại có thể xác định các thông tin về thuê bao có số điện
thoại đó. Những ràng buộc logic có thể là ánh xạ một – một hoặc một – nhiều.
1.5. Mô hình dữ liệu
Mô hình dữ liệu là sự trừu tượng hoá môi trường thực. Mỗi loại mô hình dữ
liệu đặc trưng cho một cách tiếp cận dữ liệu khác nhau của những nhà phân tích
thiết kế CSDL. Mỗi loại mô hình dữ liệu đều có những ưu điểm và những mặt hạn
chế của nó, nhưng vẫn có những mô hình dữ liệu nổi trội và được nhiều người quan
tâm nghiên cứu.
Sau đây chúng ta sẽ điểm qua lịch sử phát triển của các mô hình dữ liệu:
Vào những năm sáu mươi, thế hệ đầu tiên của CSDL ra đời dưới dạng mô
hình thực thể kết hợp, mô hình mạng và mô hình phân cấp.
Vào những năm bảy mươi, thế hệ thứ hai của CSDL ra đời. Đó là mô hình dữ
liệu quan hệ do EF. Codd phát minh. Mô hình này có cấu trúc logic chặt chẽ. Đây là
7
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
mô hình đã và đang được sử dụng rộng khắp trong công tác quản lý trên phạm vi
toàn cầu. Việc nghiên cứu mô hình dữ liệu quan hệ nhằm vào lý thuyết chuẩn hoá
các quan hệ và là một công cụ quan trọng trong việc phân tích thiết kế các hệ CSDL
hiện nay. Mục đích của nghiên cứu này nhằm bỏ đi các phần tử không bình thường
của quan hệ khi thực hiện các phép cập nhật, loại bỏ các phần tử dư thừa.
Sang thập kỷ tám mươi, mô hình CSDL thứ ba ra đời, đó là mô hình cơ sở dữ
liệu hướng đối tượng, mô hình cơ sở dữ liệu phân tán, mô hình cơ sở dữ liệu suy
diễn,…
a/ Mô hình phân cấp:
Mô hình dữ liệu là một cây trong đó các nút biểu diễn tập thực thể, giữa các
nút con và nút cha được thể hiện theo một mối quan hệ xác định.
Trong mô hình CSDL phân cấp, dữ liệu được biểu diễn bằng cấu trúc cây. Một
CSDL phân cấp là tập các cây (rừng cây). Trong mỗi một cây chỉ chứa một và chỉ
một xuất hiện của bản ghi gốc, gọi là bản ghi đỉnh, và dưới nó là tập các xuất hiện
của các bản ghi phụ thuộc. Các bản ghi phụ thuộc có thể là tuỳ ý hoặc không tồn tại.
Một bản ghi gốc có thể có một số bất kỳ các bản ghi phụ thuộc và các bản ghi phụ
thuộc có thể có một số các bản ghi phụ thuộc mức thấp hơn...
Ví dụ:
8
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Hình trên biểu diễn một mô hình CSDL phân cấp về tuyến cáp và các loại cáp. Dữ
liệu được biểu diễn bằng 4 cấu trúc cây đơn giản, trong đó gốc là xuất hiện kiểu bản
ghi loại cáp bao gồm Mã cáp, tên cáp, số lượng, mã nước sản xuất và tên nước sản
xuất. Các bản ghi phụ thuộc là kiểu các bản ghi các tuyến cáp có lắp đặt các loại cáp
đó, bao gồm các thông tin về Mã tuyến, độ dài tuyến và ngày lắp đặt cáp. Như vậy
các bản ghi gốc là các kiểu bản ghi về các loại cáp đã được lắp đặt và các bản ghi
phụ thuộc là các bản ghi về thông tin các tuyến cáp.
Theo định nghĩa, không thể có các bản ghi phụ thuộc mà không tồn tại bản ghi gốc,
nghĩa là không thể tồn tại các loại cáp mà chưa được lắp đặt trên một tuyến nào cả.
Như vậy có thể có thể tồn tại các loại cây vừa có xuất hiện của bản ghi gốc và các
bản ghi phụ thuộc, nghĩa là mỗi một loại cáp có thể được lắp đặt trên nhiều tuyến
cáp khác nhau và trên một tuyến cáp có thể có nhiều loại cáp khác nhau được lắp
đặt. Có loại cây chỉ tồn tại bản ghi gốc thoái hoá, dưới nó không tồn tại bản ghi phụ
thuộc, nghĩa là có ít nhất một loại cáp chưa được đưa vào lắp đặt sử dung. Theo
định nghĩa, không tồn tại loại cây chỉ có các bản ghi phụ thuộc mà không có bản
9
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
gốc, tức là trên mọi tuyến cáp phải có ít nhất một loại cáp. Điều gì sẽ xẩy ra khi trên
trên một tuyến nào đó có duy nhất một loại cáp bị huỷ bỏ.
Tóm lại thông tin tổ chức lưu trữ theo mô hình phân cấp được biểu diễn dữ
liệu trong một tệp duy nhất theo cấu trúc cây. Trong mỗi một cây, tồn tại một và chỉ
duy nhất một xuất hiện kiểu bản ghi gốc và cùng với nó có một tập các xuất hiện
kiểu bản ghi phụ thuộc. Khi thao tác trên CSDL phân cấp bằng ngôn ngữ thao tác
dữ liệu, có nhiều khả năng xẩy ra thừa hoặc thiếu thông tin, mâu thuẫn thông tin dẫn
đến sự không nhất quán dữ liệu trong lưu trữ. Tính toàn vẹn của dữ liệu không được
đảm bảo. Các câu hỏi hỏi-đáp, tìm kiếm không có tính đối xứng. Tính độc lập của
dữ liệu dễ bị vi phạm. Tính ổn định không cao.
b/ Mô hình mạng
Mô hình dữ liệu mạng là mô hình thực thể quan hệ, trong đó các mối liên kết
bị hạn chế trong kiểu một - một và nhiều – một. Trong mô hình CSDL mạng, dữ
liệu được biểu diễn trong các bản ghi liên kết với nhau bằng các mối nối liên kết
(link) tạo thành một đồ thị có hướng. CSDL mạng có cấu trúc tổng quát hơn so với
cấu trúc CSDL phân cấp. Mỗi một xuất hiện của một bản ghi có thể có rất nhiều các
xuất hiện kiểu bản ghi trên nó và các xuất hiện kiểu bản ghi dưới nó. Ngoài các kiểu
bản ghi biểu diễn dữ liệu còn có kiểu bản ghi các phần tử kết nối, biểu diễn sự kết
hợp giữa các biểu diễn dữ liệu. Cho phép mô hình hoá tương ứng nhiều - nhiều.
10
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Hình trên biểu diễn một mô hình CSDL mạng về các tuyến cáp và các loại cáp được
lắp đặt. Ngoài các xuất hiện kiểu bản ghi tuyến cáp và các xuất hiện kiểu các bản
ghi các loại cáp còn có các xuất hiện kiểu các bản ghi về các phần tử kết nối đó là
các phần tử số lượng. Các phần tử này kết nối tuyến cáp và các loại cáp là thông tin
về tình hình lắp đặt. Sơ đồ T1--> 300 --> M01 chỉ ra rằng tuyến T1 có 10 cáp M01,
T1 --> 18 --> M02 có nghĩa là T1 có 18 cáp loại có mã số là M02...
• Mạng chứa hai kiểu thực thể: Trong mỗi một tuyến cáp, có nhiều loại cáp khác
nhau với số lượng khác nhau. Mỗi một loại cáp có thể có mặt trong nhiều tuyến cáp
khác nhau. Kiểu bản ghi số lượng có chức năng liên kết hai kiểu bản ghi tuyến cáp
11
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
và các loại cáp. Mỗi một xuất hiện kiểu bản ghi số lượng biểu diễn mối liên kết giữa
các bản ghi tuyến cáp với các bản ghi loại cáp. Thiết lập mối liên kết giữa một
tuyến cáp và một loại cáp sao cho mỗi xuất hiện tương ứng của số lượng đều có mặt
trong xuất hiện các tuyến cáp và loại cáp. Ví dụ tuyến cáp “T1” và loại cáp mã
“M01” có mối liên kết với số lượng là 10. “T5” và “M07” không có mối liên kết,
điều này có nghĩa là loại cáp “M07” chưa có mặt trong một tuyến nào cả và tuyến
“T5” chưa có một loại cáp nào được lắp đặt.
• Mạng chứa hơn hai kiểu thực thể: Liên kết n kiểu thực thể biểu diễn bằng một kiểu
bản ghi liên kết n kiểu bản ghi đó với nhau. Mỗi xuất hiện của bản ghi liên kết sẽ là
thành viên của đúng một xuất hiện của một trong số n kiểu bản ghi. Như vậy sẽ biểu
diễn mối liên kết n thực thể tương ứng.
c/ Mô hình thực thể liên kết (mô hình ER)
Mô hình thực thể liên kết dựa trên cơ sở sự nhận thức của thế giới thực bao
gồm một tập các đối tượng cơ sở được gọi là các thực thể và một tập các liên kết
giữa các đối tượng này. Nó được phat triển nhằm cho phép thiết kế cơ sở dữ liệu
bằng cách đặc tả một sơ đồ xí nghiệp, biểu diễn cấu trúc logic tổng thể của cơ sở dữ
liệu xí nghiệp. Mô hình ER là một trong các mô hình dữ liệu ngữ nghĩa, tức là nó cố
gắng biểu diễn các ngữ nghĩa của dữ liệu trong thế giới thực. Mục đích của mô hình
ER là cho phép mô tả sơ đồ khái niệm của một xí nghiệp mà không quan tâm đến
tính hiệu quả hay vấn đề thiết kế cơ sở dữ liệu mức vật lý. Các ký hiệu cơ sở mà mô
hình thực thể sử dụng, gồm có:
* Thực Thể (entity)
Thực thể là một đối tượng cụ thể hay trừu tượng trong thế giới thực mà nó
tồn tại và có thể phân biệt được với các đối tượng khác, chẳng hạn sinh viên
Nguyễn Văn Thành, lớp Cao Đẳng Tin Học 2A, môn học Cơ Sở Dữ Liệu, xe
máy có biển số đăng ký 52-0549,… là một thực thể hoặc khách hàng Nguyễn Văn
Thanh, cũng là một thực thể
* Thuộc tính (attribute)
12
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Các đặc điểm riêng của thực thể gọi là các thuộc tính, mà nó kết hợp với một
thực thể trong tập thực thể một giá trị từ miền giá trị của thuộc tính. Thông thường,
miền giá trị của một thuộc tính là một tập các số nguyên, các số thực hay xâu kí tự
Chẳng hạn các thuộc tính của sinh viên Nguyễn Văn Thành là: mã số sinh viên, giới
tính, ngày sinh, hộ khẩu thường trú, lớp đang theo học, …
* Loại thực thể (entity type)
Là tập hợp các thực thể có cùng thuộc tính. Mỗi loại thực thể đều phải
được đặt tên sao cho có ý nghĩa. Một loại thực thể được biểu diễn bằng một
hình chữ nhật.
Ví dụ các sinh viên có mã sinh viên là “CĐTH19”,"CĐTH51”, “TCTH65”,… nhóm
lại thành một loại thực thể, được đặt tên là Sinhvien
Tương tự trong ứng dụng quản lý điểm của sinh viên ta có các loại thực thể như
Monhoc, Lop, Khoa,…
* Khoá (key)
Khoá của loại thực thể E là một hay một tập các thuộc tính của E có thể
dùng để phân biệt hai thực thể bất kỳ của E.
Ví dụ khoá của loại thực thể Sinhvien là MASV, khóa của thực thể Khachhang là
MAKH,...
* Mối liên kết
Mối liên kết diễn tả sự liên hệ giữa các loại thực thể trong một ứng dụng tin
học. Ví dụ mối kết hợp giữa hai loại thực thể Sinhviên và Lop, mối kết hợp
giữa Sinhviên với Mônhọc,...
Mối liên kết được biểu diễn bằng một hình elip và hai bên là hai nhánh
gắn kết với các loại thực thể (hoặc mối kết hợp) liên quan, tên mối kết hợp
thường là: thuộc, gồm , chứa,...
Chẳng hạn giữa hai loại thực thể Sinhvien và Lop có mối kết hợp “thuộc”
như sau:
13
Sinhvien Lopthuộc
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
d/ Mô hình quan hệ
Mô hình dữ liệu quan hệ (Ralational Data Model)- gọi tắt là mô hình quan
hệ, do EF.Codd đề xuất năm 1970. Nền tảng lý thuyết của nó là khái niệm lý thuyết
tập hợp trên các quan hệ, tức là tập của các bộ giá trị.
Mô hình này dựa trên khái niệm lý thuyết tập hợp của các quan hệ, tức là tập
các k-bộ với k là cố định. Các khái niệm xuất hiện trong mô hình này gồm: thuộc
tính, kiểu dữ liệu, miền giá trị, bộ, quan hệ, lược đồ quan hệ, khóa, siêu khóa.
Chúng ta sẽ tìm hiểu cụ thể những vấn đề này ở phần sau
1.6. Các dạng ngôn ngữ dữ liệu
Một hệ cơ sở dữ liệu cung cấp hai kiểu ngôn ngữ khác nhau: một ngôn ngữ đặc tả
sơ đồ cơ sở dữ liệu và một ngôn ngữ biểu diễn các truy vấn và các cập nhật cơ sở
dữ liệu.
a/ Ngôn ngữ định nghĩa dữ liệu (Data Definition Langguage –DDL)
Một sơ đồ cơ sở dữ liệu đặc tả bởi một tập các định nghĩa được biểu diễn bởi
một ngôn ngữ đặc biệt gọi là ngôn ngữ định nghĩa dữ liệu. Kết quả của việc dịch
các lệnh của ngôn ngữ này là một tập các bảng được lưu trữ trong một tệp đặc biệt
được gọi là từ điển dữ liệu hay thư mục dữ liệu.
Một từ điển dữ liệu là một tệp chứa các siêu dữ liệu có nghĩa là các dữ liệu về
dữ liệu. Tệp này được tra cứu trước khi dữ liệu thực sự được đọc hay được sửa đổi
trong hệ cơ sở dữ liệu.
Cấu trúc lưu trữ và các phương pháp truy nhập được sử dụng bởi một hệ cơ
sở dữ liệu được đặc tả bởi một tập các định nghĩa trong một kiểu đặc biệt của DDL
là ngôn ngữ định nghĩa và lưu trữ dữ liệu. Kết quả của việc dịch các định nghĩa này
là một tập các chỉ thị đặc tả các chi tiết cài đặt của cơ sở dữ liệu, các chi tiết này
thường được che dấu đối với những người sử dụng.
b/ Ngôn ngữ thao tác dữ liệu (Data Manipulation Langguage –DML)
14
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Các mức trừu tượng dữ liệu (mức vật lý, mức logic và mức khung nhìn)
không chỉ áp dụng đối với định nghĩa và cấu trúc dữ liệu mà đối với cả thao tác dữ
liệu. Các yêu cầu thao tác dữ liệu bao gồm:
- Tìm kiếm thông tin được lưu trữ trong cơ sở dữ liệu.
- Thêm thông tin mới vào cơ sở dữ liệu.
- Xóa thông tin từ cơ sở dữ liệu.
- Thay đổi thông tin được lưu trữ trong cơ sở dữ liệu.
Tại mức vật lý, chúng ta phải xác định các thuật toán cho phép truy nhập dữ liệu
một cách hiệu quả. Tại mức cao hơn của sự trừu tượng hóa, chúng ta nhấn mạnh
vào tính dễ sử dụng. Mục đích của nó là cung cấp sự tương tác của con người đối
với hệ thống một cách thuận tiện.
Một ngôn ngữ thao tác dữ liệu (DML) là một ngôn ngữ cho phép những
người sử dụng truy nhập hay thao tác dữ liệu được tổ chức bởi một mô hình dữ liệu
thích hợp. Có hai kiểu ngôn ngữ thao tác dữ liệu cơ bản.
- Các DML thủ tục đòi hỏi một người sử dụng phải đặc tả dữ liệu nào cần tìm
kiếm và tìm kiếm những dữ liệu này như thế nào.
- Các DML phi thủ tục đòi hỏi một người sử dụng đặc tả dữ liệu nào cần tìm
kiếm mà không phải đặc tả tìm kiếm những dữ liệu này như thế nào.
Các DML phi thủ tục thường dễ học và dễ sử dụng hơn so với các DML thủ
tục. Tuy nhiên do một người sử dụng không phải đặc tả tìm kiếm các dữ liệu như
thế nào, các ngoon ngữ này có thể sinh ra các đoạn mã không hiệu quả so với đoạn
mã được sinh ra bởi các ngôn ngữ thủ tục. Chúng ta có thể khắc phục vấn đề này
thông qua các kỹ thuật xử lý và tối ưu hóa câu hỏi khác nhau.
Một truy vấn là một chỉ thị yêu cầu tìm kiếm thông tin. Các lệnh của một
DML kéo theo tìm kiếm thông tin được gọi là ngôn ngữ truy vấn và ngôn ngữ thao
tác dữ liệu được xem là như nhau.
1.7. Mô hình dữ liệu quan hệ
15
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Mô hình dữ liệu quan hệ là mô hình được nghiên cứu nhiều nhất, và thực tiễn
đã cho thấy rằng nó có cơ sở lý thuyết vững chắc nhất. Mô hình dữ liệu này cùng
với mô hình thức thể kết hợp đang được sử dụng rộng rãi trong việc phân tích và
thiết kế CSDL hiện nay.
Mô hình quan hệ biểu thị cơ sở dữ liệu như một tập các quan hệ. Mỗi quan hệ
có thể được biểu diễn như một bảng giá trị, mỗi một dòng trong bảng biểu thị một
tập hợp các giá trị dữ liệu liên quan với nhau . Mỗi một dòng biểu thị một sự kiện
tương ứng với một thực thể hoặc một liên kết của thế giới thực. Tên bảng và tên cột
dùng để giúp giải thích ý nghĩa của các giá trị trong mỗi hàng. Mọi giá trị trong
cùng một cột đều cùng một kiểu dữ liệu.
Theo thuật ngữ mô hình quan hệ hình thức thì mỗi hàng được gọi là một bộ,
mỗi đầu cột được gọi là một thuộc tính và bảng được gọi là một quan hệ. Kiểu dữ
liệu mô tả các kiểu của dữ liệu xuất hiện trong mỗi cột gọi là một miền.
a/ Các khái niệm cơ bản
* Thuộc tính:
là tính chất để mô tả đối tượng (đối tượng được hiểu như là một loại thực thể
ở mô hình thực thể kết hợp) hay nói cách khác một đối tượng được mô tả thông qua
thuộc tính của nó. Mỗi thuộc tính có một tên gọi và phải thuộc về một kiểu dữ liệu
nhất định.
* Kiểu dữ liệu:
Các thuộc tính được phân biệt qua tên gọi và phải thuộc một kiểu dữ liệu nhất
định (số, chuỗi, ngày tháng, logic, hình ảnh,…). Kiểu dữ liệu ở đây có thể là kiểu vô
hướng hoặc là kiểu có cấu trúc. Nếu thuộc tính có kiểu dữ liệu là vô hướng thì nó
được gọi là thuộc tính đơn hay thuộc tính nguyên tố, nếu thuộc tính có kiểu dữ liệu
có cấu trúc thì ta nói rằng nó không phải là thuộc tính nguyên tố.
Chẳng hạn với sinh viên Nguyễn Văn Thành thì các thuộc tính họ và tên, mã số
sinh viên thuộc kiểu chuỗi, thuộc tính ngày sinh thuộc kiểu ngày tháng, hộ khẩu
thường trú kiểu chuỗi, thuộc tính hình ảnh kiểu hình ảnh,…
16
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ: các thuộc tính của đối tượng Hàng hóa gồm: tên hàng, số lượng, đơn giá,
chất lượng,...
- Thuộc tính đơn: là thuộc tính không bị phân rã thành nhiều thuộc tính khác.
Ví dụ: Sinhvien(masv, hoten, diachi)
- Thuộc tính phức hợp: là thuộc tính bị phân rã thành nhiều thuộc tính khác.
Ví dụ: Diachi_sv(matinh,tentinh)
- Thuộc tính đơn trị: là thuộc tính chỉ chứa một giá trị.
Ví dụ: Nhanvien(manv, tennv, diachi, trinhdo)
- Thuộc tính đa trị: là thuộc tính chứa nhiều giá trị khác nhau thuộc một miền
trị.
Ví dụ: Trinhdo_nv(matđ, tentđ,loaitđ)
* Miền (Domain):
Thuộc tính có thể là một chuỗi các ký tự hay là một con số hoặc ngày tháng
năm. Ngoài ra còn có thể là giá trị tiền tệ hay một đơn vị đo lường nào đó. Tập hợp
các giá trị này gọi là Miền giá trị của thuộc tính.
Ví dụ: thuộc tính Nữ có miền giá trị là {Nam,Nữ}, thuộc tính màu da có miền giá
trị là {da trắng, da vàng, da đen, da đỏ}, thuộc tính điểm thi là các số thuộc tập {0;
1; 2;…,10],
* Tích Đề-các
Gọi D1, D2, D3,,...,Dn là n miền. Tích Đề-các của n miền là tập tất cả n- bộ sao
cho Vi Є Di với i=1,...,n
Ví dụ: D1 = {0;1}, D1 = {a,b,c} n=2. Khi đó
D1*D2 = {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}
* Bộ:
Tập hợp các thuộc tính cùng mô tả một đối tượng gọi là bộ. Như vậy có thể nói
bộ là một đối tượng cụ thể. Mỗi bộ là những thông tin về một đối tượng thuộc một
quan hệ, bộ cũng còn được gọi là mẫu tin.
17
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Thường người ta dùng các chữ cái thường (như t,µ,…) để biểu diễn bộ trong
quan hệ, chẳng hạn để nói t là một bộ của quan hệ r thì ta viết t ∈ r.
* Quan hệ:
Sự thể hiện của lược đồ quan hệ ở một thời điểm nào đó được gọi là quan hệ, rõ
ràng là trên một lược đồ quan hệ có thể xác định nhiều quan hệ. Thường ta dùng các
ký hiệu như R,S,Q để chỉ các lược đồ quan hệ, còn quan hệ thường được dùng bởi
các ký hiệu là r, s,q,…
Về trực quan thì quan hệ là là một bảng hai chiều gồm các dòng và các cột:
+ Mỗi hàng của quan hệ được gọi là bộ.
+ Mỗi bộ của quan hệ có n thành phần (n cột).
+ Mỗi cột của quan hệ được gọi là thuộc tính
Ví dụ: Bảng Nhân viên gồm các thuộc tính
Họ tên Năm sinh Nơi làm việc Lương
t1 Lê Văn A 1960 Viện KHCN 425
t1 Hà Thị Minh 1967 ĐH Quốc Gia 540
t1 Lê Văn Sơn 1945 Viện KHCN 450
thì t1 = (Lê Văn A, 1960, Viện KHCN, 425) là một bộ của quan hệ Nhân viên
* Lược đồ quan hệ:
Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với các mối quan
hệ của nó được gọi là lược đồ quan hệ. Lược đồ quan hệ Q với tệp thuộc tính {A1,
A2,...,An} được viết là Q(A1,...,An) hay Q+ = (A1,...,An)
Ví dụ: Sinhvien(masv, hosv,tensv,nu, ngaysinh, malop, hocbong, tinh, malop)
* Khóa (key):
là một thuộc tính hoặc tổ hợp các thuộc tính dùng để xác định duy nhất một thể
hiện của một kiểu thực thể.
18
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Khóa của quan hệ r trên tập thuộc tính R ={A1,A2,...,An} là tập con KЄR sao
cho bất kì hai bộ khác nhau t1, t2Єr luôn thỏa mãn t1(k) ≠ t2(k) bất kỳ tập con thực sự
K' ≠ K nào đó đều không có tính chất đó.
Ví dụ 1: Hanghoa(Mahang, tenhang, soluong, donvitinh, dongia) thì Mahang là
khóa của quan hệ Hanghoa
Ví dụ 2: Hs_hocsinh(Sbd,, hoten, ngaysinh, điachi, khuvuc, uutien, tongdiem,
ketqua)) thì Sbd là khóa của quan hệ Hs_hocsinh
* Siêu khoá: là một tập các thuộc tính để phân biệt giữa các đối tượng với nhau
trong một quan hệ. Tập K là tập siêu khóa của quan hệ r nếu K là một khóa của
quan hệ r.
b/ Các phép tính trên CSDL quan hệ
* Phép chèn:
Mục đích của phép chèn là thêm một bộ vào quan hệ nhất định. Kết quả
của phép chèn có thể gây ra một số sai sót với những lí do sau đây:
- Bộ mới được thêm vào không phù hợp với lược đồ quan hệ cho trước.
- Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính
đó.
- Giá trị khóa của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ.
Do đó tùy từng quan hệ cụ thể mà có cách khắc phục khác nhau.
Khi đó thêm vào quan hệ r{A1,A2,...,An} một bộ t sẽ có có dạng r = r + t
Cú pháp: Insert(r; A1 = d1, A2 = d2, ...., An = dn)
trong đó: Ai (i=1,2,...,n) là tên các thuộc tính.
di (di Є dom(Ai)) là các giá trị thuộc miền giá trị tương ứng của Ai
Ví dụ 1: Để thêm một bộ t4 = (Vũ Đức Minh, 1984, trường ĐHHH, 450) vào quan
hệ Nhân viên ở trên ta làm như sau:
Insert(Nhanvien; Họ tên = Vũ Đức Minh,Năm sinh = 1984,Nơi làm việc = trường
ĐHHH,Lương=450)
Ví dụ 2: Ta có quan hệ r như sau:
19
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
SốBD Họ Đệm Tên Giới tính
SP1 Trần Văn Minh Nam
SP2 Lê Thị Bình Nữ
SP3 Trần Văn Hậu Nam
Sau khi thực hiện phép toán
Insert(r; SốBD = SP4, Họ =Hoàng, Đệm = Văn, Tên = Chỉnh, Giới tính = Nam)
ta có quan hệ r đã được biến đổi thành:
SốBD Họ Đệm Tên Giới tính
SP1 Trần Văn Minh Nam
SP2 Lê Thị Bình Nữ
SP3 Trần Văn Hậu Nam
SP4 Hoàng Văn Chỉnh Nam
* Phép xóa bộ (phép loại bỏ):
Phép tính này xoá đi một bộ đã có trong quan hệ r{A1,A2,...,An},
tức là r = r - t . Ta kí hiệu phép xoá bộ là Delete(r; A1 = d1, A2 = d2, ...., An = dn)
Ví dụ: Ta có quan hệ r như sau:
SốBD Họ Đệm Tên Giới tính
SP1 Trần Văn Minh Nam
SP2 Lê Thị Bình Nữ
SP3 Trần Văn Hậu Nam
SP4 Hoàng Văn Chỉnh Nam
Sau khi thực hiện phép toán
20
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Delete (r; SốBD = SP2, Họ = Lê, Đệm = Thị, Tên = Bình, Giới tính = Nữ)
hoặc Delete (r; SốBD = SP2) ta có quan hệ r đã được biến đổi thành:
SốBD Họ Đệm Tên Giới tính
SP1 Trần Văn Minh Nam
SP3 Trần Văn Hậu Nam
SP4 Hoàng Văn Chỉnh Nam
CÂU HỎI VÀ BÀI TẬP
1. Khái niệm về cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu?
2. Trình bày kiến trúc hệ cơ sở dữ liệu?
3. Tình bày các phép tính trên cơ sở dữ liệu quan hệ? Cho ví dụ minh họa?
21
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CHƯƠNG 2. NGÔN NGỮ THAO TÁC DỮ LIỆU
2.1. Đại số quan hệ
2.1.1. Các phép toán
Hai quan hệ r1 và r2 được gọi là khả hợp nếu chúng có chung tập thuộc tính.
2.1.1.1. Phép hợp:
Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép
hợp của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập
thuộc tính R và chứa tất cả các bộ của hai quan hệ r1 và r2,
r1 r2 = { t |t r1 hoặc t r2 hoặc t r1 và r2}
Ví dụ 1: r1 {STT Họ Tên Giới tính} 1 Trần A Nam
2 Lê B Nam
3 Trần C Nam
r1 {STT Họ Tên Giới tính} 1 Lưu D Nữ
2 Vũ E Nữ
==> r1 r2 { STT Họ Tên Giới tính}
1 Trần A Nam
2 Lê B Nam
3 Trần C Nam
1 Lưu D Nữ
2 Vũ E Nữ
22
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Chú ý: Với mọi r, s thì r + s = s + r
Với mọi r thi r + r = r
Ví dụ 2: r1 (A B C} r2 (A B C}
a1 b1 c1
a2 b1 c2
a2 b2 c1
==> r1 r2 { A B C}
a1 b1 c1
a2 b1 c2
a2 b2 c2
a2 b2 c1
2.1.1.2. Phép giao
Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép
giao của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập
thuộc tính R và chứa tất cả các bộ cùng thuộc cả hai quan hệ r1 và r2 .
r1 ∩ r2 = { t |t r1 và t r2 }
Ví dụ: r1 { Họ Tên Giới tính} Trần A Nam
Lê B Nam
Trần C Nam
r2 { Họ Tên Giới tính} Lê B Nam
23
a1 b1 c1a2 b2 c2
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Trần C Nam
==> r1 ∩ r2 { Họ Tên Giới tính }
Lê B Nam
Trần C Nam
2.1.1.3. Phép trừ
Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép
trừ của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập thuộc
tính R và chứa tất cả các bộ thuộc r1 nhưng không thuộc r2.
r1 - r2 = { t |t r1 và t r2 }
Ví dụ: r1 { Họ Tên Giới tính}
Trần E Nữ
Trần B Nam
Trần C Nam
r2 { Họ Tên Giới tính}
Trần B Nam
Trần E Nữ
Trần C Nữ
==> r1 - r2 { Họ Tên Giới tính }
Trần C Nam
2.1.1.4. Phép lấy tích Đề-các
24
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho quan hệ r1 xác định trên tập thuộc tính R1 và quan hệ r2 xác định trên
tập thuộc tính R2 với t1 r1 và t2 r2 ta viết t1 t2 để chỉ một sự ghép nối tiếp
các giá trị của hai bộ t1 và t2, lưu ý rằng ta không quan tâm đến thứ tự các thuộc
tính trong tập thuộc tính của một quan hệ nên t1 t2 cho giá trị tương đương với t2
t1.
Ví dụ: t1 = (Trần, A, Nam), t2 = (SF001, Hà Nội) ta sẽ có
t1 t2 = t2 t1 = (Trần, A, Nam, SF001, Hà Nội).
=> => Phép lấy tích Đềcác các quan hệ r1 và r2 cho ta một quan hệ xác định trên tập
thuộc tính R1 R2 các bộ của tích Đềcác được định nghĩa như sau:
r1 x r2 = {tq| t r1 và q r2}
Ví dụ 1:
r1 { Họ } r2 { Tên Giới tính }
Trần
Đỗ
Nguyễn
==> r1 x r2 { Họ Tên Giới tính }
Trần A Nữ
Trần B Nam
Đỗ A Nữ
Đỗ B Nam
Nguyễn A Nữ
Nguyễn B Nam
Ví dụ 2:
r1 { A B C } r2 { D E F }
A Nữ
B Nam
25
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
a1 b1 c1 d e f
a2 b2 c2 d' e' f'
==> r1 x r2 { A B C D E F }
a1 b1 c1 d e f
a1 b1 c1 d' e' f'
a2 b2 c2 d e f
a2 b2 c2 d' e' f'
2.1.1.5. Phép chọn
Cho quan hệ r xác định trên tập thuộc tính R, F là một biểu thức logic xác
định trên miền giá trị của thuôc tính thuộc tập R. Phép chọn trên quan hệ r theo
biểu thức logic F sinh ra một quan hệ cùng xác định trên tập thuộc tính R chứa tất
cả các bộ trong quan hệ r mà các giá trị của nó thoả mãn biểu thức logic F. Ta kí
hiệu phép chọn là δF(r).
δF(r) = { t| t r và F(t) là đúng }
- Các phép so sánh trong biểu thức F là: <, =, >, <=, >=, <>
- Các phép logic trong biểu thức F gồm: V(hoặc), Λ(và), ¬(không)
Phép so sánh trong biểu thức F được thực hiện giữa hai biến là hai thuộc tính
hoặc giữa một biến là thuộc tính và một hằng
Ví dụ 1:
R={Họ, Tên, Giới tính}, F là biểu thức: Giới tính = ‘Nam’
r { Họ Tên Giới tính } ---> δF(r) { Họ Tên Giới tính }
Trần B Nam
Trần C Nam
Trần E Nữ
Trần B Nam
Trần C Nam
26
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 2:
r (A B C) ==> δB=b2(r) (A B C)
a1 b1 c1
a2 b1 c2
a2 b2 c2
a2 b2 c1
Ví dụ 3: R = {A,B, C}, F là biểu thức : B= b2
r (A B C) ==> δA=a1 V C=c1 (r) (A B C)
a1 b1 c1
a2 b1 c2
a2 b2 c2
a2 b2 c1
2.1.1.6. Phép kết nối (Join)
a/ Khái niệm xếp cạnh nhau
Cho bộ d = (d1,d2,..,dn) và bộ e = (e1,e2,...,em). Khi đó phép xếp cạnh nhau
của d và e được biểu diễn:
de=(d1,d2,..,dn,e1,e2,.. , .,em)
b/ Khái niệm phép kêt nối
Cho quan hệ r1 xác định trên tập thuộc tính R1 và quan hệ r2 xác định trên
tập thuộc tính R2. Giả sử thuộc tính A Є R1 và thuộc tính B Є R2, và các giá trị
của nó có thể so sánh được với nhau (cùng là tập con của một miền giá trị).
Một biểu thức lôgic được xây dựng trên phép so sánh AθB được gọi là toán
tử kết nối. Trong đó θ là một trong 6 phép so sánh <, ≤, =, ≥, >, ≠ .
a2 b2 c2
a2 b2 c1
a1 b1 c1
a2 b2 c1
27
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Phép kết nối hai quan hệ r1 và r2 trên cơ sở AθB cho ta một quan hệ thứ ba
có tập thuộc tính là R1 R2 và các bộ của nó được định nghĩa như sau:
r1 r2 = { tq| t r1, q r2 và t(A) θ q(B) là đúng }
Chú ý: Một phép kết nối hay sử dụng nhất trong thực tế là phép kết nối sử dụng
toán tử kết nối bằng “=”. Trong trường hợp hai quan hệ r1 và r2 cùng có một
thuộc tính cùng tên, cùng chung miền giá trị thì ta có thể đồng nhất chúng trong kết
qủa của phép kết nối bằng trên thuộc tính đó. Phép kết nối đó chúng ta gọi là phép
kết nối tự nhiên, và kí hiệu là r1 *r2.
Ví dụ 1:
Cho hai quan hệ r, s và phép θ= r[B]≥s[C
a1 1 1
a2 2 1
a1 2 2
=>
Ví dụ 2: Cho hai quan hệ r, s và phép θ là r[C]=s[C
a1 1 1
a2 2 1
a1 2 2
a1 1 1 1 d1 e1
a2 2 1 1 d1 e1
a1 2 1 2 d2 e2
a1 2 2 1 d1 e1
a1 2 2 2 d2 e2
a1 1 1 1 d1 e1
a2 2 1 2 d2 e2
a1 2 2 3 d3 e3
28
r (A B C)
r s (A B C C D E)
s (C D E)
r[B]≥s[C]
r (A B C)
s (C D E)
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 3:
Trong quản lý điểm thi ta có hai quan hệ, quan hệ r chứa hồ sơ thí sinh, quan
hệ s chứa kết quả thi. Để được một kết quả đầy đủ thông tin cho người dự thi ta phải
ghép điểm thi vào hồ sơ cho từng người phép kết nối tự nhiên.
r (SốBD Họ Tên Giới tính ) s (SốBD Điểm )
=> r * s ( SốBD Họ
Tên Giới tính Điểm)
2.1.1.7. Phép chiếu (projection)
Cho quan hệ r xác định trên tập thuộc tính R, X là một tập con thuộc tính của
tập R. Giả sử t là một bộ thuộc tập quan hệ r, cách viết t(X) là để chỉ một thu gọn
bộ trên tập thuộc tính X.
a1 1 1 d1 e1
a2 2 1 d1 e1
a1 2 2 d2 e2
SP1 4.5
SP2 7.5
SP3 6.0
SP1 Trần Anh Nam
SP2 Nguyễn Lan Nữ
SP3 Lê Phương Nữ
SP1 Trần Anh Nam 4.5
SP2 Nguyễn Lan Nữ 7.5
SP3 Lê Phương Nữ 6.0
29
==> r * s (A B C C D E)
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ: R = ( Họ, Tên, Giới Tính ), X = {Họ, Tên}, t = (Trần, A, Nam)
th t(X) = (Trần, A).
Ta kí hiệu phép chiếu quan hệ r trên tập con thuộc tính X là ПX(r), phép chiếu
cho kết quả là một quan hệ trên tập thuộc tính X bao gồm các thu gọn của tất cả
các bộ của quan hệ r.
ПX(r) = { t(X) | t r}
Ví dụ 1:
R = ( Họ, Tên, Giới Tính ), X = {Họ, Tên},
r { Họ Tên Giới tính } ==> ПX(r) { Họ Tên }
Trần E Nữ
Trần B Nam
Trần E Nam
Ví dụ 2:
R = {A, B, C, D}, X = {A, B}, Y = {A, C},
r (A B C D) ==> ПX(r) (A B) ПY(r) (A C)
a1 b1 c1 d1
a1 b1 c1 d2
a2 b2 c2 d2
a2 b2 c3 d3
2.1.1.8. Phép chia
Trần E
Trần B
a1 c1
a2 c2
a2 c3
a1 b1
a2 b2
30
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho quan hệ r1 xác định trên tập thuộc tính R1, quan hệ r2 xác định trên tập
thuộc tính R2, R2 R1. Phép chia quan hệ r1 cho quan hệ r2 sinh ra một quan
hệ thứ ba được định nghĩa như sau:
r1 ÷ r2 = { t| u r2, ta có tu r1}
Hoặc
Cho 2 lược đồ quan hệ Q1(A1,A2,...,An), Q2(B1,B2,...,Bm) và r là quan hệ
xác định trên Q1, s là quan hệ xác định trên Q2 (n>m và s ≠ Φ, có nhóm thuộc
tính chung giống nhau về mặt ngữ nghĩa hoặc các thuộc tính có thể so sánh được
giữa ra và s. Phép chia 2 quan hệ r và s kí hiệu là r ÷ s là một quan hệ có n-m
thuộc tính được định nghĩa như sau:
q = r ÷ s = { t| u s, ta có tu r}
Ví dụ:
r (A B C D) s (A B)
a b c d
a b e f
b c e f
c d c d
c d e f
a b d e
==> t= r ÷ s (A B)
a b
c d
2.1.2. Các tính chất của phép toán quan hệ
Kết quả các phép toán cũng là một quan hệ. Tuy nhiên các toán hạng là các
quan hệ giao hoán với nhau, nghĩa là các bộ thay đổi thứ tự trong bảng, điều này
c d
e f
31
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
không quan trọng với cách biểu diễn dữ liệu. Nó vẫn đảm bảo tính độc lập và tính
toàn vẹn dữ liệu.
2.1.2.1. Tính chất giao hoán
Các phép hợp, giao và kết nối trong đại số quan hệ là các phép toán có tính
chất giao hoán. Tức là với mọi quan hệ R1, R2 th
R1 R2 = R2 R1
R1 ∩ R2 = R2 ∩ R1
R1 R2 = R2 R1
2.1.2.2. Tính chất kết hợp
Các phép hợp, giao, kết nối và tích Descartes trong đại số quan hệ là các phép
toán có tính chất kết hợp. Tức là với mọi quan hệ R1, R2 , R3 th:
(R1 R2) R3 = R2 (R1 R3)
(R1 ∩ R2) ∩ R3 = R2 ∩ (R1 ∩ R3)
R1 (R2 R3) = (R2 R1) R3
(R1 x R2 ) x R3 = R2 x (R1 x R3 )
2.1.2.3. Tính chất tích lũy đẳng
Các phép hợp, giao và kết nối là các phép toán có tính lũy đẳng. Tức là với
mọi quan hệ R trên tập các thuộc tính th:
R1 R1 = R1
R1 ∩ R1 = R1
R1 R1 = R1
2.1.2.4. Một số tính chất khác
Cho R là quan hệ bất kỳ trên Q1 và S là quan hệ bất kỳ trên Q2, khi đó:
R ∩ S = R - (R-S)
R S = R[X] - (R[X] * S - R)[X]
(R x S)[X] = (R[X] * S[X]
* Một số ví dụ tìm kiếm bằng các phép toán quan hệ
32
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Bài toán: Cho 4 quan hệ gồm:
* Quan hệ Co với tập thuộc tính {Sohieu, TenCo, Von, DiaChi}, chứa dữ liệu
quản lý các công ty, trong đó:
Sohieu: là số hiệu để quản lý công ty bán hàng
TenCo: là tên công ty bán hàng.
Von: là số vốn đăng ký kinh doanh của công ty (đơn vị triệu đồng)
DiaChi: là địa chỉ công ty (chỉ giới hạn đến tỉnh, thành phố)
{Sohieu TenCo Von DiaChi}S1 Anh Đào 1.000 Hà Nội
S2 Trúc Đào 500 Bắc Ninh
S3 Hoa Phượng 1.500 Hải Phòng
S4 Hoa Sữa 2.000 Hà Nội
* Quan hệ Pr với tập thuộc tính {Mahieu, TenPr, Mau, TLuong, DiaChi}, chứa
dữ liệu quản lý các mặt hàng, trong đó:
Mahieu: Mã hiệu mặt hàng;
TenPr: Tên mặt hàng
Mau: Màu sắc mặt hàng;
TLuong: Trọng lượng mặt hàng
DiaChi: Địa chỉ kho nơi chứa hàng
{Mahieu TenPr Mau TLuong DiaChi}
P1 Xe đạp Xanh 19 Hà Nội
P2 Môtô Honda Đỏ 85 Hải Phòng
P3 Môtô Suzuki Xanh 80 Hà Nội
P4 Ôtô Toyota Đen 1000 Hà Nội
33
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* Quan hệ Pj với tập thuộc tính {MaPj, TenPj, DiaChi}, chứa dữ liệu các nơi mua
hàng
MaPj: là mã số của nơi mua hàng
TenPj: là tên của đơn vị mua hàng
DiaChi: là địa chỉ nơi mua hàng (ta chỉ giới hạn đến tỉnh, thành phố)
{MaPj TenPj DiaChi }
J1 Trường ĐHSP Hà Nội
J2 Trường Kinh tế Hải Phòng
J3 TRường ĐHQG Hà Nội
* Quan hệ CPP với tập thuộc tính {Sohieu, Mahieu, MaPj, SoLuong, DonGia},
chứa dữ liệu quản lý các chuyến hàng được cung ứng, trong đó:
Sohieu: là số hiệu công ty cung ứng;
Mahieu: là mã hiệu mặt hàng được cung ứng
MaPj: là mã số của đơn vị mua hàng
SoLuong: là số lượng hàng được cung ứng trong chuyến hàng đó.
DonGia: là đơn giá của mặt hàng được cung ứng trong chuyến hàng đó.
{Sohieu Mahieu MaPj SoLuong DonGia}
S1 P1 J1 20 500000
S1 P4 J1 1 500000000
S3 P2 J3 5 20000000
S4 P1 J2 10 250000
S1 P1 J3 30 450000
Yêu cầu:
1/ Cho biết số hiệu của các công ty có bán mặt hàng P1.
2/ Cho biết mã hiệu các mặt hàng đã cung ứng.
34
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
3/ Cho biết tên các công ty ở Hà Nội có vốn lớn hơn 1 tỷ đồng.
4/ Cho biết tên các công ty đã cung cấp mặt hàng P1.
5/ Cho biết tên các công ty đã cung cấp các mặt hàng màu đỏ.
Giải:
1/ Cho biết số hiệu của các công ty có bán mặt hàng P1.
Với yêu cầu này thông tin cần lấy là thuộc tính số hiệu với điều kiện là chỉ
chọn số hiệu của công ty có bán mặt hàng với mã hiệu là P1, dữ liệu cần thiết chỉ
nằm trong quan hệ CPP
SoHieu(MaHieu=’P1’ (CPP))
Ta cũng có thể biểu diễn quá trnh xữ lý bằng sơ đồ sau:
SoHieu
MaHieu=’P1’
CPP
35
CPP
45000030J3P1S1
25000010J2P1S4
200000005J3P2S3
5000000001J1P4S1
50000020J1P1S1
Sohieu MaHieu MaPj SoLuong DonGia
{Sohieu MaHieu MaPj SoLuong DonGia}
45000030J3P1S1
25000010J2P1S4
50000020J1P1S1
MaHieu=’P1’(CPP)
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
2/ Cho biết mã hiệu các mặt hàng đã cung ứng.
Mã hiệu các mặt hàng đã được bán nằm trong quan hệ CPP
3/ Cho biết tên các công ty ở Hà Nội có vốn lớn hơn 1 tỷ đồng.
Dữ liệu cần tìm nằm trên quan hệ Co
Anh Đào
Hoa Sữa 36
SoHieu(MaHieu=’P1’(CPP))
S4
S1
==> { SoHieu }
P2
P4
P1
MaHieuMaHieu(CPP) ==>
45000030J3P1S1
25000010J2P1S4
200000005J3P2S3
5000000001J1P4S1
50000020J1P1S1
Sohieu MaHieu MaPj SoLuong DonGiaCPP ==>
Tenco((Von1000) and (DiaChi=’Hà Nội’)(Co))
Sohieu TenCo Von DiaChiCo ==>
Hà Nội2.000Hoa SữaS4
HảiPhòng1.500HoaPhượng
S3
Bắc Ninh500Trúc ĐàoS2
Hà Nội1.000Anh ĐàoS1
(Von1000) and (DiaChi=’Hà Nội’)(Co)
Hà Nội2.000Hoa SữaS4
Hà Nội1.000Anh ĐàoS1
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
4/ Cho biết tên các công ty đã cung cấp mặt hàng P1
Ta nhận thấy rằng tên các công ty là dữ liệu chứa trong quan hệ Co, mã hiệu
mặt hàng được công ty đó bán nằm trong quan hệ CPP, hai quan hệ này có thể
liên kết với nhau bằng phép kết nối tự nhiên thông qua thuộc tính SoHieu (lưu ý
là ta thực hiện trên CPP một phép chiếu trên tập hợp thuộc tính {SoHieu,
MaHieu} nhằm làm giảm bớt không gian tm kiếm).
Tenco(Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)))
37
Tenco(Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)))
{ TenCo }
Hà Nội2.000Hoa SữaP1S4
Hà Nội1.000Anh ĐàoP1S1
Hoa Sữa
Anh Đào
Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)) {Sohieu MaHieu TenCo Von DiaChi}
MaHieu=’P1’( SoHieu,MaHieu(CPP))
{ Sohieu Mahieu}
P1S4
P1S1
CPP
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
5/ Cho biết tên các công ty đã cung cấp các mặt hàng màu đỏ.
Dữ liệu cần tìm nằm trên 3 quan hệ, tên công ty nằm trên quan hệ Co,
màu mặt hàng nằm trên quan hệ Pr, mặt hàng gắn liền với công ty cung cấp nằm
trên quan hệ CPP. Mối liên quan dữ liệu được gắn kết bởi các thuộc tính SoHieu
và MaHieu (cũng như ví dụ trên để giảm bớt không gian tm kiếm ta thực hiện vài
phép chiếu trước khi kết nối).
Tenco(Mau=’Đỏ’( SoHieu,Tenco(Co)*Tenco,MaHieu(CPP)*MaHieu,Mau (Pr))
38
SoHieu,TenCo(Co)* SoHieu,MaHieu(CPP)*MaHieu,Mau(Pr)
{Sohieu TenCo Mahieu Mau}
XanhP1Hoa SữaS4
ĐỏP2Hoa PhượngS3
ĐenP4Anh ĐàoS1
XanhP1Anh ĐàoS1
{SoHieu TenCo}
Hoa SữaS4
Hoa PhượngS3
Trúc ĐàoS2
Anh ĐàoS1
SoHieu,TenCo(Co)
{SoHieu Mahieu}
P1S4
P2S3
P4S1
P1S1
SoHieu,MaHieu(CPP)
{Mahieu Mau}
ĐenP4
Xanh P3
ĐỏP2
Xanh P1
MaHieu,Mau(Pr)
Mau=’Đỏ’( ...) {Sohieu TenCo Mahieu Mau}
ĐỏP2Hoa PhượngS3
TenCo(Mau=’Đỏ’( ...)) { TenCo }
Hoa Phượng
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
2.2. Ngôn ngữ SQL
2.2.1. Khái quát về SQL
SQL (Structured Query Language) là một ngôn ngữ chuẩn được dùng để tạo lập
và truy vấn các cơ sở dữ liệu quan hệ.
Ngôn ngữ truy vấn có cấu trúc dựa trên đại số quan hệ.
Câu lệnh của SQL dùng để trích rút dữ liệu của một hay nhiều quan hệ.
Kết quả của một câu lệnh SQL là một quan hệ.
SQL sử dụng thuật ngữ: - Bảng ~ quan hệ
- Cột ~ thuộc tính
- Dòng ~ bộ
Đối tượng làm việc của SQL là các bảng dữ liệu hai chiều gồm một hoặc
nhiều cột và hàng.
+ Các cột gọi là các trường. Cột với tên gọi và kiểu dữ liệu (kiểu dữ liệu của
cột là duy nhất) xác định nên cấu trúc của bảng.
+ Các hàng là các bản ghi
2.2.2. Các câu lệnh cơ bản của SQL
2.2.2.1. Tạo bảng
Để định nghĩa một bảng:
Tên bảng
Các thuộc tính: - Tên thuộc tính (tên cột)
- Kiểu dữ liệu
- Các ràng buộc toàn vẹn trên thuộc tính (RBTV)
Cú pháp: Creat Table <tên_bảng>
( <tên cột 1> <kiểu dl của cột 1 (size)> [< RBTV>],
39
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
<tên cột 2> <kiểu dl của cột 2 (size)> [< RBTV>],
..........
<tên cột n> <kiểu dl của cột n (size)> [< RBTV>] )
Trong đó, RBTV có thể là:
Primary: khóa chính; Foreign key: khóa ngoại
Null: Không giá trị; Not null: Có giá trị
* Một số kiểu dữ liệu của cột như sau:
- Integer: kiểu số nguyên từ -2147483648 đến 2147483687.
- Small integer: số nguyên từ -32768 đến 32767
- decimal(n,p): số thập phân với độ dài tối đa là n kể cả p chữ số phần thập
phân (không tính dấu .)
- Float: dấu phẩy động
- Char(): xâu ký tự có độ dài cố định n, n<=225
- Varchar(n): xâu ký tự có độ dài biến đổi (từ 0 đến n)
- Longvarchar: xâu ký tự có độ dài không cố định (4kb 32kb)
- Date: ngày tháng năm
Ví dụ 1:
CREAT TABLE HOC_SINH
( MAHS VARCHAR(4) PRIMARY KEY,
HOTEN CHAR(4) NOT NULL,
NGAYSINH DATE NULL,
DIACHI CHAR(30) NULL,
DIENTHOAI INTEGER NULL )
Ví dụ 2:
CREATE TABLE NHANVIEN
( MANV CHAR(9), HONV VARCHAR(10), TENNV VARCHAR(10),
NS DATETIME, DCHI VARCHAR(50), GT CHAR(3),
LUONG INT, MA_NQL CHAR(9), PHG INT )
40
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
2.2.2.2. Truy vẫn Select
Câu lệnh Select dùng để thực hiện phép chọn (truy xuất tập con các dòng
trong một hay nhiều bảng), phép chiểu (truy xuất tập con các cột trong một hay
nhiều bảng) và phép nối (liên kết các dòng trong hai hay nhiều bảng đẻ truy xuát
dữ liệu).
Cú pháp chung của lệnh Select:
SELECT [All |Distinct] <danh sách các cột> [Into <tên bảng khác]
FROM <danh sách các bảng> | <tên các view>
[WHERE <điều kiện>]
[GROUP BY <danh sách các cột gom nhóm>]
[HAVING <điều kiện trên nhóm>]
[ORDER BY <danh sách các cột>[ASC |DESC]]
Trong đó:
<danh sách các cột>:Tên các cột cần được hiển thị trong kết quả truy vấn.
<danh sách các bảng>: Tên các bảng liên quan đến câu truy vấn.
<điều kiện>: - Biểu thức boolean xác định dòng nào sẽ được rút trích.
- Nối các biểu thức: AND, OR, và NOT
- Phép toán: , , , , , , LIKE và BETWEEN
Mệnh đề GROUP BY: Các thuộc tính trong mệnh đề SELECT (trừ những thuộc
tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY.
Mệnh đề HAVING:
- Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều
kiện nào đó.
- Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ.
- Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện.
Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING như sau:
(1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE.
41
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
(2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề
GROUP BY.
(3) Áp dụng các hàm kết hợp cho mỗi nhóm.
(4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING.
(5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT.
Ví dụ 1:
Hiện tất cả các thông tin về nhân viên ở phòng 5 trong bảng NHANVIEN
SELECT *
FROM NHANVIEN
WHERE PHG=5
MANV HONV HODEM TEN NS DCHI GT LUONG PHG
NV09 Nguyen Thanh Chuc 12/08/1975 Can Tho Nu 4000 5
NV022 Le Manh Hung 09/15/1962 Ba Ria Nam 5800 5
NV023 Nguyen Manh Hung 09/18/1972 Ba Ria Nam 4500 5
NV029 Tran Ngoc Hung 09/11/1980 Ba Ria Nam 4000 5
NV040 Nguyen Van Nam 09/05/1984 Ba Ria Nam 3800 5
Ví dụ 2:
Hiện các cột MANV, HONV, HODEM, TENNV của các nhân viên nam ở phòng
5 trong bảng NHANVIEN
SELECT MANV, HONV, HODEM, TENNV
FROM NHANVIEN
WHERE PHG=5 AND GT=‘Nam’
MANV HONV HODEM TEN
NV022 Le Manh Hung
42
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
NV023 Nguyen Manh Hung
NV029 Tran Ngoc Hung
NV040 Nguyen Van Nam
Ví dụ 3: Tìm những mặt hàng đã cung cấp có giá từ 1000 đến 2000
SELECT P#
FROM SP
WHERE DONGIA BETWEEN 1000 AND 2000
Ví dụ 4: Tìm mã số những nhà cung cấp đã cung cấp ít nhất một trong các mặt
hàng P1, P2, P3
SELECT S#
FROM SP
WHERE P# IN (‘P1’,’P2’,’P3’)
Ví dụ 5: Tìm những mặt hàng bán trước ngày ‘24/04/2014’ 10 ngày
SELECT P#
FROM SP
WHERE ‘24/04/2014’ - SDATE =10
* Tìm kiếm có xử ý xâu ký tự
Xử lý xâu ký tự gần đúng còn gọi là phép tính “thông minh” trong trường hợp
người sử dụng không nhớ chính xác về xâu ký tự cần tìm kiếm. Trong SQL, sử
dụng ký hiệu ‘%’ là thay thế cho một xâu con bất kỳ, dấu phân cách ‘-‘ để thay thế
cho một ký tự.
A%B: Xâu ký tự bắt đầu bằng chữ A và kết thúc bằng chữ B
%A: Xâu ký tự kết thúc bằng chữ A
A_B: Xâu bao gồm 3 ký tự, ký tự thứ 2 là bất kỳ
A_: Xâu có hai ký tự, ký tự đầu là A
Ví dụ: Tìm người có tên là Hoa hay Hoan
SELECT *
43
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
FROM S
WHERE SNAME LIKE ‘HOA%”
Chú ý: Hàm kết hợp
COUNT
COUNT(*) đếm số dòng
COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính
COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL
của thuộc tính
SUM <thuộc tính>tính tổng giá trị của các bộ theo thuộc tính đã chỉ ra.
MAX<thuộc tính>:cho biết giá trị lớn nhất của các bộ theo thuộc tính đã chỉ ra.
MIN<thuộc tính>:cho biết giá trị nhỏ nhất của các bộ theo thuộc tính đã chỉ ra.
AVG<thuộc tính>:Cho biết giá trị trung bình của các bộ theo thuộc tính đã chỉ ra.
Các hàm kết hợp được đặt ở mệnh đề SELECT.
Ví dụ 1: Cho biết số lần mặt hàng P2 đã được cung cấp
SELECT COUNT(*)
FROM SP
WHERE P# = ’P2’
Ví dụ 2: Lập danh sách các sinh viên đăng ký ít nhất 3 môn học
SELECT KQ.MASV, HOTEN, NGSINH, COUNT(MAMH) AS SOLUONG
FROM KQ, SV
WHERE SV.MASV=KQ.MASV
GROUP BY KQ.MASV, HOTEN, NGSINH
HAVING COUNT(MAMH)>=3
Ví dụ 3: Tìm hiệu số mặt hàng P1 bán một lần nhiều nhất và một lần ít nhất của
hãng S1
SELECT MAX(QTY) - MIN(QTY)
FROM SP
44
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
WHERE S#=’S1’ AND P#=’P1’
Ví dụ 4: Tìm mã số những nhà cung cấp đã cung cấp ít nhất hơn hai mặt hàng
SELECT S#
FROM SP
GROUP BY S#
HAVING COUNT (DISTINCT P#)>2
* Ánh xạ lồng
Ta có thể sử dụng những mệnh đề SELECT lồng nhau:
Ví dụ 1: Tìm tên những hãng đã cung cấp mặt hàng P2
SELECT SNAME
FROM S
WHERE S# IN (SELECT S#
FROM SP
WHERE P#=’P2’)
Ví dụ 2: Tìm tên những hãng không cung cấp mặt hàng P1
SELECT SNAME
FROM S
WHERE ‘P1’ NOT IN
SELECT P#
FROM SP
WHERE S# = S.S#
Ví dụ 3: Đưa ra danh sách các mặt hàng không được bán trong ngày ‘20/10/2014’
SELECT tenMH
FROM MATHANG
WHERE MaMH NOT IN
SELECT MaMH
FROM HD_MH, HOADON
45
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
WHERE (HD_MH.SoHD = HOADON.SoHD) AND
(NgayHD=”20/10/2014”)
2.2.2.3. Hiển thị cấu trúc bảng
Cú pháp: EXEC SP_COLUMNS <tên bảng cần xem>
Ví dụ: EXEC SP_COLUMNS NHANVIEN
* Xem lại tên các bảng vừa tạo
EXEC SP_TABLES
GO
2.2.2.4. Thay đổi cấu trúc bảng
- Thêm cột mới (Field mới) cho bảng:
Cú pháp:
ALTER TABLE <Tên_bảng>
ADD COLUMN <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]
Ví dụ 1:
ALTER TABLE NHANVIEN
ADD COLUMN Nghe_nghiep CHAR(15)
Ví dụ 2:
ALTER TABLE SANPHAM
ADD COLUMN Don_gia Decimal(8,2)
- Xóa cột trong bảng:
Cú pháp: ALTER TABLE <Tên_bảng>
DROP COLUMN <Tên_cột>
Ví dụ :
ALTER TABLE NHANVIEN
DROP COLUMN Nghe_nghiep
- Thêm các ràng buộc toàn vẹn:
ALTER TABLE <Tên_bảng> ADD
46
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CONSTRAINT <Ten_RBTV1> <RBTV1>,
CONSTRAINT <Ten_RBTV2> <RBTV2>,…
2.2.2.5. Xóa bảng (xóa cấu trúc và dữ liệu của bảng)
Cú pháp: DROP TABLE <Tên_bảng>
Ví dụ :
DROP TABLE NHANVIEN
2.2.2.6. Chèn một hàng
Cú pháp: INSERT INTO <tên_bảng> [tên cột 1, tên cột 2,...,tên cột n]
VALUES (giá trị 1, giá trị 2,...,giá trị n)
Ví dụ 1:
INSERT INTO NHANVIEN (MANV,HOTEN,DIACHI)
VALUES ('NV003','Nguyễn Hồng Nhung','Hải Phòng')
Ví dụ 2:
INSERT INTO Luong_NV
SELECT hoten, hs_luong*1150000
FROM NHANVIEN
Ví dụ 3:
INSERT INTO NHANVIEN
VALUES ('NV003','Nguyễn Hồng Nhung','22/10/1990','Hải Phòng')
Ví dụ 4:
INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV, DCHI)
VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)
Nhận xét:
Thứ tự các giá trị phải trùng với thứ tự các cột
Có thể thêm giá trị NULL ở những thuộc tính không là khóa chính và NOT
NULL
Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV
Khóa chính
47
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Tham chiếu
NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt buộc phải có giá
trị
2.2.2.7. Xóa hàng
Cú pháp: DELETE FROM <tên bảng>
[WHERE <điều kiện>]
Ví dụ 1:
DELETE FROM NHANVIEN
WHERE MANV='NV003'
Ví dụ 2:
DELETE FROM NHANVIEN
WHERE Diachi='Hải Phòng'
2.2.2.8. Sửa dữ liệu (Cho phép thay đổi dữ liệu đã tồn tại bên trong bảng dữ liệu)
Cú pháp: 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>,
…
[FROM <tên bảng>]
[WHERE <điều kiện>]
Chú ý: Mệnh đề FROM trong câu lệnh trên chỉ được sử dụng khi cần chỉ định các
điều kiện cập nhật liên quan đến các bảng khác.
Ví dụ 1:
Sửa lại ngày sinh cho nhân viên có mã số là '333445555'
UPDATE NHANVIEN
SET NGSINH=’08/12/1965’
WHERE MANV=‘333445555’
Ví dụ 2:
48
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Tăng lương lên 0,2 cho các nhân viên làm việc tại đơn vị có Madv là 04
UPDATE NHANVIEN
SET HSLUONG = HSLUONG + 0,2
WHERE MADV = '04'
Ví dụ 3:
Cho 2 quan hệ gồm: MATHANG(MAHANG, TENHANG, DONGIA)
NHATKY_BH(NGAYBAN, MAHANG, SOLUONG, THANHTIEN). Hãy cập
nhật giá trị cho cột THANHTIEN trong bảng NHATKY_BH theo công thức
THANHTIEN = SOLUONG * DONGIA
UPDATE NHATKY_BH
SET THANHTIEN = SOLUONG *MATHANG.DONGIA
FROM MATHANG
WHERE NHATKY_BH.MAHANG = MATHANG.MAHANG
2.2.2.9. Tạo tệp chỉ số
- Chỉ mục trên thuộc tính A là một cấu trúc dữ liệu làm cho việc tìm kiếm mẫu tin
có chứa A hiệu quả hơn
- Cú pháp: CREATE INDEX <tên chỉ mục> ON <tên bảng>(<tên cột>)
Ví dụ 1:
Tạo tệp chỉ số PHG_IND theo cột PHG của bảng NHANVIEN
CREATE INDEX PHG_IND ON NHANVIEN(PHG)
Ví dụ 2:
Tạo tệp chỉ số PHG_GT_IND theo cột PHG, GT của bảng NHANVIEN
CREATE INDEX PHG_GT_IND ON NHANVIEN(PHG, GT)
- Bỏ chỉ số: DROP INDEX <tên chỉ mục>
2.2.2.10. Tạo khung nhìn
Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL
Khung nhìn cũng là một quan hệ:
Không được lưu trữ vật lý (bảng ảo)
49
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Không chứa dữ liệu
Được định nghĩa từ những bảng khác
Có thể truy vấn hay cập nhật thông qua khung nhìn
Tại sao phải sử dụng khung nhìn?
Che dấu tính phức tạp của dữ liệu
Đơn giản hóa các câu truy vấn
Hiển thị dữ liệu dưới dạng tiện dụng nhất
An toàn dữ liệu
Cú pháp: CREATE VIEW <tên khung nhìn>(<danh sách tên cột>)
AS mệnh_để_SELECT
. Danh sách tên cột do người dùng tự đặt nhưng có giá trị tương ứng với giá trị của
các cột trong mệnh đề SELECT
. Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE
. Dữ liệu được lấy từ các bảng ở mệnh đề FROM
- Xóa khung nhìn: DROP VIEW <tên khung nhìn>
Ví dụ 1: Giả sử có quan hệ NHANVIEN(MANV, HONV, TENDEM, TEN,
NGAYSINH, GIOITINH, ĐIACHI, DIENTHOAI, MAPHG)
Khi đó, việc tạo khung nhìn tên NV_P5 được thực hiện như sau:
CREATE VIEW NV_P5 AS
SELECT MANV, HONV, TENDEM, TEN
FROM NHANVIEN
WHERE PHG=5
Ví dụ 2:
CREATE VIEW TONGLNG_SLNV_PB AS
SELECT MAPHG, TENPB, COUNT(*) AS SLNV,
SUM(LUONG) AS TONGLNG
FROM NHANVIEN, PHONGBAN
WHERE NHANVIEN.PHG = PHONGBAN.MAPHG
50
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
GROUP BY TENPHG
Ví dụ 3:
Tạo khung nhìn PP gồm các cột P#, Pname từ bảng P của các mặt hàng là
màu đỏ.
CREATE VIEW PP (P#, PNAME) AS
SELECT P#, PNAME
FROM P
WHERE COLOUR = 'RED'
2.2.2.11. Trao quyền
Cú pháp: GRANT <tên quyền truy nhập> ON <đối tượng>
TO <tên người sử dụng> [WITH GRANT OPTION]
Trong đó:
- <tên quyền truy nhập> gồm: read (đọc), select (chọn), write (ghi), delete (xóa),
insert (bổ sung), update (sửa chữa)
- <đối tượng>: là tên bảng, tên khung nhìn hoặc tên chương trình nào đó.
- <tên người sử dụng>: là tên của một người hoặc một nhóm người
- <WITH GRANT OPTION>: đảm bảo để người sử dụng có thể tiếp tục trao
quyền sử dụng cho người khác nữa.
Ví dụ:
GRANT read ON NHANVIEN
TO Hồng WITH GRANT OPTION
2.2.2.12. Hủy quyền
Cú pháp: REVOKE <tên quyền truy nhập> ON <đối tượng>
FROM <tên người sử dụng>
Ví dụ:
REVOKE read ON NHANVIEN
FROM Hồng
51
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CÂU HỎI VÀ BÀI TẬP
Bài 1/ Cho lược đồ cơ sở dữ liệu
Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP)
Lop(MALOP,TENLOP, MAKHOA)
Khoa(MAKHOA,TENKHOA)
Monhoc(MAMH,TENMH,DONVIHT)
Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA)
Ketqua(MASV, MAMH, LANTHI, DIEMTHI)
Phancong(MALOP,MAMH,MAGV)
Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:
1. Lập danh sách những sinh viên có hộ khẩu thường trú ở tỉnh “LONG AN”,
danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP.
2. Lập danh sách các sinh viên của lớp có MALOP là CDTH2A, danh sách cần
các thông tin: MASV, HOTENSV, NGAYSINH, TINH.
3. Lập danh sách các giảng viên có cấp học vị là THAC SY của khoa có
MAKHOA là “CNTT”, danh sách cần: MAGV, HOTENGV, CHUYENNGANH.
4. Lập bảng điểm thi lần 1 môn học “869” cho tất cả sinh viên thuộc hai lớp có
MALOP là “CĐTH2A” và “CĐTH2B”, danh sách cần: MASV, HOTENSV,
DIEMTHI.
5. Lập danh sách các giảng viên đã dạy lớp CĐTH2A, danh sách cần các thông
tin: MAGV, HOTENGV, TENKHOA, HOCVI, TENMH.
6. Lập danh sách các môn mà lớp CDTH2A đã học, danh sách cần các thông
tin: MAMH, TENMH, DONVIHT, HOTENGV.
7. Lập danh sách những giảng viên đã dạy sinh viên có MASV là
“00CDTH189“, danh sách cần MAGV, HOTENGV, HOCVI, CHUYENNGANH,
TENKHOA, TENMH.
52
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
8. Lập danh sách các sinh viên có mã khoa “CNTT” có điểm thi lần 1 môn học
“869” lớn hơn hoặc bằng 8, danh sách cần MASV, HOTENSV, DIEMTHI,
TENLOP.
Bài 2/ Cho các quan hệ sau:
Monhoc(MSMH,TENMH,SOTINCHI,TINHCHAT)
MSMH mã số môn học
TENMH tên môn học
SOTINCHI số tín chỉ
TINHCHAT bằng 1 nếu là môn học bắt buộc, bằng 0 nếu là môn học không
bắt buộc.
Sinhvien(MSSV,HOTEN,NGAYSINH,LOP)
MSSV mã số sinh viên
HOTEN họ tên sinh viên
NGAYSINH ngày sinh,
LOP(C,4,0) lớp
Diem(MSSV,MSMH,DIEMTHI)
DIEMTHI điểm thi
Hãy sử dụng câu lệnh SQL thực hiện các yêu cầu sau:
1. Hãy cho biết các môn học có SOTINCHI cao nhất?
2. Hãy liệt kê danh sách gồm MSSV,HOTEN,LOP, DIEMTHI của những sinh
viên thi môn học CSDL, theo thứ tự LOP,DIEMTHI.
3. Hãy cho biết các sinh viên có điểm thi cao nhất và môn học có mã là CSDL.
4. Hãy cho biết điểm của sinh viên có mã số là 9900277.
5. Hãy liệt kê danh sách gồm MSSV, HOTEN, LOP, ĐIỂM TRUNG BÌNH
của những sinh viên có điểm trung bình các môn dưới 5, theo thứ tự LOP, HOTEN.
6. Hãy liệt kê danh sách điểm trung bình của sinh viên theo thứ tự lớ, tên.
7. Hãy cho biết điểm của sinh viên theo từng môn học.
53
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CHƯƠNG 3: PHỤ THUỘC HÀM
3.1. Định nghĩa và tính chất
Phụ thuộc hàm là sự biểu diễn ràng buộc toàn vẹn dưới hình thức toán học để
đảm bảo thông tin không bị tổn thất khi phân rã hoặc kết nối giữa các quan hệ.
a/ Đinh nghĩa
Cho R(U) là một lược đồ quan hệ với U = {A1,A2,...,An} là tập thuộc tính, X
và Y là tập con của U.
Nói rằng XY (X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu r là một
quan hệ xác định trên R(U) sao cho bất kỳ hai bộ t1, t2 Є r mà t1[X]=t2[X] thì
t1[Y]=t2[Y].
Ví dụ 1:
MASV HOTEN MAKH TENKH MAMON TENMON SOTC DIEM
01 Lê Văn An K1 CNTT M1 TIN CB 4 7
01 Lê Văn An K1 CNTT M2 THVP 5 6
02 Nguyễn Bình K2 TOAN M1 TIN CB 4 7
02 Nguyễn Bình K2 TOAN M2 THVP 5 8
03 Tràn Ngọc K2 TOAN M1 TIN CB 4 8
03 Trần Ngọc K2 TOAN M2 THVP 5 9
Gồm các phụ thuộc hàm: MASV HOTEN, MAKH, TENKH
54
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
MAMON TENMON,SOTC
MAKH TENKH
MASV,MAMON DIEM
b/ Tính chất
Cho quan hệ Q với tập thuộc tính Q+, X, Y, Z thuộc Q+. Tính chất của phụ
thuộc hàm được phát biểu như sau:
* Tính phản xạ: Nếu Y X thì XY (Y là con hoặc = X)
* Tính tăng trưởng:
Nếu X Y thì X Z Y Z (X Z= XZ)
* Tính bắc cầu hay truyền ứng:
Nếu X Y và Y Z thì X Z
3.2. Hệ tiên đề Amstrong và các phép suy diễn logic
a/ Hệ tiên đề Amstrong
Các tính chất của phụ thuộc hàm tạo thành tiên để về phụ thuộc hàm do
Amstrong đưa ra năm 1974. Chúng được gọi là hệ tiên đề Amstrong.
Gọi R(U) là một lược đồ quan hệ với U = {A1,A2,...,An} là tập thuộc tính, X, Y, Z,
W là tập con của U. Hệ tiên đề Amstrong bao gồm:
* Tính phản xạ: Nếu Y X thì XY
* Tính tăng trưởng (thêm vào):
Nếu Z U và X Y thì X Z Y Z (X Z= XZ)
* Tính bắc cầu:
Nếu X Y và Y Z thì X Z
b/ Phép suy diễn logic
Từ hệ tiên đề Amstrong suy ra một số tính chất sau:
* Luật hợp: XY và XZ thì XXY
* Luật tựa bắc cầu: Nếu X Y và YZ W thì XZ W
* Luật tách: Nếu X Y và Z Y thì X Z
c/ Các ví dụ
55
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 1: Cho ABC, CA. Chứng minh rằng BC ABC
Trả lời:
b1: C A (gt)
b2: BC AB (luật tăng trưởng của b1 thêm B)
b3: AB C (gt)
b4: AB ABC (luật tăng trưởng của b3 thêm AB)
b5: BC ABC (tính bắc cầu từ b2 và b4)
Ví dụ 2: Cho tập phụ thuộc hàm F = {A B, BCD}. Chứng minh ACCD được
suy diễn logic từ F.
Trả lời:
b1: A B (gt)
b2: AC BC (luật tăng trưởng của b1 thêm C)
b3: BCD (gt)
b4: BCCD (luật tăng trưởng của b3 thêm C)
b5: ACCD (tính bắc cầu từ b2 và b4)
3.3. Bao đóng và thuật toán xác định bao đóng các thuộc tính
a/ Khái niệm về bao đóng (Closure)
* Bao đóng của tập phụ thuộc hàm
Gọi F là tập tất cả các phụ thuộc hàm của lược đồ R(U), X,Y U, XY là
phụ thuộc hàm. Ta nói rằng phụ thuộc hàm XY được suy dẫn logic từ F nếu
mối quan hệ r trên R(U) thỏa các phụ thuộc hàm của F thì cũng thỏa XY.
Ký hiệu: F|= XY
Tập F+ = {Tập tất cả các phụ thuộc hàm được suy dẫn logic từ F}
=> Gọi là bao đóng của tập phụ thuộc hàm.
Phụ thuộc hàm XX được gọi là phụ thuộc hàm hiển nhiên.
* Bao đóng của tập thuộc tính
Gọi F là tập các phụ thuộc hàm trên tập thuộc tính U, X U, X+ là bao đóng của X
(đối với F) được định nghĩa như sau:
56
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
X+ = { A U | (X A) F+}
Hay X+ là tập tất cả các thuộc tính A mà phụ thuộc hàm XA có thể được suy
diễn logic từ F nhờ hệ tiên đề Amstrong.
b/ Thuật toán tìm bao đóng của các tập thuộc tính với mỗi phụ thuộc hàm
Input: tập U hữu hạn các thuộc tính, tập các phụ thuộc hàm F trên U và X U
Out: X+, bao đóng của X đối với F
Phương pháp: tính liên tiếp các thuộc tính X0, X1,.. theo quy tắc:
1. X0 := X
2. X. i+1 := Xi A sao cho (YZ) F+ mà A Z và Y Xi
Bổ đề: XY thì Y X+
Ví dụ 1:
Tìm bao đóng của tập X = {AB} với các phụ thuộc hàm sau:
F = {AB C A D D E ACB }
Trả lời:
Khởi tạo: X0 = {AB}
X1 = {ABC} do AB C
X2 = {ABCD} do A D
X3 = {ABCDE} do D E
==> X= = {ABCDE}
Ví dụ 2:
Tìm bao đóng của tập X = {AC} với các phụ thuộc hàm sau:
F = {BA DA CE D H GH C AC D }
Trả lời:
Khởi tạo: X0 ={AC}
X1 ={ACD} do AC D
X2 ={ACDE} do DA CE
X3 ={ACDEH} do D H
57
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
==> X+ ={ACDEH}
3.4. Tập các phụ thuộc tương đương và phủ tối thiểu
a/ Định nghĩa
- Hai tập phụ thuộc hàm (PTH) F và G được gọi là tương đương nếu F+ = G+
, ký hiệu F=G. Ta nói F phủ G nếu F+ G+ ,
* Thuật toán xác định F và G có tương đương hay không
b1: Với mỗi phụ thuộc hàm X Y của F ta xác định xem X Y có là thành
viên của G hay không. Tức là kiểm tra xem Y có thuộc (X+)G hay không.
b2: Với mỗi phụ thuộc hàm X Y của G ta xác định xem X Y có là thành
viên của F hay không. Tức là kiểm tra xem Y có thuộc (X+)F hay không.
Nếu cả hai bước trên đều đúng thì F và G là tương đương.
Ví dụ:
Cho lược đồ quan hệ Q(ABCDE) và hai tập phụ thuộc hàm
F = {ABC, AD, CD E} và G = {A BCE, A ABD, CD E}
Hỏi: - F có tương đương với G không?
- F có tương đương với G’ ={A BCDE} không?
Trả lời:
(AG)+ = ABCDE => trong G+ có A BC và A D => F G+ => F+ G+
(AF)+ = ABCDE => trong F+ có A BCE và A ABD => G F+ => G+ F+
Do đó: F+ = G+ => F ≡ G
Do (CD)+G’ = CD => G’ không chứa phụ thuộc hàm CD E => F không tương
đương với G’
b/ Phủ tối thiểu của một tập phụ thuộc hàm
* Khái niệm 1: Phụ thuộc hàm có vế trái dư thừa
F là tập các phụ thuộc hàm trên lược đồ quan hệ Q, Z là tập thuộc tính, Z-Y
F. Nói rằng phụ thuộc hàm ZY có vế trái dư thừa (phụ thuộc hàm không đầy
đủ) nếu có một thuộc tính A Z sao cho F ≡ F - {ZY} {(Z - A)Y}
58
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ngược lại, ZY là phụ thuộc hàm có vế trái không dư thừa hay Y phụ thuộc hàm
đầy đủ vào Z.
Ví dụ 1:
Cho quan hệ Q(A,B,C) và các phụ thuộc hàm F={ABC; BC}
thì phụ thuộc hàm ABC có vế trái dư thừa A (vì BC)
F ≡ F - {ABC} {(AB - A)C} = {B C}
Do đó: AB C là phụ thuộc hàm không đẩy đủ;
B C là phụ thuộc hàm đầy đủ.
Chú ý: Phụ thuộc hàm có vế trái chứa một thuộc tính là phụ thuộc hàm đầy đủ.
Ví dụ 2:
Cho tập phụ thuộc hàm F = {ABD, ABC, BC} thì ABD là phụ thuộc
hàm có vế trái dư thừa B vì:
F ≡ F - {ABD} {(AD} ≡ {ABC, BC, AD}
- Thuật toán loại khỏi F các PTH có vế trái dư thừa:
b1: Lần lượt thực hiện b2 cho các phụ thuộc hàm X-->Y của F
b2: Với mọi tập con thật sự X' ≠ của X: nếu X'Y F+ thì thay XY
trong F bằng X'Y, thực hiện lại bước 2
Ví dụ 3: Cho tập phụ thuộc hàm F= {ABC, DEG, ACDB, CA, BEC,
CEAG, BCD, CGBD}. Hãy loại bỏ các phụ thuộc hàm có vế trái dư thừa ra
khỏi F?
Xét ABC:
bỏ A, được BC, ta có: B+F = B, nhận thấy C B+
F nên không bỏ được A.
bỏ B, được AC, ta có: A+F = A, nhận thấy C A+
F nên không bỏ được B.
Xét ACDB:
bỏ A, được CDB, ta có: CD+F = CDEGAB, nhận thấy B CD+
F nên bỏ
được A.
bỏ C, được ADB, ta có: AD+F = ADEG, nhận thấy B AD+
F nên không bỏ
được C.
59
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
bỏ D, được ACB, ta có: AC+F = AC, nhận thấy B AC+
F nên không bỏ
được D.
Lúc này, F = { ABC, DEG, CDB, CA, BEC, CEAG, BCD,
CGBD}
Xét BEC:
bỏ B, được EC, ta có: E+F = E, nhận thấy C E+
F nên không bỏ được B.
bỏ E, được BC, ta có: B+F = B, nhận thấy C B+
F nên không bỏ được E.
Xét CEAG:
bỏ C, được EAG, ta có: E+F = E, nhận thấy AG E+
F nên không bỏ được
C.
bỏ E, được CAG, ta có: C+F = CA, nhận thấy AG C+
F nên không bỏ được
E.
Xét BCD:
bỏ B, được CD, ta có: C+F = CA, nhận thấy D C+
F nên không bỏ được B.
bỏ C, được BD, ta có: B+F = B, nhận thấy D B+
F nên không bỏ được C.
Xét CGBD:
bỏ C, được GBD, ta có: G+F = G, nhận thấy BD G+
F nên không bỏ được
C.
bỏ G, được CBD, ta có: C+F = CA, nhận thấy BD C+
F nên không bỏ được
G.
Vậy, sau khi loại bỏ các phụ thuộc hàm có vế trái dư thừa, ta được tập phụ thuộc
hàm mới là , F = { ABC, DEG, CDB, CA, BEC, CEAG,
BCD, CGBD}
* Khái niệm 2: Phụ thuộc hàm có vế phải có một thuộc tính
Mỗi tập phụ thuộc hàm F đều tương đương với một tập phụ thuộc hàm G mà
vế phải của các phụ thuộc hàm trong G chỉ gồm một thuộc tính ==> G được gọi là
tập phụ thuộc hàm có vế phải có một thuộc tính.
60
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ: Cho tập phụ thuộc hàm F = {ABC, BC, ABD}, có ABC là phụ
thuộc hàm có vế phải chứa hơn một thuộc tính, ta có thể tách thành hai phụ thuộc
hàm gồm AB, AC. Khi đó G ={AB, AC, BC, ABD} và G được gọi là
tập phụ thuộc hàm có vế phải có một thuộc tính.
* Khái niệm 3: Tập phụ thuộc hàm không dư thừa
Phụ thuộc hàm XY F là dư thừa nếu nó có thể suy diễn được từ các phụ
thuộc hàm còn lại trong F.
Tập phụ thuộc hàm F được gọi là tập phụ thuộc hàm không dư thừa nếu
không tồn tại F' F sao cho F' ≡ F. Ngược lại, F là tập phụ thuộc hàm dư thừa.
Ví dụ: Cho lược đồ quan hệ R(U) với U = ABCD và tập phụ thuộc hàm F={ABC,
BD, ABD}. Hãy loại bỏ khỏi F các phụ thuộc hàm dư thừa.
Giải:
Xét ABC: F’ = { BD, ABD}, (A)+F’ = A nên ABC không thuộc F+
nên không thể loại bỏ nó khỏi F.
Xét BD: F’ = { ABC, ABD}, (B)+F’ = B nên BD không thuộc F+ nên
không thể loại bỏ nó khỏi F.
Xét ABD: F’ = { ABC, BD}, (AB)+F’ = ABCD nên ABD thuộc F+ nên có
thể loại bỏ nó khỏi F.
Vậy sau khi loại bỏ các phụ thuộc hàm dư thừa thì F = {ABC, B D}.
- Thuật toán loại khỏi F các phụ thuộc hàm dư thừa:
b1: Lần lượt xét các phụ thuộc hàm XY của F
b2: Nếu X-->Y là thành viên của F - {XY} thì loại XY ra khỏi F
b3: thực hiện b2 cho các phụ thuộc hàm tiếp theo của F
* Khái niệm 4: Tập phụ thuộc hàm tối thiểu
F được gọi là phụ thuộc hàm tối thiểu (phủ tối thiểu) nếu F đồng thời
thỏa ba điều kiện sau: - F là tập PTH có vế trái không dư thừa
- F là tập PTH có vế phải có một thuộc tính
- F là tập PTH không dư thừa.
61
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
3.5. Thuật toán xác định tập phủ tối thiểu của phụ thuộc hàm
b1: Tách các PTH có vế phải trên một thuộc tính thành các PTH có vế phải
có một thuộc tính.
b2: Loại khỏi F các PTH có vế trái dư thừa
b3: Loại khỏi F các PTH dư thừa.
Ví dụ 1:
Cho F = {ABCDE, CD, EGH, AEH}. Xác định phủ tối thiểu của
phụ thuộc hàm F?
Trả lời:
b1: Tách các phụ thuộc hàm thành các phụ thuộc hàm có vế phải có một thuộc tính:
F = {AB, AC, AD, AE, CD, EGH, AEH}
b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:
Xét EGH:
bỏ E, được GH, ta có: G+F = G, nhận thấy H G+
F nên không bỏ được E.
bỏ G, được EH, ta có: E+F = E, nhận thấy H E+
F nên không bỏ được G.
Xét AEH:
bỏ A, được EH, ta có: E+F = E, nhận thấy H E+
F nên không bỏ được A.
bỏ E, được AH, ta có: A+F = ABCDEH, nhận thấy H A+
F nên bỏ được E.
Vậy F = {AB, AC, AD, AE, CD, EGH, AH}
b3: Loại bỏ các phụ thuộc hàm dư thừa:
Ta có F = {AB, AC, AD, AE, CD, EGH, AH}
Xét AB: F’ = { AC, AD, AE, CD, EGH, AH }, (A)+F’ = ACDEH
nên AB không thuộc F’+ nên không thể loại bỏ nó khỏi F.
Xét AC: F’ = { AB, AE, CD, EGH, AH }, (A)+F’ = ABEH nên AC
không thuộc F’+ nên không thể loại bỏ nó khỏi F.
Xét AD: F’ = { AB, AC, AE, CD, EGH, AH }, (A)+F’ = ABCDEH
nên AD thuộc F’+ nên có thể loại bỏ nó khỏi F.
Lúc này F’ = {AB, AC, AE, CD, EGH, AH }
62
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Xét AE: F’ = { AB, AC, CD, EGH, AH }, (A)+F’ = ABCDH nên AE
không thuộc F’+ nên không thể loại bỏ nó khỏi F.
Xét CD: F’ = { AB, AC, AE, EGH, AH }, (C)+F’ = C nên CD không
thuộc F’+ nên không thể loại bỏ nó khỏi F.
Xét EGH: F’ = {AB, AC, AE, CD, AH }, (EG)+F’ = EG nên EGH
không thuộc F’+ nên không thể loại bỏ nó khỏi F.
Xét AH: F’ = { AB, AC, AE, CD, EGH}, (A)+F’ =BCDE nên AH
không thuộc F’+ nên không thể loại bỏ nó khỏi F.
Vậy phủ tối thiểu của tập phụ thuộc hàm là F’ = {AB, AC, AE, CD,
EGH, AH }
Ví dụ 2:
Cho lược đồ quan hệ Q(ABCD) và tập phụ thuộc hàm F = {AB CD, BC,
CD}. Hãy tìm phủ tối thiểu của F?
Trả lời:
b1: Tách các phụ thuộc hàm thành các phụ thuộc hàm có vế phải có một thuộc tính:
F = {ABC, ABD, BC, CD}
b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:
Xét ABC:
bỏ A, được BC, ta có: B+F = BCD, nhận thấy C B+
F nên bỏ được A.
bỏ B, được AC, ta có: A+F = A, nhận thấy C A+
F nên không bỏ được B.
Xét ABD:
bỏ A, được BD, ta có: B+F = BCD, nhận thấy D B+
F nên bỏ được A.
bỏ B, được AD, ta có: A+F = A, nhận thấy D A+
F nên không bỏ được B.
Vậy F = {BC, BD, BC, CD} F ={ BC, BD, CD}
b3: Loại bỏ các phụ thuộc hàm dư thừa:
Ta có F = {BC, BD, CD}
Xét BC: F’ = {BD, CD }, (B)+F’ = BD nên BC không thuộc F’+ nên không
thể loại bỏ nó khỏi F.
63
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Xét BD: F’ = {BC, CD }, (B)+F’ =BCD nên BD thuộc F’+ nên có thể loại
bỏ nó khỏi F.
Lúc này F’ = { BC, CD}
Xét CD: F’ = {BC}, (B)+F’ =B nên CD không thuộc F’+ nên không thể loại
bỏ nó khỏi F.
Vậy phủ tối thiểu của tập F là F = {BC, CD}
3.6. Khóa của lược đồ quan hệ
- Khái niệm khóa của lược đồ quan hệ:
Cho Q(A1,A2,…,An) là một lược đồ quan hệ, U là tập thuộc tính, F là tập
phụ thuộc hàm trên Q và K là tập con của U. Nói rằng: K là một khóa của Q nếu:
1. K+ = U (hay K U F+ )
2. Không tồn tại Ko K sao cho Ko+ = U
Khóa là tập thuộc tính nhỏ nhất có bao đóng bằng U (không có tập con nào của
nó có tính chất như vậy).
Trong một lược đồ quan hệ có thể tồn tại một hay nhiều khóa, ta gọi các khóa này là
khóa dự tuyển (candidate key) hoặc chỉ gọi tắt là khóa. Người ta có thể chọn ra một
trong số các khóa đó để sử dụng. Khi đó, khóa được chọn ra sử dụng sẽ được gọi là
khóa chính (primary key)
- Tập thuộc tính S được gọi là siêu khóa (super key) nếu K S
- Thuộc tính A được gọi là thuộc tính khóa (prime attribute) nếu AK với K là khóa
bất kỳ của lược đồ quan hệ Q. Ngược lại, K là thuộc tính không khóa (nonprime
attribute).
Ví dụ 1: Cho quan hệ Sinh viên(Số thẻ SV, Họ tên, Ngày sinh, Quê quán) với các
phụ thuộc hàm như sau: Số thẻ Sv --> Họ tên
Số thẻ Sv --> Ngày sinh
Số thẻ Sv --> Quê quán
Như vậy Số thẻ SV là khóa của quan hệ Sinh viên
64
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 2: Cho quan hệ Giảng dạy(Số phòng học,Thời gian, Tên giảng viên, Tên môn
học) với các phụ thuộc hàm như sau:
Số phòng học, Thời gian --> Tên giảng viên, Tên môn học
Như vậy (Số phòng học, Thời gian) là khoá của quan hệ Giảng dạy
3.7. Thuật toán đoán nhận khóa
a/ Thuật toán tìm một khóa của lược đồ quan hệ
Ta gọi U là tập đầy đủ các thuộc tính của lược đồ quan hệ Q;
R là tập thuộc tính nằm ở vế phải của các phụ thuộc hàm;
L là tập thuộc tính nằm ở vế trái của các phụ thuộc hàm;
Theo các tính chất của khóa, ta có thể thấy khóa của lược đồ quan hệ bị kẹp giữa hai
tập thuộc tính là U\R và (U\R) (LR) và các khóa chỉ khác nhau trên các thuộc
tính nằm trong tập LR. Do đó thuật toán tìm khóa sẽ xuất phát từ tập siêu khóa
(U\R) (LR) và tìm cách loại bỏ dần các thuộc tính nằm trong tập LR cho đến
khi thu được tập thuộc tính nhỏ nhất có bao đóng là U thì dừng lại.
Vào: Tập thuộc tính U và tập phụ thuộc hàm F.
Ra: Một khóa của lược đồ quan hệ
Begin
X := U\R
If (U\R)+ U then
Begin
X:= X (L R)
For each Ai L R do
If (X\{Ai}+ = U then X := X\{Ai}
end
K := X
End.
Ví dụ 1: Cho lược đồ quan hệ Q(ABCDEG) và tập phụ thuộc hàm F = {BC,
CB, AGD}. Hãy tìm một khóa của lược đồ quan hệ Q?
65
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Giải:
Ta có: U = ABCDEG, L = ABC, R = BCDG
U\R = AE, L R = BC
Ta thấy (U\R)+ = (AE)+ = AEGD U nên:
X = (U\R) (LR) = ABCE
Xét (X\{B})+ = (ACE)+ = ACEGDB = U nên X = ACE
Xét (X\{C})+ = (AE)+ = AEGD ≠ U nên không thể loại bỏ C khỏi X.
Vậy K = X = ACE là một khóa của lược đồ quan hệ.
Ví dụ 2: Cho lược đồ quan hệ Q(ABCDEGHI) và tập phụ thuộc hàm F = {ABE,
AGI, BEI, EG, GIH}. Hãy tìm một khóa của lược đồ quan hệ Q?
Giải:
Ta có: U = ABCDEGHI, L = ABEGI, R = EGHI
U\R = ABCD, L R = EGI
Ta thấy (U\R)+ = (ABCD)+ = ABCDEGHI = U nên K= ABCD là khóa duy nhất của
lược đồ quan hệ.
Ví dụ 3: Cho lược đồ quan hệ Q(ABCDEGHIJ) và tập phụ thuộc hàm F = {BGD,
GJ, AIC, CEH, BDG, JHA, DI}. Hãy tìm một khóa của lược đồ
quan hệ Q?
Giải:
Ta có: U = ABCDEGHIJ, L = ABCDEGHIJ, R = ACDGHIJ
U\R = BE, L R = ACDGHIJ
Ta thấy (U\R)+ = (BE)+ = BE U nên:
X = (U\R) (LR) = ABCDEGHIJ
Xét (X\{A})+ = (BCDEGHIJ)+ = ABCDEGHIJ = U nên X = BCDEGHIJ.
Xét (X\{C})+ = (BDEGHIJ)+ = BDEGHIJ U nên không thể loại bỏ C, lúc
này X vẫn gồm các thuộc tính như cũ tức là X = BCDEGHIJ.
Xét (X\{D})+ = (BCEGHIJ)+ = ABCDEGHIJ = U nên X = BCEGHIJ.
66
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Xét (X\{G})+ = (BCEHIJ)+ = ABCEHIJ U nên không thể loại bỏ G, lúc
này X vẫn gồm các thuộc tính như cũ tức là X = BCEGHIJ.
Xét (X\{H})+ = (BCEGIJ)+ = ABCDEGHIJ = U nên X = BCEGIJ.
Xét (X\{I})+ = (BCEGJ)+ = ABCDEGHIJ = U nên X = BCEGJ.
Xét (X\{J})+ = (BCEG)+ = ABCDEGHIJ = U nên X = BCEG.
Vậy K = X = BCEG là một khóa của lược đồ quan hệ.
b/ Thuật toán tìm tất cả các khóa của lược đồ quan hệ
* Thuật toán cơ bản
b1: Xác định tất cả các tập con khác rỗng của Q+. Kết quả tìm được giả sử là
các tập thuộc tính X1, X2,..,Xn
b2: Tìm bao đóng của các Xi
b3: Siêu khóa là các Xi có bao đóng đúng bằng Q+. Giả sử ta ta có siêu khóa
là S={S1,S2,..,Sm}
b4: Xây dựng tập chứa tất cả các khóa của Q từ tập S bằng cách xét mọi Si,Sj
là con của S (i≠j), nếu Si Sj thì ta loại Sj (i,j=1..n).
Kết quả còn lại của S chính là tất cả các khóa cần tìm.
Ví dụ:
Cho Q(L,S,Z), F = {CSZ, ZC}. Hãy tìm tất cả các khóa của lược đồ quan
hệ trên?
Giải:
Xi Xi+ Siêu khóa S Khóa K
C C
S S
CS CSZ CS CS
Z ZC
CZ CZ
SZ SZC SZ SZ67
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CSZ CSZ CSZ
Vậy lược đồ quan hệ Q có hai khóa là {C ,S} và {S,Z}
* Thuật toán cải tiến
- Một số khái niệm:
+ Tập nguồn (tập thuộc tính nguồn) là tập chứa tất cả các thuộc tính có xuất
hiện ở vế trái và không xuất hiện ở vế phải của các phụ thuộc hàm và các thuộc tính
không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm.
+ Tập đích (tập thuộc tính đích) là tập chứa tất cả các thuộc tính chỉ xuất hiện
ở vế phải và không xuất hiện ở vế trái của các phụ thuộc hàm.
+ Tập trung gian (tập thuộc tính trung gian) là tập chứa tất cả các thuộc tính
xuất hiện ở cả vế phải và vế trái của phụ thuộc hàm.
Hệ quả: Nếu K là khóa của lược đồ quan hệ Q thì tập nguồn thuộc K và giao của
tập đích với K bằng rỗng.
==> thuật toán cải tiến như sau:
B1: Tạo tập thuộc tính nguồn TN = U\R, tập thuộc tính trung gian TG = LR
B2: Nếu TG = thì lược đồ quan hệ Q chỉ có một khóa K với K = TN.
Nếu TG ≠ thì thực hiện B3.
B3: Tìm tất cả các tập con Xi của tập TG.
B4: Tìm các siêu khóa Si bằng cách Xi nếu (TN Xi )+ = Q+ thì Si = TN Xi.
B5: Tìm khóa S 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 khóa S. S còn lại chính là
khóa cần tìm.
Ví dụ 1:
Cho Q(L,S,Z), F = {CSZ, ZC}. Hãy tìm tất cả các khóa của lược đồ quan
hệ trên?
Giải:
68
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Áp dụng thuật toán cải tiến ta có TN = U\R = S, TG = LR = CZ. Gọi Xi là các tập
con của tập TG, ta có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa S S
C SC SCZ (Q+) SC SC
Z SZ SCZ (Q+) SZ SZ
CZ SCZ SCZ (Q+) SCZ
Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = SC và SZ. Siêu khóa
SCZ bị loại vì nó không phải là siêu khóa tối thiểu.
Ví dụ 2:
Cho Q(ABCD), F = {ABC, BD, BCA}. Hãy tìm tất cả các khóa của
lược đồ quan hệ trên?
Giải:
Ta có: U= ABCD, L = ABC, R = ACD, TN = U\R = B, TG = LR = AC. Gọi Xi là
các tập con của tập TG, ta có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa B BD
A AB ABCD(Q+) AB AB
C BC ABCD (Q+) BC BC
AC ABC ABCD (Q+) ABC
Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = AB và BC. Siêu khóa
ABC bị loại vì nó không phải là siêu khóa tối thiểu.
Ví dụ 3:
Cho Q(ABCDEI), F = {ACDEBI, CEAD}. Hãy tìm tất cả các khóa của
lược đồ quan hệ trên?
Giải:
69
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ta có: U= ABCDEI, L = ACDE, R = ABDEI, TN = U\R = C, TG = LR = ADE.
Gọi Xi là các tập con của tập TG, ta có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa C C
A AC AC
D DC DC
E EC ECADBI (Q+) EC EC
AD ADC ADCEBI(Q+) ADC ADC
AE AEC AECDBI(Q+) AEC
DE DEC DECABI(Q+) DEC
ADE ADEC ADECBI(Q+) ADEC
Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = EC và ADC. Siêu khóa
AEC, DEC, ADEC bị loại vì chúng không phải là siêu khóa tối thiểu (có chứa siêu
khóa CE).
CÂU HỎI VÀ BÀI TẬP
1/ Chứng minh rằng:
a. Tính cộng đầy đủ: XY và ZW thì XZYW
b. Tính tích lũy: XY và YZW thì XYZW
2/ Cho F = {ABC, AB, BC} và G = {ABC, AB, BC, AC}. Hỏi F và
G có tương đương không?
3/ Cho lược đồ cơ sở dữ liệu và phụ thuộc hàm như sau:
Kehoach(Ngay,Gio,Phong,Monhoc,Giaovien)
F = {Ngay,Gio,Phong Monhoc; Monhoc,NgayGiaovien;
Ngay,Gio,Phong Giaovien; MonhocGiaovien}
70
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
a. Tính (Ngay,Gio,Phong )+ ; (Monhoc)+
b. Tìm phủ tối thiểu của F?
c. Tìm tất cả các khóa của lược đồ Kehoach trên?
4/ Cho lược đồ quan hệ R = (U, F); U = {A,B,C,D,E,G}
F = {CG, BG CD, AEG BC, CG AE, B CG }
a. Tính C+
b. Tính (B)+
c. Tính (AEG)+
5/ Cho lược đồ quan hệ Q(ABCDEG) và phụ thuộc hàm F = {ABC, CA,
BCD, ACDB, DEG, CGBD, CEAG}. Đặt X = {B,D}, Y = {C,G}. Tính
X+ , Y+ ?
6/ Cho lược đồ quan hệ R = (U, F); U= {A,B,C,D,E,G,H} và tập phụ thuộc hàm
F={ABC, DEG, ACDB, CA, BEC, CEAG, BCD, CGBD, G
H}
a. Tính (D)+
b. Tính (CG)+
c. Tính (BE)+
d. Tìm phủ tối thiểu cuả F?
7/ Cho lược đồ quan hệ Q và tập phụ thuộc hàm F
a. F = {ABE, AGI, BEI, EG, GIH}. Chứng minh rằng: ABGH.
b. F = {ABC, BD, CDE, CEGH, GA}. Chứng minh rằng: ABE,
ABG.
8/ Cho Q(ABCDEGHI) và F = {ACB, BIACD, CGAE, ABCD, HI,
ACEBCG}. Hãy tìm một khóa của lược đồ quan hệ?
71
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CHƯƠNG 4: PHÉP TÁCH VÀ CHUẨN HÓA QUAN HỆ
4.1. Khái niệm phép tách
Cho lược đồ quan hệ p = (U,F). Một phép tách trên tập thuộc tính U là một họ
các tập con của U, p = (X1 ,X2,...X k) thỏa tính chất:
Xi = U
4.2. Phép tách các lược đồ quan hệ72
k
i=1
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
a. Phép tách một lược đồ quan hệ
Phép tách lược đồ quan hệ R = {A1,A2, ...,An} là việc thay thế lược đồ quan
hệ R bằng tập các lược đồ {R1, R2, ...,Rk} trong đó Ri R (i=1..k) và
R = R1R2...Rk
Ví dụ:
Cho Q(Mahs, Tenhs,Diachi,Ngaysinh) và các phụ thuộc hàm MahsDiachi,
TenhsNgaysinh, khi đó ta có thể thay thế Q bằng hai lược đồ quan hệ Q1 và Q2
như sau: Q1 = (Mahs,Diachi); Q2 = (Mahs,Tenhs,Ngaysinh).
b. Phép tách kết nối không mất mát thông tin
Cho lược đồ quan hệ Q và tập phụ thuộc hàm F. Q được tách thành các lược
đồ quan hệ con Q1 ...Q2 theo từng bước mà ở mỗi bước một lược đồ quan hệ được
tách thành hai lược đồ quan hệ con và thỏa mãn điều kiện của tính chất bảo toàn
thông tin thì với r là quan hệ bất kỳ của Q ta luôn có:
r = r.Q1 r.Q2 r.Q3 ... r.Qn
4.3. Thuật toán kiểm tra phép tách không tổn thất thông tin
Vào: Lược đồ quan hệ Q(A1,A2, ...,An), tập phụ thuộc hàm F, phép tách
p = (Q1,Q2,...Qk)
Ra: p có là phép tách bảo toàn thông tin không?
Bước1: Thiết lập bảng với k+1 dòng, n+1 cột. Cột j tương ứng với thuộc tính Aj
(j=1..n), hàng i tương ứng với lược đồ quan hệ Qi (i=1..k).
Tại vị trí hàng i, cột j ta điền ký hiệu Aj nếu AjQi. Nếu không thì ta đặt ký
hiệu bij vào vị trí đó
Bước 2: Xét lần lượt các phụ thuộc hàm trong F, áp dụng cho bảng vừa mới lập ở
trên. Giả sử xét (XY)F, chúng ta tìm những hàng giống nhau ở tất cả các thuộc
tính của X, nếu thấy hàng như vậy ta sẽ làm cho các ký hiệu của hai hàng này bằng
nhau ở tất cả các thuộc tính của Y.
Khi làm cho hai ký hiệu này bằng nhau, nếu một trong hai ký hiệu là aj thì
cho ký hiệu kia trở thành aj , nếu hai ký hiệu là bk hoặc bl thì có thể cho chúng trở
73
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
thành bt hoặc bt với t=min(k,l). Bước này được tiếp tục cho các phụ thuộc hàm còn
lại của F cho đến khi không còn áp dụng được nữa.
Bước 3: Xét bảng kết quả, nếu thấy trong bảng này có một hàng chứa toàn ai
(i=1..n) thì kết luận là phép kết nối bảo toàn thông tin, ngược lại là phép kết nối mất
mát thông tin.
Ví dụ 1:
Cho S(Sname, Add, Pro, Price) được tách làm hai quan hệ gồm:
S1 (Sname, Add), S2 (Sname, Pro, Price) với các phụ thuộc hàm SnameAdd,
Sname,ProPrice. Hãy kiểm tra xem phép tách trên có làm tổn thất thông tin hay
không?
Áp dụng phương pháp trên ta có:
Kết quả của bước 1:
Sname Add Pro Price
a1 a2 b13 b13
a1 b22 a3 a4
Kết quả của bước 2:
Áp dụng phụ thuộc hàm SnameAdd và Sname,ProPrice ta có:
Sname Add Pro Price
a1 a2 b13 b13
a1 a2 a3 a4
Kết quả của bước 3:
Nhận thấy giá trị tại các cột của hàng cuối cùng trong bảng trên đều có dạng ai nên
phép tách trên là không làm tổn thất thông tin.
Ví dụ 2:
Cho R:={A,B, C,D, E, F} tập các thuộc tính.
Xét phép tách – kết nối ϕ[R1 ,R2 , R3 ] trong đó: R1={A,B,D,E}, R2 ={A,C,D,F },
74
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
R3 = {B,C,E,F } và F = {A → B, F → E}.
Bước 1: Thành lập bảng ban đầu gồm 3 hàng và 6 cột:
Bước 2: Áp dụng A → B suy ra b22 = a2
Bước 3: Áp dụng F → E suy ra b25 = a5
Như vậy tồn tại hàng thứ 2 R2 chứa các ký tự {a1 , a2, a3, a4, a5, a6}. Suy ra phép tách
ϕ có kết nối không tổn thất thông tin.
Chú ý: Nếu p = (R1 ,R2) là một phép tách của R và F là các tập phụ thuộc hàm thì p
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
4.4. Các dạng chuẩn
Trước khi đi vào tìm hiểu các dạng chuẩn, chúng ta cần hiểu một số khái
niệm có liên quan, gồm:
Thuộc tính khoá/không khoá
A là một thuộc tính khoá nếu A có tham gia vào bất kỳ một khoá nào của
quan hệ, ngược lại A gọi là thuộc tính không khoá.
Ví dụ:
75
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho lược đồ quan hệ Q(ABC) và tập phụ thuộc hàm F={ A→ B; A → C; B → A}
Có hai khóa là A và B. khi đó thuộc tính khoá là A, B; thuộc tính không khóa là C.
Thuộc tính phụ thuộc đầy đủ - phụ thuộc hàm đầy đủ
Y được gọi là một phụ thuộc đầy đủ vào X nếu XY và không tồn tại X’
X sao cho X’ Y (nói cách khác: phụ thuộc hàm đầy đủ có nghĩa là Y chỉ phụ
thuộc hàm vào X chứ không phụ thuộc vào một tập con nào đó của X)
A là một thuộc tính phụ thuộc đầy đủ vào tập thuộc tính X nếu X →A là
một phụ thuộc hàm đầy đủ (tức là không tồn tại X' X sao cho X' → A F+)
Ví dụ: Cho lược đồ quan hệ Q(ABC) và tập phụ thuộc hàm
F={ A → B; A→ C; AB → C} thì A → ;B A → C là các phụ thuộc hàm đầy đủ.
Phụ thuộc hàm AB → C không là phụ thuộc hàm đầy đủ vì có A → C.
4.4.1. Dạng chuẩn 1
Khái niệm: Một lược đồ quan hệ R được gọi là ở dạng chuẩn 1NF (First Normal
Form) nếu và chỉ nếu toàn bộ miền có mặt rong R đề chỉ chứa các giá trị nguyên
tố. Hay mọi thuộc tính của R đều không phải là thuộc tính phức hợp.
Ví dụ 1: Cho bảng quan hệ R như sau:
Mãsv Họtên Mãlớp Tênlớp Điểmthi
S1 Tiến L1 MT01 M1 9
S1 Tiến L1 MT01 M2 7
S1 Tiến L1 MT01 M3 8
S2 Trúc L1 MT01 M1 9
S2 Trúc L1 MT01 M2 8
S3 Hiền L2 MT02 M1 5
Nhận thấy quan hệ R không ở dạng chuẩn 1 vì thuộc tính Điểmthi là thuộc tính phức
hợp.
Ví dụ 2: Cho bảng quan hệ R như sau:
76
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm
S1 Tiến L1 MT01 M1 9
S1 Tiến L1 MT01 M2 7
S1 Tiến L1 MT01 M3 8
S2 Trúc L1 MT01 M1 9
S2 Trúc L1 MT01 M2 8
S3 Hiền L2 MT02 M1 5
Quan hệ R ở 1NF vì các thuộc tính của R không là thuộc tính đa trị, không là thuộc
tính phức hợp.
4.4.2. Dạng chuẩn 2
Khái niệm: Một lược đồ quan hệ R được gọi là ở dạng chuẩn 2NF (Second Normal
Form) nếu nó ở dạng chuẩn 1 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 (tức không phụ thuộc vào thuộc tính con nào của khóa)
Ví dụ 1: Cho quan hệ R như sau:
Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm
S1 Tiến L1 MT01 M1 9
S1 Tiến L1 MT01 M2 7
S1 Tiến L1 MT01 M3 8
S2 Trúc L1 MT01 M1 9
S2 Trúc L1 MT01 M2 8
S3 Hiền L2 MT02 M1 5
Các phụ thuộc hàm: Mãsv {Họtên, Mãlớp}
Mãlớp Tênlớp
{Mãsv, Mônhọc} Điểm
Khóa của R: {Mãsv, Mônhọc}
77
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Lược đồ quan hệ R không ở 2NF vì thuộc tính không khóa Họtên phụ thuộc
hàm riêng phần vào khóa {Mãsv, Mônhọc}.
Ví dụ 2: Quan hệ R1
Quan hệ R2
Mãsv Mônhọc Điểm
S1 M1 9
S1 M2 7
S1 M3 8
S2 M1 9
S2 M2 8
S3 M1 5
Lược đồ quan hệ R1 và R2 đều ở 2NF vì các thuộc tính không khóa đều phụ
thuộc hàm đầy đủ vào khóa.
Hệ quả:
1. Nếu một lược đồ quan hệ đạt chuẩn 1 và tập thuộc tính không khóa của nó là tập
rỗng thì lược đồ quan hệ đó đạt dạng chuẩn 2.
2. Nếu tất cả các khóa của lược đồ quan hệ chỉ gồm một thuộc tính thì lược đồ quan
hệ đó đạt chuẩn 2.
Mãsv Họtên Mãlớp Tênlớp
S1 Tiến L1 MT01
S2 Trúc L1 MT01
S3 Hiền L2 MT02
78
Khóa của R1: Mãsv
Khóa của R2: {Mãsv, Mônhọc}
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* Thuật toán kiểm tra xem một lược đồ quan hệ có đạt chuẩn 2 hay không:
Vào: Lược đồ quan hệ R(U) và tập phụ thuộc hàm F
Ra: Khẳng định R(U) có đạt chuẩn 2 hay không.
Bước 1: Tìm tát cả các khóa của lược đồ quan hệ và xác định các thuộc tính không
khóa.
Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả các tập con thật sự K’ của K.
Bước 3: Nếu tồn tại một bao đóng (K’)+ nào đó chứa thuộc tính không khóa thì
R(U) không đạt chuẩn 2. Ngược lại thì đạt chuẩn 2.
Việc áp dụng thuật toán trên luôn chắc chắn giúp ta nhân diện được lược đồ
quan hệ có đạt chuẩn 2 hay không cho dù lược đồ quan hệ có nhiều thuộc tính hoặc
phụ thuộc hàm phức tạp. Tuy nhiên việc thực hiện theo đúng thuật toán trên thường
mất nhiều thời gian nên người ta thường hay xuất phát từ định nghĩa của dạng
chuẩn 2 và các hệ quả để nhận diện lược đồ quan hệ có đạt chuẩn 2 hay không dựa
trên kinh nghiệm. Nếu lược đồ vi phạm một dấu hiệu nào đó được chỉ ra trong định
nghĩa thì ta khẳng định ngay nó không đạt chuẩn 2 và ngược lại.
Ví dụ 3: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = {ABC, BD,
BCA}. Hỏi lược đồ quan hệ R có thuộc chuẩn 2 không?
Giải:
- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ACD, TN = U\R= B,
TG = LR = AC và có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa
B BD
A AB ABCD(U) AB AB
C BC ABCD(U) BC BC
AC ABC ABCD(U) ABC
79
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ta có hai khóa là AB và BC, thuộc tính không khóa là D. Nhận thấy phụ thuộc hàm
BD có thuộc tính không khóa phụ thuộc vào một phần của khóa (B AB) nên vi
phạm chuẩn 2. Vậy lược đồ quan hệ trên không là chuẩn 2.
Ví dụ 4: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = {BD, AC,
CABD}. Hỏi lược đồ quan hệ R có thuộc chuẩn 2 không?
Giải:
- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ABCD, TN = U\R=
, TG = LR = ABC và có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa
BD
A A ABCD(U) A A
B B BD
C C ABCD(U) C C
AB AB ABCD(U) AB
AC AC ABCD(U) AC
BC BC ABCD(U) BC
ABC ABC ABCD(U) ABC
Ta có hai khóa là A và C, tất cả các khóa của lược đồ quan hệ đều có một thuộc
tính nên theo hệ quả 2, lược đồ quan hệ trên đạt chuẩn 2.
4.4.3. Dạng chuẩn 3
- Khái niệm 1: Phụ thuộc bắc cầu
Cho lược đồ quan hệ R(U), X là một 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 XY, YA nhưng Y/X (không xác định hàm) với
AXY.
- Khái niệm 2:
Một lược đồ quan hệ R được gọi là ở dạng chuẩn 3NF (Third Normal Form)
80
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
nếu nó là chuẩn 2NF và mọi thuộc tính không khóa đều không phụ thuộc hàm bắc
cầu vào khóa chính (hay mọi thuộc tính đều phụ thuộc trực tiếp vào mọi khóa).
- Khái niệm 3:
Một lược đồ quan hệ R(U) được gọi là ở dạng chuẩn 3 nếu với mọi phụ thuộc
hàm XA F+ (AF) ta đều có:
Hoặc X là siêu khóa
Hoặc A là thuộc tính khóa
Hệ quả:
1. Nếu một lược đồ quan hệ đạt chuẩn 3 thì đương nhiên đạt chuẩn 2.
2. Nếu một lược đồ quan hệ không có thuộc tính không khóa thì đạt chuẩn 3.
Ví dụ 1: Quan hệ R1
Mãsv Họtên Mãlớp Tênlớp
S1 Tiến L1 MT01
S2 Trúc L1 MT01
S3 Hiền L2 MT02
Lược đồ quan hệ R1 không ở 3NF vì thuộc tính không khóa Tênlớp phụ thuộc
bắc cầu vào khóa Mãsv.
Mãsv Mãlớp Mãlớp Tênlớp
Mãlớp -/ Mãsv Tênlớp {Mãsv, Mãlớp}
Ví dụ 2: Quan hệ R1 có thể tách thành hai quan hệ khác R11 và R12 như sau:
81
R11 R12Khóa của R11: Mãlớp Khóa của R12: Mãsv
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Mãlớp Tênlớp
L1 MT01
L2 MT02
Lược đồ quan hệ R11 và R12 đều ở 3NF vì các thuộc tính không khóa đều
không phụ thuộc bắc cầu vào khóa.
* Thuật toán kiểm tra một lược đồ quan hệ có thỏa mãn chuẩn 3 hay không
dựa trên khái niệm 3:
Vào: lược đồ quan hệ R(U) và tập phụ thuộc hàm F
Ra: Khẳng định R(U) có đạt chuẩn 3 hay không.
Bước 1: Tìm tất cả các khóa của lược đồ quan hệ R(U).
Bước 2: Từ tập phụ thuộc hàm F, tạo ra tập phụ thuộc hàm F’ tương đương với F
và có vế phải chỉ có một thuộc tính (nhờ sử dụng luật phân rã).
Bước 3: Nếu mọi phụ thuộc hàm XA F’ với AX đều có X là siêu khóa hoặc A
là thuộc tính khóa thì lược đồ quan hệ đạt chuẩn 3. Ngược lại thì lược đồ quan hệ
không đạt chuẩn 3.
Ví dụ 3: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = { ABC,
DB, CABD}. Hỏi lược đồ quan hệ R có thuộc chuẩn 3 không?
Giải:
- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABCD, R = ABCD, TN = U\R=
, TG = LR = ABCD và có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa BD
A A A
82
Mãsv Họtên MãlớpS1 Tiến L1S2 Trúc L1S3 Hiền L2
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
B B BD
C C ABCD(U) C C
D D BD
AB AB ABCD(U) AB AB
AC AC ABCD(U) AC
AD AD ABCD(U) AD AD
BC BC ABCD(U) BC
BD BD BD
CD CD ABCD(U) CD
ABC ABC ABCD(U) ABC
ABD ABD ABCD(U) ABD
BCD BCD ABCD(U) BCD
ABCD ABCD ABCD(U) ABCD
Ta tìm được tất cả 3 khóa là K1= C, K2 = AB, K3 = AD. Các thuộc tính khóa là A,
B, C, D.
Xây dựng tập phụ thuộc hàm tương đương F’ có vế phải một thuộc tính nhờ luật
phân rã: F’ = { ABC, DB, CA, CB, CD}
Duyệt các phụ thuộc hàm trong F’, ta thấy tất cả các phụ thuộc hàm đều có vế phải
là thuộc tính khóa nên lược đồ quan hệ đạt chuẩn 3.
Ví dụ 4: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F= {BD, AC,
CABD}. Hỏi lược đồ quan hệ trên có đạt chuẩn 3 không?
Giải:
- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ABCD, TN = U\R=
, TG = LR = ABC và có bảng sau:
Xi TN Xi (TN Xi)+ Siêu khóa Khóa BD
83
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
A A ABCD(U) A A
B B BD
C C ABCD(U) C C
AB AB ABCD(U) AB
AC AC ABCD(U) AC
BC BC ABCD(U) BC
ABC ABC ABCD(U) ABC
Ta tìm được tất cả 2 khóa là K1= A, K2 = C. Các thuộc tính khóa là A, C.
Xây dựng tập phụ thuộc hàm tương đương F’ có vế phải một thuộc tính nhờ luật
phân rã: F’ = { BD, AC, CA, CB, CD}
Duyệt các phụ thuộc hàm trong F’, ta thấy phụ thuộc hàm BD có vế trái không
phải là siêu khóa và vế phải không phải là thuộc tính khóa nên lược đồ quan hệ
không đạt chuẩn 3.
4.4.4. Dạng chuẩn BCNF
Một lược đồ quan hệ R được gọi là ở dạng chuẩn Boyce-Codd (BCNF) nếu
nó là ở dạng chuẩn 3NF và không có các thuộc tính khóa phụ thuộc hàm vào thuộc
tính không khóa.
Hoặc:
Lược đồ quan hệ R ở dạng chuẩn BCNF nếu mọi phụ thuộc hàm XAF+
(AX) ta đều có X là siêu khóa.
Mỗi lược đồ quan hệ ở dạng BCNF thì sẽ là lược đồ quan hệ ở dạng 3NF.
Nhưng lược đồ quan hệ ở dạng 3NF có thể không là lược đồ quan hệ ở dạng BCNF.
Ví dụ 1: Cho lược đồ quan hệ Q(CSZ) và tập phụ thuộc hàm F = {CSZ, ZC};
K={CS,SZ}, có phụ thuộc hàm ZC và Z không là siêu khóa nên lược đồ quan hệ
Q không ở dạng BCNF
84
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 2: Xác định dạng chuẩn của lược đồ quan hệ sau Q(ACDEIB) có tập phụ
thuộc hàm F={ACD→EBI; CE→AD}
Dễ thấy Q có hai khoá là: ACD và CE. Các phụ thuộc hàm của F đều có vế
trái là siêu khoá, nên Q đạt dạng chuẩn BCNF.
Ví dụ 3: Cho lược đồ R (A1,A2,A3,A4,A5) Với các phụ thuộc hàm:
A1,A2 → A3,A4,A5
A4 → A2
Quan hệ này vi phạm dạng chuẩn BCNF bởi 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).
* Thuật toán kiểm tra một lược đồ quan hệ có thỏa mãn chuẩn BCNF hay
không:
Vào: Lược đồ quan hệ R(U) và tập phụ thuộc hàm.
Ra: Khẳng định R(U) có đạt chuẩn BCNF hay không.
Bước 1: Tìm tất cả các khóa của lược đồ quan hệ.
Bước 2: Từ tập phụ thuộc hàm F, tạo ra tập phụ thuộc hàm F’ tương đương với F
và có vế phải chỉ có một thuộc tính.
Bước 3: Nếu mọi phụ thuộc hàm XA F’ với A X đều có X là siêu khóa thì
lược đồ quan hệ đạt chuẩn BCNF. Ngược lại thì lược đồ quan hệ không đạt chuẩn
BCNF.
4.4.5. Chuẩn hóa lược đồ quan hệ
Xét ví dụ sau đây về một quan hệ trên lược đồ quan hệ:KetquaHP(MaSV, Ho va ten, MaHP, TenHP, Diem)
MaSV Ho va ten MaHP TenHP Diem
CN001 Nguyễn Văn An HP01 Toán rời rạc 6,5
CN002 Nguyễn Văn Anh HP02 Cơ sở dữ liệu 6,5
CN003 Nguyễn Văn Bình HP01 Toán rời rạc 6,0
CN004 Trần Ngọc Bùi HP03 Tin học căn bản 7,0
CN001 Nguyễn Văn An HP02 Cơ sở dữ liệu 7,5
85
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
CN003 Nguyễn Văn Bình HP02 Cơ sở dữ liệu 7,0
Trong ví dụ trên, ta thấy có sự dư thừa dữ liệu: Cùng một sinh viên nhưng không
chỉ có mã sinh viên mà họ tên sinh viên cũng bị lặp đi lặp lại nhiều lần ở các vị trí
khác nhau. Tương tự, cùng một học phần thì không chỉ có mã học phần mà tên học
phần cũng bị lặp lại ở những vị trí khác nhau.
Do đó dẫn đến sự khó khăn khi cập nhật dữ liệu, cụ thể là:
- Thêm: Ta không thể thêm tên một học phần mới vào quan hệ nếu học
phần đó chưa được sinh viên nào đăng ký. Tương tự, ta cũng không thể
thêm thông tin về một sinh viên mới nếu sinh viên đó chưa đăng ký một
học phần nào.
- Xóa: Nếu ta xóa thông tin về học phần Tin học căn bản thì cũng sẽ mất
luôn thông tin của sinh viên Trần Ngọc Bùi có mã sinh viên là CN004 vì
trong bảng dữ liệu chỉ có duy nhất một bản ghi có chứa thông tin về sinh
viên này.
- Sửa: Giả sử có 1000 sinh viên đăng ký môn Tin học căn bản, khi đó sẽ có
1000 bản ghi có liên quan đến Tin học căn bản. Nếu ta muốn đổi tên môn
này thành Tin học Văn phòng thì ta sẽ phải cập nhật tên môn ở 1000 vị trí
tương ứng, điều này gây mất nhiều thời gian và dê xảy ra sai sót.
Những điều trên dẫn đến không nhất quán dữ liệu.
Chuẩn hóa dữ liệu là một quá trình thuận nghịch từng bước để thay thế tập hợp
các quan hệ cho trước thành các quan hệ có cấu trúc đơn giản hơn và chuẩn hơn.
Chuẩn hóa dữ liệu nhằm để cải tiến một thiết kế CSDL thỏa mãn các ràng
buộc toàn vẹn và tránh dữ liệu bị lặp lại không cần thiết.
Mục đích của chuẩn hóa dữ liệu
Loại bỏ các bất thường (anomaly) của một quan hệ để có được các quan hệ
có cấu trúc tốt hơn, nhỏ hơn.
86
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Quan hệ có cấu trúc tốt (well-structured relation) là quan hệ :
Có sự dư thừa dữ liệu là tối thiểu.
Cho phép người sử dụng thêm vào, cập nhật và xóa bỏ dữ liệu
mà không gây ra sự mâu thuẫn dữ liệu.
4.5.1.Tách từ 1NF về 2NF, 3NF, BCNF
a. Đưa quan hệ về dạng chuẩn 1NF
Bước 1: Bỏ nhóm lặp lại ra khỏi quan hệ, chuyển nhóm đó thành một quan hệ mới.
Bước 2: Cộng thêm vào khóa của nó khóa của quan hệ ban đầu để tạo ra khóa phức
hợp.
Ví dụ:
Cho lược đồ quan hệ:
R(SoHD, Ngayban, SoKH, TenKH, SoSP, TenSP, Soluong)
Ta thấy nhóm (SoSP, TenSP, Soluong) là nhóm lặp lại, ta có thể tách R thành hai
lược đồ quan hệ R1 , R2 như sau:
R1(SoHD, Ngayban, SoKH, TenKH, SoSP);
R2(SoHD, SoSP, TenSP, Soluong);
b. Đưa quan hệ về dạng chuẩn 2NF
Bước 1: Nhóm vào một quan hệ các thuộc tính phụ thuộc hoàn toàn vào khóa và giữ
lại khóa của quan hệ đó.
Bước 2: Nhóm vào một quan hệ khác các thuộc tính phụ thuộc vào một phần của
khóa, lấy phần đó làm khóa chính cho quan hệ.
Ví dụ:
Trong lược đồ quan hệ R2(SoHD, SoSP, TenSP, Soluong) có phụ thuộc hàm
SoSPTenSP, trong đó SoSP là một phần của khóa do đó ta tách R2 thành hai quan
hệ R3, R4 như sau: R3(SoHD, SoSP, Soluong);
R4(SoSP, TenSP);
c. Đưa quan hệ về dạng chuẩn 3NF
87
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Bước1: Tách các nhóm thuộc tính phụ thuộc hàm vào một (hay một số) thuộc tính
ngoài khóa.
Bước 2: Nhóm còn lại tạo thành một quan hệ với khóa như cũ.
Bước 3: Mỗi nhóm tách ra (gồm các thuộc tính cùng phụ thuộc vào một (hay một
số) thuộc tính ngoài khóa, tăng thêm (các) thuộc tính mà chúng phụ thuộc, tạo thành
một quan hệ với khóa là (các) thuộc tính tăng thêm này.
Ví dụ:
Trong quan hệ R1(SoHD, Ngayban, SoKH, TenKH, SoSP) có các phụ thuộc
hàm bắc cầu: SoHDSoKHTenKH thì ta có thể tách R1 thành hai quan hệ khác
như sau: R5(SoHD, Ngayban, SoKH, SoSP);
R6(SoKH, TenKH );
d. Đưa quan hệ về dạng chuẩn BCNF
Nếu một lược đồ quan hệ không thoả mãn điều kiện BCNF, ta có thể chuẩn
hoá nó để có được các lược đồ BCNF như: Loại bỏ các thuộc tính khóa phụ thuộc
hàm vào thuộc tính không khóa ra khỏi quan hệ và tách chúng thành một quan hệ
riêng có khoá chính là thuộc tính không khóa gây ra phụ thuộc
Áp dụng phương pháp chuẩn hóa ở trên, lược đồ được tách ra như sau: R1( A4, A2)
R2(A1, A4, A3, A5)
Ví dụ: Cho lược đồ quan hệ R = {A,B,C,D,E,F,G,H,I,J} có khóa chính là A,B Với tập các phụ thuộc hàm : A,B → C,D,E,F,G,H,I,J A→ E,F,G,H,I,J F → I, J D →B Do có có phụ thuộc hàm A→ E,F,G,H,I,J mà A là một bộ phận của khóa chính
nên quan hệ R là vi phạm 2NF. Ta tách R thành R1(A,E,F,G,H,I,J) và R2(A,B,C,D).
Trong R1, do có phụ thuộc hàm F→ I, J, nên ta có I,J phụ thuộc bắc cầu vào khóa
88
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
chính, R1 là quan hệ vi phạm 3NF. Trong R2 ta có phụ thuộc hàm D → B trong đó B
là một thuộc tính khóa, R2 vi phạm BCNF. Tách R1 và R2 ta có:
R11( F,I,J) , R12( A,E,F,G,H), R21(D,B), R22( A,D,C)
4.5.2.Tách từ 2NF về 3NF, BCNF
a. Đưa quan hệ từ 2NF về dạng chuẩn 3NF
Nếu một lược đồ quan hệ không thoả mãn điều kiện 3NF, ta có thể chuẩn hoá
nó để có được các lược đồ 3NF như sau: Loại bỏ các thuộc tính phụ thuộc bắc cầu
ra khỏi quan hệ và tách chúng thành một quan hệ riêng có khoá chính là thuộc tính
bắc cầu. Các thuộc tính còn lại lập thành một quan hệ có khóa chính là quan hệ ban
đầu.
Ví dụ: Xét lược đồ quan hệ
NHÂNVIÊN_ĐƠNVỊ(HọtênNV, MãsốNV, Ngàysinh, Địachỉ, MãsốĐV, TênĐV,
MãsốNQL)
Với các phụ thuộc hàm:
MãsốNV→ HọtênNV, Ngày sinh, Địachỉ, MãsốĐV, TênĐV, MãsốNQL
MãsốDV→ TênĐV, Mã sốNQL
Các thuộc tính TênĐV, MãsốNQL phụ thuộc bắc cầu vào khoá chính, lược đồ quan
hệ không thoả mãn điều kiện 3NF.
Áp dụng phương pháp chuẩn hoá ở trên, lược đồ được tách ra như sau:
NV_DV1(HọtênNV, MãsốNV, Ngàysinh, Địachỉ, MãsốĐV)
NV_DV2(MãsốĐV, TênĐV, MãsốNQL)
b. Đưa quan hệ từ 2NF về dạng chuẩn BCNF
CÂU HỎI VÀ BÀI TẬP
1/ Các nhận xét sau đúng (Đ) hay sai (S)
89
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
a. Cho Q(ABC) và tập phụ thuộc hàm F={AB→C; A→B} thì Q đạt dạng chuẩn 1.
b. Một lược đồ quan hệ Q luôn tìm được ít nhất một khoá.
c. Nếu XY → Z thì X → Z và Y → Z.
d. Các thuộc tính không tham gia vào vế phải của bất kỳ phụ thuộc hàm nào thì phải
là thuộc tính tham gia vào khoá.
e. Nếu X → Y và YZ → W thì XZ → W
f. Nếu Q đạt dạng chuẩn một và khoá của Q chỉ có một thuộc tính thì Q đạt dạng
chuẩn ba.
g. Một tập phụ thuộc hàm F có thể có nhiều tập phủ tối thiểu.
h. Nếu X → Y và U → V thì XU → YV.
2/
a. Cho Q(ABCD) và F = {AB → C, D → B, C → ABD}.
- Hãy kiểm tra xem AB → D có thuộc F+ hay không ?
- Hãy tìm tất cả các khoá của lược đồ quan hệ Q. Xác định dạng chuẩn của Q.
b. Cho Q(A,B,C,D) và F={C→A, A→C, AD→B, BC→D, AB→D, CD→B}. Hãy
tìm phủ tối thiểu của F.
3. Cho biết dạng chuẩn của các lược đồ quan hệ sau:
a. Q(ABCDEG); F={A → BC, C → DE, E → G}
b. Q(ABCDEGH); F={C → AB, D → E, B → G}
c. Q(ABCDEGH); F={A → BC. D → E, H → G}
d. Q(ABCDEG); F={AB → C; C → B; ABD → E;G → A}
e. Q(ABCDEGHI); F={AC → B; BI → ACD; ABC → D; H → I; ACE → BCG,
CG → AE}
CHƯƠNG 5: BẢO MẬT VÀ TOÀN VẸN DỮ LIỆU
5.1. Sự cần thiết phải bảo vệ an toàn cơ sở dữ liệu
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
90
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
chung cho nhiều người cùng sử dụng. 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. 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. Sự cần
thiết phải bảo vệ an toàn cơ sở dữ liệu nhằm:
- Chống lại sự truy nhập, sửa đổi hay phá hủy bất hợp pháp.
- Hạn chế tối đa sai sót của người dùng.
- Đảm bảo thông tin không bị mất hoặc thay đổi ngoài ý muốn.
- Không tiết lộ nội dung dữ liệu cũng như chương trình xử lý.
5.2. Các nguy cơ mất an toàn dữ liệu
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...
5.3. Các kiểu tấn công và các giải pháp bảo mật dữ liệu
a. Các kiểu tấn công
91
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Để bảo vệ cơ sở dữ liệu, phải thực hiện các biện pháp đảm bảo an toàn ở một vài
mức bảo vệ như sau:
• 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.
• 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
92
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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...
• 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).
b. Các giải pháp bảo mật
93
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* 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 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:
94
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
* Cấp phép các quyền truy nhập
Một người sử dụng được cấp một vài quyền truy nhập cơ sở dữ liệu và các
quyền hạn này có thể tham chiếu đến quyền truy nhập của người sử dụng khác. Tuy
nhiên người quản trị cơ sở dữ liệu cũng cần phải đặc biệt lưu ý khi các quyền này
lưu thông qua giữa nhiều người sử dụng, sao cho các quyền này có thể được thu hồi
tại một thời điểm tùy ý.
* 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
95
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
phép lưu trữ như chèn thêm, xoá và sửa đổi thông tin trong cơ sở dữ liệu 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). Tuy nhiên 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.
5.4. Tính toàn vẹn
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.
Vấn đề toàn vẹn dữ liệu là vấn đề đảm bảo dữ liệu trong các hệ thống cơ sở
dữ liệu được chính xác tại mọi thời điểm trong chừng mực có thể. Có một giới hạn
về phạm vi mà mục tiêu này có thể thực hiện được. Hệ thống cơ sở dữ liệu không
thể kiểm tra hết tính đúng đắn của mỗi một giá trị được đưa vào CSDL. Chẳng hạn,
không thể phát hiện giá trị của thuộc tính số điện thoại mới được lắp đặt 8515678,
giá trị đúng phải là 8515673 (tất nhiên số điện thoại này trước đó chưa tồn tại trong
các quan hệ của cơ sở dữ liệu). Tuy nhiên, nếu nhập vào giá trị 0515673, hệ thống
sẽ phát hiện sai và không chấp nhận giá trị này.
Bảo đảm tính toàn vẹn của dữ liệu là một trong các biện pháp bảo vệ dữ liệu,
chống lại sự sửa đổi hay phá hoại không chủ định. Có thể có nhiều nguyên nhân
khác nhau dẫn đến không được đảm bảo tính toàn vẹn dữ liệu. Có thể trục trặc kỹ
thuật, như bộ nhớ bị chập chờn hư hỏng, đường truyền bị lỗi, thiết bị ra/vào không
ổn định.. hoặc người sử dụng đầu cuối thao tác sai sót, không đúng quy trình ...hoặc
chương trình ứng dụng bị lỗi.. Không đảm bảo tính toàn vẹn dữ liệu có thể xẩy ra
trong hệ thống coi là ổn định nhất và đảm bảo nhất...Vì vậy điều quan trọng là phải
96
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
có khả năng phát hiện những tình huống khi chúng xuất hiện và có khả năng khôi
phục từ những tình huống đó.
a. Các ràng buộc toàn vẹn
Giữa các thực thể dữ liệu tồn tại các mối quan hệ, ràng buộc phụ thuộc lẫn
nhau. Có 2 loại ràng buộc chủ yếu.
Loại ràng buộc có tính cấu trúc, liên quan đến các đẳng thức giữa các giá trị
trong CSDL. Mô tả tính chất của các thuộc tính khi tạo lập CSDLnhư 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 nhau.
Ví dụ, nếu các bản ghi của một hợp đồng thuê bao điện thoại chứa các trường SDT
(số điện thoại), NGK (ngày ký hợp đồng), TLD (tiền lắp đặt). Miền xác định giá trị
của SDT là một chuỗi 7 ký tự số, không chứa ký tự đặc biệt, ký tự đầu khác ký tự
không. Miền xác định của NLD là thời gian ngày tháng năm ký hợp đồng không
quá 15 ngày kể từ ngày yêu cầu và miền xác định của TLD là một số thập phân
không quá 1.400.000 nghìn đồng. Khi nhập dữ liệu vào CSDL, hệ thống sẽ kiểm tra
tính đúng đắn của các giá trị mà khi tạo lập CSDL đã mô tả, nếu vi phạm sẽ không
được chấp nhận và thông báo lỗi.
Loại ràng buộc toàn vẹn thứ hai là loại ràng buộc logic giữa các thuộc tính, là
các ràng buộc có thể biểu diễn được nếu hệ quản trị cơ sở dữ liệu DBMS cho phép
người sử dụng khai báo một tập các trường hoặc thuộc tính tạo ra khóa cho mẫu tin
hoặc quan hệ. Trong các hệ thống cơ sở dữ liệu quan hệ, biểu diễn mối quan hệ các
thuộc tính là tập các ràng buộc được mô tả bằng khái niệm các phụ thuộc hàm và
phụ thuộc đa trị, hay còn được gọi là các phụ thuộc dữ liệu. Theo định nghĩa, mọi 97
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
b. Ngôn ngữ vấn tin - ngôn ngữ ràng buộc toàn vẹn
Thông thường có nhiều loại ràng buộc toàn vẹn có thể mô tả bằng các ngôn
ngữ thao tác dữ liệu DML (Data Manipulation Language). Nói cách khác, có thể sử
dụng ngôn ngữ DML làm ngôn ngữ kiểm tra ràng buộc toàn vẹn. Phần này sẽ xem
xét về mặt lý thuyết khi sử dụng đại số quan hệ làm ngôn ngữ ràng buộc dữ liệu.
Ví dụ 1: Xét cơ sở dữ liệu quản lý cáp, ràng buộc dữ liệu có thể là: các loại cáp lắp
đặt trên tuyến cáp QLCAP, phải là các loại cáp đã có trong quan hệ QLKHO. Nói
cách khác, tất cả các cáp lắp đặt trên tuyến phải có xuất xứ từ kho vật tư của công
ty. Kết quả vấn tin có thể biểu diễn bằng đại số quan hệ như sau:
π MC# (QLCAP) π ⊆ TENC (QLKHO)
Ví dụ 2: Các cuộc đàm thoại có thời gian âm cấm nhập vào cơ sở dữ liệu:
QLCUOC(TB, SDT, SDD, BD, KT) & (KT –BD) < 0.
Điều này có nghĩa là, cuộc đàm thoại của thuê bao (TB) từ điện thoại (SDT) đến
điện thoại (SDD) với thời gian bắt đầu (BD), thời gian kết thúc (KT) và thời gian
cuộc đàm thoại (KT – BD) < 0, khi đó sẽ dẫn đến mâu thuẫn và nhận giá trị là
“False”. Điều này tương đương với khảng định không tồn tại các cuộc đàm thoại có
thời gian âm trong cơ sở dữ liệu QLCUOC.
c. Kiểm tra các ràng buộc toàn vẹn
Trong ví dụ trên, trước khi chèn thêm thông tin về một loại cáp mới vào quan
hệ QLCAP, cần phải kiểm tra xem loại cáp đó đã được xuất kho hay chưa. Tức là
98
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
phải kiểm tra loại cáp thêm vào CSDL QLCAP là một phần tử của π TENC (QLKHO)
hay không. Tương tự, trong Ví dụ 2, trước khi chèn thông tin của một cuộc đàm
thoại mới vào cơ sở dữ liệu QLCUOC, cần phải kiểm tra thời gian của cuộc đàm
thoại này có âm hay không. (Lưu ý, không phải kiểm tra thời gian của các cuộc đàm
thoại đã có trong cơ sở dữ liệu).
5.5. An toàn và quyền truy nhập cơ sở dữ liệu
Dữ liệu lưu trữ trong cơ sở dữ liệu 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.
a. Sự vi phạm an toàn 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...
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.
b. Những quyền hạn khi sử dụng hệ cơ sở dữ liệu.
Có thể chia quyền hạn truy nhập vào cơ sở dữ liệu như sau:
- Đọ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ó.
99
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
- 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.
- 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.
Để minh hoạ bản chất của vấn đề, không mất tính tổng quát, 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.
100
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
5.6. Bảo mật trong SQL
a. Các đặc quyền trong SQL
Các phép toán đặc quyền cơ bản trong SQl bao gồm các phép DELETE,
INSERT, SELECT và UPDATE. Quyền của phép chọn tương ứng với quyền đọc và
quyền tham chiếu. Ngôn ngữ định nghĩa dữ liệu SQL bao gồm những lệnh cấp phát
quyền GRANT và lệnh thu hồi, hủy bỏ các quyền đã cấp phát REVOKE .
* Cấp quyền truy xuất một quan hệ cho người sử dụng hay nhóm người sử dụng:
Dạng cơ bản của câu lệnh này là :
GRANT <tên quyền > ON <tên quan hệ hoặc tên khung nhìn>
TO <tên người/nhóm người được cấp quyền>
tên quyền cho phép cấp một số quyền sử dụng trong một lệnh.
Cấp quyền READ cho nhóm người sử dụng WORLD trên quan hệ R. Người
sử dụng chỉ được quyền bao gồm quyền sử dụng quan hệ R trong các câu vấn
tin, không được phép sửa đổi, bổ sung.
GRANT READ ON R TO GROUP/ WORLD
Cấp quyền quyền ưu tiên WRITE: Chỉ có quyền ghi, sủa đổi, cập nhật. Thông
tin không được hiển thị:
GRANT WRITE ON R TO GROUP /WORLD
Cấp quyền được đọc và ghi ALL: Người sử dụng được quyền ghi và đọc bao
như quyền chèn, xóa và sửa đổi các bộ cũng như các thao tác tạo chỉ mục các
quan hệ hay xóa bỏ chính quan hệ.
101
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
GRANT ALL ON R TO GROUP /WORLD
Người quản trị CSDL có đầy đủ tất cả các quyền. Vì vậy không cần thiết phải
mô tả tường minh.
Cấp quyền SELECT trên quan hệ ACCOUNT cho U1, U2 và U3
GRANT SELECT ON ACCOUNT TO U1, U2, U3.
Quyền UPDATE mô tả hoặc trên tất cả các thuộc tính hoặc trên một số thuộc
tính của quan hệ. Nếu quyền UPDATE trên một số thuộc tính, thì danh sách
các thuộc tính sẽ được mô tả trong dấu ngoặc ngay sau từ khoá UPDATE .
Nếu không mô tả các thuộc tính thì quyền cập nhật của người sử dụng sẽ
được hiểu trên tất cả những thuộc tính của quan hệ.
GRANT UPDATE (AMOUNT) ON LOAN TO U1, U2, U3
GRANT UPDATE ON LOAN TO U1, U2, U3
Quyền INSERT: Khi cấp quyền chèn thêm vào quan hệ phải xác định rõ chèn
giá trị tương ứng trên những thuộc tính nào vàò hệ thống.
Các quyền tham chiếu REFERENCE được cấp cho người sử dụng trên những
thuộc tính cụ thể giống như quyền UPDATE. Cấp quyền tham chiếu cho
người sử dụng U1 trên thuộc tính branch-name đến quan hệ branch.
GRANT REFERENCE (branch-name) ON BRANCH TO U1.
* Quy tắc đặc quyền người sử dụng
CREATE ROLE TELLER
GRANT SELECT ON ACCOUNT TO TELLER
GRANT TELLER TO JOHN
CREATE ROLE MANAGER
GRANT TELLER TO MANAGER
GRANT MANAGER TO MARY
Theo mặc định, một người hoặc một nhóm người sử dụng được cấp một đặc quyền,
khi đó người hay nhóm này không được quyền cấp đặc quyền này tiếp cho người
102
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
hay nhóm người sử dụng khác. Nếu muốn cấp một đặc quyền sử dụng và để cho
phép người nhận tiếp tục vượt qua đặc quyền tới người sử dụng khác, cần thêm
mệnh đề WITH GRANT OPTION tới mệnh lệnh GRANT tương ứng.
Ví dụ, giả người sử dụng U1 có quyền thực hiện phép chọn trên quan hệ
BRANCH và cho phép U1 có quyền cấp đặc quyền này tới người khác, có thể biểu
diễn như sau:
GRANT SELECT ON BRANCH TO U1 WITH GRANT OPTION
* Thu hồi quyền truy nhập:
Để thu hồi một quyền truy nhập, cấu trúc lênh tổng quát như sau:
REVOKE <tên quyền> ON <tên quan hệ/tên khung nhìn>
FROM <tên người/nhóm người dùng>
Thu hồi đặc quyền đã cấp phép cuối cùng cho U1, U2 và U3 .
GRANT SELECT ON ACCOUNT TO U1, U2, U3.
REVOKE SELECT ON BRANCH FROM U1, U2, U3
Lệnh thu hồi một đặc quyền cũng có hiệu lực đối với trường hợp một người
hay một nhóm người sử dụng cấp tiếp cho một hay một nhóm người sử dụng khác.
Trường hợp này được gọi là cascading of the revoke.
REVOKE SELECT ON BRANCH FROM U1, U2, U3 RESTRICT
Nghĩa là, hệ thống sẽ thu hồi quyền SELECT không những của U1, U2, U3, mà còn
thu hồi cho những người hay nhóm người sử dụng được U1, U2, U3 cấp tiếp quyền
SELECT.
REVOKE GRANT OPTION FOR SELECT ON BRANCH FROM U1
REVOKE READ/WRITE/ALL ON R FROM GROUP/WORLD
b. Hạn chế các quyền hạn trong SQL
Các quyền hạn trong SQL còn một số nhược điểm. Ví dụ, giả sử bạn muốn tất cả
các sinh viên có thể nhìn thấy được các điểm của chính họ, nhưng không thấy được
điểm của những người khác. Như vậy, quyền hạn phải đặt ở mức các bộ dữ liệu cá
103
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
nhân, điều này không thực hiện được trong SQL. Hơn nữa, kỹ thuật lập trình Web -
cơ sở dữ liệu đã phát triển tương đối mạnh. Các ứng dụng truy xuất vào cơ sở dữ
liệu và hiển thị các kết quả trên các thiết bị đầu cuối dưới dạng HTML ngày càng
tăng. Vấn đề an toàn, bảo mật thông tin trên các máy chủ Web servers, Data Server
trên đường truyền ngày càng khó khăn và phức tạp. Nhiệm vụ của các quyền truy
nhập đượcđặt vào trong các ứng dụng server. Mô hình quyền hạn đầy đủ của SQL
nhiều khi phải đi đường vòng. Lợi thế là các quyền hạn được làm nổi bật như là
những bộ dữ liệu cá nhân, có thể được thi hành bởi các ứng dụng.
5.7. Mã hóa dữ liệu và tính xác thực
CÂU HỎI VÀ BÀI TẬP
1/ Những nguy cơ mất an toàn bảo mật thông tin là gì?
2/ Trình bày các kiểu tấn công dữ liệu?
3/ Trình bày các giải pháp an toàn bảo mật dữ liệu?
104