Bài tập môn Nhập môn Cơ sở dữ liệu của trường ĐH Mở Tp.HCM, bao gồm các bài tập về mô hình thực thể mối kết hợp (ERD), ngôn ngữ truy vấn SQL, ràng buộc toàn vẹn, ràng buộc khóa ngoại, chuẩn hóa mô hình, .Bài tập môn Nhập môn Cơ sở dữ liệu của trường ĐH Mở Tp.HCM, bao gồm các bài tập về mô hình thực thể mối kết hợp (ERD), ngôn ngữ truy vấn SQL, ràng buộc toàn vẹn, ràng buộc khóa ngoại, chuẩn hóa mô hình, .
1/4 BÀI THỰC HÀNH ACCESS CHƯƠNG 1 & 2: DATABSE & TABLES Bài 1 Tạo, mở và đóng cơ sở dữ liệu 1. Tạo cơ sở dữ liệu BanHang trong thư mục D:\BaiTapAccess. Nếu chưa có thì hãy tạo thư mục BaiTapAccess. 2. Đóng CSDL BanHang 3. Mở lại CSDL BanHang. 4. Đóng CSDL BanHang. Bài 2 Tạo table 1. Mở CSDL BanHang trong D:\BaiTap_Access. 2. Tạo table NhaCungCap gồm các fields sau: Field Name Data Type Field Properties MaNCC Number Field Size: Long Integer Khóa chính (Primary Key) TenNCC Text Field Size: 40 DiaChi Text Field Size: 60 DienThoai Text Field Size: 20 Fax Text Field Size: 20 3. Tạo table SanPham gồm các fields sau: Field Name Data Type Field Properties MaSP Number Field Size: Long Integer Khóa chính (Primary Key) TenSP Text Field Size: 40 MaNCC Number Field Size: LongInteger DVT Text Field Size: 20 DonGiaMua Currency Default Value: 0 Validation Rule: >=0 Validation Text: Phai la so lon hon hoac bang zero. 4. Tạo relationship giữa hai tables NhaCungCap và SanPham trong database BanHang dựa trên field MaNCC. Bài 3 Nhập dữ liệu vào table 1. Nhập dữ liệu vào table NhaCungCap MaNCC TenNCC DiaChi DienThoai Fax 1 Công ty TNHH Bình châu 15 Nguyễn Đình Chiểu, P4, Q3 9625012 2 DNTN Trường Thanh 169/2 Lê Quang Định, P24, Q.BT 8300945 3 Công ty TNHH Tiến Trung 65/4 Võ Thị Sáu, P6, Q3 9645512 9645512 4 DNTN Đông Hải 23 Hai Bà Trưng, P9, Q1 9123008 2/4 2. Nhập dữ liệu vào table SanPham MaSP TenSP MaNCC DVT DonGia 1 Bia SaiGon 1 chai 4,500 2 Rượu Red Label 1 chai 75ml 150,000 3 Bột nêm Knor 1 túi 250g 9,000 4 Bột nêm Ajnomoto 2 túi 250g 10,000 5 Nước tương Chinsu 2 chai 125ml 2,000 6 Nước tương Đào Tiên 3 chai 125ml 2,000 7 Chả lụa 3 kg 28,000 8 Bột ngọt Vedan 3 túi 500g 12,000 9 Thịt Nạc 4 kg 60,000 10 Tôm sú 4 kg 120,000 Bài 4 Trong CSDL BanHang, tạo các tables, relationship và nhập dữ liệu 1. Tạo table KhachHang gồm các fields sau: Field Name Data Type Field Properties MaKH Text Field Size: 5 InputMask: >LL000 AllowZeroLength: No Khóa chính (Primary Key) TenKH Text Field Size: 40 AllowZeroLength: No DiaChi Text Field Size: 50 DienThoai Text Field Size: 20 Fax Text Field Size: 20 2. Tạo table NhanVien gồm các fields sau: Field Name Data Type Field Properties MaNV Number Field Size: Long Integer Khóa chính (Primary Key) HoNV Text Field Size: 20 TenNV Text Field Size: 10 NgaySinh Date/Time Format: dd/mm/yy NamNu Yes/No Default value: Yes ChucVu Text Field Size: 50 DiaChi Text Field Size: 50 DienThoai Text Field Size: 20 3. Tạo table HoaDon gồm các fields sau: Field Name Data Type Field Properties MaHD Number Field Size: Long Integer Khóa chính (Primary Key) MaKH Text Field Size: 5 MaNV Number Field Size: Long Integer NgayDatHang Date/Time Format: dd/mm/yy NgayGiaoHang Date/Time Format: dd/mm/yy 3/4 4. Tạo table ChiTietHD gồm các fields sau: Field Name Data Type Field Properties MaHD Number Field Size: Long Integer MaSP Number Field Size: Long Integer DonGiaBan Currency Validation Rule: >=0 SoLuong Number Field Size: Integer GiamGia Number Field Size: Single Khóa chính là field MaHD và MaSP 5. Tạo relationship giữa các tables. 6. Nhập dữ liệu vào các tables. MaNV HoNV TenNV NgaySinh NamNu ChucVu DiaChi DienThoai 1 Nguyễn Văn Bình 08/12/58 Yes Tổ trưởng 12 Nguyễn Văn Bảo Q.GV 9540015 2 Trần Ngọc Bảo Châu 19/02/52 No Phụ trách 19/1 Lê Thị Riêng Q1 9845112 3 Lý Thị Thanh Vân 30/08/63 No Nhân viên 159 Nguyễn Đình Chiểu Q1 9642310 4 Nguyễn Thanh Hùng 19/09/47 Yes Nhân viên 410 Điện Biên Phủ Q10 9458870 5 Phan Ngọc Hải 04/03/55 Yes Nhân viên 663 Nguyễn Thiện Thuật Q3 9598663 6 Lê Minh Tâm 02/07/63 Yes Nhân viên 15/2 Nguyễn Cư Trinh Q1 9253300 7 Nguyễn Thị Thu 29/05/60 No Nhân viên 19/3/2 Cao Đạt Q5 8994512 8 Lê Ngọc Tú 09/01/58 No Nhân viên 442/1 Hưng Phú Q8 8398806 9 Nguyễn Khánh Bảo 27/01/66 No Nhân viên 46/2 Phạm Thế hiển Q8 9832512 MaKH TenKH DiaChi DienThoai Fax KH001 Nguyễn Đức Trung 427/10 Lê Văn Sỹ P6, Q3 8422650 8422651 KH002 Phạm Thị Ngọc Trang 16/4 Cao Thắng P4, Q3 8398801 KH003 Lê Văn Bảo 320 Nguyễn Đình Chiểu P4, Q3 8334705 8334705 KH004 Trần Văn Tư 17A Hồ Xuân Hương P6, Q3 9566123 KH005 Lê Thị Hồng Anh 81 Phan Đình Phùng Q.PN 9845512 9845522 MaHD MaKH MaNV NgayDatHang NgayGiaoHang 11078 KH001 2 15/2/2003 12/2/2003 11079 KH003 4 15/2/2003 15/2/2003 11084 KH001 5 20/3/2003 22/3/2003 11085 KH003 6 21/3/2003 22/3/2003 11091 KH002 7 9/4/2003 10/4/2003 11096 KH002 4 15/4/2003 15/4/2003 KhachHang MaKH … NhanVien MaNV … ChiTietHD MaHD MaSP … SanPham MaSP MaNCC … HoaDon MaHD MaKH MaNV … 1 ∞ 1 ∞ 1 ∞ 1 ∞ NhaCungCap MaNCC … 1 ∞ 4/4 MaHD MaSP DonGiaBan SoLuong GiamGia 11078 1 5,400 10 0 11078 6 2,400 50 0 11078 7 33,600 7 0 11079 8 14,400 27 0 11079 9 48,000 8 0 11084 8 14,400 13 0 11085 1 5,400 40 0 11085 2 180,000 1 0 11085 8 14,000 45 0 11091 3 12,000 24 0 11091 6 2,400 100 0 11091 9 48,000 32 0 11096 2 180,000 1 0 11096 3 12,000 24 0 11096 7 33,600 1 0 11096 9 48,000 16 0 7. Đóng tất cả các tables. 8. Đóng CSDL BanHang. Bài 5 Thay đổi thuộc tính của các tables 1. Mở CSDL BanHang. 2. Mở table NhanVien ở cửa sổ Design. Thay đổi các thuộc tính của field NamNu: − −− − Trong tab General, đổi thuộc tính Format là ;"Nam";"Nu" − −− − Trong tab Lookup, đổi thuộc tính Display Control là Text Box 3. Mở table HoaDon ở cửa sổ Design. Thay đổi các thuộc tính của field MaKH: − −− − Trong tab Lookup, đổi các thuộc tính như sau: Display Control Combo Box Row Source Type Table/Query Row Source KhachHang Bound Column 1 Column Count 2 Column Heads No Column Widths 0;1 1/2 BÀI THỰC HÀNH ACCESS CHƯƠNG 3: QUERIES Mở cơ sở dữ liệu BanHang. Bài 1 Tạo Select Query 1. Xem danh sách nhân viên gồm các thông tin mã nhân viên, họ, tên và ngày sinh. Sắp thứ tự danh sách theo tên. 2. Xem danh sách nhân viên có tên bắt đầu bằng chữ “T” (gồm các thông tin mã nhân viên, họ, tên, ngày sinh). 3. Xem danh sách nhân viên có tên bắt đầu bằng chữ “T” hoặc “H” (gồm các thông tin mã nhân viên, họ, tên, ngày sinh). 4. Xem danh sách nhân viên nữ sinh trước năm 1950 (gồm các thông tin mã nhân viên, họ, tên, ngày sinh, giới tính). 5. Xem danh sách nhân viên gồm các thông tin mã nhân viên, họ, tên, tuổi và địa chỉ. 6. Có bao nhiêu nhân viên tuổi từ 40 đến 50. 7. Có bao nhiêu nhân viên có ngày sinh nhật trong tháng 2. 8. Xem danh sách nhân viên sinh từ năm 1950 đến 1960 (gồm các thông tin họ, tên, năm sinh, địa chỉ). Bài 2 Tạo Parameter Query 1. Xem danh sách nhân viên dựa theo mã nhân viên được nhập vào (gồm các thông tin mã nhân viên, họ, tên, ngày sinh, chức vụ). 2. Xem danh sách nhân viên sinh dựa theo khoảng năm sinh được nhập vào (gồm các thông tin mã nhân viên, họ, tên, năm sinh). Bài 3 Tạo Crosstab Query 1. Xem mỗi khách hàng mua mỗi sản phẩm với số lượng bao nhiêu? 2. Xem mỗi khách hàng mua mỗi sản phẩm với số tiền bao nhiêu? Bài 4 Tạo Action Query 1. Tăng giá các mặt hàng “thịt” và “tôm” lên 10%. 2. Tạo table lưu các hóa đơn và chi tiết hóa đơn của tháng 2. Đặt tên table là HoaDonT2. 3. Tạo một table mới gồm các nhân viên có tuổi từ 50 đến 60. 4. Xóa các hóa đơn đặt hàng tháng 2. 5. Nối table HoaDonT2 vào table HoaDon và ChiTietHD. Bài 5 Tạo query có field tính toán 1. Xem danh mục các sản phẩm (mã sản phẩm, tên sản phẩm, đơn vị tính, đơn giá mua, đơn giá bán, số lượng đã bán, thành tiền: số lượng x đơn giá bán x (1 – giảm giá)). 2. Xem chi tiết của mỗi hóa đơn dựa theo số hóa đơn được nhập vào (tên sản phẩm, đơn vị tính, số lượng, đơn giá bán, thành tiền). 2/2 3. Xem tổng thành tiền của các hóa đơn (mã hóa đơn, tên khách hàng, ngày đặt hàng, ngày giao hàng, tên nhân viên lập hóa đơn, tổng thành tiền). 4. Xem các hóa đơn có tổng thành tiền từ 1,000,000 trở lên (mã hóa đơn, tên khách hàng, ngày đặt hàng, ngày giao hàng, tổng thành tiền). 5. Xem các hóa đơn đặt hàng trong tháng 3 (mã hóa đơn, tên khách hàng, ngày đặt hàng, ngày giao hàng, tổng thành tiền). 6. Xem các hóa đơn của từng khách hàng dựa theo mã khách hàng nhập vào (mã hóa đơn, ngày đặt hàng, ngày giao hàng, tổng thành tiền). 7. Đếm số hóa đơn trong tháng 3 và 4. 8. Tính tổng thành tiền các hóa đơn theo từng tháng. 9. Tính doanh số của mỗi nhân viên. 10. Tính xem mỗi nhà cung cấp cung cấp bao nhiêu mặt hàng? Bài 6 Tạo SQL Query 1. Xem mã và tên các sản phẩm chưa bán (không có trong table ChiTietHD). 2. Xem họ tên nhân viên không có trong hóa đơn đặt hàng tháng 4. 1/3 BÀI THỰC HÀNH ACCESS CHƯƠNG 4: FORMS Mở cơ sở dữ liệu BanHang. Bài 1 Tạo form hiển thị và ñiều chỉnh dữ liệu về nhân viên theo dạng sau: Dùng form nhập dữ liệu của một nhân viên mới: − −− − Mã NV: 10 − −− − Họ tên: Hoàng Thu Nga − −− − Ngày sinh: 20/5/80 − −− − Giới tính: Nữ − −− − Chức vụ: Nhân viên − −− − ðịa chỉ: 114/7 ðinh Tiên Hoàng, P1, Q.Bình Thạnh Bài 2 Tạo form hiển thị và ñiều chỉnh dữ liệu về khách hàng theo dạng sau: Dùng form nhập dữ liệu của một khách hàng mới: − −− − Mã NV: KH006 − −− − Họ tên: Phạm Ngọc ðức − −− − ðịa chỉ: 10/7 ðinh Bộ Lĩnh, P.22, Q. Bình Thạnh − −− − ðiện thoại: 9007763 − −− − Fax: 9007763 2/3 Bài 3 Tạo form xem và hiệu chỉnh các hóa ñơn dạng main-sub. 1. Sử dụng form HoaDon nhập thêm 1 hóa ñơn mới: − −− − MaHD: 11100 − −− − MaKH: KH006 − −− − MaNV: 10 − −− − NgayDatHang: 20/4/2003 − −− − NgayGiaoHang: 22/4/2003 − −− − Chi tiết hóa ñơn như sau: MaSP SoLuong DonGiaBan GiamGia 3 30 12,000 5% 4 5 11,000 0% 5 10 2,500 5% 6 60 24,000 0% 2. Thêm label HÓA ðƠN vào phần Form Header 3. Thêm 2 nút lệnh có chức năng thêm 1 record mới và xóa 1 record vào phần Form Footer. 4. Tạo Combo box cho người sử dụng chọn tên khách hàng khi nhập dữ liệu. Bài 4 Tạo form dạng form là main-sub hiển thị thông tin về nhà cung cấp và sản phẩm: 3/3 1. Thêm label hiển thị tiêu ñề của form là NHÀ CUNG CẤP – SẢN PHẨM ở phần Form Header. 2. Thêm các nút lệnh có chức năng ñóng form, thêm record mới, xóa record ở phần Form Footer. Bài 5 Tạo form có chức năng ñiều khiển (switch board). Trên form có các nút lệnh dùng ñể mở các form ñã tạo ở Bài 1, Bài 2, Bài 3 và Bài 4. Bài 6 (không bắt buộc) Tạo form dạng hộp thoại (dialog box) như sau: Trên form có: − −− − 1 option group Chọn có 3 giá trị − −− − 3 combo box: Tháng, Quy, Nam − −− − 2 command button: Xem và Thoat Khi người sử dụng click chọn “Theo Tháng” thì combo box “Chọn tháng” hiện ra, trong combo box này có các tháng ñã lập hóa ñơn. Tương tự, khi click chọn “Theo Quý” thì combo box “Chọn quý” hiện ra. Tương tự, khi click chọn “Theo Năm” thì combo box “Chọn năm” hiện ra. Sau khi click ch ọn 1 tháng (1 quý hoặc 1 năm) và click nút “Xem” thì mở query gồm các thông tin mã sản phẩm, tên sản phẩm, số lượng ñã bán, ñơn giá bán và thành tiền (theo tháng ñã chọn). 1/3 BÀI THỰC HÀNH ACCESS CHƯƠNG 5: REPORT Mở cơ sở dữ liệu BanHang. Tạo các report sau: Bài 1 Danh sách nhân viên. Bài 2 Danh sách nhân viên theo 2 nhóm nam và nữ. [...].. .Bài 3 Danh m c s n ph m: Bài 4 Báo cáo doanh s m i khách hàng: 2/3 Bài 5 In các hóa đơn bán hàng: Bài 6 Báo cáo s n ph m đã bán 3/3 Dựa trên cơ sở dữ liệu QLBanHang.mdb thực hiện tạo các truy vấn sau: Truy vấn một bảng: Qry1 Cho biết các thông tin về khách hàng Qry2 Cho biết... khách hàng từng năm: Tên khách hàng Năm Doanh số Qry38: Tạo bảng Tbl_NhanvienNam gồm các trường Mã nhân viên, họ tên, ngày sinh, số năm làm việc, bộ phận chứa dữ liệu Nhân viên nam được trích từ bảng Tbl_NhanVien Qry39: Tạo bảng Tbl_sanPhamTmp chứa dữ liệu bột nêm, bia được trích từ Tbl_SanPham Qry40: Tạo bảng Tbl_KHSPTmp gồm có các trường tên khách hàng, tên sản phẩm, trò giá (1-giamgia)* (soluong*dongiaban)... Liệt kê số hoá đơn, doanh số của năm được biết khi thực thi Qry26: Liệt kê họ tên các nhân viên chưa lập (bán ) được hoá đơn (mặt hàng) nào Qry27: Liệt kê các sản phẩm chưa bán được Truy vấn có nhóm dữ liệu (GROUP BY) Qry28: Liệt kê số hoá đơn, ngày hoá đơn, tên khách hàng, họ tên nhân viên, trò giá của các hoá đơn phát sinh trong tháng 2/2003 Qry29: Liệt kê tên khách hàng, tên sản phẩm và số lượng... Liệt kê số hoá đơn, ngày hoá đơn, trò giá hoá đơn của nhân viên có tên được nhập khi thực hiện Qry22: Liệt kê số hoá đơn, tên khách hàng, số lượng, đơn giá, thành tiền ((1giamgia ) x (Soluong X Dongiaban)) đã mua sản phẩm có tên khi thực hiện Qry23: Liệt kê tên khách hàng, tên sản phẩm, số lượng trong khoảng thời gian T1 T2 được nhập khi thực hiện Qry24: Liệt kê doanh số bán hàng của bộ phận có tên được . 1/4 BÀI THỰC HÀNH ACCESS CHƯƠNG 1 & 2: DATABSE & TABLES Bài 1 Tạo, mở và đóng cơ sở dữ liệu 1. Tạo cơ sở dữ liệu BanHang trong thư mục D:BaiTapAccess THỰC HÀNH ACCESS CHƯƠNG 4: FORMS Mở cơ sở dữ liệu BanHang. Bài 1 Tạo form hiển thị và ñiều chỉnh dữ liệu về nhân viên theo dạng sau: Dùng form nhập dữ liệu của một nhân viên mới: − −− −. 1/3 BÀI THỰC HÀNH ACCESS CHƯƠNG 5: REPORT Mở cơ sở dữ liệu BanHang. Tạo các report sau: Bài 1 Danh sách nhân viên. Bài 2 Danh sách nhân viên theo 2 nhóm nam và nữ. 2/3 Bài 3 Danh