1. Trang chủ
  2. » Giáo án - Bài giảng

Bài tập Cơ sở dữ liệu - Nguyễn Xuân Huy, Lê Hoài Bắc

134 7 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 134
Dung lượng 1,97 MB

Nội dung

Cuốn bài tập cơ sở dữ liệu này là một thử nghiệm nhằm trợ giúp các bạn trẻ một phương thức tự kiểm tra và đánh giá kiến thức ban đầu, mức nhập môn. Nội dung cuốn sách chọn lọc và đề xuất một số bài tập thuộc 5 mảng kiến thức sau đây: Đại số quan hệ, các phép toán trên bộ, ngôn ngữ hỏi SQL, phụ thuộc hàm và chuẩn hoá. Mỗi mảng kiến thức được trình bày thành ba phần: Phần thứ nhất bao gồm một số điều tóm tắt về lý thuyết, phần tiếp theo là các bài tập, cuối cùng là các bài giải. Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.

Nguyễn Xuân Huy - Lê Hoài Bắc Bài tập Cơ sở liệu Xuất lần thứ bai, có sửa chữa Hà Nội, 2006 1 Nguyễn Xuân Huy, Lê Hồi Bắc Bài tập Cơ sở Dữ liệu Khóa lược đồ quan hệ Chương Chuẩn hóa Phép tách Kiểm tra tính tổn thất phép tách kỹ thuật bảng Các dạng chuẩn Thuật toán chuẩn hoá 3NF khơng tổn thất bảo tồn PTH Mục lục Phần Một số đề thi Lời nói đầu 30 30 30 31 31 34 Đề 35 Phần Tóm tắt Lý thuyết Bài tập Đề 35 Chương Quan hệ Đại số quan hệ Đề 36 Đề 36 Đề 37 Quan hệ Các ký hiệu Đại số quan hệ Cơ sở liệu minh họa: CSDL Thực tâp 8 11 Chương Các thao tác quan hệ 16 Đề 38 Chương Ngôn ngữ hỏi SQL 18 Đề 39 Đề 40 Đề 41 Đề 10 42 Đề 11 43 Đề 12 44 Phần 46 Bài giải 46 chương 46 Các từ khóa ký hiệu Các hàm cột Chương Phụ thuộc hàm Suy dẫn theo tiên đề (suy dẫn logic) Bao đóng tập thuộc tính Suy dẫn theo quan hệ Bài tốn thành viên Lược đồ quan hệ Tổng kết tính chất PTH Phủ Phủ thu gọn tự nhiên Phủ không dư Phủ thu gọn Phủ tối tiểu (Ullman J.) Phụ thuộc đầy đủ Phụ thuộc mạnh, yếu đối ngẫu 28 18 19 21 21 22 22 22 22 24 25 25 26 26 26 27 27 Bài giải Chương Quan hệ đại số quan hệ 47 Bài giải Chương Các thao tác quan hệ 50 Nguyễn Xuân Huy, Lê Hoài Bắc Bài giải Chương Ngôn ngữ hỏi SQL 56 Bài giải Chương Phụ thuộc hàm 62 Bài giải chương Chuẩn hóa 74 Phần Bài giải đề thi Bài tập Cơ sở Dữ liệu 78 Bài giải Đề 79 Bài giải Đề 81 Bài giải Đề 83 Bài giải Đề 86 Bài giải Đề 90 Bài giải Đề 92 Bài giải Đề 95 Bài giải Đề 97 Bài giải Đề 99 Bài giải Đề 10 101 Bài giải Đề 11 104 Bài giải Đề 12 106 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu tập, cuối giải Dấu * dùng để ghi tập mức nâng cao Phần cuối sách tuyển chọn giới thiệu số đề thi tuyển Lời nói đầu cao học nghiên cứu sinh để bạn đọc làm quen với nội dung tổng hợp Mục tiêu cuối việc tập giúp cho người học hiểu sâu kỹ khái niệm học Để đạt điều mong bạn đọc đừng bỏ qua tập Với dễ, bạn giải vài phút Với khó, lần luyện tập thứ bạn Khác với tốn học, tủ sách tin học nước nhà, ta thấy số bỏ qua Sau vài lần thử sức, tin bạn hoàn toàn làm chủ sách tập lập trình Đó chắn thiệt thịi cho sinh viên khái niệm liên quan đến sở liệu bạn tự học Chúng cho tài liệu sau giúp ích bạn đọc tra cứu Cuốn Bài tập sở liệu thử nghiệm nhằm trợ giúp các nguồn tri thức sở: bạn trẻ phương thức tự kiểm tra đánh giá tri thức ban đầu, Date C J., Nhập môn hệ sở liệu, Những người mức nhập môn, lĩnh vực chiếm vị trí đáng nói q trình dịch: Hồ Thuần, Nguyễn Quang Vinh, Nguyễn Xuân Huy, NXB Thống phát triển công nghệ thông tin Kê, Hà Nội, Tập I (1985), Tập II (1986) Nguyễn Xuân Huy, Thuật toán, NXB Thống Kê, Hà Nội, 1987 Những năm gần đây, kỳ thi tốt nghiệp đại học, thi chuyển đổi, thi tuyển cao học nghiên cứu sinh có mảng sở liệu Đó điều dễ hiểu, sở liệu phần thiếu Vũ Đức Thi, Cơ sở liệu:Kiến thức thực hành, NXB Thống Kê, Hà Nội, 1997 Lê Tiến Vương, Nhập môn sở liệu quan hệ, Tái lần hệ thống tin học hoá Trong phương án sách chọn lọc đề xuất số tập thuộc năm mảng tri thức sau đây: đại số quan hệ, phép tốn bộ, ngơn ngữ hỏi SQL, phụ thuộc hàm chuẩn hoá Mỗi mảng tri thức trình bày thành ba phần: Phần thứ bao gồm số điều tóm tắt lý thuyết Phần thứ 4, NXB Thống Kê, Hà Nội, 1999 Garcia-Molina H., Ullman J., Widom J., Database System: The Complete Book, Prentice Hall, 2002 Maier D., The Theory of Relational Database, Computer Science Press, Rockville, Md, 1983 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Ullman, J., Principles of Data-base and Knowledge-base Chúng chân thành cảm ơn đóng góp vơ giá đồng Systems, (Second Edition), Computer Science Press, Potomac, Md., nghiệp 1982, (Có dịch tiếng Việt Trần Đức Quang.) Chúng mong tiếp tục nhận ý kiến giáo bạn đọc gần xa nội dung cấu trúc tập sách Người định hướng cho chúng tơi tìm hiểu sở liệu Cát Bà, Mùa Hoa Phượng, 2003 ln ln khuyến khích chúng tơi học tập trao đổi kiến thức giáo Các tác giả sư Hồ Thuần, Viện Công nghệ Thông tin Nguyễn Xuân Huy - Lê Hoài Bắc Cuốn sách khởi thảo hoàn thành theo phương án nhờ nhiệt tình đóng góp ý tưởng, nội dung thẩm định đồng nghiệp Giáo sư Lê Tiến Vương, Tổng cục Địa chính, giáo sư Hoàng Kiếm, giáo sư Trần Vĩnh Phước, Đại học Quốc gia thành phố Hồ Chí Minh thảo luận chi tiết nội dung kiến trúc cho tập sách Đặc biệt, đồng nghiệp trẻ, giáo sư Vũ Ngọc Loãn, Đại học Quốc gia Hà Nội, giáo sư Nguyễn Thanh Thuỷ, Đại học Bách khoa Hà Nội, tiến sỹ Trịnh Đình Thắng, Đại học Sư phạm Hà Nội II, tiến sỹ Dương Anh Đức, tiến sỹ Đỗ Văn Nhơn, thạc sỹ Nguyễn Tấn Trần Minh Khang, Đại học Quốc gia thành phố Hồ Chí Minh, thạc sỹ Nguyễn Xuân Tùng, Trung tâm Tin học Bưu điện Hà Nội, thạc sỹ Nguyễn Ngọc Hà, Trung tâm Tin học Bưu điện Hải Phòng, thạc sỹ Trịnh Thanh Lâm, Intel, thạc sỹ Nguyễn Xn Hồng, Misa Group có góp ý cụ thể nội dung chương trình đào tạo yêu cầu thực tiễn sở liệu Các cử nhân Bùi Thuý Hằng Trần Quốc Dũng, Viện Công nghệ Thông tin giúp đọc lại chỉnh sửa trang thảo 10 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Phần Tóm tắt Lý thuyết Bài tập 11 12 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu 13 14 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Chú ý Chương Vì quan hệ tập nên quan hệ khơng có hai trùng lặp Các ký hiệu Quan hệ Đại số quan hệ Theo truyền thống lý thuyết sở liệu chấp nhận quy định sau đây:  Các thuộc tính ký hiệu chữ LATIN HOA đầu bảng chữ A, B, C,  Tập thuộc tính ký hiệu chữ LATIN HOA cuối bảng chữ Tóm tắt lý thuyết X, Y, Z,  Các thuộc tính tập liệt kê xâu ký tự, khơng có Quan hệ dấu biểu diễn tập, chẳng hạn ta viết X = ABC thay viết Cho tập hữu hạn U = {A1, A2 , , An } khác trống (n  1) Các phần tử X =  A, B, C  XY biểu diễn hợp hai tập thuộc tính X Y, U gọi thuộc tính ứng với thuộc tính Ai  U, i = 1,2, , n có tập khơng rỗng dom(Ai) gọi miền trị thuộc tính Ai X  Y Phép trừ hai tập hợp X Y ký hiệu X-Y X \ Y  Các biểu diễn chữ Latin thường kèm số t, u, v, t1 n Đặt D   dom( A ) i i 1  Với t quan hệ R(U) tập thuộc tính X  U ta ký hiệu t[X] t.X hạn chế t tập thuộc tính Một quan hệ R với thuộc tính U =  A1, A2 , , An , ký hiệu R(U), X tập ánh xạ t : U  D cho với Ai  U ta có t(Ai)  dom(Ai)  Hàm Attr(R) cho tập thuộc tính quan hệ R Mỗi ánh xạ gọi quan hệ R  Hàm Card(R) cho lực lượng (số bộ) quan hệ R Mỗi quan hệ R(U) có hình ảnh bảng, cột ứng với thuộc tính,  Trong trường hợp tập thuộc tính U cho trước ta viết đơn giản dòng R thay cho R(U)  Ký hiệu REL(U) tập toàn thể quan hệ tập thuộc tính U Ta ký hiệu t(U) t / U tập thuộc tính U Một quan hệ rỗng, ký hiệu , quan hệ không chứa 15 16 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Hai quan hệ R S gọi tương thích chúng có tập thuộc Trong biểu thức chọn ta sử dụng ký hiệu cho phép tốn logic sau: tính, tức Attr(R) = Attr(S)  Tích: & AND  Tổng: | OR t.U = u t.V = v  Phủ định: ! NOT Với u quan hệ R(U) với quan hệ S(V) ta ký hiệu uS  Kéo theo:  IMPLY Với u quan hệ R(U) v quan hệ S(V) ta ký hiệu uv phép dán uv cho ta t tập thuộc tính UV thoả điều kiện phép dán u với quan hệ S uS cho ta quan hệ Phép chiếu P(UV) = { uv | v  S } Phép chiếu quan hệ R(U) tập thuộc tính X  U, ký hiệu R[X], cho ta Để thể phép toán quan hệ ta dùng ký pháp tựa ký pháp quan hệ P(X) = R[X] = { t.X | t  R } hệ ISBL (Information System Base Language) R[X] tính theo bước sau: Đại số quan hệ Phép chọn (phép lọc) Xố cột khơng thuộc X bảng R, Cho quan hệ R(U) biểu thức điều kiện (còn gọi biểu thức lọc hay biểu Xố bớt dịng giống bảng kết quả: giữ lại dòng số dòng giống thức chọn) e Phép chọn quan hệ R theo điều kiện e, ký hiệu R(e) cho ta Phép kết nối tự nhiên quan hệ: Phép kết nối (tự nhiên) hai quan hệ R(U) S(V), ký hiệu RS, cho ta quan hệ P(U) = R(e) = { t  R | Sat(t, e) } hàm logic Sat(t, e) kiểm tra t thoả điều kiện e xác định sau: Thay xuất thuộc tính A biểu thức chọn e chứa dán từ u quan hệ R với v quan hệ S cho trị miền thuộc tính chung (nếu có) hai giống P(UV) = RS = { uv | u  R, v S, u.M = v.M, M = U  V } trị tương ứng A t, t.A, ta thu mệnh đề Nếu M = U  V = , RS cho ta tích Descartes quan logic b Tính trị b Nếu (True) t thoả điều kiện e; ngược Phép cộng (hợp) lại, trị b sai (False) t không thoả điều kiện e hệ R ghép với quan hệ S 17 18 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Phép cộng (hợp theo lý thuyết tập hợp kết nối dọc) hai quan hệ tương trừ Thứ tự ưu tiên từ cao đến thấp phép tốn quan hệ liệt kê thích R(U) S(U), ký hiệu R+S, cho ta quan hệ chứa quan hệ sau: thành phần, (), [] P(U) = R+S = { t | t  R  t  S }  ,&, : Phép trừ + ,- Phép trừ (theo lý thuyết tập hợp lấy phần riêng) hai quan hệ tương thích Dãy phép toán thứ tự ưu tiên thực từ trái qua R(U) S(U), ký hiệu R-S, cho ta quan hệ chứa quan hệ R Nếu biểu thức quan hệ có chứa cặp ngoặc ( ) biểu thức có quan hệ S, cặp ngoặc thực trước P(U) = R-S = { t | t  R, t  S } Một số hàm tiện ích Sum(R,A): cho tổng giá trị số thuộc tính (cột) A quan hệ R, Phép giao Phép giao (theo lý thuyết tập hợp lấy phần chung) hai quan hệ tương thích R(U) S(U), ký hiệu R&S, cho ta quan hệ chứa xuất đồng thời hai quan hệ thành phần, P(U) = R&S = { t | t  R, t  S } Sum(R,A) =  ( t.A | t  R ) Avg(R,A): cho trung bình cộng giá trị thuộc tính (cột) A quan hệ R, Avg(R,A) = Sum(R,A) / Card(R) Card(R)  Các phép toán cộng, trừ giao đựơc gọi phép toán tập hợp quan hệ (tương thích) Max(R ,A): cho giá trị lớn thuộc tính (cột) A quan hệ R Phép chia Min(R,A): cho giá trị nhỏ thuộc tính (cột) A quan hệ R Cho hai quan hệ R(U) S(V) Phép chia quan hệ R cho quan hệ S, ký hiệu Nếu biểu thức quan hệ có chứa hàm tiện ích hàm R : S, cho ta quan hệ thực sớm ngữ cảnh cho phép P(M) = R : S = { t.M | tR, (t.M)S  R, M = U - V } Thí dụ Thứ tự thực phép tốn quan hệ Biểu thức quan hệ P = SR(A > Avg(S,A))[AB] thực theo trật tự Trong biểu thức quan hệ phép tốn ngơi có độ ưu tiên cao sau đây: (do thực sớm hơn) phép tốn hai ngơi Tiếp đến nhóm phép tốn kết nối, giao chia, cuối nhóm phép tốn cộng 10 19 20 Tính hàm c = Avg(S,A) Nguyễn Xuân Huy, Lê Hoài Bắc     Bài tập Cơ sở Dữ liệu Z = (X+ K+) – Y+=X+ – Y+ = ABCE – BCE = A Khơng, (BC)+= BCE khơng bao AE Có thể, thí dụ D  C 1NF - ĐẠI HỌC THÁI NGUYÊN procedure p(x: integer; var a: integer); var y: integer; begin x:=a+x; y:=a+x; a:=x+y; writeln(x); end; BEGIN x:=1; y:=2; p(x+y,x); p(x+y,y); writeln(x); writeln(y); END CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2004 =O= Câu Xét danh sách liên kết tạo phần tử sau: ================= Độc lập - Tự - Hạnh phúc type ĐỀ THI MÔN CƠ SỞ: Tin học sở (Thời gian làm 180 phút ) Trong đề thi phần sở liệu, tập thuộc tính viết dạng xâu ký tự, XY hợp tập X Y (X  Y), X-Y hiệu tập X Y Thuật ngữ khóa hiểu khóa tối tiểu PTH: phụ thuộc hàm, LĐQH: lược đồ quan hệ Mọi LĐQH cho trước dạng 1NF Biết danh sách t khởi tạo sẵn, có n > phần tử t chứa số tự nhiên trường data a) Viết hàm Boolean Tbc(t:pt) cho giá trị True phần tử t tạo thành dãy số có tính chất: kể từ phần tử thứ trở đi, giá trị Câu Cho biết chương trình sau hiển thị gì? program CH; var x,y: integer; 120 pt = ^elem; elem = record data: integer; next: pt; end; var t: pt; 239 240 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu trường data không nhỏ phần nguyên trung bình cộng hai giá trị trường data sát trước nó; trường hợp ngược lại, t khơng thỏa tính chất trên, hàm cho giá trị False Cho biết số phép kiểm tra tối đa cần thực b) Viết thủ tục Split(t:pt; var a,b: pt) tách danh sách t thành hai danh sách: danh sách a chứa số lấy từ danh sách t thỏa tính chất tổng chữ số số chẵn; danh sách b chứa phần tử lại t Cho biết số phép gán tối đa cần thực Câu Cho LĐQH P = (U,F), U = ABCDE, F = { E B, B CE, AE D } p) Xác định phần giao khóa P q) Tìm khóa K1 P r) P cịn khóa khác ngồi khóa K1 khơng? Giải thích? s) Xác định tập thuộc tính khơng khóa (phi ngun thủy) Uo P t) Tập thuộc tính ACE có phải khóa P khơng? Vì sao? 121 241 u) Tập thuộc tính BDE có phải khóa P khơng? Vì sao? v) Tính Z = (X+ K+)+ – Y+, X = BD, Y = BE, K siêu khóa P w) Cho biết PTH CE  BD có suy dẫn từ tập PTH F khơng? Giải thích x) Có thể thêm cho F PTH để P có khóa khơng? Vì sao? y) Xác định dạng chuẩn cao P Đáp án đề thi tuyển Cao học 2004 Đề Câu dòng: 4,13,9,28 Câu a) Dùng biến nguyên x y chứa hai giá trị sát trước Duyệt từ phần tử thứ ba trở đi, kiểm tra điều kiện t^.data>=(x+y) div 2? Sau bước duyệt cập nhật giá trị x y Function Tbc(t:pt): Boolean; var x,y: integer; begin Tbc:=false; 242 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu x:=t^.data; t:=t^.next; y:=t^.data; t:=t^.next; s:=s+(x mod 10); x := x div 10; while t nil until x=0; begin evensum:=not odd(s); if t^.data < (x+y) div then end; exit; x:=y; y:=t^.data; t:=t^.next; procedure add(p:pt;var a:pt); end; begin Tbc:=true; if a=nil then a:=p else end; begin Tối đa n-2 phép kiểm tra câu lệnh if p^.next:=a; b) Duyệt lấy phần tử p t, thỏa điều kiện evensum(p^.data) đưa p vào đầu danh sách a, ngược lại đưa p vào đầu danh sách b a:=p; end; end; procedure Split(t:pt; var a,b:pt); {Kiem tra tong cac chu so cua x la so chan?} var p: pt; begin function evensum(x: integer): Boolean; a:=nil; b:=nil; var s: integer; while tnil begin begin s:=0; p:=t; t:=t^.next;p^.next:=nil; repeat 122 if evensum(p^.data) then add(p,a) 243 244 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu else add(p,b); end; HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2005 Độc lập - Tự - Hạnh phúc =O= ================= end; 3n phép gán thủ tục Split+2n phép gán thủ tục add ĐỀ THI MÔN CƠ SỞ: Tin học sở Đề Thời gian làm 180 phút Câu P = (U,F), U = ABCDE, F = { E B, B CE, AE D }         P có khóa: AB, AE Uo = CD Khơng, chứa thực khóa AE Khơng, chứa thuộc tính khơng khóa D Z = (X+ K+) – Y+=X+ – Y+ = BCDE – BCE = D Khơng, (CE)+= BCE khơng bao BD Có thể, thí dụ A  E 1NF - ĐẠI HỌC THÁI NGUYÊN 123 Trong đề thi phần sở liệu, tập thuộc tính viết dạng xâu ký tự, XY hợp tập X Y (X  Y), X-Y hiệu tập X Y Thuật ngữ khóa hiểu khóa tối tiểu PTH: phụ thuộc hàm, LĐQH: lược đồ quan hệ Mọi LĐQH cho trước dạng 1NF Câu Cho biết chương trình sau hiển thị gì? program CH0501; var i: integer; x: integer; a: array[1 2] of integer; function f(var x: integer; i: integer): integer; var j: integer; begin i:=i+1; x:=x+2; j:=x+i; f:=i+j; end; CỘNG HOÀ XÃ HỘI CHỦ NGHĨABEGIN VIỆT NAM 245 246 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu a[1]:=1; a[2]:=2; x:=a[1]+a[2]; i:=1; i:=f(a[i],x+i); writeln(x,'#',i,'#',a[1],'#',a[2]); i:=f(i,a[(i div i)+1]); writeln(x,'#',i,'#',a[1],'#',a[2]); readln; END b) Viết thủ tục Inverse(var t:pt) lật lại danh sách t, tức tổ chức phần tử t theo thứ tự ngược lại Thí dụ, t = (7,2,9,1,19,6) sau thực lời gọi Inverse(t) thu t = (6,19,1,9,2,7) Thủ tục không xin cấp phát thêm phần tử elem Cho biết số phép gán tối đa cần thực t có n phần tử Câu Cho LĐQH p = (U,F), U = ABCDE, F = { A  C, BC  D, D BE } a) Xác định phần giao khóa p Câu Xét danh sách liên kết các phần tử sau: type pt = ^elem; elem = record data:integer; next:pt; end; var t: pt; b) Tìm khóa K1 p c) p cịn khóa khác ngồi khóa K1 khơng? Giải thích? d) Xác định tập thuộc tính khơng khóa (phi nguyên thủy) Uo p Biết danh sách t khởi tạo sẵn, có n > phần tử t chứa số tự nhiên trường data e) Tập thuộc tính BD có phải khóa p khơng? Vì sao? a) Viết hàm Sum(t:pt):pt cho giá trị trỏ tới phần tử tính từ đầu danh sách có trị trường data tổng trị trường data toàn phần tử đứng trước Nếu phần tử không tồn tại, Sum cho trị nil Cho biết số phép kiểm tra tối đa cần thực danh sách t có n phần tử f) Tập thuộc tính ADE có phải khóa p khơng? Vì sao? g) Tính Z = ((X+ K+)+ – Y)+ , X = BC, Y = BE, K siêu khóa p h) Cho biết PTH CD  A có suy dẫn từ tập PTH F khơng? Giải thích Thí dụ, t = (7,2,9,1,19,6) hàm Sum cho giá trị trỏ đến phần tử thứ ba 124 247 248 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu i) Có thể thêm cho p PTH để p có khóa khơng? Vì sao? b) Chuyển phần tử đầu danh sách t sang đầu danh sách kết Cỡ O(n) phép gán, tùy theo làm j) Xác định dạng chuẩn cao p Câu p = (U,F), U = ABCDE, F = { A  C, BC  D, D BE } - a) Giao khóa: M  U   ( R  L)  ABCDE  BCDE  A L  RF Ghi chú: Cán coi thi khơng giải thích thêm ĐẠI HỌC THÁI NGUYÊN HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2005 =O= Đáp án đề thi tuyển Cao học Đề b) Tìm khóa: AB AD c) p cịn khóa khác M+ = A+ = AC  U d) Uo = CE e) BD khơng phải khóa khơng chứa A phần giao khóa f) ADE khơng phải khóa chứa thực khóa AD CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM g) Tính Z = ((X+ K+)+ – Y)+ , X = BC, Y Độc lập - Tự - Hạnh phúc = BE, K siêu khóa p Vì K siêu khóa nên K+=U, ================= Z = ((X+ K+)+ – Y)+ = (X++ - Y)+ =(X+ - Y)+ = ((BC)+BE)+ = = (BCDE-BE)+ = (CD)+ = BCDE h) Cho biết PTH CD  A có suy dẫn từ tập PTH F khơng? Giải thích (CD)+ = BCDE khơng chứa A nên CD  A không suy dẫn từ tập PTH F Câu dòng: 3#13#3#2 3#21#3#2 Câu a) Duyệt từ đầu danh sách, cộng dồn Data vào biến s, gặp phần tử p thỏa p^.d=s cho kết p dừng Nếu duyệt hết danh sách mà chưa đạt kết cho giá trị Nil Tối đa n phép kiểm tra 125 249 i) Có thể thêm cho p PTH để p có khóa khơng? Vì sao? Có, chẳng hạn A  BD Khi giao khóa A A+ = U nên p có khóa (là A) 250 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu x: integer; a: array[1 2] of integer; 1NF, PTH AC cho thấy thuộc tính phi nguyên function f(var x: integer; i: thủy C phụ thuộc phận vào khóa AB nên p integer): integer; không 2NF trở lên var j: integer; begin i:=i+1; x:=x+2; j:=x+i; f:=i+j; end; ĐẠI HỌC THÁI NGUYÊN CỘNG HOÀ XÃ HỘI CHỦ NGHĨABEGIN VIỆT NAM a[1]:=1; a[2]:=2; x:=a[1]+a[2]; HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2005 Độc lập - Tự - Hạnh phúc i:=1; i:=f(x,a[i]+i); =O= ================= writeln(x,'#',i,'#',a[1],'#',a[2]); i:=f(a[(i div i)+1],x+i); writeln(x,'#',i,'#',a[1],'#',a[2]); ĐỀ THI MÔN CƠ SỞ: Tin học sở Đề END Thời gian làm 180 phút j) Xác định dạng chuẩn cao p Trong đề thi phần sở liệu tập thuộc tính viết dạng xâu ký tự, XY hợp tập X Y (X  Y), X-Y hiệu tập X Y Thuật ngữ khóa hiểu khóa tối tiểu PTH: phụ thuộc hàm, LĐQH: lược đồ quan hệ Mọi LĐQH cho trước dạng 1NF Câu Cho biết chương trình sau hiển thị gì? program CH0502; var i: integer; 126 251 Câu Xét danh sách liên kết tạo phần tử sau: type pt = ^elem; elem = record data:integer; next:pt; end; var t: pt; 252 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Biết danh sách t khởi tạo sẵn, có n > phần tử t chứa số tự nhiên trường data f) Tập thuộc tính ABE có phải khóa p khơng? Vì sao? a) Viết hàm Sum(t:pt):pt cho giá trị trỏ tới phần tử tính từ đầu danh sách có trị trường data tổng trị trường data tồn phần tử đứng sau danh sách Nếu phần tử không tồn tại, Sum cho trị nil Cho biết số phép kiểm tra tối đa cần thực t có n phần tử g) Tính Z = ((X+ K+)+ – Y)+ , X = CD, Y = AC, K siêu khóa p Thí dụ, t = (7,2,9,25,19,6) hàm Sum cho giá trị trỏ đến phần tử thứ tư j) Xác định dạng chuẩn cao p b) Viết hàm isDes(t:pt): Boolean kiểm tra liệu trường data danh sách t có giảm dần (True) hay khơng (False) Thí dụ, t = (17,12,9,9,6) sau thực lời gọi isDes(t) cho giá trị True Câu Cho LĐQH p = (U,F), U = ABCDE, F = { B  D, CD  E, E AC } a) Xác định phần giao khóa p h) Cho biết PTH DE  B có suy dẫn từ tập PTH F khơng? Giải thích i) Có thể thêm cho p PTH để p có khóa khơng? Vì sao? Ghi chú: Cán coi thi khơng giải thích thêm Ghi chú: Cán coi thi khơng giải thích thêm b) Tìm khóa K1 p c) p cịn khóa khác ngồi khóa K1 khơng? Giải thích? d) Xác định tập thuộc tính khơng khóa (phi nguyên thủy) Uo p e) Tập thuộc tính CE có phải khóa p khơng? Vì sao? 127 253 ĐẠI HỌC THÁI NGUYÊN HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2005 254 CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆ Độc lập - Tự - Hạnh phúc Nguyễn Xuân Huy, Lê Hoài Bắc =O= Bài tập Cơ sở Dữ liệu g) Tính Z = ((X+ K+)+ – Y)+ , X = CD, Y = AC, K siêu khóa p Vì K siêu khóa nên K+=U, Z = ((X+ K+)+ – Y)+ = (X++ - Y)+ =(X+ - Y)+ = ((CD)+AC)+ = = (ACDE-AC)+ = (DE)+ = ACDE h) Cho biết PTH DE  B có suy dẫn từ tập PTH F khơng? Giải thích ================= Đáp án đề thi tuyển Cao học Đề Câu dòng: 5#11#1#2 5#38#1#4 Câu a) Duyệt danh sách lần Lần thứ lấy tổng s trường data Lần thứ hai duyệt từ đầu danh sách trừ dần data vào s, gặp phần tử p thỏa p^.data = s cho kết p dừng Nếu duyệt hết danh sách mà chưa đạt kết cho giá trị Nil (DE)+ = ACDE không chứa B nên DE  B không suy dẫn từ tập PTH F i) Có thể thêm cho p PTH để p có khóa khơng? Vì sao? Tối đa 2n phép kiểm tra Có, chẳng hạn B  CE Khi giao khóa B B+ = U nên p có khóa (là B) b) Duyệt từ đầu danh sách, lưu trị trường data phần tử trước vào biến x Nếu gặp điều kiện x < p^.data cho trị False dừng Nếu đến cuối danh sách cho trị True j) Xác định dạng chuẩn cao p 1NF, PTH BD cho thấy thuộc tính phi nguyên thủy D phụ thuộc phận vào khóa BC nên p khơng 2NF trở lên Câu p = (U,F), U = ABCDE, F = { B  D, CD  E, E AC } a) Giao khóa: M  U   ( R  L)  ABCDE  ACDE  B - L  RF b) Tìm khóa: BC BE c) p cịn khóa khác M+ = B+ = BD  U d) Uo = AD e) CE khơng phải khóa khơng chứa B phần giao khóa f) ABE khơng phải khóa chứa thực khóa BE 128 255 ĐẠI HỌC THÁI NGUYÊN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆ HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2006 Độc lập - Tự - Hạnh phúc =O= ================= 256 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu ĐỀ THI MÔN CƠ SỞ: Tin học sở (Thời gian làm 180 phút ) Trong đề thi, phần sở liệu, tập thuộc tính viết dạng xâu ký tự Thuật ngữ khóa hiểu khóa tối tiểu Các từ viết tắt gồm PTH: phụ thuộc hàm, LĐQH: lược đồ quan hệ, NF: dạng chuẩn Mọi LĐQH cho trước dạng 1NF Câu Cho biết chương trình sau hiển thị gì? program ST; var x,y: integer; a: array[0 2] of integer; function f(var a:integer;x:integer):integer; var y:integer; begin x:=a+x; y:=a+x; a:=x+y; f:=a+1; end; BEGIN x:=1; y:=2; a[0]:=x; a[1]:=y; a[2]:=x+y; x:=f(a[x],a[y]+y); y:=a[f(y,a[x mod 3]+y) mod 3]; writeln(x); 129 writeln(y); writeln(a[0]+a[1]+a[2]); END Câu Dãy số nguyên dương a1, a2, ,an, n  gọi dãy cộng tính kể từ phần tử thứ hai trở đi, phần tử không nhỏ tổng phần tử đứng trước nó, cụ thể  i = 2,3,…,n:  a1+a2+…+ai-1 Thí dụ, dãy a=(1, 2, 4, 9, 18) gồm n = phần tử dãy cộng tính Cho mảng nguyên a[1 n],  n  50 với giá trị nạp sẵn 2a) Trình bày thuật tốn viết hàm Boole IsAdditive(a,n) cho giá trị True a hốn vị dãy cộng tính, ngược lại, hàm cho giá trị False Cho biết số phép kiểm tra tối đa cần thực Thí dụ,  với n = 5, a = (1, 18, 2, 9, 4) IsAdditive(a,n) = True  với n = 5, a = (1, 2, 4, 9,10) IsAdditive(a,n) = False 2b) Cho trước mảng a dãy cộng tính Trình bày thuật tốn viết hàm Boole Snap(a,x,n,M) xác đị nh vector 0/1 x=(x1,x2,…,xn), xi  {0,1}, i = 1,2,…,n thỏa tính chất (x[1]*a[1])+(x[2]*a[2])+…+(x[n]*a[n]) = M Nếu tìm vector x thỏa tính chất trên, hàm cho giá trị True vector x, ngược lại, khơng tìm vector thỏa tính chất đó, hàm cho giá trị False Thí dụ,  Với n = 5, a = (1, 2, 4, 9, 18), M = 24 lời gọi Snap(a,x,n,M) cho ta 257 258 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Snap = True x = (0,1,1,0,1)  Với n = 5, a = (1, 2, 4, 9, 18), M = 26 lời gọi Snap(a,x,n,M) cho ta Snap = False Cho biết số phép kiểm tra tối đa cần thực hiện? Câu Cho LĐQH P = (U,F), U = ABCDE, F = { BCD, CDA, DE, AB } z) Xác định phần giao khóa P aa) Tìm khóa K1 P bb) P cịn khóa khác ngồi khóa K1 khơng? Giải thích? cc) Xác định tập thuộc tính khơng khóa (phi ngun thủy) Uo P dd) Tập thuộc tính CD có phải khóa P khơng? Vì sao? ee) Tập thuộc tính ACE có phải khóa P khơng? Vì sao? ff) Cho biết PTH BC  AE có suy dẫn từ tập PTH F khơng? Giải thích gg) Có thể thêm cho F PTH để P có khóa khơng? Vì sao? hh) Xác định giải thích dạng chuẩn cao P ĐẠI HỌC THÁI NGUYÊN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆ HỘI ĐỒNG TUYỂN SINH SĐH NĂM 2006 Độc lập - Tự - Hạnh phúc =O= ================= Đáp án đề thi tuyển Cao học 2006 MÔN CƠ SỞ: Tin học sở Câu Đánh giá kiến thức tổ chức truyền tham trị cho chương trình Đáp án: Chương trình hiển thị dịng theo trật tự: ý 1: 17 ý 2: ý 3: 20 Câu Đánh giá kiến thức trình bày thuật tốn chương trình, tổ chức liệu đơn giản Thí sinh trình bày giải ngơn ngữ lập trình truyền thống Pascal, C, Basic ngôn ngữ mô tả thuật tốn Dưới đáp án trình bày ngơn ngữ lập trình Pascal Khai báo kiểu mảng ngun Ghi chú: Cán coi thi khơng giải thích thêm const mn = 50; type mi = array[1 mn] of integer; 130 259 260 Nguyễn Xuân Huy, Lê Hoài Bắc Bài tập Cơ sở Dữ liệu Nếu M = gán giá trị hàm True, ngược lại gán giá trị hàm False 2a) Thuật toán cho hàm IsAdditive Sắp tăng mảng a Tổng cộng n phép so sánh Sử dụng biến tích lũy t chứa tổng phần tử a[1]+a[2]+…+a[i-1] Cài đặt hàm Snap: Với i=2 n kiểm tra điều kiện t  a[i]? 2.1 Nếu t  a[i]: thực tiếp với t+a[i] i+1 2.2 Ngược lại, t > a[i]: cho trị False dừng thuật toán cho trị True Tổng cộng: n phép so sánh Cài đặt hàm IsAdditive: t: biến tích lũy function IsAdditive(a:mi;n: integer):Boolean; var i,t: integer; begin isAdditive:=false; qs(a,1,n); t:=a[1]; for i:=2 to n if t > a[i] then exit else t:=t+a[i]; isAdditive:=true; end; 2b) Thuật toán cho hàm Snap Duyệt ngược với i = n Kiểm tra điều kiện M  a[i]? 1.1 Nếu M  a[i]: x[i]:=1; M:=M-a[i] 1.2 Nếu M < a[i]: x[i]:=0 131 261 function Snap(var a,x:mi;n,M:integer):Boolean; var i: integer; begin for i:=n downto if a[i]

Ngày đăng: 17/02/2022, 08:52

w