Tải bản đầy đủ (.pdf) (65 trang)

Phần tử ngoại lai đối với khóa trong mô hình CSDL quan hệ và ứng dụng trong quản lý kết quả tốt nghiệp tại trường đại học kinh tế kỹ thuật công nghiệp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.81 MB, 65 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN

PHẦN TỬ NGOẠI LAI ĐỐI VỚI KHÓA TRONG MÔ
HÌNH CSDL QUAN HỆ VÀ ỨNG DỤNG TRONG
QUẢN LÝ KẾT QUẢ TỐT NGHIỆP TẠI TRƯỜNG
ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP

TRẦN VĂN TRƯỜNG

HÀ NỘI – NĂM 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SỸ

PHẦN TỬ NGOẠI LAI ĐỐI VỚI KHÓA TRONG MÔ
HÌNH CSDL QUAN HỆ VÀ ỨNG DỤNG TRONG
QUẢN LÝ KẾT QUẢ TỐT NGHIỆP TẠI TRƯỜNG ĐẠI
HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP
TRẦN VĂN TRƯỜNG
CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60.48.02.01

NGƯỜI HƯỚNG DẪN KHOA HỌC : TS. LÊ VĂN PHÙNG


HÀ NỘI - NĂM 2017


LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, tất cả các số
liệu và kết quả nghiên cứu trong luận văn này là hoàn toàn trung thực và chưa từng
được ai công bố trong bất kì công trình nào khác. Tôi cũng xin cam đoan rằng mọi
sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích
dẫn trong luận văn đã được chỉ rõ nguồn gốc.

Tác giả luận văn

TRẦN VĂN TRƯỜNG


LỜI CẢM ƠN
Tôi xin chân thành gửi lời cảm ơn tới TS Lê Văn Phùng, thầy đã nhiệt tình
hướng dẫn và giúp đỡ tôi trong quá trình hoàn thành luận văn này.
Tôi cũng xin chân thành gửi lời cảm ơn tới các giảng viên trong Viện Đại
Học Mở Hà Nội đã tận tình giảng dạy, chỉ bảo và giúp đỡ em trong quá trình học
tập tại trường cũng như trong thời gian hoàn thành luận văn này.
Trong quá trình nghiên cứu của mình, mặc dù được sự hướng dẫn rất nhiệt
tình, đầy trách nhiệm của TS Lê Văn Phùng và các thầy cô giáo trong Viện Đại học
Mở Hà Nội cùng với sự nỗ lực của cá nhân nhưng cũng không thể tránh được
những thiếu sót . Tác giả chân thành mong nhận được những ý kiến đóng góp từ
quý Thầy, Cô và bạn bè đồng nghiệp .
Trân trọng cảm ơn.

Trần Văn Trường


ii


MỤC LỤC
Trang

LỜI CAM ĐOAN ......................................................................................... iii
LỜI CẢM ƠN ................................................................................................ ii
DANH MỤC VIẾT TẮT................................................................................ v
DANH MỤC CÁC HÌNH VẼ ....................................................................... vi
DANH MỤC CÁC BẢNG BIỂU ................................................................. vii
MỞ ĐẦU ....................................................................................................... 1
CHƯƠNG 1. TỔNG QUAN VỀ MÔ HÌNH CSDL QUAN HỆ VÀ PHẦN
TỬ NGOẠI LAI ............................................................................................. 3
1.1. Các đặc trưng nổi bật của mô hình CSDL quan hệ .................................. 3
1.2. Vai trò của Khóa trong mô hình quan hệ ................................................. 4
1.2.1. Khái niệm về Khóa trong mô hình CSDL quan hệ ........................ 4
1.2.2. Vai trò của khóa trong tệp dữ liệu ................................................. 5
1.3. Khái niệm khóa và phương pháp xác định khóa trong CSDL quan hệ ... 10
1.3.1. Khái niệm khoá........................................................................... 10
1.3.2. Một số thuật toán liên quan đến khóa .......................................... 12
1.3.3. Hệ bằng nhau .............................................................................. 18
1.4. Khái niệm phần tử ngoại lai và vai trò của nó trong mô hình CSDL
quan hệ ......................................................................................................... 20
1.4.1.Khái niệm về phần tử ngoại lai .................................................... 20
1.4.2. Vai trò của phần tử ngoại lai trong mô hình CSDL quan hệ ........ 20
1.5. Ứng dụng của các phần tử ngoại lai ....................................................... 23
1.6. Kết luận chương. ................................................................................... 24
CHƯƠNG 2 : PHẦN TỬ NGOẠI LAI ĐỐI VỚI KHÓA TRONG MÔ HÌNH
CSDL QUAN HỆ......................................................................................... 26

2.1. Khái niệm phần tử ngoại lai đối với phụ thuộc hàm và khóa ................. 26
2.1.1 Khái niệm phần tử ngoại lai đối với phụ thuộc hàm ..................... 26
2.1.2. Định lý Nhận biết cặp ngoại lai đối với phụ thuộc hàm............... 26

iii


