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ệucho cửa hàng tạp hóa

48 0 0
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ệucho cửa hàng tạp hóa

Đ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

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

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

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:

Cán bộ coi thi, chấm thi 1 Cán bộ coi thi, chấm thi 2

HÀ NỘI - 2021

Trang 2

NHẬN XÉT CỦA GIÁO VIÊN

Trang 3

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 7

7.Tạo bảng Chi Tiết Phiếu Nhập 14

8.Tạo bảng Phiếu Xuất 14

9.Tạo bảng Chi tiết Phiếu Xuất 15

Trang 5

BẢNG PHÂN CÔNG NHIỆM VỤ

Họ tênMã sinh viên

1 Khảo sát yêu cầu, thiết kế CSDL (các 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

Trang 6

Bảng 1 11: Ràng buộc khóa ngoại 11

YBảng 2 1: Mô hình quan hệ quản lí bán hàng 11

Trang 7

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ỆUA-Thiết kế cơ sở dữ liệu

I.Các bảng dữ liệu

PhanTram Tỷ lệ phần trăm Real Bảng 1 1: HANGHOA

Trang 8

TênÝ nghĩaKiểuĐộ rộng

Bảng 1 2: NCC

Bảng 1 3: DONDH

Bảng 1 4: CTDONDH

Ngaynhap Ngày nhập hàng Datetime

Bảng 1 5: PNHAP

Trang 9

TênÝ nghĩaKiểuĐộ rộng

SlNhap Số lượng nhập hàng Int DgNhap Đơn giá nhập hàng Money

Bảng 1 6: CTPNHAP

Ngayxuat Ngày xuất hàng Datetime

Bảng 1 7: PXUAT

SlXuat Số lượng xuất hàng Int DgXuat Đơn giá xuất hàng Money

Bảng 1 8: CTPXUAT

Trang 10

MaHH Mã hàng hóa Char 4 SlDau Số lượng tồn đầu kỳ Int

Bảng 1 10: KHACHHANG

Trang 11

4 PNHAP SoDH DONDH

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ệuI-Tạo bảng

1.Tạo CSDL của cửa hàng

CREATE DATABASE QLCuaHang ON PRIMARY

FILENAME='D:\QLCuahang_Data.mdf',

Trang 12

MaHH char(4) not null, TenHH nvarchar(100) not null, DvTinh nvarchar(10) null, PhanTram real default 20,

MaNCC char(3) not null, TenNCC nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có',

Trang 13

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,

Trang 14

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,

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,

Trang 15

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),

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)

Trang 16

MaKH char(3) not null, TenKH nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có',

Trang 17

2.Bảng Nhà Cung Cấp

3.Bảng Đơn Đặt Hàng

4.Bảng Chi Tiết Đơn Đặt Hàng

Trang 19

9.Bảng Khách Hàng

III-Các lệnh T_SQL

1.Thiết kế view

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

giá xuất, ngày xuất, tên khách hàng.

Trang 20

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

Trang 21

1.6 Hiển thị các thông tin chi tiết phiếu nhâ Np trong ngày 02/11/2021,

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

Trang 22

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.

Trang 23

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.

Trang 24

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

Trang 25

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

Trang 26

1.18 Hiển thị hàng hóa (MaHH, TenHH) có tổng số lượng bán ra thấpnhấ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êntg_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

Trang 27

_ Xây dựng trigger xóa dữ liệu trong bảng HANGHOA với têntg_HANGHOA_Xoa Trong đó cWn kiểm tra ràng buộc dữ liệu: Mã hàng hóanà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

Trang 28

_ Xây dựng trigger sửa dữ liệu trong bảng HANGHOA với têntg_HANGHOA_Sua Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp

declare @TenHH nvarchar(100), @dem int select @TenHH=TenHH from inserted

select @dem=COUNT(TenHH) from HANGHOA where

Trang 29

Bảng NCC

_ Xây dựng trigger sửa dữ liệu trong bảng NCC với tên tg_NCC_Them.Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Dữ liệu đó là duy

declare @TenNCC nvarchar(100), @dem int select @TenNCC=TenNCC from inserted

select @dem=COUNT(TenNCC) from NCC where

_ Xây dựng trigger xóa dữ liệu trong bảng NCC với tên tg_NCC_Xoa.Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Mã nhà cung cấpnày không tồn tại trong bảng DONDH

Create trigger tg_NCC_Xoa on NCC for delete

as begin

declare @MaNCC char(4), @dem int select @MaNCC=MaNCC from deleted

select @dem=COUNT(MaNCC) from DONDH where MaNCC=@MaNCC

Trang 30

_ Xây dựng trigger sửa dữ liệu trong bảng NCC với tên tg_NCC_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

