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

Ứng dụng phép dịch chuyển lược đồ quan hệ trong cơ sở dữ liệu

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.11 MB, 33 trang )

ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN

ĐẠI HỌC THÁI NGUYÊN
KHOA CÔNG NGHỆ THÔNG TIN
____________________________

___________________________________

VŨ TRÍ DŨNG

VŨ TRÍ DŨNG

ỨNG DỤNG PHÉP DỊCH CHUYỂN
ỨNG DỤNG PHÉP DỊCH CHUYỂN
LƯỢC ĐỒ QUAN HỆ TRONG CƠ SỞ DỮ LIỆU

LƯỢC ĐỒ QUAN HỆ TRONG CƠ SỞ DỮ LIỆU
CHUYÊN NGÀNH : KHOA HỌC MÁY TÍNH
MÃ SỐ : 60 48 35 01

LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học
PGS. TSKH. NGUYỄN XUÂN HUY

Thái Nguyên - 2009

T há i N gu y ê n - 2 00 9
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




MỤC LỤC

LỜI NÓI ĐẦU

1

CHƢƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI VÀ CÁC KHÁI NIỆM CƠ SỞ

4

1.1.

TỔNG QUAN VỀ ĐỀ TÀI

4

1.1.1.

Giới thiệu đề tài.

4

1.1.2.


Nội dung của đề tài, các vấn đề cần giải quyết.

4

1.1.3.

Phƣơng pháp nghiên cứu.

5

1.1.4.

Phạm vi ứng dụng.

5

1.1.5.

Kết quả đạt đƣợc.

5

1.2.

CÁC KHÁI NIỆM CƠ SỞ

6

1.2.1.


Quan hệ, thuộc tính, bộ.

7

1.2.2.

Đại số quan hệ.

10

1.2.3.

Phụ thuộc hàm, Hệ tiên đề Armstrong, Lƣợc đồ quan hệ.

13

1.2.4.

Bao đóng của tập thuộc tính.

18

1.2.5.

Phủ của tập phụ thuộc hàm

21

1.2.6.


Khóa của lƣợc đồ quan hệ.

27

1.2.7.

Chuẩn hoá LĐQH trên cơ sở phụ thuộc hàm.

31

CHƢƠNG 2. PHÉP DỊCH CHUYỂN LƢỢC ĐỒ QUAN HỆ

36

2.1.

Phép dịch chuyển LĐQH.

37

2.2.

Thuật toán dịch chuyển LĐQH.

38

2.3.

Định lý cơ bản của phép dịch chuyển LĐQH.


39

2.4.

Dạng biểu diễn thứ nhất của khóa

43

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



2.5.

Dạng biểu diễn thứ hai của khóa

45

2.6.

Kết luận

50

CHƢƠNG 3. CÀI ĐẶT CHƢƠNG TRÌNH

51

3.1.


Giới thiệu.

51

3.2.

Các chức năng của chƣơng trình.

51

3.3.

Một số giao diện của chƣơng trình.

52

3.4.

Các thí dụ.

54

DANH MỤC BÀI BÁO, CÔNG TRÌNH NCKH

57

KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN

58


TÀI LIỆU THAM KHẢO

60

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




DANH MỤC CÁC KÝ HIỆU, VIẾT TẮT

LỜI NÓI ĐẦU

Trong quản lý các cơ sở dữ liệu (CSDL), phụ thuộc dữ liệu được hiểu là
1NF

1 normal form - dạng chuẩn 1

những mệnh đề mô tả các ràng buộc mà dữ liệu phải đáp ứng trong thực tế. Nhờ có

2NF

2nd normal form - dạng chuẩn 2

những mô tả phụ thuộc này mà hệ quản trị cơ sở dữ liệu có thể quản lý tốt được chất

st

3NF


3 normal form - dạng chuẩn 3

lượng dữ liệu. Lý thuyết về các phụ thuộc dữ liệu đóng vai trò quan trọng trong việc

CSDL

Cơ sở dữ liệu

mô tả thế giới thực, phản ánh ngữ nghĩa dữ liệu trong cơ sở dữ liệu. Phụ thuộc dữ

LĐQH

Lƣợc đồ quan hệ

liệu được Codd, tác giả của mô hình dữ liệu quan hệ đặt nền móng từ những năm 70

PTH

phụ thuộc hàm

với khái niệm phụ thuộc hàm. Sau đó một loạt tác giả khác tiếp tục phát triển các

FD

phụ thuộc hàm

dạng phụ thuộc bậc cao, phụ thuộc mờ cũng như xây dựng các hệ tiên đề cho các




suy dẫn theo tiên đề (theo logic)

lớp phụ thuộc - tức là đặt cơ sở lý thuyết về phụ thuộc dữ liệu.



suy dẫn theo quan hệ








X+


khác
với mọi
thuộc
là con
chứa
giao (của 2 tập thuộc tính)
hợp (của 2 tập thuộc tính)
bao đóng của tập thuộc tính X
tƣơng đƣơng

cơ sở dữ liệu, logic đã được chọn như một ngôn ngữ hữu hiệu để đặc tả phụ thuộc



\

không tƣơng đƣơng
phép trừ logic

bao đóng, khóa và phản khoá. Các kết quả thu được sử dụng trong quá trình thiết kế

rd

Một điều khá tự nhiên là ngay từ những ngày đầu phát triển lý thuyết thiết kế
dữ liệu, do đó, trong số các loại hình phụ thuộc dữ liệu rất đa dạng được đề xuất và
phát triển sau này, các phụ thuộc logic luôn luôn là trọng tâm chú ý của các nhóm
nghiên cứu.
Đề tài này tập trung vào tìm hiểu và nghiên cứu khái niệm chuyển dịch lược
đồ quan hệ, đưa chúng về dạng thu gọn và nhận được các biểu diễn quan trọng cho
các cơ sở dữ liệu.
Nội dung đề tài được cấu trúc như sau:
Chương 1 giới thiệu về đề tài và các khái niệm chung về mô hình quan hệ với
trọng tâm là các khái niệm hình thức của mô hình quan hệ, trong đó vận dụng chủ
yếu các cấu trúc rời rạc. Phụ thuộc hàm (PTH) là lớp phụ thuộc đầu tiên của phụ
thuộc logic và đồng thời cũng là lớp phụ thuộc kinh điển theo nghĩa, được Codd, tác
giả của mô hình dữ liệu quan hệ, đề xuất sớm nhất và được sử dụng như một công
cụ thiết kế các cơ sở dữ liệu chuẩn hóa.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




_______________________________________________________
Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 1




Chương 2 trình bày một kỹ thuật thu gọn lược đồ quan hệ (LĐQH) được gọi

Em cũng xin chân thành cảm ơn Ban lãnh đạo Liên đoàn Lao động tỉnh Hà

là phép dịch chuyển lược đồ quan hệ. Bản chất của kỹ thuật này là loại bỏ khỏi

Nam, Ban giám hiệu Trường trung cấp nghề Kinh tế - Kỹ thuật Hà Nam, gia đình,

LĐQH ban đầu một số thuộc tính không quan trọng theo nghĩa chúng không làm

người thân và bạn bè đã tạo điều kiện thuận lợi, động viên và giúp đỡ em trong suốt

ảnh hưởng đến kết quả tính toán các đối tượng đang được quan tâm như bao đóng,

thời gian học tập, nghiên cứu và làm luận văn tốt nghiệp.

khóa, phản khóa... Mặc dù LĐQH thu được qua phép dịch chuyển không tương
đương với LĐQH ban đầu, nhưng ta có thể thu được các đối tượng cần tìm bằng

Học viên

những phép toán đơn giản như loại bỏ hoặc thêm một số thuộc tính. Điều lý thú là
sau khi loại bỏ một số thuộc tính thì một số PTH sẽ được loại bỏ theo vì chúng trở


Vũ Trí Dũng

thành các PTH tầm thường (có vế trái chứa về phải) hoặc mang thông tin tiền định
(đó là các PTH dạng   X). Các phép dịch chuyển LĐQH được phát triển cho lớp
các phụ thuộc logic đầu tiên là phụ thuộc hàm cho ta một số kết quả lý thú về biểu
diễn bao đóng, khóa, phản khóa cùng một số dấu hiệu cần và đủ để nhận biết các
đặc trưng tương quan giữa các đối tượng nói trên.
Chương 3 cài đặt chương trình mô phỏng ứng dụng phép dịch chuyển lược
đồ quan hệ vào thiết kế cơ sở dữ liệu cùng với một số thí dụ.
Phần cuối của luận văn là kết luận và hướng phát triển và các tài liệu tham
khảo.
Em xin bày tỏ lòng chân thành cảm ơn PGS TSKH Nguyễn Xuân Huy người Thầy đã tận tình hướng dẫn, giúp đỡ em hoàn thành luận văn này.
Em xin chân thành cảm ơn Khoa Công nghệ thông tin - Đại học Thái Ngyên
đã tạo điều kiện về tinh thần cũng như cơ sở vật chất để em được học tập, nâng cao
kiến thức và thực hiện luận văn tốt nghiệp.
Em xin chân thành cảm ơn các Thầy, Cô giáo ở Viện Công nghệ thông tin Viện Khoa học và Công nghệ Việt Nam, các Thầy, Cô giáo ở Khoa Công nghệ
thông tin - Đại học Thái Nguyên đã nhiệt tình giảng dạy, hướng dẫn và cung cấp
cho em những kiến thức vô cùng quí báu, để em có điều kiện nâng cao kiến thức và
hiểu biết của mình trong lĩnh vực công nghệ thông tin.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________


Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 2

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 3




1.1.2. Nội dung của đề tài, các vấn đề cần giải quyết

CHƯƠNG 1
TỔNG QUAN VỀ ĐỀ TÀI VÀ CÁC KHÁI NIỆM CƠ SỞ

Luận văn tập trung tìm hiểu và cải tiến các kỹ thuật và thuật toán thu gọn
lược đồ quan hệ p thông qua phép dịch chuyển lược đồ quan hệ theo một tập thuộc
tính X. Khảo sát sự phụ thuộc của phép dịch chuyển thông qua các tính chất của tập

1.1. TỔNG QUAN VỀ ĐỀ TÀI

