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

152
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 1

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU

1.1. Một số khái niệm

a/ Cơ sở dữ liệu

- Cơ sở dữ liệu là một bộ sưu tập rất lớn về các loại dữ liệu tác nghiệp, bao

gồm các loại dữ liệu âm thanh, tiếng nói, chữ viết, văn bản, đồ hoạ, hình ảnh tĩnh

hay hình ảnh động....được mã hoá dưới dạng các chuỗi bit và được lưu trữ dưới

dạng File dữ liệu trong các bộ nhớ của máy tính. Cấu trúc lưu trữ dữ liệu tuân theo

các quy tắc dựa trên lý thuyết toán học. Cơ sở dữ liệu phản ảnh trung thực thế giới

dữ liệu hiện thực khách quan.

- Là một hệ thống thông tin có cấu trúc được lưu trữ trên các thiết bị như

băng đĩa,.. để thỏa mãn yêu cầu khai thác đồng thời của nhiều người sử dụng.

CSDL gắn liền với đại số, logic toán và một số lĩnh vực khác.

Ví dụ, để quản lý việc học tập trong một môi trường đại học, các dữ liệu là các

thông tin về sinh viên, về các môn học, điểm,...Chúng ta tổ chức các dữ liệu đó

thành các bảng SINHVIÊN, MÔNHỌC, HỌCPHẦN, ĐIỂM và lưu giữ chúng vào

sổ sách hoặc sử dụng một phần mềm máy tính để lưu giữ chúng trên máy tính. Ta

có một tập các dữ liệu có liên quan đến nhau và mang nhiều ý nghĩa, đó là một cơ

sở dữ liệu. Cấu trúc của cơ sở dữ liệu và một vài mẫu dữ liệu ví dụ được mô tả như

sau:

1

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

- Đả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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

viết chương trình ứng dụng và những người điều khiển toàn bộ hệ thống hay còn

gọi là người quản trị cơ sở dữ liệu.

Phần mềm hệ quản trị CSDL

Phần cứng bao gồm các thiết bị nhớ thứ cấp được sử dụng để lưu trữ CSDL

1.2. Kiến trúc của hệ CSDL

- Tại đáy của kiến trúc, ta nhìn thấy một sự biểu diễn của thiết bị nhớ ngoài

lưu trữ dữ liệu và siêu dữ liệu (thông tin về cấu trúc của CSDL).

- Bộ quản lý lưu trữ có nhiệm vụ lấy ra thông tin yêu cầu từ những thiết bị

lưu trữ dữ liệu và thay đổi những thông tin này khi được yêu cầu bởi mức trên nó

của hệ thống.

- Bộ xử lý câu hỏi có nhiệm vụ tìm ra một cách tốt nhất một thao tác được

yêu cầu và phát ra các lệnh đối với bộ quản lý lưu trữ để thực thi thao tác đó.

- Bộ quản trị giao dịch: có trách nhiệm đảm bảo tính toàn vẹn của hệ thống

này. Nó phải đảm bảo rằng một số thao tác thực hiện đồng thời không cản trở mỗi

thao tác khác và hệ thống sẽ không mất dữ liệu thậm chí khi lỗi hệ thống xảy ra. Nó

4

Các thay đổi sơ đồ Các truy vấn Các thay đổi dữ liệu

Bộ quản trị giao dịch

Bộ xử lý câu hỏi

Bộ quản lý lưu trữ

Dữ liệuSiêu dữ liệu

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

b/ Độc lập dữ liệu

Khả năng thay đổi một định nghĩa sơ đồ trong một mức mà không ảnh hưởng

đến định nghĩa sơ đồ trong mức cao hơn tiếp theo được gọi là tính độc lập dữ liệu.

Có hai mức độc lập dữ liệu:

- Độc lập dữ liệu mức vật lý (physical data independence) là khả năng thay

đổi sơ dồ vật lý mà không dẫn đến các chương trình ứng dụng phải viết lại. Các

thay đổi tại mức vật lý đôi khi là cần thiết để tăng hiệu năng hệ thống.

- Độc lập dữ liệu mức logic (logical data independence) là khả năng thay đổi

sơ đồ logic mà không dẫn đến các chương tình ứng dụng phải viết lại. Các thay đổi

tại mức logic là cần thiết bất kể khi nào cấu trúc logic của cơ sở dữ liệu bị sửa đổi.

Ví dụ, khi các tài khoản tiền tệ chứng khoán được thêm vào hệ thống ngân hàng.

Độc lập dữ liệu mức logic khó đạt hơn so với độc lập dữ liệu mức vật lý do

các chương trình ứng dụng phụ htuộc nhiều vào cấu trúc logic của dữ liệu mà họ

đang truy cập.

- Tính độc lập dữ liệu là tính bất biến của các hệ ứng dụng đối với các thay đổi

trong cấu trúc lưu trữ và chiến lược truy nhập.

- Khi thay đổi cấu trúc lưu trữ và các chiến lược truy nhập dữ liệu không kéo theo

thay đổi nội dung của các chương trnh ứng dụng và ngược lại, khi các chương trnh

thay đổi cũng không làm ảnh hưởng đến cấu trúc lưu trữ và các chiến lược.

- Tính độc lập dữ liệu đảm bảo cho việc biểu điễn nội dung thông tin cho các thực

thể là duy nhất và đảm bảo tính toàn vẹn, nhất quán dữ liệu trong lưu trữ.

1.4. Ràng buộc dữ liệu

- Giữa các thực thể tồn tại các mối quan hệ ràng buộc nhau. Các ràng buộc

này chính là tập các quy tắc, quy định yêu cầu dữ liệu trong CSDL phải thỏa mãn.

Mục đích xây dựng các ràng buộc dữ liệu là nhằm bảo đảm tính độc lập và tính toàn

vẹn dữ liệu. Các hệ CSDL cần phải có các cơ chế cho việc mô tả các ràng buộc và

quản lý các ràng buộc đã được mô tả.

- Có rất nhiều loại ràng buộc:

6

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ràng buộc về kiểu:

là loại ràng buộc thấp nhất, mô tả tính chất của các thuộc tính khi tạo lập CSDL.

Ngoài tên của thuộc tính, còn có kiểu thuộc tính là: chuỗi kí tự, số, ngày hay kiểu

logic và độ dài ?

Ví dụ: kiểu của số điện thoại thì phải là kiểu chuỗi. Nếu ta nhập vào là kiểu số thì

hệ thống đưa ra phản ứng dữ liệu không hợp lệ.

Ràng buộc giải tích:

là các ràng buộc giữa các thuộc tính được biểu diễn bằng các biểu thức toán

học.

Ví dụ: Nhập "đơn giá" và "số lượng" của mặt hàng, hệ thống cũ tự động tính giá trị

của thuộc tính "thành tiền" theo công thức: số lượng *đơn giá = thành tiền.

Ràng buộc logic:

Mối quan hệ giữa các thuộc tính với nhau không phải là các ràng buộc giải tích

được gọi là phụ thuộc hàm. Thuộc tính Y phụ thuộc hàm vào thuộc tính X tức là

mỗi giá trị của X xác định một giá trị của Y.

Ví dụ: Giá trị của số điện thoại có thể xác định các thông tin về thuê bao có số điện

thoại đó. Những ràng buộc logic có thể là ánh xạ một – một hoặc một – nhiều.

1.5. Mô hình dữ liệu

Mô hình dữ liệu là sự trừu tượng hoá môi trường thực. Mỗi loại mô hình dữ

liệu đặc trưng cho một cách tiếp cận dữ liệu khác nhau của những nhà phân tích

thiết kế CSDL. Mỗi loại mô hình dữ liệu đều có những ưu điểm và những mặt hạn

chế của nó, nhưng vẫn có những mô hình dữ liệu nổi trội và được nhiều người quan

tâm nghiên cứu.

Sau đây chúng ta sẽ điểm qua lịch sử phát triển của các mô hình dữ liệu:

Vào những năm sáu mươi, thế hệ đầu tiên của CSDL ra đời dưới dạng mô

hình thực thể kết hợp, mô hình mạng và mô hình phân cấp.

Vào những năm bảy mươi, thế hệ thứ hai của CSDL ra đời. Đó là mô hình dữ

liệu quan hệ do EF. Codd phát minh. Mô hình này có cấu trúc logic chặt chẽ. Đây là

7

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

mô hình đã và đang được sử dụng rộng khắp trong công tác quản lý trên phạm vi

toàn cầu. Việc nghiên cứu mô hình dữ liệu quan hệ nhằm vào lý thuyết chuẩn hoá

các quan hệ và là một công cụ quan trọng trong việc phân tích thiết kế các hệ CSDL

hiện nay. Mục đích của nghiên cứu này nhằm bỏ đi các phần tử không bình thường

của quan hệ khi thực hiện các phép cập nhật, loại bỏ các phần tử dư thừa.

Sang thập kỷ tám mươi, mô hình CSDL thứ ba ra đời, đó là mô hình cơ sở dữ

liệu hướng đối tượng, mô hình cơ sở dữ liệu phân tán, mô hình cơ sở dữ liệu suy

diễn,…

a/ Mô hình phân cấp:

Mô hình dữ liệu là một cây trong đó các nút biểu diễn tập thực thể, giữa các

nút con và nút cha được thể hiện theo một mối quan hệ xác định.

Trong mô hình CSDL phân cấp, dữ liệu được biểu diễn bằng cấu trúc cây. Một

CSDL phân cấp là tập các cây (rừng cây). Trong mỗi một cây chỉ chứa một và chỉ

một xuất hiện của bản ghi gốc, gọi là bản ghi đỉnh, và dưới nó là tập các xuất hiện

của các bản ghi phụ thuộc. Các bản ghi phụ thuộc có thể là tuỳ ý hoặc không tồn tại.

Một bản ghi gốc có thể có một số bất kỳ các bản ghi phụ thuộc và các bản ghi phụ

thuộc có thể có một số các bản ghi phụ thuộc mức thấp hơn...

Ví dụ:

8

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Hình trên biểu diễn một mô hình CSDL mạng về các tuyến cáp và các loại cáp được

lắp đặt. Ngoài các xuất hiện kiểu bản ghi tuyến cáp và các xuất hiện kiểu các bản

ghi các loại cáp còn có các xuất hiện kiểu các bản ghi về các phần tử kết nối đó là

các phần tử số lượng. Các phần tử này kết nối tuyến cáp và các loại cáp là thông tin

về tình hình lắp đặt. Sơ đồ T1--> 300 --> M01 chỉ ra rằng tuyến T1 có 10 cáp M01,

T1 --> 18 --> M02 có nghĩa là T1 có 18 cáp loại có mã số là M02...

• Mạng chứa hai kiểu thực thể: Trong mỗi một tuyến cáp, có nhiều loại cáp khác

nhau với số lượng khác nhau. Mỗi một loại cáp có thể có mặt trong nhiều tuyến cáp

khác nhau. Kiểu bản ghi số lượng có chức năng liên kết hai kiểu bản ghi tuyến cáp

11

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

và các loại cáp. Mỗi một xuất hiện kiểu bản ghi số lượng biểu diễn mối liên kết giữa

các bản ghi tuyến cáp với các bản ghi loại cáp. Thiết lập mối liên kết giữa một

tuyến cáp và một loại cáp sao cho mỗi xuất hiện tương ứng của số lượng đều có mặt

trong xuất hiện các tuyến cáp và loại cáp. Ví dụ tuyến cáp “T1” và loại cáp mã

“M01” có mối liên kết với số lượng là 10. “T5” và “M07” không có mối liên kết,

điều này có nghĩa là loại cáp “M07” chưa có mặt trong một tuyến nào cả và tuyến

“T5” chưa có một loại cáp nào được lắp đặt.

• Mạng chứa hơn hai kiểu thực thể: Liên kết n kiểu thực thể biểu diễn bằng một kiểu

bản ghi liên kết n kiểu bản ghi đó với nhau. Mỗi xuất hiện của bản ghi liên kết sẽ là

thành viên của đúng một xuất hiện của một trong số n kiểu bản ghi. Như vậy sẽ biểu

diễn mối liên kết n thực thể tương ứng.

c/ Mô hình thực thể liên kết (mô hình ER)

Mô hình thực thể liên kết dựa trên cơ sở sự nhận thức của thế giới thực bao

gồm một tập các đối tượng cơ sở được gọi là các thực thể và một tập các liên kết

giữa các đối tượng này. Nó được phat triển nhằm cho phép thiết kế cơ sở dữ liệu

bằng cách đặc tả một sơ đồ xí nghiệp, biểu diễn cấu trúc logic tổng thể của cơ sở dữ

liệu xí nghiệp. Mô hình ER là một trong các mô hình dữ liệu ngữ nghĩa, tức là nó cố

gắng biểu diễn các ngữ nghĩa của dữ liệu trong thế giới thực. Mục đích của mô hình

ER là cho phép mô tả sơ đồ khái niệm của một xí nghiệp mà không quan tâm đến

tính hiệu quả hay vấn đề thiết kế cơ sở dữ liệu mức vật lý. Các ký hiệu cơ sở mà mô

hình thực thể sử dụng, gồm có:

* Thực Thể (entity)

Thực thể là một đối tượng cụ thể hay trừu tượng trong thế giới thực mà nó

tồn tại và có thể phân biệt được với các đối tượng khác, chẳng hạn sinh viên

Nguyễn Văn Thành, lớp Cao Đẳng Tin Học 2A, môn học Cơ Sở Dữ Liệu, xe

máy có biển số đăng ký 52-0549,… là một thực thể hoặc khách hàng Nguyễn Văn

Thanh, cũng là một thực thể

* Thuộc tính (attribute)

12

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Các đặc điểm riêng của thực thể gọi là các thuộc tính, mà nó kết hợp với một

thực thể trong tập thực thể một giá trị từ miền giá trị của thuộc tính. Thông thường,

miền giá trị của một thuộc tính là một tập các số nguyên, các số thực hay xâu kí tự

Chẳng hạn các thuộc tính của sinh viên Nguyễn Văn Thành là: mã số sinh viên, giới

tính, ngày sinh, hộ khẩu thường trú, lớp đang theo học, …

* Loại thực thể (entity type)

Là tập hợp các thực thể có cùng thuộc tính. Mỗi loại thực thể đều phải

được đặt tên sao cho có ý nghĩa. Một loại thực thể được biểu diễn bằng một

hình chữ nhật.

Ví dụ các sinh viên có mã sinh viên là “CĐTH19”,"CĐTH51”, “TCTH65”,… nhóm

lại thành một loại thực thể, được đặt tên là Sinhvien

Tương tự trong ứng dụng quản lý điểm của sinh viên ta có các loại thực thể như

Monhoc, Lop, Khoa,…

* Khoá (key)

Khoá của loại thực thể E là một hay một tập các thuộc tính của E có thể

dùng để phân biệt hai thực thể bất kỳ của E.

Ví dụ khoá của loại thực thể Sinhvien là MASV, khóa của thực thể Khachhang là

MAKH,...

* Mối liên kết

Mối liên kết diễn tả sự liên hệ giữa các loại thực thể trong một ứng dụng tin

học. Ví dụ mối kết hợp giữa hai loại thực thể Sinhviên và Lop, mối kết hợp

giữa Sinhviên với Mônhọc,...

Mối liên kết được biểu diễn bằng một hình elip và hai bên là hai nhánh

gắn kết với các loại thực thể (hoặc mối kết hợp) liên quan, tên mối kết hợp

thường là: thuộc, gồm , chứa,...

Chẳng hạn giữa hai loại thực thể Sinhvien và Lop có mối kết hợp “thuộc”

như sau:

13

Sinhvien Lopthuộc

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

d/ Mô hình quan hệ

Mô hình dữ liệu quan hệ (Ralational Data Model)- gọi tắt là mô hình quan

hệ, do EF.Codd đề xuất năm 1970. Nền tảng lý thuyết của nó là khái niệm lý thuyết

tập hợp trên các quan hệ, tức là tập của các bộ giá trị.

Mô hình này dựa trên khái niệm lý thuyết tập hợp của các quan hệ, tức là tập

các k-bộ với k là cố định. Các khái niệm xuất hiện trong mô hình này gồm: thuộc

tính, kiểu dữ liệu, miền giá trị, bộ, quan hệ, lược đồ quan hệ, khóa, siêu khóa.

Chúng ta sẽ tìm hiểu cụ thể những vấn đề này ở phần sau

1.6. Các dạng ngôn ngữ dữ liệu

Một hệ cơ sở dữ liệu cung cấp hai kiểu ngôn ngữ khác nhau: một ngôn ngữ đặc tả

sơ đồ cơ sở dữ liệu và một ngôn ngữ biểu diễn các truy vấn và các cập nhật cơ sở

dữ liệu.

a/ Ngôn ngữ định nghĩa dữ liệu (Data Definition Langguage –DDL)

Một sơ đồ cơ sở dữ liệu đặc tả bởi một tập các định nghĩa được biểu diễn bởi

một ngôn ngữ đặc biệt gọi là ngôn ngữ định nghĩa dữ liệu. Kết quả của việc dịch

các lệnh của ngôn ngữ này là một tập các bảng được lưu trữ trong một tệp đặc biệt

được gọi là từ điển dữ liệu hay thư mục dữ liệu.

Một từ điển dữ liệu là một tệp chứa các siêu dữ liệu có nghĩa là các dữ liệu về

dữ liệu. Tệp này được tra cứu trước khi dữ liệu thực sự được đọc hay được sửa đổi

trong hệ cơ sở dữ liệu.

Cấu trúc lưu trữ và các phương pháp truy nhập được sử dụng bởi một hệ cơ

sở dữ liệu được đặc tả bởi một tập các định nghĩa trong một kiểu đặc biệt của DDL

là ngôn ngữ định nghĩa và lưu trữ dữ liệu. Kết quả của việc dịch các định nghĩa này

là một tập các chỉ thị đặc tả các chi tiết cài đặt của cơ sở dữ liệu, các chi tiết này

thường được che dấu đối với những người sử dụng.

b/ Ngôn ngữ thao tác dữ liệu (Data Manipulation Langguage –DML)

14

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Các mức trừu tượng dữ liệu (mức vật lý, mức logic và mức khung nhìn)

không chỉ áp dụng đối với định nghĩa và cấu trúc dữ liệu mà đối với cả thao tác dữ

liệu. Các yêu cầu thao tác dữ liệu bao gồm:

- Tìm kiếm thông tin được lưu trữ trong cơ sở dữ liệu.

- Thêm thông tin mới vào cơ sở dữ liệu.

- Xóa thông tin từ cơ sở dữ liệu.

- Thay đổi thông tin được lưu trữ trong cơ sở dữ liệu.

Tại mức vật lý, chúng ta phải xác định các thuật toán cho phép truy nhập dữ liệu

một cách hiệu quả. Tại mức cao hơn của sự trừu tượng hóa, chúng ta nhấn mạnh

vào tính dễ sử dụng. Mục đích của nó là cung cấp sự tương tác của con người đối

với hệ thống một cách thuận tiện.

Một ngôn ngữ thao tác dữ liệu (DML) là một ngôn ngữ cho phép những

người sử dụng truy nhập hay thao tác dữ liệu được tổ chức bởi một mô hình dữ liệu

thích hợp. Có hai kiểu ngôn ngữ thao tác dữ liệu cơ bản.

- Các DML thủ tục đòi hỏi một người sử dụng phải đặc tả dữ liệu nào cần tìm

kiếm và tìm kiếm những dữ liệu này như thế nào.

- Các DML phi thủ tục đòi hỏi một người sử dụng đặc tả dữ liệu nào cần tìm

kiếm mà không phải đặc tả tìm kiếm những dữ liệu này như thế nào.

Các DML phi thủ tục thường dễ học và dễ sử dụng hơn so với các DML thủ

tục. Tuy nhiên do một người sử dụng không phải đặc tả tìm kiếm các dữ liệu như

thế nào, các ngoon ngữ này có thể sinh ra các đoạn mã không hiệu quả so với đoạn

mã được sinh ra bởi các ngôn ngữ thủ tục. Chúng ta có thể khắc phục vấn đề này

thông qua các kỹ thuật xử lý và tối ưu hóa câu hỏi khác nhau.

Một truy vấn là một chỉ thị yêu cầu tìm kiếm thông tin. Các lệnh của một

DML kéo theo tìm kiếm thông tin được gọi là ngôn ngữ truy vấn và ngôn ngữ thao

tác dữ liệu được xem là như nhau.

1.7. Mô hình dữ liệu quan hệ

15

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Mô hình dữ liệu quan hệ là mô hình được nghiên cứu nhiều nhất, và thực tiễn

đã cho thấy rằng nó có cơ sở lý thuyết vững chắc nhất. Mô hình dữ liệu này cùng

với mô hình thức thể kết hợp đang được sử dụng rộng rãi trong việc phân tích và

thiết kế CSDL hiện nay.

Mô hình quan hệ biểu thị cơ sở dữ liệu như một tập các quan hệ. Mỗi quan hệ

có thể được biểu diễn như một bảng giá trị, mỗi một dòng trong bảng biểu thị một

tập hợp các giá trị dữ liệu liên quan với nhau . Mỗi một dòng biểu thị một sự kiện

tương ứng với một thực thể hoặc một liên kết của thế giới thực. Tên bảng và tên cột

dùng để giúp giải thích ý nghĩa của các giá trị trong mỗi hàng. Mọi giá trị trong

cùng một cột đều cùng một kiểu dữ liệu.

Theo thuật ngữ mô hình quan hệ hình thức thì mỗi hàng được gọi là một bộ,

