SlideShare a Scribd company logo
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ệu
Siê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.
- 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:
 Ràng buộc về kiểu:
6
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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à
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
7
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
11
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
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
12
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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)
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
13
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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:
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.
14
Sinhvien Lopthuộ
c
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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)
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.
15
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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ệ
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.
16
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* 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,…
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
17
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
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ệ:
18
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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ể.
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)
19
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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:
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
20
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Sau khi thực hiện phép toán
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ữ
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
22
a1 b1 c1
a2 b2 c2
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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ừ
23
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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}
24
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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 }
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
A Nữ
B Nam
25
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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 }
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
Trần B Nam
Trần C Nam
Trần E Nữ
Trần B Nam
Trần C Nam
a2 b2 c2
a2 b2 c1
26
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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 <, ≤, =, ≥, >, ≠ .
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 b1 c1
a2 b2 c1
27
r (A B C) s (C D E)
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
a1 1 1 d1 e1
a2 2 1 d1 e1
a1 2 2 d2 e2
28
r  s (A B C C D E)
r[B]≥s[C]
r (A B C) s (C D E)
==> 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ụ 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.
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
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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:
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
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
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 d
e f
31
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
R1 ∪ R2 = R2 ∪ R1
R1 ∩ R2 = R2 ∩ R1
R1 R2 = R2  R1
2.1.2.2. Tính chất kết hợp
(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
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ệ
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.
32
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
* 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
33
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* 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.
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))
ΠSoHieu
34
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
δMaHieu=’P1’
CPP
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
35
CPP
45000030J3P1S1
25000010J2P1S4
200000005J3P2S3
5000000001J1P4S1
50000020J1P1S1
Sohieu MaHieu MaPj SoLuong DonGia
{Sohieu MaHieu MaPj SoLuong DonGia}
45000030J3P1S1
25000010J2P1S4
50000020J1P1S1
δMaHieu=’P1’
(CPP)
ΠSoHieu
(δMaHieu=’P1’
(CPP))
S4
S1
==> { SoHieu }
45000030J3P1S1
25000010J2P1S4
200000005J3P2S3
5000000001J1P4S1
50000020J1P1S1
Sohieu MaHieu MaPj SoLuong DonGiaCPP ==>
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.
Dữ liệu cần tìm nằm trên quan hệ Co
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
ΠTenco(Co*δMaHieu=’P1’( ΠSoHieu,MaHieu(CPP)))
Anh Đào
Hoa Sữa
36
P2
P4
P1
MaHieuΠMaHieu
(CPP) ==>
ΠTenco(δ(Von≥1000) and (DiaChi=’Hà Nội’)(Co))
Sohieu TenCo Von DiaChi
Co ==>
Hà Nội2.000Hoa SữaS4
HảiPhòng1.500HoaPhượn
g
S3
Bắc Ninh500Trúc ĐàoS2
Hà Nội1.000Anh ĐàoS1
δ(Von≥1000) and (DiaChi=’Hà Nội’)
(Co)
Hà Nội2.000Hoa SữaS4
Hà Nội1.000Anh ĐàoS1
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,
ΠTenco(δMau=’Đỏ’( ΠSoHieu,Tenco(Co)*ΠTenco,MaHieu(CPP)*ΠMaHieu,Mau (Pr))
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
{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
XanhP3
ĐỏP2
XanhP1
ΠMaHieu,Mau
(Pr)
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.
38
ΠSoHieu,TenCo
(Co)* ΠSoHieu,MaHieu
(CPP)*ΠMaHieu,Mau
(Pr)
{Sohieu TenCo Mahieu Mau}
XanhP1Hoa SữaS4
ĐỏP2Hoa PhượngS3
ĐenP4Anh ĐàoS1
XanhP1Anh ĐàoS1
δ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
+ 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>],
<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)
39
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
- 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 )
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.
40
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
<đ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.
(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
41
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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
42
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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 *
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(*)
43
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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
44
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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)
45
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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:
46
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
 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>,
47
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
<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:
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
48
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
- 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)
 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>
