Professional Documents
Culture Documents
Hệ Quản Trị Cơ Sở Dữ Liệu
Hệ Quản Trị Cơ Sở Dữ Liệu
ĐỀ TÀ I:
Lớp : D13CNPM6
Khóa : 2018-2023
PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
dữ liệu lớn dễ gây thất thoát, nhầm lẫn, việc sao lưu phục hồi dữ liệu khó
khăn.
- Tốn nhiều thời gian gây khó khăn trong việc quản lý đồng bộ về các loại hàng
và nhà cung cấp.
- Tìm kiếm, sửa chữa, thêm thông tin, lập báo cáo thống kê khó khăn.
- Tốc độ xử lý chậm.
- Chưa thực sự có một hệ thống đánh giá năng lực của nhân viên
- Mức độ chuyên môn hóa với công việc của nhân viên chưa cao gây lãng phí.
Với hệ thống quản lý như trên thì cửa hàng sẽ gặp nhiều khó khăn trong
việc quản lý thông tin nhà cung cấp, buôn bán... Từ đó đặt ra một bài toán cho
cửa hàng làm sao để tăng năng suất làm việc, giảm thời gian, tăng hiệu quả,và
tránh gây sai sót.
-Việc nâng cấp hệ thống quản lý là vô cùng thiết thực và cấp bách. Đặc biệt với
tốc độ gia tăng nhanh về số lượng khách hàng, mặt hàng.
- Tốc độ xử lý thông tin nhanh, đảm bảo chính xác, kịp thời.
- Hệ thống phải có chế độ sao lưu phục hồi dữ liệu, nhằm đảm bảo an toàn về
mặt dữ liệu.
- Bảo mật tốt, chỉ làm việc với người có quyền sử dụng.
- Đào tạo cao hơn về tin học cho nhân viên trong cửa hàng để dễ dàng sử dụng.
-Có thêm chức năng đánh giá nhân viên và sự phản hồi của khách hàng.
1.2.3 Phạm Vi Dự Án
Chức năng chính của dự án:
+Quản Lý Bán Hàng
+Quản Lý Nhân Viên
+Quản Lý Kho
+Báo Cáo
+Quản Lý Hàng
INSERT INTO
BangLuong(MaNV,Thang,NgayCong,Thuong,Phat,TongLuong)
VALUES ('NV01','10','28','200000','0','5800000'),
('NV02','10','25','150000','0','3000000'),
('NV03','10','15','0','0','1500000')
INSERT INTO KhachHang(MaKH,TenKH,DiaChi,Đthoai)
VALUES ('KH01','Nguyen Van Cu','Hoang Mai-Ha
Noi','0965077953'),
('KH02','Ngo Hong Van','Tien Lu-Hung
Yen','0973528163'),
('KH03','Tran Thi Huyen My','Tay Son-Bac
Ninh','0939636453'),
('KH04','Hoang Văn Huy','Xuan Hoa-Vinh
Phuc','0873826399'),
('KH05','Ngo Hoai Nam','My Đinh-Ha
Noi','0936454726')
INSERT INTO
HoaDon(MaHD,NgayBan,TenNV,MaKH,TienBan,GiamGia,ThanhToan)
VALUES ('HD01','2019/10/11','Nguyen Mai
Anh','KH01','300000','0','300000'),
('HD02','2019/10/21','Tran Thi Huyen
My','KH02','450000','0.1','400000'),
('HD03','2019/10/19','Nguyen Mai
Anh','KH03','200000','0.2','150000'),
('HD04','2019/10/11','Nguyen Mai
Anh','KH04','320000','0.1','290000'),
('HD05','2019/10/18','Tran Thi Huyen
My','KH05','750000','0','750000')
--3: Hiển thị tên nhân viên và số lương phải trả cho nhân
viên
SELECT TENNV,TONGLUONG
FROM NHANVIEN,BANGLUONG
WHERE NHANVIEN.MANV = BANGLUONG.MANV
--4: Cập nhật thành tiền ở bảng chi tiết phiếu nhập
UPDATE CHITIETPN
SET THANHTIEN = SOLUONG * GIANHAP
--5Cập nhật thành tiền ở bảng chi tiết hóa đơn
UPDATE CHITIETHD
SET THANHTIEN = GIABAN * SOLUONG
FROM HANG,CHITIETHD
WHERE HANG.MAHG = CHITIETHD.MAHG
--6 Cập nhật thành tiền ở bảng chi tiết hóa đơn
UPDATE CHITIETHD
SET THANHTIEN = SOLUONG * GIABAN
FROM HANG,CHITIETHD
WHERE HANG.MAHG = CHITIETHD.MAHG
--7 Hiển Thị Hóa Đơn Có Tiền Bán Lớn Nhất
SELECT *
FROM HOADON
WHERE TIENBAN >= ALL(SELECT TIENBAN
FROM HOADON)
--8 Hiển Thị Danh Số Bán Được Trong Ngày 10/11/2019
SELECT SUM(TIENBAN) AS DOANHTHU
FROM HOADON
WHERE DAY(NGAYBAN) = 10
AND MONTH(NGAYBAN) = 11
AND YEAR(NGAYBAN) = 2019
--9 Hiển Thị Tên Hàng Được Nhập ngày 28/09/2019
SELECT TENHG
FROM PHIEUNHAP, CHITIETPN, HANGNHAP
WHERE PHIEUNHAP.MAPN = CHITIETPN.MAPN
AND CHITIETPN.MAHN = HANGNHAP.MAHN
AND DAY(NGAYNHAP) = 28
AND MONTH(NAGYNHAP) = 09
-- 10 Hiển Thị Hàng Được Bán Chạy Nhất
SELECT HANG.MAHG, HANG.TENHG
FROM HANG, HOADON, CHITIETHD
WHERE HANG.MAHG = CHITIETHD.MAHG
AND HOADON.MAHD = CHITIETHD.MAHD
GROUP BY HANG.MAHG, HANG.TENHG
HAVING COUNT(*) >= ALL (SELECT COUNT(*)
FROM HANG, HOADON, CHITIETHD
WHERE HANG.MAHG = CHITIETHD.MAHG
AND HOADON.MAHD = CHITIETHD.MAHD
GROUP BY HANG.MAHG, HANG.TENHG)
--11 Hiển thị tên NCC cũng cấp hàng với số tiền giao dịch
lớn nhất
SELECT TENNCC
FROM NCC, PHIEUNHAP
WHERE PHIEUNHAP.MANCC = NCC.MANCC
AND PHIEUNHAP.TIENNHAP >= ALL (SELECT TIENNHAP
FROM PHIEUNHAP)
-- 12 Tạo quy tắc Rule Ngày sinh phải nhỏ hơn ngày hiện
tại
CREATE RULE RUL_CHECKNGSINH
AS
@NGAYSINH < GETDATE()
SP_BINDRULE 'RUL_CHECKNGSINH','NHANVIEN.NGAYSINH'
-- 13 Tạo Quy Tắc Rule Giới Tính Là 'Nam' Hoặc 'Nữ'
CREATE RULE RUL_GIOITINH
AS
@GIOITINH = ‘NAM’ OR @GIOITINH = ‘NU’
SP_BINDRULE ‘RUL_GIOITINH’, ‘NHANVIEN.GIOITINH’
--2.1 Thủ tục hiển hệ số lương khi nhập vào một mã nhân
viên
CREATE PROC HIENTHI_LUONG @MANV NVARCHAR(50)
AS
SELECT TONGLUONG
FROM BANGLUONG
WHERE MANV = @MANV
EXEC HIENTHI_LUONG ‘NV01’
--2.2 Thủ tục hiển thị thông tin nhân viên khi nhập mã
nhân viên
CREATE PROC HIENTHI_TT @MANV NVARCHAR(50)
AS
SELECT *
FROM NHANVIEN
WHERE MANV = @MANV
EXEC HIENTHI_TT ‘NV01’
--2.3Thủ tục cập nhật tổng lương trong bảng lương
CREATE PROC CAPNHAT_TONGLUONG
AS
UPDATE BANGLUONG
SET TONGLUONG = HESOLUONG * NGAYCONG + THUONG – PHAT
FROM NHANVIEN, BANGLUONG
WHERE NHANVIEN.MANV = BANGLUONG.MANV
EXEC CAPNHAT_TONGLUONG
--2.4Thủ tục cập nhật tổng tiền ứng với mỗi mã phiếu nhập
CREATE PROC HIENTHI_TIENNHAP @MAPN NVARCHAR(50)
AS
SELECT SUM(CHITIETPN.THANHTIEN)
FROM CHITIETPN
WHERE CHITIETPN.MAPN = @MAPN
EXEC HIENTHI_TIENNHAP ‘PN01’
--2.5Thủ tục hiển thị phiếu nhập có giá trị giao dịch lớn
nhất
CREATE PROC HIENTHI_PN
AS
SELECT MAPN
FROM PHIEUNHAP
WHERE TIENNHAP >= ALL(SELECT TIENNHAP
FROM PHIEUNHAP)
EXEC HIENTHI_PN
--2.6Thủ tục cập nhật thêm hàng mới
CREATE PROC THEM_HANG @MAH NVARCHAR(50), @TENH
NVARCHAR(50), @LOAI NVARCHAR(50)
AS
INSERT INTO HANG(MAHG,TENHG,LOAI)
VALUES(@MAHG, @TENHG, @LOAI)
--3.1Trigger cập nhật ngày hiện tại cho Hóa Đơn mỗi khi
thêm dữ liệu
CREATE TRIGGER CAPNHAT_TIME ON HOADON
FOR INSERT
AS
UPDATE HOADON
SET
NGAYBAN = GETDATE()
--3.2Trigger cập nhật ngày hiện tại cho Phiếu Nhập mỗi khi
thêm dữ liệu
CREATE TRIGGER CAPNHAT_TIME ON PHIEUNHAP
FOR INSERT
AS
UPDATE PHIEUNHAP
SET NGAYNHAP = GETDATE()
--3.3Trigger cập nhật Tổng Lương trên Bảng Lương
CREATE TRIGGER CAPNHAT_TONGLUONG ON BANGLUONG
FOR UPDATE
AS
UPDATE BANGLUONG
SET
TONGLUONG = HESOLUONG *NGAYCONG +THUONG –PHAT
FROM BANGLUONG, NHANVIEN
WHERE NHANVIEN.MANV = BANGLUONG.MANV
--3.4Trigger kiểm tra ngày nhập phải nhỏ hơn ngày hiện tại
CREATE TRIGGER KIEMTRA_NGAYNHAP ON PHIEUNHAP
FOR INSERT
AS
IF((SELECT NGAYNHAP FROM PHIEUNHAP) > (SELECT
SYSDATETIME())
BEGIN
RAISERROR(N’NGAYNHAP PHAI NHO HON NGAY HIEN TAI’,16,1)
ROLLBACK TRAN
END
--3.5Trigger cập nhật thành tiền từ bảng Chi Tiết Phiếu
Nhập
CREATE TRIGGER CAPNHAT_THANHTIENPN ON CHITIETPN
FOR INSERT
AS
UPDATE CHITIETPN
SET THANHTIEN = SOLUONG* GIANHAP
--3.6Trigger cập nhật thành tiền ở bảng Chi Tiết Hóa Đơn
CREATE TRIGGER CAPNHAT_THANHTIENHD ON CHITIETHD
FOR INSERT
AS
UPDATE CHITIETHD
SET THANHTIEN = SOLUONG *GIABAN
FROM CHITIETHD, HOADON
WHERE CHITIETHD.MAHD = HOADON.MAHD
--3.7Trigger xóa những phiếu nhập trước tháng 5/2019
CREATE TRIGGER XOA_PN ON PHIEUNHAP
FOR DELETE
AS
IF((SELECT MONTH(NGAYNHAP) FROM DELETED < 5) AND (SELECT
YEAR(NGAYNHAP) FROM DELETED = 2019))
COMMIT TRAN
ELSE
ROLLBACK TRAN
--3.8Trigger cập nhật lại số lượng mỗi khi bán một lượng
hàng
CREATE TRIGGER CAPNHAT_HANGNHAP ON CHITIETPN
FOR UPDATE
AS
UPDATE CHITIETPN
SET SOLUONG = CHITIETPN.SOLUONG – CHITIETHD.SOLUONG
FROM CHITIETPN, CHITIETHD
WHERE CHITIETHD.MAHG = CHITIETPN.MAHG