mỗi đầu cột được gọi là một thuộc tính và bảng được gọi là một quan hệ. Kiểu dữ

liệu mô tả các kiểu của dữ liệu xuất hiện trong mỗi cột gọi là một miền.

a/ Các khái niệm cơ bản

* Thuộc tính:

là tính chất để mô tả đối tượng (đối tượng được hiểu như là một loại thực thể

ở mô hình thực thể kết hợp) hay nói cách khác một đối tượng được mô tả thông qua

thuộc tính của nó. Mỗi thuộc tính có một tên gọi và phải thuộc về một kiểu dữ liệu

nhất định.

* Kiểu dữ liệu:

Các thuộc tính được phân biệt qua tên gọi và phải thuộc một kiểu dữ liệu nhất

định (số, chuỗi, ngày tháng, logic, hình ảnh,…). Kiểu dữ liệu ở đây có thể là kiểu vô

hướng hoặc là kiểu có cấu trúc. Nếu thuộc tính có kiểu dữ liệu là vô hướng thì nó

được gọi là thuộc tính đơn hay thuộc tính nguyên tố, nếu thuộc tính có kiểu dữ liệu

có cấu trúc thì ta nói rằng nó không phải là thuộc tính nguyên tố.

Chẳng hạn với sinh viên Nguyễn Văn Thành thì các thuộc tính họ và tên, mã số

sinh viên thuộc kiểu chuỗi, thuộc tính ngày sinh thuộc kiểu ngày tháng, hộ khẩu

thường trú kiểu chuỗi, thuộc tính hình ảnh kiểu hình ảnh,…

16

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ: các thuộc tính của đối tượng Hàng hóa gồm: tên hàng, số lượng, đơn giá,

chất lượng,...

- Thuộc tính đơn: là thuộc tính không bị phân rã thành nhiều thuộc tính khác.

Ví dụ: Sinhvien(masv, hoten, diachi)

- Thuộc tính phức hợp: là thuộc tính bị phân rã thành nhiều thuộc tính khác.

Ví dụ: Diachi_sv(matinh,tentinh)

- Thuộc tính đơn trị: là thuộc tính chỉ chứa một giá trị.

Ví dụ: Nhanvien(manv, tennv, diachi, trinhdo)

- Thuộc tính đa trị: là thuộc tính chứa nhiều giá trị khác nhau thuộc một miền

trị.

Ví dụ: Trinhdo_nv(matđ, tentđ,loaitđ)

* Miền (Domain):

Thuộc tính có thể là một chuỗi các ký tự hay là một con số hoặc ngày tháng

năm. Ngoài ra còn có thể là giá trị tiền tệ hay một đơn vị đo lường nào đó. Tập hợp

các giá trị này gọi là Miền giá trị của thuộc tính.

Ví dụ: thuộc tính Nữ có miền giá trị là {Nam,Nữ}, thuộc tính màu da có miền giá

trị là {da trắng, da vàng, da đen, da đỏ}, thuộc tính điểm thi là các số thuộc tập {0;

1; 2;…,10],

* Tích Đề-các

Gọi D1, D2, D3,,...,Dn là n miền. Tích Đề-các của n miền là tập tất cả n- bộ sao

cho Vi Є Di với i=1,...,n

Ví dụ: D1 = {0;1}, D1 = {a,b,c} n=2. Khi đó

D1*D2 = {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}

* Bộ:

Tập hợp các thuộc tính cùng mô tả một đối tượng gọi là bộ. Như vậy có thể nói

bộ là một đối tượng cụ thể. Mỗi bộ là những thông tin về một đối tượng thuộc một

quan hệ, bộ cũng còn được gọi là mẫu tin.

17

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Thường người ta dùng các chữ cái thường (như t,µ,…) để biểu diễn bộ trong

quan hệ, chẳng hạn để nói t là một bộ của quan hệ r thì ta viết t ∈ r.

* Quan hệ:

Sự thể hiện của lược đồ quan hệ ở một thời điểm nào đó được gọi là quan hệ, rõ

ràng là trên một lược đồ quan hệ có thể xác định nhiều quan hệ. Thường ta dùng các

ký hiệu như R,S,Q để chỉ các lược đồ quan hệ, còn quan hệ thường được dùng bởi

các ký hiệu là r, s,q,…

Về trực quan thì quan hệ là là một bảng hai chiều gồm các dòng và các cột:

+ Mỗi hàng của quan hệ được gọi là bộ.

+ Mỗi bộ của quan hệ có n thành phần (n cột).

+ Mỗi cột của quan hệ được gọi là thuộc tính

Ví dụ: Bảng Nhân viên gồm các thuộc tính

Họ tên Năm sinh Nơi làm việc Lương

t1 Lê Văn A 1960 Viện KHCN 425

t1 Hà Thị Minh 1967 ĐH Quốc Gia 540

t1 Lê Văn Sơn 1945 Viện KHCN 450

thì t1 = (Lê Văn A, 1960, Viện KHCN, 425) là một bộ của quan hệ Nhân viên

* Lược đồ quan hệ:

Tập tất cả các thuộc tính cần quản lý của một đối tượng cùng với các mối quan

hệ của nó được gọi là lược đồ quan hệ. Lược đồ quan hệ Q với tệp thuộc tính {A1,

A2,...,An} được viết là Q(A1,...,An) hay Q+ = (A1,...,An)

Ví dụ: Sinhvien(masv, hosv,tensv,nu, ngaysinh, malop, hocbong, tinh, malop)

* Khóa (key):

là một thuộc tính hoặc tổ hợp các thuộc tính dùng để xác định duy nhất một thể

hiện của một kiểu thực thể.

18

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Khóa của quan hệ r trên tập thuộc tính R ={A1,A2,...,An} là tập con KЄR sao

cho bất kì hai bộ khác nhau t1, t2Єr luôn thỏa mãn t1(k) ≠ t2(k) bất kỳ tập con thực sự

K' ≠ K nào đó đều không có tính chất đó.

Ví dụ 1: Hanghoa(Mahang, tenhang, soluong, donvitinh, dongia) thì Mahang là

khóa của quan hệ Hanghoa

Ví dụ 2: Hs_hocsinh(Sbd,, hoten, ngaysinh, điachi, khuvuc, uutien, tongdiem,

ketqua)) thì Sbd là khóa của quan hệ Hs_hocsinh

* Siêu khoá: là một tập các thuộc tính để phân biệt giữa các đối tượng với nhau

trong một quan hệ. Tập K là tập siêu khóa của quan hệ r nếu K là một khóa của

quan hệ r.

b/ Các phép tính trên CSDL quan hệ

* Phép chèn:

Mục đích của phép chèn là thêm một bộ vào quan hệ nhất định. Kết quả

của phép chèn có thể gây ra một số sai sót với những lí do sau đây:

- Bộ mới được thêm vào không phù hợp với lược đồ quan hệ cho trước.

- Một số giá trị của một số thuộc tính nằm ngoài miền giá trị của thuộc tính

đó.

- Giá trị khóa của bộ mới có thể là giá trị đã có trong quan hệ đang lưu trữ.

Do đó tùy từng quan hệ cụ thể mà có cách khắc phục khác nhau.

Khi đó thêm vào quan hệ r{A1,A2,...,An} một bộ t sẽ có có dạng r = r + t

Cú pháp: Insert(r; A1 = d1, A2 = d2, ...., An = dn)

trong đó: Ai (i=1,2,...,n) là tên các thuộc tính.

di (di Є dom(Ai)) là các giá trị thuộc miền giá trị tương ứng của Ai

Ví dụ 1: Để thêm một bộ t4 = (Vũ Đức Minh, 1984, trường ĐHHH, 450) vào quan

hệ Nhân viên ở trên ta làm như sau:

Insert(Nhanvien; Họ tên = Vũ Đức Minh,Năm sinh = 1984,Nơi làm việc = trường

ĐHHH,Lương=450)

Ví dụ 2: Ta có quan hệ r như sau:

19

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

SốBD Họ Đệm Tên Giới tính

SP1 Trần Văn Minh Nam

SP2 Lê Thị Bình Nữ

SP3 Trần Văn Hậu Nam

Sau khi thực hiện phép toán

Insert(r; SốBD = SP4, Họ =Hoàng, Đệm = Văn, Tên = Chỉnh, Giới tính = Nam)

ta có quan hệ r đã được biến đổi thành:

SốBD Họ Đệm Tên Giới tính

SP1 Trần Văn Minh Nam

SP2 Lê Thị Bình Nữ

SP3 Trần Văn Hậu Nam

SP4 Hoàng Văn Chỉnh Nam

* Phép xóa bộ (phép loại bỏ):

Phép tính này xoá đi một bộ đã có trong quan hệ r{A1,A2,...,An},

tức là r = r - t . Ta kí hiệu phép xoá bộ là Delete(r; A1 = d1, A2 = d2, ...., An = dn)

Ví dụ: Ta có quan hệ r như sau:

SốBD Họ Đệm Tên Giới tính

SP1 Trần Văn Minh Nam

SP2 Lê Thị Bình Nữ

SP3 Trần Văn Hậu Nam

SP4 Hoàng Văn Chỉnh Nam

Sau khi thực hiện phép toán

20

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

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

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CHƯƠNG 2. NGÔN NGỮ THAO TÁC DỮ LIỆU

2.1. Đại số quan hệ

2.1.1. Các phép toán

Hai quan hệ r1 và r2 được gọi là khả hợp nếu chúng có chung tập thuộc tính.

2.1.1.1. Phép hợp:

Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép

hợp của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập

thuộc tính R và chứa tất cả các bộ của hai quan hệ r1 và r2,

r1 r2 = { t |t r1 hoặc t r2 hoặc t r1 và r2}

Ví dụ 1: r1 {STT Họ Tên Giới tính} 1 Trần A Nam

2 Lê B Nam

3 Trần C Nam

r1 {STT Họ Tên Giới tính} 1 Lưu D Nữ

2 Vũ E Nữ

==> r1 r2 { STT Họ Tên Giới tính}

1 Trần A Nam

2 Lê B Nam

3 Trần C Nam

1 Lưu D Nữ

2 Vũ E Nữ

22

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Chú ý: Với mọi r, s thì r + s = s + r

Với mọi r thi r + r = r

Ví dụ 2: r1 (A B C} r2 (A B C}

a1 b1 c1

a2 b1 c2

a2 b2 c1

==> r1 r2 { A B C}

a1 b1 c1

a2 b1 c2

a2 b2 c2

a2 b2 c1

2.1.1.2. Phép giao

Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép

giao của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập

thuộc tính R và chứa tất cả các bộ cùng thuộc cả hai quan hệ r1 và r2 .

r1 ∩ r2 = { t |t r1 và t r2 }

Ví dụ: r1 { Họ Tên Giới tính} Trần A Nam

Lê B Nam

Trần C Nam

r2 { Họ Tên Giới tính} Lê B Nam

23

a1 b1 c1a2 b2 c2

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Trần C Nam

==> r1 ∩ r2 { Họ Tên Giới tính }

Lê B Nam

Trần C Nam

2.1.1.3. Phép trừ

Cho hai quan hệ r1 và r2 khả hợp, cùng xác định trên tập thuộc tính R, phép

trừ của hai quan hệ này sẽ tạo ra một quan hệ thứ ba cùng xác định trên tập thuộc

tính R và chứa tất cả các bộ thuộc r1 nhưng không thuộc r2.

r1 - r2 = { t |t r1 và t r2 }

Ví dụ: r1 { Họ Tên Giới tính}

Trần E Nữ

Trần B Nam

Trần C Nam

r2 { Họ Tên Giới tính}

Trần B Nam

Trần E Nữ

Trần C Nữ

==> r1 - r2 { Họ Tên Giới tính }

Trần C Nam

2.1.1.4. Phép lấy tích Đề-các

24

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Cho quan hệ r1 xác định trên tập thuộc tính R1 và quan hệ r2 xác định trên

tập thuộc tính R2 với t1 r1 và t2 r2 ta viết t1 t2 để chỉ một sự ghép nối tiếp

các giá trị của hai bộ t1 và t2, lưu ý rằng ta không quan tâm đến thứ tự các thuộc

tính trong tập thuộc tính của một quan hệ nên t1 t2 cho giá trị tương đương với t2

t1.

Ví dụ: t1 = (Trần, A, Nam), t2 = (SF001, Hà Nội) ta sẽ có

t1 t2 = t2 t1 = (Trần, A, Nam, SF001, Hà Nội).

=> => Phép lấy tích Đềcác các quan hệ r1 và r2 cho ta một quan hệ xác định trên tập

thuộc tính R1 R2 các bộ của tích Đềcác được định nghĩa như sau:

r1 x r2 = {tq| t r1 và q r2}

Ví dụ 1:

r1 { Họ } r2 { Tên Giới tính }

Trần

Đỗ

Nguyễn

==> r1 x r2 { Họ Tên Giới tính }

Trần A Nữ

Trần B Nam

Đỗ A Nữ

Đỗ B Nam

Nguyễn A Nữ

Nguyễn B Nam

Ví dụ 2:

r1 { A B C } r2 { D E F }

A Nữ

B Nam

25

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

a1 b1 c1 d e f

a2 b2 c2 d' e' f'

==> r1 x r2 { A B C D E F }

a1 b1 c1 d e f

a1 b1 c1 d' e' f'

a2 b2 c2 d e f

a2 b2 c2 d' e' f'

2.1.1.5. Phép chọn

Cho quan hệ r xác định trên tập thuộc tính R, F là một biểu thức logic xác

định trên miền giá trị của thuôc tính thuộc tập R. Phép chọn trên quan hệ r theo

biểu thức logic F sinh ra một quan hệ cùng xác định trên tập thuộc tính R chứa tất

cả các bộ trong quan hệ r mà các giá trị của nó thoả mãn biểu thức logic F. Ta kí

hiệu phép chọn là δF(r).

δF(r) = { t| t r và F(t) là đúng }

- Các phép so sánh trong biểu thức F là: <, =, >, <=, >=, <>

- Các phép logic trong biểu thức F gồm: V(hoặc), Λ(và), ¬(không)

Phép so sánh trong biểu thức F được thực hiện giữa hai biến là hai thuộc tính

hoặc giữa một biến là thuộc tính và một hằng

Ví dụ 1:

R={Họ, Tên, Giới tính}, F là biểu thức: Giới tính = ‘Nam’

r { Họ Tên Giới tính } ---> δF(r) { Họ Tên Giới tính }

Trần B Nam

Trần C Nam

Trần E Nữ

Trần B Nam

Trần C Nam

26

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ 2:

r (A B C) ==> δB=b2(r) (A B C)

a1 b1 c1

a2 b1 c2

a2 b2 c2

a2 b2 c1

Ví dụ 3: R = {A,B, C}, F là biểu thức : B= b2

r (A B C) ==> δA=a1 V C=c1 (r) (A B C)

a1 b1 c1

a2 b1 c2

a2 b2 c2

a2 b2 c1

2.1.1.6. Phép kết nối (Join)

a/ Khái niệm xếp cạnh nhau

Cho bộ d = (d1,d2,..,dn) và bộ e = (e1,e2,...,em). Khi đó phép xếp cạnh nhau

của d và e được biểu diễn:

de=(d1,d2,..,dn,e1,e2,.. , .,em)

b/ Khái niệm phép kêt nối

Cho quan hệ r1 xác định trên tập thuộc tính R1 và quan hệ r2 xác định trên

tập thuộc tính R2. Giả sử thuộc tính A Є R1 và thuộc tính B Є R2, và các giá trị

của nó có thể so sánh được với nhau (cùng là tập con của một miền giá trị).

Một biểu thức lôgic được xây dựng trên phép so sánh AθB được gọi là toán

tử kết nối. Trong đó θ là một trong 6 phép so sánh <, ≤, =, ≥, >, ≠ .

a2 b2 c2

a2 b2 c1

a1 b1 c1

a2 b2 c1

27

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Phép kết nối hai quan hệ r1 và r2 trên cơ sở AθB cho ta một quan hệ thứ ba

có tập thuộc tính là R1 R2 và các bộ của nó được định nghĩa như sau:

r1 r2 = { tq| t r1, q r2 và t(A) θ q(B) là đúng }

Chú ý: Một phép kết nối hay sử dụng nhất trong thực tế là phép kết nối sử dụng

toán tử kết nối bằng “=”. Trong trường hợp hai quan hệ r1 và r2 cùng có một

thuộc tính cùng tên, cùng chung miền giá trị thì ta có thể đồng nhất chúng trong kết

qủa của phép kết nối bằng trên thuộc tính đó. Phép kết nối đó chúng ta gọi là phép

kết nối tự nhiên, và kí hiệu là r1 *r2.

Ví dụ 1:

