Báo cáo bài tập lớn nhóm 5 đề tài quản lý cửa hàng thuốc

36 1 0
Báo cáo bài tập lớn nhóm 5 đề tài quản lý cửa hàng thuốc

Đ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

I.Phát biểu bài toán● Quản lý thuốc tại cửa hàng thuốc● Giải pháp : thiết kế một hệ thống quản lý thuốc theo yêu cầu của cửa hàng thuốc⮚ Nhằm đơn giản hóa việc quản lý thuốc, tự động hóa

Trang 1

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

-BÁO CÁO BÀI TẬP LỚN MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

NHÓM 5

ĐỀ TÀI : QUẢN LÝ CỬA HÀNG THUỐC

Giảng viên hướng dẫn : ThS Nguyễn Thị Tâm Sinh viên thực hiện : Nguyễn Thành Đạt – 2110A05

Nguyễn Nghiêm Tâm – 2110A05 Lê Văn Sáng – 2110A05 Vũ Hoàng Bắc – 2110A05 Vũ Duy Thắng – 2110A05

Hà Nội, năm 2023

Trang 2

3 Xây dựng mô hình ER 6

4 Mô hình cơ sở dữ liệu 7

III.Xây dựng cơ sở dữ liệu của bài toán 7

Trang 3

PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN

Trang 4

I.Phát biểu bài toán

● Quản lý thuốc tại cửa hàng thuốc

● Giải pháp : thiết kế một hệ thống quản lý thuốc theo yêu cầu của cửa hàng thuốc

⮚ Nhằm đơn giản hóa việc quản lý thuốc, tự động hóa các quy trình , kếtnối CSDL chính xác toàn vẹn, tiết kiệm thời gian chi phí quản lý đảm bảođúng quy trình.

Hệ thống quản lý thuốc được xây dựng nhằm quản lý một số công việc sau:

● Quản lý nhân viên :

Mỗi Nhân Viên có các thông tin sau: mã nhân viên, tên nhân viên, ngàynsinh, địa chỉ,giới tính, lương cơ bản , phụ cấp ,Điện thoại, Ngày vào làm

● Quy định mỗi nhân viên có một mã nhân viên, độ tuổi yêu cầu là trên 22 tuổi.

● Mỗi nhân viên đều có nhiệm vụ bán và quản lý thuốc ● Mỗi nhân viên được phân biệt bởi mã nhân viên

Gồm các thông tin :Mã loại thuốc , Tên loại thuốc ● Mỗi loại thuốc phân biệt bởi mã loại thuốc ● Loại thuốc : thuốc , thực phẩm chức năng

● Nhà cung cấp:

Gồm các thông tin: Mã nhà cung cấp , Tên nhà cung cấp, Địa chỉ, Điện thoại.

Trang 5

● Mỗi một nhà cung cấp được phân biệt bởi mã nhà cung cấp

● Hóa đơn nhập :

Gồm các thông tin: Số hóa đơn, Mã thuốc,Mã nhân viên,MaNCC, Giánhập, Ngày nhập, Số lượng nhập, đơn vị thuốc

● Nhân viên là người tạo hóa đơn ● Mỗi hóa đơn phân biệt bởi Số hóa đơn

● Hóa đơn xuất :

Gồm các thông tin :Số hóa đơn , Mã thuốc ,Mã nhân viên, Giá bán , Ngày bán , Số lượng bán, đơn vị thuốc

● Nhân viên là người xuất và tạo hóa đơn ● Mỗi hóa đơn phân biệt bởi Số hóa đơn ⮚ LOAITHUOC có nhiều THUOC 1-n ⮚ NHACUNGCAP cung cấp THUOC n-n

Trang 6

⮚ NHANVIEN lập HOADONXUAT 1-n ⮚ HOADONNHAP co THUOC n-n ⮚ HOADONXUAT co THUOC n-n

3 Xây dựng mô hình ER

Trang 7

4 Mô hình cơ sở dữ liệu