thuộc tính X. Khảo sát hai dạng biểu diễn khóa của lược đồ quan hệ qua phép dịch

1.1.1. Giới thiệu đề tài

chuyển. Xây dựng một hệ trình minh họa và đánh giá các kết quả lý thuyết.

Trong quản lý các cơ sở dữ liệu lớn và phức tạp đòi hỏi nhiều thuật toán hữu

1.1.3. Phương pháp nghiên cứu

hiệu để tính toán các đối tượng như bao đóng, khóa, phủ... Một số thuật toán tốt


1. Tiếp cận chủ yếu để giải quyết các vấn đề đặt ra trong phạm vi đề tài là tiên

theo nghĩa độ phức tạp tính toán giới hạn ở các hàm tuyến tính hoặc đa thức theo

đề hóa. Các hệ tiên đề được xây dựng trên cơ sở một hệ suy dẫn hình thức

chiều dài dữ liệu vào đã được công bố như thuật toán tính bao đóng của tập thuộc

với các tính chất cơ bản về các đối tượng cơ sở và các mối liên hệ giữa

tính, thuật toán tìm một khóa, thuật toán xác định thành viên hay thuật toán xác định

chúng. Cơ sở toán học của các hệ tiên đề là định lý về tính xác đáng và đầy

phụ thuộc hàm suy dẫn, thuật toán tìm giao các khóa, thuật toán xác định một lược

đủ cùng với các định lý về điều kiện cần và đủ cho các hệ tiên đề tương

đồ quan hệ có một khóa duy nhất… [1, 2, 8].

đương.

Một nhận xét tự nhiên là nếu kích thước của lược đồ quan hệ càng nhỏ thì

2. Tiếp cận hình thức vận dụng chủ yếu các phương pháp và các cấu trúc của

các thuật toán càng phát huy hiệu quả hơn. Một số hướng nghiên cứu tinh giản các

toán học rời rạc (bao gồm cả logic hình thức), kết hợp với các phương pháp


lược đồ cơ sở dữ liệu được thực hiện thông qua các phép biến đổi tương đương,

đối sánh, mô hình hóa, tối ưu và quy hoạch rời rạc.

chẳng hạn đưa tập phụ thuộc hàm về dạng thu gọn hoặc thu gọn tự nhiên, dạng
không dư, dạng tối ưu (chứa ít ký hiệu nhất)… đã được công bố [3, 5, 6, 7].
Trong phép dịch chuyển lược đồ quan hệ. Bản chất của kỹ thuật này là loại
bỏ khỏi lược đồ quan hệ ban đầu một số thuộc tính không quan trọng theo nghĩa
chúng không làm ảnh hưởng đến kết quả tính toán các đối tượng đang quan tâm như
bao đóng, khóa,... Mặc dù lược đồ quan hệ thu được qua phép thu gọn không tương
đương với lược đồ quan hệ ban đầu, nhưng ta có thể thu được các đối tượng cần tìm
bằng những phép toán đơn giản như loại bỏ hoặc thêm một số thuộc tính. Điều lý
thú là sau khi loại bỏ một số thuộc tính thì một số phụ thuộc hàm sẽ được loại bỏ
theo, vì chúng trở thành các phụ thuộc hàm tầm thường (có vế trái chứa về phải)
hoặc mang thông tin tiền định (đó là các phụ thuộc hàm dạng   X).

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



3. Kết hợp chặt chẽ giữa lý thuyết và thực hành, sử dụng và phát triển các phần
mềm nói chung và các phần mềm toán học nói riêng để kiểm định và thể
hiện các kết quả lý thuyết.
1.1.4. Phạm vi ứng dụng
Các kết quả thu được có thể vận dụng cho các quy trình thiết kế các cơ sở dữ
liệu quan hệ dùng trong các hệ thống thông tin, cụ thể là:
- Tính bao đóng của các tập thuộc tính,
- Tìm khóa của các lược đồ quan hệ.
- Chuẩn hoá LĐQH


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 4

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 5




1.1.5. Kết quả đạt được

Mục này trình bày một số khái niệm mở đầu về mô hình quan hệ. Trọng tâm

Về lý thuyết, luận văn tập trung vào các kết quả sau đây:

được tập trung vào các khái niệm hình thức của mô hình quan hệ, trong đó vận dụng
chủ yếu các cấu trúc rời rạc. Phần đầu tiên của mục này giới thiệu định nghĩa về

- Khái niệm về phép dịch chuyển lược đồ quan hệ,

quan hệ, thuộc tính và bộ. Phần thứ hai giới thiệu về đại số quan hệ như một ngôn

- Phát biểu và chứng minh công thức tính bao đóng qua phép dịch chuyển
lược đồ quan hệ,

ngữ truy nhập dữ liệu trong các cơ sở dữ liệu quan hệ. Phần thứ ba mô tả phụ thuộc

hàm như một công cụ toán học trợ giúp cho việc biểu đạt ngữ nghĩa dữ liệu và đảm

- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ nhất,
- Phát biểu và chứng minh kết quả về dạng biểu diễn khóa thứ hai,
- Phân tích thuật toán tìm khóa, phát triển thuật toán tìm tất cả các khoá
Về thực hành luận văn sẽ cài đặt các kết quả lý thuyết dưới dạng chương
trình bao gồm các chức năng sau:

bảo tính nhất quán của dữ liệu trong cơ sở dữ liệu, phụ thuộc hàm là lớp phụ thuộc
đầu tiên của phụ thuộc logic và đồng thời cũng là lớp phụ thuộc kinh điển theo
nghĩa, được Codd, tác giả của mô hình dữ liệu quan hệ đề xuất sớm nhất và được sử
dụng như một công cụ thiết kế các cơ sở dữ liệu chuẩn hóa. Các tính chất của phụ
thuộc hàm và các hệ tiên đề cho phụ thuộc hàm được mô tả đầy đủ, trong đó hệ tiên
đề Armstrong được sử dụng nhiều hơn cả. Một trong những khái niệm quan trọng

 Nạp và cập nhật dữ liệu: thuộc tính và các phụ thuộc hàm.

của phụ thuộc hàm là bao đóng của tập thuộc tính và các tính chất cơ bản của phép
toán lấy bao đóng được trình bày trong phần thứ tư của mục này. Phần thứ năm giới

 Tính bao đóng

thiệu các loại phủ quan trọng nhất, đóng vai trò thu gọn các tập phụ thuộc hàm, tạo

 Tìm các khóa của lược đồ quan hệ.

thuận tiện cho tối ưu hóa các thao tác ngữ nghĩa. Hai khái niệm chủ chốt liên quan

 Chuẩn hoá LĐQH


đến phụ thuộc hàm là khóa và các dạng chuẩn của lược đồ quan hệ được trình bày
trong hai phần cuối, phần thứ sáu và thứ bảy của mục.

1.2.1. Quan hệ, thuộc tính, bộ

1.2. CÁC KHÁI NIỆM CƠ SỞ
Trong các mô hình dữ liệu thì mô hình dữ liệu quan hệ được sử dụng rộng rãi

Định nghĩa

hơn cả do tính trực quan, kiến trúc đơn giản và có cơ sở toán học chặt chẽ. Ngoài ra,

Cho tập hữu hạn U = {A1, A2 , ... , An} khác rỗng (n 1). Các phần tử của U

người ta đã chứng minh được sự tương đương và cung cấp các phép chuyển đổi

được gọi là thuộc tính. Ứng với mỗi thuộc tính AiU, i = 1,2,...,n có một tập

giữa mô hình dữ liệu quan hệ với mô hình mạng và phân cấp. Một cách giải thích

chứa ít nhất hai phần tử dom(Ai) được gọi là miền trị của thuộc tính Ai. Gọi D

rất trực quan cho mô hình dữ liệu quan hệ là các dữ liệu của bài toán quản lý được

là hợp của các dom(Ai), i = 1,2,...,n. Một quan hệ R với các thuộc tính U, ký

tổ chức theo hàng và cột, cột biểu thị thuộc tính thông tin cần quản lý của một đối

hiệu là R(U), là một tập các ánh xạ t: UD sao cho với mỗi AiU ta có


tượng, thuộc tính này còn gọi là tiêu đề cột và các giá trị trong cột đó có cùng một

t(Ai)dom(Ai). Mỗi ánh xạ được gọi là một bộ của quan hệ R.

kiểu. Tập hợp tất cả các giá trị thuộc tính trên một hàng (gọi là bộ) là dữ liệu về một
đối tượng đang quản lý.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Mỗi quan hệ R(U) có hình ảnh là một bảng, mỗi cột ứng với một thuộc tính,
mỗi dòng là một bộ.



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 6

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 7




Ta ký hiệu t(U) là một bộ trên tập thuộc tính U.

Ta chấp nhận quy ước sau đây: Mọi cặp bộ t và v trong mọi quan hệ giống


Một quan hệ rỗng, ký hiệu , là quan hệ không chứa bộ nào.

nhau trên miền rỗng các thuộc tính, t. = v..
 Hàm Attr(R) cho tập thuộc tính của quan hệ R.

Vì mỗi quan hệ là một tập các bộ nên trong quan hệ không có hai bộ trùng lặp.

 Hàm Card(R) cho lực lượng (số bộ) của quan hệ R.

Các ký hiệu và một số quy ước
Theo truyền thống của lý thuyết cơ sở dữ liệu chúng ta chấp nhận các quy

Trong trường hợp tập thuộc tính U đã cho trước ta có thể viết đơn giản R thay

định sau đây:

cho R(U).

Các thuộc tính được ký hiệu bằng các chữ LATIN HOA đầu bảng chữ A, B, C,...

Ký hiệu REL(U) là tập toàn thể các quan hệ trên tập thuộc tính U, REL_p(U)

Tập thuộc tính được ký hiệu bằng các chữ LATIN HOA cuối bảng chữ X, Y,

là tập toàn thể các quan hệ có không qúa p bộ trên tập thuộc tính U, p  1.
Hai quan hệ R và S được gọi là tương thích nếu chúng có cùng một tập thuộc

Z,...
Các phần tử trong một tập thường được liệt kê như một xâu ký tự, không có


tính, tức là nếu Attr(R) = Attr(S).

biểu diễn tập, chẳng hạn ta viết X = ABC thay vì viết

