- Khi nhân viên được trúng tuyển vào công ty thì người quản lý có trách nhiệm tạo danh sách nhân viên từ những thông tin củađơn xin việc của nhân viên cộng với những thông tin về mã nhâ
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Ị CSDL
ĐỀTÀI: QUẢN LÝ TIỀN LƯƠNG DOANH NGHIỆP
Giảng viên hướng dẫn: Th.S Bùi Đức Tiến
Sinh viên thực hiện: Đặng Thị Loan - 2010A02
Lê Đức Thắng - 2010A02 Nguyễn Duy Khánh - 2010A02 Trần Huy Hoàng - 2010A02
Hà Nội – 2021
Trang 2I Đặc tả bài toán, Xác định tác nhân ngoài Cả nhóm
1.Xác định thuộc tính và phân tích thuộc tính
2.Xây dựng mô hình thực thể liên kết
Đặng Thị Loan, 3.Xác định liên kết và kiểu liên kết
Nguyễn Duy KhánhTrần Huy Hoàng 3.Nhập dữ liệu cho Bảng
1 Thực hiện truy vấn
-Truy vấn dữ liệu từ 1 bảng(5 truy vấn)
Trang 3Nguyễn Duy KhánhTrần Huy Hoàng
Lê Đức ThắngĐặng Thị Loan
Nguyễn Duy KhánhTrần Huy Hoàng
Lê Đức ThắngĐặng Thị Loan
Nguyễn Duy KhánhTrần Huy Hoàng
Lê Đức ThắngĐặng Thị Loan
Lê Đức ThắngĐặng Thị LoanTrần Huy HoàngNguyễn Duy Khánh
Lê Đức Thắng
Cả Nhóm
Trang 5Mục Lục
I ĐẶC TẢ BÀI TOÁN 1
1 Xác định các tác nhân 2
2 Biểu đồ ngữ cảnh 2
II MÔ TẢ CHỨC NĂNG 3
1 Nhóm các chức năng 3
1.1 Bảng chức năng 3
1.2 Sơ đồ phân rã chức năng 4
2.Mô tả chi tiết chức năng 4
3.Sơ đồ luồng dữ liệu 5
3.1 Biểu đồ luồng dữ liệu mức 0: 5
3.2 Biểu đồ luồng dữ liệu mức 1: Quản lý nhân sự 6
3.3 Biểu đồ luồng dữ liệu mức 1: Quản lý lương 6
3.4 Biểu đồ luồng dữ liệu mức 1: Báo cáo 7
III THIẾT KẾ CƠ SỞ DỮ LIỆU 8
1.Xác định thuộc tính phân tích thuộc tính 8
2.Xây dựng mô hình thực thể liên kết 8
3.Xác định liên kết và kiểu liên kết 9
4.Mô hình liên kết thực thể (ER) 10
5.Mô hình CSDL quan hệ 11
a.Mô hình CSDL quan hệ 11
b.Chuẩn hóa 3NF 11
6.Thiết kế CSDL vật lý 13
IV.Tạo các CSDL 16
1.Tạo Database và Bảng CSDL 16
2.Thêm các ràng buộc 18
3.Nhập dữ liệu cho Bảng 19
V Thực hiện các thao tác trên CSDL: 23
1.Thực hiện các truy vấn 23
2.Tạo View 27
3 Tạo Produce 31
Trang 64.Tạo Trigger 42
5 Phân quyền và bảo mật CSDL 48
6 Phân Tán CSDL 54
Trang 7I ĐẶC TẢ BÀI TOÁN
- Khi công ty thiếu lao động sẽ tiến hành tuyển lao động Khi
được tuyển dụng thì người lao động phải thử việu từ 1 đến 2 tháng tùy theo công việc Sau đó ký hợp đồng dài hạn tùy theoyêu cầu của công ty Khi thử việc tốt thì kí hợp đồng, hồ sơ của người lao động sẽ được lưa vào hệ thống Khi đó người lao động sẽ được hưởng đầy đủ chính sách của nhà nước về phụ cấp tiền lương
- Khi nhân viên được trúng tuyển vào công ty thì người quản lý
có trách nhiệm tạo danh sách nhân viên từ những thông tin củađơn xin việc của nhân viên cộng với những thông tin về mã nhân viên,chức vụ công tác ,phòng ban,mức lương,… của nhân viên Mỗi nhân viên có 1 mã nhân viên duy nhất
- Khi người lao động muốn được thăng cấp bậc hoặc muốn tang
mức lương thì bộ phận quản lý sẽ cập nhật và báo cáo lên Giám đốc công ty
- Mỗi nhân viên có mức lương tùy theo cấp bậc, hợp đồng Cuối
tháng bộ phận quản lý sẽ tính lương và báo cáo lương lên Giám đốc công ty
- Giám đốc sẽ kiểm tra và xét duyệt báo cáo lương từ các quản
lý gửi lên để thanh toán lương cho nhân viên mỗi cuối tháng Hoặc có thể yêu cầu các báo cáo về nhân viên từ các quản lý.Từ những cập nhật của quản lý về yêu cầu thăng cấp bậc hoặc tăng lương của nhân viên tùy vào từng đối tượng mà Giám đốc có thể xem xét thăng cấp hay tăng lương tùy theo từng người
- Hiện nay, công việc quản lý tiền lương cho nhân viên thì
doanh nghiệp đang sử dụng bảo tính Excel để hỗ trợ quản lí tuy nhiên cũng không đem lại nhiều lợi ích cho người sử dụng.Bởi Excel chỉ là công cụ tính toán chính xác và nhanh chóng nhưng nó không có khả năng quản lý 1 hệ thống Cơ Sở Dữ Liệu không thể giúp nhà quản lí nắm toàn bộ thông tin đầy đủ
về toàn bộ hệ thống
Từ thực trạng đó nên có 1 hệ thống quản lý hồ sơ và tính lương cho nhân viên Đưa tin học vào quản lý nhân sự và tiền lương giúp đáp ứng được việc cung cấp thông tin về nhân viên,tiền lương một cách chính xác, kịp thời, giảm bớt thời gian tra cứu,đáp ứng yêu cầu của lãnh đạo nhanh hơn
Trang 9II MÔ TẢ CHỨC NĂNG
1 Nhóm các chức năng
1.1 Bảng chức năng
Cập nhật hồ sơ nhân viên
Cập nhật phòng ban Quản lý nhân sự
Cập nhật chức vụ
Cập nhật bảng chấm công Quản lý nhân sự tiền lương
Quản lý tiền lươngTính lương
Thống kê nhân viên
Báo cáoBảng lương
1.2 Sơ đồ phân rã chức năng
Trang 102 Mô tả chi tiết chức năng
2.1 Quản lý nhân sự: cập nhật hồ sơ nhân viên( nhân viên quản lý
nhân sự cập nhật, thêm mới tìm kiếm hồ sơ nhân viên), cập nhật phòng ban (nhân viên quản lý nhân sự cập nhật, thêm mới danh sách phòng ban)
2.2 Quản lý lương: cập nhật bảng công (cập nhật bảng chấm công
cho nhân viên) , tính lương (tính lương cho nhân viên dựa vào bảng chấm công)
2.3 Báo cáo: thống kê nhân viên, bảng lương.
3 Sơ đồ luồng dữ liệu
3.1 Biểu đồ luồng dữ liệu mức 0:
Trang 113.2 Biểu đồ luồng dữ liệu mức 1: Quản lý nhân sự
Trang 123.3 Biểu đồ luồng dữ liệu mức 1: Quản lý lương
3.4 Biểu đồ luồng dữ liệu mức 1: Báo cáo
Trang 13III THIẾT KẾ CƠ SỞ DỮ LIỆU
1.Xác định thuộc tính phân tích thuộc tính
Trang 14- Thực thể Phòng Ban với các thuộc tính được quản lý mã phòng ban, :
tên phòng ban Thuộc tính Mã phòng ban là khóa vì mỗi mã phòng ban được phân biệt với nhau qua Mã phòng ban Tên mỗi phòng ban
là duy nhất
- Thực thể Chức Vụ với các thuộc tính được quản lý: Mã chức vụ, tên
chức vụ Thuộc tính Mã chức vụ là khóa chính vì mỗi chức vụ được phân biệt với nhau qua Mã chức vụ Tên chức vụ là duy nhất
- Thực thể Nhân Viên với các thuộc tính được quản lý: Mã nhân viên,
HoTen, NgaySinh, DiaChi, DienThoai, GioiTinh, Mã phòng ban, mã chức vụ Thuộc tính Mã nhân viên là khóa chính vì mỗi nhân viên
phân biệt qua mã nhân viên Thuộc tính Mã phòng ban, mã chức vụ là
khóa ngoại
- Thực thể Lương với các thuộc tính được quản lý: Mã lương, mức
lương, ngaylapluong, Mã nhân viên Thuộc tính Mã lương là khóa chính vì từ đó ta phân biệt được mã lương đó của nhân viên nào Thuộc tính Mã nhân viên vụ là khóa ngoại
- Thực thể Thanh Toán Lương với các thuộc tính được quản lý: Mã
thanh toán lương, ngày thanh toán lương, trợ cấp, Mã nhân viên, Mã công Thuộc tính Mã thanh toán lương là khóa chính bởi từ đó ta phân biệt được mã thanh toán lương đó của nhân viên nào Thuộc tính
Mã nhân viên, Mã công là khóa ngoại.
- Thực thể Chấm Công với các thuộc tính được quản lý: Mã công, số
ngày công, số ngày nghỉ, Mã nhân viên Thuộc tính Mã công là khóa chính ta phân biệt được mã công đó của nhân viên nào Thuộc tính
Mã nhân viên là khóa ngoại.
2.Xây dựng mô hình thực thể liên kết
BPHONGBAN (MaPB, TenPhong)
BCHUCVU (MaCV, TenChucVu)
BNHANVIEN (MaNV, HoTen, Ngaysinh, Gioitinh, DiaChi,
DienTHoai ,MaPB, MaCV)
BLUONG (MaLuong, MaNV, MucLuong, NgayLapLuong)
Trang 15BTHANHTOANLUONG (MaTLL, MaNV, MaCong, NgayThanhToan,
TroCap)
BCHAMCONG (MaCong, MaNV, SoNgayCong, SoNgayNghi)
3.Xác định liên kết và kiểu liên kết
- Với một PHÒNG BAN sẽ có nhiều NHÂN VIÊN vậy mối liên kết
Trang 175.Mô hình CSDL quan hệ
- PhongBan là thực thể mạnh nên tạo thành một quan hệ:
- ChucVu là thực thể mạnh nên tạo thành một quan hệ:
DienThoai,MaPB, MaCV)
- Luong là thực thể mạnh nên tạo thành một quan hệ:
MaNV ,MaCong)
- ThanhToanLuong là thực thể mạnh nên tạo thành một quan hệ:
(R5) ThanhToanLuong (MaTLL, MaNV, MaCong,
NgayThanhToan, TroCap)
- ChamCong là thực thể mạnh nên tạo thành một quan hệ:
b Chuẩn hóa 3NF
Từ mô hình quan hệ ta suy ra các phụ thuộc hàm:
- MaPB → TenPhong
- MaCV → TenCV
- MaNV → HoTen, Ngaysinh, Gioitinh, DiaChi, DienThoai
- MaLuong → MucLuong, NgayLap
- MaTLL → NgayThanhToan, TroCap
- MaCong → SoNgayCong, SoNgayNghi
Từ các phụ thuộc hàm trên ta thấy:
Trang 18- Mọi thuộc tính đều là nguyên tố, giá trị các thuộc tính trên bộ là
đơn vị, không có thuộc tính nào có giá trị được tính toán từ một sốthuộc tính khác
Lược đồ quan hệ trên đã ở dạng chuẩn 1NF
- Mọi thuộc tính không khóa của quan hệ đề phụ thuộc hàm đầy đủ
vào khóa chính
Lược đồ trên đã ở chuẩn 2NF
- Mọi thuộc tính khóa của quan hệ đề không phụ thuộc bắc cầu vào
bất kì khóa chính của quan hệ
Lược đồ quan hệ trên đã ở dạng chuẩn 3NF
Vậy lược đồ quan hệ đã chuẩn hóa về dạng cao nhất – 3NF
Trang 196.Thiết kế CSDL vật lý
BNHANVIEN (MaNV, HoTen, Ngaysinh, Gioitinh, DiaChi,
DienTHoai,CMND,MaPB, MaCV)
Bảng: BNHANVIEN
Trang 20BPHONGBAN (MaPB, TenPhong)
Bảng: BPHONGBAN
BCHUCVU (MaCV, TenChucVu)
Trang 21BLUONG (MaLuong, MaNV, MucLuong, NgayLapLuong)
Bảng: BLUONG
BTHANHTOANLUONG (MaTLL, Manv, MaCong, NgayThanhToan,
Trang 22BCHAMCONG (MaCong, MaNV, SoNgayCong, SoNgayNghi)
Bảng: BCHAMCONG
Trang 24CREATE TABLE BChamCong
(
MaCong VARCHAR(20) NOT NULL PRIMARY KEY,
MaNV NVARCHAR(50) NOT NULL,
/* Thiết lập ràng buộc khóa ngoại cho bảng nhân viên */
ALTER TABLE dbo.BNhanVien
ADD CONSTRAINT FK_Bnhanvien_MaPB
FOREIGN KEY(MaPB) REFERENCES dbo.BPhongBan(MaPB),CONSTRAINT FK_Bnhanvien_Macv FOREIGN KEY(MaCV) REFERENCES dbo.BChucVu(MaCV)
GO
/* Thiết lập ràng buộc khóa ngoại cho bảng lương*/
ALTER TABLE dbo.BLuong
ADD CONSTRAINT FK_BLuong_Manv
FOREIGN KEY(MaNV) REFERENCES dbo.BNhanVien(MaNV)
GO
/* Thiết lập ràng buộc khóa ngoại cho bảng thanh toán lương*/ALTER TABLE dbo.BThanhToanLuong
ADD CONSTRAINT FK_Bthanhtoanluong_manv
FOREIGN KEY(MaNV) REFERENCES dbo.BNhanVien(MaNV),CONSTRAINT FK_BThanhtoanluong_macong
FOREIGN KEY(MaCong) REFERENCES BChamCong(MaCong)
Trang 25/* Thiết lập ràng buộc khóa ngoại cho bảng chấm công*/
ALTER TABLE dbo.BChamCong
ADD CONSTRAINT FK_Bchamcong_Manv FOREIGN KEY(MaNV) REFERENCES dbo.BNhanVien(MaNV)
/* Thiết lập các ràng buộc Check, Unique, Deflaut */
/* thiết lập ràng buộc check tại bảng BChamCong */
ALTER TABLE dbo.BChamCong
ADD CONSTRAINT ck_sonaynghi CHECK (SoNgayNghi < 5)
/* thiết lập ràng buộc check tại bảng BLuong */
ALTER TABLE BNhanVien
ADD CONSTRAINT ck_gt CHECK (MucLuong > 1000000 AND MucLuong < 7000000)
/* thiết lập ràng buộc Unique tại bảng BNhanVien */
ALTER TABLE BNhanVien
ADD CONSTRAINT unique_dienthoai UNIQUE(DienThoai)/* thiết lập ràng buộc deflaut tại bảng BNhanVien */
ALTER TABLE BLuong
ADD CONSTRAINT NgayLap DEFAULT '2021/11/09'
Trang 26INSERT INTO dbo.BNhanVien
(MaNV, MaPB MaCV,HoTen NgaySinh GioiTinh DiaChi DienThoai, , , , , )VALUES
Trang 27('NV6', 'NPB2', 'MCV123' N'Hoàng Thị Thu Hoài',,'2002/04/21',N'Nữ' N'Hưng Yên',, '0370700700'),('NV7', 'NPB1', 'MCV122' N'Hoàng Thế Lực' , ,'2000/07/18' 'Nam', ,N'Nam Định','0975554484'),('NV8', 'NPB2', 'MCV123' N'Nguyễn Văn Huy' , ,'1999/09/04' 'Nam', ,N'Bắc Giang','0966633344'),('NV9', 'NPB3', 'MCV122' N'Nguyễn Trà My' , ,'1998/10/11',N'Nữ',N'Bắc Ninh','0984789456'),('NV10' 'NPB1',, 'MCV124',N'Trần Huy Hoàng' ,'1994/11/16' 'Nam', ,N'Bắc Ninh','0333331120')GO
- Bảng Lương
INSERT INTO dbo.BLuong
(MaLuong MaNV, MucLuong NgayLap, , )VALUES
('ML01','NV2', '5500000', '2021/11/09'),('ML02','NV10' '3410000',, '2021/11/09'),('ML03','NV3', '4500000', '2021/10/09'),('ML04','NV8', '6200000', '2021/10/09'),('ML05','NV7', '5500000', '2021/10/09'),('ML06','NV4', '6400000', '2021/11/09'),('ML07','NV9', '10100000', '2021/10/09'),('ML08','NV6', '5200000', '2021/11/09'),('ML09','NV5', '7100000', '2021/11/09'),('ML10','NV1', '8500000', '2021/10/09')
- GO
Trang 28Bảng Thanh Toán Lương
INSERT INTO dbo.BThanhToanLuong
( MaTLL, MaNV,MaCong NgayThanhToan,TroCap),VALUES
('MTTL1' 'NV1' 'MC11' '2021-12-10' '2500000', , , , ),('MTTL2' 'NV2' 'MC22','2021-12-10','1500000', , ),('MTTL3' 'NV6' 'MC33','2021-12-10','1110000'),, ,('MTTL4' 'NV3' 'MC44','2021-11-10' '890000', , , ),('MTTL5' 'NV9' 'MC55','2021-12-12','2100000', , ),('MTTL6' 'NV10' 'MC66','2021-11-10' '1500000', , , ),('MTTL7' 'NV8' 'MC77','2021-09-10','1000000', , ),('MTTL8' 'NV5' 'MC88','2021-12-10','1200000', , ),('MTTL9' 'NV4' 'MC99','2021-09-10','2800000', , ),('MTTL10' 'NV7' 'MC001','2021-12-22','1700000', , )GO
- Bảng Chấm Công
Trang 29INSERT INTO dbo.BChamCong
(MaCong,MaNV SoNgayCong SoNgayNghi, , )
/* Lệnh truy vấn trên 1 bảng(5 câu) */
Câu 1 : cho biết mã nhân viên và tên các nhân viên ở Hà Nội
Select MaNV, HoTen ,DiaChi
Where DiaChi =N'Hà Nội'
Câu 2: Cho biết tên các nhân viên sinh vào năm 2000Select MaNV HoTen , ,NgaySinh
Trang 30from BNhanVien
where YEAR(NgaySinh) = 2000
Câu 3: cho biết tên phòng ban có mã "NPB2"
Select
FROM BPhongBan
where MaPB LIKE N'%NPB2%'
Câu 4: cho biết mã nhân viên, số tiền trợ cấp của nhân viên có
mã thanh toán lương 'MTTL7'
Select MaTLL,MaNV TroCap,
Trang 31/* Lệnh truy vấn trên nhiều bảng (5 câu) */
Cau 6 :Cho biết tên công việc ứng với tên từng nhân viên Select HoTen TenCV,
From BNhanVien
inner join BChucVu BNhanVien MaCV BChucVuon = MaCV
Cau 7 :Thống kê ra những nhân viên nghỉ không quá 3 buổi Select HoTen SoNgayNghi,
Trang 32FROM dbo BNhanVien NV inner join dbo BLuong L on
NV MaNV = MaNV
inner join dbo.BThanhToanLuong TTL TTLon MaNV=NV MaNV.GROUP BY NV.HoTen
Câu 9 : Cho biết phòng ban ứng với từng nhân viên
SELECT HoTen BNhanVien, MaPB, TenPhong
from BNhanVien
inner join BPhongBan on BNhanVien MaPB BPhongBan = MaPB
Cau 10 :Cho biết họ tên của nhân viên có quê ở Hà Nội và có mức lương trên 6 triệu
SELECT HoTen MucLuong , ,DiaChi
from BNhanVien inner join BLuong
Trang 33on BNhanVien MaNV BLuong = MaNV
where DiaChi LIKEN'%Hà Nội%'and MucLuong 6000000>
FROM dbo BPhongBan inner join dbo BNhanVien on
dbo BPhongBan MaPB dbo BNhanVien MaPB =
where dbo.BNhanVien.MaNV like 'NV8'
Gọi View:
SELECT FROM * TenPhongBan
Câu 2: Liệt kê các nhân viên có giới tính là nữ
CREATE VIEW NhanVienNu
Trang 34Câu 3: Liệt kê họ tên,giới tính và địa chỉ của các nhân viên đi làm không nghỉ buổi nào
CREATE VIEW NVKhongNghi
AS
SELECT HoTen,GioiTinh DiaChi SoNgayNghi, ,
FROM dbo BNhanVien inner join dbo BChamCong on
BNhanVien MaNV dbo BChamCong MaNV =
SELECT HoTen,DiaChi TroCap,
FROM dbo BNhanVien NV inner join dbo BThanhToanLuong TTL on
SELECT HoTen,DiaChi TenCV TenPhong, ,
FROM dbo BNhanVien NV inner join dbo BChucVu CV on
NV MaCV CV MaCV =
inner join dbo.BPhongBan PB on PB MaPB NV.MaPB =
Trang 35WHERE NV.DiaChi like N'%Bắc Ninh%'
inner join dbo.BChamCong CC on CC.MaNV NV.MaNV=
inner join dbo.BThanhToanLuong TTL TTLon MaNV=NV MaNV.GROUP BY HoTen
Trang 36SELECT HoTen,PB.MaPB,SoNgayNghi
FROM dbo BNhanVien NV inner join dbo BPhongBan PB on
NV MaPB PB MaPB =
inner join dbo.BChamCong CC on CC.MaNV NV.MaNV=
WHERE PB.MaPB LIKE N'%NPB3%'
Trang 37Câu 10: Cho biết thông tin: họ tên nhân viên, giới tính, địa chỉ, chức
vụ của các nhân viên nghỉ làm trên 2 ngày
CREATE VIEW NghiLamTren2
AS
SELECT HoTen,GioiTinh DiaChi TenCV SoNgayNghi, , ,
FROM dbo BNhanVien NV inner join dbo BChucVu CV on
Trang 38câu 2:Tạo thủ tục cho biết họ tên,địa chỉ,số điện thoại của nhân viên sinh vào 1 năm bất kì
CREATE PROC NamSinh(@nam int)
@hoten NVARCHAR(255),@ngaysinh DATE,@gioitinh
NVARCHAR(20) @diachi NVARCHAR(255),@dienthoai
PRINT(N'Mã phòng ban không tồn tại')
ELSE IF not EXISTS(SELECT FROM* BChucVu
WHERE MaCV=@macv)
PRINT(N'Mã chức vụ không tồn tại')
ELSE
BEGIN
INSERT INTO dbo.BNhanVien
(MaNV MaPB MaCV, , ,HoTen NgaySinh GioiTinh DiaChi DienThoai, , , , )
Trang 39SELECT HoTen,DiaChi DienThoai,NV MaPB,
FROM dbo BNhanVien NV inner join dbo BPhongBan PB on
SET MucLuong = MucLuong 0.95*
FROM dbo BNhanVien NV inner join dbo BChamCong CC on
NV MaNV CC = MaNV
inner join dbo.BLuong L NVon MaNV= MaNV
WHERE SoNgayNghi 5>
Trang 40@mapbOut varchar(20)Output,
@tenpbOut NVARCHAR(255) Output
DECLARE @SoLuong SmallInt
SELECT @SoLuong =Count(*)
FROM BPhongBan PB inner join BNhanVien NV on
PB MaPB NV MaPB =