Tải bản đầy đủ (.pdf) (26 trang)

Phân rã vấn tin và cục bộ hóa dữ liệu (CSDL 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 (492.57 KB, 26 trang )



CHƯƠNG V
PHÂN RÃ VẤN TIN VÀ CỤC BỘ HOÁ DỮ LIỆU

PGS.NCVC.TS LÊ HUY THẬP

1


n
ENO

1
TITLE

SAL

Elect. Eng.
Syst. Anal.
Mech.Eng
Progammer

40000
34000
27000
24000

1

Quan hệ PAY



E1
E2
E3
E4
E5
E6
E7
E8

ENAME

TITLE

J.Doe
M. Smith
A.Lee
J.Mmith
B.Casey
L.Chu
R.David
J.Jones

Elect. Eng
Syst. Anal
Mech.Eng
Programmer
Syst.Anal
Elect.Eng
Mech.Eng

Syst. Anal

Quan hệ EMP

n

n

ENO

PNO

RESP

DUR

E1
E2
E2
E3
E3
E4
E5
E6
E7
E8

P1
P1
P2

P3
P4
P2
P2
P4
P3
P3

Manager
Analyst
Analyst
Consultant
Engineer
Programmer
Manager
Manager
Engineer
Manager

12
24
6
10
48
18
24
48
36
40


Title- Chuyên môn
SAL: Salary-Lương
Elect. Eng Kỹ sư điện tử
Syst. Anal Nhà phân tích hệ thống
Mech.Eng Kỹ sư cơ khí
Programmer Lập trình viên
EMP: Employee-Nhân viê
PAY: Payment- Trả lương
Proj: Project-Dự án
ASG: assignment-Phân nhiệm
Resp: responsibility-Trách nhiệm
Manager: Người quản lý
Analyst: Nhà phân tích
Consultant: Tư vấn
Budget: Ngân sách

1
PNO

PNAME

BUDGET

LOC

P1
P2
P3
P4


Instrumentation
Dabatase Develop
CAD/ CAM
Maintenance

150000
135000
250000
310000

Montreal
New York
New York
Paris

Quan hệ PROJ

Quan hệ ASG

2


n
MaNV

1
TrinhDoCM

Luong


Kỹ sư điện
Phân tích và thiết kế hệ thống
Kỹ sư cơ khí
Lập trình viên

4000
3400
2700
2400

NV1
NV2
NV3
NV4
NV5
NV6
NV7
NV8

Quan hệ TraLuong

TenNV

TrinhDoCM

Nguyễn Văn Bổng
Lê Hồng Ngoc
Hoàng Trung Mã
Trịnh Kim Thanh
Ngô Đình Vinh

Trần Mỹ Lệ
Lê Hồng Hạnh
Nguyễn Trường Tam

Kỹ sư điện
Phân tích và thiết kế hệ thống
Kỹ sư cơ khí
Lập trình viên
Phân tích và thiết kế hệ thống
Kỹ sư điện
Kỹ sư cơ khí
Phân tích và thiết kế hệ thống

Quan hệ NhanVien

n

n
MaNV

MaDuAn

ChucVu

ThoiGianLV

NV1
NV2
NV2
NV3

NV3
NV4
NV5
NV6
NV7
NV8

DA1
DA1
DA2
DA3
DA4
DA2
DA2
DA4
DA3
DA3

Giám đốc
Nhân viên phân tích và thiết kế
Nhân viên phân tích và thiết kế
Nhân viên tư vấn
Kỹ sư
Lập trình viên
Giám đốc
Giám đốc
Kỹ sư
Giám đốc

12

24
6
10
48
18
24
48
36
40

1

MaD
uAn

TenDuAn

NganSac
h

ViTri

DA1
DA2
DA3
DA4

Thiết bị đo đạc
Phát triển CSDL
CAD/ CAM

Bảo dưỡng

150000
135000
250000
310000

Hải Phòng
Hà Nội
Hà Nội
TP.Hồ Chí Minh

Quan hệ DuAn

Quan hệ PhanNhiem

3


5.1. PHÂN RÃ VẤN TIN
Chuyển SQL sang AQL. Các vấn tin nhập, xuất đều tham chiếu đến các quan hệ
toàn cục và không dùng đến các thông tin về phân bố dữ liệu ,vì thế phân rã vấn
tin trong hệ tập trung lẫn phân tán đều giống nhau.
Các bước phân rã vấn tin gồm:
• Chuẩn hoá CVT
• Phân tích CVT
• Loại bỏ dư thừa
• Viết lại câu vấn tin
5.1.1. Chuẩn hoá câu vấn tin
Chuẩn hoá CVT, là biến đổi CVT thông thường thành câu vấn tin dạng chuẩn để tiếp

tục xử lý với các ngôn ngữ quan hệ như SQL, biểu đồ quan trọng nhất là đưa
vào các phép toán logic như , , , , , ….
Dạng chuẩn hội, là hội của các tuyển có dạng:
(p11  p12  …  p1n)  … (pm1  pm2  …  pnm)
Dạng chuẩn tuyển, là tuyển của các hội có dạng.
Ví dụ: (p11  p12  …  p1n)  … (pm1  pm2  …  pmn)
Trong đó : p## là vị từ đơn giản .
4


Ví dụ 5-1.
“Tìm tên các nhân viên đang làm ở dự án P1 trong 12 hoặc 24 tháng?”
Dạng SQL như sau:
SELECT ENAME FROM EMP, ASG
WHERE
EMP.ENO=AGS.ENO AND ASG.PNO=“P1” AND DUR=2 OR DUR=24

Thì AQL dạng chuẩn hội là:
(EMP.ENO=ASG.ENO)(ASG.PNO=“P1”)  ((DUR=12) (DUR=24))
Dạng chuẩn tuyển AQL là:
((EMP.ENO =ASG.ENO)(ASG.PNO = “P1”)(DUR=12))
v ((EMP.ENO =ASG.ENO)(ASG.PNO = “P1”)(DUR=24))
5.1.2. Phân tích câu vấn tin
Phân tích câu vấn tin để bỏ đi các câu vấn tin đã chuẩn hoá nhưng không thể tiếp tục
xử lý được hoặc thừa. Những lý do chính là do chúng sai kiểu hoặc sai nghĩa. Khi phát
hiện sai, hệ thống đưa ra thông báo. Ngược lại xừ lý vấn tin sẽ được tiếp tục.
Câu vấn tin sai kiểu
Một câu vấn tin gọi là sai kiểu, nếu nó có một thuộc tính hoặc tên quan hệ chưa được
khai báo trong lược đồ toàn cục, hoặc phép toán cho các thuộc tính có kiểu không thích
hợp. Các khai báo kiểu là một bộ phận của lược đồ toàn cục (không nằm trong câu vấn

tin, vì câu vấn tin không tạo ra kiểu dữ liệu mới).
5


Ví dụ 5-2.
Cho câu vấn tin SQL
SELECT E#
FROM EMP
WHERE ENAME > 200
Sai kiểu vì:
Thuộc tính E# chưa được khai báo (trong lược đồ quan hệ) và phép so sánh ENAME >
200 không phù hợp (chuỗi s.sánh với số)
Câu vấn tin sai nghĩa
Câu vấn tin gọi là sai nghĩa nếu các thành phần của nó không tham gia vào việc tạo ra
kết quả.
Ví dụ 5-3
’’Tìm tên và nhiệm vụ (RESP) của các lập trình viên (programmer) đã làm việc cho dự án
CAD/CAM trong hơn ba năm?”
Câu SQL như sau :
SELECT EMANE , RESP FROM EMP, ASG , PROJ WHERE EMP.ENO=ASG.ENO
AND ASG.PNO=PROJ.PNO AND PNAME=“CAD/CAM” AND DUR36 AND TITLE=
“Programmer”

6


Đồ thị vấn tin của câu lệnh trên là
DUR36
ASG
EMP.ENO =

ASG.ENO
TITLE =
“Programmer”

ASG.PNO = PROJ.PNO
EMP.ENO =
ASG.ENO

EMP
RESP

RESUL
T

ASG.PNO =
PROJ.PNO

PROJ
EM
P

ENAM
E

AS
G

PNAME = “CAD/CAM”

PR

OJ

Hình 5-1b. Đồ thị nối
của 5-1a

Hình 5-1a. Đồ thị
vấn tin
Ví dụ 5-4
Xét SQL sau:
SELECT ENAME , RESP FROM EMP, ASG , PROJ
WHERE EMP.ENO =ASG.ENO AND PNAME=”CAD/CAM”
AND DUR >=36 AND TITLE = “PROGRAM”

Đồ thị vấn tin ở hình 5-2 là đồ thị vấn tin không liên thông
7


DUR36
EMP.ENO = ASG.ENO

TITLE = “Programmer”

EMP

ENAME

ASG

RESP


RESULT

PROJ

PNAME = “CAD/CAM”

Hình 5-2 Đồ thị vấn tin không liên thông
NHẬN XÉT





Dựa vào đồ thị vấn tin ta thấy nó không liên thông, câu vấn tin có thể sai. Ba trường
hợp có thể làm:
i. Loại bỏ ngay câu vấn tin.
ii. Giả định có một tích Descartes giữa quan hệ ASG và PROJ .
iii. Bổ sung thêm nối ASG.PNO =PROJ.PNO bị thiếu

8


5.1.3 Loại bỏ dư thừa
Người ta có thể loại bỏ vị trí dư thừa khi áp dụng 10 quy tắc sau:
1.
2.
3.
4.
5.


PP
PP
PT
PF
PF







P
P
P
P
F

6.
7.
8.
9.
10.

PT

P  ┐P

P  ┐P


P1  (P1  P2)  P1
P1  (P1  P2)  P1

T
F
T

Ví dụ 5-5
Cho câu vấn tin SQL như sau:
SELECT TITLE
FROM
EMP
WHERE (NOT(TITLE = ”programmer”) AND
(TITLE= ”Programmer” OR TITLE=”Elect.Eng.”) AND
NOT (TITLE= “Elect.Eng.”)) OR
ENAME = “J.Doe”
Đơn giản hoá câu vấn tin trên nhờ 10 quy tắc trên như sau
Đặt
P1 = ‘TITLE = ”programmer” ‘ thì P1 = ‘NOT(TITLE = ”programmer”)
P2= TITLE = ”Elect.Eng”
thì P2 = ‘NOT(TITLE = ” Elect.Eng”)
P3=ENAME = ”J.Doe”
Thì AQL là:
(┐P1
(P1 v P2) 
┐P2)) v
P3

 (┐P1(P1v P2)┐P2))vP3