1) tblNhanVien(MaNV,TenNV,NgaySinh,DiaChi,Gtinh,NgayVaoLam,Luongcoban,Phucap,Dienthoai)

Trang 8

2) tblNhaCungCap(MaNCC , TenNCC, DiaChi, DienThoai)

Trang 9

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc

Trang 11

create table NhanVien(

MaNV nvarchar( )10 primary key,

Trang 12

PhuCap float,

DienThoai text, )

Bảng nhà cung cấp

create table NhaCungCap(

MaNCC nvarchar( )10 primary key,

create table LoaiThuoc(

MaLoaiThuoc nvarchar( )10 primary key,

TenLoaiThuoc nvarchar( )50

● Bảng Thuốc

create table Thuoc(

MaThuoc nvarchar( )10primary key,

constraint FK_Thuoc_MaLoaiThuoc foreign key(MaLoaiThuoc)

references LoaiThuoc(MaLoaiThuoc),

constraint Fk_Thuoc_MaNCC foreign key(MaNCC)

references NhaCungCap(MaNCC)

Trang 13

Soluong float,

GiaMua float,

constraint FK_HoaDonNhap_MaNV foreign key(MaNV)

references NhanVien(MaNV),

constraint FK_tblHoaDonNhap_MaNCC foreign key(MaNCC)

references NhaCungCap(MaNCC),

constraint FK_HoaDonNhap_MaThuoc foreign key(MaThuoc)

references Thuoc(MaThuoc) )

● Bảng Hóa đơn xuất

create table HoaDonXuat(

primary key(SoHD MaThuoc, ),

constraint FK_HoaDonXuat_MaThuoc foreign key(MaThuoc)

references Thuoc(MaThuoc),

constraint FK_HoaDonXuat_MaNV foreign key(MaNV)

references NhanVien(MaNV),

constraint FK_HoaDonXuat_SoHD foreign key(SoHD)

references HoaDonNhap(SoHD) )

3.Nhập dữ liệu

● Bảng nhân viên

● Bảng thuốc

Trang 15

● Bảng loại thuốc

● Bảng nhà cung cấp

● Bảng hóa đơn xuất

Trang 16

● Bảng hóa đơn nhập

IV Thực hiện các yêu cầu

1.Truy vấn dữ liệu

a) Danh sách các nhân viên có lương cơ bản trên 4500000 select * from dbo.NhanVien

where Luong>4500000

b) Danh sách hóa đơn xuất năm 2022 select * from dbo.HoaDonXuat where year(NgayBan)=2022

Trang 17

c) Danh sách tên thuốc có giá lớn hơn 200000 select TenThuoc from dbo.Thuoc where DonGia > 200000

d) Danh sách các nhân viên có giới tính nam select * from NhanVien

where GioiTinh = N’Nam’

e) Danh sách mã nhân viên, tên nhân viên có giới tính nam và lương trên 4800000 select MaNV, TenNV from NhanVien

where GioiTinh = N’Nam’ and Luong>4800000

2.Tạo view

a) Tạo view cho biết mã, tên thuốc được bán năm 2022 create view vThuoc_2022 as

select T.MaThuoc,T.TenThuoc from dbo.Thuoc as T, dbo.HoaDonXuat as HD where T.MaThuoc = HD.MaThuoc

and year(HD.NgayBan) = 2022

Trang 18

b) Tạo view cho biết danh sách tên thuốc không được nhập về năm 2023 create view vThuocKhongNhap_2023 as

select T.MaThuoc, T.TenThuoc from dbo.Thuoc as T, dbo.HoaDonNhap as HD where T.MaThuoc = HD.MaThuoc

and year(HD.NgayLap) != 2023

c) Tạo view cho biết danh sách 2 loại thuốc được mua nhiều nhất create view v2LoaiThuocMuaNhieu as

select top(2)LT.TenLoaiThuoc, count(HD.SoHD) as [Số lượng mua] from dbo.LoaiThuoc as LT, dbo.Thuoc as T, dbo.HoaDonXuat as HD where LT.MaLoaiThuoc = T.MaLoaiThuoc

