Chào bạn Trường, sao ma trận AA tôi làm hoàn toàn khác của bạn nên chúng ta cần phải xem lại coi ai sai, tôi có post bài của tôi lên diễn đàn rồi
cac ban xem thu ket qua bai giai cua minh, chi tiet xem trong file bai giai
Phân mảnh dọc (Vertical Fragmentation)
use A1 A2 A3 A4
q1 0 1 1 0
q2 1 1 1 0
q3 1 0 0 1
q4 0 0 1 0
acc S1 S2 S3
q1 10 20 0
q2 5 0 10
q3 0 35 5
q4 0 10 0
- ma tran AA
AA A1 A2 A3 A4
A1 55 15 15 40
A2 15 15 45 0
A3 15 45 55 0
A4 40 0 0 40
2. ma tran CA
CA A4 A1 A3 A2
A4 40 40 0 0
A1 40 55 15 15
A3 0 15 55 45
A2 0 15 45 45
-
DIEM CHIa
® Chọn phương án chia 2. Tức là chia thành mảnh {A1,A4} và {A3,A2}
chao ban N.Anh
cach tinh diem chia TA={A4,A1}, BA={A3,A2}
TQ = {q3} (TQ gồm những truy vấn q mà có AQ(q) là “con” của TA)
q3 truy van {A4,A1}
BQ = { q1,q4 } (BQ gồm những truy vấn q mà có AQ(q) là “con” của BA)
q1 truy van {A3,A2}, q4 truy van A3 nen phai tinh vao
OQ = {q2} (OQ gồm những truy vấn q còn lại của Q.)
chi co q2 truy van ca TA va BA
Chào các bạn,
Các bạn xem file bài giải ví dụ của thầy Phúc nhé.
Thanks,
T.Hải
Chào các bạn
Không biết bạn Trường tính như thế nào mà sao kết quả ma trận AA ra khác với tôi. Cách tính tính ma trận ái lực thuộc tính AA của tôi như sau. Mong các bạn cho ý kiến
- Về công thức tính các phần tử của ma trận ái lực thuộc tính AA là tính độ đo ái lực
aff(Ai,Aj) như sau:
- Ma trận AA là ma trận đối xứng nên ta chỉ cần tính các phần tử của ma trận tam giác trên.
- aff(Ai,Aj) = Tổng các truy vấn qi cùng truy cập đến các thuộc tính Ai và Aj của Tổng các tần số truy cập của truy vấn đó tại tất cả các sites
-------A1---------A2------A3----------A4
A1----q2, q3-----q2------q2-----------q3
A2----q2---------q1,q2—q1,q2-------0
A3----q2---------q1,q2—q1,q2,q4----0
A4----q3----------0--------0 ----------q3
(dấu - tượng trưng cho khoảng trắng)
- Sau đó thay các qi bằng tổng các tần số truy cập của nó tại các sites là có được ma trận AA.
- Dựa vào ma trận acc ta có tổng: acc(q1)=30; acc(q2)=15; acc(q3)=40; acc(q4)=10
- suy ra ma trận AA:
------A1------A2-------A3-------A4
A1—55------15-------15--------40
A2—15------45-------45--------0
A3—15------45-------55--------0
A4—40------0---------0---------40
Bạn trường có thể giải thích chi tiết cách tính của bạn được không?.
Thanks,
T.Hải
Chào các bạn,
Trong file giải thích chi tiết của bạn Trường có công thức tính độ ái lực thuộc tính giữa hai thuộc tính là đúng
aff(Ai , Aj) = ∑ all queries that access Ai and Aj (query access)
Nhưng cách bạn Trường đặt vào ma trận AA thì tôi không hiểu
Mong Trường và các bạn giải thích giúp.
Thanks,
T.Hải
Chào bạn Trường,
Rất cảm ơn bạn đã giải thích chi tiết cách tính ma trận AA
Nhưng theo cách tính của bạn thì không giống như cách tính của thầy Phúc khi làm trên lớp.
Không biết các bạn khác thì như thế nào…
Thanks,
T.Hải
Bài giải
-
Ma trận AA:
-----A1—A2—A3–A4
A1–55—15—15—40
A2–15—45—45—0
A3–15—45—55—0
A4–40—0----0----40
-
Tính ma trận CA
đặt A1 trước A2
-----------A1—A2
-----A1—55–15
CA=A2—15–45
-----A3—15–45
-----A4—40—0
+Chèn thêm A3 có 3 cách:
- chèn A3 trước A1:
tính cont(, A3, A1)=2bond(,A3)+2bond(A3,A1)-2bond(_,A1)=4650
- chèn A3 giữa A1 và A2:
tính cont(A1,A3,A2)=9750 –> max
- chèn A3 sau A2
tính cont(A2,A3,_)=9450
=>chèn A3 vào giữa A1 và A2
----------A1—A3—A2
-----A1—55—15—15
CA=A2—15—45—45
-----A3—15—55—45
-----A4—40—0-----0
+Chèn thêm A4 có 4 cách:
- chèn A4 trước A1:
tính cont(,A4,A1) = 2bond(,A4) + 2bond(A4,A1) - 2bond(_,A1)=7600 –>MAX
- chèn A4 giữa A1 và A3:
tính cont(A1,A4,A3) = 2bond(A1,A4) + 2bond(A4,A3) - 2bond(A1,A3)=4150
- chèn A4 giữa A3 và A2:
tính cont(A3,A4,A2) = 2bond(A3,A4) + 2bond(A4,A2) - 2bond(A3,A2)=-7050
- chèn A4 sau A2:
tính cont(A2,A4,) = 2bond(A2,A4) + 2bond(A4,) - 2bond(A2,_)= 1200
=>chèn A4 vào trước A1
----------A4—A1—A3—A2
-----A1–40—55—15—15
CA=A2–0----15—45—45
-----A3–0----15—55—45
-----A4–40—40—0----0
- Tổ chức lại dòng
---------A4—A1—A3—A2
-----A4–40—40—0----0
-----A1–40—55—15—15
CA=A3–0----15—55—45
-----A2–0----15—45—45
- Chưa làm
Trên đây là bài giải của tôi, mong các bạn đóng góp ý kiến.
Thanks,
Chào a Trường và các anh chị!
Bài tập về nhà của thầy cho, mình tính ra MT AA với kết quả khác hoàn toàn với bài của a Trường up lên.
Theo slide bài giảng của thầy Phúc, để tính AFF(Ai,Aj), ta sẽ xét trong ma trân USE, xem dòng q nào có chứa cả Ai và Aj, sau đó ta tổng các dòng q đó trong ma trận ACC. chẳng hạn tính AFF(A1,A1), ta thấy trong ma trận USE có 2 dòng chứa A1 là dòng q2 và q3, vậy:
AFF(A1,A1)= (51+101) + (351+51) = 55.
tương tự cho các Ai,Aj khác, và kết quả MTAA của mình tính được là:
A1 A2 A3 A4
A1 55 15 15 40
A2 15 45 45 0
A3 15 45 55 0
A4 40 0 0 40
1/ Bài Ms.Hồng giải đúng rồi các bạn ạ, tuy có phần phải ghi chú như vậy mới dễ hiểu:
CTQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng chỉ truy cập TA
CBQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng chỉ truy cập BA
COQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng truy cập cả TA và BA
2/ Mình có 1 thắc mắc: trong thực tế mình có phân mảnh như vậy được không? vd: A1 là khóa chính thì sao?
Theo mình khi đó phải phân mảnh như sau: {A1, A4} và {A1, A2, A3}
Chào bạn Hải và Bạn Thu
Cảm ơn ý kiến đóng góp của các bạn rất nhiều.
Khúc mắc chính là ở chỗ tính aff(Ai , Aj). Có thể là do mình hiểu sai lý thuyết nên dẫn đến sai kêt quả với các bạn.
Mình xin trích một đoạn trong slide bài giảng mà bạn Thu đã post lên diễn đàn “Công thức tính aff(Ai, Aj) chỉ xuất hiện các ứng dụng q mà cả Ai và Aj đều sử dụng” (trang 29 - Giáo trình CSDL 2 - Đại học Thái Nguyên).
Trở lại ví dụ trong slide bài giảng của thầy Phúc, các truy vấn q trong ma trận usage sử dụng Ai và Aj là duy nhất, không có trường hợp nhiều q cùng sử dụng Ai và Aj. Cũng trong slide này trang 45, thầy có ghi công thức tính aff tổng quát, theo mình nghĩ nó bao gồm trường hợp mình đang muốn nói.
Vì vậy, bài giải của mình có kết quả khác các bạn.
Tính aff(A2, A3) : theo mình nghĩ có q1, q2 cùng sử dụng A2, A3 nên mình có kết quả là 45.
Tính aff(A3) : theo mình nghĩ có q1, q2, q4 cùng sử dụng A3 nên mình có kết quả là 55( số 80 có thể do mình tính nhầm các bạn vui lòng sửa lại )
Đây là suy nghĩ của mình, có thể là mình hiểu sai lý thuyết (nếu mình sai thì bài giải của các bạn đúng, mình sẽ theo cách giải của các bạn) nhưng cũng chính vì vậy mà diễn đàn trở nên sôi động, có rất nhiều ý kiến tham gia
Thân
VT
Chào các anh chị CH5
Em xin post bài giải phân mảnh dọc <b>(UPDATED)</b> để các anh chị tham khảo.
- Ý kiến với bạn Thanh Điền
Sở dĩ kết quả ma trận AA không giống nhau là do cách tính độ ái lực khác nhau sẽ dẫn đến kết quả khác nhau.
Ví dụ :
Tính độ ái lực của bạn
aff(A2 , A3) = 30
Còn của mình là 45 => vì vậy kết quả ma trận AA khác nhau. Còn cách tính thì giống nhau.
Cảm ơn
VT
<!–QuoteBegin-CH1001021+20 Jun 2011, 11:29 AM–></div><table border=‘0’ align=‘center’ width=‘95%’ cellpadding=‘3’ cellspacing=‘1’><tr><td><b>QUOTE</b> (CH1001021 @ 20 Jun 2011, 11:29 AM)</td></tr><tr><td id=‘QUOTE’><!–QuoteEBegin–> cac ban xem thu ket qua bai giai cua minh, chi tiet xem trong file bai giai
Phân mảnh dọc (Vertical Fragmentation)
use A1 A2 A3 A4
q1 0 1 1 0
q2 1 1 1 0
q3 1 0 0 1
q4 0 0 1 0
acc S1 S2 S3
q1 10 20 0
q2 5 0 10
q3 0 35 5
q4 0 10 0
- ma tran AA
AA A1 A2 A3 A4
A1 55 15 15 40
A2 15 15 45 0
A3 15 45 55 0
A4 40 0 0 40
2. ma tran CA
CA A4 A1 A3 A2
A4 40 40 0 0
A1 40 55 15 15
A3 0 15 55 45
A2 0 15 45 45
-
DIEM CHIa
® Chọn phương án chia 2. Tức là chia thành mảnh {A1,A4} và {A3,A2} <!–QuoteEnd–> </td></tr></table><div class=‘postcolor’> <!–QuoteEEnd–>
Chào các anh chị CH5
Cách giải của bạn Hồng Hà rất tốt, mình sẽ theo cách giải này. Các anh chị có ý kiến khác về cách giải của bạn Hà không ?
Thân
VT
<!–QuoteBegin-CH1001024+19 Jun 2011, 08:47 PM–></div><table border=‘0’ align=‘center’ width=‘95%’ cellpadding=‘3’ cellspacing=‘1’><tr><td><b>QUOTE</b> (CH1001024 @ 19 Jun 2011, 08:47 PM)</td></tr><tr><td id=‘QUOTE’><!–QuoteEBegin–> Chào các bạn
Không biết bạn Trường tính như thế nào mà sao kết quả ma trận AA ra khác với tôi. Cách tính tính ma trận ái lực thuộc tính AA của tôi như sau. Mong các bạn cho ý kiến
- Về công thức tính các phần tử của ma trận ái lực thuộc tính AA là tính độ đo ái lực
aff(Ai,Aj) như sau:
- Ma trận AA là ma trận đối xứng nên ta chỉ cần tính các phần tử của ma trận tam giác trên.
- aff(Ai,Aj) = Tổng các truy vấn qi cùng truy cập đến các thuộc tính Ai và Aj của Tổng các tần số truy cập của truy vấn đó tại tất cả các sites
-------A1---------A2------A3----------A4
A1----q2, q3-----q2------q2-----------q3
A2----q2---------q1,q2—q1,q2-------0
A3----q2---------q1,q2—q1,q2,q4----0
A4----q3----------0--------0 ----------q3
(dấu - tượng trưng cho khoảng trắng)
- Sau đó thay các qi bằng tổng các tần số truy cập của nó tại các sites là có được ma trận AA.
- Dựa vào ma trận acc ta có: q1=30; q2=15;q3=40;q4=10
- suy ra ma trận AA:
------A1------A2-------A3-------A4
A1—55------15-------15--------40
A2—15------45-------45--------0
A3—15------45-------55--------0
A4—40------0---------0---------40
Bạn trường có thể giải thích chi tiết cách tính của bạn được không?.
Thanks,
T.Hải <!–QuoteEnd–> </td></tr></table><div class=‘postcolor’> <!–QuoteEEnd–>
Chào bạn Hải
Mình gởi bạn phần giải thích của mình, bạn có thể góp ý cho mình thêm.
Cảm ơn
VT
<!–QuoteBegin-CH1001075+22 Jun 2011, 12:17 AM–></div><table border=‘0’ align=‘center’ width=‘95%’ cellpadding=‘3’ cellspacing=‘1’><tr><td><b>QUOTE</b> (CH1001075 @ 22 Jun 2011, 12:17 AM)</td></tr><tr><td id=‘QUOTE’><!–QuoteEBegin–> 1/ Bài Ms.Hồng giải đúng rồi các bạn ạ, tuy có phần phải ghi chú như vậy mới dễ hiểu:
CTQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng chỉ truy cập TA
CBQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng chỉ truy cập BA
COQ = tổng số các truy cập đến các thuộc tính bởi ứng dụng truy cập cả TA và BA
2/ Mình có 1 thắc mắc: trong thực tế mình có phân mảnh như vậy được không? vd: A1 là khóa chính thì sao?
Theo mình khi đó phải phân mảnh như sau: {A1, A4} và {A1, A2, A3} <!–QuoteEnd–></td></tr></table><div class=‘postcolor’><!–QuoteEEnd–>
Chào Mr Thiện
Em cũng nghĩ giống như anh là chúng ta sẽ đưa khóa vào từng mảnh.
Tham khảo file đính kèm
Thân
VT
<!–QuoteBegin-CH1001058+22 Jun 2011, 07:49 AM–></div><table border=‘0’ align=‘center’ width=‘95%’ cellpadding=‘3’ cellspacing=‘1’><tr><td><b>QUOTE</b> (CH1001058 @ 22 Jun 2011, 07:49 AM)</td></tr><tr><td id=‘QUOTE’><!–QuoteEBegin–> Chào a Trường và các anh chị!
Bài tập về nhà của thầy cho, mình tính ra MT AA với kết quả khác hoàn toàn với bài của a Trường up lên.
Theo slide bài giảng của thầy Phúc, để tính AFF(Ai,Aj), ta sẽ xét trong ma trân USE, xem dòng q nào có chứa cả Ai và Aj, sau đó ta tổng các dòng q đó trong ma trận ACC. chẳng hạn tính AFF(A1,A1), ta thấy trong ma trận USE có 2 dòng chứa A1 là dòng q2 và q3, vậy:
AFF(A1,A1)= (51+101) + (351+51) = 55.
tương tự cho các Ai,Aj khác, và kết quả MTAA của mình tính được là:
? ? ? ?
? ? ? ? A1? ? A2? ? A3? A4
A1 55 15 15 40
A2 15 45 45 0
A3 15 45 55 0
A4 40 0 0 40 <!–QuoteEnd–></td></tr></table><div class=‘postcolor’><!–QuoteEEnd–>
Chào Phong
Kết quả không đúng do lúc đầu Trường hiểu sai lý thuyết và các bạn đã giúp mình tìm ra điểm sai.
Mình đã upload bài giải mới nhất rồi, cách làm của bạn kết quả là đúng. Hoặc bạn có thể tham khảo bài giải của bạn Hồng Hà làm chuẩn (cũng trong topic này).
Thân
VT
Chào thầy Phúc và các anh chị CH5
Em xin post bài giải phân mảnh dọc để thầy và các anh chị góp ý thêm.
Cảm ơn
VT
<!–QuoteBegin-CH1001012+19 Jun 2011, 11:39 AM–></div><table border=‘0’ align=‘center’ width=‘95%’ cellpadding=‘3’ cellspacing=‘1’><tr><td><b>QUOTE</b> (CH1001012 @ 19 Jun 2011, 11:39 AM)</td></tr><tr><td id=‘QUOTE’><!–QuoteEBegin–> Chào bạn Trường, sao ma trận AA tôi làm hoàn toàn khác của bạn nên chúng ta cần phải xem lại coi ai sai, tôi có post bài của tôi lên diễn đàn rồi <!–QuoteEnd–> </td></tr></table><div class=‘postcolor’> <!–QuoteEEnd–>
Chào Điền
Sao không thấy bài của bạn vậy. Bạn vui lòng post lại để mình xem với.
VT