Tải bản đầy đủ (.docx) (31 trang)

TÌM HIỂU VỀ PHÂN MẢNH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN

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 (328.88 KB, 31 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHUYÊN ĐỀ
CƠ SỞ DỮ LIỆU NÂNG CAO
BÀI THU HOẠCH
TÌM HIỂU VỀ PHÂN MẢNH
TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
HƯỚNG DẪN
PGS. TS. ĐỖ PHÚC
HỌC VIÊN THỰC HIỆN
LÊ CUNG TƯỞNG (CH1101152)
Hồ Chí Minh, 8/2012
P a g e | 2
Mục lục
P a g e | 3
Lời mở đầu
Phân tán dữ liệu là nhu cầu cấp thiết khi cần lưu trữ một khối lượng thông tin khổng
lồ. Vì thế để phục tốt cho việc phân tán dữ liệu, đòi hỏi cần những phương pháp, chiến lược
thực hiện tốt. Hiện nay trên thế giới, các nghiên cứu về Cơ sở Dữ liệu phân tán đã phát triển
rất mạnh mẽ.
Trong bước đầu tiếp cận với cơ sở dữ liệu phân tán, học phần Cơ sở Dữ liệu nâng cao
đã giúp học viên có một cái nhìn tổng quan về các loại cơ sở dữ liệu nâng cao, đặc biệt là cơ
sở dữ liệu phân tán.
Phục vụ cho mục đích của học phần, bài thu hoạch chỉ dừng lại ở mức tìm hiểu một số
thuật toán phân tán dữ liệu cơ bản và cài đặt thuật toán phân mảnh theo chiều dọc.
Ngoài ra, trong thời gian sắp tới, học viên sẽ tìm hiểu Cơ sở dữ liệu đồ thị để phục vụ
cho công việc học tập và nghiên cứu của mình.
P a g e | 4
1. Các vấn đề về phân mảnh dữ liệu
1.1. Lý do phân mảnh
Trong thiết kế CSDL phân tán, cần thiết phải thực hiện phân mảnh dữ liệu vì những lý


do sau đây:
 Trong các hệ quản trị CSDL, các quan hệ được lưu trữ dưới dạng các bảng 2
chiều. Các thao tác đối với CSDL được thực hiện trên các bảng. Tuy nhiên trong
thực tế, các ứng dụng chỉ yêu cầu thao tác trên các tập con của các quan hệ, là
khung nhìn dữ liệu của người sử dụng. Vì vậy việc xem tập con của quan hệ là
đơn vị truy xuất thông tin để phân tán dữ liệu là hợp lý.
 Việc phân rã một quan hệ thành nhiều mảnh, mỗi mảnh được xử lý như một đơn
vị dữ liệu, sẽ cho phép thực hiện nhiều giao dịch đồng thời. Đồng thời việc phân
mảnh các quan hệ cũng cho phép thực hiện song song một câu vấn tin bằng cách
chia nó thành một tập các câu vấn tin con hoạt tác trên các mảnh. Vì thế việc phân
mảnh sẽ làm tăng mức độ hoạt động đồng thời và tăng lưu lượng hoạt động của hệ
thống.
Tuy nhiên không phải việc phân mảnh chỉ có ưu điểm hoàn toàn, mà nó cũng thể hiện
những hạn chế như:
 Nếu ứng dụng có những yêu cầu “xung đột” ngăn cản phân rã thành các mảnh
được sử dụng độc quyền.
 Những ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh khác nhau
sẽ làm giảm hiệu suất hoạt động của hệ thống, làm tăng chi phí truy xuất dữ liệu
đến các mảnh và tăng chi phí kết nối các mảnh
 Việc kiểm soát ngữ nghĩa, đặc biệt là vấn đề kiểm tra tính toàn vẹn sẽ khó khăn
hơn
1.2. Các kiểu phân mảnh
Các quan hệ cơ sở dữ liệu thường được biểu diễn dưới dạng bảng. Việc phân mảnh
một quan hệ thành nhiều quan hệ con khác nhau theo các cách khác nhau, sẽ có các cách
phân mảnh tương ứng. Có hai kiểu phân mảnh tương ứng với việc chia quan hệ theo chiều
dọc và chia quan hệ theo chiều ngang.
Phân mảnh theo chiều dọc: Các quan hệ được chia theo chiều dọc. Nghĩa là thiết lập
một quan hệ mới chỉ có một số thuộc tính từ quan hệ gốc. Thực chất đây là phép chiếu trên
tập con các thuộc tính của quan hệ.
Phân mảnh ngang: Quan hệ được chia theo chiều ngang. Thực chất đây là phép chọn

trong quan hệ. Chọn những bộ của quan hệ thỏa mãn một biểu thức điều kiên cho trước.
P a g e | 5
1.3. Mức độ phân mảnh
Phân mảnh Cơ Sở Dữ Liệu đến mức độ nào là đủ, không làm ảnh hưởng đến hiệu
năng của việc thực hiện truy vấn. Mức độ phân mảnh có thể là phân mảnh một quan hệ chưa
được phân mảnh, có thể phân mảnh các quan hệ đã được phân mảnh. Có thể phân mảnh theo
chiều dọc (theo từng thuộc tính) hoặc theo chiều ngang (theo từng bộ trong quan hệ).
Một mức độ ứng phân mảnh thích hợp sao cho tránh được các hạn chế khi phân mảnh
chỉ được định nghĩa ứng với các ứng dụng sẽ chạy trên cơ sở dữ liệu.
1.4. Các quy tắc phân mảnh
Các nguyên tắc để đảm bảo cơ sở dữ liệu khi phân mảnh sẽ đảm bảo tính không thay
đổi về ngữ nghĩa. Dưới đây là ba qui tắc phải tuân thủ khi phân mảnh cơ sở dữ liệu quan hệ.
 Tính đầy đủ: Quan hệ R được phân rã thành các mảnh R1, R2…Rn, thì mỗi mục
dữ liệu có trong quan hệ R sẽ được chứa trong ít nhất một mảnh Ri (i=1, ,n). Quy
tắc này đảm bảo cho các mục dữ liệu trong R được ánh xạ hoàn toàn vào các
mảnh và không bị mất. Mục dữ liệu có thể hiểu là bộ trong phân mảnh ngang và
thuộc tính trong phân mảnh dọc.
 Tính phục hồi: Nếu một quan hệ R được phân rã thành các mảnh R1, R2,…,Rn
khi đó: R= Ri, Ri FR. Toán tử thay đổi tùy theo từng loại phân mảnh Khả∇ ∀ ∈ ∇
năng phục hồi quan hệ từ các mảnh sẽ đảm bảo bảo toàn các phụ thuộc.
 Tính tách biệt: Nếu quan hệ R được phân rã ngang thành các mảnh Ri, i=1, n và
mục dữ liệu di nằm trong một mảnh Ri thì nó sẽ không nằm trong mảnh Rk, (k≠j).
Quy tắc này đảm bảo các mảnh phân rã rời nhau. Trong trường hợp phân mảnh
dọc, khóa chính của quan hệ phải được lập lại trong tất cả các mảnh. Vì vậy tính
tách biệt trong phân mảnh dọc được hiểu không liên quan gì đến khóa chính của
quan hệ.
1.5. Các kiểu cấp phát
Giả sử CSDL đã được phân mảnh, thích hợp và thoả các yêu cầu phải cấp phát cho
các vị trí trên mạng. Khi dữ liệu được cấp phát, có thể không nhân bản hoặc có thể được nhân
bản. Không nhân bản, thường được gọi là CSDL phân hoạch, các mảnh chỉ được cấp phát

trên các trạm và không có bản sao nào trên mạng. Trong trường hợp nhân bản, hoặc toàn bộ
CSDL đều có ở trên tất cả các từng trạm (CSDL được nhân bản đầy đủ), hoặc các mảnh của
CSDL được phân tán tới các trạm bằng cách các mảnh sao được đặt trên nhiều trạm (CSDL
được nhân bản từng phần). Một số các bản sao của mảnh có thể là đầu vào cho thuật toán cấp
phát hoặc quyết định giá trị của biến được xác bởi thuật toán.
P a g e | 6
Nhân bản làm tăng độ tin cậy và tăng hiệu quả của các câu vấn tin chỉ đọc (Read-only
Query). Đặc biệt có thể truy xuất CSDL khi gặp sự cố. Hơn nữa các câu truy vấn đọc truy
xuất đến cùng một mục dữ liệu có thể cho thực hiện song song vì các bản sao có mặt tại nhiều
vị trí. Bảng 1 so sánh ba cách nhân bản theo một số chức năng của hệ quản trị CSDL phân
tán.
Việc cấp phát dữ liệu phải được thực hiện sao cho thỏa mãn hai yêu cầu sau:
 Chi phí nhỏ nhất.
 Hiệu năng lớn nhất: Giảm thiểu thời gian đáp ứng và tăng tối đa lưu lượng hệ
thống tại mỗi vị trí.
Bảng 1. So sánh các phương pháp nhân bản.
Nhân bản hoàn
toàn
Nhân bản một
phần
Phân hoạch
Xử lý truy vấn Dễ Cùng mức độ khó khăn
Quản lý thư mục Dễ hoặc không tồn
tại
Cùng mức độ khó khăn
Điều khiển đồng
thời
Vừa phải Khó Dễ
Độ tin cậy Rất cao Cao Thấp
Tính thực tế Có thể áp dụng Thực tế Có thể áp dụng

1.6. Các yêu cầu thông tin
Công việc thiết kế cơ sở dữ liệu phân tán phụ thuộc rất nhiều vào các yếu tố có là ảnh
hưởng đến một thiết kế tối ưu, tổ chức logic cơ sở dữ liệu, vị trí các ứng dụng, đặc tính truy
xuất của các ứng dụng đến cơ sở dữ liệu và các đặc tính của hệ thống máy tính tại mỗi vị trí.
Điều này làm cho việc diễn đạt bài toán phân tán trở nên hết sức phức tạp.
Các thông tin cần thiết cho thiết kế phân tán bao gồm:
 Thông tin cơ sở dữ liệu
 Thông tin ứng dụng
 Thông tin về mạng
 Thông tin về hệ thống máy tính
Yêu cầu thông tin về mạng và thông tin về hệ thống máy tính chỉ được sử dụng trong
các mô hình cấp phát, không sử dụng trong các thuật toán phân mảnh dữ liệu.
Chức vụ, Lương
MNV, tênNV, chức vụ
MDA, tênDA, ngân sách, địa điểm
MNV , MDA, nhiệm vụ, thời gian
CT
NV
DA
PC
L1
L2 L3
P a g e | 7
2. Phương pháp phân mảnh ngang
1.7. Giới thiệu
Phân mảnh ngang chính là việc chia quan hệ thành nhiều các nhóm bộ. Kết quả của
quá trình phân mảnh ngang là các quan hệ con, số lượng quan hệ con phụ thuộc vào điều kiện
ràng buộc của các thuộc tính. Và các bộ trong các quan hệ con là tách biệt nhau. Phân mảnh
ngang thực chất là phép chọn quan hệ thỏa mãn một biểu thức điều kiên cho trước.
Có hai chiến lược phân mảnh ngang cơ bản:

 Phân mảnh nguyên thuỷ (primary horizontal fragmentation) của một quan hệ được
thực hiện dựa trên các vị từ được định nghĩa trên quan hệ đó.
 Phân mảnh ngang dẫn xuất (derived horizontal fragmentation) là phân mảnh một
quan hệ dựa vào các vị từ được định trên một quan hệ khác.
1.8. Yêu cầu thông tin của phân mảnh ngang
1.8.1. Thông tin về cơ sở dữ liệu
Thông tin về CSDL muốn nói đến là lược đồ toàn cục và quan hệ gốc, các quan hệ
con. Trong ngữ cảnh này, chúng ta cần xác định được các quan hệ sẽ kết lại với nhau bằng
phép nối hay bằng phép tính khác. với mục đích phân mảnh dẫn xuất, các vị từ được định
nghĩa trên quan hệ khác, ta thường dùng mô hình thực thể - liên hệ (entity-relatiónhip model),
vì trong mô hình này các mối liên hệ được biểu diễn bằng các đường nối có hướng (các cung)
giữa các quan hệ có liên hệ với nhau qua một nối.
Thí dụ 1:
Hình 1. Biểu diễn mối liên hệ giữa các quan hệ nhờ các đường nối.
P a g e | 8
Hình 1 trình bày một cách biểu diễn các đường nối giữa các quan hệ. chú ý rằng
hướng của đường nối cho biết mối liên hệ một -nhiều. Chẳng hạn với mỗi chức vụ có nhiều
nhân viên giữ chức vụ đó, vì thế chúng ta sẽ vẽ một đường nối từ quan hệ CT (chi trả)
hướng đến NV (nhân viên). Đồng thời mối liên hệ nhiều- nhiều giữa NV và DA(dự án)
được biểu diễn bằng hai đường nối đến quan hệ PC (phân công).
Quan hệ nằm tại đầu (không mũi tên) của đường nối được gọi là chủ nhân (owner)
của đường nối và quan hệ tại cuối đường nối (đầu mũi tên) gọi là thành viên (member).
Thí dụ 2:
Cho đường nối L1 của hình 1, các hàm owner và member có các giá trị sau:
Owner(L1) = CT
Member (L1) = NV
Thông tin định lượng cần có về CSDL là lực lượng (cardinality) của mỗi quan hệ R,
đó là số bộ có trong R, được ký hiệu là card (R)
1.8.2. Thông tin về ứng dụng
Để phân tán ngoài thông tin định lượng Card(R) ta còn cần thông tin định tính cơ bản

gồm các vị từ được dùng trong các câu vấn tin. Lượng thông tin này phụ thuộc bài toán cụ
thể.
Nếu không thể phân tích được hết tất cả các ứng dụng để xác định những vị từ này thì
ít nhất cũng phải nghiên cứu được các ứng dụng” quan trọng” nhất.
Vậy chúng ta xác định các vị từ đơn giản (simple predicate). Cho quan hệ R(A
1
, A
2,
…, A
n
), trong đó A
i
là một thuộc tính được định nghĩa trên một miền biến thiên D(A
i
) hay D
i
.
Một vị từ đơn giản P được định nghĩa trên R có dạng:
P
j
:

A
i
θ Value
Trong đó θ ∈ {=,<,≠, ≤, >, ≥} và value được chọn từ miền biến thiên của A
i
(value ∈
D
i

).
Như vậy, cho trước lược đồ R, các miền trị D
i
chúng ta có thể xác định được tập tất cả
các vị từ đơn giản P
r
trên R.
Vậy P
r
={P: A
i
θ Value

}. Tuy nhiên trong thực tế ta chỉ cần những tập con thực sự của
P
r
.
Thí dụ 3: Cho quan hệ Dự án như sau:
P
1
: TênDA = “thiết bị điều khiển”
P
2
: Ngân sách ≤ 200000
Là các vị từ đơn giản.
P a g e | 9
Chúng ta sẽ sử dụng ký hiệu Pr
i
để biểu thị tập tất cả các vị từ đơn giản được định
nghĩa trên quan hệ R

i.
Các

phần tử của Pr
i
được ký hiệu là p
ij
.
Các vị từ đơn giản thường rất dễ xử lý, các câu vấn tin thường chứa nhiều vị từ phức
tạp hơn, là tổ hợp của các vị từ đơn giản. Một tổ hợp cần đặc biệt chú ý, được gọi là vị từ hội
sơ cấp (minterm predicate), đó là hội (conjunction) của các vị từ đơn giản. Bởi vì chúng ta
luôn có thể biến đổi một biểu thức Boole thành dạng chuẩn hội, việc sử dụng vị từ hội sơ cấp
trong một thuật toán thiết kế không làm mất đi tính tổng quát.
Cho một tập Pr
i
= {p
i1
, p
i2
, …, p
im
} là các vị từ đơn giản trên quan hệ R
i
, tập các vị từ
hội sơ cấp M
i
={m
i1
, m
i2

, …, m
iz
} được định nghĩa là:
M
i
={m
ij
| m
ij
=Λp
*
ik
} với 1 ≤ k ≤ m, 1 ≤ j ≤ z
Trong đó p
*
ik
=p
ik
hoặc p
*
ik
= ¬p
ik
. Vì thế mỗi vị từ đơn giản có thể xuất hiện trong vị từ
hội sơ cấp dưới dạng tự nhiên hoặc dạng phủ định.
Thí dụ 4: Xét quan hệ CT:
Chức vụ Lương
Kỹ sư điện
Phân tích hệ thống
Kỹ sư cơ khí

Lập trình
40000
34000
27000
24000
Dưới đây là một số vị từ đơn giản có thể định nghĩa được trên PAY.
p1: chức vụ=” Kỹ sư điện”
p2: chức vụ=” Phân tích hệ thống ”
p3: chức vụ=” Kỹ sư cơ khí ”
p4: chức vụ=” Lập trình ”
p5: Lương ≤ 30000
p6: Lương > 30000
Dưới đây là một số các vị từ hội sơ cấp được định nghĩa dựa trên các vị từ đơn giản
này
m1: chức vụ=” Kỹ sư điện ”Λ Lương ≤ 30000
m2: chức vụ =” Kỹ sư điện ”Λ Lương > 30000
m3: ¬(chức vụ=” Kỹ sư điện ”)Λ Lương ≤ 30000
m4: ¬(chức vụ=” Kỹ sư điện ”)Λ Lương> 30000
m5: chức vụ=” Lập trình ”Λ Lương ≤ 30000
m6: chức vụ=” Lập trình ”Λ Lương > 30000
Chú ý:
P a g e | 10
+ Phép lấy phủ định không phải lúc nào cũng thực hiện được. Thí dụ: xét hai vị từ
đơn giản sau: Cận_dưới ≤ A; A ≥ Cận_trên. Tức là thuộc tính A có miền trị nằm trong cận
dưới và cận trên, khi đó phần bù của chúng là:
¬(Cận_dưới ≤ A);
¬(A ≥ Cận_trên) không xác định được. Giá trị của A trong các phủ định này
đã ra khỏi miền trị của A.
Hoặc hai vị từ đơn giản trên có thể được viết lại là:
Cận_dưới ≤ A Cận_trên có phần bù là: ¬(Cận_dưới ≤ A ≤ Cận_trên) không định

nghĩa được. Vì vậy khi nghiên cứu những vẫn đề này ta chỉ xem xét các vị từ đẳng thức đơn
giản.
Vì vậy không phải tất cả các vị từ hội sơ cấp đều có thể định nghĩa được.
+ Một số trong chúng có thể vô nghĩa đối với ngữ nghĩa của quan hệ Chi trả. Ngoài ra
cần chú ý rằng m3 có thể được viết lại như sau:
m3: chức vụ ≠ “Kỹ sư điện ” Λ Lương ≤ 30000
Theo những thông tin định tính về các ứng dụng, chúng ta cần biết hai tập dữ liệu.
 Độ tuyển hội sơ cấp (minterm selectivity): số lượng các bộ của quan hệ sẽ được
truy xuất bởi câu vấn tin được đặc tả theo một vị từ hội sơ cấp đã cho. chảng hạn
độ tuyển của m1 trong Thí dụ 4 là zero bởi vì không có bộ nào trong CT thỏa vị từ
này. Độ tuyển của m2 là 1. Chúng ta sẽ ký hiệu độ tuyển của một hội sơ cấp m
i

sel (m
i
).
 Tần số truy xuất (access frequency): tần số ứng dụng truy xuất dữ liệu. Nếu
Q={q
1
, q
2
, ,q
q
} là tập các câu vấn tin, acc (q
i
) biểu thị cho tần số truy xuất của q
i
trong một khoảng thời gian đã cho.
Chú ý rằng mỗi hội sơ cấp là một câu vấn tin. Chúng ta ký hiệu tần số truy xuất của
một hội sơ cấp là acc(m

i
)
1.9. Phân mảnh ngang nguyên thuỷ
Phân mảnh ngang nguyên thuỷ được định nghĩa bằng một phép toán chọn trên các
quan hệ chủ nhân của một lược đồ của CSDL. Vì thế cho biết quan hệ R, các mảnh ngang của
R là các R
i
:
R
i
= σ
Fi
(R), 1 ≤ i ≤ z.
Trong đó F
i
là công thức chọn được sử dụng để có được mảnh R
i
. Chú ý rằng nếu F
i
có dạng chuẩn hội, nó là một vị từ hội sơ cấp (m
j
).
Thí dụ 5: Xét quan hệ DA
P a g e | 11
MDA TênDA Ngân sách Địa điểm
P1
P2
P3
P4
Thiết bị đo đạc

Phát triển dữ liệu
CAD/CAM
Bảo dưỡng
150000
135000
250000
310000
Montreal
New York
New York
Paris
Chúng ta có thể định nghĩa các mảnh ngang dựa vào vị trí dự án. Khi đó các mảnh thu
được, được trình bày như sau:
DA
1

Địa điểm=”Montreal”
(DA)
DA
2

Địa điểm=”New York”
(DA)
DA
3

Địa điểm=”Paris”
(DA)
DA
1

MDA TDA Ngân sách Địa điểm
P1 Thiết bị đo đạc 150000 Montreal
DA
2
MDA TênDA Ngân sách Địa điểm
P2
P3
Phát triển dữ liệu
CAD/CAM
135000
250000
New York
New York
DA
3
MDA TênDA Ngân sách Địa điểm
P4 thiết bị đo đạc 310000 Paris
Bây giờ chúng ta có thể định nghĩa một mảnh ngang chặt chẽ và rõ ràng hơn
Mảnh ngang Ri của quan hệ R có chứa tất cả các bộ R thỏa vị từ hội sơ cấp m
i
Một đặc tính quan trọng của các vị từ đơn giản là tính đầy đủ và tính cực tiểu.
- Tập các vị từ đơn giản Pr được gọi là đầy đủ nếu và chỉ nếu xác suất mỗi ứng dụng
truy xuất đến một bộ bất kỳ thuộc về một mảnh hội sơ cấp nào đó được định nghĩa theo Pr
đều bằng nhau.
Thí dụ 6: Xét quan hệ phân mảnh DA được đưa ra trong Thí dụ 5. Nếu tập ứng dụng
Pr={Địa điểm=“Montreal”, Địa điểm=“New York ”, Địa điểm=“Paris”, Ngân sách ≤
200000 } thì Pr không đầy đủ vì có một số bộ của DA không được truy xuất bởi vị từ Ngân
sách ≤ 200000. Để cho tập vị từ này đầy đủ, chúng ta cần phải xét thêm vị từ Ngân sách >
200000 vào Pr. Vậy Pr={Địa điểm=“Montreal”, Địa điểm=“New York”, Địa điểm=“Paris”,
P a g e | 12

Ngân sách ≤ 200000, Ngân sách>200000} là đầy đủ bởi vì mỗi bộ được truy xuất bởi đúng
hai vị từ p của Pr. Tất nhiên nếu ta bớt đi một vị từ bất kỳ trong Pr thì tập còn lại không đầy
đủ.
Lý do cần phải đảm bảo tính đầy đủ là vì các mảnh thu được theo tập vị từ đầy đủ sẽ
nhất quán về mặt logic do tất cả chúng đều thoả vị từ hội sơ cấp. Chúng cũng đồng nhất và
đầy đủ về mặt thống kê theo cách mà ứng dụng truy xuất chúng.
Vì thế chúng ta sẽ dùng một tập hợp gồm các vị từ đầy đủ làm cơ sở của phân mảnh
ngang nguyên thủy.
- Đặc tính thứ hai của tập các vị từ là tính cực tiểu. Đây là một đặc tính cảm tính. Vị
từ đơn giản phải có liên đới (relevant) trong việc xác định một mảnh. Một vị từ không tham
gia vào một phân mảnh nào thì có thể coi vị từ đó là thừa. Nếu tất cả các vị từ của Pr đều có
liên đới thì Pr là cực tiểu.
Thí dụ 7: Tập Pr được định nghĩa trong Thí dụ 6 là đầy đủ và cực tiểu. Tuy nhiên nếu
chúng ta thêm vị từ TênDA = “thiết bị đo đạc” vào Pr, tập kết quả sẽ không còn cực tiểu bởi
vì vị từ mới thêm vào không có liên đới ứng với Pr. Vị từ mới thêm vào không chia thêm
mảnh nào trong các mảnh đã được tạo ra.
Khái niệm đầy đủ gắn chặt với mục tiêu của bài toán. Số vị từ phải đầy đủ theo yêu
cầu của bài toán chúng ta mới thực hiện được những vấn đề đặt ra của bài toán. Khái niệm
cực tiểu liên quan đến vấn đề tối ưu của bộ nhớ, tối ưu của các thao tác trên tập các câu vấn
tin. Vậy khi cho trước một tập vị từ Pr để xét tính cực tiểu chúng ta có thể kiểm tra bằng cách
vứt bỏ những vị từ thừa để có tập vị từ Pr’ là cực tiểu và tất nhiên Pr’ cũng là tập đầy đủ với
Pr.
Thuật toán COM_MIN: Cho phép tìm tập các vị từ đầy đủ và cực tiểu Pr’ từ Pr.
Chúng ta tạm quy ước:
Quy tắc 1: Quy tắc cơ bản về tính đầy đủ và cực tiểu, nó khẳng định rằng một quan
hệ hoặc một mảnh được phân hoạch “thành ít nhất hai phần và chúng được truy xuất khác
nhau bởi ít nhất một ứng dụng”.
Thuật toán 1. COM_MIN
Input : R: quan hệ; Pr: tậpcác vị từ đơn giản;
Output: Pr’: tập các vị từ cực tiểu và đầy đủ;

Declare
F: tập các mảnh hội sơ cấp;
Begin
Pr’=φ; F = φ;
P a g e | 13
For each vị từ p ∈ Pr if p phân hoạch R theo Quy tắc 1 then
Begin
Pr’: = Pr’∪ p;
Pr: = Pr – p;
F: = F ∪ p; {f
i
là mảnh hội sơ cấp theo p
i
}
End; {Chúng ta đã chuyển các vị từ có phân mảnh R vào Pr’}
Repeat
For each p∈ Pr if p phân hoạch một mảnh f
k
của Pr’
theo quy tắc 1 then
Begin
Pr’: = Pr’∪ p;
Pr: = Pr – p;
F: = F ∪ p;
End;
Until Pr’ đầy đủ {Không còn p nào phân mảnh f
k
của Pr’}
For each p


∈ Pr’, if ∃p’ mà p<=>p’ then
Begin
Pr’:= Pr’-p;
F:= F - f;
End;
End. {COM_MIN}
Thuật toán bắt dầu bằng cách tìm một vị từ có liên đới và phân hoạch quan hệ đã cho.
Vòng lặp Repeat-until thêm các vị từ có phân hoạch các mảnh vào tập này, bảo đảm tính đầy
đủ của Pr’. Đoạn cuối kiểm tra tính cực tiểu của Pr’. Vì thế cuối cùng ta có tập Pr’ là cực tiểu
và đầy đủ.
Bước hai của việc thiết kế phân mảnh nguyên thủy là suy dẫn ra tập các vị từ hội sơ
cấp có thể được định nghĩa trên các vị từ trong tập Pr’. Các vị từ hội sơ cấp này xác định các
mảnh “ứng cử viên” cho bước cấp phát. Việc xác định các vị từ hội sơ cấp là tầm thường; khó
khăn chính là tập các vị từ hội sơ cấp có thể rất lớn (thực sự chúng tỷ lệ hàm mũ theo số
lượng các vị từ đơn giản). trong bước kế tiếp chúng ta sẽ tìm cách làm giảm số lượng vị từ
hội sơ cấp cần được định nghĩa trong phân mảnh.
P a g e | 14
Bước ba của quá trình thiết kế là loại bỏ một số mảnh vô nghĩa. Điều này được thực
hiện bằng cách xác định những vị từ mâu thuẫn với tập các phép kéo theo (implication) I.
Chẳng hạn nếu Pr’={p
1
, p
2
}, trong đó
P
1
: att= value_1
P2: att=value_2
Và miền biến thiên của att là {value_1, value_2}, rõ ràng I chứa hai phép kéo theo với
khẳng định:

I
1
: (att=value_1) ⇒ ¬ (att=value_2)
I
2
: ¬(att=value_1)⇒(att=value_2)
Bốn vị từ hội sơ cấp sau đây được định nghĩa theo Pr’:
M
1
: (att=value_1) ∧ (att=value_2)
M2: (att=value_1)∧¬(att=value_2)
M3: ¬(att=value_1)∧(att=value_2)
M4: ¬(att=value_1)∧ ¬ (att=value_2)
Trong trường hợp này các vị từ hội sơ cấp m
1
, m
4
mâu thuẫn với các phép kéo theo I
và vì thế bị loại ra khỏi M.
Thuật toán phân mảnh ngang nguyên thủy được trình bày trong thuật toán 2.
Thuật toán 2. PHORIZONTAL
Input: R: quan hệ; Pr: tập các vị từ đơn giản;
Output: M: tập các vị từ hội sơ cấp;
Begin
Pr’:= COM_MIN(R, Pr);
Xác định tập M các vị từ hội sơ cấp;
Xác định tập I các phép kéo theo giữa các p
i
∈Pr’;
For each m

i
∈ M do
Begin
IF m
i
mâu thuẫn với I then
M:= M-m
i
End;
End. {PHORIZONTAL}
P a g e | 15
Thí dụ 8: Chúng ta hãy xét quan hệ DA. Giả sử rằng có hai ứng dụng. Ứng dụng đầu
tiên được đưa ra tại ba vị trí và cần tìm tên và ngân sách của các dự án khi cho biết vị trí.
Theo ký pháp SQL câu vấn tin được viết là:
SELECT TênDA, Ngân sách
FROM DA
WHERE địa điểm=giá trị
Đối với ứng dụng này, các vị từ đơn giản có thể được dùng là:
P1: Địa điểm=”Montreal”
P2: Địa điểm=”New York”
P3: Địa điểm=”Paris”
Ứng dụng thứ hai là những dự án có ngân sách dưới 200.000 đô la được quản lý tại
một vị trí, còn những dự án có ngân sách lớn hơn được quản lý tại một vị trí thứ hai. Vì thế các
vị từ đơn giản phải được sử dụng để phân mảnh theo ứng dụng thứ hai là:
P4: ngân sách≤200000
P5: ngân sách>200000
Nếu kiểm tra bằng thuật toán COM_MIN, tập Pr’={p1, p2, p3, p4, p5} rõ ràng đầy đủ
và cực tiểu.
Dựa trên Pr’ chúng ta có thể định nghĩa sáu vị từ hội sơ cấp sau đây tạo ra M:
M1: (Địa điểm=”Montreal”) ∧ (ngân sách≤200000)

M2: (Địa điểm=”Montreal”) ∧ (ngân sách>200000)
M3: (Địa điểm=”New York”) ∧ (ngân sách≤200000)
M4: (Địa điểm=”New York”) ∧ (ngân sách>200000)
M5: (Địa điểm=”Paris”) ∧ (ngân sách≤200000)
M6: (Địa điểm=”Paris”) ∧ (ngân sách>200000)
Đây không phải là các vị từ hội sơ cấp duy nhất có thể được tạo ra. Chẳng hạn vẫn có
thể định nghĩa các vị từ:
p1 ∧ p2 ∧ p3 ∧ p4 ∧ p5
Tuy nhiên các phép kéo hiển nhiên là:
I
1
: p1⇒ ¬ p2 ∧¬p3
I
2
: p2⇒ ¬ p1 ∧¬p3
I
3
: p3⇒ ¬ p1 ∧¬p2
I
4
: p4⇒ ¬p5
P a g e | 16
I
5
: p5⇒ ¬ p4
I
6
:¬ p4⇒ p5
I
7

: ¬ p5⇒ p4
Cho phép loại bỏ những vị từ hội sơ cấp này và chúng ta còn lại m1 đến m6.
Cần nhớ rằng các phép kéo theo phải được định nghĩa theo ngữ nghĩa của CSDL,
không phải theo các giá trị hiện tại. Một số mảnh được định nghĩa theo M={m1,…,m6} có
thể rỗng nhưng chúng vẫn là các mảnh. Kết quả phân mảnh nguyên thuỷ cho DA là tạo ra sáu
mảnh F
DA
={DA
1
, DA
2
, DA
3
, DA
4
, DA
5
, DA
6
}, ở đây có hai mảnh rỗng là {DA
2
, DA
5
}
DA
1
MDA TênDA Ngân sách Địa điểm
P1 Thiết bị đo đạc 150000 Montreal
DA
3

MDA TênDA Ngân sách Địa điểm
P2 Phát triển dữ liệu 135000 New York
DA
4
MDA TênDA Ngân sách Địa điểm
P3 CAD/CAM 250000 New York
DA
6
MDA TênDA Ngân sách Địa điểm
P4 bảo dưỡng 310000 Paris
1.10. Phân mảnh ngang dẫn xuất
Phân mảnh ngang dẫn xuất được định nghĩa trên một quan hệ thành viên của đường
nối dựa theo phép toán chọn trên quan hệ chủ nhân của đường nối đó.
Như thế nếu cho trước một đường nối L, trong đó owner (L)=S và member(L)=R, và
các mảnh ngang dẫn xuất của R được định nghĩa là:
R
i
=R|>< S
i
, 1 ≤ i ≤ w
Trong đó w là số lượng các mảnh được định nghĩa trên R, và S
i

Fi
(S) với F
i
là công
thức định nghĩa mảnh ngang nguyên thuỷ S
i
Thí dụ 9: Xét đường nối

NV
CT
Chức vụ, Lương
MNV, TênNV, Chức vụ
L1
NV
P a g e | 17
MNV TênNV Chức vụ
E1
E2
E2
E3
E3
E4
E5
E6
E7
E8
J.Doe
M.Smith
M.Smith
A.Lee
A.Lee
J.Miller
B.Casey
L.Chu
R.david
J.Jones
Kỹ sư điện
Phân tích

Phân tích
Kỹ sư cơ khí
Kỹ sư cơ khí
Programmer
Phân tích hệ thống
Kỹ sư điện
Kỹ sư cơ khí
Phân tích hệ thống
Chúng ta có thể nhóm các kỹ sư thành hai nhóm tùy theo lương: nhóm có lương từ
30.000 đôla trở lên và nhóm có lương dưới 30.000 đô la. Hai mảnh Nhân viên
1
và Nhân viên
2
được định nghĩa như sau:
NV
1
= NV |>< CT
1
NV
2
= NV |>< CT
2
Trong đó CT
1

Lương

30000
( CT)
CT

2

Lương>30000
( CT)
CT
1
CT
2
Chức vụ Lương Chức vụ Lương
Kỹ sư cơ khí
Lập trình
27000
24000
Kỹ sư điện
Phân tích hệ thống
40000
34000
Kết quả phân mảnh ngang dẫn xuất của quan hệ NV như sau:
NV
1
NV
2
MNV TênNV Chức vụ MNV TênNV Chức vụ
E3
E4
E7
A.Lee
J.Miller
R.David
Kỹ sư cơ khí

Lập trình viên
Kỹ sư cơ khí
E1
E2
E5
E6
E8
J.Doe
M.Smith
B.Casey
L.Chu
J.Jones
Kỹ sư điện
Phân tích
Phân tích hệ thống
Kỹ sư điện
Phân tích hệ thống
P a g e | 18
Chú ý:
+ Muốn thực hiện phân mảnh ngang dẫn xuất, chúng ta cần ba nguyên liệu (input):
1. Tập các phân hoạch của quan hệ chủ nhân (Thí dụ: CT1, CT2).
2. Quan hệ thành viên
3. Tập các vị từ nối nửa giữa chủ nhân và thành viên (Chẳng hạn CT.Chucvu =
NV.Chucvu).
+ Vấn đề phức tạp cần chú ý: Trong lược đồ CSDL, chúng ta hay gặp nhiều đường
nối đến một quan hệ R. Như thế có thể có nhiều cách phân mảnh cho quan hệ R. Quyết định
chọn cách phân mảnh nào cần dựa trên hai tiêu chuẩn sau:
1. Phân mảnh có đặc tính nối tốt hơn
2. Phân mảnh được sử dụng trong nhiều ứng dụng hơn.
Tuy nhiên, việc áp dụng các tiêu chuẩn trên còn là một vấn đề rắc rối.

3. Phương pháp phân mảnh dọc.
1.11. Khái niệm phân mảnh dọc
Một phân mảnh dọc cho một quan hệ R sinh ra các mảnh R
1
, R
2
, ,R
r
, mỗi mảnh chứa
một tập con thuộc tính của R và cả khoá của R. Mục đích của phân mảnh dọc là phân hoạch
một quan hệ thành một tập các quan hệ nhỏ hơn để nhiều ứng dụng chỉ cần chạy trên một
mảnh. Một phân mảnh “tối ưu”là phân mảnh sinh ra một lược đồ phân mảnh cho phép giảm
tối đa thời gian thực thi các ứng dụng chạy trên mảnh đó.
Phân mảnh dọc tất nhiên là phức tạp hơn so với phân mảnh ngang. Điều này là do
tổng số chọn lựa có thể của một phân hoạch dọc rất lớn.
Vì vậy để có được các lời giải tối ưu cho bài toán phân hoạch dọc thực sự rất khó
khăn. Vì thế lại phải dùng các phương pháp khám phá (heuristic). Chúng ta đưa ra hai loại
heuristic cho phân mảnh dọc các quan hệ toàn cục.
- Nhóm thuộc tính: Bắt đầu bằng cách gán mỗi thuộc tính cho một mảnh, và tại mỗi
bước, nối một số mảnh lại cho đến khi thỏa một tiêu chuẩn nào đó. Kỹ thuật này được được
đề xuất lần đầu cho các CSDL tập trung và về sau được dùng cho các CSDL phân tán.
- Tách mảnh: Bắt đầu bằng một quan hệ và quyết định cách phân mảnh có lợi dựa
trên hành vi truy xuất của các ứng dụng trên các thuộc tính.
P a g e | 19
1.12. Thông tin cần thiết của phân mảnh dọc
Vì phân hoạch dọc đặt vào một mảnh các thuộc tính thường được truy xuất chung với
nhau, chúng ta cần có một giá trị đo nào đó để định nghĩa chính xác hơn về khái niệm “chung
với nhau”. Số đo này gọi là tụ lực hay lực hút (affinity) của thuộc tính, chỉ ra mức độ liên đới
giữa các thuộc tính.
Yêu cầu dữ liệu chính có liên quan đến các ứng dụng là tần số truy xuất của chúng.

gọi Q={q
1
, q
2
,…,q
q
} là tập các vấn tin của người dùng (các ứng dụng) sẽ chạy trên quan hệ
R(A
1
, A
2
,…,A
n
). Thế thì với mỗi câu vấn tin q
i
và mỗi thuộc tính A
j
, chúng ta sẽ đưa ra một
giá trị sử dụng thuộc tính, ký hiệu use(q
i
, A
j
) được định nghĩa như sau:
1 nếu thuộc tính A
j
được vấn tin q
i
tham chiếu
use(q
i

, A
j
)= 0 trong trường hợp ngược lại
Các véctơ use(q
i
, •) cho mỗi ứng dụng rất dễ định nghĩa nếu nhà thiết kế biết được
các ứng dụng sẽ chạy trên CSDL.
Thí dụ 10:
Xét quan hệ DA, giả sử rằng các ứng dụng sau đây chạy trên các quan hệ đó. Trong
mỗi trường hợp chúng ta cũng đặc tả bằng SQL.
q1: Tìm ngân sách của một dự án, cho biết mã của dự án
SELECT Ngân sách
FROM DA
WHERE MDA=giá trị
q2: Tìm tên và ngân sách của tất cả mọi dự án
SELECT TênDA, ngân sách
FROM DA
q3: Tìm tên của các dự án được thực hiện tại một thành phố đã cho
SELECT tênDA
FROM DA
WHERE địa điểm=giá trị
q4: Tìm tổng ngân sách dự án của mỗi thành phố
SELECT SUM (ngân sách)
FROM DA
WHERE Địa điểm=giá trị
P a g e | 20
Dựa theo bốn ứng dụng này, chúng ta có thể định nghĩa ra các giá trị sử dụng thuộc
tính. Để cho tiện về mặt ký pháp, chúng ta gọi A
1
= MDA, A

2
= TênDA, A
3
= Ngân sách, A
4
=
địa điểm. Giá trị sử dụng được định nghĩa dưới dạng ma trận, trong đó mục (i,j) biểu thị
use(q
i
, A
j
).
1.13. Tụ lực của các thuộc tính
Giá trị sử dụng thuộc tính không đủ để làm cơ sở cho việc tách và phân mảnh. Điều
này là do chúng không biểu thị cho độ lớn của tần số ứng dụng. Số đo lực hút (affinity) của
các thuộc tính aff(A
i
, A
j
), biểu thị cho cầu nối (bond) giữa hai thuộc tính của một quan hệ
theo cách chúng được các ứng dụng truy xuất, sẽ là một đại lượng cần thiết cho bài toán phân
mảnh.
Xây dựng công thức để đo lực hút của hai thuộc tính A
i
, A
j
.
Gọi k là số các mảnh của R được phân mảnh. Tức là R = R
1
∪….R

k
.
Q={q
1
, q
2
,…,q
m
} là tập các câu vấn tin (tức là tập các ứng dụng chạy trên quan hệ R).
Đặt Q(A, B) là tập các ứng dụng q của Q mà use(q, A).use(q, B) = 1.
Nói cách khác:
Q(A, B) = {q∈Q: use(q, A) =use(q, B) = 1}
Thí dụ dựa vào ma trận trên ta thấy Q(A
1
,A
1
) = {q
1
}, Q(A
2
,A
2
) = {q
2
, q
3
}, Q(A
3
,A
3

) =
{q
1
,q
2
,q
4
}, Q(A
4
,A
4
) = {q
3
, q
4
}, Q(A
1
,A
2
) = rỗng, Q(A
1
,A
3
) = {q
1
}, Q(A
2
,A
3
) = {q

2
},
Số đo lực hút giữa hai thuộc tính A
i
, A
j
được định nghĩa là:
aff(A
i
, A
j
)=
Hoặc:
aff(A
i
, A
j
)=
Trong đó ref
l
(q
k
) là số truy xuất đến các thuộc tính (A
i
, A
j
) cho mỗi ứng dụng q
k
tại vị
trí R

l
và acc
l
(q
k
) là số đo tần số truy xuất ứng dụng q
k
đến các thuộc tính A
i
, A
j
tại vị trí l.
Chúng ta cần lưu ý rằng trong công thức tính aff (A
i
, A
j
) chỉ xuất hiện các ứng dụng q mà cả
A
i
và A
j
đều sử dụng.
A
1
A
2
A
3
A
4

q
1
1 0 1 0
q
2
0 1 1 0
q
3
0 1 0 1
q
4
0 0 1 1
P a g e | 21
Kết quả của tính toán này là một ma trận đối xứng nxn, mỗi phần tử của nó là một số
đo được định nghĩa ở trên. Chúng ta gọi nó là ma trận lực tụ ( lực hút hoặc ái lực) thuộc tính
(AA) (attribute affinity matrix).
Thí dụ 11: Chúng ta hãy tiếp tục với Thí dụ 10. Để cho dơn giản chúng ta hãy giả sử
rằng ref
l
(q
k
) =1 cho tất cả q
k
và R
l
. Nếu tần số ứng dụng là:
Acc
1
(q1) = 15 Acc
2

(q1) = 20 Acc
3
(q1) = 10
Acc
1
(q2) = 5 Acc
2
(q2) = 0 Acc
3
(q2) = 0
Acc
1
(q3) = 25 Acc
2
(q3) = 25 Acc
3
(q3) = 25
Acc
1
(q4) = 3 Acc
2
(q4) = 0 Acc
3
(q1) = 0
Số đo lực hút giữa hai thuộc tính A
1
và A
3
là:
Aff(A

1
, A
3
) = Σ
1
k=1
Σ
3
t=1
acc
t
(q
k
) = acc
1
(q
1
)+acc
2
(q
1
)+acc
3
(q
1
) = 45
Tương tự tính cho các cặp còn lại ta có ma trận ái lực sau:

A
1

A
2
A
3
A
4
A
1
45 0 45 0
A
2
0 80 5 75
A
3
45 5 53 3
A
4
0 75 3 78

1.14. Thuật toán năng lượng nối BEA (Bond Energy Algorithm)
Đến đây ta có thể phân R làm các mảnh của các nhóm thuộc tính dựa vào sự liên đới
(lực hút) giữa các thuộc tính, thí dụ tụ lực của A
1
, A
3
là 45, của A
2
, A
4
là 75, còn của A

1
, A
2

0, của A
3
, A
4
là 3… Tuy nhiên, phương pháp tuyến tính sử dụng trực tiếp từ ma trận này ít
P a g e | 22
được mọi người quan tâm và sử dụng. Sau đây chúng ta xét một phương pháp dùng thuật toán
năng lượng nối BEA của Hoffer and Severance, 1975 và Navathe., 1984.
1. Nó được thiết kế đặc biệt để xác định các nhóm gồm các mục tương tự, khác với
một sắp xếp thứ tự tuyến tính của các mục.
2. Các kết quả tụ nhóm không bị ảnh hưởng bởi thứ tự đưa các mục vào thuật toán.
3. Thời gian tính toán của thuật toán có thể chấp nhận được là O(n
2
), với n là số lượng
thuộc tính.
4. Mối liên hệ qua lại giữa các nhóm thuộc tính tụ có thể xác định được.
Thuật toán BEA nhận nguyên liệu là một ma trận ái lực thuộc tính (AA), hoán vị các
hàng và cột rồi sinh ra một ma trận ái lực tụ (CA) (Clustered affinity matrix). Hoán vị được
thực hiện sao cho số đo ái lực chung AM (Global Affinity Measure) là lớn nhất. Trong đó
AM là đại lượng:
AM=Σ
n
i=1
Σ
n
j=1

aff(A
i
, A
j
)[aff(A
i
, A
j-1
)+aff(A
i
, A
j+1
)+aff(A
i-1
, A
j
)+ aff(A
i+1
, A
j
)]
Với aff(A
0
, A
j
)=aff(A
i
, A
0
)=aff(A

n+1
, A
j
)=aff(A
i
, A
n+1
)=0 cho ∀ i,j
Tập các điều kiện cuối cùng đề cập đến những trường hợp một thuộc tính được đặt
vào CA ở về bên trái của thuộc tính tận trái hoặc ở về bên phải của thuộc tính tận phải trong
các hoán vị cột, và bên trên hàng trên cùng và bên dưới hàng cuối cùng trong các hoán vị
hàng. Trong những trường hợp này, chúng ta cho 0 là giá trị lực hút aff giữa thuộc tính đang
được xét và các lân cận bên trái hoặc bên phải (trên cùng hoặc dưới đáy) của nó hiện chưa có
trong CA.
Hàm cực đại hoá chỉ xét những lân cận gần nhất, vì thế nó nhóm các giá trị lớn với
các giá trị lớn, giá trị nhỏ với giá trị nhỏ. Vì ma trận lực hút thuộc tính AA có tích chất đối
xứng nên hàm số vừa được xây dựng ở trên thu lại thành:
AM=Σ
n
i=1
Σ
n
j=1
aff(A
i
, A
j
)[aff(A
i
, A

j-1
)+aff(A
i
, A
j+1
)]
Quá trình sinh ra ma trận tụ lực (CA) được thực hiện qua ba bước:
Bước 1: Khởi gán:
Đặt và cố định một trong các cột của AA vào trong CA. Thí dụ cột 1, 2 được chọn
trong thuật toán này.
Bước 2: Thực hiện lặp
Lấy lần lượt một trong n-i cột còn lại (trong đó i là số cột đã được đặt vào CA) và thử
đặt chúng vào trong i+1 vị trí còn lại trong ma trận CA. Chọn nơi đặt sao cho cho ái lực
chung AM lớn nhất. Tiếp tục lặp đến khi không còn cột nào để dặt.
Bước 3: Sắp thứ tự hàng
P a g e | 23
Một khi thứ tự cột đã được xác định, các hàng cũng được đặt lại để các vị trí tương
đối của chúng phù hợp với các vị trí tương đối của cột.
Thuật toán BEA
Input: AA - ma trận ái lực thuộc tính;
Output: CA - ma trận ái lực tụ sau khi đã sắp xếp lại các hàng các cột;
Begin
{Khởi gán: cần nhớ rằng  là một ma trận n x n}
CA(•, 1)←AA(•, 1)
CA(•, 2)←AA(•, 2)
Index:=3
while index <= n do {chọn vị trí “tốt nhất” cho thuộc tính A
index
}
begin

for i :=1 to index-1 by 1 do
tính cont(A
i-1
, A
index
, A
i
);
Tính cont(A
index-1
,A
index
, A
index+1
); { điều kiện biên}
Loc ← nơi đặt, được cho bởi giá trị cont lớn nhất;
for i: = index downto loc do {xáo trộn hai ma trận}
CA(•, j)←CA(•, j-1);
CA(•, loc)←AA(•, index);
index←index+1;
end-while
Sắp thứ tự các hàng theo thứ tự tương đối của cột.
end. {BEA}
Để hiểu rõ thuật toán chúng ta cần biết cont(*,*,*). Cần nhắc lại số đo ái lực chung
AM đã được định nghĩa là:
AM=Σ
n
i=1
Σ
n

j=1
aff(A
i
, A
j
)[aff(A
i
, A
j-1
)+aff(A
i
, A
j+1
)]
Và có thể viết lại:
AM = Σ
n
i=1
Σ
n
j=1
[aff(A
i
, A
j
) aff(A
i
, A
j-1
)+aff(A

i
, A
j
) aff(A
i
, A
j+1
)]
= Σ
n
j=1

n
i=1
aff(A
i
, A
j
) aff(A
i
, A
j-1
)+ Σ
n
i=1
aff(A
i
, A
j
) aff(A

i
, A
j+1
)]
Ta định nghĩa cầu nối (Bond) giữa hai thuộc tính A
x
, và A
y
là:
Bond(A
x
, A
y
)=Σ
n
z=1
aff(A
z
, A
x
)aff(A
z
, A
y
)
Thế thì có thể viết lại AM là:
P a g e | 24
AM = Σ
n
j=1

