M Ở ĐẦU
2.2.2. Các kiểu phân mảnh
Ký hiệu:
Cardr(R) là số hàng của quan hệ R Cardc(R) là số thuộc tính của quan hệ R
Thể hiện các quan hệ chính là các bảng, vì thế vấn đề là tìm những cách khác nhau để phân rã một quan hệ thành nhiều quan hệ con. Ta có thể áp dụng
hai cách khác nhau:
+ Chia bảng theo chiều dọc;
+ Chia bảng theo chiều ngang.
Chia quan hệ theo chiều dọc ta được các quan hệ con mà mỗi quan hệ chứa
một tập con các thuộc tính (các cột) của quan hệ gốc – gọi là phân mảnh dọc.
Trường hợp khi phân mảnh kết hợp cả phân mảnh ngang và phân mảnh
dọc thì quá trình phân mảnh được gọi là phân mảnh hỗn hợp. Phân mảnh hỗn
hợp thường được thực hiện theo trình tự phân mảnh ngang trước sau đó phân mảnh dọc hoặc ngược lại.
Ví dụ 1:
Cho một quan hệ R = (A, B, C, D, E)
Nếu dùng cách này sẽ cho một số các quan hệ con sau khi chia nhỏ như:
R1 = (A, B), R2 = (A, C), …
Chia quan hệ theo chiều ngang ta được các quan hệ con mà mỗi quan hệ con đó chứa một số bộ (hàng hay dòng) của quan hệ gốc – gọi là phân mảnh ngang.
Ví dụ 2:
Cho quan hệ R1 = (SBD, HoTen, NgaySinh) 101 Lê Thanh Vân 01/01/2010 102 Vũ Tuấn Anh 12/5/2000 103 Vũ Ngọc Văn 05/6/1999
Nếu dùng cách phân mảnh theo chiều ngang ta có thể thu được những
quan hệ con R11, R12 của quan hệ R1như sau:
R11 = (SBD, HoTen, NgaySinh) 101 Lê Thanh Vân 01/01/2010 102 Vũ Tuấn Anh 12/5/2000
R12 = (SBD, HoTen, NgaySinh) 101 Lê Thanh Vân 01/01/2010 103 Vũ NgọcVăn 05/6/1999
Ngoài ra còn có khả năng hỗn hợp, đó là phân mảnh kết hợp hai cách phân mảnh ngang và phân mảnh dọc. Tuy nhiên tùy vào bài toán cụ thể mà ta chon cách áp dụng phân mảnh phù hợp.
2.2.3. Phân mảnh
Giả sử ta có các quan hệ Truong được thể hiện dữ liệu qua bảng 2.2
MaTruong TenTruong SoLop
DH0112 THPT Định Hóa 45
DH0213 THPT Bình Yên 30
TP1023 THPT Khánh Hòa 35
Bảng 2.2. Truong
Mahs HoDem Ten NgaySinh GioiTinh MaTruong
A00011 Lê văn An 10/06/1995 Nam DH12
B00415 Vũ Hồng Gấm 01/02/1995 Nữ DH13 H00111 Vi Thùy Linh 02/03/1996 Nữ TP10
Bảng 2.3. Hocsinh
Mamon TenMon SoTiet
To1 Toán 3
Va2 Văn 2
An3 Anh 2
Mahs MaMon Diem
A00011 To1 8
B00415 V2 7
H00111 A3 9.5
Bảng 2.5.Diemthi
Và mối liên hệ giữa các quan hệ trên được thể hiện qua hình 2.2 sau:
2.2.3.1 Phân mảnh ngang
Phân mảnh ngang chia một quan hệ thành một nhóm các bộ và vì vậy mỗi
mảnh là một quan hệ con của quan hệ đã cho. Có hai loại phân mảnh ngang:
+ Phân mảnh ngang nguyên thủy – đó là việc phân mảnh một quan hệ
dựa trên các mệnh đề đã được định nghĩa trên quan hệ đó.
+ Phân mảnh ngang dẫn xuất – là phân mảnh một quan hệ dựa trên các mệnh đề được định nghĩa trên một quan hệ khác.
* Câu lệnh SQL để phân mảnh ngang:
SELECT * FROM R
WHERE <Mệnh đề hội sơ cấp> Trong đó:
Hình 2.2. Mối liên hệ giữa các quan hệ
* Phân mảnh ngang nguyên thủy:
Phân mảnh ngang nguyên thủy của một quan hệ dựa trên các vị từ được định nghĩa trên quan hệ đó.
Ví dụ 1: Xét quan hệ Truong (Bảng 2.2)
Ta có thể định nghĩa ra 2 mảnh ngang dựa vào số lượng lớp học của
Truong so với 35
Truong1 = Truong(Lop >= 35) Truong2 = Truong(Lop < 35) Quan hệ Truong1 thể hiện qua bảng 2.6:
MaTruong TenTruong SoLop DH0112 THPT Định Hóa 45
TP1023 THPT Khánh Hòa 35
Bảng 2.6. Truong1
MaTruong, TenTruong, SoLop
Mahs, HoDem, Ten, NgaySinh,GioiTinh, MaTruong MaMon, TenMon,SoTiet
HocSinh MonHoc
Truong
L1
Mahs, MaMon, Diem L2
Quan hệ Truong2 thể hiện qua bảng 2.7:
MaTruong TenTruong SoLop DH0213 THPT Bình Yên 30
Bảng 2.7. Truong2
Phân mảnh ngang nguyên thủy được định nghĩa bằng một phép chọn trên quan hệ R, vì thế cho biết quan hệ R thì các mảnh ngang của R là các Ri trong
đó Ri = R(Ei), với Ei là công thức chọn (hội sơ cấp) được sử dụng để có được
mảnh Ri.
Một mảnh ngang Ri của quan hệ R có chứa tất cả các bộ của R thỏa vị từ
hội sơ cấp. Vì vậy cho một tập các vị từ hội sơ cấp, số lượng các mảnh ngang
cũng bằng số lượng các vị từ hội sơ cấp. Tập mảnh ngang này thường được
gọi là tập các mảnh hội sơ cấp.
Việc đầu tiên của phân mảnh ngang là phải xác định tập các vị từ đơn
giản sẽ tạo ra các vị từ hội sơ cấp. Tập vị từ này nói chung phụ thuộc vào mục
tiêu và yêu cầu của từng bài toán cụ thể.
* Phân mảnh ngang dẫn xuất:
Phân mảnh ngang dẫn xuất dựa trên các vị từ được định nghĩa trên quan hệ khác, để định nghĩa quan hệ khác người ta thường dùng mô hình thực thể - liên hệ vì trong mô hình này các mối quan hệ được biểu diễn bằng các đường
nối có hướng giữa các quan hệ có mối liên hệ với nhau.
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
một đườ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, các mảnh ngang dẫn xuất của R được định nghĩa là: Ri = R Si, 1 i w
Trong đó w là số lượng các mảnh được định nghĩa trên R và S1 = S(Ei) và Ei là công thức định nghĩa mảnh ngang nguyên thủy Si.
Ví dụ 2:
Xét quan hệ Hocsinh ở bảng 2.2 và căn cứ vào mối liên hệ giữa các bảng ở hình 2.1 ta có thể phân mảnh dẫn xuất quan hệ Hocsinh thành nhóm các học
sinh thuộc các trường có số lượng lớp lớn hơn hoặc bằng 35 và nhóm các học
sinh thuộc các trường có số lượng lớp nhỏ hơn 35.
Hocsinh1 = Hocsinh Truong1
Hocsinh2 = Hocsinh Truong2 Trong đó: Truong1 = Truong(Lop >= 35)
Truong2 = Truong(Lop < 35)
Kết quả phân mảnh ngang dẫn xuất quan hệ Hocsinh ta được quan hệ
Hocsinh1 và quan hệ Hocsinh2, dữ liệu được thể hiện qua bảng 2.8, 2.9:
Mahs HoDem Ten NgaySinh GioiTinh MaTruong A00011 Lê Thị văn An 10/06/1995 Nam DH0112 H00111 Vi Thùy Linh 02/03/1996 Nữ TP1023
Bảng 2.8. Hocsinh1
Mahs HoDem Ten NgaySinh GioiTinh MaTruong
B00415 Vũ Hồng Gấm 01/02/1995 Nữ DH0213 Bảng 2.9. Hocsinh2
* Muốn thực hiện phân mảnh ngang dẫn xuất chúng ta cần các thông tin:
+ Tập các phân hoạch của quan hệ chủ nhân;
+ Quan hệ thành viên;
+ Tập các vị từ nối giữa quan hệ chủ nhân và quan hệ thành viên.
2.2.3.2. Phân mảnh dọc
Phân mảnh dọc của một quan hệ r trên tập các thuộc tính R sinh ra các
mảnh r1, r2, …, rn, mỗi mảnh chứa một tập con của R và cả khóa của r. Mục đích của việc 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. Vì có khi có nhiều ứng dụng chỉ chạy trên một mảnh nhỏ nào
đó. Như vậy một mảnh tối ưu là một 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 có thể nói phức tạp hơn phân mảnh ngang do tổng số
chọn lựa có thể có của nó rất lớn. Vì vậy để tối ưu phân mảnh dọc là phức tạp hơn vì nó còn liên quan đến tập khóa của quan hệ ban đầu, do vậy người ta thường dùng phương pháp khám phá (heuristic).
* Câu lệnh phân mảnh dọc:
SELECT <Tìm thuộc tính không khóa của H>
FROM H WHERE True
Trong đó:
Mệnh đề hội sơ cấp chỉ bao gồm các mệnh đề đơn giản t(Aj)= value hoặc
t(Aj) value mà thôi.
Mệnh đề True là mệnh đề để chọn mảnh hỗn hợp với các thuộc tính
không khóa có các giá trị lặp trong H. Ký hiệu mảnh thu được do câu lệnh
trên là V. Như vậy Cardr(V) 2 vì chúng ta đang phân mảnh trên giá trị lặp. Để mảnh hỗn hợp V thu được ở trên là là một quan hệ thì ta phải bổ sung
thêm khóa của H, nghĩa là HV = KeyH V
Ví dụ 3:
Xét quan hệ Monhoc ở bảng 2.3, ta có thể phân mảnh dọc thành quan hệ Monhoc1 = (MaMon, TenMon) thể hiện qua bảng 2.10:
MaMon TenMon To1 Toán Va2 Văn An3 Anh Bảng 2.10.Monhoc1 2.2.3.3. Phân mảnh hỗn hợp
Trong nhiều trường hợp, phân mảng ngang hay phân mảnh dọc đơn
thuần cho một lược đồ CSDL là không đủ đáp ứng yêu cầu của các ứng dụng. Trong trường hợp đó phân mảnh dọc có thể thực hiện sau một số mảnh ngang
hoặc ngược lại, sinh ra một lối phân hoạch có cấu trúc cây. Bởi vì hai chiến lược này được áp dụng lần lượt, chọn lựa này được gọi là phân mảnh hỗn hợp
(mô tả bởi hình 1.4, 1.5 sau).
Số mức lồng ghép có thể khá lớn nhưng chắc chắn là hữu hạn. Trong trường hợp phân mảnh ngang, quá trình này sẽ ngừng khi mỗi mảnh chỉ còn một bộ, và điểm ngừng cho phân hoạch là một thuộc tính mỗi mảnh. Tuy
nhiên những hạn chế đều có vẻ quá lý thuyết bởi vì các mức lồng trong phần
toàn cục được chuẩn hoá đều có các bậc nhỏ và không thể thực hiện phân
mảnh quá nhiều trước khi chi phí nối trở nên quá cao.
Chúng ta không thảo luận chi tiết về tính đúng đắn và các điều kiện cho
phân mảnh hỗn hợp bởi vì tự nhiên là chúng tuân theo những yêu cầu của các
phân mảnh ngang và dọc. Ví dụ để tái thiết lại quan hệ toàn cục trong trường
hợp phân mảnh hỗn hợp, người ta bắt đầu tại các nút lá của cây phân hoạch và di chuyển lên trên bằng cách thực hiện các phép nối và hợp (Hình 1.5). Phân mảnh sẽ đầy đủ nếu các mảnh lá và mảnh trung gian đầy đủ. Tương tự, tính
tách biệt được bảo đảm nếu các mảnh lá và trung gian là tách biệt.
Hai bộ giá trị bất kỳ ts(K, A) và tx(K, A) khác nhau hoàn toàn trong R(K, A) nhưng có thể chỉ để mô tả một thực thể trong thực tế. Tuy nhiên khi ts(Aj) tx(Aj) với j mà hai bộ này chỉ để mô tả một thực thể trong thực tế thì rất ít
xảy ra, nên việc thẩm định cho tất cả các giá trị của bộ giá trị sẽ ít hiệu quả,
chi phí cao. Trong khuôn khổ đề tài này tôi chỉ thực hiện thẩm định với các
bộ được nhân bản ở một số hay toàn bộ thuộc tính không khoá, tức là chỉ
thẩm định tập các bộ ts(K,A) chứa ts(HV), trong đó V A, Cardr(HV) 2.
Để có tập {ts(HV)} và HV chúng cần phân mảnh hỗn hợp tiến hành phân mảnh trên các giá trị lặp của các thuộc tính trong cơ sở dữ liệu quan hệ R(K, A).
Ví dụ 4:
Xét quan hệ Monhoc ở bảng 2.3 ta có thể phân mảnh hỗn hợp quan hệ Monhoc để được một mảnh là Monhoc3 chỉ gồm mã môn (Mamon) và số tiết
học trên tuần (Sotiet) của môn học có số tiết học trên tuần lơn hơn 2 được thể
hiện qua bảng 2.11:
MaMon SoTiet
To1 3
Bảng 2.11.Monhoc2