2.1.3 Thuật toán xác định các cặp ngoại lai đối với tập các phụ thuộc
hàm ...................................................................................................... 27
2.1.4 Phần tử ngoại lai đối với các dạng phụ thuộc hàm đặc biệt ......... 28
2.1.5. Khái niệm phần tử ngoại lai đối với khóa ................................... 32
2.2. Mô hình phát hiện các phần tử ngoại lai ................................................ 32
2.2.2. Phân loại các phần tử ngoại lai trong CSDL quan hệ .................. 33
2.2.3. Mô hình phát hiện phần tử ngoại lai dựa theo luật đối với CSDL
quan hệ ................................................................................................. 33
2.3. Thuật toán xác định phần tử ngoại lai theo khóa .................................... 34
2.3.1. Thuật toán ................................................................................... 34
2.4. Kết luận chương .................................................................................... 35
CHƯƠNG 3. ỨNG DỤNG NGHIÊN CỨU VỀ PHẦN TỬ NGOẠI LAI ĐỐI
VỚI KHÓA TRONG QUẢN LÝ KẾT QUẢ TỐT NGHIỆP TẠI TRƯỜNG
ĐẠI HỌC KINH TẾ KỸ THUẬT CÔNG NGHIỆP .................................... 38
3.1. Hiện trạng và yêu cầu quản lý kết quả tốt nghiệp tại Trường Đại học
kinh tế-kỹ thuật công nghiệp ........................................................................ 38
3.2. Yêu cầu và các chức năng chính của chương trình thử nghiệm ứng
dụng phần tử ngoại lai đối với Khóa trong quản lý kết quả tốt nghiệp tại
Trường Đại học kinh tế-kỹ thuật công nghiệp .............................................. 41
3.2.1. Yêu cầu của chương trình thử nghiệm ........................................ 41
3.2.2. Quy trình xử lý ........................................................................... 42
3.3. Các giao diện chính của chương trình .................................................... 46
3.4. Đánh giá kết quả thử nghiệm của chương trình...................................... 53

3.5. Kết luận chương 3 ................................................................................. 53
KẾT LUẬN.................................................................................................. 55
1. Kết quả đạt được trong luận văn ............................................................... 55
2. Hạn chế .................................................................................................... 55
3. Hướng phát triển ...................................................................................... 55
DANH MỤC TÀI LIỆU THAM KHẢO ...................................................... 56

iv


DANH MỤC VIẾT TẮT

STT

Từ viết tắt

Tiếng Anh

1

CNTT

Information Technology

Công nghệ thông tin

2

CSDL


Database

Cơ sở dữ liệu

3

DDL

Data Definition Languages

Ngôn ngữa định nghĩa dữ liệu

4

NSD

User

Người sử dụng

5

SQL

Structured Query Language

Ngôn ngữ truy vấn có cấu trúc

v


Tiếng Việt


DANH MỤC CÁC HÌNH VẼ
Trang
Hình 1.1. Phần tử ngoại lai trong tập điểm có tọa độ (x,y) trên mặt phẳng có
giá trị tung độ y nhỏ hơn hẳn các phần tử khác của tập hợp……………………. 20
Hình 3.1. Giao diện chính của chương trình…………………………………...

46

Hình 3.2. Giao diện chọn dữ liệu học phần ………………………….………...

47

Hình 3.3. Giao diện tải dữ liệu bảng học phần …………...……………………

47

Hình 3.4. Giao diện chọn file dữ liệu học phần ……..…………………………

48

Hình 3.5. Giao diện thông tin danh sách các học phần…………………………

48

Hình 3.6. Giao diện chọn bảng điểm ………………………………………………….

49


Hình 3.7. Giao diện chọn file bảng điểm ……………………………………………...

49

Hình 3.8. Giao diện thông tin điểm ……………………………………………………

50

Hình 3.9. Giao diện thẩm định kết quả tốt nghiệp …………………………………….

50

Hình 3.10. Giao diện chọn file dữ liệu báo cáo ………………………………………..

51

Hình 3.11. Giao diện chọn file bảng điểm lưu giáo viên ………………………………

51

Hình 3.12. Giao diện tổng hợp điểm …………………………………………………..

52

Hình 3.13. Giao diện đối chiếu điểm ………………………………………………….

52

Hình 3.14. Giao diện hiển thị môn bị sai điểm ………………………………………..


53

vi


DANH MỤC CÁC BẢNG BIỂU
Trang
42
Bảng 3.1. Bảng danh sách các học phần ………………………………………
Bảng 3.2. Bảng danh sách các lớp …………………………………………….

42

Bảng 3.3. Bảng danh sách sinh viên …………………………………………..

42

Bảng 3.4. Bảng điểm ………………………………………………………….

43

Bảng 3.5. Bảng kết quả ……………………………………………………….

43

Bảng 3.6. Bảng báo cáo ……………………………………………………….

44


Bảng 3.7. Bảng hợp giữa bảng báo cáo và bảng kết quả ………………………

44

Bảng 3.8. Bảng điểm lưu ………………………………………………………

45

vii