9



Theo quy tắc 5:
Vì (┐P1(P1v P2)┐P2)vP3  (┐P1((P1┐P2)v(P2┐P2)))vP3  (┐P1((P1 ┐P2) v
F)) v P3 (┐P1P1 ┐P2)) v P3  P3.
Như vậy câu vấn tin SQL trên chỉ đơn giản như sau:
SELECT TITLE
FROM
EMP
WHERE OR ENAME = “J.Doe”
5.1.4. Viết lại câu vấn tin
Viết lại câu vấn tin bằng đại số quan hệ gồm hai bước:
i/ Biến đổi câu vấn tin SQL thành AQL
ii/ Cấu trúc lại câu vấn tin AQL nhằm tăng hiệu năng.
Định nghĩa cây toán tử
Cây toán tử là cây với mỗi nút lá biểu thị cho một quan hệ được lưu trong cơ sở dữ liệu,
nút không phải lá biểu thị quan hệ trung gian được sinh ra bởi phép toán quan hệ. Chuỗi
các phép toán để đi theo hướng lá đến gốc, còn gốc biểu thị kết quả vấn tin.
Cách chuyển câu vấn tin SQL thành cây toán tử:
i. Tạo ra các nút lá là các quan hệ trong SQL sau FROM.
ii. Nút gốc là các thuộc tính sau SELECT là phép chiếu các thuộc tính kết quả.
iii. Vị từ sau WHERE được chuyển thành các phép toán đại số quan hệ thích hợp (phép chọn,
phép nối ,…) đi từ các nút lá đến gốc.
10