Cho hai quan hệ r, s và phép θ= r[B]≥s[C

a1 1 1

a2 2 1

a1 2 2

=>

Ví dụ 2: Cho hai quan hệ r, s và phép θ là r[C]=s[C

a1 1 1

a2 2 1

a1 2 2

a1 1 1 1 d1 e1

a2 2 1 1 d1 e1

a1 2 1 2 d2 e2

a1 2 2 1 d1 e1

a1 2 2 2 d2 e2

a1 1 1 1 d1 e1

a2 2 1 2 d2 e2

a1 2 2 3 d3 e3

28

r (A B C)

r s (A B C C D E)

s (C D E)

r[B]≥s[C]

r (A B C)

s (C D E)

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ 3:

Trong quản lý điểm thi ta có hai quan hệ, quan hệ r chứa hồ sơ thí sinh, quan

hệ s chứa kết quả thi. Để được một kết quả đầy đủ thông tin cho người dự thi ta phải

ghép điểm thi vào hồ sơ cho từng người phép kết nối tự nhiên.

r (SốBD Họ Tên Giới tính ) s (SốBD Điểm )

=> r * s ( SốBD Họ

Tên Giới tính Điểm)

2.1.1.7. Phép chiếu (projection)

Cho quan hệ r xác định trên tập thuộc tính R, X là một tập con thuộc tính của

tập R. Giả sử t là một bộ thuộc tập quan hệ r, cách viết t(X) là để chỉ một thu gọn

bộ trên tập thuộc tính X.

a1 1 1 d1 e1

a2 2 1 d1 e1

a1 2 2 d2 e2

SP1 4.5

SP2 7.5

SP3 6.0

SP1 Trần Anh Nam

SP2 Nguyễn Lan Nữ

SP3 Lê Phương Nữ

SP1 Trần Anh Nam 4.5

SP2 Nguyễn Lan Nữ 7.5

SP3 Lê Phương Nữ 6.0

29

==> r * s (A B C C D E)

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ: R = ( Họ, Tên, Giới Tính ), X = {Họ, Tên}, t = (Trần, A, Nam)

th t(X) = (Trần, A).

Ta kí hiệu phép chiếu quan hệ r trên tập con thuộc tính X là ПX(r), phép chiếu

cho kết quả là một quan hệ trên tập thuộc tính X bao gồm các thu gọn của tất cả

các bộ của quan hệ r.

ПX(r) = { t(X) | t r}

Ví dụ 1:

R = ( Họ, Tên, Giới Tính ), X = {Họ, Tên},

r { Họ Tên Giới tính } ==> ПX(r) { Họ Tên }

Trần E Nữ

Trần B Nam

Trần E Nam

Ví dụ 2:

R = {A, B, C, D}, X = {A, B}, Y = {A, C},

r (A B C D) ==> ПX(r) (A B) ПY(r) (A C)

a1 b1 c1 d1

a1 b1 c1 d2

a2 b2 c2 d2

a2 b2 c3 d3

2.1.1.8. Phép chia

Trần E

Trần B

a1 c1

a2 c2

a2 c3

a1 b1

a2 b2

30

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Cho quan hệ r1 xác định trên tập thuộc tính R1, quan hệ r2 xác định trên tập

thuộc tính R2, R2 R1. Phép chia quan hệ r1 cho quan hệ r2 sinh ra một quan

hệ thứ ba được định nghĩa như sau:

r1 ÷ r2 = { t| u r2, ta có tu r1}

Hoặc

Cho 2 lược đồ quan hệ Q1(A1,A2,...,An), Q2(B1,B2,...,Bm) và r là quan hệ

xác định trên Q1, s là quan hệ xác định trên Q2 (n>m và s ≠ Φ, có nhóm thuộc

tính chung giống nhau về mặt ngữ nghĩa hoặc các thuộc tính có thể so sánh được

giữa ra và s. Phép chia 2 quan hệ r và s kí hiệu là r ÷ s là một quan hệ có n-m

thuộc tính được định nghĩa như sau:

q = r ÷ s = { t| u s, ta có tu r}

Ví dụ:

r (A B C D) s (A B)

a b c d

a b e f

b c e f

c d c d

c d e f

a b d e

==> t= r ÷ s (A B)

a b

c d

2.1.2. Các tính chất của phép toán quan hệ

Kết quả các phép toán cũng là một quan hệ. Tuy nhiên các toán hạng là các

quan hệ giao hoán với nhau, nghĩa là các bộ thay đổi thứ tự trong bảng, điều này

c d

e f

31

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

không quan trọng với cách biểu diễn dữ liệu. Nó vẫn đảm bảo tính độc lập và tính

toàn vẹn dữ liệu.

2.1.2.1. Tính chất giao hoán

Các phép hợp, giao và kết nối trong đại số quan hệ là các phép toán có tính

chất giao hoán. Tức là với mọi quan hệ R1, R2 th

R1 R2 = R2 R1

R1 ∩ R2 = R2 ∩ R1

R1 R2 = R2 R1

2.1.2.2. Tính chất kết hợp

Các phép hợp, giao, kết nối và tích Descartes trong đại số quan hệ là các phép

toán có tính chất kết hợp. Tức là với mọi quan hệ R1, R2 , R3 th:

(R1 R2) R3 = R2 (R1 R3)

(R1 ∩ R2) ∩ R3 = R2 ∩ (R1 ∩ R3)

R1 (R2 R3) = (R2 R1) R3

(R1 x R2 ) x R3 = R2 x (R1 x R3 )

2.1.2.3. Tính chất tích lũy đẳng

Các phép hợp, giao và kết nối là các phép toán có tính lũy đẳng. Tức là với

mọi quan hệ R trên tập các thuộc tính th:

R1 R1 = R1

R1 ∩ R1 = R1

R1 R1 = R1

2.1.2.4. Một số tính chất khác

Cho R là quan hệ bất kỳ trên Q1 và S là quan hệ bất kỳ trên Q2, khi đó:

R ∩ S = R - (R-S)

R S = R[X] - (R[X] * S - R)[X]

(R x S)[X] = (R[X] * S[X]

* Một số ví dụ tìm kiếm bằng các phép toán quan hệ

32

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Bài toán: Cho 4 quan hệ gồm:

* Quan hệ Co với tập thuộc tính {Sohieu, TenCo, Von, DiaChi}, chứa dữ liệu

quản lý các công ty, trong đó:

Sohieu: là số hiệu để quản lý công ty bán hàng

TenCo: là tên công ty bán hàng.

Von: là số vốn đăng ký kinh doanh của công ty (đơn vị triệu đồng)

DiaChi: là địa chỉ công ty (chỉ giới hạn đến tỉnh, thành phố)

{Sohieu TenCo Von DiaChi}S1 Anh Đào 1.000 Hà Nội

S2 Trúc Đào 500 Bắc Ninh

S3 Hoa Phượng 1.500 Hải Phòng

S4 Hoa Sữa 2.000 Hà Nội

* Quan hệ Pr với tập thuộc tính {Mahieu, TenPr, Mau, TLuong, DiaChi}, chứa

dữ liệu quản lý các mặt hàng, trong đó:

Mahieu: Mã hiệu mặt hàng;

TenPr: Tên mặt hàng

Mau: Màu sắc mặt hàng;

TLuong: Trọng lượng mặt hàng

DiaChi: Địa chỉ kho nơi chứa hàng

{Mahieu TenPr Mau TLuong DiaChi}

P1 Xe đạp Xanh 19 Hà Nội

P2 Môtô Honda Đỏ 85 Hải Phòng

P3 Môtô Suzuki Xanh 80 Hà Nội

P4 Ôtô Toyota Đen 1000 Hà Nội

33

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

* Quan hệ Pj với tập thuộc tính {MaPj, TenPj, DiaChi}, chứa dữ liệu các nơi mua

hàng

MaPj: là mã số của nơi mua hàng

TenPj: là tên của đơn vị mua hàng

DiaChi: là địa chỉ nơi mua hàng (ta chỉ giới hạn đến tỉnh, thành phố)

{MaPj TenPj DiaChi }

J1 Trường ĐHSP Hà Nội

J2 Trường Kinh tế Hải Phòng

J3 TRường ĐHQG Hà Nội

* Quan hệ CPP với tập thuộc tính {Sohieu, Mahieu, MaPj, SoLuong, DonGia},

chứa dữ liệu quản lý các chuyến hàng được cung ứng, trong đó:

Sohieu: là số hiệu công ty cung ứng;

Mahieu: là mã hiệu mặt hàng được cung ứng

MaPj: là mã số của đơn vị mua hàng

SoLuong: là số lượng hàng được cung ứng trong chuyến hàng đó.

DonGia: là đơn giá của mặt hàng được cung ứng trong chuyến hàng đó.

{Sohieu Mahieu MaPj SoLuong DonGia}

S1 P1 J1 20 500000

S1 P4 J1 1 500000000

S3 P2 J3 5 20000000

S4 P1 J2 10 250000

S1 P1 J3 30 450000

Yêu cầu:

1/ Cho biết số hiệu của các công ty có bán mặt hàng P1.

2/ Cho biết mã hiệu các mặt hàng đã cung ứng.

34

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

3/ Cho biết tên các công ty ở Hà Nội có vốn lớn hơn 1 tỷ đồng.

4/ Cho biết tên các công ty đã cung cấp mặt hàng P1.

5/ Cho biết tên các công ty đã cung cấp các mặt hàng màu đỏ.

Giải:

1/ Cho biết số hiệu của các công ty có bán mặt hàng P1.

Với yêu cầu này thông tin cần lấy là thuộc tính số hiệu với điều kiện là chỉ

chọn số hiệu của công ty có bán mặt hàng với mã hiệu là P1, dữ liệu cần thiết chỉ

nằm trong quan hệ CPP

SoHieu(MaHieu=’P1’ (CPP))

Ta cũng có thể biểu diễn quá trnh xữ lý bằng sơ đồ sau:

SoHieu

MaHieu=’P1’

CPP

35

CPP

45000030J3P1S1

25000010J2P1S4

200000005J3P2S3

5000000001J1P4S1

50000020J1P1S1

Sohieu MaHieu MaPj SoLuong DonGia

{Sohieu MaHieu MaPj SoLuong DonGia}

45000030J3P1S1

25000010J2P1S4

50000020J1P1S1

MaHieu=’P1’(CPP)

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

2/ Cho biết mã hiệu các mặt hàng đã cung ứng.

Mã hiệu các mặt hàng đã được bán nằm trong quan hệ CPP

3/ Cho biết tên các công ty ở Hà Nội có vốn lớn hơn 1 tỷ đồng.

Dữ liệu cần tìm nằm trên quan hệ Co

Anh Đào

Hoa Sữa 36

SoHieu(MaHieu=’P1’(CPP))

S4

S1

==> { SoHieu }

P2

P4

P1

MaHieuMaHieu(CPP) ==>

45000030J3P1S1

25000010J2P1S4

200000005J3P2S3

5000000001J1P4S1

50000020J1P1S1

Sohieu MaHieu MaPj SoLuong DonGiaCPP ==>

Tenco((Von1000) and (DiaChi=’Hà Nội’)(Co))

Sohieu TenCo Von DiaChiCo ==>

Hà Nội2.000Hoa SữaS4

HảiPhòng1.500HoaPhượng

S3

Bắc Ninh500Trúc ĐàoS2

Hà Nội1.000Anh ĐàoS1

(Von1000) and (DiaChi=’Hà Nội’)(Co)

Hà Nội2.000Hoa SữaS4

Hà Nội1.000Anh ĐàoS1

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

4/ Cho biết tên các công ty đã cung cấp mặt hàng P1

Ta nhận thấy rằng tên các công ty là dữ liệu chứa trong quan hệ Co, mã hiệu

mặt hàng được công ty đó bán nằm trong quan hệ CPP, hai quan hệ này có thể

liên kết với nhau bằng phép kết nối tự nhiên thông qua thuộc tính SoHieu (lưu ý

là ta thực hiện trên CPP một phép chiếu trên tập hợp thuộc tính {SoHieu,

MaHieu} nhằm làm giảm bớt không gian tm kiếm).

Tenco(Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)))

37

Tenco(Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)))

{ TenCo }

Hà Nội2.000Hoa SữaP1S4

Hà Nội1.000Anh ĐàoP1S1

Hoa Sữa

Anh Đào

Co*MaHieu=’P1’( SoHieu,MaHieu(CPP)) {Sohieu MaHieu TenCo Von DiaChi}

MaHieu=’P1’( SoHieu,MaHieu(CPP))

{ Sohieu Mahieu}

P1S4

P1S1

CPP

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

5/ Cho biết tên các công ty đã cung cấp các mặt hàng màu đỏ.

Dữ liệu cần tìm nằm trên 3 quan hệ, tên công ty nằm trên quan hệ Co,

màu mặt hàng nằm trên quan hệ Pr, mặt hàng gắn liền với công ty cung cấp nằm

trên quan hệ CPP. Mối liên quan dữ liệu được gắn kết bởi các thuộc tính SoHieu

và MaHieu (cũng như ví dụ trên để giảm bớt không gian tm kiếm ta thực hiện vài

phép chiếu trước khi kết nối).