MỞ ĐẦU
1. Tính cấp thiết của luận văn
Có rất nhiều tri thức còn tiềm ẩn trong dữ liệu và chưa được khai thác một
cách có hiệu quả [2,4]. Riêng lĩnh vực khám phá phần tử “ngoại lai” mới bước đầu
được thực sự quan tâm nghiên cứu. Mặc dù nó có khả năng được ứng dụng trong
nhiều lĩnh vực trong cuộc sống, chẳng hạn như phát hiện những thẻ bất thường
trong hệ thống ngân hàng, những tuyến đường bất ổn không hợp lý trong giao
thông, ứng dụng trong hệ thống an ninh, dự báo thời tiết, trong thị trường chứng
khoán, trong lĩnh vực thể thao, y tế, giáo dục,…. Tuy nhiên, với số lượng dữ liệu
được tập trung và lưu trữ trong cơ sở dữ liệu (CSDL) ngày càng lớn thì việc tìm
kiếm các ngoại lệ, hoặc các phần tử ngoại lai, càng trở nên cấp thiết hơn nhiều, đặc
biệt là trong thời đại công nghệ thông tin (CNTT) ngày nay.
Do tính hấp dẫn và tính thời sự của khai phá dữ liệu, đặc biệt là phát hiện
phần tử ngoại lai trong CSDL quan hệ, tôi đã chọn đề tài “Phần tử ngoại lai đối với
Khóa trong mô hình CSDL quan hệ và ứng dụng trong quản lý kết quả tốt nghiệp
tại Trường Đại học kinh tế-kỹ thuật công nghiệp” là luận văn cao học của mình.
Trong đó nghiên cứu cơ sở lý luận về khai phá dữ liệu, tâm điểm là phát hiện phần
tử ngoại lai, và ứng dụng vào việc hỗ trợ quản lý kết quả tốt nghiệp tại Trường Đại
học kinh tế- kỹ thuật công nghiệp, nơi mà tôi đang công tác.


2. Mục tiêu nghiên cứu
Luận văn được hình thành nhằm các mục tiêu sau:
- Tìm các phương pháp phát hiện phần tử ngoại lai đối với khóa trong CSDL
quan hệ;
- Hỗ trợ thẩm định kết quả tốt nghiệp cho học sinh Trường Đại học kinh tếkỹ thuật công nghiệp.

3. Đối tượng nghiên cứu
Đối tượng nghiên cứu trong luận văn là phần tử ngoại lai trong CSDL quan
hệ.

4. Phạm vi nghiên cứu
1


Phạm vi nghiên cứu trong luận văn chỉ bó hẹp trong vùng về phần tử ngoại
lai đối với khóa trong CSDL quan hệ

5. Phương pháp nghiên cứu
- Kết hợp lý thuyết với đánh giá thưc nghiệm.
- Thu thập tài liệu, phân tích, suy luận, tổng hợp, đánh giá.
- Phân tích bài toán và ứng dụng và chọn lọc thuật toán thử nghiệm thích
hợp.

6. Dự kiến kết quả đạt được
- Xác định phần tử ngoại lai đối với phụ thuộc khóa trong cơ sở dữ liệu quan
hệ.
- Xây dựng được một chương trình demo hỗ trợ kiểm tra kết quả tốt nghiệp
tại trường Đại học Kinh tế Kỹ thuật Công nghiệp có ứng dụng việc xác định phần tử
ngoại lai đối với phụ thuộc hàm và khóa trong cơ sở dữ liệu quan hệ.


2


CHƯƠNG 1. TỔNG QUAN VỀ MÔ HÌNH CSDL QUAN HỆ
VÀ PHẦN TỬ NGOẠI LAI
1.1. Các đặc trưng nổi bật của mô hình CSDL quan hệ
Mô hình dữ liệu quan hệ được Codd đề xuất năm 1970. Nó đã tạo ra một cuộc
cách mạng mới trong lĩnh vực CSDL và nhanh chóng thay thế các mô hình dữ liệu
trước đó [4].
Mô hình dữ liệu quan hệ tương đối đơn giản và dễ hiểu. Mô hình dữ liệu quan
hệ là mô hình dữ liệu mà cốt lõi của nó là CSDL quan hệ. Một CSDL quan hệ là
một tập của một hoặc nhiều quan hệ, trong đó mỗi một quan hệ là một bảng. Mô
hình quan hệ sử dụng một tập các bảng để biểu diễn cả dữ liệu và mối liên hệ giữa
những dữ liệu này. Bảng có n cột và mỗi cột có một tên duy nhất.
Các ưu điểm cơ bản của mô hình dữ liệu quan hệ so với các mô hình khác [4]:
- Được xem là mô hình có cơ sở toán học vững chắc nhất.
- Đang giữ vai trò thống trị và là nền tảng cho hàng loạt các hệ quản trị CSDL
nổi tiếng và phổ biến như Oracle, DB2, MS SQL server, Access.
- Tương đối đơn giản dễ hiểu, một CSDL quan hệ là một tập quan hệ, biểu
diễn đơn giản bằng bảng gồm các cột và hàng giúp NSD mới làm quen với CSDL
có thể hiểu được nội dung CSDL.
- Cung cấp các khái niệm chặt chẽ được hình thức hoá cao, cho phép áp dụng
các công cụ toán học, các thuật toán tối ưu trên dữ liệu.
-Tuy được trừu tượng hoá cao nhưng chỉ dừng ở mức logic, nghĩa là độc lập
với mức vật lý- mức cài đặt, với các thiết bị lưu trữ nên đảm bảo được tính độc lập
giữa dữ liệu và chương trình ứng dụng.
- Nhờ biểu diễn dữ liệu thống nhất, nó có thể cho phép sử dụng các ngôn ngữ
thao tác dữ liệu ở mức cao, dễ sử dụng và dễ chuẩn hoá.
-NSD có thể tạo và sửa các bản ghi trong CSDL, có thể tạo báo cáo, độc lập

với nhóm phát triển phần mềm

3