Với mỗi bộ t trong quan hệ R(U) và mỗi bộ v trong quan hệ S(V) ta ký hiệu tv

X = A, B, C. XY biểu diễn hợp của hai tập X và Y, X Y. Phép trừ hai tập X

là phép dán hai bộ t và v. tv cho ta bộ r trên tập thuộc tính UV thoả điều

và Y được ký hiệu là X\Y, hoặc X-Y.

kiện: r.U = t và r.V = v.

Một phân hoạch của tập M (thành các tập con rời nhau và có hợp là M), X1,

Với mỗi bộ t trong quan hệ R(U) và với mỗi quan hệ S(V) ta ký hiệu tS là

X2, ..., Xm được ký hiệu là

phép dán bộ t với quan hệ S. tS cho ta quan hệ P(UV) = { tv | vS }.

các ký hiệu

M = X1 | X2 |... | Xm

Thí dụ

với ý nghĩa M = X1  X2  ...  Xm và Xi  Xj = , 1  i, j  m, i  j.


Cho U = ABC, V = BD, t(U) = (a,b,c), v(V) = (b,d). Ta có r(UV) = t * v =

Các bộ được biểu diễn bằng các chữ Latin thường có thể kèm chỉ số, thí dụ t,

(a,b,c,d) là một bộ trên tập thuộc tính UV = ABCD.

u, v, t1 ...

Cho thêm quan hệ S(BD)

Với mỗi bộ t trong quan hệ R(U) và mỗi tập con các thuộc tính X  U ta ký
hiệu t[X] hoặc t.X là hạn chế của bộ (ánh xạ) t trên tập thuộc tính X.
Ta chấp nhận quy ước tự nhiên là miền trị của mọi thuộc tính chứa ít nhất hai
phần tử. Trong trường hợp một miền trị của thuộc tính chỉ chứa một giá trị
duy nhất thì ta có thể loại bỏ cột tương ứng của thuộc tính đó trong quan hệ.

S (B D)
b d
x d
b e

Khi đó t*S cho ta quan hệ P(ABCD) sau đây
P (A B C D)
a b c d
a b c e

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 8

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 9




1.2.2. Đại số quan hệ

(ii) Lược bớt các dòng giống nhau trong bảng kết quả: chỉ giữ lại một
dòng trong số các dòng giống nhau.

Đại số quan hệ được xây dựng trên tập các quan hệ với các phép toán cơ sở là

chọn, chiếu, kết nối tự nhiên, chia, hợp, giao và trừ. Mục này sử dụng các ký
pháp theo tài liệu [7].

Phép kết nối tự nhiên

Định nghĩa

Phép chọn (phép lọc)

Cho hai quan hệ R(U) và S(V). Đặt M = UV. Phép kết nối (tự nhiên) hai quan

hệ R(U) và S(V), ký hiệu RS, cho ta quan hệ chứa các bộ được dán từ các bộ

Định nghĩa
Cho quan hệ R(U) và biểu thức điều kiện (còn gọi là biểu thức lọc hay biểu

u của quan hệ R với mỗi bộ v của quan hệ S (sao cho các trị trên miền thuộc

thức chọn) e. Phép chọn trên quan hệ R theo điều kiện e, ký hiệu R(e) cho ta

tính chung M của hai bộ này giống nhau).
P(UV) = R S ={ uv | uR, vS, u.M = v.M }

quan hệ:
P(U) = R(e) = { t  R | Sat(t, e) }

Nếu M = UV = , R S sẽ cho ta tích Descartes, trong đó mỗi bộ của quan

trong đó hàm logic Sat(t, e) kiểm tra bộ t thoả điều kiện e được xác định theo
hai bước sau:

hệ R sẽ được ghép với mọi bộ của quan hệ S.
Phép cộng (hợp)

1) Thay mọi xuất hiện của mỗi thuộc tính A trong biểu thức chọn e bằng trị
tương ứng của A trong bộ t, t.A, ta thu được một mệnh đề logic b.

Định nghĩa
Phép hợp (theo lý thuyết tập hợp hoặc nối dọc) hai quan hệ tương thích R(U)

2) Tính trị của b. Nếu là đúng (True) thì bộ t thoả điều kiện e; ngược lại, nếu


và S(U), ký hiệu RS, hoặc R+S, cho ta quan hệ chứa các bộ của mỗi quan hệ

trị của b là sai (False) thì bộ t không thoả điều kiện e.

thành phần,

Trong các biểu thức chọn ta sử dụng ký hiệu cho các phép toán logic như sau:
Hội: Tuyển: Phủ định: ¬, Kéo theo: 

P(U) = R S = { t | tR  tS }
Phép trừ

Phép chiếu

Định nghĩa

Định nghĩa

Phép trừ (theo lý thuyết tập hợp hoặc lấy phần riêng) hai quan hệ tương thích

Phép chiếu quan hệ R(U) trên tập con thuộc tính X  U, ký hiệu R[X], cho ta

R(U) và S(U), ký hiệu R\S, hoặc R-S, cho ta quan hệ chứa các bộ của quan hệ

quan hệ

R không có trong quan hệ S,
P(U) = R \ S = { t | tR, t S }


P(X) = R[X] = { t.X | tR }
Phép giao

R[X] được tính theo 2 bước như sau:

Định nghĩa

(i) Xoá các cột không thuộc X của bảng R,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 10

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 11




Phép giao (theo lý thuyết tập hợp hoặc lấy phần chung) hai quan hệ tương

MaxR, A: cho giá trị lớn nhất trong thuộc tính cột A của quan hệ R.

thích R(U) và S(U), ký hiệu RS, hoặc R&S cho ta quan hệ chứa các bộ xuất


MinR, A: cho giá trị nhỏ nhất trong thuộc tính cột A của quan hệ R.

hiện đồng thời trong cả hai quan hệ thành phần,

Nếu trong biểu thức quan hệ có chứa các hàm tiện ích thì các hàm này được

P(U) = R S ={ t | tR, tS }

thực hiện sớm nhất trong ngữ cảnh cho phép.

Các phép toán hợp, trừ và giao đựơc gọi là các phép toán tập hợp trên các
quan hệ (tương thích).

Thí dụ
Biểu thức quan hệ P = SR(A > Avg(S,A))[AB] sẽ được thực hiện theo trật tự sau

Phép chia

đây:

Định nghĩa

1. Tính hàm c = Avg(S,A)

Cho hai quan hệ R(U) và S(V) thỏa V  U. Đặt M = U\V. Phép chia quan hệ
R cho quan hệ S, ký hiệu R:S, cho ta quan hệ

2. Thực hiện phép chọn P1 = R(A > c)
3. Thực hiện phép chiếu P2 = P1[AB]


P(M) = R : S = { t.M | t R, (t.M)*S R }
Thứ tự thực hiện các phép toán quan hệ

4. Thực hiện phép kết nối P = S*P2.

1.2.3. Phụ thuộc hàm, hệ tiên đề Armstrong, lược đồ quan hệ

Trong một biểu thức quan hệ các phép toán một ngôi có độ ưu tiên cao hơn
(do đó được thực hiện sớm hơn) các phép toán hai ngôi. Tiếp đến là nhóm các
phép toán kết nối, giao và chia, cuối cùng là nhóm các phép toán cộng và trừ.
Thứ tự ưu tiên từ cao đến thấp của các phép toán quan hệ được liệt kê như sau:

Phụ thuộc hàm
Định nghĩa
Cho tập thuộc tính U. Một phụ thuộc hàm (PTH) trên U là biểu thức dạng
f: XY ; X,Y  U

(), []
 ,, :

Nếu f: XY là một phụ thuộc hàm trên U thì ta nói tập thuộc tính Y phụ thuộc

 ,\

vào tập thuộc tính X, hoặc tập thuộc tính X xác định hàm tập thuộc tính Y. X là

Dãy các phép toán cùng thứ tự ưu tiên được thực hiện lần lượt từ trái qua phải.
Nếu biểu thức quan hệ có chứa các cặp ngoặc (*) thì các biểu thức con trong


xác định vế trái và vế phải của PTH f, cụ thể là nếu f:XY thì LS(f) = X,
RS(f)=Y.

các cặp ngoặc được thực hiện trước.

Cho quan hệ R(U) và một PTH f: XY trên U. Ta nói quan hệ R thoả PTH f

Một số hàm tiện ích

và viết R(f), nếu hai bộ tuỳ ý trong R giống nhau trên X thì chúng cũng giống

SumR, A: cho tổng các giá trị số trong thuộc tính cột A của quan hệ R.
AvgR, A: cho trung bình cộng các giá trị trong thuộc tính cột A của quan hệ R.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

vế trái và Y là vế phải của PTH f. Ta cũng dùng hai toán tử LS(f) và RS(f) để



nhau trên Y,
R(XY)  (u,v  R): (u.X = v.X)  (u.Y = v.Y)
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 12

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 13





Ta dùng ký hiệu X ↛ Y với ý nghĩa tập thuộc tính Y không phụ thuộc hàm vào

Cho tập PTH F trên tập thuộc tính U. Bao đóng của F, ký hiệu F+ là tập nhỏ
nhất các PTH trên U chứa F và thoả các tính chất F1-F3 của hệ tiên đề

tập thuộc tính X.
Cho tập PTH F trên tập thuộc tính U. Ta nói quan hệ R(U) thoả tập PTH F, và

Armstrong Ao sau đây:
X, Y, Z  U:

viết R(F), nếu R thoả mọi PTH trong F,

F1. Tính phản xạ: Nếu X  Y thì XY  F +

R(F)  ( f  F): R(f)
Nếu quan hệ R thỏa PTH f ta cũng nói PTH f đúng trong quan hệ R.

F2. Tính gia tăng: Nếu XY  F + thì XZYZ  F +
F3. Tính bắc cầu: Nếu XY  F + và YZ  F + thì XZ  F +

Thí dụ

Chú ý

Cho quan hệ R(A, B, C, D) như sau

R(A
a
a
b
b

B
1
1
2
2

C
x
y
x
y

Các PTH có vế trái chứa vế phải như mô tả trong F1 được gọi là tầm thường. Các

D)
2
2
1
1