Ví dụ 5-6
Câu hỏi: “Tìm tên các nhân viên, trừ J.Doe đã làm
cho dự án CAD/CAM trong 12 hoặc 24
tháng?”. Câu SQL là :

SELECT ENAME {Gốc }
FROM
ASG , EMP , PROJ
WHERE ASG.ENO = EMP.ENO AND ENAME
≠ “J.Doe” AND PROJ.PNAME = “CAD/CAM”
AND (DUR = 12 OR DUR = 24)
Cây toán tử như sau (hình 5-3):
Sáu quy tắc tương đương hay dùng nhất

Cho R(A)‌‌ A={A1, …,An }; S(B) │B = {B1,…,Bn} và T là quan hệ.
i. Tính giao hoán của các phép toán hai ngôi:
Tích Descartes: R  S  S  R
Phép nối R S  SR
ii. Kết hợp của các phép toán hai ngôi:
Tích Descartes:
(R  S)  T  R  (S  T)
Phép nối
(RS) T  R (ST)
11


iii. Luỹ thừa đẳng của phép toán đơn ngôi:
• Những phép chiếu liên tiếp trên cùng một quan hệ được nhóm lại hoặctách ra. Gọi
R(A), A’ A, A” A, A’ A” thì A’(A’’(R))  A’( R)