-CSDL được lưu trong bảng (ứng với tệp) chứa các hàng (ứng với các bản ghi)
và các cột (ứng với các trường)
-Tạo ra các bảng và các cột bằng cách sử dụng ngôn ngữ DDL (Data
Definition languages). NSD có thể học dễ dàng được ngôn ngữ này trong thời gian
ngắn cùng với việc có thể tạo và sửa bản ghi, tạo báo cáo, sửa đổi cấu trúc, trích rút
dữ liệu. Nhờ vậy NSD có thể làm việc độc lập với nhóm lập trình.
-Những CSDL quan hệ thông dụng nhất đều sử dụng ngôn ngữ SQL
(structured query language).

1.2. Vai trò của Khóa trong mô hình quan hệ
1.2.1. Khái niệm về Khóa trong mô hình CSDL quan hệ
Giả sử r = {h1, h2,.., hm} là một quan hệ, s = < R, F > là một sơ đồ quan hệ,
trong đó R = {a1, a2,..., an} là tập các thuộc tính, F là tập xác định các phụ thuộc
hàm trên R. Gọi Y là một họ f trên R và A ⊆ R. Khi ấy A là một khoá của r ( tương
ứng là một khoá của s, một khóa của Y) nếu [4]:

f

+
A 
r → R (A → R ∈ F , (A, R) ∈Y).

Nghĩa là A phải thoả mãn các tính chất sau đây:
Với bất kỳ hai bộ h1, h2 ∈ r đều tồn tại một thuộc tính a ∈ A sao cho h1(a) ≠
h2(a). Nói cách khác, không tồn tại hai bộ mà có giá trị bằng nhau trên mọi tập

thuộc tính của A. Điều kiện này có thể viết t1(A) ≠ t2(A). Do vậy, mỗi giá trị của A
xác định là duy nhất. Khi biết giá trị thuộc tính trong A sẽ biết được các giá trị của
thuộc tính khác.
Theo định nghĩa của Codd: Nếu có hai dòng bằng nhau trên các giá trị của
khoá A thì sẽ kéo theo bằng nhau trên tất cả các cột còn lại. Như vậy sẽ có hai cột
bằng nhau, điều này không thể có được và nếu có thì đấy là dữ liệu nhầm lẫn.
Chúng ta gọi A (A ⊆ R) là một khoá tối tiểu của r (tương ứng của s, của Y)
nếu [4]:
+ A là một khoá của r (s,Y) tức A → R

4


+ Bất kỳ một tập con thực sự của A không là khoá của r (s, Y) hay không tồn
tại A' tập con thực sự A' ⊂ A mà A' → R.
Ví dụ 1.1 : Có bảng quan hệ sau

MAHANG
VT0001
TL0002
RA2012

BANHANG
TENHANG
Vô tuyến
Tủ lạnh
Radio

SOLUONG (chiếc)
1000

500
2000

Trong bảng trên mã số mặt hàng (MAHANG) là khoá. Mỗi giá trị mã hàng
đều xác định duy nhất một loại mặt hàng trong quan hệ BAN_HANG
Ký hiệu Kr , Ks , Ky là tập tất cả các khoá tối tiểu của r (s, Y).

1.2.2. Vai trò của khóa trong tệp dữ liệu
Khi giải quyết các bài toán thông tin quản lý, người ta thường sử dụng các hệ
quản trị cơ sở dữ liệu mà trong đó chứa cơ sở dữ liệu quan hệ. Các phép xử lý đối
với bài toán này thường là tìm kiếm bản ghi sau đó thêm bản ghi mới, thay đổi nội
dung bản ghi hoặc xoá bản ghi. Trong các thao tác trên, việc tìm kiếm bản ghi là rất
quan trọng. Muốn tìm được bản ghi trong file dữ liệu thì chúng ta phải xây dựng
khoá của file dữ liệu đó.
Khoá chính là hình ảnh của cột mã số hay số thứ tự (vì số thứ tự không thể
trùng nhau được).
Khóa đóng một vai trò rất quan trọng vì nhờ có nó người ta mới tìm kiếm
được (tìm kiếm bản ghi). Phép toán tìm kiếm bản ghi trong file dữ liệu là phép toán
quan trọng nhất vì chỉ sau khi tìm kiếm xong thì người ta mới tiến hành loại bỏ bản
ghi ấy hoặc bổ sung một bản ghi mới vào trước hoặc sau bản ghi mà ta đã tìm được.
Dù rằng dễ thấy A có thể chính bằng R nhưng người ta vẫn phải đi tìm khóa
tối tiểu, tức là khóa nhỏ nhất mà không thể nhỏ hơn được nữa để việc so sánh các
giá trị khóa với nhau trong quá trình tìm kiếm bản ghi là nhanh nhất.
Một sơ đồ quan hệ có thể có nhiều khóa, thậm chí còn có nhiều khoá tối tiểu.
Có hai thuật toán tìm khoá của quan hệ và lược đồ quan hệ. Tìm khoá ở đây
chính là tìm khoá tối tiểu.

5



Thuật toán Tìm khoá tối tiểu của một quan hệ [4]:
Vào: r = {h1, .. , hm} là một quan hệ trên tập thuộc tính R = {a1 , .. ,an}
Ra: K là một khoá tối tiểu của r.
Phương pháp:
Bước 1: Tính E r= {A1, A2.. .. } trong đó E r là các hệ bằng nhau.
Bước 2: Tính M r là các hệ bằng nhau cực đại.
Bước 3: Lần lượt tính các thuộc tính K0, K1, .., Kn theo qui tắc:
K0 = R ={a1, .., an } hoặc K0 là một khoá đã biết.
Ki-1 - { a i} nếu: không tồn tại A ∈ Mr : Ki-1 - {ai} ⊆ A