PTH tầm thường đúng trong mọi quan hệ. Ngoài ra, các quan hệ trên tập thuộc tính
U có không quá một bộ thỏa mọi PTH trên U.
Suy dẫn theo tiên đề (suy dẫn logic)


Định nghĩa
và các PTH f1: AA, f2: AB, f3: ACC, f4: AD, f5: DA, f6: AC.
Khi đó các PTH f1 - f5 đúng trong R, mặt khác, R không thỏa PTH f6.

Ta nói PTH f được suy dẫn theo tiên đề (hoặc suy dẫn logic) từ tập PTH F và
ký hiệu là F╞ f, nếu f  F +.

Cho trước tập PTH F trên tập thuộc tính U, ký hiệu SAT(F) là tập toàn thể các
quan hệ trên U thoả tập PTH F, SAT_p(F), p  1 là tập toàn thể các quan hệ có
không quá p bộ trên U và thoả tập PTH F , cụ thể là

Nói cách khác PTH f được suy dẫn theo tiên đề từ tập PTH F nếu xuất phát từ
F, áp dụng các luật F1, F2 và F3 của hệ tiên đề Armstrong Ao sau hữu hạn lần

SAT(F) = { R | RREL(U), R(F) }

ta sẽ thu được PTH f.

SAT_p(F) = { R | RREL_p(U), R(F) }
Cho tập  các quan hệ trên U, ký hiệu FD() là tập các PTH trên U đúng
trong mọi quan hệ của .

Suy dẫn theo quan hệ

Định nghĩa
Cho tập PTH F trên tập thuộc tính U và f là một PTH trên U. Ta nói PTH f
được suy dẫn theo quan hệ từ tập PTH F và viết F├ f, nếu mọi quan hệ R(U)

Hệ tiên đề Armstrong


thoả F thì R cũng thoả f.

Bao đóng của tập PTH

F├ f  SAT(F)  SAT(f)

Định nghĩa
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

F╞ f  f  F +



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 14

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 15




Cho tập thuộc tính U và tập PTH F trên U, ta định nghĩa F* là tập các PTH f
trên U được suy dẫn theo quan hệ từ tập PTH F

Một số tính chất của PTH

Cho tập thuộc tính U và các tập phụ thuộc hàm F, G trên U, tập một số quan

F * = { f: XY | X,Y  U, F├ f }

hệ  trên U, các quan hệ R và S trên U. Dễ dàng chứng minh các tính chất sau
đây:

Định lý

1. Nếu F  G thì SAT(F)  SAT(G)

(Tính đủ và xác đáng của hệ tiên đề Armstrong)

2. SAT(FG) = SAT(F)  SAT(G)

F+=F*

3. FD(RS)  FD(R)  FD(S)

Nói cách khác, suy dẫn theo quan hệ và suy dẫn theo logic là một, tức là

4. R  S  FD(R)  FD(S)
5. F  FD(SAT(F))

F╞ f  F├ f

6.   SAT(FD())

Suy dẫn theo quan hệ có không quá p bộ


7. SAT(FD(SAT(F))) = SAT(F)

Định nghĩa

8. FD(SAT(FD())) = FD()
Cho tập PTH F trên tập thuộc tính U và f là một PTH trên U. Ta nói PTH f
được suy dẫn theo quan hệ có không quá p bộ từ tập PTH F và viết F ├p f,
nếu mọi quan hệ R trong REL_p(U) thoả F thì R cũng thoả f.

Thí dụ
Chứng tỏ FD(RS)  FD(R )  FD(S).
Ta chọn U = AB; quan hệ R(U) chứa một bộ duy nhất u = (a,x); quan hệ S(U) chứa

F├p f  SAT_p(F)  SAT_p(f)

một bộ duy nhất v = (a,y), x y. R và S thỏa mọi PTH trên U. Quan hệ P = R S

Cho tập thuộc tính U và tập PTH F trên U, ta định nghĩa F' là tập các PTH f
trên U được suy dẫn theo quan hệ có không quá hai bộ từ tập PTH F

chứa 2 bộ u và v. P không thỏa PTH AB.
Một số tính chất mở rộng của PTH

F' = { f: XY | X,Y  U, F├2 f }

Sử dụng ba tiên đề Armstrong ta dễ dàng chứng minh các tính chất F4 -F11

Định lý

sau đây. Một số tính chất được chia nhỏ nhằm mục đích mô tả các hệ tiên đề khác


(Định lý tương đương)

cho PTH trong các mục tiếp theo.
F + = F * = F'

 X, Y, Z, V  U,  A  U:

Nói cách khác, đối với phụ thuộc hàm, ba loại suy dẫn sau là tương đương

F5. Tính phản xạ chặt: X X

(i) Suy dẫn logic: F╞ f ,

F6. Mở rộng vế trái và thu hẹp vế phải: XY  XZY\V

(ii) Suy dẫn theo quan hệ: F├ f , và

F7. Cộng tính đầy đủ: XY, ZV  XZYV

(iii) Suy dẫn theo quan hệ có không quá hai bộ: F├2 f.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

F4. Tính tựa bắc cầu: XY, YZV  XZV



F8. Mở rộng vế trái: XY  XZY
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 16

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 17




F9. Cộng tính ở vế phải: XY, XZ  XYZ

X+ = {A U | X  AF+}

F10. Bộ phận ở vế phải: XYZ  XY

Thuật toán tìm bao đóng của một tập thuộc tính

F11.Tính tích luỹ: XYZ, ZAV  XYZA

Cho tập PTH F trên tập thuộc tính U và một tập con các thuộc tính X trong U.
Lược đồ quan hệ

Để xác định bao đóng X+ của tập thuộc tính X ta xây dựng dãy bao nhau
X(0)  X(1)  …  X(i) như sau

Định nghĩa
Lược đồ quan hệ (LĐQH) là một cặp a = (U,F), trong đó U là tập hữu hạn các


 Xuất phát: Đặt X(0)=X,

thuộc tính, F là tập các ràng buộc trên các miền trị (dữ liệu) của các thuộc tính

 Với i > 0, ta đặt

X (i 1)  X (i )

trong U.



R

L RF
L X ( i )

Trong chương này chúng ta chỉ xét một loại ràng buộc là PTH và một số biến

 Nếu X(i+1) = X(i) thì dừng thuật toán và cho kết quả X + = X(i) .

thể của PTH.
Theo quy ước trên, trong chương này, chúng ta hiểu lược đồ quan hệ (LĐQH)
là một cặp a = (U,F), trong đó U là tập hữu hạn các thuộc tính, F là tập các

Algorithm Closure

PTH trên U.

Format: Closure(X,F)

Input:

Quy ước

- Tập PTH F trên U
- Tập con thuộc tính X của U

Trong trường hợp không chỉ rõ tập F, ta xem LĐQH chỉ là một tập hữu hạn

Output: - Y = X+ = {A U | XA F+}

các thuộc tính U.

Method
Y:=X;

Các hệ tiên đề khác cho PTH

repeat

Các hệ tiên đề cho PTH sau đây tương đương với hệ tiên đề Armstrong Ao [7]
Bo = {F5, F10, F11}

Z:=Y;
for each FD LR in F do

So = {F1, F4}

if L  Y then


Do = {F3, F5, F6, F7}

Y:=YR;

Mo = {F4, F5, F8}

endif;
endfor;

1.2.4. Bao đóng của tập thuộc tính

until Y=Z;

Định nghĩa

return Y;

Cho tập PTH F trên tập thuộc tính U và một tập con các thuộc tính X trong U.

end Closure.

Bao đóng của tập thuộc tính X, ký hiệu X+ là tập thuộc tính
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________


_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 18

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 19




Thuật toán trên có độ phức tạp O(mn2 ), trong đó n là số lượng thuộc tính trong U,
m là số lượng PTH trong tập F.

Ngoài ra, sử dụng ba tính chất (C1), (C2) và (C3) nói trên ta dễ dàng chứng
minh các tính chất (C4)-(C8) sau đây:
(C4) (XY)+  X +Y +

Quy ước giản lược

Ta thường viết XY thay vì viết XYF+ hoặc F╞ XY.
Bài toán thành viên

(C5) (X+Y)+ = (XY+)+ = ( XY)+
(C6) XY khi và chỉ khi Y+ X+
(C7) XX+ và X+X

Cho tập thuộc tính U, một tập các PTH F trên U và một PTH f: XY trên U.
Hỏi rằng f F (f có phải là thành viên của F ) hay không ?
+

(C8) X+ = Y+ khi và chỉ khi XY và YX


+

Định lý

1.2.5. Phủ của tập PTH
Định nghĩa

(Định lý thành viên)

Cho hai tập PTH F và G trên cùng một tập thuộc tính U. Ta nói F suy dẫn ra

XY  F + khi và chỉ khi Y  X +

được G, ký hiệu F╞ G, nếu gG: F╞ g. Ta nói F tương đương với G, ký

Thuật toán cho bài toán thành viên

hiệu F  G, nếu F╞ G và G╞ F.

Algorithm IsMember

Nếu F  G ta nói G là một phủ của F.

Format: IsMember(f,F)
Input:

Ký hiệu F ≢ G có nghĩa F và G không tương đương.

- Tập PTH F trên U


Cho tập PTH F trên tập thuộc tính U và X là tập con của U, ta dùng ký hiệu

- PTH f trên U

XF+ trong trường hợp cần chỉ rõ bao đóng của tập thuộc tính X lấy theo tập

Output: - True, nếu f F ;
+

PTH F.

- False, trong trường hợp phủ định.
Method

Phủ thu gọn tự nhiên

IsMember := (RS(f)  Closure(LS(f),F));

Định nghĩa

end IsMember.

Cho hai tập PTH F và G trên cùng một tập thuộc tính U. G là phủ thu gọn tự

Một số tính chất của bao đóng

nhiên của F nếu

Cho LĐQH a = (U,F). Khi đó  X, Y  U ta có


1. G là một phủ của F, và

(C1) Tính phản xạ: X  X +

2. G có dạng thu gọn tự nhiên theo nghĩa sau:

(C2) Tính đồng biến: X  Y X + Y +

2a. Hai vế trái và phải của mọi PTH trong G rời nhau (không giao

(C3) Tính lũy đẳng: (X +)+ = X +

nhau.)
f  G: LS(f)  RS(f) = 

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 20

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 21