declare @TenNCC nvarchar(100), @dem int select @TenNCC=TenNCC from inserted

select @dem=COUNT(TenNCC) from NCC where

_ Xây dựng trigger sửa dữ liệu trong bảng KHACHANG với têntg_KHACHHANG_Them Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệuhợp lệ: Dữ liệu đó là duy nhất

Trang 31

Create trigger tg_KHACHHANG_Them on KHACHHANG for insert

as begin

declare @TenKH nvarchar(100), @dem int select @TenKH=TenKH from inserted

select @dem=COUNT(TenKH) from KHACHHANG where

_ Xây dựng trigger xóa dữ liệu trong bảng KHACHHANG với têntg_KHACHHANG_Xoa Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệuhợp lệ: Mã khách hàng này không tồn tại trong bảng PXUAT

Create trigger tg_KHACHHANG_Xoa on KHACHHANG for delete

as begin

declare @MaKH char(4), @dem int select @MaKH=MaKH from deleted

select @dem=COUNT(MaKH) from PXUAT where

Trang 32

rollback tran end

end go

_ Xây dựng trigger sửa dữ liệu trong bảng KHACHANG với têntg_KHACHHANG_Sua Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu

declare @TenKH nvarchar(100), @dem int select @TenKH=TenKH from inserted

select @dem=COUNT(TenKH) from KHACHHANG where

_ Xây dựng trigger sửa dữ liệu trong bảng DONDH với têntg_DONDH_Them Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp

Trang 33

declare @SoDH char(4), @dem int select @SoDH=SoDH from inserted

select @dem=COUNT(SoDH) from DONDH where

_ Tạo Trigger kiểm tra việc xóa dữ liệu cho bảng DONDH với têntg_DONDH_Xoa Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:

+Nếu đã có ít nhất một phiếu nhập hàng cho đơn đặt hàng đó thì thôngbáo không thể xóa đơn đặt hàng

+Nếu chưa có phiếu nhập nào thì tự động xóa các dữ liệu liên quan

declare @SoPN char(4), @Loi char(200)

if exists(select SoPN from PNHAP where SoDH in (select SoDH from deleted))

begin

select @SoPN=min(SoPN) from PNHAP where SoDH in (select SoDH from deleted)

set @Loi=N'Đơn đặt hàng đã được nhập theo phiếu nhập' +@SoPN+ 'không thể hủy đơn đặt hàng!'

rollback tran

Trang 34

_ Tạo trigger sửa dữ liệu cho bảng DONDH với tên tg_DONDH_Sua.Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ: Không được sửa các dữliệu SoDH hoặc MaNCC vì nó liên quan tới nhiều bảng khác

Create trigger tg_DONDH_Sua on DONDH

_ Xây dựng trigger thêm dữ liệu trong bảng CTDONDH với têntg_DONDH_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:SoDH có tồn tại trong bảng DONDH

Create trigger tg_CTDONDH_Them on CTDONDH for insert

as

Trang 35

declare @SoDH char(4),@Loi char(200)