Những phép chọn liên tiếp Pi(Ai) (i=1,2,..) trên cùng một quan hệ có thể nhóm lại thành
phép chọn qua một hội và ngược lại. Chẳng hạn
P1(A1) (P2(A2)(R))  P1(A1)  P2(A2)(R)


iv. Giao hoán với phép chiếu
A1,…,An (P(Ap)(R))  A1,…,An (P(Ap)(A1,…,An(R)))
v. Giao hoán phép chọn với phép toán 2 ngôi
Phép chọn và tích Descartes: P(Ai)(R  S)  (P(Ai)(R))  S
Chọn và nối :
P(Ai)(RP(Aj,Bk)S)  P(Ai)(R)P(Aj,Bk)S
Chọn và hợp cũng có thể giao hoán nếu R và T có lược đồ giống nhau:
P(Ai)(RT)  P(Ai)(R)  P(Ai)(T)
Chọn và hiệu cũng có thể được giao hoán tương tự.
vi. Giao hoán phép chiếu với phép toán hai ngôi.
Nếu C = A’B’, trong đó A’ A, B’ B; A, B là các tập thuộc tính tương ứng của các quan
hệ R và S, thì: C(R  S)  A’(R)  B’(S)
Chiếu và nối: C(RP(Aj,Bk)S)  A’(R)P(Ai,Bj)B’(S)
Để vế phải đúng, cần phải có Ai  A’, Bj  B’. Bởi vì C = A’B’ nên Ai và Bj  C vì thế
chúng ta không cần chiếu lên C một khi đã chiếu trên A’ và B’.
Chiếu và hợp cũng có thể được giao hoán như sau: C(RS)  C(R)C(S)
Chiếu và hiệu có thể được giao hoán tương tự.
12


Ví dụ, cây ở hình 5–4 tương đương với cây trong hình 5-3.
ENAME
PNAME = ”CAD/CAM”  (DUR=12  DUR=24)  ENAME  ”J.Doe”
 PNO  ENO



EMP

ASG

PROJ

Hình 5–4. Cây toán tử tương đương với cây
hình 5-3
Hình 5–3. Cây toán tử

13


Các quy tắc trên có thể được sử dụng
để cấu trúc lại cây một cách có
hệ thống nhằm loại bỏ các cây
xấu.
Các cách này có thể được sử dụng
bằng 4 cách khác nhau như sau:
1.
Tách các phép toán đơn ngôi,
làm đơn giản hóa biểu thức vấn
tin.
2.
Các phép toán đơn ngôi trên
cùng một quan hệ có thể được
nhóm lại để chỉ cần thực hiện
truy xuất đến quan hệ một lần.
3.
Các phép toán đơn ngôi có thể
giao hoán với các phép toán hai
ngôi để một số phép toán (chẳng
hạn phép chọn) có thể được
thực hiển trước.

4.
Các phép toán hai ngôi có thể
được sắp xếp lại.
Quy tắc cuối cùng được sử dụng rộng
rãi trong kỹ thuật tối ưu vấn tin.

Ví dụ 5-7
Tái cấu trúc cây trong hình
5-3 sinh ra cây ở hình 5-5

14


5.2. CỤC BỘ HOÁ DỮ LIỆU PHÂN TÁN VÀ CÁC PHƯƠNG PHÁP RÚT GỌN CÂU VẤN TIN
Tầng cục bộ hoá dữ liệu sẽ chuyển câu vấn tin đại số “trên quan hệ toàn cục” sang câu vấn
tin đại số “trên các mảnh vật lý”.
Cục bộ hoá sử dụng các thông tin được lưu trong lược đồ phân mảnh.
5.2.1. Rút gọn cho phân mảnh ngang nguyên thuỷ.
Ví dụ 5-8 Quan hệ EMP được tách thành ba mảnh ngang:
EMPH1 = ENO  “E3” (EMP)
EMPH2 = “E3” < ENO  “E6” (EMP)
EMPH3 =  ENO  “E6” (EMP)
Chương trình cục bộ hoá là: EMP = EMPH1  EMPH2  EMPH3
Câu vấn tin gốc thực hiện trên EMP sẽ được thực hiện trên
EMPH1  EMPH2  EMPH3
Rút gọn vấn tin trên các mảnh ngang chủ yếu là xác định xem, sau khi đã tái cấu trúc lại cây
con, cây nào tạo ra quan hệ rỗng thì bỏ cây con đó đi. Vì nếu vị từ chọn mâu thuẫn với vị từ
phân mảnh sẽ sinh ra mảnh rỗng.
Cho quan hệ R được phân mảnh ngang thành RH1, RH2,…, RHn trong đó RHi=Pi(R).
Qui tắc 1:

