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
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ỗ
THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU
Thiết kế cơ sở 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
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
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
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
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
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
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
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
Tên Ý nghĩa Kiểu Độ rộng
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 trong kỳ
TongSLX Tống số lượng xuất trong kỳ
SlCuoi Số lượng tồn cuối kỳ Int
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
STT Bảng Cột Bảng tham chiếu
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
Cài đặt cơ sở dữ liệu
1.Tạo CSDL của cửa hàng
2.Tạo bảng Hàng Hóa create table HANGHOA
PhanTram real default 20, unique(TenHH), check(Phantram>=0 and PhanTram0), foreign key(MaHH) references HANGHOA(MaHH), foreign key(SoDH) references DONDH(SoDH)
6.Tạo bảng Phiếu Nhập create table PNHAP
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
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
Ngayxuat datetime default getdate(),MaKH char(3) null, primary key(SoPX)
9.Tạo bảng Chi tiết Phiếu Xuất create table CTPXUAT
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
SlCuoi as SlDau+TongSLN-TongSLX, check(SlDau>=0 and TongSLN>=0 and TongSLX>=0), primary key(Namthang,MaHH), foreign key(MaHH) references HANGHOA(MaHH) )
11.Tạo bảng Khách Hàng create table KHACHHANG
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
4.Bảng Chi Tiết Đơn Đặt Hàng
6.Bảng Chi Tiết Phiếu Nhập
8.Bảng Chi Tiết Phiếu Xuất
1.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
1.2 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â N t tư, số lượng xuất, đơn giá xuất, ngày xuất, tên khách hàng
1.3.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.4.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.5 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
1.6 Hiển thị các thông tin chi tiết phiếu nhâ N p trong ngày 02/11/2021, các thông tin hiển thị gồm: Số phiếu nhâ N p, mã hàng hóa, tên hàng hóa, số lượng nhâ N p, đơn giá nhâ N p,ngày nhập
1.7.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â N p vào kho nhưng chưa được xuất lWn nào
1.8 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
1.9.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
1.10.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
1.11.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
1.12 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
1.13 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
1.14.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
1.15.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.16 In ra danh sách các hàng hóa (MaHH,TenHH) không bán được trong năm 2021
1.17 In ra doanh thu của cửa hàng bán được trong năm 2021
1.18 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
_ 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 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!' rollback tran end select @dem=COUNT(MaHH) from CTDONDH 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 end go
_ Xây dựng trigger sửa dữ liệu trong bảng HANGHOA với tên tg_HANGHOA_Sua Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Dữ liệu đó là duy nhất
Create trigger tg_HANGHOA_Sua on HANGHOA for update 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 begin print N'Lỗi trùng tên hàng hóa!' rollback tran end end go b.