Ki =

(bao Ki)
Ki-1 trong trường hợp ngược lại

Bước 4: Đặt K = Kn. Khi đó K là khoá tối tiểu.
Nhận xét: Nếu ta thay đổi thứ tự các thuộc tính của r bằng thuật toán này
chúng ta có thể tìm được một khoá tối tiểu khác.
Ví dụ 1.2 : Cho quan hệ r
A
B
1
1
1
0
2
1
1
0
Bước 1: E12 = {A,C,D}

E23 = ∅

C
0
0
1
1

D
1
1
0
1

E
0
1
2
0

E13 = {B}

E14 = {A,D,E}

E24 = {A,B,D}

E34 = {C}

Bước 2: Mr = { {A, C, D}, {A, D, E},{A, B, D}}
Bước 3: (KH:P(Mr)-phần tử của Mr)

K0 ={A, B, C, D, E}
Xét K1 = K0 - {A} = {B, C, D, E} ⊄ P(Mr) ⇒ K1 = {B, C, D, E}.
Xét K2 = K1 - {B} = {C, D, E} ⊄ P(Mr) ⇒ K2 = {C, D, E}.
Xét K3 = K2 - {C} = {D, E} ⊂ P(Mr) ⇒ K3 = {C, D, E}.
Xét K4 = K3 - {D} = {C, E} ⊄ P(Mr) ⇒ K4 = {C, E}.
Xét K5 = K4 - {E} = {C} ⊂ P(Mr) ⇒ K5 = {C, E}.

6


Vậy {C, E} là một khoá tối tiểu của r.
Cũng ví dụ trên nhưng ta thay đổi tập thuộc tính theo thứ tự là {A, C, E, B, D}. Ta
đi tìm khoá tối tiểu của r
Bước 1 và bước 2 giống như trên
Bước 3:
K0 ={A, C, E, B, D}
Xét K1 = K0 - {A} = {C, E, B, D} ⊄ P(Mr) ⇒ K1 = {C, E, B, D}.
Xét K2 = K1 - {C} = {E, B, D} ⊄ P(Mr) ⇒ K2 = {E, B, D}.
Xét K3 = K2 - {E} = {B, D} ⊂ P(Mr) ⇒ K3 = K2 = {E, B, D}.
Xét K4 = K3 - {B} = {E, D} ⊂ P(Mr) ⇒ K4 = K3 = {E, B, D}.
Xét K5 = K4 - {D} = {B, E} ⊄ P(Mr) ⇒ K5 = {E, B}.
Vậy khoá tối tiểu của r là {E, B}.
Như vậy thay đổi thứ tự của các thuộc tính, ta sẽ có những tập khoá tối tiểu
khác nhau.
Ví dụ 1.3 [4]: Cho quan hệ r
A
B
2
2
1

2
1
1
3
1
Bước 1: E12 = {B, C}

C
1
1
2
3
E13 = {E}

D
4
2
2
1
E14 = ∅

E23 = {A, D}

E24 = {E}

E34 = {B}

Bước 2: Mr = {{B, C}, {E},{A, D}}
Bước 3:
*Các thuộc tính được lấy theo thứ tự r1 = {A, B, C, D, E}

K0 = R = {A, B, C, D, E}
Xét K1 = K0 - {A} = {B, C, D, E} ⊄ P(Mr) ⇒ K1 = {B, C, D, E}.
Xét K2 = K1 - {B} = {C, D, E} ⊄ P(Mr) ⇒ K2 = {C, D, E}.
Xét K3 = K2 - {C} = {D, E} ⊄ P(Mr) ⇒ K3 = {D, E}.
Xét K4 = K3 - {D} = {E} ⊂ P(Mr) ⇒ K4 = K3 = {D, E}.
Xét K5 = K4 - {E} = {D} ⊂ P(Mr) ⇒ K5 = K4 = {D, E}.

7

E
1
2
1
2


Vậy khoá tối tiểu của r là {D, E}.
*Các thuộc tính được lấy theo thứ tự r2 = {E, D, C, B, A}
K0 = R = {E, D, C, B, A}
Xét K1 = K0 - {E} = {D, C, B, A} ⊄ P(Mr) ⇒ K1 = {D, C, B, A}.
Xét K2 = K1 - {D} = {C, B, A} ⊄ P(Mr) ⇒ K2 = {C, B, A}.
Xét K3 = K2 - {C} = {B, A} ⊄ P(Mr) ⇒ K3 = {B, A}.
Xét K4 = K3 - {B} = {A} ⊂ P(Mr) ⇒ K4 = K3 = {B, A}.
Xét K5 = K4 - {A} = {B} ⊂ P(Mr) ⇒ K5 = K4 = {B, A}.
Vậy khoá tối tiểu khác của quan hệ là {B, A}.
Thuật toán Tìm khoá tối tiểu cho một sơ đồ quan hệ [4]
Vào : sơ đồ quan hệ s = <R, F> trong đó
F là tập các phụ thuộc hàm
R={a1,.., an}là tập các thuộc tính
Ra: K là tối tiểu của s

Phương pháp: Tính liên tiếp các tập thuộc tính K0, K1,.., Kn như sau:

K0 =

R = {a1, .., an}
Ki-1 nếu Ki-1 − {ai} → R ∉ F+

Ki =