Cho vị từ chọn pk nếu x  R: nếu (pi(x)  pk(x)) thì  pk(RHj) = 
Chẳng hạn vị từ chọn p= ‘ENO = “E1”’ mâu thuẫn với các vị từ phân mảnh EMPH2 là p2 = ‘
“E3” < ENO  “E6” ‘ và p3 = ‘ENO  “E6” ‘.
15


Ví dụ 5-9
Rút gọn cho phân mảnh ngang khi dùng câu vấn tin mẫu sau:
SELECT *
FROM EMP
WHERE ENO = “E5”
Giải
Chương trình cục bộ hoá là EMP = EMPH1EMPH2EMPH3
Khi hoán vị phép chọn với phép hợp cây vấn tin (hình 5–6a) cho (hình 5–6b).
Dễ dàng phát hiện ra rằng vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh EMPH1 là
(ENO  “E3”) nên EMPH1 =  và vị từ chọn ENO = “E5” mâu thuẫn với vị từ phân mảnh
EMPH3 là (ENO  “E6”) nên EMPH3 = 
Bởi vậy, câu vấn tin
SELECT *
FROM EMP
WHERE ENO = “E5”
bây giờ chỉ cần áp dụng trên EMPH2 (hình 5–6c).

16


5.2.1.2. Rút gọn với phép nối
Qui tắc 2:
Ri
Ví dụ


Rj =  nếu x  Ri, y  Rj: thì (pi(x)  pj(y)) = .T.

EMPH1 = ENO  “E3” (EMP) ;
pEMPH1 = (ENO  “E3”)
EMPH2 = “E3” < ENO  “E6” (EMP) ;
pEMPH2 = (“E3” < ENO  “E6”)
EMPH3 =  ENO  “E6” (EMP) ;
pEMPH3 = (“E6” < ENO)
Vậy thì ( pEMPH1  pEMPH2) = .T.; ( pEMPH1  pEMPH3) = .T. và ( pEMPH2  pEMPH3) = .T.
Ví dụ 5–10
EMPH1 = ENO  “E3” (EMP) ;
pEMPH1 = (ENO  “E3”)
EMPH2 = “E3” < ENO  “E6” (EMP) ;
pEMPH2 = (“E3” < ENO  “E6”)
EMPH3 =  ENO  “E6” (EMP) ;
pEMPH3 = (“E6” < ENO)
và quan hệ ASG được phân mảnh ngang như sau:
ASGH1 = ENO  “E3” (ASG) ;
pASGH1 = (ENO  “E3”)
ASGH2 =  ENO  “E3” (ASG) ; pASGH2 = (ENO  “E3”)
Bây giờ xét câu vấn tin nối
SELECT * FROM EMP, ASG WHERE EMP.ENO = ASG.ENO
Câu vấn tin gốc trong hình 5–7a. Câu vấn tin rút gọn bằng cách phân phối các nối trên
hợp và việc áp dụng qui tắc 2:
17


pEMPH1 pASGH1 = (ENO  “E3”)  (ENO  “E3”) = True.
Vậy EMPH1 nối với ASGH1 có thể cho quan hệ khác rỗng

pEMPH1 pASGH2 = (“E3”  ENO)  (“E3” > ENO) = False.
Vậy EMPH1 nối với ASGH2 cho quan hệ rỗng
pEMPH2 pASGH1 = (“E3” < ENO  “E6”)(ENO“E3”) = False
Vậy EMPH2 nối với ASGH1 cho quan hệ rỗng
pEMPH2 pASGH2 = (“E3” < ENO  “E6”)  (ENO  “E3”) = True
Vậy EMPH2 nối với ASGH2 có thể cho quan hệ khác rỗng
pEMPH3 pASGH1 = (“E6” < ENO)  (ENO  “E3”) = False
Vậy EMPH3 nối với ASGH1 cho quan hệ rỗng
pEMPH3 pASGH2 = (“E6” < ENO)  (ENO  “E3”) = True
Vậy EMPH3 nối với ASGH2 có thể cho quan hệ khác rỗng
Kết quả rút gọn ở hình 5– 7b