and T.MaThuoc = HD.MaThuoc group by TenLoaiThuoc order by count(SoHD) desc

Trang 19

d) Tạo view tổng tiền đã bán của từng nhân viên năm 2023 create view vTongTienBan2023 as

select NV.MaNV, NV.TenNV, sum(HD.GiaBan * HD.SoLuong) as [Tổng tiền bán năm 2023] from NhanVien as NV left join HoaDonXuat as HD

on NV.MaNV = HD.MaNV where year(HD.NgayBan) = 2023 group by NV.MaNV, NV.TenNV

e) Tạo view tổng tiền nhập hàng về của từng nhân viên năm 2022 create view vTongTienNhapTungNV2022 as

select NV.MaNV, NV.TenNV, sum(HD.Soluong * HD.GiaMua) as [Tổng tiền nhập hàng 2022] from NhanVien as NV left join HoaDonNhap as HD

on NV.MaNV = HD.MaNV where year(HD.NgayLap) = 2022 group by NV.MaNV, NV.TenNV

3.Tạo procedure

a)Thủ tục lấy ra tên loại thuốc với mã thuốc là tham số truyền vào create procedure sp_TenLoaiThuoc

@mathuoc nvarchar(20) AS

select TenLoaiThuoc from Thuoc,LoaiThuoc

Trang 20

where Thuoc.MaLoaiThuoc = LoaiThuoc.MaLoaiThuoc and MaThuoc=@mathuoc

Exec sp_TenLoaiThuoc @mathuoc = 'T07'

b) Thủ tục lấy ra số lượng nhân viên sinh trong tháng, với tháng là tham số truyền vào create proc sp_SoNVSinhTrongThang

@Thang int as

select count(*) from NhanVien where month(NgaySinh) = @Thang exec sp_SoNVSinhTrongThang @Thang = 10

c) Thủ tục truyền vào năm và cho biết nhân viên bắt đầu làm từ năm đó create proc sp_NamVaoLam

@nam int as begin

select * from NhanVien

where year(NgayVaoLam) = @nam end

exec sp_NamVaoLam @nam = 2022

Trang 21

d) Thủ tục cho biết nhân viên có tổng lương cao nhất( Tổng lương = Lương + Lương* phụ cấp) create proc sp_NvTongLuongMax

(@MaxLuong float output)

declare @MaxLuong float = 0

exec sp_NvTongLuongMax @MaxLuong output select @MaxLuong as N'Tổng lương cao nhất của nhân viên '

e) Thủ tục cho biết danh sách các mặt hàng không bán được trong năm nào đó, với năm là tham số truyền

select MaThuoc,TenThuoc from Thuoc where MaThuoc not in

(select T.MaThuoc from Thuoc as T join HoaDonXuat as HD

Trang 22

4.Tạo trigger

a) Thêm hoặc sửa nhân viên thì tuổi phải >18 create trigger tg_TuoiLonHon18 on NhanVien

after insert, update as

Declare @tuoi int

set @tuoi = (select YEAR(getdate()) - year(NgaySinh) from inserted)

select * from NhanVien insert into NhanVien

values('NV06', N'Lê Anh Đức','10/16/2007',N'Nam Định',N'Nam','7/11/2022',3800000,0.1,'0983652547')

Trang 23

b) Viết trigger giới tính của nhân viên là nam hoặc nữ

create trigger tg_GioiTinh

select * from NhanVien insert into NhanVien

values('NV06', N'Lê Anh Đức','10/16/2002',N'Nam Định',N'Nam','7/11/2022',4500000,0.1,'0983652547')

Trang 24

c) Trigger không cho phép sửa cột giới tính nếu không phải là Nam hoặc Nữ create trigger tg_KoSuaGioiTinh

on NhanVien for update as begin

Declare @gtMoi nvarchar(10) select @gtMoi = GioiTinh from inserted

Trang 25