Ki-1 − {a i} nếu ngược lại.

K = Kn là khoá tối tiểu.
Ta có thể dùng công thức tương đương:
Ki-1 − {a i} nếu Ki-1 − ai+ = R

Ki =

Ki-1 nếu ngược lại

Nhận xét:
- Thay đổi thứ tự các thuộc tính của R bằng thuật toán trên chúng ta có thể tìm
được một khoá tối tiểu khác.
- Nếu như đã biết A là một khoá nào đó thì có thể đặt K0 = A, ta vẫn tìm ra
được khoá tối tiểu và thời gian tìm nhanh hơn.
Ví dụ 1.4 [4]:

8


Giả sử s = < F, R > là một lược đồ quan hệ trong đó:

R = {a, b, c, d}
F = {{a, b} → {d},{c} → {b}}
Tìm khoá tối tiểu của sơ đồ quan hệ
Áp dụng thuật toán trên ta có:
+ K0 = R = {a, b, c, d}
+Tính K1
Xét K1 = K0 − {a} = {b, c, d}
{b, c, d}+ = {b, c, d} ≠ R
Vậy K1 = {a, b, c, d}.

(K1 = K0)

+Tính K2
Xét K2 = K1 − {b} = {a, c, d}
{a, c, d}+ = {a, b, c, d} = R
Vậy K2 = {a, c, d}
+Tính K3
Xét K3 = K2 − {c} = {a, d}
{a, d}+ = {a, d} ≠ R
Vậy K3 = {a, c, d}

(K3 = K2)

+Tính K4
Xét K4 = K3 − {d} = {a, c}
{a, c}+ = {a, b, c, d} = R
Vậy K4 = {a, c}
Vậy khoá tối tiểu là {a, c}.
Trong mô hình CSDL quan hệ, khái niệm hệ bằng nhau và hệ bằng nhau cực
đại đóng một vai trò quan trọng trong các thuật toán tìm khóa cho một quan hệ r.

Giả sử r = {h1, h2,.., hm} là một quan hệ trên R = {a1, a2,.., an}
Đặt Er = {Eij : 1 ≤ iEr được gọi là hệ bằng nhau của r
Giả sử Mr = {A∈P (R) : ∃ Eij = A, ∃ Epq :A ⊂ Epq}

9


Khi đó Mr được gọi là hệ bằng nhau cực đại của r .
Ví dụ 1.5 [4]:
Cho quan hệ r.
a1

a2 a3

a4

a5

1

1

0

1

0

1


0

0

3

0

3

1

1

3

1

5

1

0

3

0

E12 = {a1, a3, a5}

E13 = {a2}
Er =

E14 = {a2, a3, a5}
E23 = {a4}
E24 = {a3, a4, a5}
E34 = {a2, a4 }
{a1, a3, a5}

Mr =

{a2, a4 }
{a2, a3, a5}
{a3, a4, a5}

Vậy Mr là hệ bằng nhau cực đại của r.

1.3. Khái niệm khóa và phương pháp xác định khóa trong CSDL quan hệ
1.3.1. Khái niệm khoá
Cho r = {h1, h2,.., hm} là một quan hệ, s = < R, F > là một sơ đồ quan hệ,
trong đó R = {a1, a2,..., an} là tập các thuộc tính, F là tập xác định các phụ thuộc
hàm trên R. Gọi Y là một họ f trên R và A ⊆ R. Khi ấy A là một khoá của r ( tương
ứng là một khoá của s, một khóa của Y) nếu [4]:

f

+
A 
r → R (A → R ∈ F , (A, R) ∈Y).


Nghĩa là A phải thoả mãn các tính chất sau đây:

10


Với bất kỳ hai bộ h1, h2 ∈ r đều tồn tại một thuộc tính a ∈ A sao cho h1(a) ≠
h2(a). Nói cách khác, không tồn tại hai bộ mà có giá trị bằng nhau trên mọi tập
thuộc tính của A. Điều kiện này có thể viết t1(A) ≠ t2(A). Do vậy, mỗi giá trị của A
xác định là duy nhất. Khi biết giá trị thuộc tính trong A sẽ biết được các giá trị của
thuộc tính khác.
Theo định nghĩa của Codd: Nếu có hai dòng bằng nhau trên các giá trị của
khoá A thì sẽ kéo theo bằng nhau trên tất cả các cột còn lại. Như vậy sẽ có hai cột
bằng nhau, điều này không thể có được và nếu có thì đấy là dữ liệu nhầm lẫn.
Chúng ta gọi A (A ⊆ R) là một khoá tối tiểu của r (tương ứng của s, của Y)
nếu [4]:
+ A là một khoá của r (s,Y) tức A → R
+ Bất kỳ một tập con thực sự của A không là khoá của r (s, Y) hay không tồn
tại A' tập con thực sự A' ⊂ A mà A' → R.
Nhận xét:
Khoá chính là hình ảnh của cột mã số hay số thứ tự (vì số thứ tự không thể
trùng nhau được).
Khóa đóng một vai trò rất quan trọng vì nhờ có nó người ta mới tìm kiếm
được (tìm kiếm bản ghi). Phép toán tìm kiếm bản ghi trong file dữ liệu là phép toán
quan trọng nhất vì chỉ sau khi tìm kiếm xong thì người ta mới tiến hành loại bỏ bản
ghi ấy hoặc bổ sung một bản ghi mới vào trước hoặc sau bản ghi mà ta đã tìm được.
Dù rằng dễ thấy A có thể chính bằng R nhưng người ta vẫn phải đi tìm khóa
tối tiểu, tức là khóa nhỏ nhất mà không thể nhỏ hơn được nữa để việc so sánh các
giá trị khóa với nhau trong quá trình tìm kiếm bản ghi là nhanh nhất.
Một sơ đồ quan hệ có thể có nhiều khóa, thậm chí còn có nhiều khoá tối tiểu.
Ví dụ 1.6 : Cho bảng quan hệ sau:

MAHANG

TENHANG

SOLUONG (chiếc)

VT0001

Vô tuyến

1000

TL0002

Tủ lạnh

500

RA2012

Radio

2000

11


Trong bảng trên mã số mặt hàng (MAHANG) là khoá. Mỗi giá trị mã hàng
đều xác định duy nhất một loại mặt hàng trong quan hệ BAN_HANG
Ký hiệu Kr , Ks , Ky là tập tất cả các khoá tối tiểu của r (s, Y).


1.3.2. Một số thuật toán liên quan đến khóa
1.3.2.1. Một số thuật toán tính bao đóng
Một vấn đề thường xuyên xảy ra là đối với một sơ đồ quan hệ cho trước (s
= <R, F>), và một phụ thuộc hàm A → B, chúng ta muốn biết A → B có là phần tử
của F+ hay không. Để trả lời câu hỏi này chúng ta cần tính bao đóng F+của tập các
phụ thuộc hàm F.
Tuy nhiên tính F+ trong trường hợp tổng quát là rất khó khăn và tốn kém thời
gian vì các tập phụ thuộc hàm thuộc F+ là rất lớn cho dù F có thể là nhỏ. Chẳng hạn,
F = {A → B1, A → B2,.... A → Bn }, khi đó F+ bao gồm cả những phụ thuộc hàm A
→ Y với Y ⊆ {B1 ∪ B2 ∪ ... ∪ Bn}, như vậy ta sẽ có 2n tập con Y. Trong khi đó
việc tính bao đóng của tập thuộc tính A lại không khó. Theo kết quả đã trình bầy ở
trên thì việc kiểm tra A → B ∈ F+ sẽ được thế bởi việc tính A+.
Thuật toán 1: Tính bao đóng của một tập các thuộc tính đối với tập các
phụ thuộc hàm trên sơ đồ quan hệ [4]
Input :

s = < R, F > là một sơ đồ quan hệ trong đó
R = (a1, a2,.., an) là tập hữu hạn các thuộc tính.

F là tập các phụ thuộc hàm và A ⊆ R
Output : A+ là bao đóng của A đối với F.
Nhớ rằng A+ = {a: A →{a} ∈F+}.
A → B ∈ F+ nếu và chỉ nếu B ⊆ A+ .
Phương pháp: Lần lượt tính các tập thuộc tính Ao, A1 như sau:
1). A0 = A
2). Ai = Ai-1 ∪ {a} nếu ∃ (C → D) ∈ F, {a} ∈ D và C ⊆ Ai-1
3). Rõ ràng A = A0 ⊆ A1 ⊆ ... ⊆ Ai ⊆ R và R hữu hạn nên tồn tại i sao cho
Ai = Ai+1