18


5.2.2. Rút gọn cho phân mảnh dọc
Mỗi mảnh dọc luôn có mặt của tập khóa chính. Toán tử tái thiết là “nối” qua tập khóa.
Chương trình cục bộ hoá (tái thiết lại quan hệ ban đầu) là “nối” các mảnh dọc.
Ví dụ 5–11
Quan hệ EMP được phân thành hai mảnh dọc EMPV1(ENO , ENAME) và EMPV2(ENO,
TITLE) như sau
EMPV1 = ENO , ENAME(EMP)
EMPV2 = ENO , TITLE(EMP)
Chương trình cục bộ hóa là EMP = EMPV1JENOEMPV2
Nhận xét
Phép chiếu trên một mảnh dọc không có thuộc tính chung với các thuộc tính chiếu (trừ
khóa của quan hệ) sinh ra các quan hệ vô dụng, mặc du không phải là quan hệ rỗng.
Cho trước quan hệ R(A) | A = {A1, …, An} và
được phân mảnh thành các mảnh dọc thành
Ri = A’(R) | A’  A. Ta có qui tắc cần lưu ý

như sau:

Ri

D

K

Qui tắc 3
D,K(Ri) là vô dụng nếu tập các thuộc tính chiếu D
hoặc K hoặc DK không thuộc A’ (hình 58a).

D

K

A’

Hình 5-8a. Phép chiếu vô dụng
19


Ví dụ 5–12.
Hãy tối ưu hóa câu vấn tin SELECT ENAME FROM EMP
Với EMP được phân thành các mảnh dọc EMPV1 và EMPV2
EMPV1 = ENO , ENAME(EMP)
EMPV2 = ENO , TITLE(EMP)
Thấy rằng chương trình cục bộ hóa là EMP = EMPV1
ENOEMPV2.
Câu vấn tin gốc trên EMPV1 ENOEMPV2 được cho trên hình 5–8b, sau khi hoán vị phép

chiếu với phép nối (tức là chiếu trước nối) được cây hình 5–8c, chúng ta thấy
ENAME(EMPV2) là vô dụng vì ENAME không thuộc EMPV2. Vì vậy phép chiếu chỉ cần
thực hiện trên EMPV1 như được trình bày trong hình 5-8d
ENAME

ENAME

ENO

EMPV1
(b) vấn tin gốc

ENAME

ENO

EMPV2

EMPV1
(c) vấn tin gốc

ENAME

EMPV1

EMPV2

(d) vấn tin đã rút gọn

Hình 5–8b,c,d. Rút gọn cho phân mảnh dọc

20


5.2.3. Rút gọn cho phân mảnh dẫn xuất
Ví dụ 5-13
Thấy rằng liên kết từ quan hệ EMP(ENO, ENAME, TITLE) đến quan hệ ASG(ENO,
PNO,RESP, DUR) là 1-n. Gử rằng EMP được phân mảnh ngang như sau :
EMPH1 = TITLE = ” programmer ” (EMP)
EMPH2 = TITLE  ” programmer ” (EMP)
Chương trình cục bộ hoá phân mảnh ngang là hợp của các mảnh của nó. Tức là: EMP =
EMPH1EMPH2. Vậy ASG có thể được phân mảnh gián tiếp (phân mảnh dẫn xuất Der) theo
các qui tắc sau:
ASGDXH1 = ASG Der EMPH1 // Der (Derivative = dẫn xuất)
ASGDXH2 = ASG Der EMPH2
Chương trình cục bộ hoá cho quan hệ phân mảnh ngang ASG là
ASG = ASGDXH1  ASGDXH2
Ví dụ 5-14
Rút gọn theo mảnh dẫn xuất cho câu vấn tin.
SELECT * FROM EMP, ASG WHERE ASG.ENO = EMP.ENO
AND TITLE = “Mech.Eng”
Câu vấn tin gốc được thực thi trên các mảnh EMPH1, EMPH2, ASGH1, ASGH2 đã dịch
nghĩa trước đây được trình bày trong hình 5-9.
21