2b. Các vế trái của mọi PTH trong G khác nhau đôi một.
f, g  G: f  g  LS(f)  LS(g)

Nếu F và G là hai tập PTH trên cùng một tập thuộc tính U thì F  G khi và chỉ
khi X  U: XF+ = XG+

Thuật toán tìm phủ thu gọn tự nhiên
Algorithm Natural_Reduced

Phủ không dư

Format: Natural_Reduced(F)
Input:

Mệnh đề

Định nghĩa

- Tập PTH F

Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ không dư

Output: - Một phủ thu gọn tự nhiên G của F
(i) G  F

của F nếu










(ii)LR  G: L R = 

(i) G là một phủ của F, và









(iii)LiRi,LjRjG: ij  LiLj

(ii) G có dạng không dư theo nghĩa sau: gG: G \{g} ≢ G

Method

Thuật toán tìm phủ không dư của tập PTH

G:=;


Algorithm Nonredundant

for each FD LR in F do

Format: Nonredundant(F)

Z:=R\L;

Input:

if Z then

- Tập PTH F

Output: - Một phủ không dư G của F

if there is an FD LY in G then

(i) G  F

replace LY in G by LYZ

(ii) g  G: G\{g} ≢ G

else add LZ to G;

Method

endif;


G:=F;

endif;

for each FD g in F do

endfor;

if IsMember(g,G\{g})then

return G;

G:=G\{g};

end Natural_Reduced.

Nếu dùng kỹ thuật chỉ dẫn để tổ chức truy nhập trực tiếp tới các thuộc tính và
PTH thì thuật toán thu gọn tự nhiên Natural_Reduced đòi hỏi độ phức tạp tính toán
là O(mn) trong đó m là số lượng PTH trong tập F, n là số lượng thuộc tính trong U.

endif;
endfor;
return G;
end Nonredundant.

Để ý rằng mn là chiều dài dữ liệu vào của thuật toán, do đó O(mn) chính là độ phức

Phủ thu gọn

tạp tuyến tính theo chiều dài dữ liệu vào.

Ta dễ dàng chứng minh tính đúng của mệnh đề sau,
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Phủ thu gọn trái


Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 22

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 23




Định nghĩa

Định nghĩa

Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn trái

Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn phải

của F nếu

của F nếu


(i) G là một phủ của F, và

(i) G là một phủ của F, và

(ii) (LRG,AL): G\{LR}{L\AR} ≢ G

(ii) (LRG, AR): G\{LR}{LR\A} ≢ G

Thuật toán tìm phủ thu gọn trái của tập PTH

Thuật toán tìm phủ thu gọn phải của tập PTH

Để ý rằng AL ta có L\A L, nên

Để ý rằng, AR: R\A R, nên (g: LRG,AR): G╞ LR\A

g: LRG,AL): G\{g}{L\AR}╞ LR,

do đó ta chỉ cần kiểm tra G\{LR}{LR\A}╞ LA.

do đó ta chỉ cần kiểm tra G ╞ L\AR ?

Algorithm Right_Reduced

Algorithm Left_Reduced

Format: Right_Reduced(F)

Format: Left_Reduced(F)


Input:

- Tập PTH F

Input:

Output:

- Một phủ thu gọn phải G của F

- Tập PTH F

(i) G  F

Output: - Một phủ thu gọn trái G của F
(i) G  F

(ii)(g:LR G,AR): G\{g}{LR\A}≢G

(ii) g:LR G,AL: G\{g}{L\AR}≢G

Method
G:= F;

Method

for each FD g:L  R in F do

G:= F;

for each FD g:L  R in F do

H:=G\{LR};

X:=L;

X:=R;

for each attribute A in X do

for each attribute A in X do
if A in Closure(L,H{LR\A})then

if IsMember(L\AR,G)then

delete A from R in G;

delete A from L in G;

endif;

endif;

endfor;

endfor;

endfor;

endfor;


return G;

return G;
end Left_Reduced.

end Right_Reduced.

Phủ thu gọn phải

Phủ thu gọn
Định nghĩa

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 24

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 25





Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ thu gọn của

add LA to G;

F nếu G đồng thời là phủ thu gọn trái và thu gọn phải của F.

endfor;

Thuật toán tìm phủ thu gọn của tập PTH

endfor;

Algorithm Reduced

G:=Nonredundant(Left_Reduced(G));

Format: Reduced(F)
Input:

endif;

return G;

- Tập PTH F

end MinCover.

Output: - Một phủ thu gọn của F

1.2.6. Khóa của lược đồ quan hệ


Method
return Right_Reduced(Left_Reduced(F));

Khóa của lược đồ quan hệ

end Reduced.

Định nghĩa

Phủ tối tiểu

Cho LĐQH a = (U, F). Tập thuộc tính K  U được gọi là khoá của LĐQH a

Định nghĩa

nếu

Cho hai tập PTH F và G trên tập thuộc tính U. G được gọi là phủ tối tiểu của

(i) K + = U

F nếu

(ii) A K: (K \A)+ U

(i) G là một phủ thu gọn của F,

Hai điều kiện trên tương đương với


(ii) Vế phải của mọi PTH trong G chỉ chứa một thuộc tính.
Thuật toán tìm phủ tối tiểu của tập PTH

