Đang tải... (xem toàn văn)
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 1TRƯỜ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 23 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 3PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN
Trang 4I.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 74 Mô hình cơ sở dữ liệu
1) tblNhanVien(MaNV,TenNV,NgaySinh,DiaChi,Gtinh,NgayVaoLam,Luongcoban,Phucap,Dienthoai)
Trang 82) tblNhaCungCap(MaNCC , TenNCC, DiaChi, DienThoai)
Trang 9STT Tên thuộc tính Kiểu dữ liệu Ràng buộc
Trang 11create table NhanVien(
MaNV nvarchar( )10 primary key,
Trang 12PhuCap 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 13Soluong 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 17c) 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 18b) 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 19d) 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 20where 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 21d) 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 224.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 23b) 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 24c) 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 25d) 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 26e) Tạo trigger không cho phép sửa lương nhân viên create trigger tg_UpdateLuongNV
Trang 275.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 32GRANT 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 35EXECUTE sp_addrolemember role_NhanVien,datGO
Trang 36C) 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