d) Tạo trigger yêu cầu giá bán ra phải >= giá gốc create trigger tg_Giaca

on HoaDonXuat for insert as begin

declare @giaban int, @giagoc int, @maT nvarchar(10)

select @giaban = inserted.GiaBan, @maT = inserted.MaThuoc from inserted select @giagoc = DonGia from Thuoc where @maT = MaThuoc

Trang 26

e) Tạo trigger không cho phép sửa lương nhân viên create trigger tg_UpdateLuongNV

Trang 27

5.Phân quyền

A) Phân quyền cho các thành viên

- phân quyền cho thành viên thứ nhất create login NghiemTam2003 with password='nghiemtam2003' create user NghiemTam for login NghiemTam2003 go

- phân quyền cho thành viên thứ hai create login VanSang2003 with password='vansang2003' create user vansang for login VanSang2003 go

- phân quyền cho thành viên thứ ba create login HoangBac2003 with password='bac2003' create user bac for login HoangBac2003 go

- phân quyền cho thành viên thứ tưcreate login DuyThang2003with password='thang2003'create user thangfor login DuyThang2003

Trang 28

- phân quyền cho thành viên thứ 5 create login ThanhDat2003 with password='dat2003' create user Dat for login ThanhDat2003 go

B) Cấp quyền cho các thành viên

- tạo Role quyền select các bảng tblNhanVien, tblThuoc, tblLoaiThuocCREATE ROLE role_NhanVien ;

Trang 29

/*Người dùng Nghiêm Tâm

+ Quyền INSERT, UPDATE ,DELETE tblNhanVIen + Thêm addrolemember role_NhanVien */

GRANT INSERT,UPDATE,DELETE ON NhanVien TO NghiemTam

EXECUTE sp_addrolemember role_NhanVien,NghiemTamGO

Trang 30

/*Người dùng Văn Sáng

+ Quyền INSERT, UPDATE ,DELETE tblLoaiHang và tblNhaCungCap + Thêm addrolemember role_NhanVien */

GRANT INSERT,UPDATE,DELETE ON LoaiThuoc TO vansang

Trang 31

+ Quyền SELECT ,INSERT ,DELETE tblThuoc+ Thêm addrolemember role_NhanVien */

Trang 32

GRANT Select,INSERT,DELETE ON Thuoc TO bac

EXECUTE sp_addrolemember role_NhanVien, bacGO

Trang 33

/*Người dùng Duy Thắng

+ Quyền INSERT, UPDATE ,DELETE tblHoaDonNhap và tblHoaDonXuat + Thêm addrolemember role_NhanVien */

GRANT INSERT,UPDATE,DELETE ON HoaDonNhap

Trang 34

/*Người dùng Thành Đạt

+ Quyền INSERT, UPDATE ,DELETE tblHoaDonNhap và tblHoaDonXuat + Thêm addrolemember role_NhanVien */

GRANT INSERT,UPDATE,DELETE ON HoaDonNhap

Trang 35

EXECUTE sp_addrolemember role_NhanVien,datGO

Trang 36

C) Thu hồi / tước quyền

1 nghiem tam thu hồi quyền xóa bảng khách hàng và cấm sử dụng quyền SELECT bảng NhanVien trong role

REVOKE DELETE ON NhanVien FROM NghiemTam; GO

DENY SELECT ON NhanVien TO NghiemTam; GO

2 van sang thu hoi quyen xoa loai hang

REVOKE DELETE ON LoaiThuoc FROM vansang GO

3 hoang bac thu hồi quyền SELECT tblThuoc REVOKE SELECT ON Thuoc FROM bac; GO

4 duy thang cấm sử dụng quyền SELECT tblHoaDonNhap DENY SELECT ON HoaDonNhap TO thang;

5 thanh dat cấm sử dụng quyền SELECT tblHoaDonNhap DENY SELECT ON HoaDonNhap TO dat;

GO

Ngày đăng: 08/04/2024, 12:50

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

Tài liệu liên quan