(ii') A K: K\A ↛ U

Algorithm MinCover

Nếu K thoả điều kiện (i) (hoặc (i')) thì K được gọi là một siêu khoá.

Format: MinCover(F)
Input:

(i') KU

Thuộc tính A  U được gọi là thuộc tính khoá (nguyên thuỷ hoặc cơ sở) nếu A

- Tập PTH F

có trong một khoá nào đấy. A được gọi là thuộc tính không khoá (phi nguyên

Output: - Một phủ tối tiểu G của F

thuỷ hoặc thứ cấp) nếu A không có trong bất kỳ khoá nào.

Method
// Tách mỗi PTH LR trong F thành các PTH có
// vế phải chỉ chứa một thuộc tính

LA, A  R


Cho LĐQH a = (U, F). Ta ký hiệu UK là tập các thuộc tính khóa của a và U0 là
tập các thuộc tính không khóa của a. Dễ thấy UK |Uo là một phân hoạch của U.
Chú ý

G:=;
for each FD LR in F do

Trong một số tàì liệu thuật ngữ khoá được dùng theo nghĩa siêu khoá và thuật

for each attribute A in R\L do

ngữ khoá tối tiểu được dùng theo nghĩa khoá.

if LA not_in G then
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 26

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 27





Định lý

Thuật toán tìm một khóa của LĐQH
Tư tưởng: Xuất phát từ một siêu khóa K tùy ý của LĐQH, duyệt lần lượt các thuộc

( Đặc trưng của các thuộc tính khóa [7])

tính A của K, nếu bất biến (K\A) = U được bảo toàn thì loại A khỏi K. Có thể thay

Cho K là một khóa của LĐQH a = (U,F). Khi đó với mọi tập con X của K ta

kiểm tra (K\A) = U bằng kiểm tra A (K\A) .

có: X+ K=X.

+

+

+

Algorithm Key

Chứng minh

Format: Key(U,F)

Vì X  X+ và X  K nên X  X+K. Ta cần chứng minh X+K  X. Giả sử


Input:

- Tập thuộc tính U

AX+K và AX. Ta xét tập M = K\A. Dễ thấy X  M. Ta có, theo tính chất đồng

- Tập PTH F

biến của bao đóng, AX+  M+. Từ đây suy ra K  M+, do đó, theo tính chất lũy

Output: - Khóa K  U thỏa









(i) K+ = U

đẳng của bao đóng và tính chất khóa của K ta có, U = K+  M++ = M+, tức là M là

(ii)AK: (K\A)+ U

bộ phận thực sự của khóa K lại đồng thời là siêu khóa, trái với định nghĩa khóa. Vậy
A X ■

Method

K:= U;

Định lý

for each attribute A in U do

(Công thức tính giao các khóa)

if A in Closure(K\A,F) then

Cho LĐQH a = (U,F) với n thuộc tính trong U và m PTH trong F. Gọi UI là

K:=K\A

giao các khóa của a. Khi đó có thể xác định giao các khóa bằng một thuật

endif;

toán tuyến tính theo mn qua công thức

endfor;

UI  U \

return K;

 ( R \ L)

L RF


end Key.

Thuật toán duyệt n thuộc tính, với mỗi thuộc tính thực hiện phép lấy bao đóng với
độ phức tạp n2m. Tổng hợp lại, độ phức tạp tính toán của thuật toán là O(n3m).

Chứng minh
Trước hết để ý rằng các PTH LR và L(R\L) là tương đương, do đó ta có
thể giả thiết rằng mọi PTH trong F đều có dạng LR, LR = , tức là giả thiết

Một số tính chất của khóa

rằng tập PTH F được cho dưới dạng thu gọn tự nhiên. Do giả thiết này ta có R\L=R.

Các tính chất đơn giản

Dễ nhận thấy, theo công thức tính UI trong định lý, UI là tập các thuộc tính không

Cho LĐQH (U,F). Khi đó

có mặt trong vế phải của mọi PTH trong F, do đó chúng phải có mặt trong mọi

1. K  U là một khoá khi và chỉ khi U phụ thuộc đầy đủ vào K.

khóa. Giả sử A là một thuộc tính có trong vế phải của PTH LAR' nào đó của F.

2. Hai khoá khác nhau của một LĐQH không bao nhau.

Ta chứng minh A sẽ không xuất hiện trong một khóa K nào đấy của a. Thật vậy, xét

3. Mọi LĐQH đều có ít nhất một khoá.


tập X = U\A. Dễ thấy X  L và X+ = XAR' = U và do đó X là siêu khóa. Từ siêu
khóa X không chứa A ta lấy ra được một khóa K không chứa A ■

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 28

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 29




Thí dụ

Thuật toán xác định giao các khóa trong LĐQH
Algorithm KeyIntersec

Cho LĐQH a = (U, F), U = ABCDE, F = {ABC, ADB, BD}.

Format: KeyIntersec(U,F)


Ta có, giao của các khóa là UI = ABCDE\BCD = AE. UI+ = (AE)+ = AE  U

Input:

- Tập thuộc tính U

nên a có hơn một khóa. Vì UI là giao các khóa nên ta có thể bổ sung cho UI một số

- Tập PTH F

thuộc tính để thu được các khóa. Dễ xác định được a có hai khóa là K1 = ABE và

Output: - Giao các khóa
M U \

K2= ADE. Ta còn có, tập các thuộc tính khóa là UK = ABDE, tập các thuộc tính

 ( R \ L)

không khóa là Uo = C.

LRF

Method

1.2.7. Chuẩn hóa LĐQH trên cơ sở PTH

M:=U;
for each FD LR in F do


Phép tách

M:= M\(R\L);

Định nghĩa

endfor;

Cho lược đồ quan hệ a = (U,F). Một phép tách lược đồ a là một họ các tập

return M;

con của U,  = (X1, X2,...,Xk) thỏa tính chất

end KeyIntersec.

Theo thuật toán trên, để tính giao các khóa ta cần thực hiện m lần lặp ứng với

k

 Xi U

i 1

số lượng PTH trong tập F. Trong mỗi lần lặp, phép toán trên tập hợp n phần tử có
độ phức tạp O(n) do đó độ phức tạp của thuật toán tính giao các khóa, KeyIntersec

Phép tách  = (X1, X2,...,Xk) trên lược đồ a được gọi là không tổn thất (hoặc

là O(mn). Tích mn chính là chiều dài của biểu diễn LĐQH a = (U,F) tức là chiều dài


không mất thông tin) đối với tập PTH F nếu
 R(U)  SAT(F): R[X1]  R[X2]  ...  R[Xk] = R

của dữ liệu vào trong thuật toán.

Ngược lại, nếu không tồn tại đẳng thức thì ta gọi  là phép tách tổn thất.

Định lý
(Định lý về khóa duy nhất, Hồ Thuần, Lê Văn Bào)

Kiểm tra tính tổn thất của phép tách bằng kỹ thuật bảng

Cho LĐQH a = (U,F). Gọi UI là giao của các khóa trong a. Khi đó a có một

Algorithm Lossless_Join_Testing

khóa duy nhất khi và chỉ khi UI + = U.

Input

Chứng minh

- LĐQH

p = (U,F)

- Phép tách  = (X1, X2,...,Xk)

+


Nếu UI = U thì UI là siêu khóa. Vì UI là giao của các khóa đồng thời lại là
siêu khóa nên a không thể còn khóa nào khác ngoài UI. Ngược lại, nếu a chỉ có một

Output

khóa duy nhất K thì giao của các khóa đương nhiên là UI = K, và do đó, theo tính



True, nếu  là một phép tách không tổn thất



False, ngoài ra.

+

+

chất của khóa UI = K = U ■
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________


Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 30

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 31




Method

Vì T* chứa dòng thứ hai gồm toàn ký hiệu phân biệt nên phép tách đã cho là không

1. Khởi trị: Lập bảng T với các cột là các thuộc tính trong U và k dòng, mỗi dòng

tổn thất.

ứng với một thành phần của Xi trong : Dòng i chứa các ký hiệu phân biệt

b) Dùng kỹ thuật bảng để kiểm tra tính kết nối không tổn thất của phép tách trong

(KHPB) aj ứng với các thuộc tính Aj trong Xi và các ký hiệu không phân biệt

LĐQH p = (U,F), U = ABCDE,

(KHKPB) bij ứng với các thuộc tính Aj trong U-Xi . Chú ý rằng mọi KHPB trong

F = { A  C, B  C, C  D, DE  C, CE  A },  = (AD, AB, BE, CDE).

cột j của T là giống nhau và bằng aj còn mọi KHKPB trong bảng T lúc đầu là khác
nhau.


T  T*
1. A

2. B

3. C

4. D

5. E

1. AD

a1

b12

b13 / a3

a4

b15

2. AB

a1

a2


b23 / b13 / a3 b24 / a4

b25

3. BE

b31

a2

b33 / b13 / a3 b34 / a4

a5

2. Sửa bảng: Lặp đến khi bảng T không còn thay đổi:
Vận dụng các F-luật để biến đổi bảng như sau:
Với mỗi PTH L  R trong F, nếu trong bảng T có chứa hai dòng u và v giống
nhau trên L thì sửa các ký hiệu của chúng cho giống nhau trên mọi cột A R

4. CDE b41 / b31

trong bảng T như sau:
a. nếu u.A = v.A: không sửa,
b. nếu một trong hai ký hiệu u.A hoặc v.A là KHPB thì sửa mọi xuất hiện
trong bảng của KHKPB thành KHPB đó,
c. nếu cả hai ký hiệu u.A và v.A đều là KHKPB thì sửa mọi xuất hiện trong
bảng của ký hiệu có chỉ số thứ nhất lớn hơn thành ký hiệu thứ hai.
3. Kết luận: Gọi bảng kết quả là T*.

b42


a3

a4

a5

Vì T* không chứa dòng nào gồm toàn ký hiệu phân biệt nên phép tách đã cho là tổn
thất.
Tính chất của phép tách
Mệnh đề
Cho LĐQH a = (U, F). Nếu X  Y thì phép tách (XY, U\(Y\X)) là không tổn thất.

Nếu T* chứa một dòng toàn KHPB thì return True nếu không return

Các dạng chuẩn

False.
end Lossless_Join_Testing.

Định nghĩa

Thí dụ

LĐQH p = (U,F) được gọi là lược đồ

a) Dùng kỹ thuật bảng để kiểm tra tính kết nối không tổn thất của phép tách trong
LĐQH p = (U,F), U = ABCD, F = { A  B, AC  D },  = (AB, ACD).
T  T*


a) dạng chuẩn 1 (1NF) nếu mọi thuộc tính trong U đều không phải là thuộc
tính phức hợp,
b) dạng chuẩn 2 (2NF) nếu p là LĐ 1NF và mọi thuộc tính không khoá đều

1. A 2. B

phụ thuộc đầy đủ vào mọi khoá,

3. C 4. D

1. AB

a1

a2

b13

b14

2. ACD

a1

b22 / a2

a3

a4


 A  Uo ,  K  Key(p) : K + A
c) dạng chuẩn 3 (3NF) nếu p là LĐ 1NF và mọi thuộc tính không khoá đều
phụ thuộc trực tiếp vào mọi khoá,

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 32

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 33




 A  Uo ,  K  Key(p) : K * A
d) dạng chuẩn 3 (3NF) nếu p là LĐ 1NF và mọi PTH không tầm thường

//

nếu không

//


(K,K)} với K là một khóa của p.

return {(K1X1,K1),...,(KsXs,Ks),

construct  = (K1X1,K2X2,...,KsXs);

XA, A là thuộc tính không khóa đều cho ta X là một siêu khoá,

for each component V = KiXi in  do

 (X  A, A  Uo – X )  X + = U

if V+ = U then

e) dạng chuẩn Boyce-Codd (BCNF) nếu p là LĐ 1NF và mọi thuộc tính đều

// V = KiXi là siêu khóa

return {(K1X1,K1),...,(KsXs,Ks)};

phụ thuộc trực tiếp vào mọi khoá,

endif;

 A  U ,  K  Key(p) : K * A

endfor;
K = Key(U,F);

f) dạng chuẩn Boyce-Codd (BCNF) nếu p là LĐ 1NF và mọi PTH không tầm


return {(K1X1,K1),...,(KsXs,Ks),(K,K)};

thường XY đều cho ta X là một siêu khóa.
 (X  Y, Y – X   )  X = U
+

End 3NF.

Thí dụ

Sơ đồ tương quan giữa các dạng chuẩn

Xác định và giải thích dạng chuẩn cao nhất của LĐQH sau:

BCNF  3NF  2NF

a = (U, F), U = ABCD, F = { A  C, D  B, C  ABD }

Thuật toán chuẩn hoá 3NF không tổn thất và bảo toàn PTH

LĐQH a có 2 khoá là A và C vì A+ = C+ = ABCD = U. Tập thuộc tính khoá là

Algorithm 3NF

Uk = AC, tập thuộc tính không khoá là Uo = BD. Ta có, DB, B là thuộc tính không

Function: Chuẩn hóa 3NF không tổn thất và bảo toàn PTH.

khóa và D không phải là một siêu khóa do đó a không ở 3NF và đương nhiên không


Input: LĐQH p = (U,F)

ở BCNF. Vì hai khoá A và C đều chỉ có một thuộc tính nên các thuộc tính không

Output: Các LĐQH 3NF (U1,K1),(U2,K2),...,(Us ,Ks) thoả

khoá khác là B và D đều phụ thuộc đầy đủ vào hai khoá này. Vậy a ở 2NF.

RREL(U): R[U1]R[U2]...R[Us] = R
K1, K2,..., Ks - khoá của các lược đồ tương ứng
F   i=1..s(F+[Ui])
Method
1. Tìm một phủ tối tiểu của F:
G = {K1  A1,K2  A2,..., Km  Am}
2. Ghép các PTH có cùng vế trái trong G để thu được
phủ G = {K1  X1, K2  X2,..., Ks  Xs}.
3. // Xét phép tách  = (K1X1,...,KsXs). Nếu 
// chứa một siêu khóa nào đó
//

của p thì return {(K1X1,K1),...,( KsXs,Ks)}

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________


_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 34

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 35




lược đồ b bằng cách xóa khỏi lược đồ a các thuộc tính A, D và H. Ta thu được lược

CHƯƠNG 2

đồ b = (V,G) trong đó V= U\ADH = BCE, G = {E  Ø, BC  E, E  BC}. Tiếp

PHÉP DỊCH CHUYỂN LƯỢC ĐỒ QUAN HỆ

đến ta loại PTH tầm thường E  Ø khỏi G. Ta thu được G = {BC  E, E  BC}.
Ta dễ dàng tìm được hai khóa của lược đồ b, Key(b) = {BC, E}. Để thu được

Quản lý các cơ sở dữ liệu lớn và phức tạp đòi hỏi nhiều thuật toán hữu hiệu

Key(a) ta chỉ việc thêm tập thuộc tính AH (không thêm D) vào mỗi khóa của lược

để tính toán các đối tượng như bao đóng, khóa, phủ... Một số thuật toán tốt theo