12


Khi ấy thuật toán dừng và Ai chính là A+
Ví dụ:
Xét sơ đồ quan hệ s = < R, F > trong đó
{c} → {t}

R = {c, t, h, r, s, g}

{h, r} → {c}
F=

{h, t} → {r}
{c, s} → {g}
{h, s} → {r}

Tính {h, r}+ ?
A0 = {h, r}
A1 = {h, r, c}

do {h, r} → {c}∈F

A2 = {h, r, c, t}

do {c} → {t}∈ F

A3 = {h, r, c, t} = A2
Vậy {h, r}+ = {h, r, c, t}
Thuật toán 2: Tính bao đóng cho một tập bất kỳ trên quan hệ r [4]

Input: r = {h1, h2,.., hm} là một quan hệ trên R = {a1, a2,.., an}, A ⊆ R
Output : A+r
Bước 1: Từ r xây dựng một tập Er = { Eij : 1 ≤ i < j ≤ m }
Eij = {a : a ∈ R và hi(a) = hj(a)}
Bước 2: Từ Er xây dựng một tập
M = {B ∈ P(R) : Tồn tại Eij ∈ Er : Eij = B}
ở đây P(R) là tập các tập con của R
Bước 3: A+r được tính như sau:
∩ B nếu tồn tại B ∈ M : A ⊆ B, (giao của tất cả các tập
A+r =

A ⊆ B trong M chứa nó (A))
R ngược lại .

Có thể thấy rằng Eij = ∅ (trong trường hợp hai dòng i và j không có cột nào
trùng nhau về giá trị, có nghĩa rằng chúng khác nhau hoàn toàn).

13


Không bao giờ có Eij = R (có nghĩa rằng Eij = toàn bộ không gian), vì nếu xẩy
ra thì có hai dòng trùng nhau, theo định nghĩa quan hệ thì không cho phép có hai
dòng trùng nhau.
Ví dụ 1.7 [4]:
Xét quan hệ r
A

B

C


D

E

1

1

0

0

0

0

1

0

1

1

0

0

2


0

0

2

0

2

0

1

Tính {B, C}+r
E12 ={B, C}, E13 = {D, E}, E14 = {D}
E23 = {A},

