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
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.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
Phân mảnh ngang theo giá trị lặp ở đây chúng ta quan tâm đến các mảnh một hoặc một số các thuộc tính có giá trị lặp, hơn nữa số lần xuất hiện giá trị lặp phải lớn hơn 1 mới có giá trị và chúng ta sẽ giữ lại các mảnh ngang đó. Lý do cơ bản là khi nén hoặc gán nhãn mới có giá trị. Ví dụ trong mảnh ngang bảng 2.1.2. Chúng ta chỉ cần các thông tin nhƣ:
Hoặc 1/ Bộ: t#
ChucVu = “Giám đốc”
….
Hoặc:
2/
MaNV MaDuAn
NV1 DA1
NV5 DA2
NV6 DA4
NV8 DA3
Và ChucVu = “Giám đốc”
…
Tuy nhiên trong trường hợp 1/ thì khi có Update thứ tự bộ sẽ không còn chính xác, vì vậy chúng ta sẽ thực hiện theo 2/
Cho trước quan hệ R, tập khóa K, tập thuộc tính không khóa A = {A1, A1, …, An}
Ký hiệu m = Card(R)
Gọi pij là mệnh đề đơn giản trên quan hệ R. Nghĩa là:
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
Bảng 2.2.5’. Toàn quan hệ PhanNhiem
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t1 NV1 DA1 Giám đốc 12
t2 NV2 DA1 Phân tích và thiết kế 24
t3 NV2 DA2 Phân tích và thiết kế 24
t4 NV3 DA3 Tƣ vấn 10
t5 NV3 DA4 Kỹ sƣ 48
t6 NV4 DA2 Lập trình viên 18
t7 NV5 DA2 Giám đốc 24
t8 NV6 DA4 Giám đốc 48
t9 NV7 DA3 Kỹ sƣ 36
t10 NV8 DA3 Giám đốc 40
pij: Aj = dij ; j = 1, 2, ..., n; i = 1, 2, …, m; dij dom(Aj)
Trong đó j chỉ thuộc vị trí thuộc tính Aj: (j = 1, 2, … , n) , i chỉ thứ tự bộ thứ i.
Chẳng hạn trong bảng 2.2.5’:
p1,1 : ChucVu = “Giám đốc”
p1,2 : ThoiGianLV = 12
p2,1 : ChucVu = “Phân tích và thiết kế”
p2,2 : ThoiGianLV = 24
…..
p9,1 : ChucVu = “Kỹ sƣ”
p9,2 : ThoiGianLV = 36
Một mệnh đề hội sơ cấp Eij có dạng trong trường hợp của chúng ta có dạng:
Eij = pi,k1 pi,k2 … pi,kp
Trong đó {k1, k2, ..., kp} {1, 2, … , n} , ( i = 1, 2, … , m) Chẳng hạn
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
E2,2 = p21 p22 = ChucVu = “Phân tích và thiết kế” ThoiGianLV = 24 Khi phân mảnh ngang mỗi mệnh đề Eij sẽ cho chúng ta một mảnh ngang.
Gọi E = {Eij}
Thuật toán phân mảnh ngang PhanMN chỉ với các thuộc tính có giá trị lặp nhƣ sau:
PhanMN Input: R
Output: FMN /*Các mảnh ngang có Card > 1, tiêu chuẩn gộp nhóm*/
Begin
Pr = /* là tập chứa các mđ đơn giản*/
FMN = /* F tập các mảnh ngang có giá trị lặp có Card > 1*/
Y = /* là tập rỗng*/
/* Tạo các mệnh đề đơn giản */
For j = 1 To m For i = 1 To m
pij := “Aj = dij” Pr := Prpij
EndFor EndFor
/* Tạo các mệnh đề hội sơ cấp */
E = /* là tập các mệnh đề hội sơ cấp*/
For Each {k1, ..., kq} {1, 2, ..., n}
For i = 1 To m
E = E (pi, k1 pi, k2 ... pi, kq) EndFor
EndFor
/* Tạo các mệnh đề hội sơ cấp */
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
For kq = n DownTo 1 /* Mỗi mệnh đề hội sơ cấp X thuộc E */
M “pi, k1 pi, k2 ... pi, kq” = pi, k1 pi, k2 ... pi, kq (R) /* F là tập rỗng*/
If Card(M“pi, k1 pi, k2 ... pi, kq”) > 1 /* Nếu đúng, tiêu chuẩn gộp nhóm*/
FMN = FMNM“pi, k1 pi, k2 ... pi, kq” /* Bổ sung M vào F */
R = R/M“pi, k1 pi, k2 ... pi, kq” /* Bỏ bớt mảnh M từ R*/
Y= Y“pi, k1 pi, k2 ... pi, kq” /* Lưu mệnh đề đã được phân mảnh */
EndIf Endfor
/* Kết thúc thuật toán chúng ta đƣợc F là tập các mảnh ngang có giá trị lặp với số bản ghi của các mảnh ít ra cũng bằng 2, các chỉ số của mảnh ngang trong F chính là thứ tự của các thuộc tình trong qh R*/
Ví dụ minh họa Cho quan hệ
Bảng 2.2.6. Quan hệ PhanNhiem
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t1 NV1 DA1 Giám đốc 12
t2 NV2 DA1 Phân tích và thiết kế 24
t3 NV2 DA2 Phân tích và thiết kế 24
t4 NV3 DA3 Tƣ vấn 10
t5 NV3 DA4 Kỹ sƣ 48
t6 NV4 DA2 Lập trình viên 18
t7 NV5 DA2 Giám đốc 24
t8 NV6 DA4 Giám đốc 48
t9 NV7 DA3 Kỹ sƣ 36
t10 NV8 DA3 Giám đốc 40
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
Áp dụng thuật toán Pr bao gồm
p1,1: ChucVu = “Giám đốc”
p2,1: ChucVu = “Phân tích và thiết kế”
p3,1: ChucVu = “Phân tích và thiết kế”
p4,1: ChucVu = “Tƣ vấn”
p5,1: ChucVu = “Kỹ sƣ”
p6,1: ChucVu = “Lập trình viên”
p7,1: ChucVu = “Giám đốc”
p8,1: ChucVu = “Giám đốc”
p9,1: ChucVu = “Kỹ sƣ”
p10,1: ChucVu = “Giám đốc”
---
p1,2: ThoiGianLV = 12 p2,2: ThoiGianLV = 24 p3,2: ThoiGianLV = 24 p4,2: ThoiGianLV = 10 p5,2: ThoiGianLV = 48 p6,2: ThoiGianLV = 18 p7,2: ThoiGianLV = 24 p8,2: ThoiGianLV = 48 p9,2: ThoiGianLV = 36 p10,2: ThoiGianLV = 40 ---
E = {p1,1 p1,2, p2,1 p2,2, p3,1 p3,2 , … , p10,1 p10,2} ---
k = 2 ; chỉ có 2 thuộc tính không khóa
Với M: ChucVu =“Giám đốc” “ThoiGianLV =12” với card(M2) 2 thì M2
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
rỗng.
Với M: ChucVu =“Phân tích thiết kế” “ThoiGianLV =24” với card(M2) 2 thì M2 sẽ là
Bảng 2.2.7. Các mảnh ngang M21
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t2 NV2 DA1 Phân tích và thiết kế 24
t3 NV2 DA2 Phân tích và thiết kế 24
Quan hệ PhanNhiem bây giờ là:
Bảng 2.2.8. Quan hệ PhanNhiem
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t1 NV1 DA1 Giám đốc 12
t4 NV3 DA3 Tƣ vấn 10
t5 NV3 DA4 Kỹ sƣ 48
t6 NV4 DA2 Lập trình viên 18
t7 NV5 DA2 Giám đốc 24
t8 NV6 DA4 Giám đốc 48
t9 NV7 DA3 Kỹ sƣ 36
t10 NV8 DA3 Giám đốc 40
Với p11: ChucVu = “Giám đốc”
Ta có:
Bảng 2.2.9. Mảnh ngang M11
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t1 NV1 DA1 Giám đốc 12
t7 NV5 DA2 Giám đốc 24
t8 NV6 DA4 Giám đốc 48
t10 NV8 DA3 Giám đốc 40
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/
Quan hệ PhanNhiem bây giờ là:
Bảng 2.2.10. Quan hệ PhanNhiem
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t4 NV3 DA3 Tƣ vấn 10
t5 NV3 DA4 Kỹ sƣ 48
t6 NV4 DA2 Lập trình viên 18
t9 NV7 DA3 Kỹ sƣ 36
Mảnh ngang cuối cùng
Với p51: ChucVu = “Kỹ sƣ”
Bảng 2.2.11. Mảnh ngang M12
Bộ t MaNV MaDuAn ChucVu ThoiGianLV
t5 NV3 DA4 Kỹ sƣ 48
t9 NV7 DA3 Kỹ sƣ 36
F = { M21, M11, M12}