đồ b. Vậy Key(a) = {AHBC, AHE}. Dù F đã là tập PTH tối ưu [7] nhưng G còn

nghĩa độ phức tạp tính toán giới hạn ở các hàm tuyến tính hoặc đa thức theo chiều


chứa ít ký hiệu hơn F.

dài dữ liệu vào đã được công bố như thuật toán tính bao đóng của tập thuộc tính,

2.1. Phép dịch chuyển LĐQH

thuật toán tìm một khóa, thuật toán xác định thành viên hay thuật toán xác định phụ
thuộc hàm suy dẫn, thuật toán tìm giao các khóa, thuật toán xác định một lược đồ

Định nghĩa
Cho hai LĐQH a = (U,F), b = (V,G) và tập thuộc tính M  U. Ta nói LĐQH b

quan hệ có một khóa duy nhất.... [1, 2, 8].
Một nhận xét tự nhiên là nếu kích thước của LĐQH càng nhỏ thì các thuật
toán càng phát huy hiệu quả hơn. Một số hướng nghiên cứu tinh giản các lược đồ cơ
sở dữ liệu được thực hiện thông qua các phép biến đổi tương đương, chẳng hạn đưa
tập PTH về dạng thu gọn hoặc thu gọn tự nhiên, dạng không dư, dạng tối ưu (chứa
ít ký hiệu nhất)... đã được công bố [3, 5, 6, 7].

nhận được từ LĐQH a qua phép dịch chuyển theo tập thuộc tính M, nếu sau
khi loại bỏ mọi xuất hiện của các thuộc tính của M trong lược đồ a thì thu
được lược đồ b.
Nếu sau khi thực hiện phép dịch chuyển theo M cho LĐQH a ta thu được
LĐQH b thì ta viết
b = a\M

Trong phép dịch chuyển lược đồ quan hệ [7]. Bản chất của kỹ thuật này là
loại bỏ khỏi LĐQH ban đầu một số thuộc tính không quan trọng theo nghĩa chúng
không làm ảnh hưởng đến kết quả tính toán các đối tượng đang quan tâm như bao

đóng, khóa, phản khóa... Mặc dù LĐQH thu được qua phép dịch chuyển không
tương đương với LĐQH ban đầu, nhưng ta có thể thu được các đối tượng cần tìm
bằng những phép toán đơn giản như loại bỏ hoặc thêm một số thuộc tính. Điều lý
thú là sau khi loại bỏ một số thuộc tính thì một số PTH sẽ được loại bỏ theo, vì
chúng trở thành các PTH tầm thường (có vế trái chứa về phải) hoặc mang thông tin
tiền định (đó là các phụ thuộc hàm dạng   X).

b=(V,G) như sau:
1. Tính V = U\M có độ phức tạp O(n) với n là số lượng thuộc tính trong
U.
2. Với mỗi PTH X  Y trong F ta tạo một PTH X\M  Y\M cho G. Thủ
tục này được ký hiệu là G = F\M. Tính F\M đòi hỏi độ phức tạp O(mn)
với m là số lượng PTH trong F.
Như vậy b = a\M = (U\M,F\M) được thực hiện với độ phức tạp O(mn), tức là tuyến
tính theo chiều dài dữ liệu vào (LĐQH a).

Thí dụ

Sau khi thực hiện thủ tục G = F\M nếu

Cho LĐQH a = (U,F) với tập thuộc tính U = ABCDEH và tập PTH F = {AE  D,
BC E, E  BC}. Để tìm tập khóa Key(a) của lược đồ a chúng ta xây dựng một
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Thao tác loại bỏ M được thực hiện trên lược đồ a = (U,F) để thu được lược đồ



 G chứa các PTH tầm thường (dạng X  Y, X  Y) thì ta loại các PTH này
khỏi G,

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 36

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 37




 G chứa các PTH trùng lặp thì ta lược bớt các PTH này.

return (V,G);
end Translation.

Thí dụ

Thủ tục Natural_Reduced(G) đưa tập PTH G về dạng thu gọn tự nhiên bằng cách

Cho LĐQH a = (U,F), U = ABCDEH, F = {AE  D, A  DH, BC  E,

loại khỏi G những PTH tầm thường (có vế trái chứa vế phải), chuyển đổi mỗi PTH

E  BC}. Với M = ADH, hãy xác định b = (V,G) = a\M.

về dạng PTH có hai vế trái và phải rời nhau và gộp các PTH có cùng vế trái.


Ta có V= U\ADH = ABCDEH\ADH=BCE,

Định lý sau đây thiết lập công thức biểu diễn bao đóng của tập thuộc tính theo phép

G = {E  Ø (loại),    (loại), BC  E, E  BC} ≡ {BC  E, E  BC}.

dịch chuyển LĐQH.

Ta cũng dễ nhận thấy phép dịch chuyển thỏa tính hợp thành, cụ thể là nếu a là

2.3. Định lý cơ bản của phép dịch chuyển LĐQH

LĐQH trên tập thuộc tính U và X, Y là hai tập con của U thì

Định lý

a\(XY) = (a\X)\Y
Trong trường hợp X và Y là hai tập con rời nhau của U ta có

(Công thức biểu diễn bao đóng theo phép dịch chuyển LĐQH [7])

a\XY = (a\X)\Y = (a\Y)\X

Cho LĐQH a = (U,F) và hai tập con không giao nhau X và Y trong U. Khi đó

(XY)+F = XY+F\X

2.2. Thuật toán dịch chuyển LĐQH
Thuật toán Translation dưới đây mô tả phép dịch chuyển một LĐQH với độ phức


Chứng minh

tạp O(mn).

Đặt V = U\X và G = F\X và để ý rằng do X  Y = Ø và X không xuất hiện trong V

Algorithm Translation

và G nên theo định nghĩa bao đóng của tập thuộc tính ta có X  Y+G = Ø.

Format: Translation(a,M)

Ta chứng minh bằng quy nạp theo số bước xây dựng các dãy (XY)(h) và Y(h),

Input:

h = 0,1,… theo thuật toán tính bao đóng của các tập thuộc tính XY và Y tương ứng

- LĐQH a = (U,F)

với các tập PTH F và G. Cụ thể là ta chứng minh bất biến

- Tập thuộc tính M  U

(XY)(h) = XY(h) , h = 0,1,…

Output:

(0)


Cơ sở: h = 0. Ta có (XY) = XY và Y(0) = Y, do đó (XY)(0) = XY(0) = XY.

- LĐQH b = (V,G) = a\M, V = U\M, G = F\M.

Quy nạp: Giả sử với h ≥ 0 ta có

Method

(XY)(h) = XY(h). Ta cần chứng minh

(XY)(h+1) = XY(h+1).

V := U\M;

Ta sẽ chỉ ra rằng khi chuyển từ bước h sang bước h+1 hai tập (XY)(h) và XY(h) sẽ

G := ;

được bổ sung thêm cùng một số thuộc tính. Trước hết để ý rằng do X  Y =  và X

for each FD L  R in F do

không có mặt trong LĐQH b = a \ X = (V, G) nên với mọi h = 0,1,2,... ta luôn có

G := G  {L\M  R\M};

X  Y(h) = . Ngoài ra, do dãy (XY)(h) đơn điệu không giảm và (XY)(0) = XY  X nên

endfor;
G := Natural_Reduced(G);

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 38

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 39




với mọi h = 0,1,2,... ta luôn có (XY)(h)  X. Từ các nhận xét này và từ giả thiết quy
(h)

(h)

nạp (XY) = XY

 Uo là tập các thuộc tính không khóa, hay phi nguyên thủy, tức là thuộc
tính không xuất hiện trong bất kỳ khóa nào của a,

ta suy ra

 UK là tập các thuộc tính khóa, hay nguyên thủy, tức là thuộc tính có


L  U: L  (XY)(h) = XY(h)  L\X  Y(h) và

trong một khóa nào đó của a (hợp của các khóa),

Z  U\X: Z  Y(h)  XZ  XY(h) = (XY)(h)

 UI là tập các thuộc tính có trong mọi khóa, tức là giao của các khóa

Giả sử PTH L  R  F thỏa tính chất L  (XY) . Khi đó L\X  R\X  G và
(h)

của a.

L\X  Y(h). Từ (XY)(h) = XY(h) ta suy ra R(XY)(h) = RXY(h) = (R\X) XY(h).
Ngược lại, giả sử Z  P  G và Z  Y . Theo định nghĩa của phép dịch chuyển

Rõ ràng, UI  UK.

theo X, trong F, tồn tại một PTH L  R để Z = L\X và P = R\X. Khi đó ta có

Ta cũng đã biết phân hoạch U = Uo | UK và

(h)

L  XZ  XY

(h)

= (XY)


(h)

và do đó R(XY)

(h)

(h)

= RXY

(h)

= (R\X)XY

(h)

= PXY

 K  Key(a),  X  Uo  (K  UK )  (K  X = K  Uo = )



Để ý rằng với mọi tập X, ta có X = X và X   = . Từ nhận xét này ta suy ra hệ

Ngoài ra,
 X, Y  U: X  Y =   X \ Y = X

quả sau,


Để ý rằng nếu M là siêu khóa của LĐQH a = (U,F) thì  Z  Uo ta có M\Z

Hệ qủa

cũng là siêu khóa của a. Nói cách khác từ một siêu khóa bất kỳ bỏ đi một số thuộc

(Công thức tính bao đóng cho một tập thuộc tính)
Cho LĐQH a = (U,F) và tập X  U. Khi đó X+F = X()+F\X.

Thí dụ
Cho LĐQH a = (U,F), U = ABCDEH, F = {AE  D, BC  E, E  BC}.
Tính

Bổ đề
(Bổ đề về siêu khóa trong phép dịch chuyển LĐQH)
Cho hai LĐQH a = (U,F), b = (V,G) và X  U. Biết b = a\X. Khi đó
(i) Nếu M là siêu khóa của a thì M\X là siêu khóa của b.

1. (AHE)+ và

(ii) Nếu Z là siêu khóa của b thì XZ là siêu khóa của a. Nói riêng, nếu X  Uo

