17 CHƯƠNG 2: CÁC THUẬT TOÁN PHÂN MẢNH THEO CÁC GIÁ TRỊ LẶP CỦA CÁC THUỘC TÍNH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN .... - Những ứng dụng có các khung nhìn được định nghĩa trên nhiều mảnh khác nh
Trang 1ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
Trang 2ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
-
Nguyễn Anh Dũng
GỘP NHÓM CÁC GIÁ TRỊ LẶP CỦA CÁC THUỘC TÍNH TRONG
CÁC MẢNH CỦA CƠ SỞ DỮ LIỆU PHÂN TÁN
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH
GV hướng dẫn: PGS NCVC TS Lê Huy Thập
Thái Nguyên - 2015
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của tôi, được xây dựng từ những số liệu và kết quả thực tiễn khi tôi học tập tại trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên và ứng dụng dựa trên số liệu của UBND huyện Đan Phượng, chưa từng được công bố hay xuất bản trong bất cứ công trình nào khác
Thái Nguyên, tháng 10 năm 2015
Tác giả
Nguyễn Anh Dũng
Trang 4LỜI CẢM ƠN
Trước tiên tôi xin được cảm ơn thầy PGS NCVC TS Lê Huy Thập, người trực tiếp giảng dạy và là người hướng dẫn tôi thực hiện luận văn này Tôi cũng xin bày tỏ lòng biết ơn đến các thầy, cô giáo Viện Công nghệ thông tin và Khoa Công nghệ thông tin - Đại học Thái Nguyên đã tận tình giảng dạy
và tạo điều kiện thuận lợi cho tôi trong suốt quá trình học tập
Tôi xin cảm ơn lãnh đạo Phòng Văn hóa và Thông tin huyện Đan Phượng, các anh chị đồng nghiệp đã tạo điều kiện cho tôi tham gia và hoàn thành khóa học Tôi cũng xin cảm ơn các bạn của tôi, những người luôn bên cạnh động viên, giúp đỡ và đóng góp nhiều ý kiến thiết thực trong quá trình học tập và thực hiện luận văn
Cuối cùng tôi chân thành cảm ơn các thành viên trong gia đình tôi, đã luôn hết mình yêu thương, dìu dắt tôi trong công việc và cuộc sống
Thái Nguyên, tháng 10 năm 2015
Sinh viên thực hiện
Nguyễn Anh Dũng
Trang 5MỤC LỤC
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
MỤC LỤC iii
DANH MỤC BẢNG BIỂU v
DANH MỤC HÌNH vii
DANH MỤC CÁC CHỮ VIẾT TẮT viii
BẢNG DANH MỤC CÁC KÍ HIỆU ix
LỜI NÓI ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3
1.1 Logic 3
1.1.1 Mệnh đề và các phép toán mệnh đề 3
1.1.2 Các phép toán trên mệnh đề 3
1.1.3 Các luật logic 6
1.2 Cơ sở dữ liệu phân tán 9
1.2.1 Phân mảnh ngang 12
1.2.2 Phân mảnh dọc 16
1.2.3 Phân mảnh hỗn hợp 17
CHƯƠNG 2: CÁC THUẬT TOÁN PHÂN MẢNH THEO CÁC GIÁ TRỊ LẶP CỦA CÁC THUỘC TÍNH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN 18
2.1 Miền giá trị thuộc tính và khái niệm giá trị lặp của thuộc tính 18
2.1.2 Các giá trị lặp trong miền giá trị của thuộc tính 18
2.2 Các thuật toán phân mảnh theo các giá trị lặp của các thuộc tính 21
2.2.1 Thuật toán phân mảnh dọc 21
2.2.2 Thuật toán phân mảnh ngang theo giá trị lặp và gộp nhóm theo tiêu chuẩn giữ lại mảnh ngang 42
2.2.3 Thuật toán phân mảnh hỗn hợp theo giá tri lặp 48
Trang 62.2.4 Thuật toán tính size của mảnh 50
2.3 Gắn nhãn cho mảnh hỗn hợp……… ……51
2.4 Kết luận chương 51
CHƯƠNG 3: ỨNG DỤNG QUẢN LÝ VẤN ĐỀ KINH DOANH TẠI HUYỆN ĐAN PHƯỢNG 52
3.1 Thiết kế cơ sở dữ liệu quan hệ kinh doanh tại huyện Đan Phượng 52
3.2 Mệnh đề phân mảnh các giá trị lặp lại của các thuộc tính theo các tiêu chí địa điểm, hộ kinh doanh, loại hình kinh doanh, … 55
3.3 Gộp nhóm các giá trị lặp của các thuộc tính trong các mảnh ngang 64
3.4 Kết luận chương 67
KẾT LUẬN 68
HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 69
TÀI LIỆU THAM KHẢO 70
Trang 7DANH MỤC BẢNG BIỂU
Bảng 1.1: Bảng tổng hợp giá trị chân trị của các phép toán cơ bản 6
Bảng 1.2: Bảng quan hệ PROJ 10
Bảng 1.3: Quan hệ được phân mảnh dọc PROJ1 11
Bảng 1.4: Quan hệ được phân mảnh dọc PROJ2 11
Bảng 1.5: Quan hệ được phân mảnh ngang với BUGGET ≤ 200 11
Bảng 1.6: Quan hệ được phân mảnh ngang với BUGGET > 200 12
Bảng 2.1 Quan hệ PhanNhiem 19
Bảng 2.1.1 Miền giá trị khóa 19
Bảng 2.1.2 Giá trị lặp ChucVu: Giám đốc 20
Bảng 2.1.3 Giá trị lặp ChucVu: Phân tích và thiết kế 20
Bảng 2.1 4 Giá trị lặp ChucVu: Kỹ sư 20
Bảng 2.1.5 Giá trị lặp ThoiGianLV: 24 20
Bảng 2.1.6 Giá trị lặp ThoiGianLV: 48 20
Bảng 2.1.7 Giá trị lặp (ChucVu , ThoiGianLV) 21
Bảng 2.2.1 Mảnh dọc theo ThoiGianLV 21
Bảng 2.2.2 Mảnh dọc theo ChucVu 22
Bảng 2.2.3 Mảnh dọc theo ThoiGianLV 23
Bảng 2.2.4 Mảnh dọc theo ChucVu 24
Bảng 2.2.5 Toàn quan hệ PhanNhiem 24
Bảng 2.2.5’ Toàn quan hệ PhanNhiem 43
Bảng 2.2.6 Quan hệ PhanNhiem 45
Bảng 2.2.7 Các mảnh ngang M21 47
Bảng 2.2.8 Quan hệ PhanNhiem 47
Bảng 2.2.9 Mảnh ngang M11 47
Bảng 2.2.10 Quan hệ PhanNhiem 48
Bảng 2.2.11 Mảnh ngang M12 48
Bảng 3.1: Dữ liệu của bảng Dang_Ky_KD 52
Bảng 3.2: Bảng kết quả của mảnh H1 56
Trang 8Bảng 3.3: Bảng kết quả của mảnh H2 57
Bảng 3.4: Bảng kết quả của mảnh H3 58
Bảng 3.5: Bảng kết quả của mảnh H4 59
Bảng 3.6: Bảng kết quả của mảnh H5 61
Bảng 3.7: Bảng kết quả của mảnh H6 62
Bảng 3.8: Bảng kết quả của mảnh H7 63
Trang 9DANH MỤC HÌNH
Hình 1.1:Mô tả mối quan hệ giữa các quan hệ bởi các đường nối………… 14
Hình 1.2: Phân đoạn hỗn hợp ……… 17
Hình 2.1: Ma trận mẫu về giá trị sử dụng thuộc tính……… 26
Hình 2.2: Ma trận liên đới thuộc tính……… 29
Hình 2.3: Tính toán ma trận liên đới CA……….……… 35
Hình 2.4: Định vị một điểm tách……….……… 37
Hình 3.1: Giao diện ban đầu của chương trình ……… 64
Hình 3.2: Giao diện sau quá trình chọn button “chonDB” ……… 65
Hình 3.3: Giao diện sau khi chọn lựa xong bảng quan hệ ……… 65
Hình 3.4: Giao diện quá trình chọn thuộc tính lặp ……… 66
Hình 3.5: Kết quả quá trình phân mảnh ngang ……… 67
Hình 3.6: Giao diện dữ liệu của một mảnh ngang ……… 67
Trang 11BẢNG DANH MỤC CÁC KÍ HIỆU
Π Phép chiếu trong CSDL
* Kết nối tự nhiên trong CSDL
Σ Phép chọn trong CSDL
Trang 12LỜI NÓI ĐẦU
1 Đặt vấn đề
Việc tiết kiệm không gian lưu trữ thông tin, rút ngắn thời gian truy nhập dữ liệu và giảm chi phí xử lý thông tin, dữ liệu là mục đích của người lập trình và người sử dụng
Đề tài luận văn giải quyết vấn đề trên bằng cách đưa ra các thuật toán
để tách các bản ghi và các thuộc tính có các giá trị lặp lại với kích cỡ đủ lớn Việc tách ở đây thực sự là việc phân mảnh “hỗn hợp” các quan hệ trong cơ sở
dữ liệu phân tán Mảnh có các giá trị lặp lại với kích cỡ đủ lớn được gán bí danh, phần còn lại cũng chính là các mảnh Khi cần cập nhật, chỉ cần tái thiết lại mảnh ban đầu từ các mảnh đã phân rã và tham chiếu đến bí danh đã đặt để lấy các giá trị lặp
Các mảnh có giá trị lặp lại với kích cỡ đủ lớn sẽ làm giảm chi phí khi truy cập/truy xuất, giảm chi phí lưu trữ, tăng tốc độ xử lý dữ liệu và giảm chi
phí truyền thông
2 Đối tượng và phạm vi nghiên cứu
Cơ sở dữ liệu phân tán, các loại mảnh và phương pháp phân mảnh trong CSDL phân tán
3 Hướng nghiên cứu của đề tài
Phân mảnh các giá trị lặp của các thuộc tính bằng phương pháp phân mảnh hỗn hợp và tìm ra các mảnh có hỗn hợp các kích thước đủ lớn
Gán nhãn cho các mảnh hỗn hợp có kích thước thỏa mãn các điều kiện cho trước
4 Những nội dung nghiên cứu chính
Luận văn được trình bày trong 3 chương, có phần mở đầu, phần kết luận, phần mục lục, phần tài liệu tham khảo Các nội dung cơ bản của luận văn được trình bày theo cấu trúc như sau:
Trang 135 Phương pháp nghiên cứu
Nghiên cứu kỹ các kiến thức, chủ đề có liên quan đến đề tài
Nắm vững các các thuật toán
6 Ý nghĩa khoa học của đề tài
Luận văn giúp cho việc tìm mảnh các dữ liệu trùng nhau, phân mảnh và gán nhãn cho chúng nhằm tăng tốc độ truy nhập, giảm chi phí lưu trữ và truyền trên mạng truyền dẫn
- Chương 1: Cơ sở lý thuyết
- Chương 2: Gộp nhóm các giá trị lặp của các thuộc tính trong cơ sở dữ liệu phân tán
- Chương 3: Ứng dụng quản lý vấn đề kinh doanh tại huyện Đan Phượng
Trang 14CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Logic
1.1.1 Mệnh đề và các phép toán mệnh đề
Chúng ta chỉ xét đến các mệnh đề toán học, có nghĩa là một phát biểu nào đó chỉ có hai giá trị: đúng hoặc sai, giá trị đúng (ký hiệu là 1 hoặc True,…), sai (ký hiệu là 0 hoặc False) Giá trị của mệnh đề được gọi là chân trị của mệnh đề đó
Ví dụ 1.1: Các phát biểu sau đây là các mệnh đề
1/ p = “2 là một số nguyên tố” là mệnh đề đúng nên chân trị của p là 1 2/ q = “5 là một số chẵn” là mệnh đề sai nên chân trị của q là 0
Trong việc khảo sát các mệnh đề, người ta còn phân ra làm hai loại là: mệnh đề sơ cấp và mệnh đề phức hợp
Mệnh đề sơ cấp (mệnh đề đơn giản) Mệnh đề sơ cấp là các "nguyên
tử" theo nghĩa là nó không thể được phân tích thành mệnh đề nhỏ hơn Chẳng hạn ví dụ 1.1
Mệnh đề phức hợp Mệnh đề phức hợp là mệnh đề được tạo thành từ một
hay nhiều mệnh đề khác bằng cách sử dụng các liên kết logic như từ
"NOT" dùng trong việc phủ định một mệnh đề, các từ nối: "AND", "OR",
Trang 15nhờ vào các phép toán logic
Các phép toán logic được định nghĩa bằng bảng chân trị (truth table) Bảng chân trị chỉ ra chân trị của mệnh đề phức hợp theo từng trường hợp của các chân trị của các mệnh đề sơ cấp tạo thành mệnh đề phức hợp Bảng chân trị của các phép toán logic tất nhiên là phản ánh ngữ nghĩa tự nhiên của các từ liên kết tương ứng
Bảng chân trị không chỉ dùng để kê ra sự liên hệ chân trị giữa mệnh đề phức hợp với chân trị của các mệnh đề sơ cấp cấu thành nó, mà bảng chân trị còn được dùng với mục đích rộng hơn: liệt kê sự liên hệ chân trị giữa các mệnh với các mệnh đề đơn giản hơn cấu thành chúng
a) Phép phủ định
Cho p là một mệnh đề, chúng ta dùng ký hiệu pđể chỉ mệnh đề phủ định của mệnh đề p
đề "5 ≥ 3" Trong trường hợp này p sai, pđúng Ta có thể viết p = 0, p= 1
b) Phép hội
Phép "hội", ký hiệu là ^ , cho p và q là hai mệnh đề, viết là pq là phép
toán chỉ chân trị đúng ki và chỉ khi cả p và q đều đúng
Trang 16Chân trị của mệnh đề này chỉ sai khi và chỉ khi cả p và q đều sai
e) Phép kéo theo hai chiều
Phép kéo theo 2 chiều hay phép tương đương, ký hiệu bởi ↔, được đưa
ra để mô hình cho loại phát biểu điều kiện hai chiều có dạng : " nếu và chỉ nếu " Cho p và q là 2 mệnh đề, ta viết p ↔q để diễn đạt phát biểu "p nếu
và chỉ nếu q" Phép toán tương đương ↔ được định nghĩa trong bảng tổng hợp các giá trị chân trị 1.1 bên dưới
Mệnh đề p ↔ q, được đọc là "p nếu và chỉ nếu q", còn được phát biểu dưới các dạng khác sau đây:
"p khi và chỉ khi q"
"p là điều kiện cần và đủ cho q"
Mệnh đề p ↔q có chân trị đúng (=1) trong các trường hợp p và q có cùng chân trị
Trang 17Bảng 1.1: Bảng tổng hợp giá trị chân trị của các phép toán cơ bản
f) Độ ưu tiên của các toán tử logic
Tương tự như đối với các phép toán số học, để tránh phải dùng nhiều dấu ngoặc trong các biểu thức logic, ta đưa ra một thứ tự ưu tiên trong việc tính toán Ở trên ta có 5 toán tử logic: (không) , (và), (hay), →(kéo theo),
↔ (tương đương)
ưu tiên mức 1 (cao nhất)
, ưu tiên mức 2 (thấp hơn)
Các luật logic là cơ sở để ta thực hiện các biến đổi trên một biểu thức logic
để có được một biểu thức logic mới tương đương logic với biểu thức logic có trước Mỗi biểu thức logic cho ta một sự khẳng định về sự tương đương của 2 biểu thức logic Ta sẽ sử dụng các qui tắc thay thế và các luật logic đã biết để thực hiện các phép biến đổi tương đương trên các biêu thức logic
Dưới đây, chúng ta sẽ liệt kê ra một số luật logic thường được sử dụng
Trang 18trong lập luận và chứng minh Các luật nầy có thể được suy ra trực tiếp từ các bảng chân trị của các biểu thức logic
i) Các luật đơn giản của phép tuyển
p p p(tính lũy đẳng của phép tuyển)
Trang 19 p 1 1 (luật thống trị)
p 00 (luật trung hòa)
p(pq) p (luật hấp thụ)
j) Các luật đơn giản của phép hội
p p p (tính lũy đẳng của phép hội)
p 1 p (luật trung hòa)
Giả sử p1, p2, … , pn là các biến mệnh đề Một biểu thức logic F theo các biến mệnh đề p1, p2,… , pn được gọi là một biểu thức tuyển cơ bản (tuyển sơ cấp) nếu nó có dạng sau:
F q q q với q j p jhoặc q j p j (j = 1, 2, …, n)
x, y, z Biểu thức logic E(p1, p2, … , pn) theo các biến mệnh đề p1, p2, … , pnđược nói là có dạng chuẩn hội khi E có dạng:
1 2 n
EE E E
Trong đó mỗi biểu thức con Ei đều có dạng chính tắc tuyển theo các biến
p1, p2, … , pn
Trang 20Ví dụ 1.8: Các biểu thức sau đây có dạng chuẩn tắc hội (chính tắc hội):
Chứng minh:
Có thể dễ dàng nhận thấy, áp dụng tập các luật trong mục 1.1.3 ta có thể biến các biểu thức bất kỳ thành dạng tuyển của các biểu thức hội Từ đó, ta
có điều phải chứng minh
1.2 Cơ sở dữ liệu phân tán
CSDL phân tán (Distributed Database System – DDBS) là một tập hợp
dữ liệu có liên đới logic và được phân bố trên các nút của một mạng máy tính Phần lớn các hệ cơ sở dữ liệu phân tán được thiết kế theo hướng từ trên xuống (Top-Down) Thiết kế phân mảnh dữ liệu là công việc đầu tiên phải thực hiện Mục đích của việc phân mảnh dữ liệu là tạo ra các đơn vị cấp phát logic, sao cho chi phí để thực hiện truy vấn thông tin là thấp nhất
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ư
Trang 21mộ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ất định 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
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
Trong luận văn ta sử dụng một bảng quan hệ của cơ sở dữ liệu làm ví dụ
là bảng cơ sở dữ liệu về nhân viện PROJ như sau:
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ệ
Ví dụ 1.9:
Tách dọc quan hệ PROJ thành 2 quan hệ PROJ1 và PROJ2 như sau:
π PNO,PNAME,LOG (PROJ) và π PNO,BUDGET (PROJ)
Trang 22Bảng 1.3: Quan hệ được phân mảnh dọc PROJ1
Bảng 1.4: Quan hệ được phân mảnh dọc PROJ2
Phân mảnh ngang: Quan hệ được chia theo chiều ngang Thực chất đây là
phép chọn trongquan 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
Ví dụ 1.10: Tách ngang quan hệ PROJ thành 2 quan hệ PROJ1 và PROJ2 thoả
theo điều kiện là BUDGET ≤ 200 và BUDGET > 200 như sau:
σ BUDGET ≤ 200 (PROJ)
σ BUDGET > 200 (PROJ)
Bảng 1.5: Quan hệ được phân mảnh ngang với BUGGET ≤ 200
Trang 23Bảng 1.6: Quan hệ được phân mảnh ngang với BUGGET > 200
Các quy tắc phân mảnh
Ta phải tuân thủ ba qui tắc khi phân mảnh cơ sở dữ liệu quan hệ
1 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
2 Tính phục hồi: Nếu một quan hệ R được phân rã thành các mảnh R1,
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.2.1 Phân mảnh ngang
1.2.1.1 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
Trang 24Thông tin về CSDL cần thiết cho phân mảnh ngang Thông tin về CSDL
là thông tin về lược đồ khái niệm toàn cục của CSDL Tức là chúng ta cần biết được cách mà quan hệ con sẽ hợp lại với nhau như thế nào Trong mô hình quan hệ, các liên kết giữa các thực thể cũng được biểu thị bằng quan hệ Với mục đích thiết kế phân tán, các mối liên kết cũng được mô hình hóa theo kiểu mô hình quan hệ Theo cách này, chúng ta sẽ vẽ một đường nối có hướng
từ quan hệ Parent đến quan hệ Child
Có hai loại phương pháp phân mảnh ngang là:
- Phân mảnh ngang nguyên thủy: Là phân mảnh ngang được thực hiện trên các mệnh đề của chính quan hệ đó
- Phân mảnh ngang dẫn xuất: Là phân rã một quan hệ dựa trên các mệnh
đề của quan hệ khác
1.2.1.2 Thông tin cần thiết của phân mảnh ngang
Thông tin về CSDL có liên quan tới lược đồ khái niệm toàn cục Trong mô hình quan hệ, các mối quan hệ giữa các thực thể được mô tả như là những quan
hệ Trong mô hình quan hệ thực thể (ER), các mối liên hệ giữa các đối tượng CSDL được mô tả rõ ràng Nhìn chung mối quan hệ giữa các đối tượng trong CSDL thường mô tả bằng các mối quan hệ một - một, một - nhiều và mối quan hệ nhiều - nhiều Với mục đích cho thiết kế, đường nối (Link) có hướng giữa các quan hệ được sử dụng cho việc biểu diễn bởi thao tác nối bằng (Equijoin)
Ví dụ 1.11: Giả sử có một quan hệ với các bảng quan hệ như sau: PAY,
EMP, PROJ và ASG Trong đó:
PAY: bảng quan hệ chức vụ
EMP: bảng quan hệ nhân viên
PROJ: bảng quan hệ công việc
ASG: bảng quan hệ kết hợp
Trong đó, mỗi một chức vụ (Title) có nhiều nhiều nhân viên (Employee) giữ chức vụ đó Đây là mối quan hệ môt - nhiều được biểu diễn bằng một đường nối có hướng L1 trỏ từ quan hệ PAY đến EMP Mối quan hệ nhiều - nhiều được trỏ từ các quan hệ EMP và PROJ đến quan hệ ASG được biểu diễn bằng hai đường nối L2 và L3 (hình 1.1)
Trang 25Hình 1.1:Mô tả mối quan hệ giữa các quan hệ bởi các đường nối
Quan hệ tại điểm cuối của đường nối được gọi là quan hệ chủ (quan hệ đích)
và các quan hệ tại điểm đầu được gọi là các quan hệ thành viên (quan hệ nguồn) Thông tin về ứng dụng: Để thực hiện phân mảnh, cần phải có thông tin định tính và thông tin định lượng Thông tin định tính hướng dẫn cho hoạt động phân mảnh, thông tin định lượng chủ yếu sử dụng trong các mô hình cấp phát Thông tin định tính cơ bản gồm các mệnh đề dùng trong câu truy vấn Sau đây là các định nghĩa về mệnh đề đơn giản và mệnh đề hội sơ cấp như sau:
Cho quan hệ R(A1, A2, ,An), trong đó Ai là thuộc tính được định nghĩa trên một miền Di , một mệnh đề đơn giản Pj được định nghĩa trên R có dạng:
Pj: Ai θ Value Trong đó θ thuộc {=, <, ≠, ≤, >, ≥} và Value được chọn từ miền Ai(Value thuộc Di)
Chúng ta sử dụng Pri để biểu thị tập tất cả các mệnh đề đơn giản được định nghĩa trên quan hệ Ri Các phần tử của Pri được ký hiệu là pij
Ví dụ 1.12: Cho quan hệ PROJ
PNAME = “Maintenance”
BUDGET ≤ 200000là các mệnh đề đơn giản
Trong thực tế các câu truy vấn là tổ hợp của rất nhiều mệnh đề đơn giản Mỗi tổ hợp được gọi là một mệnh đề hội sơ cấp Cho tập Pri = {pi1, pi2, ,
Trang 26pim} là các mệnh đề đơn giản trên quan hệ Ri, tập các mệnh đề hội sơ cấp Mi
= {mi1, mi2, , miz} được định nghĩa như sau:
Trong đó, pik* = pik hoặc pik* = ¬pik Vì thế mỗi mệnh đề đơn giản có thể xuất hiện trong mệnh đề hội sơ cấp dưới dạng tự nhiên hoặc dạng phủ định của nó
Phủ định của một mệnh đề sẽ có thể:
Attribute = Value không có phủ định
Attribute ≤ Value, phủ định là Attribute > Value
Cận_dưới ≤ Attribute_1, phủ định là ¬(Cận_dưới ≤ Attribute_1)
Attribute_1 ≤ Cận_trên, phủ định là ¬(Attribute_1 ≤ Cận_trên)
Cận_dưới ≤ Attribute_1 ≤ Cận_trên, phủ định là
¬(Cận_dưới ≤ Attribute_1 ≤ Cận_trên)
1.2.1.3 Phân mảnh ngang nguyên thủy
Phân mảnh ngang nguyên thuỷ là phân rã một quan hệ thành các tập gồm các bộ dựa trên các mệnh đề được định nghĩa trên quan hệ đó Phân mảnh ngang nguyên thuỷ được định nghĩa bằng một thuật toán chọn trên các quan
hệ nguồn của một lược đồ CSDL Mảnh ngang Ri bao gồm các bộ của R được chọn ra theo công thức:
1.2.1.4 Phân mảnh ngang dẫn xuất
Phân mảnh ngang dẫn xuất là phân mảnh một quan hệ dựa vào các mệnh
đề được định nghĩa trên quan hệ chủ (Parent) Phân mảnh ngang dẫn xuất là phân mảnh ngang trên quan hệ đích của một đường nối dựa theo phép toán chọn trên quan hệ nguồn của đường nối đó
Nếu cho trước một đừng nối L, trong đó Nguon (L) = S và Dich (L) = R, các mảnh ngang dẫn xuất của R được định nghĩa là:
Trang 27S S với Fi là công thức định nghĩa mảnh ngang nguyên thủy Si
Các thông tin cần cho phân mảnh ngang dẫn xuất :
Muốn thực hiện phân mảnh ngang dẫn xuất, chúng ta cần ba thông tin vào: tập các mảnh của quan hệ nguồn, quan hệ đích và tập các mệnh đề nối nửa giữa nguồn và đích
Một số vấn đề phức tạp cần phải chú ý:
Trong lược đồ CSDL, chúng ta hãy 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 ngang dẫn xuất cho 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:
(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
1.2.2 Phân mảnh dọc
Cho R là một quan hệ trên tập các thuộc tính Ω = {A1, A2,…, An} Khi
đó phân mảnh dọc quan hệ R sinh ra các mảnh R1, R2,, …, Rm sao cho mỗi mảnh là một quan hệ chứa một tập con các thuộc tính cuả quan hệ R và khóa của nó Tức là Ω sẽ được phân mảnh sao cho Ω = Ω1 Ω2 … Ωm, trong đó
Ri là mảnh quan hệ trên các thuộc tính Ωi, i=1…m
Mục đích của phân mảnh dọc là phân chia quan hệ R thành tập các quan hệ nhỏ hơn để có nhiều ứng dụng có thể chỉ cần thực hiện trên một mảnh, điều này làm giảm đáng kể chi phí Mảnh tối ưu là mảnh sinh ra một lược đồ phân mảnh cho phép giảm thiểu thời gian thực hiện của ứng dụng trên mảnh đó
Kỹ thuật phân mảnh dọc phức tạp hơn phân mảnh ngang, vì số lựa chọn phân hoạch rất lớn Trong trường hợp có m thuộc tính không phải khóa chính, thì số mảnh có thể là mm
Để có được lời giải tối ưu cho bài toán phân mảnh dọc rất khó, không hiệu quả Vì vậy cần phải sử dụng các phương pháp Heuristic cho phân mảnh dọc các quan hệ toàn cục Có hai phương pháp Heuristic:
a Nhóm thuộc tính: bắt đầu gán mỗi thuộc tính cho một mảnh và trong mỗi bước, nối một số mảnh lại với nhau cho đến khi thỏa mãn điều kiện phân mảnh
Trang 28b Tách mảnh: bắt đầu bằng một quan hệ và quyết định cách phân chia quan hệ 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 Ở đây chúng ta chỉ xem xét kỹ thuật tách mảnh vì nó thích hợp với phương pháp thiết kế CSDLPT từ trên xuống
Việc nhân bản các thuộc tính khóa của quan hệ toàn cục trong các mảnh
là một đặc trưng của phương pháp phân mảnh dọc cho phép khôi phục quan
hệ toàn cục và bảo đảm tính toàn vẹn ngữ nghĩa và làm giảm đi quá trình trao đổi dữ liệu Vì vậy, phương pháp phân mảnh dọc chỉ đề cập đến các thuộc tính không khóa
1.2.3 Phân mảnh hỗn hợp
Trong thực tế, hầu hết các trường hợp phân mảnh ngang hay phân mảnh dọc đơn giản của CSDL không thoả mãn yêu cầu người sử dụng Thường CSDL được phân mảnh dọc sau đó phân mảnh ngang, tạo ra sự phan chia theo cấu trúc cây (Hình 1.2) Chiến lược phân mảnh này gọi là phân đoạn lai, hay phân mảnh trộn, hay phân mảnh lồng
Hình 1.2: Phân đoạn hỗn hợp Tính đúng đắn của phân mảnh hỗn hợp được đảm bảo, vì chiến lược phân mảnh này dựa theo phân mảnh ngang và phân mảnh dọc, đảm bảo tính đúng đắn như đã trình bày Để khôi phục quan hệ toàn cục trong trường hợp phân mảnh hỗn hợp, có thể bắt đầu từ các node lá của cây phân hoạch và dịch chuyển lên bằng cách thực hiện các phép kết nối và phép hợp Phân mảnh hỗn hợp đầy đủ nếu các mảnh lá và các mảnh trung gian là đầy đủ Tương tự, có thể kiểm tra tính tách biệt của chiến lược phân mảnh hỗn hợp Tính tách biệt được đảm bảo khi các mảnh lá và mảnh trung gian cũng tách biệt
Trang 29CHƯƠNG 2: CÁC THUẬT TOÁN PHÂN MẢNH THEO CÁC GIÁ TRỊ LẶP CỦA CÁC THUỘC TÍNH TRONG CƠ SỞ DỮ LIỆU PHÂN TÁN
Một mảnh ngang, dọc hay hỗn hợp đều là các quan hệ con của một quan
hệ hay của một số quan hệ (trong phép hợp, trong phép nối,…) tham gia vào câu vấn tin, vì vậy ta sẽ gọi chung là quan hệ
2.1 Miền giá trị thuộc tính và khái niệm giá trị lặp của thuộc tính
2.1.1 Miền giá trị của thuộc tính
Cho lược đồ quan hệ R(K, A1,A2,…,An), trong đó K là khóa chính còn
A1,A2,…,An là các thuộc tính không khóa
Ký hiệu D = (Dk, D1, D2, …, Dn)
Với
DK = Dom(K) là miền giá trị của khóa K
Di = Dom(Ai) là miền giá trị của thuộc tính Ai (i 1 , n)
2.1.2 Các giá trị lặp trong miền giá trị của thuộc tính
Định nghĩa giá trị lặp
Định nghĩa tương tự cho tập các giá trị lặp của tập con các thuộc tính của tập thuộc tính A
Ví dụ 2.1
Cho quan hệ phân công mhiệm vụ - PhanNhiem(MaNV, MaDuAn, ChucVu, ThoiGianLV) cho các nhân viên tại các dự án trong bảng 2.1
Trang 30Bảng 2.1 Quan hệ PhanNhiem
ti(MaNV, MaDuAn) tj(MaNV, MaDuAn)
với (ij) vì (MaNV, MaDuAn) là khóa – không có giá trị lặp
Bảng 2.1.1 Miền giá trị khóa
Trang 312/ Các thuộc tính không khóa có :
i/ Giá trị lặp miền thuộc tính : ChucVu = ”Giám đốc”
Bảng 2.1.2 Giá trị lặp ChucVu: Giám đốc
Bảng 2.1.3 Giá trị lặp ChucVu: Phân tích và thiết kế
Bảng 2.1 4 Giá trị lặp ChucVu: Kỹ sư
Trang 32iii/ Giá trị lặp đa miền thuộc tính : (ChucVu , ThoiGianLV)
Bảng 2.1.7 Giá trị lặp (ChucVu , ThoiGianLV)
2.2 Các thuật toán phân mảnh theo các giá trị lặp của các thuộc tính
2.2.1 Thuật toán phân mảnh dọc
Phân mảnh dọc một quan hệ R sinh ra các mảnh V1, V2,…, Vd Mỗi mảnh con chứa một tập con thuộc tính của R và cả tập khóa Key của R Có thể coi việc phân mảnh dọc tương ứng với câu lệnh SQL như sau:
SELECT<Tập thuộc tính khóa><Danh sách thuộc tính không khóa của quan hệ>
FROM <Quan hệ>
Còn trong AQL (Algebraic Query Language)
<Tập thuộc tính khoa> <Danh sách thuộc tính không khóa của quan hệ> <Quan hệ>
Ví dụ 2.2-1
Từ bảng 2.1 Các quan hệ sau là các mảnh dọc
MaNV, MaDuAn, ThoiGianLV <PhanNhiem>
MaNV, MaDuAn, ChuVu <PhanNhiem>
Trang 33Bảng 2.2.2 Mảnh dọc theo ChucVu
Nội dung thuật toán phân mảnh dọc:
Giả sử cho quan hệ R với tập thuộc tính không khoa A = {A1, A2, … ,An}
Thuật toán phân mảnh dọc như sau:
Gọi A = {Ai}; i = 1, 2, , n là tập thuộc tính không khóa
Bk là tập thuộc tính con gồm k thuộc tính bất kỳ của A
M = {Bk}
PM_DOC /* Thuật toán phân mảnh dọc*/
Vào: A = {Ai}; i = 1, 2, , n là tập thuộc tính không khóa
Ra: Các mảnh dọc FV của quan hệ R(Key,A1,A2,…,An)
Trang 35Bảng 2.2.4 Mảnh dọc theo ChucVu
Bảng 2.2.5 Toàn quan hệ PhanNhiem
Trang 36Trên đây, chỉ ra câu lệnh để phân mảnh dọc từ một quan hệ mảnh đã có Tuy nhiên, phương pháp tổng quát để phân mảnh dọc là sử dụng ma trận liên kết giữa các thuộc tính AA để tìm ra ma trận liên kết tụ CA thông qua thuật toán BEA để gom tụ các thuộc tính có liên kết cao lại với nhau rồi phân mảnh dọc quan hệ dựa theo các thuộc tính đó Thuật toán BEA được mô tả như sau:
Mô tả Thuật toán tụ nhóm
Phân mảnh dọc chia một quan hệ R ra các quan hệ con (mảnh) R1,
R2, Rr Mỗi mảnh chứa một tập con các thuộc tính cùng với khóa của quan hệ
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, để có nhiều ứng dụng chỉ cần chạy trên một mảnh, điều này
sẽ làm giảm đáng kể chi phí Như vậy một cách phân mảnh tối ưu là phân mảnh để thời gian thực thi các ứng dụng chạy trên các mảnh đó là nhỏ nhất
Phân mảnh dọc được nghiên cứu cho cả CSDL tập trung lẫn phân tán, tập trung là sử dụng nó làm công việc thiết kế, cho phép vấn tin chỉ với các quan hệ nhỏ hơn, nên giảm được số truy nhập vào các trang Khi xác định được các quan hệ con được tham chiếu nhiều nhất thì đặt chúng vào “phần”
bộ nhớ có tốc độ truy cập nhanh nhất (nếu có sự hỗ trợ về phân cấp bộ nhớ)
Phân mảnh dọc phức tạp hơn phân mảnh ngang, vì số lựa chọn có thể
có của phân mảnh dọc là rất lớn Trong phân mảnh ngang, nếu tổng các vị từ đơn giản của tập Pr là n thì số mảnh ngang có thể có tối đa là 2n (vì có 2n vị từ hội sơ cấp) chưa nói trong số chúng có một số vị từ tương đương, có thể bỏ bớt, do đó sẽ làm giảm số mảnh phải xem xét Còn trong phân mảnh dọc nếu một quan hệ có m thuộc tính không phải là khóa thì số mảnh dọc có thể có sẽ
là số Bell của m Với m đủ lớn thì số Bell xấp xỉ mm Qua những minh chứng này cho thấy để tìm các phân mảnh dọc tối ưu là bài toán heuristic Hai loại heuristic cho phân mảnh dọc các quan hệ toàn cục là:
Trang 37- Các yêu cầu thông tin của phân mảnh dọc
Các thông tin chíng cần cho phân mảnh dọc liên quan đến các ứng dụng Vì thế, chúng ta bàn về các điều kiện cho các ứng dụng sẽ chạy trên CSDL phân tán Bởi vị phân mảnh 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 đạc được nào đó để định nghĩa chính xác hơn về khái niệm "liên đới" để chỉ ra mức độ liên đới giữa các thuộc tính Chúng ta sẽ nghiên cứu tìm cách để thu được các giá trị này từ các dữ liệu đã cho
- Các yêu cầu dữ liệu
Yêu cầu dữ liệu có liên quan đến các ứng dụng gọi là tần số truy xuất access frequency của chúng Goi Q={q1, q2,… qq} 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(A1,…An) Thế thì với mỗi câu vấn tin qi và mỗi thuộc tính Aj chúng ta đưa ra ký hiệu là use(qi, Aj) là gía trị
sử dụng thuộc tính Aj và được tính như sau:
Chẳng hạn, có các truy vấn q1, q2, q3, q4 và quan hệ R(A1, A2, A3, A4)
0 trong trường hợp ngược lại
Trang 38Các véc tơ (use(qi, A1),use(qi, A2), …., use(qi, An)cho biết mỗi ứng dụng qi có tham chiếu hay không đến các Aj với mọi j rất dễ xác định nếu như nhà thiết
kế biết được các ứng dụng sẽ chạy trên CSDL
Ví dụ 2.2-3: Giả sử các ứng dụng sau đây chạy trên quan hệ DuAn trong mỗi trường hợp chúng ta đều thẻ hiện bởi SQL
q1 : Tìm ngân sách của một dự án, cho biết mã số dự án
SELECT NganSach
FROM DuAn
WHERE MaDuAn = Value
q2 : Tìm tên và ngân sách của mọi dự án
SELECT TenDuAn, NganSach
FROM DuAn
q3 : Tìm tên của mọi dự án được thực hiện tại một thành phố đã cho
SELECT TenDuAn
FROM DuAn
WHERE ViTri = Value
q4 : Tìm tổng ngân sách dự án cho mỗi thành phố
SELECT SUM(NganSach)
FROM DuAn
WHERE ViTri = Value
Dựa theo 4 ứng dụng này, chúng ta có thể định nghĩa được giá trị sử dụng thuộc tính Chúng ta, gọi A1 = MaDuAn, A2 = TenDuAn, A3 = NganSach và A4 = ViTri Giá trị sử dụng được định nghĩa dưới dạng ma trận (hình 2.1) trong đó Ô tại (i,j) biểu thị use(qi, Aj)
Giá trị sử dụng thuộc tính không đủ tổng quát để làm cơ sở cho việc tách và phân mảnh Để làm cơ sở biểu thị cho độ lớn của tần số ứng dụng cặp (Ai, Aj ) biểu thị cho sự liên đới giữa hai thuộc tính của một quan hệ theo cách chúng
Trang 39được các ứng dụng truy xuất Số đo tính liên đới của hai thuộc tính Ai và Ajcủa quan hệ R(A1,…An) ứng với tập ứng dụng Q = {q1,…,qq} được định nghĩa là:
Trong đó refl(qk) là số truy xuất đến các thuộc tính (Ai, Aj) cho mỗi thực hiện của ứng dụng qk tại vị trí Sl và accl (qk) là số đo tấn số truy xuất ứng dụng đã được định nghĩa trước vàđước sửa đổi lại để chứa tất cả các tần số tại các vị trí khác nhau
Kết quả của việc tính toán này là 1 ma trận nn, mỗi phần tử của nó là 1 trong các số đo được định nghĩa trên.Chúng ta gọi nó là ma trận liên đới thuộc tính (AA)
Ví dụ 2.2-4:
Chúng ta hãy tiếp tục với trường hợp đã xem xét trường hợp trong Ví dụ 2.2-3 Để cho đơn giản, chúng ta hãy giả sử rằng refl (qk) =1 cho tất cả qk và Sl .Nếu tần số ứng dụng là:
acc1(q1) = 15 acc2(q1) = 20 acc3(q1) = 10 acc1(q2) = 5 acc2(q2) = 0 acc3(q2) = 0 acc 1(q3) = 25 acc2(q3) = 25 acc3(q4) = 25
acc 1(q4) = 3 acc2(q4) = 0 acc3(q4) = 0 Với các liệu này thì số đo liên đới giữa các thuộc tính A1 và A3 có thể được đo bằng:
k|(use(qk,Ai)-l) use(qk,Aj)-l
Si
refl(qk)accl(qk) aff(Ai, Aj) =
accl(qk) = acc1(q1) + acc2(q1) + acc3(q1)
Trang 40bởi vì ứng dụng duy nhất truy xuất đến cả hai thuộc tính này là q1 Ma trận liên đới thuộc tính đầy đủ trình bày trong hình 2.2 Chú ý rằng để cho đầy đủ, các giá trị ở đường chéo cũng được tính dù rằng chúng hoàn toàn vô nghĩa
Thuật toán tụ nhóm
Nhiệm vụ cơ bản của phân mảnh dọc là tìm thuật toán để gom thành nhóm các thuộc tính dựa trên các giá trị cảu ma trận liên đới thuốc tính AA Chúng ta sẽ thực hiện nhiệm vụ này bởi thuất toán năng lượng nối BEA (Bond Energy Algorithm) Ưu điểm của thuật toán này là ở chỗ:
(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ự, trái ngược với một sắp xếp thứ tự tuyến tính của các mục (nghĩa là nó gom các thuộc tính có giá trị liên đới lớn lại với nhau và những thuộc tính có giá trị liên đới nhỏ lại với nhau)
(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 (n2) 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 năng lương nối BEA đầu vào là ma trận liên đới, hoán vị các hàng và cột rồi sinh ra một ma trận liên đới tụ (CA) (Clustered affinity matrix) Hoán vị được thực hiện sao cho số đo liên đới chung AM là lớn nhất
n n
j i j
i j
i A aff A A aff A A A