KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM BÀI TẬP LỚN HỌC PHẦN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ĐỀ TÀI: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU CHO CỬA HÀNG TẠP HÓA Nhóm sinh viên thực hiện: STT Họ tên Mã SV Mã lớp Điểm Cán bộ coi thi, chấm thi 1 Cán bộ coi thi, chấm thi 2 (Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên) HÀ NỘI - 2021 1 NHẬN XÉT CỦA GIÁO VIÊN 2 MỤC LỤC BẢNG PHÂN CÔNG NHIỆM VỤ.5 DANH MỤC BẢNG.6 PHẦN 1: GIỚI THIỆU BÀI TOÁN.7 PHẦN 2: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU.7 A-Thiết kế cơ sở dữ liệu.Các bảng dữ liệu.Mô hình quan hệ.11 B-Cài đặt cơ sở dữ liệu.Tạo CSDL của cửa hàng.Tạo bảng Hàng Hóa.Tạo bảng Nhà Cung Cấp.Tạo bảng Đơn Đặt Hàng.Tạo bảng Chi Tiết Đơn Đặt Hàng.Tạo bảng Phiếu Nhập.Tạo bảng Chi Tiết Phiếu Nhập.Tạo bảng Phiếu Xuất.Tạo bảng Chi tiết Phiếu Xuất.Tạo bảng Tồn Kho.Tạo bảng Khách Hàng.16 II-Chèn dữ liệu vào bảng.Bảng Nhà Cung Cấp.Bảng Đơn Đặt Hàng.Bảng Chi Tiết Đơn Đặt Hàng.Bảng Phiếu Nhập.Bảng Chi Tiết Phiếu Nhập.Bảng Phiếu Xuất.Bảng Chi Tiết Phiếu Xuất.Bảng Khách Hàng.19 III-Các lệnh T_SQL.Thiết kế view.44 PHẦN 3: KẾT LUẬN VÀ ĐỀ XUẤT .Trình bày tóm tắt những nội dung nhóm đã làm được.Hướng phát triển.47 TÀI LIỆU THAM KHẢO.48 4 BẢNG PHÂN CÔNG NHIỆM VỤ Sinh viên thực hiện STT Nhiệm vụ Họ tên Mã sinh viên Khảo sát yêu cầu, thiết kế CSDL (các 1 bảng, mô hình quan hệ), viết báo cáo 2 Thiết kế Trigger 3 Thiết kế Procedure 4 Thiết kế View 5 Thiết kế Function 5 DANH MỤC BẢ Bảng 1. 11: Ràng buộc khóa ngoại. 1: Mô hình quan hệ quản lí bán hàng.11 6 PHẦN 1: GIỚI THIỆU BÀI TOÁN - Giới thiệu đơn vị khảo sát: Cửa hàng tạp hóa Nghiệm Thu có ba nhân viên nhưng sau khi dịch Covid bùng phát thì doanh thu cửa hàng sụt giảm. Chủ cửa hàng muốn cắt giảm nhân công để giảm chi phí quản lí nhưng do có quá nhiều sản phẩm nên không thể quản lí được hết thường xuyên xảy ra tình trạng không kịp thời - Các đối tượng sử dụng cơ sở dữ liệu: chủ cửa hàng tạp hóa - Các đối tượng cần lưu trữ: hàng hóa, khách hàng, nhà cung cấp, hóa đơn xuất nhập hàng hóa.
- Các yêu cầu thiết kế và quản trị cơ sở dữ liệu: + Lưu trữ các khách mua hàng thân thiết để có chương trình khuyến mãi thích hợp để kích cầu thị trường, nhà cung cấp, các hóa đơn xuất nhập hàng hóa + Có thông báo khi mặt hàng tồn kho đạt số lượng báo động + Thông báo để điều chỉnh giá bán kịp thời tránh tình trạng lỗ PHẦN 2: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU A-Thiết kế cơ sở dữ liệu I.Các bảng dữ liệu Tên Ý nghĩa Kiểu Độ rộng MaHH Mã hàng hóa Char 4 TenHH Tên hàng hóa nVarchar 100 DvTinh Đơn vị tính nVarchar 10 PhanTram Tỷ lệ phần trăm Real Bảng 1. 1: HANGHOA 7 Tên Ý nghĩa Kiểu Độ rộng SoDH Số đơn hàng Char 4 NgayDH Ngày đặt hàng Datetime MaNCC Mã nhà cung cấp Char 3 Bảng 1. 2: NCC Tên Ý nghĩa Kiểu Độ rộng SoDH Số đơn hàng Char 4 NgayDH Ngày đặt hàng Datetime MaNCC Mã nhà cung cấp Char 3 Bảng 1. 3: DONDH Tên Ý nghĩa Kiểu Độ rộng SoDH Số đơn hàng Char 4 MaHH Mã hàng hóa Char 4 SlDat Số lượng đặt Int Bảng 1.
4: CTDONDH Tên Ý nghĩa Kiểu Độ rộng SoPN Số phiếu nhập hàng Char 4 Ngaynhap Ngày nhập hàng Datetime SoDH Số đơn đặt hàng Char 4 Bảng 1. 5: PNHAP 8 Tên Ý nghĩa Kiểu Độ rộng SoPN Số phiếu nhập hàng Char 4 MaHH Mã hàng hóa Char 4 SlNhap Số lượng nhập hàng Int DgNhap Đơn giá nhập hàng Money Bảng 1. 6: CTPNHAP Tên Ý nghĩa Kiểu Độ rộng SoPX Số phiếu xuất hàng Char 4 Ngayxuat Ngày xuất hàng Datetime MaKH Mã khách hàng char 3 Bảng 1. 7: PXUAT Tên Ý nghĩa Kiểu Độ rộng SoPX Số phiếu xuất hàng Char 4 MaHH Mã hàng hóa Char 4 SlXuat Số lượng xuất hàng Int DgXuat Đơn giá xuất hàng Money Bảng 1.
8: CTPXUAT Tên Ý nghĩa Kiểu Độ rộng Namthang Năm tháng Char 6 9 MaHH Mã hàng hóa Char 4 SlDau Số lượng tồn đầu kỳ Int TongSLN Tổng số lượng nhập Int trong kỳ TongSLX Tống số lượng xuất Int trong kỳ SlCuoi Số lượng tồn cuối kỳ Int Bảng 1. 9: TONKHO Tên Ý nghĩa Kiểu Độ rộng MaKH Mã khách hàng Char 3 TenKH Tên khách hàng nVarchar 100 Diachi Địa chỉ nVarchar 100 Dienthoai Điện thoại Varchar 20 Bảng 1. 10: KHACHHANG STT Bảng Cột Bảng tham chiếu 1 DONDH MaNCC NHACC 2 CTDONDH MaHH HANGHOA 3 CTDONDH SoDH DONDH 10 4 PNHAP SoDH DONDH 5 CTPNHAP MaHH HANGHOA 6 CTPNHAP SoPN PNHAP 7 CTPXUAT MaHH HANGHOA 8 CTPXUAT SoPX PXUAT 9 TONKHO MaHH HANGHOA 10 PXUAT MaKH KHACHHANG Bảng 1. 11: Ràng buộc khóa ngoại II.Mô hình quan hệ Bảng 2.
1: Mô hình quan hệ quản lí bán hàng B-Cài đặt cơ sở dữ liệu I-Tạo bảng 1.Tạo CSDL của cửa hàng CREATE DATABASE QLCuaHang ON PRIMARY (NAME=QLCuaHang_Data, FILENAME='D:\QLCuahang_Data.mdf', 11 SIZE=100MB, MAXSIZE=200MB, FILEGROWTH=10MB) LOG ON (NAME=QLCuaHang_Log, FILENAME='D:\QLCuahang_Log.ldf', SIZE=30MB, MAXSIZE=UNLIMITED, FILEGROWTH=5MB) 2.Tạo bảng Hàng Hóa create table HANGHOA ( MaHH char(4) not null, TenHH nvarchar(100) not null, DvTinh nvarchar(10) null, PhanTram real default 20, unique(TenHH), check(Phantram>=0 and PhanTram<=100), primary key(MaHH) ) 3.Tạo bảng Nhà Cung Cấp create table NCC ( MaNCC char(3) not null, TenNCC nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có', 12 primary key(MaNCC), unique(TenNCC,Diachi), ) 4.Tạo bảng Đơn Đặt Hàng create table DONDH ( SoDH char(4) not null, NgayDH datetime default getdate(), MaNCC char(3) null, primary key(SoDH), foreign key(MaNCC) references NCC(MaNCC) ) 5.Tạo bảng Chi Tiết Đơn Đặt Hàng create table CTDONDH ( SoDH char(4) not null, MaHH char(4) not null, SlDat int null, primary key(SoDH,MaHH), check(SlDat>0), foreign key(MaHH) references HANGHOA(MaHH), foreign key(SoDH) references DONDH(SoDH) ) 6.Tạo bảng Phiếu Nhập create table PNHAP 13 ( SoPN char(4) not null, Ngaynhap datetime default getdate(), SoDH char(4) null, primary key(SoPN), foreign key(SoDH) references DONDH(SoDH) ) 7.Tạo bảng Chi Tiết Phiếu Nhập create table CTPNHAP ( SoPN char(4) not null, MaHH char(4) not null, SlNhap int null, DgNhap money null, primary key(SoPN,MaHH), check(SlNhap>0 and DgNhap>0), foreign key(MaHH) references HANGHOA(MaHH), foreign key(SoPN) references PNHAP(SoPN) ) 8.Tạo bảng Phiếu Xuất create table PXUAT ( SoPX char(4) not null, Ngayxuat datetime default getdate(), MaKH char(3) null, 14 primary key(SoPX) ) 9.Tạo bảng Chi tiết Phiếu Xuất create table CTPXUAT ( SoPX char(4) not null, MaHH char(4) not null, SlXuat int null, DgXuat money null, check(SlXuat>0 and DgXuat>0), primary key(SoPX,MaHH), foreign key(MaHH) references HANGHOA(MaHH), foreign key(SoPX) references PXUAT(SoPX) ) 10.Tạo bảng Tồn Kho create table TONKHO ( Namthang char(6) not null, MaHH char(4) not null, SlDau int default 0, TongSLN int default 0, TongSLX int default 0, SlCuoi as SlDau+TongSLN-TongSLX, check(SlDau>=0 and TongSLN>=0 and TongSLX>=0), primary key(Namthang,MaHH), foreign key(MaHH) 15 references HANGHOA(MaHH) ) 11.Tạo bảng Khách Hàng create table KHACHHANG ( MaKH char(3) not null, TenKH nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có', primary key(MaKH), unique(TenKH,Diachi), ) II-Chèn dữ liệu vào bảng 1.Bảng Nhà Cung Cấp 3.Bảng Đơn Đặt Hàng 4.Bảng Chi Tiết Đơn Đặt Hàng 17 5.Bảng Phiếu Nhập 6.Bảng Chi Tiết Phiếu Nhập 7.Bảng Phiếu Xuất 8.Bảng Chi Tiết Phiếu Xuất 18 9.Bảng Khách Hàng III-Các lệnh T_SQL 1.Thiết kế view 1.Thiết kế view vw_CtietNhapXuat. Hiển thị chi tiết nhập xuất của hàng hóa ,các thông tin hiển thị gồm : Mã hàng hóa,Tên hàng hóa,Tổng số lượng nhập,Tổng số lượng xuất của mặt hàng. Thiết kế view vw_CtietPXuatX003. Hiển thị thông tin chi tiết của phiếu xuất X003, các thông tin hiển thị gồm: Mã vâtNtư, số lượng xuất, đơn giá xuất, ngày xuất, tên khách hàng.Thống kê tình hình nhập hàng và đặt hàng của hàng hóa chi tiết với: Số đơn hàng, Mã hàng hóa, Tên hàng hóa,Tổng toàn bộ số lượng đặt và nhập hàng hóa 1.Hiển thị thông tin giá bán của các mặt hàng hóa chi tiết với: Mã hàng hóa, Tên hàng hóa, đơn vị tính , giá bán 1.
Hiển thị thông tin giá mua của các mặt hàng hóa chi tiết với: Mã hàng hóa,Tên hàng hóa,đơn vị tính và giá mua 20 1. Hiển thị các thông tin chi tiết phiếu nhâpNtrong ngày 02/11/2021, các thông tin hiển thị gồm: Số phiếu nhâp, N mã hàng hóa, tên hàng hóa, số lượng nhâp,N đơn giá nhâp,ngày N nhập.Hiển thị danh sách mã hàng hóa, tên hàng hóa của các hàng hóa được nhâpNvào kho nhưng chưa được xuất lWn nào. Tìm phWn trăm số lượng đã đặt hàng của từng vật tư trên tổng cộng các số lượng đã đặt hàng của toàn bộ vật tư. Dữ liệu hiển thị gồm tên vật tư, tổng số lượng đặt theo vật tư, tổng toàn bộ số lượng đặt, phWn trăm.Thống kê số lượng nhập của các mặt hàng hóa trong từng năm tháng tương ứng(không sử dụng tồn kho),thông tin hiển thị gồm: Mã hàng hóa,Tên hàng hóa,Tổng số lượng nhập,thời gian nhập hàng.Thống kê số lượng xuất của các mặt hàng hóa trong từng năm tháng tương ứng(không sử dụng tồn kho),thông tin hiển thị gồm: Mã hàng hóa,Tên hàng hóa,Tổng số lượng xuất,thời gian xuất hàng.Hiển thị thông tin nhà cung cấp có số đơn đặt hàng cao nhất , thông tin hiển thị gồm: Mã nhà cung cấp,Tên nhà cung cấp,Số lWn đã đặt hàng.
Thống kê số lWn mua hàng của khách,thông tin hiển thị :Mã khách hàng,Tên khách hàng,Địa chỉ,Số điện thoại và số lWn đã mua ở cửa hàng. Hiển thị danh sách các khách hàng gồm các thông tin mã khách hàng, tên khách hàng, địa chỉ của những khách hàng chưa có số điện thoại.Thống kê số phiếu xuất theo tháng ,thông tin hiển thị gồm năm xuất, tháng xuất và tổng số phiếu xuất theo tháng 24 1.Thống kê số phiếu nhập theo tháng ,thông tin hiển thị gồm năm xuất, tháng xuất và tổng số phiếu nhập theo tháng 1. In ra danh sách các hàng hóa (MaHH,TenHH) không bán được trong năm 2021. In ra doanh thu của cửa hàng bán được trong năm 2021 25 1.
Hiển thị hàng hóa (MaHH, TenHH) có tổng số lượng bán ra thấp nhất trong năm 2021.Bảng HANGHOA: _ Xây dựng trigger thêm mới dữ liệu vào bảng HANGHOA với tên tg_HANGHOA_Them. Trong đó cWn kiểm tra ràng buộc dữ liệu hợp lệ: Dữ liệu thêm vào phải là duy nhất Create trigger tg_HANGHOA_Them on HANGHOA for insert as begin declare @TenHH nvarchar(100), @dem int select @TenHH=TenHH from inserted select @dem=COUNT(TenHH) from HANGHOA where TenHH=@TenHH if @dem>=2 26 begin print N'Lỗi trùng tên hàng hóa!' rollback tran end end go _ Xây dựng trigger xóa dữ liệu trong bảng HANGHOA với tên tg_HANGHOA_Xoa. Trong đó cWn kiểm tra ràng buộc dữ liệu: Mã hàng hóa này không tồn tại trong bảng CTPXUAT hoặc CTPNHAP, CTDONDH Create trigger tg_HANGHOA_Xoa on HANGHOA for delete as begin declare @MaHH char(4), @dem int select @MaHH=MaHH from deleted select @dem=COUNT(MaHH) from CTPXUAT where MaHH=@MaHH if @dem>=2 begin print N'Dữ liệu về hàng hóa này đang được sử dụng. Không thể xóa!' rollback tran end select @dem=COUNT(MaHH) from CTPNHAP where MaHH=@MaHH if @dem>=2 begin print N'Dữ liệu về hàng hóa này đang được sử dụng.
Không thể xóa!