2. E+ ?
Ta có, theo hệ quả về công thức tính bao đóng cho một tập thuộc tính
1. (AHE)+F = AHE()+F\AHE
G = F\AHE = {  D, BC   (loại),   BC} ≡ {  BCD}.
Từ đây ta tính được ()+G =BCD. Do đó (AHE)+ = AHEBCD = U.
2. E+ = E()+F\E.
G = F\E = {A  D, BC   (loại),   BC} ≡ {A D,   BC}.
Từ đây ta tính được ()+G =BC. Do đó E+ = EBC.


và Z là siêu khóa của b thì Z là siêu khóa của a.
Chứng minh
(i) Giả sử M là siêu khóa của a. Đặt P = M\X, ta có X  P =  và M  XP. Vì M là
siêu khóa của a, vận dụng tính đồng biến của bao đóng và công thức biểu diễn bao
đóng ta có, U = XV = M+F  (XP)+F = XP+F\X . Từ các đẳng thức XV = XP+F\X,
X  V =  và X  P+F\X =  ta suy ra P+F\X = V. Vậy P = M\X là siêu khóa của b.
(ii) Đảo lại, giả sử Z là siêu khóa của b = a\X. Khi đó Z  X =  và Z+G = V. Đặt
M = XZ, ta có M+F = (XZ)+F = XZ+F\X = XZ+G = XV = U. Vậy XZ là siêu khóa của

Cho LĐQH a = (U,F), ta nhắc lại các ký hiệu sau
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

tính không khóa ta vẫn thu được siêu khóa.



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 40

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 41





a. Nếu X  Uo thì ta có thể loại bỏ khỏi XZ bộ phận thuộc tính không khóa X để thu

Đảo lại, Nếu K là khóa của b thì K  X =  và theo bổ đề về siêu khóa trong phép

được Z là siêu khóa của a ■

dịch chuyển LĐQH ta có K là siêu khóa của a. Gỉa sử K chứa một siêu khóa M của

Hệ qủa

a. Khi đó ta có M  K và do đó M  X = . Theo bổ đề về siêu khóa trong phép

(Hệ quả về siêu khóa trong phép dịch chuyển LĐQH)

dịch chuyển LĐQH ta có M = M\X là siêu khóa của b. Do K là khóa của b và K

Cho LĐQH a = (U,F) và tập thuộc tính X  U. Khi đó nếu Z là siêu khóa của

chứa M nên M = K. Vậy K là khóa của a ■

lược đồ a\X + thì XZ là siêu khóa của lược đồ a.

Cho ,   SubSet(U) và M, P  SubSet(U). Ta định nghĩa phép toán  trên
SubSet(U) như sau

Chứng minh

M  P = MP (hợp của hai tập con M và P, M  P)

Đặt b = a \ X+. Theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, nếu Z là


M   = {MX | X  } và

siêu khóa của b thì X+Z là siêu khóa của a, ta có (X+Z)+ = U. Theo tính chất C5 của

   = { XY | X  , Y   }

bao đóng của tập thuộc tính, (X+Z)+ = (XZ)+ = U. Từ đây suy ra XZ là siêu khóa của
a ■

2.4. Dạng biểu diễn thứ nhất của khóa

Chú ý

Định lý

Để ý rằng hệ quả trên không hoàn toàn tương tự như bổ đề về siêu khóa trong phép

(Dạng biểu diễn thứ nhất của khóa)

dịch chuyển LĐQH. Điểm khác nhau chính là lượng dịch chuyển trong bổ đề về

Nếu dịch chuyển LĐQH a = (U,F) theo tập X  U để nhận được LĐQH b=a\X

siêu khóa là X, trong hệ quả này là bao đóng của X, X +  X.

thì
1. Key(a) = Key(b) khi và chỉ khi X  Uo
2. Key(a) = X  Key(b) khi và chỉ khi X  UI


(Bổ đề về khóa trong phép dịch chuyển LĐQH)
Cho hai LĐQH a = (U,F), b = (V,G) và tập thuộc tính X  Uo. Biết b = a\X.

Chứng minh

Khi đó

(1) Giả sử Key(a) = Key(b) và A  X và A  Uo. Theo phân hoạch của các thuộc
tính trong U, A  UK. Như vậy phải tồn tại một khóa K trong Key(a) để A  K. Do

Key(a) = Key(b)
Chứng minh

Key(a) = Key(b) nên K  Key(b). Từ đây suy ra K  U\X hay là K  X = . Điều

Giả sử K  Key(a). Khi đó nói riêng K là siêu khóa của a. Do K  UK, X  Uo,

này mâu thuẫn với A  K và A  X. Vậy ta phải có X  Uo.

UK  Uo =  nên theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, K = K\X

(1) Suy từ bổ đề về khóa trong phép dịch chuyển LĐQH.

là siêu khóa của b. Giả sử K chứa một siêu khóa M của b. Khi đó lại theo bổ đề về

(2 ) Đẳng thức Key(a) = X Key(b) cho biết X có mặt trong mọi khóa của a, tức

siêu khóa trong phép dịch chuyển LĐQH ta có M là siêu khóa của a. Do K là khóa

là X  UI .


của a, M là siêu khóa của a chứa trong K, nên theo tính chất tối tiểu của khóa ta
phải có M = K. Vậy K là khóa của b.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên



Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________

_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 42

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 43




(2 ) Giả sử X  UI. Ta sẽ chứng minh rằng mọi khóa K  Key(a) đều được biểu

Cho LĐQH a = (U,F) và các tập thuộc tính X  Uo , Y  UI . Nếu thực hiện

diễn dưới dạng XM, trong đó M  Key(b) và ngược lại, nếu M  Key(b) thì

phép dịch chuyển theo XY

XM  Key(a).


Key(a) = Y  Key(b).

để nhận được LĐQH

b = a\XY

Cho K  Key(a). Khi đó, vì X  UI nên X phải có trong mọi khóa của a, nói riêng

Chứng minh

X  K. Đặt M = K\X, ta có M  X =  và K = XM. Theo bổ đề về siêu khóa trong

Do X  Uo, Y  UI nên X  Y = . Đặt c = a\X, ta có, b = a\XY = (a\X)\Y = c\Y.

phép dịch chuyển LĐQH ta suy ra M = K \ X là siêu khóa của b. Giả sử M chứa

Áp dụng dạng biểu diễn thứ nhất của khóa ta thu được:

một siêu khóa P của b. Khi đó XP lại là siêu khóa của a và XP  K. Vì K là khóa
của a nên XP = K = XM. Để ý rằng X  P = X  M = , ta suy ra P = M. Vậy M
là khóa của b.

Vì X  Uo nên Key(a) = Key(c) và do đó giao các khóa của c vẫn là UI. Vì Y  UI
xét trong c nên Key(c) = Y  Key(b). Vậy Key(a) = Y  Key(b) ■

Cho M  Key(b). Ta có X  M = . Theo bổ đề về siêu khóa trong phép dịch

2.5. Dạng biểu diễn thứ hai của khóa

chuyển LĐQH thì XM là siêu khóa của a. Gọi K là khóa của a chứa trong siêu


Định lý

khóa XM. Lại theo bổ đề về siêu khóa trong phép dịch chuyển LĐQH, K\X là siêu

(Dạng biểu diễn thứ hai của khóa)

khóa của b. Vì K là khóa của a và X  UI nên X  K. Từ đây suy ra K\X  M. Áp

Cho LĐQH a = (U,F). Khi đó mọi khóa K của a đều biểu diễn được dưới dạng

dụng tính tối tiểu cho khóa M của b ta suy ra K\X = M. hay K = XM. Điều này
chứng tỏ XM là khóa của a ■

K = LM trong đó L là một vế trái cực tiểu của F và M là khóa của LĐQH a\L+.
Chứng minh

Thí dụ
1. Cho LĐQH a = (U,F) với tập thuộc tính U

thì

Giả sử K  Key(a). Nếu K=U thì đương nhiên K chứa mọi vế trái của các PTH
= ABCDEH và tập PTH

F = {AE  D, BC  E}. Ta tính được giao các khóa là UI = ABCDEH \ DE =
ABCH. Đặt b = (V,G) với V = U\ABCH = DE, G = F\ABCH = {ED, E}. Ta
có b = a\ABCH và tính được Key(b) = {}, Vậy Key(a) = ABCH  Key(b) =
{ABCH}.


đóng K+ ta phải tìm được một PTH f: X  Y  F thỏa tính chất X  K. Vì X là vế
trái của f nên trong ML(F) phải tồn tại một vế trái cực tiểu L để L  X. Ta chọn một
trong số vế trái cực tiểu này. Tóm lại ta đã chứng minh được rằng mọi khóa K đều
chứa một vế trái cực tiểu L nào đó. Đặt M=K\L. Ta có K=LM. Ta chứng minh M là

2. Với lược đồ đã cho ta tính được UK = ABCH nên Uo = U\UK = BCDEH\ABCH =
DE. Đặt c = a\DE = (P,W) ta có P = U\DE = ABCH, W = F\DE = {A   (loại),
BC   (loại)} ≡  và do đó Key(c) = ABCH. Theo định lý về dạng biểu diễn thứ
nhất của khóa, vì Uo = DE nên Key(a) = Key(c) = ABCH.

khóa của LĐQH a\L+. Nếu L+ = U thì a\L+ = a\U = (,). Lược đồ này có khóa
duy nhất là M=. Khi đó, K=L. Giả sử L+  U. Từ đây suy ra L  K vì nếu L=K
thì phải có L+ = K+ = U, trái với giả thiết L+  U. Theo tính bộ phận của khóa
L+  K = L hay K\L=K\L+=M. Từ đây suy ra M  U\L+. Theo bổ đề về siêu khóa

Hệ qủa

trong phép dịch chuyển LĐQH, M sẽ là siêu khóa của lược đồ a\L+. Giả sử M chứa

(Dịch chuyển LĐQH theo các bộ phận không khóa và giao các khóa)
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

trong F, khi đó ta chọn một vế trái cực tiểu tùy ý. Giả sử K  U. Khi đó, để tính bao



siêu khóa P của lược đồ a\L+. Khi đó theo bổ đề về siêu khóa trong phép dịch
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

_______________________________________________________


_______________________________________________________

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 44

Vũ Trí Dũng, Luận văn Thạc sĩ Công nghệ thông tin, Trang 45




×