JENO
TITLE= “Mech.Eng”





ASGH1 ASGH2

EMPH1 EMPH2

Bằng cách giao hoán phép chọn TITLE=
Mech.Eng và phép hợp  của nhánh bên phải
ta được kết quả hình 5.10

hình 5-9. Vấn tin gốc của ví dụ 5.14
JoinENO




TITLE= “Mech.Eng”

ASGH1

ASGH2

EMPH1

EMPH2

Do trong EMPH1 chỉ có các bộ thỏa vị từ
TITLE = ” programmer” không có bộ nào
thỏa mãn TITLE = “Mech.Eng” nên vị từ
chọn mâu thuẫn với vị từ phân mảnh
EMPH1 và vì thế loại bỏ mảnh EMPH1. Kết

quả lọa bỏ được cây ở hình 5-11.

Hình 5-10. Vấn tin đã giao hoán
22


JENO
TITLE= Mech.Eng”



ASGDXH1

Hãy giao hoán phép NỐI và
phép HỢP sẽ được cây trên
hình 5-12.

EMPH2

ASGDXH2

Hình 5-11. Vấn tin sau khi dùng vị từ mâu
thuẫn


JoinENO

ASG DXH1

TITLE= Mech.Eng”


JoinENO

ASGDXH2

TITLE= Mech.Eng”

EMPH2

EMPH2

Cây con bên trái nối hai
mảnh ASGDXH1 , EMPH2 với
các vị từ mâu thuẫn do vị
từ TITLE = “programmer”
trong ASGDXH1 và TITLE 
“programmer” trong
EMPH2. Vì thế chúng ta có
thể loại bỏ nhánh bên trái
và thu được câu vấn tin rút
gọn của hình 5-13.

Hình 5-12. Sau khi giao hoán Hợp và Nối
23


5.2.4. Rút gọn cho phân mảnh hỗn hợp

JoinENO


Tại đây chúng ta chỉ quan tâm đến các câu vấn tin chỉ
có chứa các phép toán chiếu , chọn  và nối Join.
Chú ý rằng tối ưu hóa một phép toán hoặc tổ hợp
của các phép toán luôn đi kèm với việc có thể tăng
chi phí của các phép toán khác. Chẳng hạn như phân
mảnh hỗn hợp dựa trên tổ hợp chọn - chìếu sẽ làm
cho phép chọn hoặc phép chiếu kém hiệu quả hơn so
với phân mảnh ngang - hoặc phân mảnh dọc tương
ứng.

TITLE= Mech.Eng”

ASGH2

EMPH2
Hình 5-13. Rút gọn cho phân
mảnh dẫn xuất

Chương trình cục bộ hóa cho một quan hệ phân mảnh hỗn hợp là tổ của các phép hợp
và nối các mảnh.
R



H

H

R1
V


R11

H

H

R2
V

V

R12

R21

Phân mảnh hỗn hợp

V
R22

V
R23

V

R11

V


R12

V

V

R21

R22

V
R23

Tái thiết các mảnh hỗn hợp
24


Chương trình cục bộ hoá của sơ đồ trên sẽ là: R = (R11 J R12)  (R21 J R22 J R23)
Cách làm:
1. Loại bỏ các quan hệ rỗng được tạo ra bởi các phép chọn mâu thuẫn trên các mảnh
ngang.
2. Loại bỏ các quan hệ vô dụng được tạo ra bởi các phép chiếu trên các mảnh dọc.
3. Phân phối các nối cho các hợp nhằm cô lập và loại bỏ các nối vô dụng.
Ví dụ 5–16
Giả sử ta có phân mảnh hỗn hợp quan hệ EMP như sau:
EMPHH1 = ENO  “E4” (ENO,ENAME(EMP))
EMPHH2 =  ENO  “E4” (ENO,ENAME(EMP))
EMPHH3 = ENO,TITLE(EMP)
ENO,ENAME
Cho câu vấn tin SQL

SELECT ENAME
FROM
EMP
WHERE ENO = “E5”
Cây vấn tin gốc ở hình 5-14
Cây vấn tin gốc ở hình 5-14 có thể
được rút gọn bằng cách đẩy phép chọn
xuống để loại bỏ EMPHH1 vì trong đó
không có “E5” (Xem hình 5-15)

ENO =

“E5”

JENO


EMPHH1

EMPHH3
EMPHH2

Hình 5-14. Cây vấn tin gốc
25


×