giải đề thi cơ sở dữ liệu nâng cao

13 945 6
giải đề thi cơ sở dữ liệu nâng cao

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Q1 ADE / AG MNZ Q2 G DEX Q3 DE YHN Q4 MN VH Q5 HN W Giải đề thi CSDLNC - K16, KHTN. Dưới đây là lời giải mang tính chất tham khảo. Trình bày khá dài dòng, để thể hiện cách làm. (Không phải là cách trình bày trong bài thi). Có gì sai, mong các bạn góp ý nha. Câu 1: 1.1 Xác định tất cả các pth có nguy cơ dẫn đến mâu thuẫn và phân loại chúng. Nháp: Nên vẽ lược đồ ra cho dễ nhìn Bước 1: Xác định các Fi (là các pth được bao trong một quan hệ Qi). Xác định bằng cách nào? o Đối với bài này, đề cho các Fi có được bằng cách chiếu F 0 + lên các Q i + . o Nếu đề bài k nói gì cả, ta phải tìm Fi bằng thuật toán tìm pth được bao, mà cô đã hướng dẫn (giống như bài tập chương 1) - Dùng thuật toán tìm pth được bao (cô đã hướng dẫn, giống bài tập chương 1) F1 = { ADE  MNGZ; G  DE; DE  N; } - Tương tự, ta có: F2 = {G  DEX} F3 = {DE  YHN} F4 = {MN  HV} F5 = {HN  W} Bước 2: Với mỗi fi có dạng X  A, ta lần lượt xét xem nó có phải là pth có nguy cơ không? Bước 2.1: Để làm cho nhanh, ta có thể loại bớt những pth không cần thiết phải xét: đó là những pth mà vế trái hoặc vế phải chứa một thuộc tính nào đó, mà chỉ nằm trong một quan hệ. (bước này làm ngoài giấy nháp thôi) Lưu ý: Trước hết, ta phải tách thành các pth có dạng X  A (nghĩa là VP chỉ có 1 thuộc tính) Ví dụ: Pth ADE  MNGZ (tách thành 4 pth): {ADE  M; ADE  N; ADE  G; ADE  Z} Như vậy, ta sẽ có các pth mà chắc chắn k có nguy cơ (k cần phải xét): - ADE  M (có tt A chỉ thuộc Q1  khỏi xét) - ADE  N - ADE  G - ADE  Z - G  X (có tt X chỉ thuộc Q2) - DE  Y (có tt Y chỉ thuộc Q3) - MN  V (có tt V chỉ thuộc Q4) - HN  W (có tt W chỉ thuộc Q5) Bước 2.2: Với mỗi pth còn lại, xét xem chúng có nhiều hơn 1 CKH tối tiểu phủ hết các thuộc tính của pth không? Nếu có nhiều hơn 1, thì là pth có nguy cơ. Phân loại: Có 2 loại: tuyến tính và phi tuyến. Nếu 1 pth có nhiều hơn 1CKH, và tất cả các CKH đó đều chỉ có 1 quan hệ, thì là tuyến tính, ngược lại là phi tuyến. - Xét G  D: có 2 CKH tối tiểu, chứa {GD}, đó là: o Q1 o Q2  có nguy cơ (tuyến tính, vì 2 CKH này đều có dạng là 1 quan hệ) - Xét G  E: có 2 CKH tối tiểu, chứa {GE}, đó là: o Q1 o Q2  có nguy cơ (tuyến tính) - Xét DE  N: có 2 CKH tối tiểu, chứa {DEN}, đó là: o Q1 o Q3  có nguy cơ (tuyến tính) - Xét DE  H: có 2 CKH tối tiểu, chứa {DEH}, đó là: o Q3 o Q1 |X| Q4  có nguy cơ (phi tuyến, vì có CKH Q1 |X| Q4 chứa 2 quan hệ) - Xét MN  H: có 2 CKH tối tiểu, chứa {MNH}, đó là: o Q4 o Q1 |X| Q3  Có nguy cơ (phi tuyến) Cải tiến lược đồ để giảm số lượng pth có nguy cơ: Đối với những lược đồ quan hệ chưa đạt chuẩn cao, có thể dùng phương pháp phân rã, nhằm vừa nâng cao chất lượng lược đồ về mặt dạng chuẩn, vừa giảm pth có nguy cơ. - Chẳng hạn, ta thấy G  D, G  E là pth có nguy cơ, liên quan đến: o Q1(ADE / AG MNZ) với F1 = {ADE  MNGZ; G  DE; DE  N;} o Q2 (G DEX) với F2 = {G  DEX} - Nhận thấy Q1 mới đạt DC 3 (chưa đạt DC B-C, vì có pth G  DE, DE  N là pth mà có vế trái không phải là siêu khóa) - Vậy ta thử phân ra Q1 xem thế nào: Q1 ADE / AG MNZ Q11 AG MNZ Q12 G DE G D G E 2 pth không còn được bao trong một quan hệ nữa: ADE MNGZ và DE N F12 = { G DE} F11 = { AG MNZ} - Ta nhận thấy, với sự phân rã như trên, Q 11 và Q 12 đều đạt DC BC. Và 2 pth G  D, G  E không còn là pth có nguy cơ nữa. - Q 12 có thể nhập vào Q 2 (G DEX) luôn. - Tuy nhiên, sự phân rã trên không bảo toàn pth, (UF i ) + ≠ (F 0 ) + . Cụ thể, 2 pth ADE  MNGZ và DE  N không còn được bao trong Q11. Do đó, muốn kiểm tra 2 pth này, phải thực hiện kết giữa Q11 và Q12  Nói cách khác, cần một cơ chế ép thỏa ngoại  Vậy nên, cần cân nhắc giữa việc giảm pth có nguy cơ, và tính hiệu quả, tính thuận tiện trong việc kiểm tra pth. (Rõ ràng cơ chế ép thỏa ngoại sẽ tốn chi phí hơn, vì phải thực hiện phép kết) - Các bạn lý luận tương tự với các pth còn lại nhé. 1.2 Nếu tập F0 không có pth G  XDE và lược đồ quan hệ phổ quát không có thuộc tính X - Ban đầu, mình nghĩ khi đó, lược đồ C1 sẽ bỏ hẳn Q2 (GDEX) luôn. Nhưng ngẫm lại, thấy chưa chắc bỏ được Q2, mà có thể Q2 vẫn được giữ lại, và cả 3 thuộc tính GDE cùng nhau tạo thành khóa cho Q2. Tại sao vậy, tại sao k bỏ hẳn luôn Q2 đi cho tiện? Lý do: thử tưởng tượng rằng, người dùng muốn nhập 1 bộ thông tin gồm GDE vào CSDL, nếu k có Q2, họ phải nhập vào đâu? Nhập vào Q1 thì k được, vì muốn nhập Q1, thì phải biết thông tin của thuộc tính A. (vì ADE, AG là khóa). Vậy, câu trả lời của mình là: Có thể lược bỏ Q2 nếu không có nhu cầu nhập thông tin GDE như là một tổ hợp riêng lẻ. Ngược lại, vẫn giữ Q2, và khi đó, GDE sẽ là khóa của Q2. (NX thêm: các bạn để ý trong đề có nói câu: “Nếu có, hãy nêu một cách cụ thể”  Như vậy, có thể hiểu câu này sẽ có nhiều giải pháp) Bây giờ, xét xem số lượng pth có nguy cơ có thay đổi như thế nào? Trong cả 2 tình huống trên, thì pth G  D, G  E không còn nữa. Do đó, vẫn còn 3 pth có nguy cơ: o DE  N o DE  H o MN  H 1.3 Đánh giá tính nhất quán toàn cục theo phương pháp Thể hiện tiêu biểu: A D E G H M N V W X Y Z TQ 1 a d e g h m n x y z a’ d e g h m’ n x y z’ TQ 2 d e g h n x y TQ 3 d e h n y TQ 4 h m n v h’ m’ n v’ TQ 5 h n w h’ n w’ Chúng ta dựa vào F 0 , để thực hiện quy trình thay thế đuổi (chase process): - Nếu quy trình thay thế đuổi kết thúc (kết thúc nghĩa là không có thay đổi gì nữa trên thể hiện tiêu biểu) thì kết luận: Thể hiện hiện tại trong CSDL là nhất quán toàn cục. - Ngược lại, có xảy ra mâu thuẫn trong quá trình chạy, thì kết luận KHÔNG nhất quán toàn cục. Như ở bài này, ta thấy có xảy ra mẫu thuẫn khi áp dụng pth MN  H  Không nhất quán toàn cục 1.4 Sửa bộ (a’degm’nz’) trong TQ1 thành (a’degmnz’): hãy kiểm tra theo phương pháp RBKNSD? Thao tác sửa giống như: xóa đi rồi thêm mới vào. - Xóa đi 1 bộ trong TQ1 thì k vấn đề gì cả. (Nó cũng k bị vi phạm ràng buộc khóa ngoài thông thường,vì nhìn trên sơ đồ, ta thấy không có mũi tên nào đi vào Q1 cả, nghĩa là khóa của Q1 không được tham chiếu ở các bảng khác. - Thêm 1 bộ vào TQ1 thì mới phải lo nghĩ, ta sẽ kt bằng RBKNSD: Bước 1: Gọi qi là bộ cần thêm vào bảng TQi. Ta cần tìm bao đóng của Qi trên F 0 , (Qi) + F0 . Sau đó, kiểm tra xem có bao nhiêu Qj, có thuộc tính nằm trong bao đóng này, Ta có: (Q 1 ) + F0 = ADEGMNZ / X YH V W  Q1, Q2, Q2, Q4, Q5 đều nằm trong bao đóng này. Bước 2: Tìm CKH xuất phát từ Q1, phủ hết các thuộc tính của (Q 1 ) + F0 Ta có CKH là: Q1 |X| Q2 |X| Q3 |X| Q4 |X| Q5 Bước 3: Dựa vào CKH trên, xây dựng bộ mở rộng qi* Ta có: qi* = a’degmnz’ / x yh v w Bước 4: Lần lượt chiếu qi* lên các quan hệ Q j (tìm được ở bước 1), xem thử có tồn tại trong TQ j không? Nếu tồn tại thì OK, nếu k tồn tại thì bị vi phạm RBKNSD. ∏ Q2 (qi*) = gdex ∈ TQ2 ∏ Q3 (qi*) = deyhn ∈ TQ3 ∏ Q4 (qi*) = mnvh ∈ TQ4 ∏ Q5 (qi*) = hnw ∈ TQ5  Không vi phạm RBSNSD  Chấp nhận thao tác sửa. Câu 2: Viết bằng ngôn ngữ tân từ và SQL92 câu truy vấn sau: Danh sách tổ hợp các trị MNH được lưu trong CSDL với M = m’ Giải: Đây là câu truy vấn được phát biểu trên quan hệ phổ quát: ∏ MNH (Q 0 ) = ? (Xem bài báo cáo do a.Nguyễn Xuân Thái trình bày) Bước 1: Với mỗi Qi, tính (Qi) + F0 . Sau đó, kiểm tra xem bao đóng nào chứa “MNH” Ta có: (Q1) + F0 = ADEGMNZ / X YH V W  chứa “MNH” (Q2) + F0 = GDEX / HYN W (Q3) + F0 = DEYHN / W (Q4) + F0 = MNVH / W  chứa “MNH” (Q5) + F0 = HNW Vậy có 2 bao đóng chứa “MNH” Bước 2: Với mỗi bao đóng (Qi) + F0 chứa “MNH” đó, tìm CKH Tối tiểu xuất phát từ Qi, bao phủ được “MNH” Với Q1, ta có Q1 |X| Q3 Với Q4, ta có Q4. Vậy: ∏ MNH (Q 0 ) = ∏ MNH (Q 4 ) U ∏ MNH (Q 1 |X| Q 3 ) Viết bằng Đại số quan hệ: ∏ MNH (σ M = m’ (Q 4 )) U ∏ MNH (σ M = m’ (Q 1 |X| Q 3 )) Viết bằng ngôn ngữ tân từ: Ngôn ngữ tân từ có 2 cách viết: • Viết bằng phép tính quan hệ có biến là bộ (tuple calculus) • Phép tính quan hệ có biến là miền (domain calculus) (Các bạn có thể tham khảo những cách viết này trong sách Giáo trình CSDL, Khoa CNTT, Trường ĐHKHTN, HCM, sách có bán ở nhà sách trước trường) Ban đầu, mình dùng cách viết có biến là bộ, một cách đơn giản, mình viết thế này: {t.M, t.N, t.H | Q 4 (t) ∧ t.M = m’} ∨ {t 1 .M, t 1 .N, t 3 .H | Q 1 (t 1 ) ∧ Q 3 (t 3 ) ∧ t 1 .D = t 3 .D ∧ t 1 .E = t 3 .E ∧ t 1 .M = m’} Tuy nhiên, cô nói k được. Viết như vậy là 2 câu truy vấn tách biệt rồi. Dưới đây là lời giải của cô: (cô sử dụng cách viết có biến là miền) {m,n,h | (∃m) (∃v) (Q 4 (mnvh) ∧ m=«m’») ∨ (∃a) (∃d) (∃e) (∃g) (∃m) (∃z) (∃y) (Q 1 (adegmnz) ∧ Q 3 (deyhn) ∧ m=«m’») } Lưu ý: Chúng ta dùng ký hiệu d,e giống nhau trong Q1 và Q3, để thể hiện tính kết giữa Q1 và Q3 trên thuộc tính DE. Câu 3: Thuộc-hsnckt Thuộc-hd Có-hsnckt-là Có-các-hd Của-kh [...]... vấn bằng OQL (chuẩn ODMG 3.0) Danh sách tên khách hàng là đơn vị có kèm theo tên người đại diện có hợp đồng tư vấn đầu tư về hạ tầng cơ sở (loại đầu tư) và có hồ sơ nghiên cứu khả thi với ngày được duyệt dưới 30 ngày so với ngày thành lập phiên bản hồ sơ nghiên cứu khả thi sau cùng và do chuyên viên “X” phụ trách Đọc xong câu truy vấn, muốn ná thở luôn, còn dài hơn cầu Bình Triệu nữa, hic SELECT FROM... cầu Bình Triệu nữa, hic SELECT FROM WHERE AND AND AND 1 kh.TÊN-KH, (KH-ĐƠN-VỊ)kh.TÊN-NGƯỜI-ĐẠI-DIỆN DS_HD-TV-ĐẦU-TƯ hdtvdt, hdtvdt.Của-kh kh hdtvdt.Có-cvpt-là.TÊN-CV = “X” hdtvdt.LOẠI-ĐTƯ = “hạ tầng cơ sở (hdtvdt.Có-hsnckt-là.NGÀY-ĐƯỢC-DUYỆT-HSO – Last(hdtvdt.Có-hsnckt-là.Có-các-pb).NGÀY-LẬP) . YHN Q4 MN VH Q5 HN W Giải đề thi CSDLNC - K16, KHTN. Dưới đây là lời giải mang tính chất tham khảo. Trình bày khá dài dòng, để thể hiện cách làm. (Không phải là cách trình bày trong bài thi) . Có gì sai,. |X| Q3  Có nguy cơ (phi tuyến) Cải tiến lược đồ để giảm số lượng pth có nguy cơ: Đối với những lược đồ quan hệ chưa đạt chuẩn cao, có thể dùng phương pháp phân rã, nhằm vừa nâng cao chất lượng. đồng tư vấn đầu tư về hạ tầng cơ sở (loại đầu tư) và có hồ sơ nghiên cứu khả thi với ngày được duyệt dưới 30 ngày so với ngày thành lập phiên bản hồ sơ nghiên cứu khả thi sau cùng và do chuyên

Ngày đăng: 27/01/2015, 11:02

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan