Báo cáo bài tập lớn hệ quản trị cơ sở dữ liệu sql đề tài quản lý kinh doanh máy tính

65 0 0
Báo cáo bài tập lớn hệ quản trị cơ sở dữ liệu sql đề tài  quản lý kinh doanh máy tính

Đ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

Phát biểu bài toán Khi có yêu cầu nhập thiết bị, hàng hoá: nhân viên tiến hành ghi phiếu yêu cầu gồm các thông tin chi tiết về thiết bị, hàng hoá và gửi đến cho nhà cung cấp.. Bên phía

Trang 1

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

Khi có yêu cầu nhập thiết bị, hàng hoá: nhân viên tiến hành ghi phiếu yêu cầu gồm các thông tin chi tiết về thiết bị, hàng hoá và gửi đến cho nhà cung cấp Bên phía nhà cung cấp sẽ gửi đơn chào hàng trong đó có chi tiết các thiết bị bao gồm các thông tin như: tên, loại thiết bị, số lượng, nguồn gốc… Qua đơn chào hàng của nhà cung cấp thì cửa hàng sẽ xem xét và đưa ra đơn đặt hàng rồi gửi đến cho nhà cung cấp, để đáp ứng nhu cầu nhập thiết bị của cửa hàng nhà cung cấp sẽ vận chuyển thiết bị cho cửa hàng theo hợp đồng mua,bán hàng hóa và biên lai bàn giao thiết bị (kiêm hóa đơn thanh toán tiền thiết bị) Trước khi nhập hàng vào kho thì cửa hàng sẽ kiểm tra xem đã đủ thiết bị chưa theo biên bản bàn giao thiết bị mà nhà cung cấp gửi đến, đồng thời cửa hàng sẽ ghi các thông tin cần thiết vào sổ chi và sổ kho Nếu thiết bị nào không đạt yêu cầu thì cửa hàng sẽ trả lại nhà cung cấp, và yêu cầu nhà cung cấp cấp lại những thiết bị như hợp đồng đã thỏa thuận

Khi khách có nhu cầu mua thiết bị, khách hàng xem thông tin hàng hóa, tìm kiếm sản phẩm, hàng hoá cần mua Nếu khách hàng chọn được thiết bị cần mua thì cửa hàng sẽ kiểm tra trong kho, nếu trong kho còn hàng thì nhân viết sẽ viết phiếu bán hàng Sau đó cửa hàng sẽ tiến hành bàn giao thiết bị cho khách và gửi đến khách hàng hóa đơn thanh toán, phiếu bảo hành và các giấy tờ liên quan, có kèm theo các khuyến mại (nếu có)

Khi khách đã thanh toán tiền thiết bị thì cửa hàng sẽ lập biên lai thu tiền cho khách đồng thời sẽ ghi các thông tin cần thiết vào sổ thu và sổ kho Để tiện cho việc quản lý hệ thống sẽ lưu trữ và quản lý thông tin về nhà cung cấp và thông tin khách hàng Có thể sửa hoặc xóa khi cần thiết Sau một khoảng thời gian nhất định nhân viên các bộ phận sẽ tổng hợp thông tin mua, bán, và các thông tin khác

II Mô hình CSDL

● tblLoaiHang MaLoaiHang ( , TenLoaiHang);

● tblNhaCungCap (MaNCC, TenNhaCC, TenGiaoDich, DiaChi,

Trang 2

● tblKhachHang (MaKH, TenKH, DiaChi, DienThoai); ● tblNhanVien MaNV ( , TenNV, DiaChi, DienThoai,

NgaySinh,GioiTinh, NgayVaoLam, LuongCoBan, PhuCap);

● tblDonDatHang (SoHD, MaNV MaKH, NgayDatHang, , NgayGiaoHang, DiaChiGiaoHang, TongTienHD);

● tblChiTietDatHang (SoHD, MaHang, GiaBan, SoLuongMua,

MucGiamGia);

● tblDonNhapKho (SoNK, MaNV, NgayNhapHang,

TongSoLuong);

● tblChiTietNhapKho (SoNK, MaHang, GiaNhap, SoLuongNhap)

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

1 sMaLoaiHang varchar(20) PK Mã loại hàng 2 sTenLoaiHang nvarchar(30) Tên loại hàng

*tblNhaCungCap

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

2 sTenNhaCC nvarchar(30) Tên nhà cung cấp 3 sTenGiaoDich nvarchar(50) Tên nhà giao dịch

*tblMatHang

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

Trang 3

4 sMaLoaiHang varchar(20) FK Mã loại hàng

*tblNhanVien

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

3 sDiaChi nvarchar(50) Địa chỉ

5 dNgaySinh Datetime dNgaysinh

*tblDonDatHang

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

4 dNgayDatHang Datetime Ngày đặt hàng 5 dNgayGiaoHang Datetime dNgayGiao

Hang >=

Ngày giao hàng lớn hơn hoặc bằng

ngày đặt hàng

Trang 4

dNgayDatH ang

6 sDiaChiGiaoHang nvarchar(50) Địa chỉ giao hàng 7 fTongTienHD float fTongTienH

Tổng tiền của hóa đơn

*tblChiTietDatHang

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

2 sMaHang varchar(20) PK, FK Mã hàng

*tblDonNhapKho

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng

Buộc

Ghi Chú

3 dNgayNhapHang Datetime Ngày nhập hàng 4 fTongSoLuong float fTongSoL

uong >0

Tổng số lượng hàng nhập kho

*tblChiTietNhapKho

TT Tên Thuộc Tính Kiểu Dữ Liệu Ràng Buộc Ghi Chú

1 iSoNK Int PK, FK Số hóa đơn nhập kho 2 sMaHang varchar(20) PK, FK Mã hàng

4 fSoLuongNhap float fSoLuongN hap >0

Số lượng nhập

Trang 5

III Tạo CSDL 1 Tạo Database

Hình 1: Database Diagram

Trang 6

CREATE DATABASE BTLN09QuanLyKinhDoanhMayTinh

iMaNCC INT REFERENCES dbo.tblNhaCungCap(iMaNCC), sMaLoaiHang VARCHAR(20) REFERENCES

Trang 7

iMaKH INT PRIMARY KEY,

iSoHD INT PRIMARY KEY,

iMaNV INT REFERENCES dbo.tblNhanVien(iMaNV), iMaKH INT REFERENCES dbo.tblKhachHang(iMaKH),

iSoHD INT REFERENCES dbo.tblDonDatHang(iSoHD),

sMaHang VARCHAR(20) REFERENCES dbo.tblMatHang(sMaHang), fGiaBan FLOAT,

iSoLuongMua INT,

Trang 8

iSoNK INT PRIMARY KEY,

iMaNV INT REFERENCES dbo.tblNhanVien(iMaNV),

iSoNK INT REFERENCES dbo.tblDonNhapKho(iSoNK),

sMaHang VARCHAR(20) REFERENCES dbo.tblMatHang(sMaHang), fGiaNhap FLOAT,

fSoLuongNhap FLOAT CHECK (fSoLuongNhap >0),

CONSTRAINT pk_chitietnhapkho PRIMARY KEY(iSoNK,sMaHang)

INSERT INTO dbo.tblNhaCungCap VALUES

(101, N'ASUS', N'Nhập Hàng Asus', N'Hà Nội', '0334455667'), (102, N'DELL', N'Nhập Hàng Dell', N'Đà Nẵng', '0334455668'), (103, N'APPLE', N'Nhập Hàng Apple', N'Hải Phòng', '0334455669'), (104, N'LENOVO', N'Nhập Hàng Lenovo', N'TP Hồ Chí Minh', '0334455670' )

Trang 9

tblKhachHang

INSERT INTO dbo.tblKhachHang VALUES

(111, N'Trần Anh Vũ', N'Giáp Nhị, Hà Nội', '0112233445'), (112, N'Trần Thanh Tâm', N'Hoàng Mai, Hà Nội', '0112233446'), (113, N'Nguyễn Minh Tú', N'Minh Khai, Hà Nội', '0112233447'), (114, N'Đỗ Thu Phương', N'Giáp Bát, Hà Nội', '0112233448'), (115, N'Lê Văn Tráng', N'Định Công, Hà Nội', '0112233449')

INSERT INTO dbo.tblMatHang VALUES

('MH01', N'ASUS VivoBook 15 A512DA', 101, 'LH01', 400, 12290000), ('MH02', N'ASUS Laptop 15 X509UA', 101, 'LH01', 350, 10700000), ('MH03', N'Laptop Dell XPS 13', 102, 'LH01', 100, 40400000), ('MH04', N'Laptop Dell Gaming G3', 102, 'LH01', 200, 21000000), ('MH05', N'Laptop Lenovo Thinkpad X13', 104, 'LH01', 150, 34500000), ('MH06', N'Apple MacBook Pro', 103, 'LH01', 250, 35500000), ('MH12', N'Tai nghe AirPods 2', 103, 'LH03', 200, 3990000), ('MH13', N'Apple Magic Mouse 2', 103, 'LH03', 200, 2490000), ('MH14', N'CPU AMD Ryzen 9', 101, 'LH03', 150, 19299000), ('MH15', N'Card đồ họa RTX3060TI', 101, 'LH03', 200, 13149000) tblDonNhapKho

Trang 10

INSERT INTO dbo.tblDonNhapKho VALUES

Trang 11

SELECT * FROM dbo.tblLoaiHang

SELECT * FROM dbo.tblMatHang

Trang 12

SELECT * FROM dbo.tblNhaCungCap

SELECT *FROM dbo.tblKhachHang

SELECT * FROM dbo.tblNhanVien

SELECT * FROM dbo.tblDonDatHang

Trang 13

SELECT * FROM dbo.tblChiTietDatHang

SELECT * FROM dbo.tblDonNhapKho

SELECT * FROM dbo.tblChiTietNhapKho

Trang 14

IV Xây dựng các view cho CSDL

1 Tạo view chứa danh sách nhân viên với các thông tin: Mã Nhân Viên, Tên Nhân Viên, Lương Cơ Bản, Phụ Cấp

CREATE VIEW vv_dsnhanvien AS

SELECT iMaNV AS [Mã Nhân Viên],sTenNV AS [Họ & Tên], fLuongCoBan AS [Lương Cơ Bản], fPhuCap AS [Phụ Cấp] FROM dbo.tblNhanVien

SELECT * FROM vv_dsnhanvien

2 Tạo view cho biết danh sách tên hàng đã bán trong tháng 6 năm 2020 CREATE VIEW vv_dshangban2020

Trang 15

3 Tạo view cho biết mặt hàng có số lượng lớn hơn 200 CREATE VIEW vv_dshangbansoluong200 AS

SELECT sMaHang,sTenHang,fSoLuong FROM dbo.tblMatHang

WHERE fSoLuong > 200

SELECT * FROM vv_dshangbansoluong200

4 Tạo view chứa danh sách nhân viên nam CREATE VIEW vv_dsnhanviennam AS

SELECT *

FROM dbo.tblNhanVien WHERE sGioiTinh = N'Nam' SELECT * FROM vv_dsnhanviennam

Trang 24

SELECT * FROM vv_soluongvatongtiensp2020

20 Tạo view nhân viên làm việc trên 2 năm

CREATE VIEW vv_nhanvienlamtren2nam

Trang 25

V Xây dựng các Procedure cho CSDL

1 Tìm nhân viên theo tên nhân viên

CREATE PROC sptimnhanvien_tennhanvien (@tennhanvien

EXEC sptimnhanvien_tennhanvien N'Vương Quang Huy'

2 Tổng tiền hàng bán ra trong một tháng trong 1 năm

CREATE PROC sptongtienhangban_thang (@thang int, @nam int) WHERE tblDonDatHang.iSoHD = tblDonDatHang.iSoHD

AND MONTH(dNgayGiaoHang) = @thang AND YEAR(dNgayGiaoHang) = @nam

Trang 26

CREATE PROC spluongnhanvien_maNV (@maNV nvarchar(20))

EXEC spluongnhanvien_maNV @maNV=N'1010'

4 Mặt hàng không bán được trong năm

CREATE PROC dskhongduocban2020 (@nam INT) AS

BEGIN

SELECT tblmathang.smahang, tblmathang.stenhang FROM tblmathang where tblmathang.smahang NOT IN (SELECT tblmathang.smahang

EXEC dskhongduocban2020 @nam='2020'

5 Tạo thủ tục bổ sung thêm 1 bản ghi mới cho tblChiTietDatHang CREATE PROC spthemHD (@mahd nvarchar(10),@mahang

Trang 27

nvarchar(10), @giaban float, @SLmua int, @mucgiamgia float) AS

BEGIN

INSERT INTO tblChiTietDatHang

VALUES (@mahd, @mahang, @giaban, @SLmua,

CREATE PROC sptangluongcoban_nhanvien (@chitieu int, @nam int, @phantram float)

Trang 28

7 Doanh số bán ra của một mặt hàng trong năm

CREATE PROC spdoanhso1mathang1nam (@mahang nvarchar(10),

EXEC spdoanhso1mathang1nam @mahang='MH11', @nam='2019'

8 Tổng số tiền hàng thu được của một năm

Trang 29

CREATE PROC sptienhang1nam (@nam int)

EXEC sptienhang1nam @nam='2019'

9 Tổng tiền hàng nhập vào của một năm

CREATE PROC sp_tongtiennhaphang1nam (@Nam int)

Trang 30

10 Giỏ hàng của khách hàng (sản phẩm đã mua + đã giao)

CREATE PROC spgiohang_khachhang (@makh int)

11 Thống kê hàng nhập từ một nhà cung cấp trong một năm

CREATE PROC spthongkesanpham_nhacungcap (@mancc

Trang 31

12 Truy xuất nguồn gốc của một mặt hàng

CREATE PROC spchitiet_mathang (@mamathang nvarchar(20))

Trang 32

13 Giảm giá với đơn đặt hàng chưa áp dụng giảm giá và được đặt hàng trong ngày hôm nay ( mức giảm giá x%)

CREATE PROC spmucgiamgia_dondathang (@sohd int, @ngaydat datetime, @mucgiamgia float )

AS BEGIN

UPDATE dbo.tblChiTietDatHang

SET fMucGiamGia = fMucGiamGia+ @mucgiamgia WHERE iSoHD IN ( SELECT tblDonDatHang.iSoHD

Trang 33

14 Số tiền mà nhân viên sử dụng để nhập kho và số hóa đơn đã xử lí

CREATE PROC spthongkenhapkho_nhanvien ( @manv int )

Trang 34

15 Số tiền mà nhân viên bán được và số hóa đơn đã xử lý

CREATE PROC spthongkebanhang_nhanvien ( @manv int )

VI Xây dựng các Trigger cho CSDL

1 Giá bán phải lớn hơn hoặc bằng giá hàng CREATE TRIGGER tg_kiemTraGiaBan

Trang 35

SELECT @giaBan = fGiaBan, @maHang = sMaHang FROM Inserted

SELECT @giaHang = fGiaHang FROM dbo.tblMatHang WHERE @maHang = sMaHang

2 Kiểm tra giới tính xem đúng không

CREATE TRIGGER tg_kiemtragioitinh ON dbo.tblNhanVien

AFTER INSERT, UPDATE AS

BEGIN

DECLARE @gioitinh NVARCHAR(5) SELECT @gioitinh = sGioiTinh FROM inserted IF(@gioitinh != N'Nam' AND @gioitinh != N'Nữ')

Trang 36

3 Kiểm tra ngày nhập hàng đúng không

CREATE TRIGGER tg_kiemTraNgayNhapHang ON tblDonNhapKho

AFTER INSERT, UPDATE AS

BEGIN

DECLARE @ngayNhapHang DATETIME

SELECT @ngayNhapHang = dNgayNhapHang FROM

Trang 37

4 Kiểm tra ngày vào làm xem hợp lý không CREATE TRIGGER tg_kiemTraNgayVaoLam ON tblNhanVien

AFTER INSERT, UPDATE AS

BEGIN

DECLARE @ngayVaoLam DATETIME

SELECT @ngayVaoLam = dNgayVaoLam FROM Inserted

Trang 38

5 Đảm bảo số lượng hàng bán không vượt số hiện có và nếu bán thì số lượng hàng trong kho sẽ giảm

CREATE TRIGGER tg_kiemtrahangban ON dbo.tblChiTietDatHang INSTEAD OF INSERT,UPDATE AS

BEGIN

DECLARE @soluongmua FLOAT DECLARE @smahang VARCHAR(20) DECLARE @soluongkho FLOAT

SELECT @soluongmua = iSoLuongMua,@smahang = sMaHang FROM inserted

SELECT @soluongkho = (SELECT fSoLuong

PRINT('So Luong Mua Vuot Qua So Luong Trong Kho')

Trang 39

6 Cập nhật lại số lượng hàng tồn kho khi khách hàng hủy đặt một mặt hàng

CREATE TRIGGER tg_xoachitietdathang ON dbo.tblChiTietDatHang AFTER DELETE

AS

BEGIN

DECLARE @soluongmua FLOAT DECLARE @smahang VARCHAR(20) DECLARE @soluongkho FLOAT

SELECT @soluongmua = iSoLuongMua,@smahang = sMaHang FROM Deleted

SELECT @soluongkho = (SELECT fSoLuong

Trang 40

7 Cập nhật số lượng hàng tồn kho khi nhập thêm mặt hàng

CREATE TRIGGER tg_themChiTietDatHang

SELECT @soLuongKho = fSoLuong FROM dbo.tblMatHang WHERE @maHang = sMaHang

BEGIN

UPDATE dbo.tblMatHang

SET fSoLuong = fSoLuong - @soLuongMua WHERE sMaHang = @maHang

END END

Trang 41

Trước khi thêm dữ liệu

Dữ liệu được thêm

Trang 42

Sau khi thêm dữ liệu thì bảng tblMatHang (dòng 13) được cập nhật số lượng

8 Cập nhật tổng tiền của hóa đơn khi đặt thêm hàng CREATE TRIGGER tg_tongTienHoaDon_insert

Trang 43

END END

Trước khi nhập

Dữ liệu nhập

Sau khi nhập thì bảng tblDonDatHang (dòng 5) thay đổi

9 Cập nhật tổng tiền của hóa đơn khi khách hàng hủy đặt mặt hàng

CREATE TRIGGER tg_tongtienhoadon_delete ON dbo.tblChiTietDatHang

AFTER DELETE AS

BEGIN

Trang 44

DECLARE @iSohd INT

DECLARE @giahangmua FLOAT

SELECT @giahangmua = (fGiaBan * iSoLuongMua - fGiaBan * iSoLuongMua*fMucGiamGia),@iSohd = iSoHD FROM

10 Cập nhật số lượng hàng nhập của một hóa đơn nhập kho khi nhập mới

CREATE TRIGGER tg_capnhatdonnhapkho_soluong ON dbo.tblChiTietNhapKho

INSTEAD OF INSERT AS

BEGIN

DECLARE @slnhap FLOAT, @sonk INT SELECT @slnhap = fSoLuongNhap,@sonk = iSoNK FROM Inserted

Trang 45

VII Phân quyền và bảo mật CSDL 1 Tài Khoản Quản Lý

CREATE LOGIN Quanli WITH PASSWORD = '123456' CREATE USER quanli01 FOR LOGIN Quanli

GRANT UPDATE,SELECT,INSERT,DELETE ON dbo.tblNhanVien

GRANT EXECUTE ON dbo.sptimnhanvien_tennhanvien TO quanli01 GRANT EXECUTE ON dbo.spluongnhanvien_maNV TO quanli01 GRANT EXECUTE ON dbo.sptangluongcoban_nhanvien TO quanli01 GRANT EXECUTE ON dbo.spthongkesanpham_nhacungcap TO quanli01

GRANT EXECUTE ON dbo.spgiohang_khachhang TO quanli01 GRANT EXECUTE ON dbo.sp_tongtiennhaphang1nam TO quanli01 GRANT EXECUTE ON dbo.sptienhang1nam TO quanli01

GRANT EXECUTE ON dbo.spdoanhso1mathang1nam TO quanli01 GRANT EXECUTE ON dbo.dskhongduocban2020 TO quanli01 GRANT EXECUTE ON dbo.sptongtienhangban_thang TO quanli01 GO

2 Tài Khoản Nhân viên Nhập Kho

CREATE LOGIN NhanvienNK WITH PASSWORD = '123456' CREATE USER nhanvienNK FOR LOGIN NhanvienNK

Trang 46

DENY UPDATE,SELECT,INSERT,DELETE ON dbo.tblNhanVien

GRANT EXECUTE ON dbo.spthemHD TO nhanvienNK GRANT EXECUTE ON dbo.spthongkenhapkho_nhanvien TO nhanvienNK

3 Tài Khoản Nhân viên Bán Hàng

CREATE LOGIN NhanvienBH WITH PASSWORD = '123456' CREATE USER nhanvienBH FOR LOGIN NhanvienBH

DENY UPDATE,SELECT,INSERT,DELETE ON dbo.tblNhanVien

CREATE LOGIN KhachHang WITH PASSWORD = '123456' CREATE USER khachhang FOR LOGIN KhachHang

GRANT UPDATE,SELECT,INSERT ON dbo.tblKhachHang TO khachhang

GRANT EXECUTE ON dbo.spgiohang_khachhang TO khachhang

Trang 47

VIII Phân tán CSDL

Phân mảnh csdl của bảng nhân viên với điều kiện giới tính

- MAYTRAM1 : quản lý nhân viên có giới tính là nam - MAYTRAM2 : quản lý nhân viên có giới tính là nữ

Trang 49

MAYTRAM2 sau khi phân tán:

Trang 51

1.a Tạo remove login bên maytram2

user HTKN (123456)

chỉ có quyền trên database BTLN09QUANLYKINHDOANHMAYTINH

Trang 53

1.b Tạo Linkserver từ MAYTRAM1 -> MAYTRAM2

Trang 54

1.c Khai Thác CSDL

- Trong Suốt Dữ Liệu

Tạo nhãn dữ liệu ( trong suốt dữ liệu) BẢNG nhân viên ở máy trạm2

CREATE SYNONYM maytram2_nhanvien

FOR LINK.BTLN09QuanLyKinhDoanhMayTinh.dbo.tblNhanVien SELECT * FROM maytram2_nhanvien

BẢNG don dat hang ở máy trạm2

CREATE SYNONYM maytram2_dondathang

FOR LINK.BTLN09QuanLyKinhDoanhMayTinh.dbo.tblDonDatHang SELECT * FROM maytram2_dondathang

BẢNG chi tiet dat hang ở máy trạm2 CREATE SYNONYM maytram2_chitietdathang FOR

LINK.BTLN09QuanLyKinhDoanhMayTinh.dbo.tblChiTietDatHang

Trang 55

SELECT * FROM maytram2_chitietdathang

BẢNG don nhap kho ở máy trạm2

CREATE SYNONYM maytram2_donnhapkho

FOR LINK.BTLN09QuanLyKinhDoanhMayTinh.dbo.tblDonNhapKho SELECT * FROM maytram2_donnhapkho

BẢNG chi tiet nhap kho ở máy trạm2 CREATE SYNONYM maytram2_chitietnhapkho FOR

LINK.BTLN09QuanLyKinhDoanhMayTinh.dbo.tblChiTietNhapKho SELECT * FROM maytram2_chitietnhapkho

go

- Tạo Thủ Tục Thêm Nhân Viên Mới 1 tạo thủ tục thêm 1 nhân viên mới

CREATE PROC sp_themnhanvien_phantan (@manv int,@tennv nvarchar(30), @diachi nvarchar(50),

@dienthoai CHAR(10),@ngaysinh DATETIME,@gioitinh NVARCHAR(5),

@ngayvaolam DATETIME,@luongcoban FLOAT,@phucap

IF EXISTS (SELECT * FROM maytram2_nhanvien WHERE @manv = iMaNV)

PRINT ('Ma nhan vien da ton tai')

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

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

Tài liệu liên quan