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

Nghiên cứu 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ệ (LV01991)

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 (1.47 MB, 60 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2

LÊ THANH HÀ

NGHIÊN CỨU 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Ệ

LUẬN VĂN THẠC SĨ MÁY TÍNH

HÀ NỘI, 2016


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI 2

LÊ THANH HÀ

NGHIÊN CỨU 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Ệ

Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ MÁY TÍNH

Người hướng dẫn khoa học: TS. Lê Văn Phùng

HÀ NỘI, 2016




LỜI CẢM ƠN

Em 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 đỡ em trong quá trình hoàn thành luận văn này.
Em xin chân thành gửi lời cảm ơn tới các thầy cô trong Viện
CNTT thuộc Viện Khoa học Hàn lâm Việt Nam đã 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.
Em xin chân thành gửi lời cảm ơn tới các thầy cô phòng Sau Đại
học, khoa CNTT và thư viện trường ĐHSPHN2 đã tận tình giúp đỡ và
truyền đạt những kiến thức quý giá trong quá trình học tập cũng như
trong quá trình hoàn thành cuốn luận văn này.
Em xin gửi lời cảm ơn đến Ban giám hiệu trường THPT Trần Hưng
Đạo – Tam Dương – Vĩnh Phúc và các thầy cô trong trường đã tạo điều kiện
để em có được những dữ liệu thực tế góp phần vào sự hoàn thiện của luận
văn.


LỜI CAM ĐOAN

Tôi xin cam đoan 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à không trùng lặp với các đề tài
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


Lê Thanh Hà


MỤC LỤC
MỞ ĐẦU ........................................................................................................... 1
1. Lý do chọn đề tài ........................................................................................... 1
2. Mục đích nghiên cứu ..................................................................................... 2
3. Nhiệm vụ nghiên cứu .................................................................................... 2
4. Đối tượng và phạm vi nghiên cứu ................................................................. 2
5. Phương pháp nghiên cứu ............................................................................... 2
6. Dự kiến kết quả đạt được: ............................................................................. 2
NỘI DUNG ....................................................................................................... 4
Chương 1: Tổng quan về phụ thuộc hàm, khóa và phần tử ngoại lai trong cơ
sở dữ liệu quan hệ ............................................................................................. 4
1.1. Khái niệm phụ thuộc hàm .......................................................................... 4
1.1.1 Định nghĩa phụ thuộc hàm: ...................................................................... 4
1.1.2 Hệ tiên đề Armstrong ............................................................................... 6
1.2. Các dạng phụ thuộc hàm đặc biệt .............................................................. 7
1.2.1. Dạng các phụ thuộc hàm dạng bằng nhau .............................................. 7
1.2.2. Dạng phụ thuộc hàm dạng tỉ lệ ............................................................... 7
1.3. Khái niệm khóa và phương pháp xác định khóa trong CSDL quan hệ ..... 8
1.3.1. Khoá ........................................................................................................ 8
1.3.2. Một số thuật toán liên quan đến khóa ................................................... 10
1.3.2.1. Một số thuật toán tính bao đóng......................................................... 10
1.3.2.2. Một số thuật toán tính khóa tối tiểu ................................................... 13
1.4 Hệ bằng nhau............................................................................................. 17
1.5 Phần tử ngoại lai và mối quan hệ giữa chúng với khai phá dữ liệu .......... 19
1.5.1 Khái niệm về phần tử ngoại lai .............................................................. 19
1.5.2 Mối quan hệ giữa phần tử ngoại lai với khai phá dữ liệu ...................... 20



1.6 Mô hình phát hiện các phần tử ngoại lai trong dữ liệu và trong cơ sở dữ
liệu quan hệ ..................................................................................................... 21
1.6.1 Định nghĩa .............................................................................................. 21
1.6.2 Phân loại các phần tử ngoại lai trong CSDL quan hệ ............................ 21
1.6.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ệ
......................................................................................................................... 22
1.7 Ứng dụng của các phần tử ngoại lai .......................................................... 23
Chương 2: Phát hiện 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ệ....................................................................................... 26
2.1 Phần tử ngoại lai đối với phụ thuộc hàm .................................................. 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ý 2.1: Nhận biết cặp ngoại lai đối với phụ thuộc hàm ................. 26
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.4.1 Phần tử ngoại lai đối với phụ thuộc hàm dạng bằng nhau .................. 28
2.1.4.2 Phần tử ngoại lai đối với phụ thuộc hàm dạng tỉ lệ ............................ 30
2.2 Phần tử ngoại lai đối với khóa .................................................................. 33
2.2.1 Khái niệm phần tử ngoại lai đối với khóa .............................................. 33
2.2.3 Thuật toán xác định phần tử ngoại lai theo khóa ................................... 34
Chương 3: Ứng dụng tìm phần tử ngoại lai để kiểm tra xếp loại học lực và
danh hiệu cho học sinh trường THPT Trần Hưng Đạo ................................... 36
3.1 Bài toán đặt ra và mục tiêu chương trình .................................................. 36
3.1.1 Bài toán đặt ra ........................................................................................ 36
3.1.2. Mục tiêu chương trình .......................................................................... 36
3.2 Chọn thuật toán thử nghiệm: ..................................................................... 38
3.3 Dữ liệu vào và yêu cầu kết quả ra ............................................................. 41
3.4 Môi trường thử nghiệm ............................................................................. 41



3.4.1 Hệ quản trị dữ liệu.................................................................................. 41
3.4.2 Ngôn ngữ lập trình ................................................................................. 42
3.5 Một số giao diện chính .............................................................................. 42
3.5.1 File dữ liệu ............................................................................................. 42
3.6 Đánh giá kết quả và hướng mở rộng ......................................................... 47
3.6.1 Đánh giá kết quả..................................................................................... 47
3.6.2 Hướng mở rộng ...................................................................................... 47
KẾT LUẬN ..................................................................................................... 48
TÀI LIỆU THAM KHẢO ............................................................................... 50


BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT

Từ viết tắt

Tiếng Anh

Nghĩa tiếng Việt

THPT

Trung học phổ thông

CSDL

Cơ sở dữ liệu

Hk
Cn


Học kỳ
Cả năm


DANH MỤC CÁC HÌNH
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........................... 19
Hình 3.0 – Hình ảnh file dữ liệu excel đưa vào chương trình ........................ 42
Hình 3.1 – Giao diện đăng nhập vào trang web chứa chương trình ............... 43
Hình 3.2 – Giao diện chính của trang web chưa chương trình. ...................... 43
Hình 3.3 – Chọn Nhập điểm ........................................................................... 44
Hình 3.4 – Giao diện nhập điểm tra của học sinh bằng file excel .................. 44
Hình 3.5 – Giao diện dữ liệu file excel được tải lên ....................................... 45
Hình 3.6 – Giao diện thông báo số phần tử ngoại lai ..................................... 45
Hình 3.7 – Giao diện thể hiện phần tử ngoại lai ............................................. 46
Hình 3.8 – Giao diện hoàn chỉnh đúng ........................................................... 46
Hình 3.9 – Giao diện thể hiện nhập thành công file dữ liệu và kiểm tra không
phát hiện phần tử ngoại lai .............................................................................. 47


1

MỞ ĐẦU
1. Lý do chọn đề tài
Thế kỷ XXI được xem là một thể kỷ của công nghệ thông tin. Các công
nghệ khám phá tri thức được áp dụng rộng rãi trong nhiều lĩnh vực và đem lại
những thành tựu vô cùng to lớn. Nhưng các công nghệ khám phá tri thức
thường nhằm mục đích tìm kiếm, khám phá các dạng và mẫu thường gặp.
Chủ yếu tập trung vào các hướng: Tìm kiếm các luật kết hợp, nhận dạng và
phân lớp mẫu….. Còn lĩnh vực khám phá phần tử ngoại lai chưa có được sự

quan tâm, đầu tư và phát triển ở trong và ngoài nước.
Người ta nhận thấy rằng có rất nhiều tri thức còn tiềm ẩn trong dữ liệu,
vấn đề đặt ra là làm thế nào để khai thác được thông tin và khai thác một cách
có hiệu quả. Còn 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 ứng dụng trong nhiều lĩnh vực
trong cuộc sống: 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 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 trở nên cấp thiết hơn nhiều.
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 sơ sở dữ liệu quan hệ, tôi đã chọn đề tài “Nghiên
cứu 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ệ” là luận văn cao học của mình. Trong đó nghiên cứu vận dụng kiến thức
nghiên cứu này vào hỗ trợ kiểm tra xếp loại học lực và danh hiệu cho học sinh
trường THPT Trần Hưng Đạo.


2

2. Mục đích nghiên cứu
- Phát hiện 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ệ.
- Hỗ trợ kiểm tra xếp loại học lực và danh hiệu cho học sinh trường
THPT Trần Hưng Đạo.
3. Nhiệm vụ nghiên cứu
- Tìm hiểu về phần tử ngoại lại, phụ thuộc hàm, khóa trong cơ sở dữ
liệu quan hệ
- Tìm hiểu 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ệ.
- Ứng dụng phần tử ngoại lai để hỗ trợ kiểm tra xếp loại học lực và
danh hiệu cho học sinh trường THPT Trần Hưng Đạo.
4. Đối tƣợng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: 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ệ.
- Phạm vi nghiên cứu: Phần tử ngoại lai trong phụ thuộc hàm và khóa
trong cơ sở dữ liệu 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 hàm và 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 xếp loại học
lực và danh hiệu của học sinh trong trường THPT Trần Hưng Đạo có ứng


3

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ệ.


4

NỘI DUNG
Chƣơng 1: Tổng quan về phụ thuộc hàm, khóa và phần tử ngoại lai trong

cơ sở dữ liệu quan hệ
1.1. Khái niệm phụ thuộc hàm
Phụ thuộc hàm (functional dependency) là một công cụ dùng để biểu
diễn một cách hình thức các ràng buộc toàn vẹn (vắn tắt: ràng buộc). Phương
pháp biểu diễn này có rất nhiều ưu điểm, và đây là một công cụ cực kỳ quan
trọng, gắn chặt với lý thuyết thiết kế cơ sở dữ liệu.
Phụ thuộc hàm được ứng dụng trong việc giải quyết các bài toán tìm
khóa, tìm phủ tối thiểu và chuẩn hóa cơ sở dữ liệu.
Khái niệm về phụ thuộc hàm trong một quan hệ là rất quan trọng trong
việc thiết kế mô hình dữ liệu. Năm 1970 E.F Codd đã mô tả phụ thuộc hàm
trong mô hình dữ liệu quan hệ, nhằm giải quyết việc phân rã không mất thông
tin.
1.1.1 Định nghĩa phụ thuộc hàm:
Cho R = {a1, a2,.., an} là tập các thuộc tính, r = {h1, h2,.., hm} là một
quan hệ trên R, và A, B  R (A, B là tập cột hay tập thuộc tính). Khi đó ta nói
A xác định hàm cho B hay B phụ thuộc hàm vào A trong r
f
(ký pháp A 
r  B) nếu:

( hi, hj  r) ((a  A) ( hi(a) = hj(a))  (b  B) ( hi(b) = hj(b) ))
nghĩa là đối số trùng nhau thì hàm có cùng giá trị
f
Người ta còn viết (A, B) hay A  B thay cho 
r B

Lúc đó tập hợp tất cả (A, B) như thế xác định một họ f trên R.
Nhận xét:



5

- Ta có thể thấy rằng B mà phụ thuộc hàm vào A, nếu hai dòng bất kỳ
mà các giá trị của tập thuộc tính A mà bằng nhau từng cặp một, thì kéo theo
các giá trị trên tập thuộc tính B cũng phải bằng nhau từng cặp một.
Ví dụ 1.1: Về việc phân công lái máy bay:
phanCong (PHICONG, MAYBAY, NGAYKH, GIOKH)
Với các thuộc tính : tên phi công(PHICONG), số máy bay(MAYBAY),
ngày khởi hành(NGAYKH), giờ khởi hành(GIOKH).
Quan hệ phanCong diễn tả phi công nào lái máy bay nào và máy bay
khởi hành vào thời gian nào.
Không phải sự phối hợp bất kỳ nào giữa phi công, máy bay và ngày giờ
khởi hành cũng đều được chấp nhận mà chúng có các điều kiện ràng buộc qui
định sau:
+ Mỗi máy bay có một giờ khởi hành duy nhất.
+ Nếu biết phi công, biết ngày giờ khởi hành thì biết được máy bay do
phi công ấy lái.
+ Nếu biết máy bay, biết ngày khởi hành thì biết phi công lái chuyến bay
ấy.
Các ràng buộc này là các ví dụ về phụ thuộc hàm và được phát biểu lại như
sau:
+ MAYBAY xác định GIOKH
+ {PHICONG,NGAYKH,GIOKH} xác định MABAY
+ {MAYBAY,NGAYKH} xác định PHICONG
hay
+ GIOKH phụ thuộc hàm vào MAYBAY
+ MABAY phụ thuộc hàm vào {PHICONG,NGAYKH,GIOKH}
+ PHICONG phụ thuộc hàm vào {MAYBAY,NGAYKH}
và được ký hiệu như sau:



6

+ {MAYBAY}  GIOKH
+ {PHICONG,NGAYKH,GIOKH}  MAYBAY
+ {MAYBAY,NGAYKH}  PHICONG
Ý nghĩa: Khái niệm phụ thuộc hàm miêu tả một loại ràng buộc (phụ
thuộc dữ liệu) xẩy ra tự nhiên nhất giữa các tập thuộc tính.
1.1.2 Hệ tiên đề Armstrong
Gọi F là tập xác định các phụ thuộc hàm đối với lược đồ quan hệ R và
X  Y là một phụ thuộc hàm. X, Y  R. Nói rằng X  Y được suy diễn
logic từ F nếu mối quan hệ r trên R đều thoả mãn phụ thuộc hàm của F thì
cũng thoả mãn X  Y. Chẳng hạn F ={A  B, B  C} thì A  C suy ra từ
F. Gọi F+ là bao đóng (closure) của F, tức là tập tất cả các phụ thuộc hàm
được suy diễn logic từ F. Nếu F = F+ thì F là họ đầy đủ (full family) của các
phụ thuộc hàm.
Để có thể xác định khoá của một lược đồ quan hệ và các suy diễn logic
giữa các phụ thuộc hàm cần thiết phải tính được F+ từ F. Do đó đòi hỏi phải
có các hệ tiên đề. Tập các quy tắc của hệ tiên đề được Armstrong (1974) đưa
ra, thường được gọi là hệ tiên đề Armstrong.
Định nghĩa 1.2
Cho R = {a1,...,an} là tập các thuộc tính.
X, Y, Z  R. Hệ tiên đề Armstrong bao gồm 3 tính chất cơ bản sau:
 A1 (phản xạ)

: Nếu Y  X thì X  Y

 A2 (tăng trưởng) : Nếu Z  R và X  Y thì XZ  YZ.
Trong đó ký hiệu XZ là hợp của hai tập X và Z thay cho ký hiệu X  Z.


Nhận xét:

A3 (bắc cầu )

: Nếu X  Y và Y  Z thì X  Z.


7

 Việc nghiên cứu phụ thuộc hàm không lệ thuộc vào các quan hệ
(bảng) cụ thể. Vì vậy, áp dụng được các công cụ toán nhằm sáng tỏ
cấu trúc logic của mô hình dữ liệu quan hệ
 Có nhiều quan hệ khác nhau nhưng các họ đầy đủ các phụ thuộc
hàm của chúng lại như nhau
Ví dụ 1.2: Cho r1, r2 là các quan hệ:
A B
A B
0 0
0 0
r1 = 1 1
r2 = 1 1
2 1
2 1
3 2
3 1
Có thể thấy rằng r1 và r2 khác nhau nhưng Fr1 = Fr2 vì chỉ có A  B
1.2. Các dạng phụ thuộc hàm đặc biệt
Có một số phụ thuộc hàm có dạng rất đặc biệt. Chúng ta sẽ xét ở đây
hai dạng rất đặc biệt trong số đó.
1.2.1. Dạng các phụ thuộc hàm dạng bằng nhau

Cho bảng dữ liệu r trên R = (A1, A2, .....An). Giả sử với Ap, Aq nào đó
thuộc R, mà với mọi ti  r ta có: ti(Ap) = ti(Aq). Khi đó ta dễ thấy có phụ thuộc
hàm: Ap  Aq ( cũng đồng thời có Aq  Ap). Chúng ta gọi các phụ thuộc
hàm dạng này là các phụ thuộc hàm dạng bằng nhau.
Các phụ thuộc hàm dạng bằng nhau có trong các bảng dữ liệu được
sinh ra trong trường hợp chúng ta kết nối hai hoặc nhiều bảng dữ liệu với
nhau.
1.2.2. Dạng phụ thuộc hàm dạng tỉ lệ
Cho r là một bảng dữ liệu trên tập thuộc tính R. Giả sử có các thuộc
tính số: As, As1, As2, ....Ask  R và các số thực: p1, p2, .....pk với pj  1; j = 1..k
k



p
j 1

j

= 1; với mọi ti  r sao cho:

ti(As1) = p1 * ti(As)


8

ti(As2) = p2 * ti(As)
.....
ti(Ask) = pk * ti(As)
Trong trường hợp này ta có phụ thuộc hàm:

As  As1.As2..... Ta gọi phụ thuộc hàm dạng này là phụ thuộc hàm dạng tỉ lệ.
Gọi pj là tỉ lệ đối với phụ thuộc tính Asj (j = 1...k).
Trong thực tế chúng ta gặp loại phụ thuộc hàm loại này trong các
trường hợp tạo các bảng kê về khối lượng một loại sản phẩm được sản xuất ra
cùng với các thành phần dùng để tạo nên sản phẩm đó (theo định mức qui
định).
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. Khoá
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:
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ẽ


9


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:
+ 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.3:
Ta có bảng quan hệ sau:


10

BANHANG
MAHANG

TENHANG


SOLUONG (chiếc)

VT0001

Vô tuyến

1000

TL0002

Tủ lạnh

500

RA2012

Radio

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.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ệ
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


11

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
Khi ấy thuật toán dừng và Ai chính là A+
Ví dụ 1.4:
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
Input: r = {h1, h2,.., hm} là một quan hệ trên R = {a1, a2,.., an}, A  R
Output : A+r


12

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).
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.5:
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}}


13

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ệ
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.


14

Ví dụ 1.6: 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.

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}.


15

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.7: 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}.

Xét K4 = K3 - {D} = {E}  P(Mr)  K4 = K3 = {D, E}.
Xét K5 = K4 - {E} = {D}  P(Mr)  K5 = K4 = {D, E}.
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}.


16

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 4: Tìm khoá tối tiểu cho một sơ đồ quan hệ
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.8: Giả sử s = < F, R > là một lược đồ quan hệ trong đó:
R = {a, b, c, d}


×