49
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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 đó.
50
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
- <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
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.
51
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
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
52
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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.
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 X→Y (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].
53
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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
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ì X→Y (Y là con hoặc = X)
* Tính tăng trưởng:
Nếu X→ Y thì X Z → Y Z (X Z= X∪Z)
* 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ì X→Y
54
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
* Tính tăng trưởng (thêm vào):
Nếu Z⊆ U và X→ Y thì X Z → Y Z (X Z= X∪Z)
* 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: XY và XZ thì XXY
* 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ụ
Ví dụ 1: Cho AB→C, C→A. 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, BCD}. Chứng minh ACCD đượ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: BCD (gt)
b4: BCCD (luật tăng trưởng của b3 thêm C)
b5: ACCD (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
55
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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, X→Y là
phụ thuộc hàm. Ta nói rằng phụ thuộc hàm X→Y đượ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 X→Y.
Ký hiệu: F|= X→Y
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 X→X đượ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:
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 X→A 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 (Y→Z) ∈ F+
mà A ∈ Z và Y ⊆ Xi
Bổ đề: X→Y 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 AC→B }
Trả lời:
56
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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 = {B→A 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
==> 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ụ:
57
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho lược đồ quan hệ Q(ABCDE) và hai tập phụ thuộc hàm
F = {A→BC, A→D, 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 Z→Y 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 - {Z→Y} ∪ {(Z - A)→Y}
Ngược lại, Z→Y 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={AB→C; B→C}
thì phụ thuộc hàm AB→C có vế trái dư thừa A (vì B→C)
F ≡ F - {AB→C} ∪ {(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:
58
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho tập phụ thuộc hàm F = {AB→D, A→BC, B→C} thì AB→D là phụ
thuộc hàm có vế trái dư thừa B vì:
F ≡ F - {AB→D} ∪ {(A→D} ≡ {A→BC, B→C, A→D}
- 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 X→Y
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= {ABC, DEG, ACDB, CA, BEC,
CEAG, BCD, CGBD}. 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 ABC:
bỏ A, được BC, ta có: B+
F = B, nhận thấy C ⊄ B+
F nên không bỏ được A.
bỏ B, được AC, ta có: A+
F = A, nhận thấy C ⊄ A+
F nên không bỏ được B.
Xét ACDB:
bỏ A, được CDB, ta có: CD+
F = CDEGAB, nhận thấy B ⊂ CD+
F nên bỏ
được A.
bỏ C, được ADB, ta có: AD+
F = ADEG, nhận thấy B ⊄ AD+
F nên không bỏ
được C.
bỏ D, được ACB, ta có: AC+
F = AC, nhận thấy B ⊄ AC+
F nên không bỏ
được D.
Lúc này, F = { ABC, DEG, CDB, CA, BEC, CEAG, BCD,
CGBD}
Xét BEC:
bỏ B, được EC, ta có: E+
F = E, nhận thấy C ⊄ E+
F nên không bỏ được B.
bỏ E, được BC, ta có: B+
F = B, nhận thấy C ⊄ B+
F nên không bỏ được E.
Xét CEAG:
59
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
bỏ C, được EAG, ta có: E+
F = E, nhận thấy AG ⊄ E+
F nên không bỏ được
C.
bỏ E, được CAG, ta có: C+
F = CA, nhận thấy AG ⊄ C+
F nên không bỏ được
E.
Xét BCD:
bỏ B, được CD, ta có: C+
F = CA, nhận thấy D ⊄ C+
F nên không bỏ được B.
bỏ C, được BD, ta có: B+
F = B, nhận thấy D ⊄ B+
F nên không bỏ được C.
Xét CGBD:
bỏ C, được GBD, ta có: G+
F = G, nhận thấy BD ⊄ G+
F nên không bỏ được
C.
bỏ G, được CBD, 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 = { ABC, DEG, CDB, CA, BEC, CEAG,
BCD, CGBD}
* 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.
Ví dụ: Cho tập phụ thuộc hàm F = {A→BC, B→C, AB→D}, có ABC 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 A→B, A→C. Khi đó G ={A→B, A→C, B→C, AB→D} 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 XY ∈ 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.
60
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
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={A→BC, B→D, AB→D}. Hãy loại bỏ khỏi F các phụ thuộc hàm dư thừa.
Giải:
Xét ABC: F’ = { B→D, AB→D}, (A)+
F’ = A nên ABC không thuộc F+
nên không thể loại bỏ nó khỏi F.
Xét BD: F’ = { ABC, AB→D}, (B)+
F’ = B nên BD không thuộc F+
nên
không thể loại bỏ nó khỏi F.
Xét ABD: F’ = { ABC, BD}, (AB)+
F’ = ABCD nên ABD 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 = {A→BC, 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 X→Y của F
b2: Nếu X-->Y là thành viên của F - {X→Y} thì loại X→Y 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.
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:
61
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho F = {A→BCDE, C→D, EG→H, AE→H}. 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 = {A→B, A→C, A→D, A→E, C→D, EG→H, AE→H}
b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:
Xét EGH:
bỏ E, được GH, ta có: G+
F = G, nhận thấy H ⊄ G+
F nên không bỏ được E.
bỏ G, được EH, ta có: E+
F = E, nhận thấy H ⊄ E+
F nên không bỏ được G.
Xét AEH:
bỏ A, được EH, ta có: E+
F = E, nhận thấy H ⊄ E+
F nên không bỏ được A.
bỏ E, được AH, ta có: A+
F = ABCDEH, nhận thấy H ⊂ A+
F nên bỏ được E.
Vậy F = {A→B, A→C, A→D, A→E, C→D, EG→H, A→H}
b3: Loại bỏ các phụ thuộc hàm dư thừa:
Ta có F = {A→B, A→C, A→D, A→E, C→D, EG→H, A→H}
Xét AB: F’ = { A→C, AD, A→E, C→D, EG→H, A→H }, (A)+
F’ = ACDEH
nên AB không thuộc F’+
nên không thể loại bỏ nó khỏi F.
Xét AC: F’ = { A→B, A→E, C→D, EG→H, A→H }, (A)+
F’ = ABEH nên AC
không thuộc F’+
nên không thể loại bỏ nó khỏi F.
Xét AD: F’ = { A→B, A→C, A→E, C→D, EG→H, A→H }, (A)+
F’ = ABCDEH
nên AD thuộc F’+
nên có thể loại bỏ nó khỏi F.
Lúc này F’ = {A→B, A→C, A→E, C→D, EG→H, A→H }
Xét AE: F’ = { A→B, A→C, C→D, EG→H, A→H }, (A)+
F’ = ABCDH nên
AE không thuộc F’+
nên không thể loại bỏ nó khỏi F.
62
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Xét CD: F’ = { A→B, A→C, A→E, EG→H, A→H }, (C)+
F’ = C nên CD
không thuộc F’+
nên không thể loại bỏ nó khỏi F.
Xét EGH: F’ = {A→B, A→C, A→E, C→D, A→H }, (EG)+
F’ = EG nên EGH
không thuộc F’+
nên không thể loại bỏ nó khỏi F.
Xét AH: F’ = { A→B, A→C, A→E, C→D, EG→H}, (A)+
F’ =BCDE nên AH
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’ = {A→B, A→C, A→E, C→D,
EG→H, A→H }
Ví dụ 2:
Cho lược đồ quan hệ Q(ABCD) và tập phụ thuộc hàm F = {AB →CD, B→C,
C→D}. 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 = {AB→C, AB→D, B→C, C→D}
b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:
Xét AB→C:
bỏ A, được BC, ta có: B+
F = BCD, nhận thấy C ⊂ B+
F nên bỏ được A.
bỏ B, được AC, ta có: A+
F = A, nhận thấy C ⊄ A+
F nên không bỏ được B.
Xét AB→D:
bỏ A, được BD, ta có: B+
F = BCD, nhận thấy D ⊂ B+
F nên bỏ được A.
bỏ B, được AD, ta có: A+
F = A, nhận thấy D ⊄ A+
F nên không bỏ được B.
Vậy F = {B→C, B→D, B→C, C→D} ≡ F ={ B→C, B→D, C→D}
b3: Loại bỏ các phụ thuộc hàm dư thừa:
Ta có F = {B→C, B→D, C→D}
63
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Xét B→C: F’ = {B→D, C→D }, (B)+
F’ = BD nên BC không thuộc F’+
nên không
thể loại bỏ nó khỏi F.
Xét BD: F’ = {B→C, C→D }, (B)+
F’ =BCD nên BD thuộc F’+
nên có thể loại
bỏ nó khỏi F.
Lúc này F’ = { B→C, C→D}
Xét CD: F’ = {B→C}, (B)+
F’ =B nên CD 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 = {B→C, C→D}
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 A∈K 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
64
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Số thẻ Sv --> Quê quán
Như vậy Số thẻ SV là khóa của quan hệ Sinh viên
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à UR và (UR) ∪ (L∩R) và các khóa chỉ khác nhau trên các thuộc
tính nằm trong tập L∩R. Do đó thuật toán tìm khóa sẽ xuất phát từ tập siêu khóa
(UR) ∪ (L∩R) và tìm cách loại bỏ dần các thuộc tính nằm trong tập L∩R 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 := UR
If (UR)+
⊂ U then
Begin
X:= X ∪ (L ∩ R)
For each Ai ∈ L ∩ R do
If (X{Ai}+
= U then X := X{Ai}
end
K := X
65
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
End.
Ví dụ 1: Cho lược đồ quan hệ Q(ABCDEG) và tập phụ thuộc hàm F = {BC,
CB, AGD}. Hãy tìm một khóa của lược đồ quan hệ Q?
Giải:
Ta có: U = ABCDEG, L = ABC, R = BCDG
UR = AE, L∩ R = BC
Ta thấy (UR)+
= (AE)+
= AEGD ⊂ U nên:
X = (UR) ∪ (L∩R) = 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 = {ABE,
AGI, BEI, EG, GIH}. 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
UR = ABCD, L∩ R = EGI
Ta thấy (UR)+
= (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 = {BGD,
GJ, AIC, CEH, BDG, JHA, DI}. 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
UR = BE, L∩ R = ACDGHIJ
Ta thấy (UR)+
= (BE)+
= BE ⊂ U nên:
66
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
X = (UR) ∪ (L∩R) = 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.
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 = {CS→Z, Z→C}. 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
67
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
C C
S S
CS CSZ CS CS
Z ZC
CZ CZ
SZ SZC SZ SZ
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 = UR, tập thuộc tính trung gian TG = L∩R
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.
68
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Ví dụ 1:
Cho Q(L,S,Z), F = {CS→Z, Z→C}. Hãy tìm tất cả các khóa của lược đồ
quan hệ trên?
Giải:
Áp dụng thuật toán cải tiến ta có TN = UR = S, TG = L∩R = 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 = {AB→C, B→D, BCA}. 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 = UR = B, TG = L∩R = 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:
69
Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com
Cho Q(ABCDEI), F = {ACD→EBI, CEAD}. Hãy tìm tất cả các khóa của
lược đồ quan hệ trên?
Giải:
Ta có: U= ABCDEI, L = ACDE, R = ABDEI, TN = UR = C, TG = L∩R = 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 đủ: X→Y và Z→W thì XZ→YW
b. Tính tích lũy: X→Y và Y→ZW thì X→YZW
2/ Cho F = {AB→C, A→B, B→C} và G = {AB→C, A→B, B→C, A→C}. 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,Ngay→Giaovien;
70
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com

More Related Content

What's hot

Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
Võ Phúc
 
Tổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệu
Tonhaco Bestco
 
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPTBài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
MasterCode.vn
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
MasterCode.vn
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệutrieulongweb
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
MasterCode.vn
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
pisu412
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
MasterCode.vn
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
MasterCode.vn
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLDang Tuan
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
Hoa Le
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệuThành Luân
 
Cơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTTCơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTT
bdkhoi296
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
Hoa Le
 
Hệ thống quản lý rạp chiếu phim
Hệ thống quản lý          rạp chiếu phimHệ thống quản lý          rạp chiếu phim
Hệ thống quản lý rạp chiếu phim
vennguyennoinho
 
đề thi java ptit
đề thi java ptitđề thi java ptit
đề thi java ptit
NguynMinh294
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++
nataliej4
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
AskSock Ngô Quang Đạo
 

What's hot (20)

Giáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tinGiáo trình phân tích thiết kế hệ thống thông tin
Giáo trình phân tích thiết kế hệ thống thông tin
 
Tổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệuTổng quan về cơ sở dữ liệu
Tổng quan về cơ sở dữ liệu
 
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPTBài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
Bài 3: Ngôn ngữ truy vân có cấu trúc (SQL) - Giáo trình FPT
 
C2 1
C2 1C2 1
C2 1
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
 
Các mô hình dữ liệu
Các mô hình dữ liệuCác mô hình dữ liệu
Các mô hình dữ liệu
 
Bài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệuBài giảng cơ sở dữ liệu
Bài giảng cơ sở dữ liệu
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPTBài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
 
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UMLPHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
 
Cơ sở dữ liệu
Cơ sở dữ liệuCơ sở dữ liệu
Cơ sở dữ liệu
 
Cơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTTCơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTT
 
Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL Chương 2. Các khái niệm trong CSDL
Chương 2. Các khái niệm trong CSDL
 
Hệ thống quản lý rạp chiếu phim
Hệ thống quản lý          rạp chiếu phimHệ thống quản lý          rạp chiếu phim
Hệ thống quản lý rạp chiếu phim
 
đề thi java ptit
đề thi java ptitđề thi java ptit
đề thi java ptit
 
Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++Đồ Án Quản Lý Bán Hàng bằng C++
Đồ Án Quản Lý Bán Hàng bằng C++
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 

Viewers also liked

Thiet ke co so du lieu
Thiet ke co so du lieuThiet ke co so du lieu
Thiet ke co so du lieu
ma giam gia
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
leemindinh
 
Giao trinh-co-so-du-lieu
Giao trinh-co-so-du-lieuGiao trinh-co-so-du-lieu
Giao trinh-co-so-du-lieuAnh Ta
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
kikihoho
 
csdl - buoi1
csdl - buoi1csdl - buoi1
csdl - buoi1
kikihoho
 
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
changhangxom dethuong
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Huyen Pham
 
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
https://www.facebook.com/garmentspace
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánNgo Trung
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
Trieu Nguyen
 
Phân tích tình hình tài chính công ty cổ phần thăng long số 9
Phân tích tình hình tài chính công ty cổ phần thăng long số 9Phân tích tình hình tài chính công ty cổ phần thăng long số 9
Phân tích tình hình tài chính công ty cổ phần thăng long số 9
https://www.facebook.com/garmentspace
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuLê Minh
 
Factores que influyen en la dinámica de la Organización
Factores que influyen en la dinámica de la Organización Factores que influyen en la dinámica de la Organización
Factores que influyen en la dinámica de la Organización
jennifergota
 
Edmonton Airwaves Presentation
Edmonton Airwaves PresentationEdmonton Airwaves Presentation
Edmonton Airwaves Presentation
JoAnne Pearce
 
essay 2 - EDITED
essay 2 - EDITEDessay 2 - EDITED
essay 2 - EDITED
Wynn Wang, MA
 
How to cite sources
How to cite sourcesHow to cite sources
How to cite sources
Kim Hutton-Brown
 
єрмолівська зош
єрмолівська зошєрмолівська зош
єрмолівська зош
servisosvita
 
Thermo fluids lab key
Thermo fluids lab keyThermo fluids lab key
Thermo fluids lab key
syed bava bakrudeen abdul jabhar
 
Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
 Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
Amro Elfeki
 

Viewers also liked (20)

Thiet ke co so du lieu
Thiet ke co so du lieuThiet ke co so du lieu
Thiet ke co so du lieu
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
Giao trinh-co-so-du-lieu
Giao trinh-co-so-du-lieuGiao trinh-co-so-du-lieu
Giao trinh-co-so-du-lieu
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
 
csdl - buoi1
csdl - buoi1csdl - buoi1
csdl - buoi1
 
Gioi thieu cse.
Gioi thieu cse.Gioi thieu cse.
Gioi thieu cse.
 
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
Giaotrinhlaptrinhvisualbasicchoexcel 130802043314-phpapp01
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
Luận án tiến sĩ kỹ thuật nghiên cứu cơ sở dữ liệu địa chính và bài toán cập n...
 
lý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tánlý thuyết cơ sở dữ liệu phân tán
lý thuyết cơ sở dữ liệu phân tán
 
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
TỔNG QUAN VỀ DỮ LIỆU LỚN (BIGDATA)
 
Phân tích tình hình tài chính công ty cổ phần thăng long số 9
Phân tích tình hình tài chính công ty cổ phần thăng long số 9Phân tích tình hình tài chính công ty cổ phần thăng long số 9
Phân tích tình hình tài chính công ty cổ phần thăng long số 9
 
Bài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệuBài tập thiết kế cơ sở dữ liệu
Bài tập thiết kế cơ sở dữ liệu
 
Factores que influyen en la dinámica de la Organización
Factores que influyen en la dinámica de la Organización Factores que influyen en la dinámica de la Organización
Factores que influyen en la dinámica de la Organización
 
Edmonton Airwaves Presentation
Edmonton Airwaves PresentationEdmonton Airwaves Presentation
Edmonton Airwaves Presentation
 
essay 2 - EDITED
essay 2 - EDITEDessay 2 - EDITED
essay 2 - EDITED
 
How to cite sources
How to cite sourcesHow to cite sources
How to cite sources
 
єрмолівська зош
єрмолівська зошєрмолівська зош
єрмолівська зош
 
Thermo fluids lab key
Thermo fluids lab keyThermo fluids lab key
Thermo fluids lab key
 
Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
 Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
Reducing Concentration Uncertainty Using the Coupled Markov Chain Approach
 

Similar to Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com

Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlHuy Feng
 
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdfGiáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Man_Ebook
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
Criz20
 
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]bookbooming1
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
Chu TheKop
 
Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02
nguyen minh
 
Com201 slide 1
Com201   slide 1Com201   slide 1
Com201 slide 1
tuanduongcntt
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]bookbooming1
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
Nguyễn Duy Hưng
 
k07406tochucdulieuvathongtin
k07406tochucdulieuvathongtink07406tochucdulieuvathongtin
k07406tochucdulieuvathongtin
Vo Oanh
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
HungHuyNguyen3
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2
NguynMinh294
 
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
TrngTn67
 
Bg access
Bg accessBg access
Chuong 1
Chuong 1Chuong 1
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tan
Thao Vu
 

Similar to Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com (20)

51645016 csdl
51645016 csdl51645016 csdl
51645016 csdl
 
Chuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdlChuong 1 tong_quan_ve_csdl
Chuong 1 tong_quan_ve_csdl
 
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdfGiáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
Giáo trình cơ sở dữ liệu, Phan Tấn Quốc.pdf
 
Chuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdfChuong 1_Gioo thieu DB.pdf
Chuong 1_Gioo thieu DB.pdf
 
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]Cơ sở dữ liệu   ts.phạm thế quế[bookbooming.com]
Cơ sở dữ liệu ts.phạm thế quế[bookbooming.com]
 
CSDL_In ngay
CSDL_In ngayCSDL_In ngay
CSDL_In ngay
 
Csdl
CsdlCsdl
Csdl
 
Cơ sở dữ liệu đại học
Cơ sở dữ liệu đại họcCơ sở dữ liệu đại học
Cơ sở dữ liệu đại học
 
Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02Csdliuihc 111212222339-phpapp02
Csdliuihc 111212222339-phpapp02
 
Com201 slide 1
Com201   slide 1Com201   slide 1
Com201 slide 1
 
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]Hệ quản trị cơ sở dữ liệu   phạm gia tiến[bookbooming.com]
Hệ quản trị cơ sở dữ liệu phạm gia tiến[bookbooming.com]
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
k07406tochucdulieuvathongtin
k07406tochucdulieuvathongtink07406tochucdulieuvathongtin
k07406tochucdulieuvathongtin
 
bai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.pptbai giang mon sql- buoi 1.ppt
bai giang mon sql- buoi 1.ppt
 
Cosodulieu
CosodulieuCosodulieu
Cosodulieu
 
Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2Cơ sở dữ liệu PTIT slide 2
Cơ sở dữ liệu PTIT slide 2
 
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
Hệ quản trị cơ sở dữ liệu trường đại học công nghệ.
 
Bg access
Bg accessBg access
Bg access
 
Chuong 1
Chuong 1Chuong 1
Chuong 1
 
Co so du lieu phan tan
Co so du lieu phan tanCo so du lieu phan tan
Co so du lieu phan tan
 

Recently uploaded

kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
Luận Văn Uy Tín
 
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docxLUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
Luận Văn Uy Tín
 
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
Nguyen Thanh Tu Collection
 
Tóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
Tóm tắt Tư tưởng Hồ Chí MinhhhhhhhhhhhhhTóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
Tóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
nnguyenthao204
 
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docxTai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
NhNguynTQunh
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
NamNguynHi23
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
my21xn0084
 
Bài tập chương 5. Năng lượng phản ứng.docx
Bài tập chương 5. Năng lượng phản ứng.docxBài tập chương 5. Năng lượng phản ứng.docx
Bài tập chương 5. Năng lượng phản ứng.docx
gorse871
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
Nguyen Thanh Tu Collection
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
duyanh05052004
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
HiYnThTh
 
tiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ htiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ h
huynhanhthu082007
 
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Bồi Dưỡng HSG Toán Lớp 3
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
Nguyen Thanh Tu Collection
 
Các bình diện Ngôn ngữ học đối chiếu.pdf
Các bình diện Ngôn ngữ học đối chiếu.pdfCác bình diện Ngôn ngữ học đối chiếu.pdf
Các bình diện Ngôn ngữ học đối chiếu.pdf
linhlevietdav
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
HngL891608
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Man_Ebook
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
SmartBiz
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
AnhPhm265031
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
QucHHunhnh
 

Recently uploaded (20)

kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
kl_HOÀN THIỆN CÔNG TÁC ĐÁNH GIÁ THỰC HIỆN CÔNG VIỆC TẠI CÔNG TY CỔ PHẦN ĐẦU T...
 
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docxLUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
LUẬN VĂN THẠC SĨ LUẬT - Luận Văn Uy Tín.docx
 
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
TỔNG HỢP 135 CÂU HỎI DI TRUYỀN PHÂN TỬ LUYỆN THI HỌC SINH GIỎI THPT MÔN SINH ...
 
Tóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
Tóm tắt Tư tưởng Hồ Chí MinhhhhhhhhhhhhhTóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
Tóm tắt Tư tưởng Hồ Chí Minhhhhhhhhhhhhh
 
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docxTai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
Tai-lieu-Boi-Duong-HSG-môn-Ngữ-Văn-THPT-Tập-1.docx
 
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
[NBV]-CHUYÊN ĐỀ 3. GTLN-GTNN CỦA HÀM SỐ (CÓ ĐÁP ÁN CHI TIẾT).pdf
 
trắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxdddddddddddddddddtrắc nhiệm ký sinh.docxddddddddddddddddd
trắc nhiệm ký sinh.docxddddddddddddddddd
 
Bài tập chương 5. Năng lượng phản ứng.docx
Bài tập chương 5. Năng lượng phản ứng.docxBài tập chương 5. Năng lượng phản ứng.docx
Bài tập chương 5. Năng lượng phản ứng.docx
 
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
BÀI TẬP DẠY THÊM HÓA HỌC LỚP 12 - CẢ NĂM - THEO FORM THI MỚI BGD 2025 (DÙNG C...
 
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủYHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
YHocData.com-bộ-câu-hỏi-mô-phôi.pdf đầy đủ
 
bài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docxbài dự thi chính luận 2024 đảng chọn lọc.docx
bài dự thi chính luận 2024 đảng chọn lọc.docx
 
tiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ htiếng việt dành cho sinh viên ngoại ngữ h
tiếng việt dành cho sinh viên ngoại ngữ h
 
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
Tuyển tập 9 chuyên đề bồi dưỡng Toán lớp 5 cơ bản và nâng cao ôn thi vào lớp ...
 
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
CHUYÊN ĐỀ DẠY THÊM HÓA HỌC LỚP 10 - SÁCH MỚI - FORM BÀI TẬP 2025 (DÙNG CHUNG ...
 
Các bình diện Ngôn ngữ học đối chiếu.pdf
Các bình diện Ngôn ngữ học đối chiếu.pdfCác bình diện Ngôn ngữ học đối chiếu.pdf
Các bình diện Ngôn ngữ học đối chiếu.pdf
 
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docxBÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
BÁO CÁO CUỐI KỲ PHÂN TÍCH THIẾT KẾ HƯỚNG ĐỐI TƯỢNG - NHÓM 7.docx
 
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdfTừ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
Từ ngữ về con người và chiến tranh trong Nhật ký Đặng Thùy Trâm.pdf
 
Smartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024juneSmartbiz_He thong MES nganh may mac_2024june
Smartbiz_He thong MES nganh may mac_2024june
 
Halloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary schoolHalloween vocabulary for kids in primary school
Halloween vocabulary for kids in primary school
 
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdfTHONG BAO nop ho so xet tuyen TS6 24-25.pdf
THONG BAO nop ho so xet tuyen TS6 24-25.pdf
 

Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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ệu Siêu dữ liệu
  • 5. 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
  • 6. 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. - 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:  Ràng buộc về kiểu: 6
  • 7. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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à 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 7
  • 8. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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
  • 9. 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
  • 10. 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
  • 11. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 11
  • 12. 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 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 12
  • 13. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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) 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 13
  • 14. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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: 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. 14 Sinhvien Lopthuộ c
  • 15. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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) 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. 15
  • 16. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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ệ 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. 16
  • 17. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com * 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,… 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 17
  • 18. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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. 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ệ: 18
  • 19. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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ể. 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) 19
  • 20. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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: 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 20
  • 21. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Sau khi thực hiện phép toán 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
  • 22. 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ữ 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 22 a1 b1 c1 a2 b2 c2
  • 23. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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ừ 23
  • 24. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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} 24
  • 25. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 } 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 A Nữ B Nam 25
  • 26. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 } 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 Trần B Nam Trần C Nam Trần E Nữ Trần B Nam Trần C Nam a2 b2 c2 a2 b2 c1 26
  • 27. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 <, ≤, =, ≥, >, ≠ . 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 b1 c1 a2 b2 c1 27 r (A B C) s (C D E)
  • 28. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 a1 1 1 d1 e1 a2 2 1 d1 e1 a1 2 2 d2 e2 28 r  s (A B C C D E) r[B]≥s[C] r (A B C) s (C D E) ==> r * s (A B C C D E)
  • 29. 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. 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
  • 30. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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: Trần E Trần B a1 c1 a2 c2 a2 c3 a1 b1 a2 b2 30
  • 31. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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 d e f 31
  • 32. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com R1 ∪ R2 = R2 ∪ R1 R1 ∩ R2 = R2 ∩ R1 R1 R2 = R2  R1 2.1.2.2. Tính chất kết hợp (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 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ệ 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. 32
  • 33. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 * 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 33
  • 34. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com * 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. 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)) ΠSoHieu 34
  • 35. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com δMaHieu=’P1’ CPP 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 35 CPP 45000030J3P1S1 25000010J2P1S4 200000005J3P2S3 5000000001J1P4S1 50000020J1P1S1 Sohieu MaHieu MaPj SoLuong DonGia {Sohieu MaHieu MaPj SoLuong DonGia} 45000030J3P1S1 25000010J2P1S4 50000020J1P1S1 δMaHieu=’P1’ (CPP) ΠSoHieu (δMaHieu=’P1’ (CPP)) S4 S1 ==> { SoHieu } 45000030J3P1S1 25000010J2P1S4 200000005J3P2S3 5000000001J1P4S1 50000020J1P1S1 Sohieu MaHieu MaPj SoLuong DonGiaCPP ==>
  • 36. 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. Dữ liệu cần tìm nằm trên quan hệ Co 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 ΠTenco(Co*δMaHieu=’P1’( ΠSoHieu,MaHieu(CPP))) Anh Đào Hoa Sữa 36 P2 P4 P1 MaHieuΠMaHieu (CPP) ==> ΠTenco(δ(Von≥1000) and (DiaChi=’Hà Nội’)(Co)) Sohieu TenCo Von DiaChi Co ==> Hà Nội2.000Hoa SữaS4 HảiPhòng1.500HoaPhượn g S3 Bắc Ninh500Trúc ĐàoS2 Hà Nội1.000Anh ĐàoS1 δ(Von≥1000) and (DiaChi=’Hà Nội’) (Co) Hà Nội2.000Hoa SữaS4 Hà Nội1.000Anh ĐàoS1 Co*δMaHieu=’P1’ ( ΠSoHieu,MaHieu (CPP)) {Sohieu MaHieu TenCo Von DiaChi} δMaHieu=’P1’ ( ΠSoHieu,MaHieu (CPP)) { Sohieu Mahieu} P1S4 P1S1 CPP
  • 37. 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, ΠTenco(δMau=’Đỏ’( ΠSoHieu,Tenco(Co)*ΠTenco,MaHieu(CPP)*ΠMaHieu,Mau (Pr)) 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 {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 XanhP3 ĐỏP2 XanhP1 ΠMaHieu,Mau (Pr)
  • 38. 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. 38 ΠSoHieu,TenCo (Co)* ΠSoHieu,MaHieu (CPP)*ΠMaHieu,Mau (Pr) {Sohieu TenCo Mahieu Mau} XanhP1Hoa SữaS4 ĐỏP2Hoa PhượngS3 ĐenP4Anh ĐàoS1 XanhP1Anh ĐàoS1 δMau=’Đỏ’ ( ...) {Sohieu TenCo Mahieu Mau} ĐỏP2Hoa PhượngS3 ΠTenCo (δMau=’Đỏ’ ( ...)) { TenCo } Hoa Phượng
  • 39. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com + 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>], <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) 39
  • 40. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com - 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 ) 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. 40
  • 41. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com <đ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. (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 41
  • 42. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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 42
  • 43. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 * 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(*) 43
  • 44. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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 44
  • 45. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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) 45
  • 46. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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: 46
  • 47. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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  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>, 47
  • 48. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com <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: 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 48
  • 49. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com - 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)  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> 49
  • 50. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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 đó. 50
  • 51. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com - <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 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. 51
  • 52. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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. 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 52
  • 53. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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. 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 X→Y (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]. 53
  • 54. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 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ì X→Y (Y là con hoặc = X) * Tính tăng trưởng: Nếu X→ Y thì X Z → Y Z (X Z= X∪Z) * 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ì X→Y 54
  • 55. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com * Tính tăng trưởng (thêm vào): Nếu Z⊆ U và X→ Y thì X Z → Y Z (X Z= X∪Z) * 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: XY và XZ thì XXY * 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ụ Ví dụ 1: Cho AB→C, C→A. 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, BCD}. Chứng minh ACCD đượ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: BCD (gt) b4: BCCD (luật tăng trưởng của b3 thêm C) b5: ACCD (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 55
  • 56. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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, X→Y là phụ thuộc hàm. Ta nói rằng phụ thuộc hàm X→Y đượ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 X→Y. Ký hiệu: F|= X→Y 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 X→X đượ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: 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 X→A 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 (Y→Z) ∈ F+ mà A ∈ Z và Y ⊆ Xi Bổ đề: X→Y 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 AC→B } Trả lời: 56
  • 57. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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 = {B→A 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 ==> 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ụ: 57
  • 58. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Cho lược đồ quan hệ Q(ABCDE) và hai tập phụ thuộc hàm F = {A→BC, A→D, 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 Z→Y 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 - {Z→Y} ∪ {(Z - A)→Y} Ngược lại, Z→Y 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={AB→C; B→C} thì phụ thuộc hàm AB→C có vế trái dư thừa A (vì B→C) F ≡ F - {AB→C} ∪ {(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: 58
  • 59. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Cho tập phụ thuộc hàm F = {AB→D, A→BC, B→C} thì AB→D là phụ thuộc hàm có vế trái dư thừa B vì: F ≡ F - {AB→D} ∪ {(A→D} ≡ {A→BC, B→C, A→D} - 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 X→Y 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= {ABC, DEG, ACDB, CA, BEC, CEAG, BCD, CGBD}. 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 ABC: bỏ A, được BC, ta có: B+ F = B, nhận thấy C ⊄ B+ F nên không bỏ được A. bỏ B, được AC, ta có: A+ F = A, nhận thấy C ⊄ A+ F nên không bỏ được B. Xét ACDB: bỏ A, được CDB, ta có: CD+ F = CDEGAB, nhận thấy B ⊂ CD+ F nên bỏ được A. bỏ C, được ADB, ta có: AD+ F = ADEG, nhận thấy B ⊄ AD+ F nên không bỏ được C. bỏ D, được ACB, ta có: AC+ F = AC, nhận thấy B ⊄ AC+ F nên không bỏ được D. Lúc này, F = { ABC, DEG, CDB, CA, BEC, CEAG, BCD, CGBD} Xét BEC: bỏ B, được EC, ta có: E+ F = E, nhận thấy C ⊄ E+ F nên không bỏ được B. bỏ E, được BC, ta có: B+ F = B, nhận thấy C ⊄ B+ F nên không bỏ được E. Xét CEAG: 59
  • 60. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com bỏ C, được EAG, ta có: E+ F = E, nhận thấy AG ⊄ E+ F nên không bỏ được C. bỏ E, được CAG, ta có: C+ F = CA, nhận thấy AG ⊄ C+ F nên không bỏ được E. Xét BCD: bỏ B, được CD, ta có: C+ F = CA, nhận thấy D ⊄ C+ F nên không bỏ được B. bỏ C, được BD, ta có: B+ F = B, nhận thấy D ⊄ B+ F nên không bỏ được C. Xét CGBD: bỏ C, được GBD, ta có: G+ F = G, nhận thấy BD ⊄ G+ F nên không bỏ được C. bỏ G, được CBD, 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 = { ABC, DEG, CDB, CA, BEC, CEAG, BCD, CGBD} * 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. Ví dụ: Cho tập phụ thuộc hàm F = {A→BC, B→C, AB→D}, có ABC 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 A→B, A→C. Khi đó G ={A→B, A→C, B→C, AB→D} 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 XY ∈ 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. 60
  • 61. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com 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={A→BC, B→D, AB→D}. Hãy loại bỏ khỏi F các phụ thuộc hàm dư thừa. Giải: Xét ABC: F’ = { B→D, AB→D}, (A)+ F’ = A nên ABC không thuộc F+ nên không thể loại bỏ nó khỏi F. Xét BD: F’ = { ABC, AB→D}, (B)+ F’ = B nên BD không thuộc F+ nên không thể loại bỏ nó khỏi F. Xét ABD: F’ = { ABC, BD}, (AB)+ F’ = ABCD nên ABD 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 = {A→BC, 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 X→Y của F b2: Nếu X-->Y là thành viên của F - {X→Y} thì loại X→Y 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. 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: 61
  • 62. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Cho F = {A→BCDE, C→D, EG→H, AE→H}. 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 = {A→B, A→C, A→D, A→E, C→D, EG→H, AE→H} b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa: Xét EGH: bỏ E, được GH, ta có: G+ F = G, nhận thấy H ⊄ G+ F nên không bỏ được E. bỏ G, được EH, ta có: E+ F = E, nhận thấy H ⊄ E+ F nên không bỏ được G. Xét AEH: bỏ A, được EH, ta có: E+ F = E, nhận thấy H ⊄ E+ F nên không bỏ được A. bỏ E, được AH, ta có: A+ F = ABCDEH, nhận thấy H ⊂ A+ F nên bỏ được E. Vậy F = {A→B, A→C, A→D, A→E, C→D, EG→H, A→H} b3: Loại bỏ các phụ thuộc hàm dư thừa: Ta có F = {A→B, A→C, A→D, A→E, C→D, EG→H, A→H} Xét AB: F’ = { A→C, AD, A→E, C→D, EG→H, A→H }, (A)+ F’ = ACDEH nên AB không thuộc F’+ nên không thể loại bỏ nó khỏi F. Xét AC: F’ = { A→B, A→E, C→D, EG→H, A→H }, (A)+ F’ = ABEH nên AC không thuộc F’+ nên không thể loại bỏ nó khỏi F. Xét AD: F’ = { A→B, A→C, A→E, C→D, EG→H, A→H }, (A)+ F’ = ABCDEH nên AD thuộc F’+ nên có thể loại bỏ nó khỏi F. Lúc này F’ = {A→B, A→C, A→E, C→D, EG→H, A→H } Xét AE: F’ = { A→B, A→C, C→D, EG→H, A→H }, (A)+ F’ = ABCDH nên AE không thuộc F’+ nên không thể loại bỏ nó khỏi F. 62
  • 63. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Xét CD: F’ = { A→B, A→C, A→E, EG→H, A→H }, (C)+ F’ = C nên CD không thuộc F’+ nên không thể loại bỏ nó khỏi F. Xét EGH: F’ = {A→B, A→C, A→E, C→D, A→H }, (EG)+ F’ = EG nên EGH không thuộc F’+ nên không thể loại bỏ nó khỏi F. Xét AH: F’ = { A→B, A→C, A→E, C→D, EG→H}, (A)+ F’ =BCDE nên AH 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’ = {A→B, A→C, A→E, C→D, EG→H, A→H } Ví dụ 2: Cho lược đồ quan hệ Q(ABCD) và tập phụ thuộc hàm F = {AB →CD, B→C, C→D}. 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 = {AB→C, AB→D, B→C, C→D} b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa: Xét AB→C: bỏ A, được BC, ta có: B+ F = BCD, nhận thấy C ⊂ B+ F nên bỏ được A. bỏ B, được AC, ta có: A+ F = A, nhận thấy C ⊄ A+ F nên không bỏ được B. Xét AB→D: bỏ A, được BD, ta có: B+ F = BCD, nhận thấy D ⊂ B+ F nên bỏ được A. bỏ B, được AD, ta có: A+ F = A, nhận thấy D ⊄ A+ F nên không bỏ được B. Vậy F = {B→C, B→D, B→C, C→D} ≡ F ={ B→C, B→D, C→D} b3: Loại bỏ các phụ thuộc hàm dư thừa: Ta có F = {B→C, B→D, C→D} 63
  • 64. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Xét B→C: F’ = {B→D, C→D }, (B)+ F’ = BD nên BC không thuộc F’+ nên không thể loại bỏ nó khỏi F. Xét BD: F’ = {B→C, C→D }, (B)+ F’ =BCD nên BD thuộc F’+ nên có thể loại bỏ nó khỏi F. Lúc này F’ = { B→C, C→D} Xét CD: F’ = {B→C}, (B)+ F’ =B nên CD 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 = {B→C, C→D} 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 A∈K 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 64
  • 65. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Số thẻ Sv --> Quê quán Như vậy Số thẻ SV là khóa của quan hệ Sinh viên 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à UR và (UR) ∪ (L∩R) và các khóa chỉ khác nhau trên các thuộc tính nằm trong tập L∩R. Do đó thuật toán tìm khóa sẽ xuất phát từ tập siêu khóa (UR) ∪ (L∩R) và tìm cách loại bỏ dần các thuộc tính nằm trong tập L∩R 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 := UR If (UR)+ ⊂ U then Begin X:= X ∪ (L ∩ R) For each Ai ∈ L ∩ R do If (X{Ai}+ = U then X := X{Ai} end K := X 65
  • 66. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com End. Ví dụ 1: Cho lược đồ quan hệ Q(ABCDEG) và tập phụ thuộc hàm F = {BC, CB, AGD}. Hãy tìm một khóa của lược đồ quan hệ Q? Giải: Ta có: U = ABCDEG, L = ABC, R = BCDG UR = AE, L∩ R = BC Ta thấy (UR)+ = (AE)+ = AEGD ⊂ U nên: X = (UR) ∪ (L∩R) = 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 = {ABE, AGI, BEI, EG, GIH}. 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 UR = ABCD, L∩ R = EGI Ta thấy (UR)+ = (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 = {BGD, GJ, AIC, CEH, BDG, JHA, DI}. 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 UR = BE, L∩ R = ACDGHIJ Ta thấy (UR)+ = (BE)+ = BE ⊂ U nên: 66
  • 67. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com X = (UR) ∪ (L∩R) = 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. 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 = {CS→Z, Z→C}. 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 67
  • 68. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com C C S S CS CSZ CS CS Z ZC CZ CZ SZ SZC SZ SZ 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 = UR, tập thuộc tính trung gian TG = L∩R 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. 68
  • 69. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Ví dụ 1: Cho Q(L,S,Z), F = {CS→Z, Z→C}. Hãy tìm tất cả các khóa của lược đồ quan hệ trên? Giải: Áp dụng thuật toán cải tiến ta có TN = UR = S, TG = L∩R = 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 = {AB→C, B→D, BCA}. 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 = UR = B, TG = L∩R = 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: 69
  • 70. Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com Cho Q(ABCDEI), F = {ACD→EBI, CEAD}. Hãy tìm tất cả các khóa của lược đồ quan hệ trên? Giải: Ta có: U= ABCDEI, L = ACDE, R = ABDEI, TN = UR = C, TG = L∩R = 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 đủ: X→Y và Z→W thì XZ→YW b. Tính tích lũy: X→Y và Y→ZW thì X→YZW 2/ Cho F = {AB→C, A→B, B→C} và G = {AB→C, A→B, B→C, A→C}. 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,Ngay→Giaovien; 70