E24 ={E}

E34 = {B, C, D}
M = {{A}, {B, C}, {B, C, D}, {D}, {D, E}, {E}}
Vậy {B, C}+r = {B, C} ∩ {B, C, D} ={B, C}

1.3.2.2. Một số thuật toán tính khóa tối tiểu
Khi giải quyết các bài toán thông tin quản lý, người ta thường sử dụng các hệ
quản trị cơ sở dữ liệu mà trong đó chứa cơ sở dữ liệu quan hệ. Các phép xử lí đối
với bài toán này thường là tìm kiếm bản ghi sau đó thêm bản ghi mới, thay đổi nội
dung bản ghi hoặc xoá bản ghi. Trong các thao tác trên, việc tìm kiếm bản ghi là rất

quan trọng. Muốn tìm được bản ghi trong file dữ liệu thì chúng ta phải xây dựng
khoá của file dữ liệu đó.
Có hai thuật toán tìm khoá của quan hệ và lược đồ quan hệ. Tìm khoá ở đây
chính là tìm khoá tối tiểu.
Thuật toán 3: Tìm khoá tối tiểu của một quan hệ [4]
Vào: r = {h1, .. , hm} là một quan hệ trên tập thuộc tính R = {a1 , .. ,an}
Ra: K là một khoá tối tiểu của r.

14


Phương pháp:
Bước 1: Tính E r= {A1, A2.. .. } trong đó E r là các hệ bằng nhau.
Bước 2: Tính M r là các hệ bằng nhau cực đại.
Bước 3: Lần lượt tính các thuộc tính K0, K1, .., Kn theo qui tắc:
K0 = R ={a1, .., an } hoặc K0 là một khoá đã biết.
Ki-1 - { a i} nếu: không tồn tại A ∈ Mr : Ki-1 - {ai} ⊆ A

Ki =

(bao Ki)
Ki-1 trong trường hợp ngược lại

Bước 4: Đặt K = Kn. Khi đó K là khoá tối tiểu.
Nhận xét: Nếu ta thay đổi thứ tự các thuộc tính của r bằng thuật toán này
chúng ta có thể tìm được một khoá tối tiểu khác.
Ví dụ 1.8 [4]: Cho quan hệ r
A

B


C

D

E

1

1

0

1

0

1

0

0

1

1

2

1


1

0

2

1

0

1

1

0

Bước 1: E12 = {A,C,D}
E23 = ∅

E13 = {B}

E14 = {A,D,E}

E24 = {A,B,D}

E34 = {C}

Bước 2: Mr = { {A, C, D}, {A, D, E},{A, B, D}}
Bước 3: (KH:P(Mr)-phần tử của Mr)

K0 ={A, B, C, D, E}
Xét K1 = K0 - {A} = {B, C, D, E} ⊄ P(Mr) ⇒ K1 = {B, C, D, E}.
Xét K2 = K1 - {B} = {C, D, E} ⊄ P(Mr) ⇒ K2 = {C, D, E}.
Xét K3 = K2 - {C} = {D, E} ⊂ P(Mr) ⇒ K3 = {C, D, E}.
Xét K4 = K3 - {D} = {C, E} ⊄ P(Mr) ⇒ K4 = {C, E}.
Xét K5 = K4 - {E} = {C} ⊂ P(Mr) ⇒ K5 = {C, E}.
Vậy {C, E} là một khoá tối tiểu của r.

15


Cũng ví dụ trên nhưng ta thay đổi tập thuộc tính theo thứ tự là {A, C, E, B, D}. Ta
đi tìm khoá tối tiểu của r
Bước 1 và bước 2 giống như trên
Bước 3:
K0 ={A, C, E, B, D}
Xét K1 = K0 - {A} = {C, E, B, D} ⊄ P(Mr) ⇒ K1 = {C, E, B, D}.
Xét K2 = K1 - {C} = {E, B, D} ⊄ P(Mr) ⇒ K2 = {E, B, D}.
Xét K3 = K2 - {E} = {B, D} ⊂ P(Mr) ⇒ K3 = K2 = {E, B, D}.
Xét K4 = K3 - {B} = {E, D} ⊂ P(Mr) ⇒ K4 = K3 = {E, B, D}.
Xét K5 = K4 - {D} = {B, E} ⊄ P(Mr) ⇒ K5 = {E, B}.
Vậy khoá tối tiểu của r là {E, B}.
Như vậy thay đổi thứ tự của các thuộc tính, ta sẽ có những tập khoá tối tiểu
khác nhau .
Ví dụ 1.9 : Cho quan hệ r
A

B

C


D

E

2

2

1

4

1

1

2

1

2

2

1

1

2


2

1

3

1

3

1

2

Bước 1: E12 = {B, C}

E13 = {E}

E14 = ∅

E23 = {A, D}

E24 = {E}

E34 = {B}

Bước 2: Mr = {{B, C}, {E},{A, D}}
Bước 3:
*Các thuộc tính được lấy theo thứ tự r1 = {A, B, C, D, E}

K0 = R = {A, B, C, D, E}
Xét K1 = K0 - {A} = {B, C, D, E} ⊄ P(Mr) ⇒ K1 = {B, C, D, E}.
Xét K2 = K1 - {B} = {C, D, E} ⊄ P(Mr) ⇒ K2 = {C, D, E}.
Xét K3 = K2 - {C} = {D, E} ⊄ P(Mr) ⇒ K3 = {D, E}.

16


×