[ Bond(A
i
, A
j-1
)+Bond(A
i
, A
j+1
)]
Bây giờ xét n thuộc tính sau:
A
1
A
2
…A
i-1
A
i
A
j
A
j+1
…A
n
Với A
1
A
2
…A
i-1

thuộc nhóm AM’ và A
i
A
j
A
j+1
…A
n
thuộc nhóm AM”
Khi đó số đo lực hút chung cho những thuộc tính này có thể viết lại:
AM
old
=AM’+AM”+bond(A
i-1
,A
i
)+bond(A
i
,A
j
)+bond(A
j
,A
i
)+bond(bond
(A
j+1
,A
j
)=Σ

n
l=1
[bond(A
l
,A
l-1
)+bond(A
i
,A
l+1
)]+Σ
n
l=i+1
[bond(A
l
,A
l-1
)+bond(A
i
,A
l+1
)] + 2bond(A
i
,
A
l
))
Bây giờ xét đến việc đặt một thuộc tính mới A
k
giữa các thuộc tính A

i
và A
j
trong ma
trận lực hút tụ. Số đo lực hút chung mới có thể được viết tương tự như:
AM
new
= AM’ + AM”+ bond(A
i
, A
k
) + bond(A
k
, A
i
) + bond(A
k
, A
j
)+ bond(A
j
, A
k
) =
AM’ + AM”+ 2bond(A
i
, A
k
) + 2bond(A
k

, A
j
)
Vì thế đóng góp thực (net contribution) cho số đo ái lực chung khi đặt thuộc tính A
k
giữa A
i
và A
j
là:
Cont(A
i
, A
k
, A
j
) = AM
new
- AM
old
= 2Bond(A
i
, A
k
)+ 2Bond(A
k
, A
j
) - 2Bond(A
i

, A
j
)
Bond(A
0
, A
k
)=0. Nếu thuộc tính A
k
đặt bên phải thuộc tính tận bên phải vì chưa có
thuộc tính nào được đặt ở cột k+1 của ma trận CA nên bond(A
k
, A
k+1
)=0.
Thí dụ 12: Ta xét ma trận được cho trong Thí dụ 11 và tính toán phần đóng góp khi
di chuyển thuộc tính A
4
vào giữa các thuộc tính A
1
và A
2
, được cho bằng công thức:
Cont(A
1
, A
4
, A
2
)= 2bond(A

1
, A
4
)+ 2bond(A
4
, A
2
)-2bond(A
1
, A
2
)
Tính mỗi số hạng chúng ta được:
Bond(A
1
, A
4
) = Σ
4
z=1
aff(A
z
, A
1
)aff(A
z
, A
4
) = aff(A
1

,A
1
) aff(A
1
,A
4
) +aff(A
2
,A
1
)
aff(A
2
,A
4
) + aff(A
1
,A
3
) aff(A
3
,A
4
) + aff(A
1
,A
4
) aff(A
4
,A

4
)
= 45*0 +0*75+ 45*3+0*78 = 135
Bond(A
4
, A
2
)= 11865
Bond(A
1
,A
2
) = 225
Vì thế cont(A
1
, A
4
) = 2*135+2*11865+2*225 = 23550
Thí dụ 13:
Chúng ta hãy xét quá trình gom tụ các thuộc tính của quan hệ Dự án và dùng ma trận
ái lực thuộc tính AA.
bước khởi đầu chúng ta chép các cột 1 và 2 của ma trận AA vào ma trận CA và bắt
đầu thực hiện từ cột thứ ba. Có 3 nơi có thể đặt được cột 3 là: (3-1-2), (1,3,2) và (1,2,3).
Chúng ta hãy tính đóng góp số ái lực chung của mỗi khả năng này.
P a g e | 25
Thứ tự (0-3-1):
cont(A
0
, A
3

, A
1
) = 2bond(A
0
, A
3
)+ 2bond(A
3
, A
1
) - 2bond(A
0
, A
1
)
bond(A
0
, A
3
) = bond(A
0
, A
1
)=0
bond(A
3
, A
1
) = 45*48+5*0+53*45+3*0=4410
cont(A

0
, A
3
, A
1
) = 8820
Thứ tự (1-3-2)
cont (A
1
, A
3
, A
2
)=10150
Thứ tự (2-3-4)
cont (A
2
, A
3
, A
4
)=1780
Bởi vì đóng góp của thứ tự (1-2-3) là lớn nhất, chúng ta đặt A
3
vào bên phải của A
1
.
Tính toán tương tự cho A
4
chỉ ra rằng cần phải đặt nó vào bên phải của A

2.
Cuối cùng các
hàng được tổ chức với cùng thứ tự như các cột và các hàng được trình bày trong hình sau:

×