Tenco(Mau=’Đỏ’( SoHieu,Tenco(Co)*Tenco,MaHieu(CPP)*MaHieu,Mau (Pr))

38

SoHieu,TenCo(Co)* SoHieu,MaHieu(CPP)*MaHieu,Mau(Pr)

{Sohieu TenCo Mahieu Mau}

XanhP1Hoa SữaS4

ĐỏP2Hoa PhượngS3

ĐenP4Anh ĐàoS1

XanhP1Anh ĐàoS1

{SoHieu TenCo}

Hoa SữaS4

Hoa PhượngS3

Trúc ĐàoS2

Anh ĐàoS1

SoHieu,TenCo(Co)

{SoHieu Mahieu}

P1S4

P2S3

P4S1

P1S1

SoHieu,MaHieu(CPP)

{Mahieu Mau}

ĐenP4

Xanh P3

ĐỏP2

Xanh P1

MaHieu,Mau(Pr)

Mau=’Đỏ’( ...) {Sohieu TenCo Mahieu Mau}

ĐỏP2Hoa PhượngS3

TenCo(Mau=’Đỏ’( ...)) { TenCo }

Hoa Phượng

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

2.2. Ngôn ngữ SQL

2.2.1. Khái quát về SQL

SQL (Structured Query Language) là một ngôn ngữ chuẩn được dùng để tạo lập

và truy vấn các cơ sở dữ liệu quan hệ.

Ngôn ngữ truy vấn có cấu trúc dựa trên đại số quan hệ.

Câu lệnh của SQL dùng để trích rút dữ liệu của một hay nhiều quan hệ.

Kết quả của một câu lệnh SQL là một quan hệ.

SQL sử dụng thuật ngữ: - Bảng ~ quan hệ

- Cột ~ thuộc tính

- Dòng ~ bộ

Đối tượng làm việc của SQL là các bảng dữ liệu hai chiều gồm một hoặc

nhiều cột và hàng.

+ Các cột gọi là các trường. Cột với tên gọi và kiểu dữ liệu (kiểu dữ liệu của

cột là duy nhất) xác định nên cấu trúc của bảng.

+ Các hàng là các bản ghi

2.2.2. Các câu lệnh cơ bản của SQL

2.2.2.1. Tạo bảng

Để định nghĩa một bảng:

Tên bảng

Các thuộc tính: - Tên thuộc tính (tên cột)

- Kiểu dữ liệu

- Các ràng buộc toàn vẹn trên thuộc tính (RBTV)

Cú pháp: Creat Table <tên_bảng>

( <tên cột 1> <kiểu dl của cột 1 (size)> [< RBTV>],

39

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

<tên cột 2> <kiểu dl của cột 2 (size)> [< RBTV>],

..........

<tên cột n> <kiểu dl của cột n (size)> [< RBTV>] )

Trong đó, RBTV có thể là:

Primary: khóa chính; Foreign key: khóa ngoại

Null: Không giá trị; Not null: Có giá trị

* Một số kiểu dữ liệu của cột như sau:

- Integer: kiểu số nguyên từ -2147483648 đến 2147483687.

- Small integer: số nguyên từ -32768 đến 32767

- decimal(n,p): số thập phân với độ dài tối đa là n kể cả p chữ số phần thập

phân (không tính dấu .)

- Float: dấu phẩy động

- Char(): xâu ký tự có độ dài cố định n, n<=225

- Varchar(n): xâu ký tự có độ dài biến đổi (từ 0 đến n)

- Longvarchar: xâu ký tự có độ dài không cố định (4kb 32kb)

- Date: ngày tháng năm

Ví dụ 1:

CREAT TABLE HOC_SINH

( MAHS VARCHAR(4) PRIMARY KEY,

HOTEN CHAR(4) NOT NULL,

NGAYSINH DATE NULL,

DIACHI CHAR(30) NULL,

DIENTHOAI INTEGER NULL )

Ví dụ 2:

CREATE TABLE NHANVIEN

( MANV CHAR(9), HONV VARCHAR(10), TENNV VARCHAR(10),

NS DATETIME, DCHI VARCHAR(50), GT CHAR(3),

LUONG INT, MA_NQL CHAR(9), PHG INT )

40

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

2.2.2.2. Truy vẫn Select

Câu lệnh Select dùng để thực hiện phép chọn (truy xuất tập con các dòng

trong một hay nhiều bảng), phép chiểu (truy xuất tập con các cột trong một hay

nhiều bảng) và phép nối (liên kết các dòng trong hai hay nhiều bảng đẻ truy xuát

dữ liệu).

Cú pháp chung của lệnh Select:

SELECT [All |Distinct] <danh sách các cột> [Into <tên bảng khác]

FROM <danh sách các bảng> | <tên các view>

[WHERE <điều kiện>]

[GROUP BY <danh sách các cột gom nhóm>]

[HAVING <điều kiện trên nhóm>]

[ORDER BY <danh sách các cột>[ASC |DESC]]

Trong đó:

<danh sách các cột>:Tên các cột cần được hiển thị trong kết quả truy vấn.

<danh sách các bảng>: Tên các bảng liên quan đến câu truy vấn.

<điều kiện>: - Biểu thức boolean xác định dòng nào sẽ được rút trích.

- Nối các biểu thức: AND, OR, và NOT

- Phép toán: , , , , , , LIKE và BETWEEN

Mệnh đề GROUP BY: Các thuộc tính trong mệnh đề SELECT (trừ những thuộc

tính trong các hàm kết hợp) phải xuất hiện trong mệnh đề GROUP BY.

Mệnh đề HAVING:

- Sử dụng các hàm kết hợp trong mệnh đề SELECT để kiểm tra một số điều

kiện nào đó.

- Chỉ kiểm tra điều kiện trên nhóm, không là điều kiện lọc trên từng bộ.

- Sau khi gom nhóm điều kiện trên nhóm mới được thực hiện.

Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING như sau:

(1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE.

41

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

(2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề

GROUP BY.

(3) Áp dụng các hàm kết hợp cho mỗi nhóm.

(4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING.

(5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT.

Ví dụ 1:

Hiện tất cả các thông tin về nhân viên ở phòng 5 trong bảng NHANVIEN

SELECT *

FROM NHANVIEN

WHERE PHG=5

MANV HONV HODEM TEN NS DCHI GT LUONG PHG

NV09 Nguyen Thanh Chuc 12/08/1975 Can Tho Nu 4000 5

NV022 Le Manh Hung 09/15/1962 Ba Ria Nam 5800 5

NV023 Nguyen Manh Hung 09/18/1972 Ba Ria Nam 4500 5

NV029 Tran Ngoc Hung 09/11/1980 Ba Ria Nam 4000 5

NV040 Nguyen Van Nam 09/05/1984 Ba Ria Nam 3800 5

Ví dụ 2:

Hiện các cột MANV, HONV, HODEM, TENNV của các nhân viên nam ở phòng

5 trong bảng NHANVIEN

SELECT MANV, HONV, HODEM, TENNV

FROM NHANVIEN

WHERE PHG=5 AND GT=‘Nam’

MANV HONV HODEM TEN

NV022 Le Manh Hung

42

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

NV023 Nguyen Manh Hung

NV029 Tran Ngoc Hung

NV040 Nguyen Van Nam

Ví dụ 3: Tìm những mặt hàng đã cung cấp có giá từ 1000 đến 2000

SELECT P#

FROM SP

WHERE DONGIA BETWEEN 1000 AND 2000

Ví dụ 4: Tìm mã số những nhà cung cấp đã cung cấp ít nhất một trong các mặt

hàng P1, P2, P3

SELECT S#

FROM SP

WHERE P# IN (‘P1’,’P2’,’P3’)

Ví dụ 5: Tìm những mặt hàng bán trước ngày ‘24/04/2014’ 10 ngày

SELECT P#

FROM SP

WHERE ‘24/04/2014’ - SDATE =10

* Tìm kiếm có xử ý xâu ký tự

Xử lý xâu ký tự gần đúng còn gọi là phép tính “thông minh” trong trường hợp

người sử dụng không nhớ chính xác về xâu ký tự cần tìm kiếm. Trong SQL, sử

dụng ký hiệu ‘%’ là thay thế cho một xâu con bất kỳ, dấu phân cách ‘-‘ để thay thế

cho một ký tự.

A%B: Xâu ký tự bắt đầu bằng chữ A và kết thúc bằng chữ B

%A: Xâu ký tự kết thúc bằng chữ A

A_B: Xâu bao gồm 3 ký tự, ký tự thứ 2 là bất kỳ

A_: Xâu có hai ký tự, ký tự đầu là A

Ví dụ: Tìm người có tên là Hoa hay Hoan

SELECT *

43

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

FROM S

WHERE SNAME LIKE ‘HOA%”

Chú ý: Hàm kết hợp

COUNT

COUNT(*) đếm số dòng

COUNT(<tên thuộc tính>) đếm số giá trị khác NULL của thuộc tính

COUNT(DISTINCT <tên thuộc tính>) đếm số giá trị khác nhau và khác NULL

của thuộc tính

SUM <thuộc tính>tính tổng giá trị của các bộ theo thuộc tính đã chỉ ra.

MAX<thuộc tính>:cho biết giá trị lớn nhất của các bộ theo thuộc tính đã chỉ ra.

MIN<thuộc tính>:cho biết giá trị nhỏ nhất của các bộ theo thuộc tính đã chỉ ra.

AVG<thuộc tính>:Cho biết giá trị trung bình của các bộ theo thuộc tính đã chỉ ra.

Các hàm kết hợp được đặt ở mệnh đề SELECT.

Ví dụ 1: Cho biết số lần mặt hàng P2 đã được cung cấp

SELECT COUNT(*)

FROM SP

WHERE P# = ’P2’

Ví dụ 2: Lập danh sách các sinh viên đăng ký ít nhất 3 môn học

SELECT KQ.MASV, HOTEN, NGSINH, COUNT(MAMH) AS SOLUONG

FROM KQ, SV

WHERE SV.MASV=KQ.MASV

GROUP BY KQ.MASV, HOTEN, NGSINH

HAVING COUNT(MAMH)>=3

Ví dụ 3: Tìm hiệu số mặt hàng P1 bán một lần nhiều nhất và một lần ít nhất của

hãng S1

SELECT MAX(QTY) - MIN(QTY)

FROM SP

44

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

WHERE S#=’S1’ AND P#=’P1’

Ví dụ 4: Tìm mã số những nhà cung cấp đã cung cấp ít nhất hơn hai mặt hàng

SELECT S#

FROM SP

GROUP BY S#

HAVING COUNT (DISTINCT P#)>2

* Ánh xạ lồng

Ta có thể sử dụng những mệnh đề SELECT lồng nhau:

Ví dụ 1: Tìm tên những hãng đã cung cấp mặt hàng P2

SELECT SNAME

FROM S

WHERE S# IN (SELECT S#

FROM SP

WHERE P#=’P2’)

Ví dụ 2: Tìm tên những hãng không cung cấp mặt hàng P1

SELECT SNAME

FROM S

WHERE ‘P1’ NOT IN

SELECT P#

FROM SP

WHERE S# = S.S#

Ví dụ 3: Đưa ra danh sách các mặt hàng không được bán trong ngày ‘20/10/2014’

SELECT tenMH

FROM MATHANG

WHERE MaMH NOT IN

SELECT MaMH

FROM HD_MH, HOADON

45

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

WHERE (HD_MH.SoHD = HOADON.SoHD) AND

(NgayHD=”20/10/2014”)

2.2.2.3. Hiển thị cấu trúc bảng

Cú pháp: EXEC SP_COLUMNS <tên bảng cần xem>

Ví dụ: EXEC SP_COLUMNS NHANVIEN

* Xem lại tên các bảng vừa tạo

EXEC SP_TABLES

GO

2.2.2.4. Thay đổi cấu trúc bảng

- Thêm cột mới (Field mới) cho bảng:

Cú pháp:

ALTER TABLE <Tên_bảng>

ADD COLUMN <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>]

Ví dụ 1:

ALTER TABLE NHANVIEN

ADD COLUMN Nghe_nghiep CHAR(15)

Ví dụ 2:

ALTER TABLE SANPHAM

ADD COLUMN Don_gia Decimal(8,2)

- Xóa cột trong bảng:

Cú pháp: ALTER TABLE <Tên_bảng>

DROP COLUMN <Tên_cột>

Ví dụ :

ALTER TABLE NHANVIEN

DROP COLUMN Nghe_nghiep

- Thêm các ràng buộc toàn vẹn:

ALTER TABLE <Tên_bảng> ADD

46

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CONSTRAINT <Ten_RBTV1> <RBTV1>,

CONSTRAINT <Ten_RBTV2> <RBTV2>,…

2.2.2.5. Xóa bảng (xóa cấu trúc và dữ liệu của bảng)

Cú pháp: DROP TABLE <Tên_bảng>

Ví dụ :

DROP TABLE NHANVIEN

2.2.2.6. Chèn một hàng

Cú pháp: INSERT INTO <tên_bảng> [tên cột 1, tên cột 2,...,tên cột n]

VALUES (giá trị 1, giá trị 2,...,giá trị n)

Ví dụ 1:

INSERT INTO NHANVIEN (MANV,HOTEN,DIACHI)

VALUES ('NV003','Nguyễn Hồng Nhung','Hải Phòng')

Ví dụ 2:

INSERT INTO Luong_NV

SELECT hoten, hs_luong*1150000

FROM NHANVIEN

Ví dụ 3:

INSERT INTO NHANVIEN

VALUES ('NV003','Nguyễn Hồng Nhung','22/10/1990','Hải Phòng')

Ví dụ 4:

INSERT INTO NHANVIEN(HONV, TENDEM, TENNV, MANV, DCHI)

VALUES (‘Le’, ‘Van’, ‘Tuyen’, ‘635635635’, NULL)

Nhận xét:

Thứ tự các giá trị phải trùng với thứ tự các cột

Có thể thêm giá trị NULL ở những thuộc tính không là khóa chính và NOT

NULL

Câu lệnh INSERT sẽ gặp lỗi nếu vi phạm RBTV

Khóa chính

47

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Tham chiếu

NOT NULL - các thuộc tính có ràng buộc NOT NULL bắt buộc phải có giá

trị

2.2.2.7. Xóa hàng

Cú pháp: DELETE FROM <tên bảng>

[WHERE <điều kiện>]

Ví dụ 1:

DELETE FROM NHANVIEN

WHERE MANV='NV003'

Ví dụ 2:

DELETE FROM NHANVIEN

WHERE Diachi='Hải Phòng'

2.2.2.8. Sửa dữ liệu (Cho phép thay đổi dữ liệu đã tồn tại bên trong bảng dữ liệu)

Cú pháp: UPDATE <tên bảng>

SET <tên thuộc tính>=<giá trị mới>,

<tên thuộc tính>=<giá trị mới>,

[FROM <tên bảng>]

[WHERE <điều kiện>]

Chú ý: Mệnh đề FROM trong câu lệnh trên chỉ được sử dụng khi cần chỉ định các

điều kiện cập nhật liên quan đến các bảng khác.

Ví dụ 1:

Sửa lại ngày sinh cho nhân viên có mã số là '333445555'

UPDATE NHANVIEN

SET NGSINH=’08/12/1965’

WHERE MANV=‘333445555’

Ví dụ 2:

48

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Tăng lương lên 0,2 cho các nhân viên làm việc tại đơn vị có Madv là 04

UPDATE NHANVIEN

SET HSLUONG = HSLUONG + 0,2

WHERE MADV = '04'

Ví dụ 3:

Cho 2 quan hệ gồm: MATHANG(MAHANG, TENHANG, DONGIA)

NHATKY_BH(NGAYBAN, MAHANG, SOLUONG, THANHTIEN). Hãy cập

nhật giá trị cho cột THANHTIEN trong bảng NHATKY_BH theo công thức

THANHTIEN = SOLUONG * DONGIA

UPDATE NHATKY_BH

SET THANHTIEN = SOLUONG *MATHANG.DONGIA

FROM MATHANG

WHERE NHATKY_BH.MAHANG = MATHANG.MAHANG

2.2.2.9. Tạo tệp chỉ số

- Chỉ mục trên thuộc tính A là một cấu trúc dữ liệu làm cho việc tìm kiếm mẫu tin

có chứa A hiệu quả hơn

- Cú pháp: CREATE INDEX <tên chỉ mục> ON <tên bảng>(<tên cột>)

Ví dụ 1:

Tạo tệp chỉ số PHG_IND theo cột PHG của bảng NHANVIEN

CREATE INDEX PHG_IND ON NHANVIEN(PHG)

Ví dụ 2:

Tạo tệp chỉ số PHG_GT_IND theo cột PHG, GT của bảng NHANVIEN

CREATE INDEX PHG_GT_IND ON NHANVIEN(PHG, GT)

- Bỏ chỉ số: DROP INDEX <tên chỉ mục>

2.2.2.10. Tạo khung nhìn

Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL

Khung nhìn cũng là một quan hệ:

Không được lưu trữ vật lý (bảng ảo)

49

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Không chứa dữ liệu

Được định nghĩa từ những bảng khác

Có thể truy vấn hay cập nhật thông qua khung nhìn

Tại sao phải sử dụng khung nhìn?

Che dấu tính phức tạp của dữ liệu

Đơn giản hóa các câu truy vấn

Hiển thị dữ liệu dưới dạng tiện dụng nhất

An toàn dữ liệu

Cú pháp: CREATE VIEW <tên khung nhìn>(<danh sách tên cột>)

AS mệnh_để_SELECT

. Danh sách tên cột do người dùng tự đặt nhưng có giá trị tương ứng với giá trị của

các cột trong mệnh đề SELECT

. Số dòng phụ thuộc vào điều kiện ở mệnh đề WHERE

. Dữ liệu được lấy từ các bảng ở mệnh đề FROM

- Xóa khung nhìn: DROP VIEW <tên khung nhìn>

Ví dụ 1: Giả sử có quan hệ NHANVIEN(MANV, HONV, TENDEM, TEN,

NGAYSINH, GIOITINH, ĐIACHI, DIENTHOAI, MAPHG)

Khi đó, việc tạo khung nhìn tên NV_P5 được thực hiện như sau:

CREATE VIEW NV_P5 AS

SELECT MANV, HONV, TENDEM, TEN

FROM NHANVIEN

WHERE PHG=5

Ví dụ 2:

CREATE VIEW TONGLNG_SLNV_PB AS

SELECT MAPHG, TENPB, COUNT(*) AS SLNV,

SUM(LUONG) AS TONGLNG

FROM NHANVIEN, PHONGBAN

WHERE NHANVIEN.PHG = PHONGBAN.MAPHG

50

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

GROUP BY TENPHG

Ví dụ 3:

Tạo khung nhìn PP gồm các cột P#, Pname từ bảng P của các mặt hàng là

màu đỏ.

CREATE VIEW PP (P#, PNAME) AS

SELECT P#, PNAME

FROM P

WHERE COLOUR = 'RED'

2.2.2.11. Trao quyền

Cú pháp: GRANT <tên quyền truy nhập> ON <đối tượng>

TO <tên người sử dụng> [WITH GRANT OPTION]

Trong đó:

- <tên quyền truy nhập> gồm: read (đọc), select (chọn), write (ghi), delete (xóa),

insert (bổ sung), update (sửa chữa)

- <đối tượng>: là tên bảng, tên khung nhìn hoặc tên chương trình nào đó.

- <tên người sử dụng>: là tên của một người hoặc một nhóm người

- <WITH GRANT OPTION>: đảm bảo để người sử dụng có thể tiếp tục trao

quyền sử dụng cho người khác nữa.

Ví dụ:

GRANT read ON NHANVIEN

TO Hồng WITH GRANT OPTION

2.2.2.12. Hủy quyền

Cú pháp: REVOKE <tên quyền truy nhập> ON <đối tượng>

FROM <tên người sử dụng>

Ví dụ:

REVOKE read ON NHANVIEN

FROM Hồng

51

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CÂU HỎI VÀ BÀI TẬP

Bài 1/ Cho lược đồ cơ sở dữ liệu

Sinhvien(MASV, HOTENSV, NU, NGAYSINH, NOISINH,TINH,MALOP)

Lop(MALOP,TENLOP, MAKHOA)

Khoa(MAKHOA,TENKHOA)

Monhoc(MAMH,TENMH,DONVIHT)

Giangvien(MAGV,HOTENGV,HOCVI,CHUYENNGANH,MAKHOA)

Ketqua(MASV, MAMH, LANTHI, DIEMTHI)

Phancong(MALOP,MAMH,MAGV)

Thực hiện các yêu cầu sau bằng ngôn ngữ đại số quan hệ:

1. Lập danh sách những sinh viên có hộ khẩu thường trú ở tỉnh “LONG AN”,

danh sách cần các thông tin: MASV, HOTENSV, NGAYSINH, TENLOP.

2. Lập danh sách các sinh viên của lớp có MALOP là CDTH2A, danh sách cần

các thông tin: MASV, HOTENSV, NGAYSINH, TINH.

3. Lập danh sách các giảng viên có cấp học vị là THAC SY của khoa có

MAKHOA là “CNTT”, danh sách cần: MAGV, HOTENGV, CHUYENNGANH.

4. Lập bảng điểm thi lần 1 môn học “869” cho tất cả sinh viên thuộc hai lớp có

MALOP là “CĐTH2A” và “CĐTH2B”, danh sách cần: MASV, HOTENSV,

DIEMTHI.

5. Lập danh sách các giảng viên đã dạy lớp CĐTH2A, danh sách cần các thông

tin: MAGV, HOTENGV, TENKHOA, HOCVI, TENMH.

6. Lập danh sách các môn mà lớp CDTH2A đã học, danh sách cần các thông

tin: MAMH, TENMH, DONVIHT, HOTENGV.

7. Lập danh sách những giảng viên đã dạy sinh viên có MASV là

“00CDTH189“, danh sách cần MAGV, HOTENGV, HOCVI, CHUYENNGANH,

TENKHOA, TENMH.

52

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

8. Lập danh sách các sinh viên có mã khoa “CNTT” có điểm thi lần 1 môn học

“869” lớn hơn hoặc bằng 8, danh sách cần MASV, HOTENSV, DIEMTHI,

TENLOP.

Bài 2/ Cho các quan hệ sau:

Monhoc(MSMH,TENMH,SOTINCHI,TINHCHAT)

MSMH mã số môn học

TENMH tên môn học

SOTINCHI số tín chỉ

TINHCHAT bằng 1 nếu là môn học bắt buộc, bằng 0 nếu là môn học không

bắt buộc.

Sinhvien(MSSV,HOTEN,NGAYSINH,LOP)

MSSV mã số sinh viên

HOTEN họ tên sinh viên

NGAYSINH ngày sinh,

LOP(C,4,0) lớp

Diem(MSSV,MSMH,DIEMTHI)

DIEMTHI điểm thi

Hãy sử dụng câu lệnh SQL thực hiện các yêu cầu sau:

1. Hãy cho biết các môn học có SOTINCHI cao nhất?

2. Hãy liệt kê danh sách gồm MSSV,HOTEN,LOP, DIEMTHI của những sinh

viên thi môn học CSDL, theo thứ tự LOP,DIEMTHI.

3. Hãy cho biết các sinh viên có điểm thi cao nhất và môn học có mã là CSDL.

4. Hãy cho biết điểm của sinh viên có mã số là 9900277.

5. Hãy liệt kê danh sách gồm MSSV, HOTEN, LOP, ĐIỂM TRUNG BÌNH

của những sinh viên có điểm trung bình các môn dưới 5, theo thứ tự LOP, HOTEN.

6. Hãy liệt kê danh sách điểm trung bình của sinh viên theo thứ tự lớ, tên.

7. Hãy cho biết điểm của sinh viên theo từng môn học.

53

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CHƯƠNG 3: PHỤ THUỘC HÀM

3.1. Định nghĩa và tính chất

Phụ thuộc hàm là sự biểu diễn ràng buộc toàn vẹn dưới hình thức toán học để

đảm bảo thông tin không bị tổn thất khi phân rã hoặc kết nối giữa các quan hệ.

a/ Đinh nghĩa

Cho R(U) là một lược đồ quan hệ với U = {A1,A2,...,An} là tập thuộc tính, X

và Y là tập con của U.

Nói rằng XY (X xác định hàm Y hoặc Y phụ thuộc hàm vào X) nếu r là một

quan hệ xác định trên R(U) sao cho bất kỳ hai bộ t1, t2 Є r mà t1[X]=t2[X] thì

t1[Y]=t2[Y].

Ví dụ 1:

MASV HOTEN MAKH TENKH MAMON TENMON SOTC DIEM

01 Lê Văn An K1 CNTT M1 TIN CB 4 7

01 Lê Văn An K1 CNTT M2 THVP 5 6

02 Nguyễn Bình K2 TOAN M1 TIN CB 4 7

02 Nguyễn Bình K2 TOAN M2 THVP 5 8

03 Tràn Ngọc K2 TOAN M1 TIN CB 4 8

03 Trần Ngọc K2 TOAN M2 THVP 5 9

Gồm các phụ thuộc hàm: MASV HOTEN, MAKH, TENKH

54

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

MAMON TENMON,SOTC

MAKH TENKH

MASV,MAMON DIEM

b/ Tính chất

Cho quan hệ Q với tập thuộc tính Q+, X, Y, Z thuộc Q+. Tính chất của phụ

thuộc hàm được phát biểu như sau:

* Tính phản xạ: Nếu Y X thì XY (Y là con hoặc = X)

* Tính tăng trưởng:

Nếu X Y thì X Z Y Z (X Z= XZ)

* Tính bắc cầu hay truyền ứng:

Nếu X Y và Y Z thì X Z

3.2. Hệ tiên đề Amstrong và các phép suy diễn logic

a/ Hệ tiên đề Amstrong

Các tính chất của phụ thuộc hàm tạo thành tiên để về phụ thuộc hàm do

Amstrong đưa ra năm 1974. Chúng được gọi là hệ tiên đề Amstrong.

Gọi R(U) là một lược đồ quan hệ với U = {A1,A2,...,An} là tập thuộc tính, X, Y, Z,

W là tập con của U. Hệ tiên đề Amstrong bao gồm:

* Tính phản xạ: Nếu Y X thì XY

* Tính tăng trưởng (thêm vào):

Nếu Z U và X Y thì X Z Y Z (X Z= XZ)

* Tính bắc cầu:

Nếu X Y và Y Z thì X Z

b/ Phép suy diễn logic

Từ hệ tiên đề Amstrong suy ra một số tính chất sau:

* Luật hợp: XY và XZ thì XXY

* Luật tựa bắc cầu: Nếu X Y và YZ W thì XZ W

* Luật tách: Nếu X Y và Z Y thì X Z

c/ Các ví dụ

55

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ 1: Cho ABC, CA. Chứng minh rằng BC ABC

Trả lời:

b1: C A (gt)

b2: BC AB (luật tăng trưởng của b1 thêm B)

b3: AB C (gt)

b4: AB ABC (luật tăng trưởng của b3 thêm AB)

b5: BC ABC (tính bắc cầu từ b2 và b4)

Ví dụ 2: Cho tập phụ thuộc hàm F = {A B, BCD}. Chứng minh ACCD được

suy diễn logic từ F.

Trả lời:

b1: A B (gt)

b2: AC BC (luật tăng trưởng của b1 thêm C)

b3: BCD (gt)

b4: BCCD (luật tăng trưởng của b3 thêm C)

b5: ACCD (tính bắc cầu từ b2 và b4)

3.3. Bao đóng và thuật toán xác định bao đóng các thuộc tính

a/ Khái niệm về bao đóng (Closure)

* Bao đóng của tập phụ thuộc hàm

Gọi F là tập tất cả các phụ thuộc hàm của lược đồ R(U), X,Y U, XY là

phụ thuộc hàm. Ta nói rằng phụ thuộc hàm XY được suy dẫn logic từ F nếu

mối quan hệ r trên R(U) thỏa các phụ thuộc hàm của F thì cũng thỏa XY.

Ký hiệu: F|= XY

Tập F+ = {Tập tất cả các phụ thuộc hàm được suy dẫn logic từ F}

=> Gọi là bao đóng của tập phụ thuộc hàm.

Phụ thuộc hàm XX được gọi là phụ thuộc hàm hiển nhiên.

* Bao đóng của tập thuộc tính

Gọi F là tập các phụ thuộc hàm trên tập thuộc tính U, X U, X+ là bao đóng của X

(đối với F) được định nghĩa như sau:

56

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

X+ = { A U | (X A) F+}

Hay X+ là tập tất cả các thuộc tính A mà phụ thuộc hàm XA có thể được suy

diễn logic từ F nhờ hệ tiên đề Amstrong.

b/ Thuật toán tìm bao đóng của các tập thuộc tính với mỗi phụ thuộc hàm

Input: tập U hữu hạn các thuộc tính, tập các phụ thuộc hàm F trên U và X U

Out: X+, bao đóng của X đối với F

Phương pháp: tính liên tiếp các thuộc tính X0, X1,.. theo quy tắc:

1. X0 := X

2. X. i+1 := Xi A sao cho (YZ) F+ mà A Z và Y Xi

Bổ đề: XY thì Y X+

Ví dụ 1:

Tìm bao đóng của tập X = {AB} với các phụ thuộc hàm sau:

F = {AB C A D D E ACB }

Trả lời:

Khởi tạo: X0 = {AB}

X1 = {ABC} do AB C

X2 = {ABCD} do A D

X3 = {ABCDE} do D E

==> X= = {ABCDE}

Ví dụ 2:

Tìm bao đóng của tập X = {AC} với các phụ thuộc hàm sau:

F = {BA DA CE D H GH C AC D }

Trả lời:

Khởi tạo: X0 ={AC}

X1 ={ACD} do AC D

X2 ={ACDE} do DA CE

X3 ={ACDEH} do D H

57

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

==> X+ ={ACDEH}

3.4. Tập các phụ thuộc tương đương và phủ tối thiểu

a/ Định nghĩa

- Hai tập phụ thuộc hàm (PTH) F và G được gọi là tương đương nếu F+ = G+

, ký hiệu F=G. Ta nói F phủ G nếu F+ G+ ,

* Thuật toán xác định F và G có tương đương hay không

b1: Với mỗi phụ thuộc hàm X Y của F ta xác định xem X Y có là thành

viên của G hay không. Tức là kiểm tra xem Y có thuộc (X+)G hay không.

b2: Với mỗi phụ thuộc hàm X Y của G ta xác định xem X Y có là thành

viên của F hay không. Tức là kiểm tra xem Y có thuộc (X+)F hay không.

Nếu cả hai bước trên đều đúng thì F và G là tương đương.

Ví dụ:

Cho lược đồ quan hệ Q(ABCDE) và hai tập phụ thuộc hàm

F = {ABC, AD, CD E} và G = {A BCE, A ABD, CD E}

Hỏi: - F có tương đương với G không?

- F có tương đương với G’ ={A BCDE} không?

Trả lời:

(AG)+ = ABCDE => trong G+ có A BC và A D => F G+ => F+ G+

(AF)+ = ABCDE => trong F+ có A BCE và A ABD => G F+ => G+ F+

Do đó: F+ = G+ => F ≡ G

Do (CD)+G’ = CD => G’ không chứa phụ thuộc hàm CD E => F không tương

đương với G’

b/ Phủ tối thiểu của một tập phụ thuộc hàm

* Khái niệm 1: Phụ thuộc hàm có vế trái dư thừa

F là tập các phụ thuộc hàm trên lược đồ quan hệ Q, Z là tập thuộc tính, Z-Y

F. Nói rằng phụ thuộc hàm ZY có vế trái dư thừa (phụ thuộc hàm không đầy

đủ) nếu có một thuộc tính A Z sao cho F ≡ F - {ZY} {(Z - A)Y}

58

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ngược lại, ZY là phụ thuộc hàm có vế trái không dư thừa hay Y phụ thuộc hàm

đầy đủ vào Z.

Ví dụ 1:

Cho quan hệ Q(A,B,C) và các phụ thuộc hàm F={ABC; BC}

thì phụ thuộc hàm ABC có vế trái dư thừa A (vì BC)

F ≡ F - {ABC} {(AB - A)C} = {B C}

Do đó: AB C là phụ thuộc hàm không đẩy đủ;

B C là phụ thuộc hàm đầy đủ.

Chú ý: Phụ thuộc hàm có vế trái chứa một thuộc tính là phụ thuộc hàm đầy đủ.

Ví dụ 2:

Cho tập phụ thuộc hàm F = {ABD, ABC, BC} thì ABD là phụ thuộc

hàm có vế trái dư thừa B vì:

F ≡ F - {ABD} {(AD} ≡ {ABC, BC, AD}

- Thuật toán loại khỏi F các PTH có vế trái dư thừa:

b1: Lần lượt thực hiện b2 cho các phụ thuộc hàm X-->Y của F

b2: Với mọi tập con thật sự X' ≠ của X: nếu X'Y F+ thì thay XY

trong F bằng X'Y, thực hiện lại bước 2

Ví dụ 3: Cho tập phụ thuộc hàm F= {ABC, DEG, ACDB, CA, BEC,

CEAG, BCD, CGBD}. Hãy loại bỏ các phụ thuộc hàm có vế trái dư thừa ra

khỏi F?

Xét ABC:

bỏ A, được BC, ta có: B+F = B, nhận thấy C B+

F nên không bỏ được A.

bỏ B, được AC, ta có: A+F = A, nhận thấy C A+

F nên không bỏ được B.

Xét ACDB:

bỏ A, được CDB, ta có: CD+F = CDEGAB, nhận thấy B CD+

F nên bỏ

được A.

bỏ C, được ADB, ta có: AD+F = ADEG, nhận thấy B AD+

F nên không bỏ

được C.

59

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

bỏ D, được ACB, ta có: AC+F = AC, nhận thấy B AC+

F nên không bỏ

được D.

Lúc này, F = { ABC, DEG, CDB, CA, BEC, CEAG, BCD,

CGBD}

Xét BEC:

bỏ B, được EC, ta có: E+F = E, nhận thấy C E+

F nên không bỏ được B.

bỏ E, được BC, ta có: B+F = B, nhận thấy C B+

F nên không bỏ được E.

Xét CEAG:

bỏ C, được EAG, ta có: E+F = E, nhận thấy AG E+

F nên không bỏ được

C.

bỏ E, được CAG, ta có: C+F = CA, nhận thấy AG C+

F nên không bỏ được

E.

Xét BCD:

bỏ B, được CD, ta có: C+F = CA, nhận thấy D C+

F nên không bỏ được B.

bỏ C, được BD, ta có: B+F = B, nhận thấy D B+

F nên không bỏ được C.

Xét CGBD:

bỏ C, được GBD, ta có: G+F = G, nhận thấy BD G+

F nên không bỏ được

C.

bỏ G, được CBD, ta có: C+F = CA, nhận thấy BD C+

F nên không bỏ được

G.

Vậy, sau khi loại bỏ các phụ thuộc hàm có vế trái dư thừa, ta được tập phụ thuộc

hàm mới là , F = { ABC, DEG, CDB, CA, BEC, CEAG,

BCD, CGBD}

* Khái niệm 2: Phụ thuộc hàm có vế phải có một thuộc tính

Mỗi tập phụ thuộc hàm F đều tương đương với một tập phụ thuộc hàm G mà

vế phải của các phụ thuộc hàm trong G chỉ gồm một thuộc tính ==> G được gọi là

tập phụ thuộc hàm có vế phải có một thuộc tính.

60

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ: Cho tập phụ thuộc hàm F = {ABC, BC, ABD}, có ABC là phụ

thuộc hàm có vế phải chứa hơn một thuộc tính, ta có thể tách thành hai phụ thuộc

hàm gồm AB, AC. Khi đó G ={AB, AC, BC, ABD} và G được gọi là

tập phụ thuộc hàm có vế phải có một thuộc tính.

* Khái niệm 3: Tập phụ thuộc hàm không dư thừa

Phụ thuộc hàm XY F là dư thừa nếu nó có thể suy diễn được từ các phụ

thuộc hàm còn lại trong F.

Tập phụ thuộc hàm F được gọi là tập phụ thuộc hàm không dư thừa nếu

không tồn tại F' F sao cho F' ≡ F. Ngược lại, F là tập phụ thuộc hàm dư thừa.

Ví dụ: Cho lược đồ quan hệ R(U) với U = ABCD và tập phụ thuộc hàm F={ABC,

BD, ABD}. Hãy loại bỏ khỏi F các phụ thuộc hàm dư thừa.

Giải:

Xét ABC: F’ = { BD, ABD}, (A)+F’ = A nên ABC không thuộc F+

nên không thể loại bỏ nó khỏi F.

Xét BD: F’ = { ABC, ABD}, (B)+F’ = B nên BD không thuộc F+ nên

không thể loại bỏ nó khỏi F.

Xét ABD: F’ = { ABC, BD}, (AB)+F’ = ABCD nên ABD thuộc F+ nên có

thể loại bỏ nó khỏi F.

Vậy sau khi loại bỏ các phụ thuộc hàm dư thừa thì F = {ABC, B D}.

- Thuật toán loại khỏi F các phụ thuộc hàm dư thừa:

b1: Lần lượt xét các phụ thuộc hàm XY của F

b2: Nếu X-->Y là thành viên của F - {XY} thì loại XY ra khỏi F

b3: thực hiện b2 cho các phụ thuộc hàm tiếp theo của F

* Khái niệm 4: Tập phụ thuộc hàm tối thiểu

F được gọi là phụ thuộc hàm tối thiểu (phủ tối thiểu) nếu F đồng thời

thỏa ba điều kiện sau: - F là tập PTH có vế trái không dư thừa

- F là tập PTH có vế phải có một thuộc tính

- F là tập PTH không dư thừa.

61

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

3.5. Thuật toán xác định tập phủ tối thiểu của phụ thuộc hàm

b1: Tách các PTH có vế phải trên một thuộc tính thành các PTH có vế phải

có một thuộc tính.

b2: Loại khỏi F các PTH có vế trái dư thừa

b3: Loại khỏi F các PTH dư thừa.

Ví dụ 1:

Cho F = {ABCDE, CD, EGH, AEH}. Xác định phủ tối thiểu của

phụ thuộc hàm F?

Trả lời:

b1: Tách các phụ thuộc hàm thành các phụ thuộc hàm có vế phải có một thuộc tính:

F = {AB, AC, AD, AE, CD, EGH, AEH}

b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:

Xét EGH:

bỏ E, được GH, ta có: G+F = G, nhận thấy H G+

F nên không bỏ được E.

bỏ G, được EH, ta có: E+F = E, nhận thấy H E+

F nên không bỏ được G.

Xét AEH:

bỏ A, được EH, ta có: E+F = E, nhận thấy H E+

F nên không bỏ được A.

bỏ E, được AH, ta có: A+F = ABCDEH, nhận thấy H A+

F nên bỏ được E.

Vậy F = {AB, AC, AD, AE, CD, EGH, AH}

b3: Loại bỏ các phụ thuộc hàm dư thừa:

Ta có F = {AB, AC, AD, AE, CD, EGH, AH}

Xét AB: F’ = { AC, AD, AE, CD, EGH, AH }, (A)+F’ = ACDEH

nên AB không thuộc F’+ nên không thể loại bỏ nó khỏi F.

Xét AC: F’ = { AB, AE, CD, EGH, AH }, (A)+F’ = ABEH nên AC

không thuộc F’+ nên không thể loại bỏ nó khỏi F.

Xét AD: F’ = { AB, AC, AE, CD, EGH, AH }, (A)+F’ = ABCDEH

nên AD thuộc F’+ nên có thể loại bỏ nó khỏi F.

Lúc này F’ = {AB, AC, AE, CD, EGH, AH }

62

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Xét AE: F’ = { AB, AC, CD, EGH, AH }, (A)+F’ = ABCDH nên AE

không thuộc F’+ nên không thể loại bỏ nó khỏi F.

Xét CD: F’ = { AB, AC, AE, EGH, AH }, (C)+F’ = C nên CD không

thuộc F’+ nên không thể loại bỏ nó khỏi F.

Xét EGH: F’ = {AB, AC, AE, CD, AH }, (EG)+F’ = EG nên EGH

không thuộc F’+ nên không thể loại bỏ nó khỏi F.

Xét AH: F’ = { AB, AC, AE, CD, EGH}, (A)+F’ =BCDE nên AH

không thuộc F’+ nên không thể loại bỏ nó khỏi F.

Vậy phủ tối thiểu của tập phụ thuộc hàm là F’ = {AB, AC, AE, CD,

EGH, AH }

Ví dụ 2:

Cho lược đồ quan hệ Q(ABCD) và tập phụ thuộc hàm F = {AB CD, BC,

CD}. Hãy tìm phủ tối thiểu của F?

Trả lời:

b1: Tách các phụ thuộc hàm thành các phụ thuộc hàm có vế phải có một thuộc tính:

F = {ABC, ABD, BC, CD}

b2: Loại bỏ các phụ thuộc hàm có vế trái dư thừa:

Xét ABC:

bỏ A, được BC, ta có: B+F = BCD, nhận thấy C B+

F nên bỏ được A.

bỏ B, được AC, ta có: A+F = A, nhận thấy C A+

F nên không bỏ được B.

Xét ABD:

bỏ A, được BD, ta có: B+F = BCD, nhận thấy D B+

F nên bỏ được A.

bỏ B, được AD, ta có: A+F = A, nhận thấy D A+

F nên không bỏ được B.

Vậy F = {BC, BD, BC, CD} F ={ BC, BD, CD}

b3: Loại bỏ các phụ thuộc hàm dư thừa:

Ta có F = {BC, BD, CD}

Xét BC: F’ = {BD, CD }, (B)+F’ = BD nên BC không thuộc F’+ nên không

thể loại bỏ nó khỏi F.

63

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Xét BD: F’ = {BC, CD }, (B)+F’ =BCD nên BD thuộc F’+ nên có thể loại

bỏ nó khỏi F.

Lúc này F’ = { BC, CD}

Xét CD: F’ = {BC}, (B)+F’ =B nên CD không thuộc F’+ nên không thể loại

bỏ nó khỏi F.

Vậy phủ tối thiểu của tập F là F = {BC, CD}

3.6. Khóa của lược đồ quan hệ

- Khái niệm khóa của lược đồ quan hệ:

Cho Q(A1,A2,…,An) là một lược đồ quan hệ, U là tập thuộc tính, F là tập

phụ thuộc hàm trên Q và K là tập con của U. Nói rằng: K là một khóa của Q nếu:

1. K+ = U (hay K U F+ )

2. Không tồn tại Ko K sao cho Ko+ = U

Khóa là tập thuộc tính nhỏ nhất có bao đóng bằng U (không có tập con nào của

nó có tính chất như vậy).

Trong một lược đồ quan hệ có thể tồn tại một hay nhiều khóa, ta gọi các khóa này là

khóa dự tuyển (candidate key) hoặc chỉ gọi tắt là khóa. Người ta có thể chọn ra một

trong số các khóa đó để sử dụng. Khi đó, khóa được chọn ra sử dụng sẽ được gọi là

khóa chính (primary key)

- Tập thuộc tính S được gọi là siêu khóa (super key) nếu K S

- Thuộc tính A được gọi là thuộc tính khóa (prime attribute) nếu AK với K là khóa

bất kỳ của lược đồ quan hệ Q. Ngược lại, K là thuộc tính không khóa (nonprime

attribute).

Ví dụ 1: Cho quan hệ Sinh viên(Số thẻ SV, Họ tên, Ngày sinh, Quê quán) với các

phụ thuộc hàm như sau: Số thẻ Sv --> Họ tên

Số thẻ Sv --> Ngày sinh

Số thẻ Sv --> Quê quán

Như vậy Số thẻ SV là khóa của quan hệ Sinh viên

64

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ 2: Cho quan hệ Giảng dạy(Số phòng học,Thời gian, Tên giảng viên, Tên môn

học) với các phụ thuộc hàm như sau:

Số phòng học, Thời gian --> Tên giảng viên, Tên môn học

Như vậy (Số phòng học, Thời gian) là khoá của quan hệ Giảng dạy

3.7. Thuật toán đoán nhận khóa

a/ Thuật toán tìm một khóa của lược đồ quan hệ

Ta gọi U là tập đầy đủ các thuộc tính của lược đồ quan hệ Q;

R là tập thuộc tính nằm ở vế phải của các phụ thuộc hàm;

L là tập thuộc tính nằm ở vế trái của các phụ thuộc hàm;

Theo các tính chất của khóa, ta có thể thấy khóa của lược đồ quan hệ bị kẹp giữa hai

tập thuộc tính là U\R và (U\R) (LR) và các khóa chỉ khác nhau trên các thuộc

tính nằm trong tập LR. Do đó thuật toán tìm khóa sẽ xuất phát từ tập siêu khóa

(U\R) (LR) và tìm cách loại bỏ dần các thuộc tính nằm trong tập LR cho đến

khi thu được tập thuộc tính nhỏ nhất có bao đóng là U thì dừng lại.

Vào: Tập thuộc tính U và tập phụ thuộc hàm F.

Ra: Một khóa của lược đồ quan hệ

Begin

X := U\R

If (U\R)+ U then

Begin

X:= X (L R)

For each Ai L R do

If (X\{Ai}+ = U then X := X\{Ai}

end

K := X

End.

Ví dụ 1: Cho lược đồ quan hệ Q(ABCDEG) và tập phụ thuộc hàm F = {BC,

CB, AGD}. Hãy tìm một khóa của lược đồ quan hệ Q?

65

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Giải:

Ta có: U = ABCDEG, L = ABC, R = BCDG

U\R = AE, L R = BC

Ta thấy (U\R)+ = (AE)+ = AEGD U nên:

X = (U\R) (LR) = ABCE

Xét (X\{B})+ = (ACE)+ = ACEGDB = U nên X = ACE

Xét (X\{C})+ = (AE)+ = AEGD ≠ U nên không thể loại bỏ C khỏi X.

Vậy K = X = ACE là một khóa của lược đồ quan hệ.

Ví dụ 2: Cho lược đồ quan hệ Q(ABCDEGHI) và tập phụ thuộc hàm F = {ABE,

AGI, BEI, EG, GIH}. Hãy tìm một khóa của lược đồ quan hệ Q?

Giải:

Ta có: U = ABCDEGHI, L = ABEGI, R = EGHI

U\R = ABCD, L R = EGI

Ta thấy (U\R)+ = (ABCD)+ = ABCDEGHI = U nên K= ABCD là khóa duy nhất của

lược đồ quan hệ.

Ví dụ 3: Cho lược đồ quan hệ Q(ABCDEGHIJ) và tập phụ thuộc hàm F = {BGD,

GJ, AIC, CEH, BDG, JHA, DI}. Hãy tìm một khóa của lược đồ

quan hệ Q?

Giải:

Ta có: U = ABCDEGHIJ, L = ABCDEGHIJ, R = ACDGHIJ

U\R = BE, L R = ACDGHIJ

Ta thấy (U\R)+ = (BE)+ = BE U nên:

X = (U\R) (LR) = ABCDEGHIJ

Xét (X\{A})+ = (BCDEGHIJ)+ = ABCDEGHIJ = U nên X = BCDEGHIJ.

Xét (X\{C})+ = (BDEGHIJ)+ = BDEGHIJ U nên không thể loại bỏ C, lúc

này X vẫn gồm các thuộc tính như cũ tức là X = BCDEGHIJ.

Xét (X\{D})+ = (BCEGHIJ)+ = ABCDEGHIJ = U nên X = BCEGHIJ.

66

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Xét (X\{G})+ = (BCEHIJ)+ = ABCEHIJ U nên không thể loại bỏ G, lúc

này X vẫn gồm các thuộc tính như cũ tức là X = BCEGHIJ.

Xét (X\{H})+ = (BCEGIJ)+ = ABCDEGHIJ = U nên X = BCEGIJ.

Xét (X\{I})+ = (BCEGJ)+ = ABCDEGHIJ = U nên X = BCEGJ.

Xét (X\{J})+ = (BCEG)+ = ABCDEGHIJ = U nên X = BCEG.

Vậy K = X = BCEG là một khóa của lược đồ quan hệ.

b/ Thuật toán tìm tất cả các khóa của lược đồ quan hệ

* Thuật toán cơ bản

b1: Xác định tất cả các tập con khác rỗng của Q+. Kết quả tìm được giả sử là

các tập thuộc tính X1, X2,..,Xn

b2: Tìm bao đóng của các Xi

b3: Siêu khóa là các Xi có bao đóng đúng bằng Q+. Giả sử ta ta có siêu khóa

là S={S1,S2,..,Sm}

b4: Xây dựng tập chứa tất cả các khóa của Q từ tập S bằng cách xét mọi Si,Sj

là con của S (i≠j), nếu Si Sj thì ta loại Sj (i,j=1..n).

Kết quả còn lại của S chính là tất cả các khóa cần tìm.

Ví dụ:

Cho Q(L,S,Z), F = {CSZ, ZC}. Hãy tìm tất cả các khóa của lược đồ quan

hệ trên?

Giải:

Xi Xi+ Siêu khóa S Khóa K

C C

S S

CS CSZ CS CS

Z ZC

CZ CZ

SZ SZC SZ SZ67

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CSZ CSZ CSZ

Vậy lược đồ quan hệ Q có hai khóa là {C ,S} và {S,Z}

* Thuật toán cải tiến

- Một số khái niệm:

+ Tập nguồn (tập thuộc tính nguồn) là tập chứa tất cả các thuộc tính có xuất

hiện ở vế trái và không xuất hiện ở vế phải của các phụ thuộc hàm và các thuộc tính

không xuất hiện ở cả vế trái lẫn vế phải của các phụ thuộc hàm.

+ Tập đích (tập thuộc tính đích) là tập chứa tất cả các thuộc tính chỉ xuất hiện

ở vế phải và không xuất hiện ở vế trái của các phụ thuộc hàm.

+ Tập trung gian (tập thuộc tính trung gian) là tập chứa tất cả các thuộc tính

xuất hiện ở cả vế phải và vế trái của phụ thuộc hàm.

Hệ quả: Nếu K là khóa của lược đồ quan hệ Q thì tập nguồn thuộc K và giao của

tập đích với K bằng rỗng.

==> thuật toán cải tiến như sau:

B1: Tạo tập thuộc tính nguồn TN = U\R, tập thuộc tính trung gian TG = LR

B2: Nếu TG = thì lược đồ quan hệ Q chỉ có một khóa K với K = TN.

Nếu TG ≠ thì thực hiện B3.

B3: Tìm tất cả các tập con Xi của tập TG.

B4: Tìm các siêu khóa Si bằng cách Xi nếu (TN Xi )+ = Q+ thì Si = TN Xi.

B5: Tìm khóa S bằng cách loại bỏ các siêu khóa không tối thiểu.

Si ,Sj S nếu Si Sj thì loại Sj ra khỏi tập siêu khóa S. S còn lại chính là

khóa cần tìm.

Ví dụ 1:

Cho Q(L,S,Z), F = {CSZ, ZC}. Hãy tìm tất cả các khóa của lược đồ quan

hệ trên?

Giải:

68

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Áp dụng thuật toán cải tiến ta có TN = U\R = S, TG = LR = CZ. Gọi Xi là các tập

con của tập TG, ta có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa S S

C SC SCZ (Q+) SC SC

Z SZ SCZ (Q+) SZ SZ

CZ SCZ SCZ (Q+) SCZ

Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = SC và SZ. Siêu khóa

SCZ bị loại vì nó không phải là siêu khóa tối thiểu.

Ví dụ 2:

Cho Q(ABCD), F = {ABC, BD, BCA}. Hãy tìm tất cả các khóa của

lược đồ quan hệ trên?

Giải:

Ta có: U= ABCD, L = ABC, R = ACD, TN = U\R = B, TG = LR = AC. Gọi Xi là

các tập con của tập TG, ta có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa B BD

A AB ABCD(Q+) AB AB

C BC ABCD (Q+) BC BC

AC ABC ABCD (Q+) ABC

Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = AB và BC. Siêu khóa

ABC bị loại vì nó không phải là siêu khóa tối thiểu.

Ví dụ 3:

Cho Q(ABCDEI), F = {ACDEBI, CEAD}. Hãy tìm tất cả các khóa của

lược đồ quan hệ trên?

Giải:

69

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ta có: U= ABCDEI, L = ACDE, R = ABDEI, TN = U\R = C, TG = LR = ADE.

Gọi Xi là các tập con của tập TG, ta có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa C C

A AC AC

D DC DC

E EC ECADBI (Q+) EC EC

AD ADC ADCEBI(Q+) ADC ADC

AE AEC AECDBI(Q+) AEC

DE DEC DECABI(Q+) DEC

ADE ADEC ADECBI(Q+) ADEC

Vậy ta tìm được tất cả 2 khóa của lược đồ quan hệ Q là K = EC và ADC. Siêu khóa

AEC, DEC, ADEC bị loại vì chúng không phải là siêu khóa tối thiểu (có chứa siêu

khóa CE).

CÂU HỎI VÀ BÀI TẬP

1/ Chứng minh rằng:

a. Tính cộng đầy đủ: XY và ZW thì XZYW

b. Tính tích lũy: XY và YZW thì XYZW

2/ Cho F = {ABC, AB, BC} và G = {ABC, AB, BC, AC}. Hỏi F và

G có tương đương không?

3/ Cho lược đồ cơ sở dữ liệu và phụ thuộc hàm như sau:

Kehoach(Ngay,Gio,Phong,Monhoc,Giaovien)

F = {Ngay,Gio,Phong Monhoc; Monhoc,NgayGiaovien;

Ngay,Gio,Phong Giaovien; MonhocGiaovien}

70

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

a. Tính (Ngay,Gio,Phong )+ ; (Monhoc)+

b. Tìm phủ tối thiểu của F?

c. Tìm tất cả các khóa của lược đồ Kehoach trên?

4/ Cho lược đồ quan hệ R = (U, F); U = {A,B,C,D,E,G}

F = {CG, BG CD, AEG BC, CG AE, B CG }

a. Tính C+

b. Tính (B)+

c. Tính (AEG)+

5/ Cho lược đồ quan hệ Q(ABCDEG) và phụ thuộc hàm F = {ABC, CA,

BCD, ACDB, DEG, CGBD, CEAG}. Đặt X = {B,D}, Y = {C,G}. Tính

X+ , Y+ ?

6/ Cho lược đồ quan hệ R = (U, F); U= {A,B,C,D,E,G,H} và tập phụ thuộc hàm

F={ABC, DEG, ACDB, CA, BEC, CEAG, BCD, CGBD, G

H}

a. Tính (D)+

b. Tính (CG)+

c. Tính (BE)+

d. Tìm phủ tối thiểu cuả F?

7/ Cho lược đồ quan hệ Q và tập phụ thuộc hàm F

a. F = {ABE, AGI, BEI, EG, GIH}. Chứng minh rằng: ABGH.

b. F = {ABC, BD, CDE, CEGH, GA}. Chứng minh rằng: ABE,

ABG.

8/ Cho Q(ABCDEGHI) và F = {ACB, BIACD, CGAE, ABCD, HI,

ACEBCG}. Hãy tìm một khóa của lược đồ quan hệ?

71

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CHƯƠNG 4: PHÉP TÁCH VÀ CHUẨN HÓA QUAN HỆ

4.1. Khái niệm phép tách

Cho lược đồ quan hệ p = (U,F). Một phép tách trên tập thuộc tính U là một họ

các tập con của U, p = (X1 ,X2,...X k) thỏa tính chất:

Xi = U

4.2. Phép tách các lược đồ quan hệ72

k

i=1

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

a. Phép tách một lược đồ quan hệ

Phép tách lược đồ quan hệ R = {A1,A2, ...,An} là việc thay thế lược đồ quan

hệ R bằng tập các lược đồ {R1, R2, ...,Rk} trong đó Ri R (i=1..k) và

R = R1R2...Rk

Ví dụ:

Cho Q(Mahs, Tenhs,Diachi,Ngaysinh) và các phụ thuộc hàm MahsDiachi,

TenhsNgaysinh, khi đó ta có thể thay thế Q bằng hai lược đồ quan hệ Q1 và Q2

như sau: Q1 = (Mahs,Diachi); Q2 = (Mahs,Tenhs,Ngaysinh).

b. Phép tách kết nối không mất mát thông tin

Cho lược đồ quan hệ Q và tập phụ thuộc hàm F. Q được tách thành các lược

đồ quan hệ con Q1 ...Q2 theo từng bước mà ở mỗi bước một lược đồ quan hệ được

tách thành hai lược đồ quan hệ con và thỏa mãn điều kiện của tính chất bảo toàn

thông tin thì với r là quan hệ bất kỳ của Q ta luôn có:

r = r.Q1 r.Q2 r.Q3 ... r.Qn

4.3. Thuật toán kiểm tra phép tách không tổn thất thông tin

Vào: Lược đồ quan hệ Q(A1,A2, ...,An), tập phụ thuộc hàm F, phép tách

p = (Q1,Q2,...Qk)

Ra: p có là phép tách bảo toàn thông tin không?

Bước1: Thiết lập bảng với k+1 dòng, n+1 cột. Cột j tương ứng với thuộc tính Aj

(j=1..n), hàng i tương ứng với lược đồ quan hệ Qi (i=1..k).

Tại vị trí hàng i, cột j ta điền ký hiệu Aj nếu AjQi. Nếu không thì ta đặt ký

hiệu bij vào vị trí đó

Bước 2: Xét lần lượt các phụ thuộc hàm trong F, áp dụng cho bảng vừa mới lập ở

trên. Giả sử xét (XY)F, chúng ta tìm những hàng giống nhau ở tất cả các thuộc

tính của X, nếu thấy hàng như vậy ta sẽ làm cho các ký hiệu của hai hàng này bằng

nhau ở tất cả các thuộc tính của Y.

Khi làm cho hai ký hiệu này bằng nhau, nếu một trong hai ký hiệu là aj thì

cho ký hiệu kia trở thành aj , nếu hai ký hiệu là bk hoặc bl thì có thể cho chúng trở

73

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

thành bt hoặc bt với t=min(k,l). Bước này được tiếp tục cho các phụ thuộc hàm còn

lại của F cho đến khi không còn áp dụng được nữa.

Bước 3: Xét bảng kết quả, nếu thấy trong bảng này có một hàng chứa toàn ai

(i=1..n) thì kết luận là phép kết nối bảo toàn thông tin, ngược lại là phép kết nối mất

mát thông tin.

Ví dụ 1:

Cho S(Sname, Add, Pro, Price) được tách làm hai quan hệ gồm:

S1 (Sname, Add), S2 (Sname, Pro, Price) với các phụ thuộc hàm SnameAdd,

Sname,ProPrice. Hãy kiểm tra xem phép tách trên có làm tổn thất thông tin hay

không?

Áp dụng phương pháp trên ta có:

Kết quả của bước 1:

Sname Add Pro Price

a1 a2 b13 b13

a1 b22 a3 a4

Kết quả của bước 2:

Áp dụng phụ thuộc hàm SnameAdd và Sname,ProPrice ta có:

Sname Add Pro Price

a1 a2 b13 b13

a1 a2 a3 a4

Kết quả của bước 3:

Nhận thấy giá trị tại các cột của hàng cuối cùng trong bảng trên đều có dạng ai nên

phép tách trên là không làm tổn thất thông tin.

Ví dụ 2:

Cho R:={A,B, C,D, E, F} tập các thuộc tính.

Xét phép tách – kết nối ϕ[R1 ,R2 , R3 ] trong đó: R1={A,B,D,E}, R2 ={A,C,D,F },

74

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

R3 = {B,C,E,F } và F = {A → B, F → E}.

Bước 1: Thành lập bảng ban đầu gồm 3 hàng và 6 cột:

Bước 2: Áp dụng A → B suy ra b22 = a2

Bước 3: Áp dụng F → E suy ra b25 = a5

Như vậy tồn tại hàng thứ 2 R2 chứa các ký tự {a1 , a2, a3, a4, a5, a6}. Suy ra phép tách

ϕ có kết nối không tổn thất thông tin.

Chú ý: Nếu p = (R1 ,R2) là một phép tách của R và F là các tập phụ thuộc hàm thì p

là phép tách không mất mát thông tin đối với F khi và chỉ khi R1 R2 R1 - R2 hoặc

R1 R2 R2 - R1

4.4. Các dạng chuẩn

Trước khi đi vào tìm hiểu các dạng chuẩn, chúng ta cần hiểu một số khái

niệm có liên quan, gồm:

Thuộc tính khoá/không khoá

A là một thuộc tính khoá nếu A có tham gia vào bất kỳ một khoá nào của

quan hệ, ngược lại A gọi là thuộc tính không khoá.

Ví dụ:

75

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Cho lược đồ quan hệ Q(ABC) và tập phụ thuộc hàm F={ A→ B; A → C; B → A}

Có hai khóa là A và B. khi đó thuộc tính khoá là A, B; thuộc tính không khóa là C.

Thuộc tính phụ thuộc đầy đủ - phụ thuộc hàm đầy đủ

Y được gọi là một phụ thuộc đầy đủ vào X nếu XY và không tồn tại X’

X sao cho X’ Y (nói cách khác: phụ thuộc hàm đầy đủ có nghĩa là Y chỉ phụ

thuộc hàm vào X chứ không phụ thuộc vào một tập con nào đó của X)

A là một thuộc tính phụ thuộc đầy đủ vào tập thuộc tính X nếu X →A là

một phụ thuộc hàm đầy đủ (tức là không tồn tại X' X sao cho X' → A F+)

Ví dụ: Cho lược đồ quan hệ Q(ABC) và tập phụ thuộc hàm

F={ A → B; A→ C; AB → C} thì A → ;B A → C là các phụ thuộc hàm đầy đủ.

Phụ thuộc hàm AB → C không là phụ thuộc hàm đầy đủ vì có A → C.

4.4.1. Dạng chuẩn 1

Khái niệm: Một lược đồ quan hệ R được gọi là ở dạng chuẩn 1NF (First Normal

Form) nếu và chỉ nếu toàn bộ miền có mặt rong R đề chỉ chứa các giá trị nguyên

tố. Hay mọi thuộc tính của R đều không phải là thuộc tính phức hợp.

Ví dụ 1: Cho bảng quan hệ R như sau:

Mãsv Họtên Mãlớp Tênlớp Điểmthi

S1 Tiến L1 MT01 M1 9

S1 Tiến L1 MT01 M2 7

S1 Tiến L1 MT01 M3 8

S2 Trúc L1 MT01 M1 9

S2 Trúc L1 MT01 M2 8

S3 Hiền L2 MT02 M1 5

Nhận thấy quan hệ R không ở dạng chuẩn 1 vì thuộc tính Điểmthi là thuộc tính phức

hợp.

Ví dụ 2: Cho bảng quan hệ R như sau:

76

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm

S1 Tiến L1 MT01 M1 9

S1 Tiến L1 MT01 M2 7

S1 Tiến L1 MT01 M3 8

S2 Trúc L1 MT01 M1 9

S2 Trúc L1 MT01 M2 8

S3 Hiền L2 MT02 M1 5

Quan hệ R ở 1NF vì các thuộc tính của R không là thuộc tính đa trị, không là thuộc

tính phức hợp.

4.4.2. Dạng chuẩn 2

Khái niệm: Một lược đồ quan hệ R được gọi là ở dạng chuẩn 2NF (Second Normal

Form) nếu nó ở dạng chuẩn 1 và nếu mỗi thuộc tính không khóa của R là phụ thuôc

hàm đầy đủ vào khóa chính (tức không phụ thuộc vào thuộc tính con nào của khóa)

Ví dụ 1: Cho quan hệ R như sau:

Mãsv Họtên Mãlớp Tênlớp Mônhọc Điểm

S1 Tiến L1 MT01 M1 9

S1 Tiến L1 MT01 M2 7

S1 Tiến L1 MT01 M3 8

S2 Trúc L1 MT01 M1 9

S2 Trúc L1 MT01 M2 8

S3 Hiền L2 MT02 M1 5

Các phụ thuộc hàm: Mãsv {Họtên, Mãlớp}

Mãlớp Tênlớp

{Mãsv, Mônhọc} Điểm

Khóa của R: {Mãsv, Mônhọc}

77

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Lược đồ quan hệ R không ở 2NF vì thuộc tính không khóa Họtên phụ thuộc

hàm riêng phần vào khóa {Mãsv, Mônhọc}.

Ví dụ 2: Quan hệ R1

Quan hệ R2

Mãsv Mônhọc Điểm

S1 M1 9

S1 M2 7

S1 M3 8

S2 M1 9

S2 M2 8

S3 M1 5

Lược đồ quan hệ R1 và R2 đều ở 2NF vì các thuộc tính không khóa đều phụ

thuộc hàm đầy đủ vào khóa.

Hệ quả:

1. Nếu một lược đồ quan hệ đạt chuẩn 1 và tập thuộc tính không khóa của nó là tập

rỗng thì lược đồ quan hệ đó đạt dạng chuẩn 2.

2. Nếu tất cả các khóa của lược đồ quan hệ chỉ gồm một thuộc tính thì lược đồ quan

hệ đó đạt chuẩn 2.

Mãsv Họtên Mãlớp Tênlớp

S1 Tiến L1 MT01

S2 Trúc L1 MT01

S3 Hiền L2 MT02

78

Khóa của R1: Mãsv

Khóa của R2: {Mãsv, Mônhọc}

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

* Thuật toán kiểm tra xem một lược đồ quan hệ có đạt chuẩn 2 hay không:

Vào: Lược đồ quan hệ R(U) và tập phụ thuộc hàm F

Ra: Khẳng định R(U) có đạt chuẩn 2 hay không.

Bước 1: Tìm tát cả các khóa của lược đồ quan hệ và xác định các thuộc tính không

khóa.

Bước 2: Với mỗi khóa K, tìm bao đóng của tất cả các tập con thật sự K’ của K.

Bước 3: Nếu tồn tại một bao đóng (K’)+ nào đó chứa thuộc tính không khóa thì

R(U) không đạt chuẩn 2. Ngược lại thì đạt chuẩn 2.

Việc áp dụng thuật toán trên luôn chắc chắn giúp ta nhân diện được lược đồ

quan hệ có đạt chuẩn 2 hay không cho dù lược đồ quan hệ có nhiều thuộc tính hoặc

phụ thuộc hàm phức tạp. Tuy nhiên việc thực hiện theo đúng thuật toán trên thường

mất nhiều thời gian nên người ta thường hay xuất phát từ định nghĩa của dạng

chuẩn 2 và các hệ quả để nhận diện lược đồ quan hệ có đạt chuẩn 2 hay không dựa

trên kinh nghiệm. Nếu lược đồ vi phạm một dấu hiệu nào đó được chỉ ra trong định

nghĩa thì ta khẳng định ngay nó không đạt chuẩn 2 và ngược lại.

Ví dụ 3: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = {ABC, BD,

BCA}. Hỏi lược đồ quan hệ R có thuộc chuẩn 2 không?

Giải:

- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ACD, TN = U\R= B,

TG = LR = AC và có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa

B BD

A AB ABCD(U) AB AB

C BC ABCD(U) BC BC

AC ABC ABCD(U) ABC

79

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ta có hai khóa là AB và BC, thuộc tính không khóa là D. Nhận thấy phụ thuộc hàm

BD có thuộc tính không khóa phụ thuộc vào một phần của khóa (B AB) nên vi

phạm chuẩn 2. Vậy lược đồ quan hệ trên không là chuẩn 2.

Ví dụ 4: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = {BD, AC,

CABD}. Hỏi lược đồ quan hệ R có thuộc chuẩn 2 không?

Giải:

- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ABCD, TN = U\R=

, TG = LR = ABC và có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa

BD

A A ABCD(U) A A

B B BD

C C ABCD(U) C C

AB AB ABCD(U) AB

AC AC ABCD(U) AC

BC BC ABCD(U) BC

ABC ABC ABCD(U) ABC

Ta có hai khóa là A và C, tất cả các khóa của lược đồ quan hệ đều có một thuộc

tính nên theo hệ quả 2, lược đồ quan hệ trên đạt chuẩn 2.

4.4.3. Dạng chuẩn 3

- Khái niệm 1: Phụ thuộc bắc cầu

Cho lược đồ quan hệ R(U), X là một tập con các thuộc tính X U, A là một

thuộc tính thuộc U, A được gọi là phụ thuộc bắc cầu vào X trên R nếu tồn tại một

tập con Y của R sao cho XY, YA nhưng Y/X (không xác định hàm) với

AXY.

- Khái niệm 2:

Một lược đồ quan hệ R được gọi là ở dạng chuẩn 3NF (Third Normal Form)

80

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

nếu nó là chuẩn 2NF và mọi thuộc tính không khóa đều không phụ thuộc hàm bắc

cầu vào khóa chính (hay mọi thuộc tính đều phụ thuộc trực tiếp vào mọi khóa).

- Khái niệm 3:

Một lược đồ quan hệ R(U) được gọi là ở dạng chuẩn 3 nếu với mọi phụ thuộc

hàm XA F+ (AF) ta đều có:

Hoặc X là siêu khóa

Hoặc A là thuộc tính khóa

Hệ quả:

1. Nếu một lược đồ quan hệ đạt chuẩn 3 thì đương nhiên đạt chuẩn 2.

2. Nếu một lược đồ quan hệ không có thuộc tính không khóa thì đạt chuẩn 3.

Ví dụ 1: Quan hệ R1

Mãsv Họtên Mãlớp Tênlớp

S1 Tiến L1 MT01

S2 Trúc L1 MT01

S3 Hiền L2 MT02

Lược đồ quan hệ R1 không ở 3NF vì thuộc tính không khóa Tênlớp phụ thuộc

bắc cầu vào khóa Mãsv.

Mãsv Mãlớp Mãlớp Tênlớp

Mãlớp -/ Mãsv Tênlớp {Mãsv, Mãlớp}

Ví dụ 2: Quan hệ R1 có thể tách thành hai quan hệ khác R11 và R12 như sau:

81

R11 R12Khóa của R11: Mãlớp Khóa của R12: Mãsv

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Mãlớp Tênlớp

L1 MT01

L2 MT02

Lược đồ quan hệ R11 và R12 đều ở 3NF vì các thuộc tính không khóa đều

không phụ thuộc bắc cầu vào khóa.

* Thuật toán kiểm tra một lược đồ quan hệ có thỏa mãn chuẩn 3 hay không

dựa trên khái niệm 3:

Vào: lược đồ quan hệ R(U) và tập phụ thuộc hàm F

Ra: Khẳng định R(U) có đạt chuẩn 3 hay không.

Bước 1: Tìm tất cả các khóa của lược đồ quan hệ R(U).

Bước 2: Từ tập phụ thuộc hàm F, tạo ra tập phụ thuộc hàm F’ tương đương với F

và có vế phải chỉ có một thuộc tính (nhờ sử dụng luật phân rã).

Bước 3: Nếu mọi phụ thuộc hàm XA F’ với AX đều có X là siêu khóa hoặc A

là thuộc tính khóa thì lược đồ quan hệ đạt chuẩn 3. Ngược lại thì lược đồ quan hệ

không đạt chuẩn 3.

Ví dụ 3: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F = { ABC,

DB, CABD}. Hỏi lược đồ quan hệ R có thuộc chuẩn 3 không?

Giải:

- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABCD, R = ABCD, TN = U\R=

, TG = LR = ABCD và có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa BD

A A A

82

Mãsv Họtên MãlớpS1 Tiến L1S2 Trúc L1S3 Hiền L2

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

B B BD

C C ABCD(U) C C

D D BD

AB AB ABCD(U) AB AB

AC AC ABCD(U) AC

AD AD ABCD(U) AD AD

BC BC ABCD(U) BC

BD BD BD

CD CD ABCD(U) CD

ABC ABC ABCD(U) ABC

ABD ABD ABCD(U) ABD

BCD BCD ABCD(U) BCD

ABCD ABCD ABCD(U) ABCD

Ta tìm được tất cả 3 khóa là K1= C, K2 = AB, K3 = AD. Các thuộc tính khóa là A,

B, C, D.

Xây dựng tập phụ thuộc hàm tương đương F’ có vế phải một thuộc tính nhờ luật

phân rã: F’ = { ABC, DB, CA, CB, CD}

Duyệt các phụ thuộc hàm trong F’, ta thấy tất cả các phụ thuộc hàm đều có vế phải

là thuộc tính khóa nên lược đồ quan hệ đạt chuẩn 3.

Ví dụ 4: Cho lược đồ quan hệ R(ABCD) và tập phụ thuộc hàm F= {BD, AC,

CABD}. Hỏi lược đồ quan hệ trên có đạt chuẩn 3 không?

Giải:

- Tìm tất cả các khóa của R, ta có U = ABCD, L = ABC, R = ABCD, TN = U\R=

, TG = LR = ABC và có bảng sau:

Xi TN Xi (TN Xi)+ Siêu khóa Khóa BD

83

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

A A ABCD(U) A A

B B BD

C C ABCD(U) C C

AB AB ABCD(U) AB

AC AC ABCD(U) AC

BC BC ABCD(U) BC

ABC ABC ABCD(U) ABC

Ta tìm được tất cả 2 khóa là K1= A, K2 = C. Các thuộc tính khóa là A, C.

Xây dựng tập phụ thuộc hàm tương đương F’ có vế phải một thuộc tính nhờ luật

phân rã: F’ = { BD, AC, CA, CB, CD}

Duyệt các phụ thuộc hàm trong F’, ta thấy phụ thuộc hàm BD có vế trái không

phải là siêu khóa và vế phải không phải là thuộc tính khóa nên lược đồ quan hệ

không đạt chuẩn 3.

4.4.4. Dạng chuẩn BCNF

Một lược đồ quan hệ R được gọi là ở dạng chuẩn Boyce-Codd (BCNF) nếu

nó là ở dạng chuẩn 3NF và không có các thuộc tính khóa phụ thuộc hàm vào thuộc

tính không khóa.

Hoặc:

Lược đồ quan hệ R ở dạng chuẩn BCNF nếu mọi phụ thuộc hàm XAF+

(AX) ta đều có X là siêu khóa.

Mỗi lược đồ quan hệ ở dạng BCNF thì sẽ là lược đồ quan hệ ở dạng 3NF.

Nhưng lược đồ quan hệ ở dạng 3NF có thể không là lược đồ quan hệ ở dạng BCNF.

Ví dụ 1: Cho lược đồ quan hệ Q(CSZ) và tập phụ thuộc hàm F = {CSZ, ZC};

K={CS,SZ}, có phụ thuộc hàm ZC và Z không là siêu khóa nên lược đồ quan hệ

Q không ở dạng BCNF

84

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Ví dụ 2: Xác định dạng chuẩn của lược đồ quan hệ sau Q(ACDEIB) có tập phụ

thuộc hàm F={ACD→EBI; CE→AD}

Dễ thấy Q có hai khoá là: ACD và CE. Các phụ thuộc hàm của F đều có vế

trái là siêu khoá, nên Q đạt dạng chuẩn BCNF.

Ví dụ 3: Cho lược đồ R (A1,A2,A3,A4,A5) Với các phụ thuộc hàm:

A1,A2 → A3,A4,A5

A4 → A2

Quan hệ này vi phạm dạng chuẩn BCNF bởi vì có thuộc tính khóa (A2) phụ thuộc

hàm vào thuộc tính không khóa (A4).

* Thuật toán kiểm tra một lược đồ quan hệ có thỏa mãn chuẩn BCNF hay

không:

Vào: Lược đồ quan hệ R(U) và tập phụ thuộc hàm.

Ra: Khẳng định R(U) có đạt chuẩn BCNF hay không.

Bước 1: Tìm tất cả các khóa của lược đồ quan hệ.

Bước 2: Từ tập phụ thuộc hàm F, tạo ra tập phụ thuộc hàm F’ tương đương với F

và có vế phải chỉ có một thuộc tính.

Bước 3: Nếu mọi phụ thuộc hàm XA F’ với A X đều có X là siêu khóa thì

lược đồ quan hệ đạt chuẩn BCNF. Ngược lại thì lược đồ quan hệ không đạt chuẩn

BCNF.

4.4.5. Chuẩn hóa lược đồ quan hệ

Xét ví dụ sau đây về một quan hệ trên lược đồ quan hệ:KetquaHP(MaSV, Ho va ten, MaHP, TenHP, Diem)

MaSV Ho va ten MaHP TenHP Diem

CN001 Nguyễn Văn An HP01 Toán rời rạc 6,5

CN002 Nguyễn Văn Anh HP02 Cơ sở dữ liệu 6,5

CN003 Nguyễn Văn Bình HP01 Toán rời rạc 6,0

CN004 Trần Ngọc Bùi HP03 Tin học căn bản 7,0

CN001 Nguyễn Văn An HP02 Cơ sở dữ liệu 7,5

85

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CN003 Nguyễn Văn Bình HP02 Cơ sở dữ liệu 7,0

Trong ví dụ trên, ta thấy có sự dư thừa dữ liệu: Cùng một sinh viên nhưng không

chỉ có mã sinh viên mà họ tên sinh viên cũng bị lặp đi lặp lại nhiều lần ở các vị trí

khác nhau. Tương tự, cùng một học phần thì không chỉ có mã học phần mà tên học

phần cũng bị lặp lại ở những vị trí khác nhau.

Do đó dẫn đến sự khó khăn khi cập nhật dữ liệu, cụ thể là:

- Thêm: Ta không thể thêm tên một học phần mới vào quan hệ nếu học

phần đó chưa được sinh viên nào đăng ký. Tương tự, ta cũng không thể

thêm thông tin về một sinh viên mới nếu sinh viên đó chưa đăng ký một

học phần nào.

- Xóa: Nếu ta xóa thông tin về học phần Tin học căn bản thì cũng sẽ mất

luôn thông tin của sinh viên Trần Ngọc Bùi có mã sinh viên là CN004 vì

trong bảng dữ liệu chỉ có duy nhất một bản ghi có chứa thông tin về sinh

viên này.

- Sửa: Giả sử có 1000 sinh viên đăng ký môn Tin học căn bản, khi đó sẽ có

1000 bản ghi có liên quan đến Tin học căn bản. Nếu ta muốn đổi tên môn

này thành Tin học Văn phòng thì ta sẽ phải cập nhật tên môn ở 1000 vị trí

tương ứng, điều này gây mất nhiều thời gian và dê xảy ra sai sót.

Những điều trên dẫn đến không nhất quán dữ liệu.

Chuẩn hóa dữ liệu là một quá trình thuận nghịch từng bước để thay thế tập hợp

các quan hệ cho trước thành các quan hệ có cấu trúc đơn giản hơn và chuẩn hơn.

Chuẩn hóa dữ liệu nhằm để cải tiến một thiết kế CSDL thỏa mãn các ràng

buộc toàn vẹn và tránh dữ liệu bị lặp lại không cần thiết.

Mục đích của chuẩn hóa dữ liệu

Loại bỏ các bất thường (anomaly) của một quan hệ để có được các quan hệ

có cấu trúc tốt hơn, nhỏ hơn.

86

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Quan hệ có cấu trúc tốt (well-structured relation) là quan hệ :

Có sự dư thừa dữ liệu là tối thiểu.

Cho phép người sử dụng thêm vào, cập nhật và xóa bỏ dữ liệu

mà không gây ra sự mâu thuẫn dữ liệu.

4.5.1.Tách từ 1NF về 2NF, 3NF, BCNF

a. Đưa quan hệ về dạng chuẩn 1NF

Bước 1: Bỏ nhóm lặp lại ra khỏi quan hệ, chuyển nhóm đó thành một quan hệ mới.

Bước 2: Cộng thêm vào khóa của nó khóa của quan hệ ban đầu để tạo ra khóa phức

hợp.

Ví dụ:

Cho lược đồ quan hệ:

R(SoHD, Ngayban, SoKH, TenKH, SoSP, TenSP, Soluong)

Ta thấy nhóm (SoSP, TenSP, Soluong) là nhóm lặp lại, ta có thể tách R thành hai

lược đồ quan hệ R1 , R2 như sau:

R1(SoHD, Ngayban, SoKH, TenKH, SoSP);

R2(SoHD, SoSP, TenSP, Soluong);

b. Đưa quan hệ về dạng chuẩn 2NF

Bước 1: Nhóm vào một quan hệ các thuộc tính phụ thuộc hoàn toàn vào khóa và giữ

lại khóa của quan hệ đó.

Bước 2: Nhóm vào một quan hệ khác các thuộc tính phụ thuộc vào một phần của

khóa, lấy phần đó làm khóa chính cho quan hệ.

Ví dụ:

Trong lược đồ quan hệ R2(SoHD, SoSP, TenSP, Soluong) có phụ thuộc hàm

SoSPTenSP, trong đó SoSP là một phần của khóa do đó ta tách R2 thành hai quan

hệ R3, R4 như sau: R3(SoHD, SoSP, Soluong);

R4(SoSP, TenSP);

c. Đưa quan hệ về dạng chuẩn 3NF

87

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Bước1: Tách các nhóm thuộc tính phụ thuộc hàm vào một (hay một số) thuộc tính

ngoài khóa.

Bước 2: Nhóm còn lại tạo thành một quan hệ với khóa như cũ.

Bước 3: Mỗi nhóm tách ra (gồm các thuộc tính cùng phụ thuộc vào một (hay một

số) thuộc tính ngoài khóa, tăng thêm (các) thuộc tính mà chúng phụ thuộc, tạo thành

một quan hệ với khóa là (các) thuộc tính tăng thêm này.

Ví dụ:

Trong quan hệ R1(SoHD, Ngayban, SoKH, TenKH, SoSP) có các phụ thuộc

hàm bắc cầu: SoHDSoKHTenKH thì ta có thể tách R1 thành hai quan hệ khác

như sau: R5(SoHD, Ngayban, SoKH, SoSP);

R6(SoKH, TenKH );

d. Đưa quan hệ về dạng chuẩn BCNF

Nếu một lược đồ quan hệ không thoả mãn điều kiện BCNF, ta có thể chuẩn

hoá nó để có được các lược đồ BCNF như: Loại bỏ các thuộc tính khóa phụ thuộc

hàm vào thuộc tính không khóa ra khỏi quan hệ và tách chúng thành một quan hệ

riêng có khoá chính là thuộc tính không khóa gây ra phụ thuộc

Áp dụng phương pháp chuẩn hóa ở trên, lược đồ được tách ra như sau: R1( A4, A2)

R2(A1, A4, A3, A5)

Ví dụ: Cho lược đồ quan hệ R = {A,B,C,D,E,F,G,H,I,J} có khóa chính là A,B Với tập các phụ thuộc hàm : A,B → C,D,E,F,G,H,I,J A→ E,F,G,H,I,J F → I, J D →B Do có có phụ thuộc hàm A→ E,F,G,H,I,J mà A là một bộ phận của khóa chính

nên quan hệ R là vi phạm 2NF. Ta tách R thành R1(A,E,F,G,H,I,J) và R2(A,B,C,D).

Trong R1, do có phụ thuộc hàm F→ I, J, nên ta có I,J phụ thuộc bắc cầu vào khóa

88

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

chính, R1 là quan hệ vi phạm 3NF. Trong R2 ta có phụ thuộc hàm D → B trong đó B

là một thuộc tính khóa, R2 vi phạm BCNF. Tách R1 và R2 ta có:

R11( F,I,J) , R12( A,E,F,G,H), R21(D,B), R22( A,D,C)

4.5.2.Tách từ 2NF về 3NF, BCNF

a. Đưa quan hệ từ 2NF về dạng chuẩn 3NF

Nếu một lược đồ quan hệ không thoả mãn điều kiện 3NF, ta có thể chuẩn hoá

nó để có được các lược đồ 3NF như sau: Loại bỏ các thuộc tính phụ thuộc bắc cầu

ra khỏi quan hệ và tách chúng thành một quan hệ riêng có khoá chính là thuộc tính

bắc cầu. Các thuộc tính còn lại lập thành một quan hệ có khóa chính là quan hệ ban

đầu.

Ví dụ: Xét lược đồ quan hệ

NHÂNVIÊN_ĐƠNVỊ(HọtênNV, MãsốNV, Ngàysinh, Địachỉ, MãsốĐV, TênĐV,

MãsốNQL)

Với các phụ thuộc hàm:

MãsốNV→ HọtênNV, Ngày sinh, Địachỉ, MãsốĐV, TênĐV, MãsốNQL

MãsốDV→ TênĐV, Mã sốNQL

Các thuộc tính TênĐV, MãsốNQL phụ thuộc bắc cầu vào khoá chính, lược đồ quan

hệ không thoả mãn điều kiện 3NF.

Áp dụng phương pháp chuẩn hoá ở trên, lược đồ được tách ra như sau:

NV_DV1(HọtênNV, MãsốNV, Ngàysinh, Địachỉ, MãsốĐV)

NV_DV2(MãsốĐV, TênĐV, MãsốNQL)

b. Đưa quan hệ từ 2NF về dạng chuẩn BCNF

CÂU HỎI VÀ BÀI TẬP

1/ Các nhận xét sau đúng (Đ) hay sai (S)

89

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

a. Cho Q(ABC) và tập phụ thuộc hàm F={AB→C; A→B} thì Q đạt dạng chuẩn 1.

b. Một lược đồ quan hệ Q luôn tìm được ít nhất một khoá.

c. Nếu XY → Z thì X → Z và Y → Z.

d. Các thuộc tính không tham gia vào vế phải của bất kỳ phụ thuộc hàm nào thì phải

là thuộc tính tham gia vào khoá.

e. Nếu X → Y và YZ → W thì XZ → W

f. Nếu Q đạt dạng chuẩn một và khoá của Q chỉ có một thuộc tính thì Q đạt dạng

chuẩn ba.

g. Một tập phụ thuộc hàm F có thể có nhiều tập phủ tối thiểu.

h. Nếu X → Y và U → V thì XU → YV.

2/

a. Cho Q(ABCD) và F = {AB → C, D → B, C → ABD}.

- Hãy kiểm tra xem AB → D có thuộc F+ hay không ?

- Hãy tìm tất cả các khoá của lược đồ quan hệ Q. Xác định dạng chuẩn của Q.

b. Cho Q(A,B,C,D) và F={C→A, A→C, AD→B, BC→D, AB→D, CD→B}. Hãy

tìm phủ tối thiểu của F.

3. Cho biết dạng chuẩn của các lược đồ quan hệ sau:

a. Q(ABCDEG); F={A → BC, C → DE, E → G}

b. Q(ABCDEGH); F={C → AB, D → E, B → G}

c. Q(ABCDEGH); F={A → BC. D → E, H → G}

d. Q(ABCDEG); F={AB → C; C → B; ABD → E;G → A}

e. Q(ABCDEGHI); F={AC → B; BI → ACD; ABC → D; H → I; ACE → BCG,

CG → AE}

CHƯƠNG 5: BẢO MẬT VÀ TOÀN VẸN DỮ LIỆU

5.1. Sự cần thiết phải bảo vệ an toàn cơ sở dữ liệu

Cơ sở dữ liệu của một cơ quan, một xí nghiệp, của một ngành... thường được

cài đặt tập trung hay phân tán trên các máy chủ trên mạng, là tài nguyên thông tin

90

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

chung cho nhiều người cùng sử dụng. Vì vậy các hệ cơ sở dữ liệu cần phải có cơ

chế kiểm soát, quản lý và truy xuất khai thác thông tin sao cho dữ liệu phải được an

toàn và toàn vẹn. Thuật ngữ “an toàn” dữ liệu có nghĩa là các hệ cơ sở dữ liệu cần

phải được bảo vệ chống truy nhập nhằm sửa đổi hay phá hoại một cách chủ định

hay không chủ định. Như vậy các hệ thống cơ sở dữ liệu cần thiết phải quản trị, bảo

vệ tập trung, nhằm bảo đảm được tính toàn vẹn và an toàn dữ liệu. Toàn vẹn dữ liệu

khác với an toàn dữ liệu, tuy rằng chúng có mối quan hệ mật thiết với nhau. Sự cần

thiết phải bảo vệ an toàn cơ sở dữ liệu nhằm:

- Chống lại sự truy nhập, sửa đổi hay phá hủy bất hợp pháp.

- Hạn chế tối đa sai sót của người dùng.

- Đảm bảo thông tin không bị mất hoặc thay đổi ngoài ý muốn.

- Không tiết lộ nội dung dữ liệu cũng như chương trình xử lý.

5.2. Các nguy cơ mất an toàn dữ liệu

Có rất nhiều mối nguy hiểm đe doạ đến các hệ thống dữ liệu:

- Cơ sở dữ liệu được cài đặt tập trung hay phân tán trên các vị trí địa lý khác

nhau, được khai thác từ các đầu cuối khác nhau theo chế độ Client/Server.

- Nhiều người sử dụng truy nhập và khai thác trên cùng một cơ sở dữ liệu.

- Rất nhiều loại dữ liệu được tải về giữ trên các máy cục bộ để khai thác.

- Truy xuất vào các hệ cơ sở dữ liệu bằng nhiều ngôn ngữ thao tác dữ liệu khác

nhau, bằng nhiều hệ ứng dụng khác nhau trên cùng một nội dung thông tin.

Vì vậy có thể xẩy ra:

- Những sai sót ngoài ý muốn, khi thực hiện thêm, sửa, xoá hay do lỗi khi lập

trình.

- Truy nhập trái phép với mục đích xấu: sửa, xoá thông tin hay đánh cắp thông

tin...

- Sự cố kỹ thuật như lỗi do các thiết bị, lỗi lập trình...

5.3. Các kiểu tấn công và các giải pháp bảo mật dữ liệu

a. Các kiểu tấn công

91

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

Để bảo vệ cơ sở dữ liệu, phải thực hiện các biện pháp đảm bảo an toàn ở một vài

mức bảo vệ như sau:

• Mức độ an toàn hệ thống cơ sở dữ liệu: Tùy thuộc vào yêu cầu của người sử dụng

mà người quản trị cơ sở dữ liệu cấp phép truy nhập một phần vào cơ sở dữ liệu.

Những người sử dụng khác có thể được phép thực hiện các câu hỏi truy vấn, nhưng

có thể bị ngăn cấm ý định sửa đổi dữ liệu.

• Mức độ an toàn hệ thống điều hành: .Mức hệ thống kiểm soát toàn bộ mức điều

hành hệ thống. Vấn đề an toàn mức hệ thống điều hành sẽ được đảm bảo bởi mức

độ an toàn hệ thông cơ sở dữ liệu. An toàn trong hệ điều hành đã được tiến hành tại

nhiều cấp độ từ sắp xếp các mật mã truy cập vào hệ thống cho tới sự cô lập các quá

trình đang cùng xử lý trong hệ thống. Tệp hệ thống cũng cung cấp một số cấp độ

bảo vệ. Sự tham khảo những chú ý trong thư mục là bao quát của những chủ đề này

trong các bài học về hệ thống điều hành.

• An toàn mức độ mạng. Hầu hết các hệ thống cơ sở dữ liệu đều cho phép truy cập

từ xa thông qua các thiết bị đầu cuối. An toàn dữ liệu mức độ mạng là chống ăn cắp

thông tin, sao chép thông tin và sửa đổi nội dung thông tin trên đường truyền. Vấn

đề an toàn cấp mức mạng đã đạt được nhiều kết quả, ứng dụng phổ biến trên mạng

Internet. Danh sách các chú ý trong thư mục đã bao quát nền tảng nguyên lý của

vấn đề an toàn mạng.

• Nhận diện người sử dụng: Từ định nghĩa an toàn dữ liệu có thể suy ra rằng, hệ

quản trị cơ sở dữ liệu DBMS không cho phép người sử dụng được thực hiện một

thao tác nào nếu không được phép của người quản trị CSDL. Người quản trị CSDL

phải:

- Xác định cho hệ thống những thao tác mà người sử dụng được phép thực

hiện.

- Cung cấp một phương tiện cho người sử dụng để hệ thống nhận biết họ.

Nói chung người sử đụng đều được trao những quyền khác nhau. Những quyền này

có thể bảo đảm quyền đọc một số phần của cơ sở dữ liệu, quyền chèn thêm, xóa hay

92

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

sửa đổi dữ liệu. Hình thức thông dụng nhất để nhận ra người sử dụng là mật khẩu,

và chỉ có hệ thống và người sử dụng biết. Mật khẩu cũng được hệ thống bào vệ như

bảo vệ dữ liệu.

• Bảo vệ mức vật lý: Một mô hình bảo vệ đáng tin cậy cũng có khả năng bị tấn công

vào cơ sở dữ liệu, từ việc phá được mật khẩu đến việc đánh cắp các thiết bi. Có thể

chống đánh cắp khá hiệu quả bằng cách mã hóa, che dấu dữ liệu. Một hệ thống có

bảo mật cao cần phải có những phương thức nhận diện khác tốt hơn mật khẩu, như

nhận diện từng người sử dụng qua một nhân viên bảo vệ, hoặc kết với các quy định

về hành chính...

• Kiểm tra truy nhập: Với mỗi người sử dụng hệ thống sẽ quản lý một hồ sơ được

phát sinh từ việc các chi tiết về thủ tục xuất trình, xác minh và các chi tiết được

quyền thao tác mà người quản trị cơ sở dữ liệu cấp cho người sử dụng. Hệ thống sẽ

kiểm tra tính pháp lý của mỗi một thao tác của người sử dụng. Ví dụ yêu cầu được

đọc lời đánh giá hàng năm của mỗi một nhân viên, chỉ có thể được phép nếu cơ sở

dữ liệu có chứa thông tin quy định rằng người yêu cầu phải là Giám đốc, trưởng,

phó phòng tổ chức, chánh văn phòng. Tất cả các đối tượng khác không có trong cơ

sở dữ liệu không được phép truy xuất. DBMS sẽ kiểm tra mỗi một thao tác của

người sử dụng xem có vi phạm các ràng buộc an toàn hay không, nếu có sẽ phải

huỷ bỏ. Một ràng buộc truy nhập nói chung có liên quan đến một bộ phận của cơ sở

dữ liệu. Do đó tồn tại một đặc quyền thích hợp, giả sử là chương trình sẽ kiểm tra

mỗi một yêu cầu của người sử dụng. Chương trình sẽ sắp xếp quyền truy nhập theo

mức độ phức tạp tăng dần sao cho đạt tới quyết định cuối cùng nhanh nhất có thể.

An ninh ở tất cả các cấp độ phải được duy trì nếu an ninh cơ sở dữ liệu được bảo

đảm. Một sự yếu kém ở vấn đề an toàn cấp thấp (cấp độ vật lý hay cấp độ con

người) cho phép sự phá vỡ các biện pháp an toàn nghiêm ngặt ở cấp độ cao (cấp độ

hệ thống cơ sở dữ liệu).

b. Các giải pháp bảo mật

93

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

* Khung nhìn – một cơ chế bảo vệ

Khung nhìn, bằng cách định nghĩa lại cơ sở dử liệu khái niệm, không chỉ tạo

điều kiện thuận lợi khi lập trình trình ứng dụng và làm tăng tính độc lập dữ liệu

logic, mà còn được sử dụng như một cơ chế bảo vệ. Có hai loại khung nhìn. Loại

khung nhìn chỉ đọc, không cho phép sửa đổi. Loại khung này gọi là khung chỉ đọc.

Trong nhiều trường hợp, người quản trị CSDL cho phép người sử dụng này được

đọc dữ liệu, nhưng người khác vừa được đọc, vừa được quyền sửa đồi, bổ

sung...Loại khung nhìn thứ hai cho phép đọc và ghi lên các thành phần của khung

nhìn. và mọi sửa đồi cho khung nhìn có thể được lưu trong lược đồ khái niệm. SQL

đề xuất cho phép đọc/ghi các khung nhìn trong một phạm vi nhất định. Với phương

pháp này thiết kế các chương trình ứng dụng linh hoạt hơn loại khung chỉ đọc.

Tuy nhiên, khi thao tác cập nhật trên các khung nhìn đọc/ghi thường gây tác động

đến một số thành phần của cơ sở dữ liệu không nằm trong khung nhìn. Ví dụ trong

một hệ CSDL phân cấp, trong khung nhìn chỉ có kiểu bản ghi gốc, không có bản ghi

phụ thuộc. Nếu xóa xuất hiện của kiểu bản ghi nay, kéo theo phải xóa các xuất hiện

bản ghi phị thuộc. Đây là một hành động không hợp lệ, vi phạm nguyên tắc không

cho người sử dụng được phép xóa một đối tượng mà họ không thấy được trong

khung nhìn. Cũng tương tự như trong mô hình mạng, nếu xóa một bản ghi khi

không biết các bản ghi khác nằm ngoài khung nhìn bhưng có quan hệ với nó. Và

nhiều trường hợp khác tương tự. Vì vậy, tất cả các hệ quản trị cơ sở dữ liệu. DBMS

giới hạn quyền cập nhật các khung nhìn trong một số trường hợp cụ thể.

Ví dụ về hoạt động của ngân hàng, một thư ký cần biết tên của tất cả các khách

hàng có các khoản vay tại nhiều chi nhánh. Người thư ký này không được phép xem

những thông tin về khoản vay đặc biệt mà khách hàng có thể có. Hành động của cô

thư ký bị từ chối khi truy nhập trực tiếp tới quan hệ cho vay, nhưng có thể truy nhập

bằng khung nhìn cust-loan bao gồm các thông tin như: tên của khách hàng và chi

nhánh nơi mà khách đó có khoản vay. Khung nhìn này có thể được định nghĩa trong

SQL như sau:

94

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

CREATE VIEW cust-loan AS

(SELECT branch-name, customer-name

FROM BORROWER, LOAN

WHERE BORROWER.loan-number = LOAN.loan-number)

Giả sử rằng cô thư ký đưa ra truy vấn SQL như sau:

SELECT *

FROM cust-loan

Như vậy người thư ký được phép xem kết quả của truy vấn trên, tuy nhiên quá trình

xử lý truy vấn này sẽ được thực hiện trên các quan hệ BORROWER and LOAN. Vì

vậy hệ thống phải kiểm tra các quyền hạn trên truy vấn của thư ký trước khi bắt đầu

quá trình xử lý truy vấn. Việc tạo một khung nhìn không phụ thuộc vào các quan hệ

nguồn. Một người sử dụng tạo ra một khung nhìn không được nhận tất cả các đặc

quyền trên khung nhìn. Ví dụ, người sử dụng không được quyền cập nhật trên

khung nhìn nếu không có quyền cập nhật vào quan hệ bằng khung nhìn đã được

định nghĩa. Nếu người sử dụng tạo ra một khung nhìn trên những quyền hạn không

được phép, thì hệ thống sẽ phủ nhận yêu cầu tạo khung nhìn. Trong ví dụ khung

nhìn cust-loan ở trên, người tạo khung nhìn phải có quyền đọc trên cả hai quan hệ

BORROWER and LOAN.

* Cấp phép các quyền truy nhập

Một người sử dụng được cấp một vài quyền truy nhập cơ sở dữ liệu và các

quyền hạn này có thể tham chiếu đến quyền truy nhập của người sử dụng khác. Tuy

nhiên người quản trị cơ sở dữ liệu cũng cần phải đặc biệt lưu ý khi các quyền này

lưu thông qua giữa nhiều người sử dụng, sao cho các quyền này có thể được thu hồi

tại một thời điểm tùy ý.

* Kiểm tra dấu vết

Nhiều ứng dụng về bảo mật cơ sở dữ liệu cần duy trì một cơ chế kiểm tra dấu

vết. Một sự kiểm tra dấu vết là một bản lưu tất cả các thay đổi khi thực hiện các

95

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

phép lưu trữ như chèn thêm, xoá và sửa đổi thông tin trong cơ sở dữ liệu cùng với

những thông tin phát sinh thêm trong quá trình thực hiện. Việc kiểm tra dấu vết sẽ

giúp cho việc dò tìm được các nguyên nhân nhanh và chính xác. Ví dụ nếu một tài

khoản nào đó được phát hiện không cân đối, người quản trị có thể lần dấu vết của

tất cả các cập nhật đã xảy ra trong tài khoản để tìm thấy sự cập nhật không đúng (có

thể là gian lận) của những người đã thực hiện việc cập nhật. Tạo ra một sự kiểm tra

dấu vết bằng cách định nghĩa các chuỗi phản ứng thích hợp trên các cập nhật quan

hệ (sử dụng hệ thống các giá trị đã định nghĩa để nhận biết tên người sử dụng và lần

truy nhập). Tuy nhiên nhiều hệ thống cơ sở dữ liệu cung cấp phương pháp tạo sự

kiểm tra dấu vết thuận tiện và dễ sử dụng.

5.4. Tính toàn vẹn

Tính toàn vẹn dữ liệu theo nghĩa dữ liệu không mâu thuẫn, dị thường thông

tin trong các hệ thống khi thực hiện các phép lưu trữ, truy vấn, tìm kiếm.

Vấn đề toàn vẹn dữ liệu là vấn đề đảm bảo dữ liệu trong các hệ thống cơ sở

dữ liệu được chính xác tại mọi thời điểm trong chừng mực có thể. Có một giới hạn

về phạm vi mà mục tiêu này có thể thực hiện được. Hệ thống cơ sở dữ liệu không

thể kiểm tra hết tính đúng đắn của mỗi một giá trị được đưa vào CSDL. Chẳng hạn,

không thể phát hiện giá trị của thuộc tính số điện thoại mới được lắp đặt 8515678,

giá trị đúng phải là 8515673 (tất nhiên số điện thoại này trước đó chưa tồn tại trong

các quan hệ của cơ sở dữ liệu). Tuy nhiên, nếu nhập vào giá trị 0515673, hệ thống

sẽ phát hiện sai và không chấp nhận giá trị này.

Bảo đảm tính toàn vẹn của dữ liệu là một trong các biện pháp bảo vệ dữ liệu,

chống lại sự sửa đổi hay phá hoại không chủ định. Có thể có nhiều nguyên nhân

khác nhau dẫn đến không được đảm bảo tính toàn vẹn dữ liệu. Có thể trục trặc kỹ

thuật, như bộ nhớ bị chập chờn hư hỏng, đường truyền bị lỗi, thiết bị ra/vào không

ổn định.. hoặc người sử dụng đầu cuối thao tác sai sót, không đúng quy trình ...hoặc

chương trình ứng dụng bị lỗi.. Không đảm bảo tính toàn vẹn dữ liệu có thể xẩy ra

trong hệ thống coi là ổn định nhất và đảm bảo nhất...Vì vậy điều quan trọng là phải

96

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

có khả năng phát hiện những tình huống khi chúng xuất hiện và có khả năng khôi

phục từ những tình huống đó.

a. Các ràng buộc toàn vẹn

Giữa các thực thể dữ liệu tồn tại các mối quan hệ, ràng buộc phụ thuộc lẫn

nhau. Có 2 loại ràng buộc chủ yếu.

Loại ràng buộc có tính cấu trúc, liên quan đến các đẳng thức giữa các giá trị

trong CSDL. Mô tả tính chất của các thuộc tính khi tạo lập CSDLnhư tên, kiểu, độ

dài của thuộc tính. Chẳng hạn thuộc tính “Số điện thoại” là kiểu chuỗi có độ dài

đúng bằng 7 ký tự. Hệ thống sẽ không chấp nhận, nếu nhập vào CSDL một giá trị

kiểu số hoặc kiểu xâu nhưng chưa đủ hoặc vượt quá 7 ký tự. Ràng buộc biểu diễn

giá trị của các thuộc tính bằng đẳng thức toán học, các toán hạng là giá trị của các

thuộc tính khác. Điển hình là những ràng buộc hạn chế một trường chỉ nhận được

một số giá trị trong một phạm vi nào đó hoặc diễn tả một mối liên hệ số học giữa

các trường khác nhau.

Ví dụ, nếu các bản ghi của một hợp đồng thuê bao điện thoại chứa các trường SDT

(số điện thoại), NGK (ngày ký hợp đồng), TLD (tiền lắp đặt). Miền xác định giá trị

của SDT là một chuỗi 7 ký tự số, không chứa ký tự đặc biệt, ký tự đầu khác ký tự

không. Miền xác định của NLD là thời gian ngày tháng năm ký hợp đồng không

quá 15 ngày kể từ ngày yêu cầu và miền xác định của TLD là một số thập phân

không quá 1.400.000 nghìn đồng. Khi nhập dữ liệu vào CSDL, hệ thống sẽ kiểm tra

tính đúng đắn của các giá trị mà khi tạo lập CSDL đã mô tả, nếu vi phạm sẽ không

được chấp nhận và thông báo lỗi.

Loại ràng buộc toàn vẹn thứ hai là loại ràng buộc logic giữa các thuộc tính, là

các ràng buộc có thể biểu diễn được nếu hệ quản trị cơ sở dữ liệu DBMS cho phép

người sử dụng khai báo một tập các trường hoặc thuộc tính tạo ra khóa cho mẫu tin

hoặc quan hệ. Trong các hệ thống cơ sở dữ liệu quan hệ, biểu diễn mối quan hệ các

thuộc tính là tập các ràng buộc được mô tả bằng khái niệm các phụ thuộc hàm và

phụ thuộc đa trị, hay còn được gọi là các phụ thuộc dữ liệu. Theo định nghĩa, mọi 97

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

khoá của một lược đồ quan hệ đều có tính duy nhất. Không tồn tại 2 bộ có cùng một

giá trị trên các thuộc tính khoá. Giá trị của khoá theo quy định không được nhận giá

trị null hay giá trị không xác định. Hệ quản trị CSDL có trách nhiệm phải từ chối

khi giá trị của khoá nếu vẫn còn chứa các giá trị chưa xác định hoặc đã tồn tại trong

cơ sở dữ liệu thông qua các phép thêm hoặc sửa đổi dữ liệu.

Như vậy các ràng buộc toàn vẹn dữ liệu phải bảo đảm tính độc lập và toàn

vẹn dữ liệu. Dữ liệu lưu trữ trong các hệ thống cơ sở dữ liệu phải phản ánh hiện

thực khách quan trong mọi thời điểm có thể, không dư thừa và mâu thuẫn thông tin.

b. Ngôn ngữ vấn tin - ngôn ngữ ràng buộc toàn vẹn

Thông thường có nhiều loại ràng buộc toàn vẹn có thể mô tả bằng các ngôn

ngữ thao tác dữ liệu DML (Data Manipulation Language). Nói cách khác, có thể sử

dụng ngôn ngữ DML làm ngôn ngữ kiểm tra ràng buộc toàn vẹn. Phần này sẽ xem

xét về mặt lý thuyết khi sử dụng đại số quan hệ làm ngôn ngữ ràng buộc dữ liệu.

Ví dụ 1: Xét cơ sở dữ liệu quản lý cáp, ràng buộc dữ liệu có thể là: các loại cáp lắp

đặt trên tuyến cáp QLCAP, phải là các loại cáp đã có trong quan hệ QLKHO. Nói

cách khác, tất cả các cáp lắp đặt trên tuyến phải có xuất xứ từ kho vật tư của công

ty. Kết quả vấn tin có thể biểu diễn bằng đại số quan hệ như sau:

π MC# (QLCAP) π ⊆ TENC (QLKHO)

Ví dụ 2: Các cuộc đàm thoại có thời gian âm cấm nhập vào cơ sở dữ liệu:

QLCUOC(TB, SDT, SDD, BD, KT) & (KT –BD) < 0.

Điều này có nghĩa là, cuộc đàm thoại của thuê bao (TB) từ điện thoại (SDT) đến

điện thoại (SDD) với thời gian bắt đầu (BD), thời gian kết thúc (KT) và thời gian

cuộc đàm thoại (KT – BD) < 0, khi đó sẽ dẫn đến mâu thuẫn và nhận giá trị là

“False”. Điều này tương đương với khảng định không tồn tại các cuộc đàm thoại có

thời gian âm trong cơ sở dữ liệu QLCUOC.

c. Kiểm tra các ràng buộc toàn vẹn

Trong ví dụ trên, trước khi chèn thêm thông tin về một loại cáp mới vào quan

hệ QLCAP, cần phải kiểm tra xem loại cáp đó đã được xuất kho hay chưa. Tức là

98

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

phải kiểm tra loại cáp thêm vào CSDL QLCAP là một phần tử của π TENC (QLKHO)

hay không. Tương tự, trong Ví dụ 2, trước khi chèn thông tin của một cuộc đàm

thoại mới vào cơ sở dữ liệu QLCUOC, cần phải kiểm tra thời gian của cuộc đàm

thoại này có âm hay không. (Lưu ý, không phải kiểm tra thời gian của các cuộc đàm

thoại đã có trong cơ sở dữ liệu).

5.5. An toàn và quyền truy nhập cơ sở dữ liệu

Dữ liệu lưu trữ trong cơ sở dữ liệu cần phải được bảo vệ để tránh việc truy

nhập trái phép và phá hoại có chủ định hay không chủ định khi thực hiện cập nhật,

sửa đổi hay bổ sung thông tin trong các cơ sở dữ liệu. Cần phải có biện pháp bảo vệ

chống lại việc đưa dữ liệu vào một cách không nhất quán ảnh hưởng nghiêm trọng

đến tính toàn vẹn dữ liệu.

a. Sự vi phạm an toàn cơ sở dữ liệu.

Các dạng truy cập có chủ định bao gồm :

Không cho phép đọc dữ liệu.

Không cho phép sửa đổi dữ liệu.

Không cho phép phá huỷ dữ liệu...

Vấn đề an toàn cơ sở dữ liệu đề cập đến việc bảo vệ chống lại sự truy cập có chủ

định. Việc bảo vệ tuyệt đối các hệ cơ sở dữ liệu khỏi truy nhập là không thể, nhưng

phải có các biện pháp đủ mạnh để ngăn chặn hầu hết truy cập trái phép vào cơ sở dữ

liệu.

b. Những quyền hạn khi sử dụng hệ cơ sở dữ liệu.

Có thể chia quyền hạn truy nhập vào cơ sở dữ liệu như sau:

- Đọc một cách hợp pháp: người sử dụng được phép đọc, nhưng không được sửa

đổi nội dung dữ liệu.

- Chèn một cách hợp pháp: là cho phép người sử dụng được chèn thêm dữ liệu

mới vào cơ sở dữ liệu, nhưng không sửa đổi dữ liệu hiện có.

99

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

- Sửa đổi một cách hợp pháp: cho phép người sử dụng được phép sửa đổi nội

dung dữ liệu, nhưng không được xoá dữ liệu.

- Xoá một cách hợp pháp: cho phép người sử dụng được phép xoá dữ liệu.

- Cho phép việc tạo và xoá các chỉ số.

- Cho phép việc tạo các mối quan hệ mới.

- Sửa đổi cấu trúc: cho phép chèn thêm, sửa đổi hoặc xoá các thuộc tính trong

các quan hệ.

- Bỏ hợp pháp: cho phép xoá các quan hệ.

Một người sử dụng có thể có tất cả các quyền trên, hoặc chỉ có một số quyền hạn

nhất định. Thêm vào đó những dạng của sự cho phép truy cập dữ liệu chúng ta có

thể ban cho người sử dụng được phép sửa đổi cơ cấu cơ sở dữ liệu. Cho phép bỏ và

xoá là khác nhau trong đó xoá hợp pháp là chỉ cho phép xoá bộ dữ liệu. Nếu một

người sử dụng xoá tất cả các bộ của một quan hệ, quan hệ đó sẽ vẫn tồn tại nhưng

quan hệ đó không còn gì. Nếu một quan hệ bị bỏ nó sẽ không còn tồn tại nữa.

Để minh hoạ bản chất của vấn đề, không mất tính tổng quát, các mệnh đề sau chỉ là

một vài ý niệm phạm vi bảo vệ thông tin trong các hệ cơ sở dữ liệu, chỉ ra các mức

truy nhập CSDL và trao quyền cho từng lớp người sử dụng:

1. Người sử dụng được phép truy nhập không điều kiện tới toàn bộ cơ sở dữ liệu,

với mọi phép toán lưu trữ và truy vấn dữ liệu.

2. Người sử dụng không được phép truy nhập tới bất kỳ bộ phận nào của cơ sở dữ

liệu, với mọi phép toán.

3. Người sử dụng có thể đọc đúng một nội dung công việc của họ trong cơ sở dữ

liệu, nhưng không được phép sửa đổi, bổ sung nó.

4. Người sử dụng có thể đọc đúng một nội dung công việc của họ trong cơ sở dữ

liệu, và được phép sửa đổi, bổ sung nó.

5. Người sử dụng có thể đọc và sửa đổi thuộc tính mã nhân viên, họ và tên nhân

viên, đơn vị công tác theo định kỳ vào tuần đầu của mỗi tháng.

100

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

6. Người sử dụng cấm đọc thuộc tính nhận xét hàng năm, các thuộc tính mức

lương và ngày lên lương được đọc và sửa đổi, các thuộc tính khác chỉ được

đọc. Công việc chỉ được thực hiện trong khoảng thời gian từ 9 giờ đến 11 giờ

trong các ngày của tuần cuối tháng.

7. Người sử dụng có quyền sử dụng các phép toán thống kê cho thuộc tính mức

lương để tính mức lương trung bình trong từng đơn vị. Cấm sửa đổi dữ liệu.

5.6. Bảo mật trong SQL

a. Các đặc quyền trong SQL

Các phép toán đặc quyền cơ bản trong SQl bao gồm các phép DELETE,

INSERT, SELECT và UPDATE. Quyền của phép chọn tương ứng với quyền đọc và

quyền tham chiếu. Ngôn ngữ định nghĩa dữ liệu SQL bao gồm những lệnh cấp phát

quyền GRANT và lệnh thu hồi, hủy bỏ các quyền đã cấp phát REVOKE .

* Cấp quyền truy xuất một quan hệ cho người sử dụng hay nhóm người sử dụng:

Dạng cơ bản của câu lệnh này là :

GRANT <tên quyền > ON <tên quan hệ hoặc tên khung nhìn>

TO <tên người/nhóm người được cấp quyền>

tên quyền cho phép cấp một số quyền sử dụng trong một lệnh.

Cấp quyền READ cho nhóm người sử dụng WORLD trên quan hệ R. Người

sử dụng chỉ được quyền bao gồm quyền sử dụng quan hệ R trong các câu vấn

tin, không được phép sửa đổi, bổ sung.

GRANT READ ON R TO GROUP/ WORLD

Cấp quyền quyền ưu tiên WRITE: Chỉ có quyền ghi, sủa đổi, cập nhật. Thông

tin không được hiển thị:

GRANT WRITE ON R TO GROUP /WORLD

Cấp quyền được đọc và ghi ALL: Người sử dụng được quyền ghi và đọc bao

như quyền chèn, xóa và sửa đổi các bộ cũng như các thao tác tạo chỉ mục các

quan hệ hay xóa bỏ chính quan hệ.

101

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

GRANT ALL ON R TO GROUP /WORLD

Người quản trị CSDL có đầy đủ tất cả các quyền. Vì vậy không cần thiết phải

mô tả tường minh.

Cấp quyền SELECT trên quan hệ ACCOUNT cho U1, U2 và U3

GRANT SELECT ON ACCOUNT TO U1, U2, U3.

Quyền UPDATE mô tả hoặc trên tất cả các thuộc tính hoặc trên một số thuộc

tính của quan hệ. Nếu quyền UPDATE trên một số thuộc tính, thì danh sách

các thuộc tính sẽ được mô tả trong dấu ngoặc ngay sau từ khoá UPDATE .

Nếu không mô tả các thuộc tính thì quyền cập nhật của người sử dụng sẽ

được hiểu trên tất cả những thuộc tính của quan hệ.

GRANT UPDATE (AMOUNT) ON LOAN TO U1, U2, U3

GRANT UPDATE ON LOAN TO U1, U2, U3

Quyền INSERT: Khi cấp quyền chèn thêm vào quan hệ phải xác định rõ chèn

giá trị tương ứng trên những thuộc tính nào vàò hệ thống.

Các quyền tham chiếu REFERENCE được cấp cho người sử dụng trên những

thuộc tính cụ thể giống như quyền UPDATE. Cấp quyền tham chiếu cho

người sử dụng U1 trên thuộc tính branch-name đến quan hệ branch.

GRANT REFERENCE (branch-name) ON BRANCH TO U1.

* Quy tắc đặc quyền người sử dụng

CREATE ROLE TELLER

GRANT SELECT ON ACCOUNT TO TELLER

GRANT TELLER TO JOHN

CREATE ROLE MANAGER

GRANT TELLER TO MANAGER

GRANT MANAGER TO MARY

Theo mặc định, một người hoặc một nhóm người sử dụng được cấp một đặc quyền,

khi đó người hay nhóm này không được quyền cấp đặc quyền này tiếp cho người

102

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

hay nhóm người sử dụng khác. Nếu muốn cấp một đặc quyền sử dụng và để cho

phép người nhận tiếp tục vượt qua đặc quyền tới người sử dụng khác, cần thêm

mệnh đề WITH GRANT OPTION tới mệnh lệnh GRANT tương ứng.

Ví dụ, giả người sử dụng U1 có quyền thực hiện phép chọn trên quan hệ

BRANCH và cho phép U1 có quyền cấp đặc quyền này tới người khác, có thể biểu

diễn như sau:

GRANT SELECT ON BRANCH TO U1 WITH GRANT OPTION

* Thu hồi quyền truy nhập:

Để thu hồi một quyền truy nhập, cấu trúc lênh tổng quát như sau:

REVOKE <tên quyền> ON <tên quan hệ/tên khung nhìn>

FROM <tên người/nhóm người dùng>

Thu hồi đặc quyền đã cấp phép cuối cùng cho U1, U2 và U3 .

GRANT SELECT ON ACCOUNT TO U1, U2, U3.

REVOKE SELECT ON BRANCH FROM U1, U2, U3

Lệnh thu hồi một đặc quyền cũng có hiệu lực đối với trường hợp một người

hay một nhóm người sử dụng cấp tiếp cho một hay một nhóm người sử dụng khác.

Trường hợp này được gọi là cascading of the revoke.

REVOKE SELECT ON BRANCH FROM U1, U2, U3 RESTRICT

Nghĩa là, hệ thống sẽ thu hồi quyền SELECT không những của U1, U2, U3, mà còn

thu hồi cho những người hay nhóm người sử dụng được U1, U2, U3 cấp tiếp quyền

SELECT.

REVOKE GRANT OPTION FOR SELECT ON BRANCH FROM U1

REVOKE READ/WRITE/ALL ON R FROM GROUP/WORLD

b. Hạn chế các quyền hạn trong SQL

Các quyền hạn trong SQL còn một số nhược điểm. Ví dụ, giả sử bạn muốn tất cả

các sinh viên có thể nhìn thấy được các điểm của chính họ, nhưng không thấy được

điểm của những người khác. Như vậy, quyền hạn phải đặt ở mức các bộ dữ liệu cá

103

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

Tài liệu môn học CƠ SỞ DỮ LIỆU – truongkinhtethucpham.com

nhân, điều này không thực hiện được trong SQL. Hơn nữa, kỹ thuật lập trình Web -

cơ sở dữ liệu đã phát triển tương đối mạnh. Các ứng dụng truy xuất vào cơ sở dữ

liệu và hiển thị các kết quả trên các thiết bị đầu cuối dưới dạng HTML ngày càng

tăng. Vấn đề an toàn, bảo mật thông tin trên các máy chủ Web servers, Data Server

trên đường truyền ngày càng khó khăn và phức tạp. Nhiệm vụ của các quyền truy

nhập đượcđặt vào trong các ứng dụng server. Mô hình quyền hạn đầy đủ của SQL

nhiều khi phải đi đường vòng. Lợi thế là các quyền hạn được làm nổi bật như là

những bộ dữ liệu cá nhân, có thể được thi hành bởi các ứng dụng.

5.7. Mã hóa dữ liệu và tính xác thực

CÂU HỎI VÀ BÀI TẬP

1/ Những nguy cơ mất an toàn bảo mật thông tin là gì?

2/ Trình bày các kiểu tấn công dữ liệu?

3/ Trình bày các giải pháp an toàn bảo mật dữ liệu?

104