Bên cạnh việc phát hiện tri thức, các phụ thuộc được phát hiện từ dữ liệu có thể được sử dụng để kiểm tra xem các phụ thuộc đã được định nghĩa trước đây trên cơ sở dữ liệu có đúng thỏa m
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC
VÀ CÔNG NGHỆ VIỆT NAM
HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ
-
VŨ QUỐC TUẤN
PHÁT HIỆN PHỤ THUỘC HÀM VÀ PHỤ THUỘC HÀM
SUY RỘNG TRONG CƠ SỞ DỮ LIỆU
LUẬN ÁN TIẾN SỸ TOÁN HỌC
HÀ NỘI – 2019
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN HÀN LÂM KHOA HỌC
VÀ CÔNG NGHỆ VIỆT NAM
HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ
-
VŨ QUỐC TUẤN
PHÁT HIỆN PHỤ THUỘC HÀM VÀ PHỤ THUỘC HÀM
SUY RỘNG TRONG CƠ SỞ DỮ LIỆU
LUẬN ÁN TIẾN SỸ TOÁN HỌC Chuyên ngành: Cơ sở Toán học cho Tin học
Trang 3i
LỜI CAM ĐOAN
Tác giả xin cam đoan đây là công trình nghiên cứu do chính tác giả thực hiện dưới sự hướng dẫn khoa học của PGS TS Hồ Thuần và PGS TS Nguyễn Thanh Tùng tại Học viện Khoa học và Công nghệ - Viện Hàn lâm Khoa học và Công nghệ Việt Nam Tất cả các kết quả trình bày trong luận án
là trung thực, không sao chép từ bất kỳ công trình nào khác Nếu có điều gì không trung thực, tác giả xin chịu hoàn toàn trách nhiệm
Tác giả
Vũ Quốc Tuấn
Trang 4ii
LỜI CẢM ƠN
Luận án này được thực hiện tại Học viện Khoa học và Công nghệ, Viện Hàn lâm Khoa học và Công nghệ Việt Nam dưới sự hướng dẫn khoa học của PGS TS Hồ Thuần và PGS TS Nguyễn Thanh Tùng Tác giả xin bày tỏ lòng biết ơn sâu sắc tới các Thầy đã tận tình chỉ bảo, động viên, hướng dẫn và tạo mọi điều kiện thuận lợi để tác giả hoàn thành luận án
Tác giả xin trân trọng cảm ơn tập thể các Thầy Cô trong Viện Công nghệ Thông tin đã có nhiều ý kiến đóng góp và phản biện trong suốt quá trình tác giả nghiên cứu và hoàn chỉnh luận án Tác giả xin chân thành cảm ơn các nhà khoa học, các tác giả của các công trình đã được tham khảo và trích dẫn trong luận án
Tác giả xin trân trọng cảm ơn Lãnh đạo Viện Công nghệ Thông tin, Học Viện Khoa học và Công nghệ đã tạo những điều kiện tốt nhất để tác giả
có được môi trường nghiên cứu và hoàn thành chương trình nghiên cứu sinh của mình Xin chân thành cảm ơn các Phòng ban của Viện Công nghệ Thông tin đã giúp đỡ, tạo điều kiện cho tác giả trong suốt quá trình thực hiện luận án
Tác giả xin cảm ơn Ban giám hiệu Trường Cao đẳng Hải Dương, Khoa
Tự Nhiên và Khoa Điện-Cơ-Tin đã tạo điều kiện thuận lợi cho tác giả thực hiện luận án Xin cảm ơn tất cả các bạn đồng nghiệp đã luôn chia sẻ, động viên tác giả trong những lúc khó khăn
Cuối cùng, tác giả xin bày tỏ lòng biết ơn đối với những người thân trong gia đình, đặc biệt là mẹ và vợ, đã luôn ủng hộ và động viên cho tác giả trong suốt thời gian hoàn thành luận án
Trang 5iii
MỤC LỤC
Chương 1 PHỤ THUỘC HÀM VÀ PHỤ THUỘC HÀM SUY RỘNG
1.1 Nhắc lại một số khái niệm cơ bản 6
1.1.1 Miền 6
1.1.2 Quan hệ 6
1.1.3 Các tính chất đặc trưng của một quan hệ 7
1.1.4 Lược đồ quan hệ 7
1.2 Phụ thuộc hàm 8
1.2.1 Khái niệm phụ thuộc hàm 8
1.2.2 Hệ quy tắc suy diễn Armstrong 9
1.2.3 Bao đóng của một tập thuộc tính 9
1.2.4 Khóa của lược đồ quan hệ 9
1.3 Phụ thuộc hàm suy rộng 10
1.3.1 Phụ thuộc hàm xấp xỉ 11
1.3.2 Phụ thuộc hàm mêtric 13
1.3.3 Phụ thuộc hàm điều kiện 14
1.3.4 Phụ thuộc hàm mờ 16
1.3.5 Phụ thuộc sai phân 17
1.3.6 Các loại phụ thuộc hàm suy rộng khác 18
1.4 Phát hiện phụ thuộc hàm 18
1.4.1 Phương pháp top-down 19
1.4.2 Phương pháp bottom-up 28
1.4.3 Một số chủ đề liên quan đến phát hiện phụ thuộc hàm 32
1.5 Phát hiện phụ thuộc hàm suy rộng 34
1.5.1 Phát hiện phụ thuộc hàm xấp xỉ 34
1.5.2 Phát hiện phụ thuộc hàm điều kiện 36
1.6 Tổng kết chương 1 39
Trang 6iv
Chương 2 PHỤ THUỘC HÀM XẤP XỈ
2.1 Về một số kết quả liên quan đến FD và AFD 41
2.1.1 Phân hoạch 41
2.1.2 Một số kết quả 42
2.2 Phát hiện FD và AFD 45
2.2.1 Ma trận tương đương 45
2.2.2 Một số tính chất của ma trận thuộc tính 48
2.2.3 Sử dụng ma trận để kiểm tra phụ thuộc hàm 49
2.2.4 Sử dụng ma trận để tính một số độ đo xấp xỉ 50
2.3 Phụ thuộc hàm điều kiện 54
2.3.1 Sự cần thiết phải mở rộng FD thành CFD 54
2.3.2 Cú pháp và ngữ nghĩa của CFD 54
2.3.3 Một số kết quả quan trọng đã biết về CFD 57
2.4 Về một thứ tự phân cấp giữa các FD, CFD và AR 62
2.5 Kết luận chương 2 72
Chương 3 THUẬT TOÁN TÍNH BAO ĐÓNG VÀ VẤN ĐỀ RÚT GỌN BÀI TOÁN TÌM KHÓA CỦA LƯỢC ĐỒ QUAN HỆ 73 3.1 Thuật toán tính bao đóng 73
3.1.1 Khái niệm bao đóng 73
3.1.2 Một số thuật toán tính bao đóng 74
3.2 Vấn đề rút gọn bài toán xác định khóa của lược đồ quan hệ 87
3.2.1 Một số kết quả đã biết 87
3.2.2 Một dạng cải tiến cho điều kiện cần đã được công bố năm 1985 89
3.2.3 So sánh các điều kiện cần 91
3.2.4 Một bài toán quyết định 95
3.3 Kết luận chương 3 96
Chương 4 VỀ MỘT PHÉP BIẾN ĐỔI TIỀN XỬ LÝ HIỆU QUẢ CÁC TẬP PHỤ THUỘC HÀM 97 4.1 Giới thiệu 97
4.2 Sự dư thừa trong tập phụ thuộc hàm 100
4.3 Một phép biến đổi tiền xử lý hiệu quả các tập FD 101
4.3.1 Logic Paredaens 102
4.3.2 Một chứng minh mới cho định lý 4.1 107
4.4 Tổng kết chương 4 113
Trang 7v
DANH SÁCH HÌNH VẼ
Hình 1.1 Minh họa dàn thuộc tính 20
Hình 2.1 Các luật suy diễn đối với CFD 60
DANH SÁCH BẢNG BIỂU Bảng 1.1 Quan hệ Nhân viên 11
Bảng 1.2 Quan hệ Phim 13
Bảng 1.3 Quan hệ Qh 1 14
Bảng 1.4 Quan hệ Cust 15
Bảng 1.5 Quan hệ Qh 2 17
Bảng 1.6 Quan hệ Qh 3 19
Bảng 1.7 Minh họa phụ thuộc hàm điều kiện 38
Bảng 2.1 Một quan hệ minh họa 47
Bảng 2 2 Quan hệ r 67
Bảng 2.3 Quan hệ r 1 68
Bảng 2.4 Quan hệ r 2 68
Bảng 2.5 Quan hệ r 3 68
Bảng 2.6 Quan hệ r 4 68
Bảng 3.1 Minh họa cho ví dụ 3.3 80
Bảng 3.2 Kết quả thử nghiệm 82
Bảng 3.3 Minh họa thuật toán 3.7 84
Bảng 4.1 Quan hệ phân công 98
Bảng 4.2 Minh họa cho ví dụ 4.6 111
Bảng 4.3 Minh họa cho ví dụ 4.7 112
Trang 8vi
DANH SÁCH CHỮ VIẾT TẮT
Từ
FD Functional dependency Phụ thuộc hàm
RFD Relaxed functional dependencies Phụ thuộc hàm suy rộng AFD Approximate functional dependency Phụ thuộc hàm xấp xỉ MFD Metric functional dependency Phụ thuộc hàm mêtric FFD Fuzzy functional dependency Phụ thuộc hàm mờ
DD Differential dependencies Phụ thuộc sai phân CFD Conditional Functional dependency Phụ thuộc hàm điều kiện
eCFD Extended Conditional Functional
Trang 91
MỞ ĐẦU Các phụ thuộc dữ liệu có vai trò quan trọng trong thiết kế cơ sở dữ liệu, quản lý chất lượng dữ liệu và biểu diễn tri thức Việc sử dụng các phụ thuộc trong thiết kế cơ sở dữ liệu và quản lý chất lượng dữ liệu được giới thiệu trong phần lớn các sách về cơ sở dữ liệu Các phụ thuộc trong trường hợp này được trích xuất từ các yêu cầu về ứng dụng, được sử dụng trong việc chuẩn hóa cơ sở dữ liệu và được cài đặt trong cơ sở dữ liệu đã được thiết kế để đảm bảo chất lượng dữ liệu Ngược lại, các phụ thuộc trong phát hiện tri thức được trích xuất từ dữ liệu hiện có của cơ sở dữ liệu Quá trình trích xuất này được
gọi là phát hiện phụ thuộc với mục đích tìm tất cả các phụ thuộc được thỏa
mãn (đúng) trên dữ liệu hiện có
Mục đích của việc phát hiện phụ thuộc là tìm các phụ thuộc quan trọng đúng (thỏa mãn) trên dữ liệu của cơ sở dữ liệu Các phụ thuộc (được phát hiện) biểu diễn tri thức (thuộc lĩnh vực hoạt động nào đó) và có thể được sử dụng để kiểm tra thiết kế cơ sở dữ liệu cũng như đánh giá chất lượng dữ liệu
Ví dụ Bằng việc kiểm tra dữ liệu của một cơ sở dữ liệu y học có hai
thuộc tính Bệnh và Triệu chứng, nếu viêm phổi là một giá trị của Bệnh và sốt
là một giá trị của Triệu chứng, đồng thời nếu mỗi bệnh nhân viêm phổi đều bị sốt thì sốt được cho là có liên quan đến viêm phổi Nếu điều này xảy ra (đúng) đối với mọi cặp giá trị Triệu chứng và Bệnh thì Bệnh xác định hàm Triệu
chứng và đây là một phụ thuộc hàm Nếu phụ thuộc hàm này là một tri thức
mới, nó sẽ giúp cho việc chẩn đoán bệnh hiệu quả hơn Trong lĩnh vực khoa học sức khỏe hiện đại, việc tìm các mối liên hệ và các phụ thuộc như vậy
(giữa các đoạn DNA và Bệnh) trở nên rất quan trọng đối với sự phát triển của
y học
Bên cạnh việc phát hiện tri thức, các phụ thuộc được phát hiện từ dữ liệu có thể được sử dụng để kiểm tra xem các phụ thuộc đã được định nghĩa trước đây trên cơ sở dữ liệu có đúng (thỏa mãn) và đầy đủ hay không, đồng thời có thể dùng để kiểm tra ngữ nghĩa của dữ liệu trong cơ sở dữ liệu
Trang 10Một ứng dụng nữa của các phụ thuộc (được phát hiện) là để đánh giá chất lượng của dữ liệu Vai trò chính của việc cài đặt các phụ thuộc trong một
cơ sở dữ liệu là để đảm bảo chất lượng dữ liệu của cơ sở dữ liệu Do đó, trên
cơ sở phân tích các phụ thuộc được phát hiện và các phụ thuộc phải có giữa các thuộc tính của dữ liệu, ta có thể tìm và xác định được sự không nhất quán giữa các thuộc tính và các lỗi sai trên dữ liệu; từ đó, đánh giá được chất lượng
dữ liệu
Từ những năm đầu thập kỷ 80 của thế kỷ 20, bài toán phát hiện phụ thuộc đã thu hút được sự quan tâm của đông đảo các nhà khoa học thuộc nhiều lĩnh vực nghiên cứu khác nhau như thiết kế cơ sở dữ liệu, học máy và phát hiện tri thức ([3], [10], [12], [18], [21], [26], [32], [33], [34], [37], [42], [45], [57], [65], [72], [75], ) Và cho đến thời điểm hiện tại, vấn đề phát hiện phụ thuộc từ các tập dữ liệu lớn (big data) càng trở nên quan trọng vì trong các tập dữ liệu lớn này chứa rất nhiều tri thức quý giá
Hiện nay, với sự phát triển của toàn xã hội và các thiết bị số, đặc biệt là các ứng dụng mạng xã hội và điện thoại thông minh (smartphone), lượng dữ liệu trong các ứng dụng tăng rất nhanh làm nảy sinh vấn đề lưu trữ, quản lý
dữ liệu và đặc biệt là vấn đề phát hiện tri thức từ các tập dữ liệu lớn đó Bài
toán phát hiện phụ thuộc hàm và phụ thuộc hàm suy rộng trong cơ sở dữ liệu
là một trong những vấn đề quan trọng của phát hiện tri thức (dưới dạng các
phụ thuộc) Ba loại phụ thuộc điển hình được chú ý phát hiện là phụ thuộc
hàm (FD: Functional Dependency), phụ thuộc hàm xấp xỉ (AFD:
Approximate Functional Dependency) và phụ thuộc hàm điều kiện (CFD:
Conditional Functional Dependency) AFD là sự mở rộng của FD, tính chất
xấp xỉ dựa trên độ thỏa hoặc độ đo lỗi; CFD là sự mở rộng của FD, nhằm nắm
bắt những yếu tố không nhất quán trong dữ liệu
Các hướng nghiên cứu giải quyết bài toán phát hiện FD suy rộng trong
cơ sở dữ liệu, trước hết tập trung vào vấn đề phát hiện FD do loại phụ thuộc này là trường hợp riêng của tất cả các loại FD suy rộng, các kết quả về phát hiện FD có thể được thích nghi để phát hiện các loại phụ thuộc khác (chẳng
Trang 11hạn AFD) Mô hình chung của bài toán phát hiện FD là xây dựng không gian tìm kiếm các FD, kiểm tra sự thỏa mãn của từng FD, tỉa không gian tìm kiếm, xuất ra tập FD đã phát hiện được và làm gọn tập FD này (giảm bớt sự dư thừa) Trong bài toán phát hiện FD, phát hiện khóa là trường hợp đặc biệt và cũng là bài toán rất đáng quan tâm do khóa đóng vai trò quan trọng trong chuẩn hóa cơ sở dữ liệu quan hệ
Độ phức tạp thời gian tổng quát của bài toán phát hiện FD là đa thức theo số bản ghi trong cơ sở dữ liệu nhưng là hàm mũ theo số thuộc tính của cơ
sở dữ liệu đó Do đó, để giảm thời gian xử lý, cần xây dựng các luật tỉa hiệu quả Trong số các luật tỉa đã được đề xuất, tỉa khóa là rất quan trọng, khi phát hiện được khóa thì có thể tỉa (xóa) mọi nút chứa khóa trong không gian tìm kiếm Tuy nhiên, các luật tỉa khóa hiện có vẫn còn nhược điểm là tìm khóa trên toàn bộ tập thuộc tính của cơ sở dữ liệu (đây thực sự là vấn đề rất khó
vì độ phức tạp thời gian có thể là hàm mũ theo số thuộc tính của ), vậy có cách nào phát hiện được khóa trong một tập con thực sự của hay không? Câu hỏi trên chính là một trong những động lực cơ bản của luận án này
Sau khi đã phát hiện được tập các phụ thuộc, tập này có thể rất lớn và gây khó khăn cho việc sử dụng vì chứa những dư thừa không cần thiết Vấn
đề quan trọng đặt ra là làm thế nào để loại bỏ được (càng nhiều càng tốt) sự
dư thừa trong tập phụ thuộc đã được phát hiện Đây cũng là bài toán được quan tâm trong luận án
Một hướng nghiên cứu nữa trong luận án là tập trung nghiên cứu, phát hiện hai loại FD suy rộng điển hình, đó là AFD và CFD Cả AFD và CFD đều
có nhiều ứng dụng và xuất hiện nhiều trong các cơ sở dữ liệu quan hệ, đặc biệt CFD còn là công cụ mạnh trong giải quyết bài toán làm sạch dữ liệu ([12]) Với AFD, vấn đề quan trọng nhất là cải tiến và phát triển các kỹ thuật
tính toán các độ thỏa hoặc độ đo lỗi ([34], [72]); với CFD, ngoài việc phát
hiện, thì việc tìm hiểu về một thứ tự phân cấp giữa CFD và một số loại phụ thuộc khác cũng là vấn đề rất đáng quan tâm
Trang 12Trong những năm gần đây, các hướng nghiên cứu về cải tiến thuật toán tính bao đóng của một tập thuộc tính đối với một tập FD, vấn đề rút gọn cho bài toán xác định khóa của lược đồ quan hệ, vấn đề về các phép biến đổi tiền
xử lý hiệu quả các tập FD cho trước đã được xới lại, làm mới với hàng loạt các công trình của các tác giả nước ngoài ([22], [23], [24], [25], [52], [53], [54], [55]), trong khi ở trong nước, có nhiều công trình được công bố liên quan tới các phương pháp và thuật toán xác định các tập rút gọn (reduct) của một bảng quyết định theo nhiều tiếp cận khác nhau
Mục tiêu của luận án là nghiên cứu nhằm thu được một số kết quả giúp
giải quyết có hiệu quả một số vấn đề như đã phân tích ở trên trong phạm vi cơ
sở dữ liệu quan hệ Để thực hiện các mục tiêu trên, chúng tôi tập trung vào
các nội dung sau:
1) Nghiên cứu tổng quan về các loại FD suy rộng, các phương pháp phát hiện FD và FD suy rộng trong cơ sở dữ liệu quan hệ
2) Nghiên cứu về AFD và CFD: kỹ thuật tính độ thỏa hoặc độ đo lỗi trong AFD, về một thứ tự phân cấp giữa CFD và một số loại phụ thuộc khác
3) Nghiên cứu các thuật toán tính bao đóng của tập thuộc tính đối với một tập FD Cải tiến được các thuật toán này sẽ làm tăng hiệu năng phát hiện khóa của lược đồ quan hệ Nghiên cứu vấn đề rút gọn cho bài toán xác định khóa của lược đồ quan hệ, đây là vấn đề quan trọng, là cơ sở cho các luật tỉa khóa nhằm thu hẹp không gian tìm kiếm khi phát hiện các FD
4) Nghiên cứu về một phép biến đổi tiền xử lý các tập FD nhằm thu được một tập FD tương đương nhưng đơn giản hơn tập FD ban đầu
Với các nội dung nghiên cứu trên, luận án được cấu trúc gồm phần mở đầu, bốn chương nội dung và phần kết luận
Chương 1 Trình bày tổng quan về mô hình dữ liệu quan hệ, các khái niệm FD, bao đóng của một tập thuộc tính, khóa của lược đồ quan hệ,…Trong
đó tập trung trình bày về FD suy rộng và khát quát các phương pháp đã được
sử dụng để phát hiện các FD và FD suy rộng
Trang 13Chương 2 Trình bày về AFD và CFD (hai loại FD suy rộng điển hình)
và một số kết quả có liên quan
Chương 3 Trình bày các thuật toán tính bao đóng của một tập thuộc tính đối với một tập FD, vấn đề rút gọn cho bài toán xác định khóa của lược
đồ quan hệ và một số kết quả có liên quan
Chương 4 Trình bày một phép biến đổi tiền xử lý hiệu quả các tập FD (nhằm hạn chế sự dư thừa trong một tập FD cho trước) và một số kết quả liên quan
Kết luận Tổng kết các kết quả đã đạt được, những điểm còn tồn tại và hướng nghiên cứu tiếp theo
Trang 146
Chương 1
PHỤ THUỘC HÀM VÀ PHỤ THUỘC HÀM SUY RỘNG
TRONG MÔ HÌNH DỮ LIỆU QUAN HỆ
Chương này nhắc lại các khái niệm cơ bản của mô hình dữ liệu quan
hệ, tập trung vào các khái niệm phụ thuộc hàm, phụ thuộc hàm suy rộng và khái quát các phương pháp đã được sử dụng để phát hiện phụ thuộc hàm và phụ thuộc hàm suy rộng
1.1 Nhắc lại một số khái niệm cơ bản
Mô hình dữ liệu quan hệ được E.F.Codd đề xuất năm 1970 và ngay lập
tức mô hình này đã gây được sự chú ý vì có tính đơn giản và cơ sở toán học vững chắc Mô hình dữ liệu quan hệ biểu thị dữ liệu trong một cơ sở dữ liệu như một tập các quan hệ Về mặt trực quan, ta có thể hình dung một quan hệ như là một bảng giá trị gồm các hàng và các cột Mỗi hàng trong bảng là một tập các giá trị có liên quan đến nhau, các giá trị này biểu thị một sự kiện tương ứng với một thực thể hay một mối quan hệ trong thế giới thực
Trong lý thuyết mô hình dữ liệu quan hệ, các thuật ngữ quan hệ, thuộc
tính, miền và bộ tương ứng được dùng để chỉ bảng, cột, kiểu dữ liệu của một
cột và một hàng trong bảng
1.1.1 Miền
Một miền D là một tập các giá trị nguyên tố, hiểu theo nghĩa mỗi giá trị
trong miền là không thể phân chia được thành các thành phần nhỏ hơn trong phạm vi mô hình quan hệ Mỗi miền được đặc tả thông qua một tên miền và
một kiểu dữ liệu Tương ứng với mỗi thuộc tính có một miền, các thuộc tính
khác nhau không nhất thiết phải có các miền khác nhau
1.1.2 Quan hệ
Một quan hệ trên (hay xác định trên) tập thuộc tính Ω = {A1 , A 2 ,…,A n}
là một tập con của tích Descartes
Dom(A 1) Dom(A2) … Dom(An), trong đó Dom(Ai) là miền trị của thuộc tính Ai, i = 1, 2,…, n
Trang 157
Cho quan hệ r xác định trên tập thuộc tính Ω = {A1 , A 2 ,…,A n} Theo định nghĩa, ta có thể viết r dưới dạng sau:
r {(a 1 , a 2 ,…,a n) | ai Dom(Ai), i = 1, 2,…, n}
1.1.3 Các tính chất đặc trưng của một quan hệ
Để làm rõ hơn khái niệm quan hệ trong mô hình dữ liệu quan hệ, ta xem xét các tính chất đặc trưng sau đây của quan hệ:
Mỗi quan hệ có một tên phân biệt
Mỗi ô trong bảng (quan hệ) chứa một giá trị nguyên tố
Mỗi thuộc tính có một tên phân biệt
Các giá trị của một thuộc tính thuộc cùng một miền
Thứ tự của các thuộc tính là không quan trọng
Không có hai bộ trùng nhau trong một quan hệ
Thứ tự của các bộ là không quan trọng
Mỗi giá trị trong một bộ phải là một giá trị nguyên tố Mô hình dữ liệu quan hệ không cho phép có các thuộc tính phức hợp hoặc các thuộc tính đa trị Đặc trưng này đòi hỏi mỗi thuộc tính đa trị phải được biểu diễn bằng một quan hệ và mỗi thuộc tính phức hợp phải được biểu diễn bằng các thành phần đơn của nó
Trường hợp một số ô trong bảng (quan hệ) có thể là chưa biết được giá trị của chúng vào thời điểm đang xét hoặc không có giá trị nào thích hợp đặt cho một ô (thuộc tính) của một bộ nào đó thì một giá trị đặc biệt, gọi là giá trị
null, được sử dụng cho các ô kiểu này
Thứ tự của các thuộc tính trong một quan hệ là không quan trọng khi đảm bảo được sự tương ứng giữa các thuộc tính với các giá trị
Vì các phần tử trong một tập hợp là không có thứ tự nên các bộ không
có một thứ tự bắt buộc trong một quan hệ Định nghĩa quan hệ cũng cho thấy rằng hai quan hệ được xem là đồng nhất nếu chúng có cùng các bộ cho dù thứ
tự các bộ trong chúng khác nhau
1.1.4 Lược đồ quan hệ
Một lược đồ quan hệ S là một cặp có thứ tự S = <Ω, F>, trong đó Ω là
Trang 168
tập hữu hạn các thuộc tính của quan hệ, F là tập các ràng buộc giữa các thuộc
tính
Một ràng buộc trên tập thuộc tính {A1 , A 2 ,…,A n} là một tính chất trên
tập tất cả các quan hệ xác định trên tập thuộc tính này Mỗi ràng buộc còn
được gọi là một phụ thuộc dữ liệu
Một lược đồ quan hệ được sử dụng để mô tả về cấu trúc và các ràng buộc của một quan hệ Một quan hệ có thể liên tục thay đổi theo thời gian nhưng cấu trúc và các ràng buộc của nó có thể ổn định trong một khoảng thời gian nhất định
Cho lược đồ quan hệ S = <Ω, F> với Ω = {A1 , A 2 ,…,A n} Nếu không quan tâm đến tập các ràng buộc F thì ta sẽ dùng ký hiệu S(A1 , A 2 ,…,A n) hoặc
S(Ω) thay cho S = <Ω, F>
Ta dùng ký hiệu r(S) để chỉ một quan hệ r (hay một thể hiện r) của lược
đồ quan hệ S Với một bộ t của r(S) và X Ω, ta ký hiệu t[X] là bộ chỉ chứa các giá trị của bộ t tại các thuộc tính trong X.
Một lược đồ cơ sở dữ liệu quan hệ là một tập các lược đồ quan hệ S’ = {S1 , S 2 ,…,S p} Một thể hiện của một lược đồ cơ sở dữ liệu quan hệ S’ là một tập các thể hiện DB = {r1(S1), r2(S2),…, rp(Sp)} Một cơ sở dữ liệu quan hệ là
một thể hiện của một lược đồ cơ sở dữ liệu quan hệ
Một cơ sở dữ liệu quan hệ cỡ lớn là một cơ sở dữ liệu quan hệ chứa một lượng lớn dữ liệu (cỡ vài chục thuộc tính, hàng trăm nghìn bản ghi)
1.2 Phụ thuộc hàm
Phụ thuộc hàm là một loại phụ thuộc dữ liệu giữa hai nhóm thuộc tính của một lược đồ quan hệ và nó thể hiện tính chất ngữ nghĩa của các thuộc tính
1.2.1 Khái niệm phụ thuộc hàm
Phụ thuộc hàm Cho là tập thuộc tính và S() là một lược đồ quan hệ
trên Giả sử X, Y Khi đó Y được gọi là phụ thuộc hàm vào X trên lược
đồ S(), ký hiệu là X Y, nếu với mọi quan hệ r trên lược đồ S(), với hai
bộ bất kỳ t1 , t 2 r mà t1[X] = t2[X] thì t1[Y] = t2[Y]
Trang 179
Nếu Y phụ thuộc hàm vào X thì ta cũng nói "X xác định hàm Y" Với mỗi quan hệ r trên lược đồ S(), ta nói r thỏa mãn (hay thỏa) phụ thuộc hàm
X Y (hay phụ thuộc hàm X Y đúng trên r) nếu và chỉ nếu với mọi bộ t 1 ,
t 2 r, t1[X] = t2[X] kéo theo t1[Y] = t2[Y] Trong luận án này, ta hạn chế F của lược đồ S = <, F> chỉ gồm các phụ thuộc hàm
1.2.2 Hệ quy tắc suy diễn Armstrong
Với lược đồ quan hệ S = <, F> và X, Y , ta ký hiệu XY thay cho
X Y Với mọi X, Y, Z , hệ quy tắc suy diễn Armstrong đối với các phụ
thuộc hàm gồm ba quy tắc sau đây:
Q 1 (Phản xạ): Nếu Y X thì X Y
Q 2 (Gia tăng): Nếu X Y thì XZ YZ
Q 3 (Bắc cầu): Nếu X Y và Y Z thì X Z
Ký hiệu F + là tập tất cả các phụ thuộc hàm được suy diễn từ F bằng
cách áp dụng một số hữu hạn lần các quy tắc của hệ quy tắc suy diễn Armstrong
1.2.3 Bao đóng của một tập thuộc tính
Cho tập phụ thuộc hàm F xác định trên tập thuộc tính (phụ thuộc hàm Y Z xác định trên tập thuộc tính nếu Y, Z ) và X Ta gọi bao đóng của tập thuộc tính X đối với tập phụ thuộc hàm F, ký hiệu là X F, là
tập tất cả các thuộc tính A của sao cho X A được suy diễn từ F nhờ hệ
quy tắc suy diễn Armstrong
F
X= {A (X A) F +}
1.2.4 Khóa của lược đồ quan hệ
Một quan hệ là một tập hợp các bộ Các phần tử trong một tập hợp là phân biệt nên không thể có hai bộ trùng nhau trong một quan hệ Như vậy,
với mỗi lược đồ quan hệ S = <Ω, F>, tồn tại một tập thuộc tính SK Ω có tính chất: với mỗi thể hiện r(S) thì t1[SK] ≠ t2[SK], với t1, t2 là hai bộ khác nhau bất kỳ trong r
Trang 1810
Siêu khóa của một lược đồ quan hệ S là một tập gồm một hay nhiều
thuộc tính của lược đồ S có tính chất xác định duy nhất một bộ trong mỗi thể hiện của S
Cho lược đồ quan hệ S = <Ω, F> Nếu SK là siêu khóa của S thì mọi tập con của Ω mà chứa SK cũng là siêu khóa của S Một siêu khóa "nhỏ nhất"
được gọi là một khóa
Khóa của một lược đồ quan hệ S là một siêu khóa của S sao cho mọi tập
con thực sự của siêu khóa này đều không phải là siêu khóa của S
Mỗi lược đồ quan hệ luôn có ít nhất một khóa và có thể có nhiều khóa
Một thuộc tính xuất hiện trong một khóa nào đó được gọi là thuộc tính khóa
Ngược lại, một thuộc tính không xuất hiện trong bất kỳ khóa nào được gọi là
thuộc tính không khóa
Sử dụng khái niệm phụ thuộc hàm, khái niệm khóa và siêu khóa của lược đồ quan hệ được định nghĩa lại như sau:
Cho lược đồ quan hệ S = <, F> và K Ta nói K là một khóa của
S nếu hai điều kiện sau đây đồng thời được thỏa mãn:
(i) (K ) F +
(ii) Nếu K' K thì (K' ) F+
Nếu K thỏa mãn điền kiện (i) thì K được gọi là một siêu khóa của
S Như vậy, mọi khóa của S đồng thời cũng là siêu khóa của S
1.3 Phụ thuộc hàm suy rộng
Cho r là một quan hệ xác định trên tập thuộc tính Ω = {A1 , A 2 ,…,A n} và
X, Y Từ định nghĩa phụ thuộc hàm ở trên, ta nhận thấy: nếu tồn tại t 1 , t 2
r sao cho t1[X] = t2[X] và t1[Y] t2[Y] thì ta kết luận được rằng r không thỏa phụ thuộc hàm X Y (hay phụ thuộc hàm X Y không đúng trên r) Điều này tỏ ra quá chặt chẽ và cứng nhắc khi ta hình dung quan hệ r có hàng nghìn
bộ, trong đó chỉ có một vài bộ vi phạm phụ thuộc hàm X Y do có một số dữ
liệu bị sai lệch hoặc một số ngoại lệ Do đó, việc mở rộng khái niệm phụ
thuộc hàm thành phụ thuộc hàm suy rộng theo một cách thức, một nghĩa nào
Trang 1911
đó là nhu cầu tất yếu và tự nhiên Tùy theo cách thức và ý nghĩa của sự mở
rộng, các phụ thuộc hàm suy rộng có thể được đặt tên khác nhau như phụ
thuộc hàm xấp xỉ, phụ thuộc hàm điều kiện, phụ thuộc hàm metric,
1.3.1 Phụ thuộc hàm xấp xỉ
Phụ thuộc hàm xấp xỉ [41] là các phụ thuộc hàm được thỏa mãn với phần lớn các bộ trong quan hệ Để định nghĩa thuật ngữ "xấp xỉ" một cách
chính xác hơn, một độ đo được sử dụng để đo mức độ thỏa mãn (độ thỏa) hay
mức độ vi phạm (độ đo lỗi) của mỗi phụ thuộc hàm
Để xác định mức độ vi phạm của X Y trên quan hệ r, một độ đo lỗi
nào đó, ký hiệu là e X( Y r, ), sẽ được sử dụng Cho trước một ngưỡng lỗi
, 0 1 Ta nói X Y là phụ thuộc hàm xấp xỉ nếu và chỉ nếu
e X Y r
Một độ đo lỗi được sử dụng phổ biến là g3 [41], dựa trên số bộ tối thiểu
cần phải loại bỏ khỏi r để X Y đúng
Bảng 1.1 Quan hệ Nhân viên
Trang 20j i j i
j i
t t R t t
t t
TRUTH Nhân viên(Tên Giới tính) = 26/28 93%
Một cách khác để tính độ thỏa của X Y trên quan hệ r được giới thiệu trong [56, 57], cụ thể: xây dựng quan hệ tương đương E(X) trên r như sau:
(t1, t2) E(X) t1[X] = t2[X], t1, t2 r Quan hệ E(X) phân hoạch r thành các lớp tương đương Mỗi lớp tương đương là một tập con của r chứa các bộ giống nhau trên X Ký hiệu phân
hoạch đó là X
Với u X , nếu t1[X] = t2[X] t1[Y] = t2[Y], t1, t2 u, thì ta nói rằng u thỏa X Y Ngược lại, u không thỏa X Y Thực hiện đoạn chương trình dưới đây để nhận được quan hệ r1
r 1 : = ;
For each u X do
if (u thỏa X Y) then r1 : = r1 u;
Đặt k = |r1| / |r| Khi đó, ta nói r thỏa X Y với độ phụ thuộc k, 0 k 1
Ví dụ 1.3 Xét phụ thuộc hàm Tên Giới tính trên quan hệ cho trong bảng
1.1, ta có T nê = {{t1 , t 5}, {t2}, {t3 , t 4 , t 7}, {t6}, {t8}}, r1 = {{t1 , t 5} {t2} {t6} {t8} = {t1 , t 5 , t 2 , t 6 , t 8}, k = |r1| / |r| = 5/8 = 0.625 Như vậy, r thỏa phụ thuộc hàm Tên Giới tính với độ phụ thuộc 0.625
Trang 2113
1.3.2 Phụ thuộc hàm mêtric
Khi tích hợp dữ liệu từ nhiều nguồn khác nhau, thường xảy ra những sai lệch nhỏ trong định dạng dữ liệu (chẳng hạn các định dạng khác nhau đối với địa chỉ, số điện thoại) và điều này làm cho các phụ thuộc hàm truyền thống bị vi phạm, mà thực chất không hề có sự vi phạm về mặt ngữ nghĩa Khái niệm phụ thuộc hàm mêtric [42], được định nghĩa dưới đây, sẽ tổng quát hóa khái niệm phụ thuộc hàm truyền thống
Xét phụ thuộc hàm X Y trên quan hệ r Với mỗi bộ t r, ký hiệu [t]X = {u r : u[X] = t[X]} và X = {[t]X : t r}
Với T r, ký hiệu T[Y] = {t[Y] : t T} Khi đó, phụ thuộc hàm X Y đúng trên r nếu
| [ ] | 1
X
T
max T Y
Cho một mêtric d trên tập Y, d: dom(Y) dom(Y) R, và một tham số
0 Một phụ thuộc hàm mêtric, ký hiệu là X Y, được gọi là đúng trên
r (hay thỏa r) nếu
( [ ])
X
max T Y , trong đó d( [ ])T Y max p q T Y, [ ]d p q( , )
Ta đã biết phụ thuộc hàm X Y đúng trên quan hệ r nếu với hai bộ bất
kỳ t1 , t 2 r mà t1[X] = t2[X] thì t1[Y] = t2[Y] Do đó, về mặt trực quan, ta có
thể hình dung phụ thuộc hàm mêtric là sự mở rộng của phụ thuộc hàm bằng
cách thay thế điều kiện t1[Y] = t2[Y] bằng điều kiện d(t1[Y], t2[Y]) ≤
Nguồn dữ liệu Tên phim Thời gian (phút)
t 1 movies.aol.com Aliens 110
t 2 finnguide.fi Aliens 112
t 3 amazon.com Clockwork Orange 137
t 4 movie-vault.com A Beautiful Mind 144
t 5 walmart.com A Beautiful Mind 145
t 6 tesco.com Clockwork Orange 131
Bảng 1.2 Quan hệ Phim
Trang 22X Y đúng với quan hệ Phim
1.3.3 Phụ thuộc hàm điều kiện
Phụ thuộc hàm điều kiện [12, 32, 75] được sử dụng trong vấn đề làm
sạch dữ liệu Xét quan hệ Q1 được cho trong bảng 1.3
Ta thấy quan hệ Qh1 không thỏa phụ thuộc hàm AB C vì hai bộ t 1 , t 2
có cùng giá trị trên AB nhưng không có cùng giá trị trên C Tuy nhiên, Qh1
thỏa ràng buộc = {A = 002 , B} {C}, nghĩa là nếu chỉ xét các bộ của Qh 1
mà các bộ này có giá trị trên thuộc tính A là 002 thì phụ thuộc hàm AB C
đúng
Một phụ thuộc hàm điều kiện có dạng = (X Y, T p), trong đó X Y
là một phụ thuộc hàm và Tp là một bảng mẫu với các thuộc tính trong X Y Bảng mẫu Tp chứa các bộ mẫu, mỗi bộ mẫu tp Tp chứa các giá trị hằng và
biến không tên "" Biến không tên "" có thể nhận một giá trị tùy ý trong
miền thuộc tính tương ứng Bảng mẫu xác định các bộ của quan hệ phải thỏa
phụ thuộc hàm X Y Một cách trực quan, bảng mẫu Tp của làm mịn phụ
thuộc hàm X Y được nhúng trong bằng việc áp đặt mối liên kết của các
Trang 2315
giá trị dữ liệu có liên quan về mặt ngữ nghĩa
Theo định nghĩa phụ thuộc hàm điều kiện, ta thấy ràng buộc là một
phụ thuộc hàm điều kiện (AB C, Tp) với Tp là bảng mẫu chỉ gồm một bộ
mẫu như sau:
Ví dụ 1.5 [12] Dưới đây là một số minh họa về các phụ thuộc hàm điều kiện
trên quan hệ Khách hàng (Cust) được cho trong bảng 1.4, trong đó CC
(Country Code) là mã quốc gia, AC (Area Code) là mã vùng, PN (Phone Number) là số điện thoại, NM (Name) là tên và STR (Street), CT (City), ZIP (Zip Code) là địa chỉ
t 1 01 908 1111111 Mike Tree Ave NYC 07974
t 2 01 908 1111111 Rich Tree Ave NYC 07974
Bảng 1.4 Quan hệ Cust
Xét 3 phụ thuộc hàm điều kiện sau đây:
1 = ({CC, ZIP} {STR}, T1) với bảng mẫu T1
Trang 24Phụ thuộc hàm là trường hợp đặc biệt của phụ thuộc hàm điều kiện
Thật vậy, phụ thuộc hàm X Y chính là phụ thuộc hàm điều kiện (X Y, Tp) với Tp chỉ gồm một bộ mẫu tp duy nhất và tp[A] = "" với mọi
dụng lý thuyết tập mờ, hai giá trị dữ liệu có thể bằng nhau với mức nào đó (0 ≤ ≤ 1), tham số được cung cấp bởi người thiết kế cơ sở dữ liệu
Cho r là một quan hệ xác định trên tập thuộc tính Ω = {A1 , A 2 ,…,A n} và
X, Y Với mỗi thuộc tính A i Ω, mức độ bằng nhau của các giá trị dữ liệu trong Dom(Ai) được xác định bởi quan hệ (hàm) Ri
Cho trước tham số (0 ≤ ≤ 1), ta nói 2 bộ t1[X] và t2[X] bằng nhau với mức , kí hiệu t1[X] E() t2[X], nếu Rk(t1[Ak], t2[Ak]) với mọi Ak X Khi đó, X Y được gọi là phụ thuộc hàm mờ mức nếu với mọi t1 , t 2 r,
t 1[X] E() t2[X] t1[Y] E() t2[Y]
Ví dụ 1.6 [3] Cho Ω = {A 1 , A 2 , A 3} với Dom(A1 ) = {a, b, c}, Dom(A 2 ) = {p, q} và Dom(A 3 ) = {x, y, z}
Trang 25X Y mức = 0.6
1.3.5 Phụ thuộc sai phân
Khái niệm phụ thuộc sai phân [65] mở rộng quan hệ bằng nhau ở cả hai
vế (vế trái và vế phải) của phụ thuộc hàm X Y trên quan hệ r Điều kiện t1 ,
t 2 bằng nhau trên X và bằng nhau trên Y tương ứng được thay thế bằng điều
kiện hai bộ này thỏa mãn hàm L và hàm R Các hàm L, R được gọi là các
hàm sai phân, các phép toán sử dụng trong các hàm sai phân là =, <, >, , , ngoài ra còn có thể sử dụng thêm các toán tử (và), (hoặc) Thực chất, các
hàm sai phân sử dụng khoảng cách metric để mở rộng các quan hệ bằng nhau
được sử dụng (ở cả vế trái và vế phải) trong khái niệm phụ thuộc hàm
Ví dụ 1.7 [65] Xét ràng buộc sau trong một quan hệ lưu trữ thông tin về giá
của các chuyến bay: "sự khác nhau về giá của hai ngày bất kỳ trong khoảng
thời gian một tuần không vượt quá 100$" Ràng buộc này được thể hiện bởi
phụ thuộc sai phân:
[Date (≤ 7)] [Price (≤ 100)]
Trang 2618
Nghĩa là, với hai bộ bất kỳ t1 , t 2 trong quan hệ đang xét,
L(t1[Date], t2[Date]) ≤ 7 R(t1[Price], t2[Price]) ≤ 100
Phụ thuộc hàm là trường hợp đặc biệt của phụ thuộc sai phân trong trường hợp L[t1[X], t2[X]) = 0 và R[t1[Y], t2[Y]) = 0 Ngoài ra, phụ thuộc sai
phân còn là sự mở rộng của phụ thuộc hàm mêtric khi L[t1[X], t2[X]) = 0 và
R[t1[Y], t2[Y]) ≤
1.3.6 Các loại phụ thuộc hàm suy rộng khác
Còn có nhiều loại phụ thuộc hàm suy rộng khác nữa [18], chẳng hạn
phụ thuộc hàm dựa trên xác suất (Probability Based Functional
Dependencies), phụ thuộc hàm tương tự (Similarity Functional Dependencies), phụ thuộc sai phân xấp xỉ (Approximate Differential Dependencies), Xuất phát từ các ứng dụng thực tế, mỗi loại phụ thuộc hàm suy rộng là kết quả của sự mở rộng (nới lỏng) quan hệ bằng nhau trong khái niệm phụ thuộc hàm truyền thống theo một cách thức hay một nghĩa nào đó 1.4 Phát hiện phụ thuộc hàm
Do phụ thuộc hàm là trường hợp riêng của tất cả các loại phụ thuộc hàm suy rộng nên các kết quả đã có về phụ thuộc hàm có thể được làm thích nghi để sử dụng cho phụ thuộc hàm suy rộng Trong phần này, ta sẽ điểm lại các phương pháp phát hiện phụ thuộc hàm đã được đề xuất: phương pháp trên-xuống (top-down) và phương pháp dưới-lên (bottom-up) Phương pháp top-down bắt đầu bằng việc sinh các phụ thuộc hàm ứng viên theo từng mức,
từ vế trái có ít thuộc tính đến vế trái có nhiều thuộc tính hơn, sau đó kiểm tra phụ thuộc hàm ứng viên có được thỏa mãn hay không bởi quan hệ đang xét hoặc bởi các phân hoạch tương ứng Trái lại, phương pháp bottom-up bắt đầu
bằng việc so sánh các bộ để nhận được các tập bằng nhau (agree-set) hoặc các tập khác nhau (difference-set); sau đó sinh các phụ thuộc hàm ứng viên
và kiểm tra sự thỏa mãn của các phụ thuộc hàm này dựa vào các tập bằng nhau và các tập khác nhau đã nhận được trước đó
Quan hệ trong bảng 1.6 dưới đây sẽ được sử dụng để minh họa cho một
số ví dụ trong phần này
Trang 27tìm kiếm Trong phần này, đầu tiên ta trình bày việc sinh và tỉa các phụ thuộc
hàm ứng viên, sau đó sẽ trình bày hai phương pháp cài đặt cụ thể: phương pháp phân hoạch (các thuật toán bao gồm TANE [37] và FD_Mine [74]) và phương pháp tập tự do (free-set) sử dụng lực lượng của các quan hệ chiếu để kiểm tra sự thỏa mãn của các phụ thuộc hàm (thuật toán FUN [59])
Phụ thuộc hàm ứng viên Các phụ thuộc hàm ứng viên là các phụ thuộc
hàm mà về cú pháp có thể tồn tại trong một lược đồ quan hệ Tuy nhiên, sự thỏa mãn của chúng đối với một thể hiện cụ thể của lược đồ quan hệ này thì chưa được kiểm tra
Cho trước lược đồ S(Ω) với Ω = {A1 ,A 2 , ,A n}, vế trái của các phụ
thuộc hàm ứng viên được sinh nhờ sử dụng tất cả các tổ hợp thuộc tính có thể của Ω Như đã biết, ta chỉ quan tâm đến các phụ thuộc hàm tối tiểu có một thuộc tính ở vế phải, số thuộc tính ở vế trái của một phụ thuộc hàm ứng viên
nhiều nhất là (n - 1) thuộc tính Chẳng hạn, các phụ thuộc hàm ứng viên không có thuộc tính ở vế trái là A1, , An; các phụ thuộc hàm ứng viên có một thuộc tính ở vế trái là A1 A2, A1 A3, A1 An, , An An-1; các phụ thuộc hàm ứng viên có hai thuộc tính ở vế trái là A1 A 2 A3, A1 A 2
A 4, Vế trái của các phụ thuộc hàm ứng viên có thể được thể hiện trong một
Trang 2820
dàn thuộc tính
Dàn thuộc tính Một dàn thuộc tính là một đồ thị có hướng với nút gốc
(L-0) không có thuộc tính nào và được kí hiệu bởi Các nút con của nút gốc là các nút mức 1 (L-1) và mỗi nút có một thuộc tính Tổng cộng L-1 có
C nút ở L-2 Các mức tiếp theo cũng được xây dựng theo cùng quy tắc Mức
thứ n (L-n) là mức cuối cùng và chứa tất cả các thuộc tính Kí hiệu nij là nút thứ j ở L-i, đồng thời nij cũng được dùng để biểu thị tập các thuộc tính tại nút này Một cạnh có hướng sẽ được vẽ giữa nút nij và nút n (i+1)k nếu nij n (i+1)k
Theo cách này, mỗi cạnh thể hiện một phụ thuộc hàm ứng viên có dạng nij ( n (i+1)k - nij) Hình 1.1 minh họa một dàn thuộc tính với Ω = {A, B, C, D}, cạnh giữa nút AB và ABC biểu thị phụ thuộc hàm ứng viên AB C
Hình 1.1 Minh họa dàn thuộc tính
Như trên đã phân tích, tổng số nút trong dàn thuộc tính là
n n 2n
C C C C C
Do C n h C n n h nên các cạnh trong dàn thuộc tính đối xứng nhau qua mức giữa
nếu n là số chẵn hoặc đối xứng nhau qua hai mức giữa nếu n là số lẻ Tổng số
các phụ thuộc hàm ứng viên (tổng số cạnh trong dàn) là
Trang 2921
Kí hiệu |r| là số bộ của quan hệ r trên lược đồ Ω = {A1 ,A 2 , ,A n} Tính trung bình, mỗi phụ thuộc hàm liên quan đến n/2 thuộc tính Do đó, độ phức
tạp khi sử dụng các vòng lặp lồng nhau để kiểm tra tất cả các phụ thuộc hàm
ứng viên trong dàn thuộc tính đối với quan hệ rlà 2 2
Tỉa trên dàn thuộc tính Do số lượng phụ thuộc hàm ứng viên là hàm
mũ theo số lượng thuộc tính nên việc tỉa trên dàn thuộc tính trở nên quan trọng Tỉa trên dàn thuộc tính là loại bỏ các phụ thuộc hàm ứng viên (các
cạnh trong dàn thuộc tính) được suy diễn từ các phụ thuộc hàm đã được phát
hiện, để không cần phải kiểm tra chúng Chẳng hạn, trong hình 1.1, nếu A
C đã được phát hiện là đúng thì không cần phải kiểm tra AB C vì AB C
cũng đúng theo hệ quy tắc Armstrong
Các luật tỉa cơ bản dưới đây thường được sử dụng và có thể được chứng minh bằng hệ quy tắc Armstrong Gọi là tập các phụ thuộc hàm đã
được phát hiện; X, Y là các tập con của Ω; A, B là hai thuộc tính trong Ω; X
Y = ; A, B X; A, B Y và A ≠ B
(T1) Nếu X A thì XZ A đúng và không cần phải kiểm tra
(T2) Nếu X A và nếu XAY B là một phụ thuộc hàm ứng viên thì thay cho việc kiểm tra XAY B ta sẽ kiểm tra XY B Với việc kiểm tra từ trên xuống dưới trên dàn thuộc tính, XY B phải được kiểm tra
ở mức trước và do vậy không cần thiết phải kiểm tra XAY B
(T3) Nếu X là một khóa thì mọi nút chứa X đều bị tỉa (xóa)
Các luật tỉa ở trên được chia thành hai loại: các luật tỉa (T1), (T2) là tỉa cạnh, luật tỉa (T3) là tỉa nút Ngoài các luật tỉa cơ bản ở trên, một số thuật toán còn sử dụng các luật tỉa khác, chẳng hạn thuật toán FD_Mine sử dụng các phụ
thuộc hàm đối xứng (còn gọi là phụ thuộc hàm tương đương, X Y nếu X
Y và Y X ) để tỉa tập thuộc tính (chẳng hạn tập Y) nhằm thu hẹp kích thước
Trang 3022
dàn thuộc tính, thuật toán FUN tỉa các tập không tự do (non-free-sets) để làm giảm kích thước dàn thuộc tính Thuật toán FastFDs [73], một phương pháp bottom-up, sử dụng các tập khác nhau để tỉa các nút trên dàn thuộc tính
Các luật tỉa cơ bản ở trên được sử dụng trong thuật toán 1.1 dưới đây để
tìm một phủ của tất cả các phụ thuộc hàm đúng trên r Thuật toán kiểm tra sự
thỏa mãn của các phụ thuộc hàm dựa trên một dàn thuộc tính theo trình tự từ trái sang phải và từ trên xuống dưới Ta tiến hành duyệt từ trên xuống dưới là
vì các phụ thuộc hàm ứng viên ở các mức trên có ít thuộc tính ở vế trái hơn
các phụ thuộc hàm ứng viên ở các mức dưới Nếu A C được phát hiện thì các phụ thuộc hàm ứng viên khác như AX C sẽ bị tỉa theo luật tỉa (T1)
Điều này rõ ràng hiệu quả hơn nếu như ta duyệt từ dưới lên trên vì theo theo
thứ tự này nếu AX C được phát hiện, ta vẫn phải kiểm tra A C và
X C
Trong thuật toán 1.1, dòng 7 cài đặt luật tỉa (T3), dòng 11 cài đặt các
luật tỉa (T1) và (T2) Ở dòng 12, supp(f, r) kiểm tra phụ thuộc hàm ứng viên f trên quan hệ r; nếu f được thỏa mãn, hàm này trả về giá trị true Ngược lại, hàm trả về giá trị false
Dễ thấy rằng thuật toán 1.1 cho kết quả là các phụ thuộc hàm tối tiểu
Thật vậy, theo tiến trình duyệt từng mức một trên dàn thuộc tính của thuật
toán, ta cần chứng minh rằng với X A là phụ thuộc hàm bất kỳ thuộc (tập
các phụ thuộc hàm đã được phát hiện), nếu không có phụ thuộc hàm nào có
dạng f = (XY A) được bổ sung vào , thì các phụ thuộc hàm trong là tối tiểu Thật vậy, điều kiện (X A) sao cho X q và XA c trên dòng
11 phát hiện tình huống này Nếu phụ thuộc hàm ứng viên f = (XY A) thì q
= XY và c = XYA Điều này làm cho điều kiện trên dòng 11 đúng, f bị tỉa và
không được bổ sung vào
Một ví dụ minh họa việc tỉa các phụ thuộc hàm ứng viên theo thuật toán
1.1 là: quan sát hình 1.1 (b), giả sử A C thuộc Khi đó, các phụ thuộc
hàm ứng với các đường chấm chấm bị tỉa theo luật tỉa (T1), các phụ thuộc
Trang 3123
hàm ứng với các đường nét đứt bị tỉa theo luật tỉa (T2) Từ ví dụ này, ta thấy rằng khi các phụ thuộc hàm có một thuộc tính ở vế trái được phát hiện thì chúng trở nên rất quan trọng đối với việc tỉa một số lượng lớn các cạnh và làm giảm độ phức tạp tính toán Các phụ thuộc hàm như vậy thường xuất hiện nhiều trong các cơ sở dữ liệu có khóa chỉ gồm một thuộc tính (chẳng hạn: địa chỉ email của nhân viên, mã số của sinh viên, mã vạch của sản phẩm, số đăng
ký xe, là các khóa chỉ gồm một thuộc tính)
- Thuật toán 1.1 [45] Phát hiện phụ thuộc hàm
- INPUT: Một quan hệ r trên tập thuộc tính
OUTPUT: Tập gồm các phụ thuộc hàm được phát hiện từ quan hệ r
1 begin
2 Gọi là tập lưu trữ các phụ thuộc hàm được phát hiện và K là tập
lưu trữ các khóa được phát hiện;
3 for each mức L = 2 to (|| - 1) do
4 for each nút p ở mức (L - 1) do
5 sinh tất cả các nút con C ở mức L của nút p;
6 for each nút c C do
7 if c chứa một khóa then xóa c, next loop;
8 if c là một khóa then bổ sung c vào K;
9 for each nút cha q ở mức (L - 1) của c do
10 gọi f là phụ thuộc hàm q (c - q)
11 if (X A) sao cho X q và XA c then
f được suy từ X A và tỉa f
12 else if supp(f, r) = true then bổ sung f vào
13 else bỏ qua f;
14 end;
Ngoài việc phát hiện phụ thuộc hàm, thuật toán 1.1 còn phát hiện được
cả tập các khóa K (dòng 8) Nếu không có nhu cầu sử dụng tập các khóa K, ta
có thể điều chỉnh dòng 2 và bỏ dòng 8
Độ phức tạp trong trường hợp xấu nhất của thuật toán 1.1 là hàm mũ như đã phân tích ở trên Điều này xảy ra khi vế trái của tất cả các phụ thuộc hàm bao gồm hầu hết các thuộc tính của quan hệ Trong trường hợp này, tất
Trang 3224
cả các cạnh của dàn thuộc tính đều cần phải kiểm tra
Thuật toán 1.1 cho kết quả là một phủ của tất cả các phụ thuộc hàm
đúng trên r Thật vậy, tất cả các phụ thuộc hàm ứng viên đều thuộc dàn thuộc
tính Quá trình tỉa (dòng 11) loại bỏ các phụ thuộc hàm được suy diễn Dòng
13 loại bỏ các phụ thuộc hàm không thỏa Dòng 12 đưa tất cả các phụ thuộc hàm còn lại vào Không có lệnh nào trong thuật toán loại bỏ các phụ thuộc
hàm trong Do đó là một phủ của tất cả các phụ thuộc hàm đúng trên r
Thuật toán 1.1 cho kết quả là một phủ nhưng phủ này có thể chưa tối tiểu Lý do là trong quá trình tính toán, ta không sử dụng luật suy diễn bắc cầu; do vậy ta có thể đưa vào các phụ thuộc hàm được suy diễn từ các phụ thuộc hàm đã được phát hiện Chẳng hạn, theo thuật toán, ta có thể đưa các
phụ thuộc hàm sau theo thứ tự vào : A1 A2, A1 A3 và A2 A3; ở đây, A1
A3 được suy diễn từ A1 A2, A2 A3
Tóm lại, ta đã trình bày một thuật toán có thể tỉa các phụ thuộc hàm ứng viên và các nút của dàn thuộc tính sau khi một tập các phụ thuộc hàm và một tập các khóa đã được phát hiện Bài toán quan trọng tiếp theo là làm thế nào để kiểm tra một phụ thuộc hàm ứng viên sao cho có hiệu quả, nghĩa là
supp(f, r) trong thuật toán 1.1 được tính toán thế nào để có hiệu quả Một số
phương pháp tính toán sẽ được trình bày dưới đây
Phương pháp phân hoạch Hai thuật toán nổi tiếng sử dụng phương
pháp phân hoạch là TANE và FD_Mine Cả TANE và FD_Mine đều sử dụng các luật tỉa cơ bản như trên đã trình bày, ngoài ra FD_Mine còn sử dụng các phụ thuộc hàm đối xứng (còn gọi là phụ thuộc hàm tương đương)
Mặc dù thuật ngữ "phương pháp phân hoạch" được dùng để chỉ một lớp các thuật toán; tuy nhiên, khái niệm "phân hoạch" còn được sử dụng trong các thuật toán khác như: phương pháp tập tự do, phương pháp bottom-up để cải tiến hiệu năng thực hiện
Cho trước một quan hệ r trên lược đồ và một tập thuộc tính X , phân hoạch r theo X, kí hiệu X là tập các tập con khác rỗng rời nhau và mỗi tập con chứa tất cả các bộ có cùng giá trị trên X Mỗi tập con của một phân
Trang 3325
hoạch được gọi là một lớp tương đương Một phân hoạch được lược gọn là
một phân hoạch trong đó các lớp tương đương có một phần tử bị loại bỏ
Ví dụ 1.8 Xét quan hệ trong bảng 1.6 Khi đó I { },{ },{ },{ }t1 t2 t3 t4 ,
{ , },{ , }1 2 3 4
và N NB { },{ , },{ }t1 t t2 3 t4
Cho hai phân hoạch Xvà Y, phân hoạch X được gọi là mịn hơn Y,
kí hiệu là X Y nếu với mỗi tập con uX đều tồn tại một tập con vY
sao cho u v X Y X Y, Y X
Định lý 1.1 [40] Phụ thuộc hàm X A đúng trên r nếu X A
Định lý dưới đây là sự mở rộng của định lý 1.1 Định lý này rất hữu ích
khi kiểm tra các phụ thuộc hàm có dạng X A vì X và XA tương ứng với hai
nút được nối bởi một cạnh trong dàn thuộc tính
Định lý 1.2 [37, 40] Phụ thuộc hàm X A đúng trên r nếu và chỉ nếu
Dưới đây, ta trình bày cách sử dụng các phân hoạch trong dàn thuộc
tính với lược đồ Trước tiên, quan hệ r trên lược đồ được quét để có
được các phân hoạch trên mỗi thuộc tính của và các phân hoạch này được lưu trữ trên các nút tương ứng ở mức L-1 của dàn thuộc tính Điều này thực hiện được vì kích thước các phân hoạch nhỏ hơn nhiều so với kích thước của
cơ sở dữ liệu Các phân hoạch của các tập chứa nhiều thuộc tính sẽ được tính toán dựa trên các phân hoạch của các tập có ít thuộc tính hơn; do đó không
cần phải truy cập lại quan hệ r Nghĩa là, phân hoạch tại mỗi nút ở mức L- i
được tính toán theo hai phân hoạch của hai nút ở mức L-(i 1) Chẳng hạn, để
Trang 3426
tính phân hoạch ABC đối với nútABC, ta sử dụng phân hoạch AB của nút
AB và phân hoạch AC của nút AC Nếu AB ABC thì theo Định lý 1.2,
ABC đúng
Ta phân tích độ phức tạp của phương pháp phân hoạch Đặt n = || Độ
phức tạp thời gian cho việc tính toán các phân hoạch của các tập có một thuộc tính là 2
Do đó, độ phức tạp thời gian của phương pháp phân hoạch là
22
là tổng số các phụ thuộc hàm ứng viên So với độ
phức tạp thời gian của cách tiếp cận sử dụng vòng lặp lồng nhau ở trên thì phương pháp phân hoạch nhanh hơn n 2 lần Bằng việc sử dụng bảng băm để tính các phân hoạch và thuật toán tuyến tính được đề xuất trong TANE để tính
tích các phân hoạch, độ phức tạp này có thể giảm xuống còn 2
Phương pháp tập tự do Cách tiếp cận tập tự do đã được đề xuất trong
[59] và thuật toán cài đặt cách tiếp cận này là FUN FUN sử dụng lực lượng của hình chiếu r X[ ] để kiểm tra phụ thuộc hàm: r X[ ] r XA[ ] khi và chỉ khi X A Ta thấy rằng r X[ ] chính là số lớp tương đương của phân hoạch
Trang 3527
Vế trái của một phụ thuộc hàm tối tiểu phải là một tập tự do Tập tự do của
quan hệ r, kí hiệu là Fr r( ), là tập gồm tất cả các tập tự do trên r Một tập
không tự do là một tập mà lực lượng hình chiếu của nó bằng với lực lượng
hình chiếu của một tập con nào đó của nó Tập chứa một tập không tự do cũng là tập không tự do
Để phát hiện các phụ thuộc hàm đúng trên quan hệ r, ta cần thêm hai
khái niệm: bao đóng thuộc tính X và hầu bao đóng X
Bao đóng thuộc tính của tập X được tính như sau:
| ( ), [ ] [ ]
X X A A RX r X r XA
nghĩa là X chứa thuộc tính A trên nút ở mức tiếp theo nếu X A
Hầu bao đóng X o của tập X được xác định như sau:
1
( ) ( k)
X X X A X A
trong đó X A1 A k Như vậy, Xchứa các thuộc tính trên tất cả các nút cha
của X và tất cả các nút phụ thuộc vào các nút cha đó
Các phụ thuộc hàm được xây dựng dựa trên các thành viên của tập ( )
Fr r và của hai bao đóng như đã trình bày
FD X A XFr r A X X
Luật tỉa của phương pháp tập tự do là tỉa các tập không tự do X (một nút) Kỹ thuật sau đó nhằm vào các phụ thuộc hàm kết thúc ở X bằng cách tính bao đóng của các nút (là tập tự do) cha Y của X cùng với lực lượng của
chúng mà không cần phải truy cập đến các phân hoạch Các luật tỉa cơ bản cũng được sử dụng trong phương pháp này
Thuật toán duyệt trên dàn thuộc tính theo từng mức Ở mức L-1, lực lượng của tất cả các thuộc tính đơn được tính Hầu bao đóng của mỗi thuộc tính ở mức L-1 được khởi tạo bằng chính nó Ở mức L-2, các tổ hợp gồm hai thuộc tính được tính từ các thuộc tính không khóa (non-key) ở mức L-1 Sau
đó lực lượng của các tổ hợp hai thuộc tính được tính Nếu lực lượng của một
tổ hợp hai thuộc tính X bằng lực lượng nút cha P của nó ở mức trước:
Trang 3628
Card X Card P , thì (1) P P X ; (2) P(X P); (3) X là một tập
không tự do và không tham gia vào việc sinh nút mới ở các mức sau Sau khi
bao đóng của mỗi tập thuộc tính P ở mức trước được tính thì hầu bao đóng của mỗi tập thuộc tính X ở mức hiện tại được tính Sau đó thuật toán sẽ thực
hiện việc sinh nút ở mức L-3
Ví dụ, xét quan hệ trong bảng 1.6 Kí hiệu X m: biểu thị tập thuộc tính
X và lực lượng của nó Mức L-1 có các nút là: I : 4, N: 3, B: 2, W : 2, : 2
S I là một khóa và không tham gia vào việc sinh nút mới ở mức tiếp
theo Mức L-2 có các nút là: NB: 3, NW: 4, NS: 3, BW: 3, BS: 3, WS: 4
WS và NW là các khóa Từ lực lượng của các nút ở mức L-2, ta thấy
Card NB Card N , Card NS( )Card N( ) nên N B và N S;NB và
NS là các tập không tự do N NBS Bao đóng của các thuộc tính ở mức L-1: N NBS, B B, W W và S NBS; hầu bao đóng của NB là
NB NBS
Độ phức tạp của cách tiếp cận này bao gồm chi phí tính các tập tự do và chi phí tính các phụ thuộc hàm Đặt h Fr r( ) và n = || Độ phức tạp khi
tính Fr r( ) là O h r n 2 với n/ 2 là số thuộc tính trung bình của một tập tự
do Trong trường hợp xấu nhất, chi phí để tính X,X và các phụ thuộc hàm
là hàm mũ theo số thuộc tính n vì việc tính toán thực hiện dọc theo dàn thuộc
tính
1.4.2 Phương pháp bottom-up
Khác với phương pháp top-down ở trên, phương pháp bottom-up [45]
so sánh các bộ của quan hệ để tính các tập bằng nhau và các tập khác nhau Các tập này sau đó được sử dụng để có được các phụ thuộc hàm đúng trên quan hệ đang xét Đặc trưng của kỹ thuật bottom-up là chúng không kiểm tra các phụ thuộc hàm ứng viên dựa trên quan hệ, mà kiểm tra các phụ thuộc hàm ứng viên dựa trên các tập bằng nhau và khác nhau đã được tính
Phủ âm Một phủ âm là một phủ gồm tất cả các phụ thuộc hàm vi phạm
quan hệ Phủ âm được tính từ các tập bằng nhau của các bộ thuộc quan hệ
Trang 3729
Tập bằng nhau của hai bộ t và 1 t , kí hiệu 2 ag t t , là tập thuộc tính ( , )1 2
X lớn nhất sao cho t X1[ ]t X2[ ] Tập gồm tất cả các tập bằng nhau trên quan
quả, ta thường dùng các phân hoạch lược gọn khi tính toán
Tính chất của các tập bằng nhau là nếu ag t t( , )1 2 X thì với mọi thuộc tính A(RX) ta có t A1[ ]t A2[ ] Nói cách khác, X A bị vi phạm bởi t 1
và t Đó là nguyên lý cơ bản của cách tiếp cận dựa trên phủ âm 2
Tập cực đại của một thuộc tính A , kí hiệu max A( ), được định nghĩa như sau:
max(A) = {X | X ag(r), A X, Y ag(r) : X Y}
Do X không chứa A nên X A bị vi phạm bởi ít nhất một cặp bộ
Vì Yag r( ) :X Y nên X là một tập tối đại Ý tưởng sử dụng tập tối đại
X từ ag r( ) là nếu XY A bị vi phạm bởi một cặp bộ thì X A, Y A
cũng bị vi phạm bởi cặp bộ đó Với mục đích là tính hiệu quả, ta chỉ cần xem xét các tập tối đại chứ không phải tất cả các tập bằng nhau
Các tập cực đại của tất cả các thuộc tính tạo nên một phủ của bao đóng
âm gồm tất cả các phụ thuộc hàm vi phạm quan hệ đang xét
Ví dụ 1.10 Từ ví dụ 1.9, ta có:
max I BW NBS
Các tập cực đại sau đó được dùng để tìm các phụ thuộc hàm đúng trên
r Các phụ thuộc hàm có vế phải là A , kí hiệu là FD A( ), được xây dựng theo
2 bước:
Trang 3830
FD 1(A) = {X A | X ( - A), Y max(X): X Y} (1a)
FD(A) = {f | f FD 1(A), g FD1(A): vetrai(g) vetrai(f)} (2a)
Ta thấy rằng với mọi Ymax A( ) thì Y A bị vi phạm bởi ít nhất một
cặp bộ của r; nếu một tập thuộc tính V nào đó được bổ sung vào Y sao cho
( )
YV max A thì YV A được thỏa mãn Do đó, vì X không phải tập con
của một Y như vậy nên X A phải được thỏa mãn Từ (2a) suy ra FD A( )chỉ chứa các phụ thuộc hàm tối tiểu
Tập FD A( ) có thể được xây dựng như sau: Kí hiệu L là tập tất cả các
thuộc tính trong max A( ) Đầu tiên, ta kiểm tra từng thuộc tính B , nếu B L
không thuộc bất kỳ tập nào của max A( ) thì ta bổ sung B A vàoFD A( )
Tiếp theo, ta kiểm tra các tập gồm hai thuộc tính từ L Nếu một tập, chẳng
hạn BC, không là tập con của bất kỳ tập con nào của max A( ) và không chứa
vế trái của phụ thuộc hàm nào trong FD A( ) thì ta lại bổ sung BC A
vàoFD A( ) Cứ tiếp tục như vậy cho đến khi các tập gồm 3, 4, thuộc tính
không chứa A được kiểm tra Luật tỉa (T1) được sử dụng để thu hẹp các tổ
hợp cần kiểm tra
Ví dụ 1.11 [45] Từ ví dụ 1.10, ta có max I( )BW NBS, Tất cả các tập
gồm một thuộc tính (trừ I ) đều chứa trong một phần tử của max I( ) nên
không có thuộc tính nào xác định hàm I Tiếp theo, ta xét các tổ hợp hai
thuộc tính: NB NW NS BW BS WS, , , , , Ta thấy, NWvà WS không chứa trong bất kỳ phần tử nào của max I( ) Do đó, NW I và WS I được bổ sung vào FD I( ) Tiếp đến, ta xét các tổ hợp ba thuộc tính:
NBW NBS NWS BWS Trong số này, NBSmax I( ); NBW NWS BWS, ,chứa vế trái của một phụ thuộc hàm trong FD I( ); như vậy không có phụ thuộc hàm nào được suy từ các tập ba thuộc tính Tương tự, không có các phụ thuộc hàm nào được suy từ các tập bốn thuộc tính Kết quả ta có
FD I NW I WSI
Trang 3931
Độ phức tạp của cách tiếp cận phủ âm là hàm mũ theo số thuộc tính của
trong trường hợp xấu nhất Để tính tập bằng nhau ag r( ) cần n r 2 phép so
sánh với n = || Để tính max A( ) với mọi A trong mất n ag r( )2phép so sánh Cuối cùng, để nhận được các phụ thuộc hàm từ max A( ) (với mọi A )
Tập khác nhau Thuật ngữ "tập khác nhau" đồng nghĩa với tập cần thiết [49] và phần bù của tập cực đại [46] Phương pháp tập khác nhau sử
dụng tư tưởng đối ngẫu của khái niệm phủ âm Tập khác nhau của một thuộc
tính A , kí hiệu dif A( ), là tập chứa các tập con thuộc tính sao cho khi thuộc
tính A có các giá trị khác nhau trên hai bộ thì một tập con trong dif A( ) cũng
có các giá trị khác nhau trên hai bộ đó [73]
Khi đã tính được dif A( ) thì vế trái của các phụ thuộc hàm được thỏa phải chứa một thuộc tính từ mỗi tập con của dif A( )
Mặc dù nguyên lý để phát hiện vế trái của các phụ thuộc hàm được thỏa mãn là đơn giản nhưng không gian tìm kiếm trong quá trình tính toán phụ thuộc hàm được thỏa mãn là hàm mũ theo số tất cả các thuộc tính trong ( )
dif A Thuật toán Dep-Miner được đề xuất trong [46] cũng dùng ý tưởng này Kí hiệu R là tập gồm tất cả các thuộc tính xuất hiện trong bất kỳ tập con 'nào của dif A( ) Về cơ bản, Dep-Miner xem xét tất cả các tổ hợp thuộc tính
Trang 4032
có thể theo từng mức trên dàn thuộc tính của R Vế trái của một phụ thuộc 'hàm được thỏa là một tổ hợp trong dàn có giao với tất cả các tập con của ( )
dif A
Độ phức tạp của phương pháp này tương tự như phương pháp phủ âm
Để giảm độ phức tạp, thuật toán FastFDs đã được đề xuất trong [73] Thuật toán xây dựng một dàn trước tiên theo chiều sâu (depth-first) sử dụng các phần tử của một tập khác nhau Quá trình xây dựng dàn kết thúc bằng một phủ của tất cả các phụ thuộc hàm được thỏa mãn Về lý thuyết, số nút trong dàn được xây dựng là hàm mũ theo số thuộc tính trong tập khác nhau Thuật toán sử dụng các tập con của tập khác nhau để thu hẹp kích thước dàn
1.4.3 Một số chủ đề liên quan đến phát hiện phụ thuộc hàm
Trong phần này, ta sẽ trình bày tóm tắt một số chủ đề liên quan đến phát hiện phụ thuộc hàm [45]
Lấy mẫu Khi quan hệ r lớn, chi phí cho việc kiểm tra một phụ thuộc
hàm ứng viên có thể rất cao Để giảm thời gian kiểm tra một phụ thuộc hàm
ứng viên trên r, lấy mẫu là một phương pháp được đề xuất cho mục đích này
Kí hiệu f là một phụ thuộc hàm ứng viên, s là một mẫu nhỏ của quan hệ r ,
[0,1]
là một tham số tin cậy (nhỏ) Ý tưởng chính của phương pháp lấy mẫu là nếu f được thỏa bởi s thì f được thỏa bởi r với độ tin cậy (1) Nếu f bị vi phạm bởi các bộ trong s thì chắc chắn f không được thỏa bởi r
[41] Sử dụng ý tưởng này, các phụ thuộc hàm ứng viên không được thỏa bởi
quan hệ r có thể được tỉa một cách hiệu quả Phương pháp lấy mẫu thường
được sử dụng kết hợp với các phương pháp khác
Duy trì các phụ thuộc hàm đã được phát hiện Trong phần này, giả sử
quan hệ r được cho trước và tất cả các phụ thuộc hàm được thỏa bởi r đã
được phát hiện và được lưu trữ trong tập Ta nghiên cứu vấn đề tập sẽ
thay đổi như thế nào khi thực hiện chèn thêm một bộ vào r hoặc xóa đi một
bộ khỏi r