if not exists (select *from inserted,DONDH where

_ Xây dựng trigger xóa dữ liệu trong bảng CTDONDH với têntg_DONDH_Xóa Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Không được xóa SoDH nếu SoDH đã tồn tại trong bảng DONDH

Create trigger tg_CTDONDH_Xoa on CTDONDH for delete

as begin

declare @Loi char(200)

select SoDH from DONDH where SoDH in (select SoDH

_Xây dựng trigger sửa dữ liệu trong bảng CTDONDH với têntg_DONDH_Sua Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Không được sửa SoDH vì liên quan đến nhiều bảng

Create trigger tg_CTDONDH_Sua on CTDONDH for update

Trang 36

_ Xây dựng trigger khi thêm mới dữ liệu vào bảng PNHAP với têntg_PNHAP_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu phải hợp lệ:Ngày nhập hàng phải sau ngày đặt hàng

Create trigger tg_PNHAP_Them on PNHAP

Trang 37

rollback tran end

end go

_ Xây dựng trigger khi xoá dữ liệu trong bảng PNHAP với têntg_PNHAP_XOA Trong đó cWn thực hiện hành động: Tự động xoá các dòngdữ liệu liên quan bên bảng CTPNHAP

Create trigger tg_PNHAP_Xoa on PNHAP for delete

as begin

declare @SoPN char(4)

select @SoPN =SoPN from deleted

if exists(select SoPN from CTPNHAP where SoPN=@SoPN)

delete from CTPNHAP where SoPN=@SoPN end

_ Xây dựng trigger khi sửa dữ liệu trong bảng PNHAP với têntg_PNHAP_SUA Trong đó cWn kiểm tra các ràng buộc dữ liệu phải hợp lệ:

+ Không cho phép sửa đổi giá trị của các cột: số nhập hàng, số đặthàng

+ Kiểm tra giá trị mới của cột ngày nhập hàng phải sau ngày đặt hàng

Create trigger tg_PNHAP_Sua on PNHAP for update

as begin

declare @ngaynhap datetime,@ngaydathang datetime if (update (SoPN) or update(SoDH))

Trang 38

_ Xây dựng trigger khi thêm mới dữ liệu vào bảng CTPNHAP với têntg_CTPNHAP_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu: Số lượngnhập hàng <= (Số lượng đặt – Tổng số lượng đã nhập vào trước đó)tg

Create trigger tg_CTPNHAP_Them on CTPNHAP for insert

as begin

declare @SoPN char(4), @MaHH char(4), @Tongnhap int, @SoDH char(4), @SlDat int

select @SoPN=SoPN, @MaHH=MaHH from inserted select @SoDH=SoDH from PNHAP where SoPN=@SoPN select @SlDat=SlDat from CTDONDH where SoDH=@SoDH and MaHH=@MaHH

select @Tongnhap=sum(SlNhap) from CTPNHAP,PNHAP

PNHAP.SoPN=CTPNHAP.SoPN

Trang 39

if (@Tongnhap>(select SlDat from CTDONDH where SoDH=@SoDH and MaHH=@MaHH))

_ Tạo thêm cột Thanhtien cho bảng CTPNHAP, sau đó tạo trigger cậpnhật giá trị tự động cho cột Thanhtien

Alter table CTPNHAP add Thanhtien money Create Trigger Capnhat_Thanhtien on CTPNHAP

For Insert, Update As

Declare @MaHH char(4), @SoPn char(4)

Select @MaHH=MaHH, @SoPN=SoPN from Inserted Update CTPNHAP set ThanhTien = SlNhap*DgNhap where (MaHH=@MaHH) and (SoPN=@SoPN)

end go

_ Xây dựng trigger khi xoá dữ liệu trong bảng CTPNHAP với têntg_CTPNHAP_Xoa Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Không thể xóa nếu số phiếu nhập có tồn tại trong bảng phiếu nhập

Create trigger tg_CTPNHAP_Xoa on CTPNHAP

Trang 40

select @SoPN=SoPN from deleted

select @dem=COUNT(SoPN) from PNHAP where

_ Sửa Trigger để giá trị cột ThanhTien = SlNhap*DgNhap*2:

Alter Trigger Capnhat_Thanhtien on CTPNHAP For Insert, Update

As begin

Declare @MaHH char(4), @SoPN char(4)

Select @MaHH=MaHH, @SoPN=SoPN from Inserted Update CTPNHAP

(MaHH=@MaHH) and (SoPN=@SoPN) end

go h.

Bảng PXUAT

_ Xây dựng trigger khi thêm dữ liệu trong bảng PXUAT với têntg_PXUAT_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:MaKH phải tồn tại trong bảng khách hàng

Create trigger tg_PXUAT_Them on PXUAT for insert

as

Trang 41

declare @MaKH char(3), @Loi char(200)

if not exists(select *from inserted,KHACHHANG where

_ Xây dựng trigger khi xoá dữ liệu trong bảng PXUAT với têntg_PXUAT_XOA Trong đó cWn thực hiện hành động: Tự động xoá các dòngdữ liệu liên quan bên bảng CTPXUAT

Create trigger tg_PXUAT_Xoa on PXUAT for delete

as begin

declare @SoPX char(4)

select @SoPX=SoPX from deleted

if exists(select SoPX from CTPXUAT where SoPX=@SoPX)

delete from CTPXUAT where SoPX=@SoPX end

_ Xây dựng trigger khi sửa dữ liệu trong bảng PXUAT với têntg_PXUAT_Sua Trong đó cWn thực hiện hành động: Không cho phép sửagiá trị của cột SoPX

Create trigger tg_PXUAT_Sua on PXUAT for update

as

Trang 42

_ Xây dựng trigger khi thêm dữ liệu trong bảng CTPXUAT với têntg_CTPXUAT_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:SoPX phải tồn tại trong bảng phiếu xuất

Create trigger tg_CTPXUAT_Them on CTPXUAT for insert

as begin

declare @SoPX char(4), @Loi char(200)

if not exists(select *from inserted,PXUAT where

_ Xây dựng trigger khi thêm dữ liệu trong bảng CTPXUAT với têntg_CTPXUAT_Them Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ: Sốlượng xuất < Số lượng cuối trong bảng tồn kho

Create trigger tg_CTPXUAT_Them2 on CTPXUAT for insert

as begin

Ngày đăng: 31/03/2024, 17:01

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan