Các kiểu phân mảnh

Một phần của tài liệu Loại bỏ các mẫu tin nhân bản thừa trong cơ sở dữ liệu quan hệ (Trang 51 - 61)

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

Một phần của tài liệu Loại bỏ các mẫu tin nhân bản thừa trong cơ sở dữ liệu quan hệ (Trang 51 - 61)

Tải bản đầy đủ (PDF)

(79 trang)