Tải bản đầy đủ (.doc) (14 trang)

Bài thi giải quyết bài toán phân mảng dọc

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 (155.18 KB, 14 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HỒ CHÍ MINH
Họ và tên: Đinh Thị Huyền
SBD: 13610017
Lớp: CNTT – K3
• Giải quyết bài toán phân mảng dọc
Đề bài: Cho quan hệ toàn cục Project như sau:
Project(PNo, Name, Location, Budget, MgrName, Duration)
Xét các truy vấn:
q1: Tìm thông tin tên và kinh phí các dự án:
SELECT Name, Budget FROM Project
q2: Xác định thông tin tên, địa điểm và thời gian thực hiện các dự án
SELECT Name, Location, Duration FROM Project
q3: Tìm tất cả các địa điểm dự án theo người quản lý
SELECT Location FROM Project WHERE MgrName = value
q4: Tìm thông tin tên, kinh phí các dự án theo thời gian thực hiện dự án
SELECT Name, Budget FROM Project WHERE Duration = value
Tần số sử dụng các truy vấn qi tại các site Sj như sau:

S1

S2

S3

q1

2

8

0



q2

3

0

1

q3

a

10

0

q4

a

0

5

Trong đó: a – 2 số cuối của mã số sinh viên của học viên
a/ Xây dựng ma trận ái lực của các thuộc tính quan hệ Project;
b/ Cho biết số truy xuất đến các cặp thuộc tính cho mỗi ứng dụng tại các vị trí refi(qj) =
1. Phân đoạn dọc quan hệ Project sử dụng thuật toán năng lượng kết BEA.



BÀI LÀM
Project(PNo, Name, Location, Budget, MgrName, Duration)
Name: A1
Location: A2
Budget: A3
MgrName: A4
Duration: A5
Ma trận Use :

Ma trận tần số truy cập:

A1

A2

A3

A4

A5

q1

1

0

1


0

0

q2

1

1

0

0

q3

0

1

0

q4

1

0

1


S1

S2

S3

q1

2

8

0

1

q2

3

0

1

1

0

q3


17

10

0

0

1

q4

17

0

5

- Ta tính được ma trận AA:


A1

A2

A3

A4

A5


A1

36

4

32

0

26

A2

4

31

0

27

4

A3

32

0


32

0

22

A4

0

27

0

27

0

A5

26

4

22

0

26


Dùng thuật toán năng lượng liên kết để tính ma trận CA:
Xét ma trận AA và ma trận CA sau đây với A1, A2 đã được đặt:
A1

A2

A1

36

4

A2

4

31

A3

32

0

A4

0

27


A5

26

4


Ta cần chèn thêm A3, có 3 khả năng:
1. Chèn A3 trước A1:
A3

A1

A2

A1

32

36

4

A2

0

4


31

A3

32

32

0

A4

0

0

27

A5

22

26

4

Cont (_, A3, A1) =

bound(_, A3) + bound(A3,A1) – bound(_,A1) =
0 + 2748 – 0 = 2748


2. Chèn A3 vào giữa A1, A2:


A1

A3

A2

A1

36

32

4

A2

4

0

31

A3

32


32

0

A4

0

0

27

A5

26

22

4

Cont (A1, A3, A2) =

bound(A1, A3) + bound(A3,A2) – bound(A1,A2) =
2748 + 216 – 372 = 2592

3. Chèn A3 sau A2:
A1

A2


A3

A1

36

4

32

A2

4

31

0

A3

32

0

32

A4

0


27

0

A5

26

4

22

Cont (A2, A3, _) =

bound(A2, A3) + bound(A3,_) – bound(A2,_) =
216 0 – 0 = 216


Ta thấy khả năng thứ nhất cho kết quả lớn nhất  chọn chèn A3 vào trước A1
Ma trận CA sau khi thêm cột A3:
A3

A1

A2

A1

32


36

4

A2

0

4

31

A3

32

32

0

A4

0

0

27

A5


22

26

4

- Tiếp tục chèn thêm A4, có 4 khả năng:
1. Chèn A4 trước A3:
A4

A3

A1

A2

A1

0

32

36

4

A2

27


0

4

31

A3

0

32

32

0

A4

27

0

0

27

A5

0


22

26

4

Cont (_, A4, A3) =

bound(_, A4) + bound(A4,A3) – bound(_,A3) =
0+0+0=0


2. Chèn A4 vào giữa A3, A1:
A3

A4

A1

A2

A1

32

0

36

4


A2

0

27

4

31

A3

32

0

32

0

A4

0

27

0

27


A5

22

0

26

4

Cont (A3, A4, A1) =

bound(A3, A4) + bound(A4,A1) – bound(A3,A1) =
0 + 108 – 2748 = -2640

3. Chèn A4 vào giữa A1, A2:
A3

A1

A4

A2

A1

32

36


0

4

A2

0

4

27

31

A3

32

32

0

0

A4

0

0


27

27

A5

22

26

0

4

Cont (A1, A4, A2) =

bound(A1, A4) + bound(A4,A2) – bound(A1,A2) =
108 + 1566 – 372 = 1302


4. Chèn A4 sau A2:
A3

A1

A2

A4


A1

32

36

4

0

A2

0

4

31

27

A3

32

32

0

0


A4

0

0

27

27

A5

22

26

4

0

Cont (A2, A4, _) =

bound(A2, A4) + bound(A4, _) – bound(A2, _) =
1566 + 0 – 0 = 1566

Ta thấy khả năng thứ 4 cho kết quả lớn nhất  chọn chèn A4 vào sau A2
Ma trận CA sau khi thêm cột A4:


A3


A1

A2

A4

A1

32

36

4

0

A2

0

4

31

27

A3

32


32

0

0

A4

0

0

27

27

A5

22

26

4

0

- Tiếp tục chèn thêm A5, có 5 khả năng:
1. Chèn A5 trước A3:
A5


A3

A1

A2

A4

A1

26

32

36

4

0

A2

4

0

4

31


27

A3

22

32

32

0

0

A4

0

0

0

27

27

A5

26


22

26

4

0

Cont (_, A5, A3) =

bound(_, A5) + bound(A5, A3) – bound(_, A3) =
0 + 2108 – 0 = 2108


2. Chèn A5 vào giữa A3 và A1:
A3

A5

A1

A2

A4

A1

32


26

36

4

0

A2

0

4

4

31

27

A3

32

22

32

0


0

A4

0

0

0

27

27

A5

22

26

26

4

0

Cont (A3, A5, A1) =

bound(A3, A5) + bound(A5, A1) – bound(A3, A1) =
2108 + 2332 – 2748 = 1692


3. Chèn A5 vào giữa A1 và A2:
A3

A1

A5

A2

A4

A1

32

36

26

4

0

A2

0

4


4

31

27

A3

32

32

22

0

0

A4

0

0

0

27

27


A5

22

26

26

4

0

Cont (A1, A5, A2) =

bound(A1, A5) + bound(A5, A2) – bound(A1, A2) =
2332 + 332 – 372 = 2292


4. Chèn A5 vào giữa A2 và A4:
A3

A1

A2

A5

A4

A1


32

36

4

26

0

A2

0

4

31

4

27

A3

32

32

0


22

0

A4

0

0

27

0

27

A5

22

26

4

26

0

Cont (A2, A5, A4) =


bound(A2, A5) + bound(A5, A4) – bound(A2, A4) =
332 + 108 – 1566 = -1126

5. Chèn A5 sau A4:
A3

A1

A2

A4

A5

A1

32

36

4

0

26

A2

0


4

31

27

4

A3

32

32

0

0

22

A4

0

0

27

27


0

A5

22

26

4

0

26

Cont (A4, A5, _) =

bound(A4, A5) + bound(A5, _) – bound(A4, _) =
108 + 0 – 0 = 108


Ta thấy khả năng thứ 3 cho kết quả lớn nhất  chọn chèn A5 vào giữa A1 và A2
Ma trận CA sau khi thêm cột A5:
A3

A1

A5

A2


A4

A3

A1

A5

A2

A4

A1

32

36

26

4

0

A3

32

32


22

0

0

A2

0

4

4

31

27

A1

32

36

26

4

0


A3

32

32

22

0

0

A5

22

26

26

4

0

A4

0

0


0

27

27

A2

0

4

4

31

27

A5

22

26

26

4

0


A4

0

0

0

27

27

 Tổ chức lại dòng:

A3 A1 A5 A2 A4

A3 A1 A5 A2 A4
A3 32 32 22

0

0

A3 32 32 22

0

0


A1 32 36 26

4

0

A1 32 36 26

4

0

A5 22 26 26

4

0

A5 22 26 26

4

0

A2

0

4


4

31 27

A2

0

4

4

31 27

A4

0

0

0

27 27

A4

0

0


0

27 27


VF1

VF2

VF1

VF2

Access VF1 only: 0

Access VF1 only: 10

Access VF1 and VF2: 32

Access VF1 and VF2: 26

Access VF2 only: 31

Access VF2 only: 27

Sq = (0*31) – 32^2 = -1024

sq = (10*27) – 26^2 = -406

A3 A1 A5 A2 A4


A3 A1 A5 A2 A4

A3 32 32 22

0

0

A3 32 32 22

0

0

A1 32 36 26

4

0

A1 32 36 26

4

0

A5 22 26 26

4


0

A5 22 26 26

4

0

A2

0

4

4

31 27

A2

0

4

4

31 27

A4


0

0

0

27 27

A4

0

0

0

27 27


VF1

VF2

VF1

VF2

Access VF1 only: 22


Access VF1 only: 0

Access VF1 and VF2: 4

Access VF1 and VF2: 27

Access VF2 only: 27

Access VF2 only: 0

Sq = (22*27) – 4^2 = 578

sq = 0 – 27^2 = -729



×