1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn hệ quản trị csdl đề tài quản lý nhân viên

48 1 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

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Ị CSDL ĐỀ TÀI : QUẢN LÝ NHÂN VIÊN Giảng viên hướng dẫn : Sinh viên thực hiện: Nguyễn Thị Tâm Nguyễn Đình Văn-1910A02 Trần Văn Tiến-1910A05 Đinh Quốc Đạt -1910A03 Vũ Quốc Hưng -1910A05 Hà Nội – 2021 MỤC LỤC I PHÁT BIỂU BÀI TOÁN II MƠ HÌNH CSDL QUAN HỆ Xác định kiểu thực thể thuộc tính Xác định thuộc tính phân loại thuộc tính 3 Xác định liên kết Chuẩn hóa sở liệu .4 III IV CÁC BẢNG: TẠO CƠ SỞ DỮ LIỆU .7 DATABASE DIAGRAMS 17 TẠO VIEW .18 V TẠO PROCEDUCE 24 VI TẠO TRIGGER 30 VII PHÂN QUYỀN VÀ BẢO MẬT CSDL 39 VIII PHÂN TÁN CSDL 43 HỌ VÀ TÊN PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN NỘI DUNG ĐÁNH GIÁ Nguyễn Đình Văn - Tạo sở liệu 1910A02 - Tạo trigger - Phân tán csdl Hoàn thành Trần Văn Tiến 1910A05 - Mơ hình csdl quan hệ - Tạo proceduce - Phân quyền bảo mật csdl Hoàn thành Đinh Quốc Đạt 1910A03 - Phát biểu tốn - Mơ hình csdl quan hệ - Tạo view Hoàn thành Vũ Quốc Hưng 1910A05 - Nhập liệu - Tạo view - Tạo proceduce Hoàn thành GHI CHÚ I PHÁT BIỂU BÀI TOÁN Quản lý nhân viên : Một công ty thực quản lý nhân viên cơng ty Trong cơng ty có dự án thực quản lí phận cơng việc khác Mỗi dự án quản lí thông tin: mã dự án, tên dự án, địa điểm dự án, phòng ban thực dự án Bộ phận cơng việc quản lí thơng tin: mã dự án, số thứ tự, tên công việc Trong phận có nhiều phịng ban, phịng ban quản lý thơng tin: mã phòng ban, tên phòng ban Mỗi phòng ban phân biệt mã phịng ban Mỗi phịng ban có trưởng phịng Một phịng ban có trưởng phịng để quản lí nhân viên phịng Mỗi phịng ban có nhân viên nhân viên quản lí thơng tin: tên nhân viên, mã nhân viên, ngày sinh, giới tính, địa chỉ, lương Mỗi phịng ban có nhiều nhân viên, trưởng phịng quản lí nhân viên việc lưu giữ lại ngày vào làm Có bảng phân cơng quản lý thông tin: Mã nhân viên, mã dự án, số thứ tự, thời gian thực dự án Mỗi nhân viên có người thân người thân quản lý thông tin: Mã nhân viên, tên người thân, giới tính, ngày sinh quan hệ II MƠ HÌNH CSDL QUAN HỆ Xác định kiểu thực thể thuộc tính Theo tốn trên, xác định kiểu thực thể mạnh thuộc tính sau:  NHÂN VIÊN : mã NV, tên NV, giới tính, SĐT, ngày sinh, địa chỉ, lương, trưởng phịng, phịng ban, ngày vào làm  PHỊNG BAN : mã phòng, tên phòng, trưởng phòng, ngày nhận chức  DỰ ÁN : mã dự án, tên dự án, địa điểm dự án, phịng  CƠNG VIỆC : mã dự án, STT, tên cơng việc  PHÂN CƠNG: mã nhân viên, mã dự án, STT, thời gian  NGƯỜI THÂN : mã nhân viên, tên người thân, giới tính, ngày sinh, quan hệ Xác định thuộc tính phân loại thuộc tính  Nhân viên: thuộc tính khóa mã nhân viên  Phịng ban: thuộc tính khóa mã phịng  Dự án : thuộc tính khóa mã dự án  Cơng việc : thuộc tính khóa mã dự án, số thứ tự  Phân cơng: thuộc tính khóa mã nhân viên, mduan, stt  Người thân : thuộc tính khóa mã nhân viên, tên người thân Xác định liên kết - Giữa thực thể PHÒNG BAN thực thể NHÂN VIÊN có kiểu liên kết 1–N, + Một phịng có nhiều nhân viên + Một nv thuộc phòng - Giữa thực thể DỰ ÁN thực thể PHONG BAN có kiểu liên kết 1–N, : + Một dự án có nhiều phịng ban + Mỗi phịng ban có dự án - Giữa thực thể NHANVIEN thực thể NGUOITHAN có kiểu liên kết N–N, + Một nhân viên có nhiều người thân + Một người thân thuộc nhiều nhân viên Chuẩn hóa sở liệu  Từ mơ hình quan hệ ta suy phụ thuộc hàm: MaNV  TenNV, NgaySinh, GioiTinh, ĐiaChi, Luong, TgPhg, phg, NgVL MaDa  TenDa, DiaDiemDA, Phong Maphg  TenPhg, TrgPhg, Ngaynhanchuc MaNV, MaDa, STT  Thoigian MaNV, TenNT  Gioitinh, Ngaysinh, Quanhe MaDa, STT  TenCV  Từ phụ thuộc hàm ta thấy: - Mọi thuộc tính nguyên tố, giá trị thuộc tính đơn trị, khơng có thuộc tính có giá trị tính tốn từ số thuộc tính khác  Lược đồ quan hệ dạng chuẩn 1NF - Mọi thuộc tính khơng khóa quan hệ phụ thuộc hàm đầy đủ vào khóa  Lược đồ quan hệ dạng chuẩn 2NF - Mọi thuộc tính khơng khóa quan hệ khơng phụ thuộc bắc cầu vào khóa quan hệ Lược đồ quan hệ dạng chuẩn 3NF  Vậy lược đồ quan hệ chuẩn hóa dạng cao – 3NF CÁC BẢNG: tblNhanvien: TT Tên thuộc tính MaNV TenNv Ngaysinh Diachi Luong Gioitinh TrgPhg phg NgVL Kiểu liệu Nvarchar(20) Nvarchar(50) date Nvarchar(50) float bit Nvarchar(20) int datetime Ràng buộc PK tblPhongban: TT Tên thuộc tính Maphg TenPhg TrgPhg Ngaynhanchuc Kiểu liệu int Nvarchar(20) Nvarchar(20) date Ràng buộc PK tblDuan: TT Tên thuộc tính MaDa TenDa DiaDiemDA Phong Kiểu liệu Nvaechar(20) Nvarchar(50) Nvarchar(20) int Ràng buộc PK tblCongviec: TT Tên thuộc tính MaDa STT TenCV Kiểu liệu Nvarchar(20) int Nvarchar(50) Ràng buộc PK, FK PK Ghi Mã dự án Số thứ tự Tên công việc tblPhancong: TT Tên thuộc tính MaNV MaDa STT Thoigian Kiểu liệu Nvarchar(20) Nvarchar(20) int float Ràng buộc PK, FK PK,FK PK, FK Ghi Mã nhân viên Mã dự án Số thứ tự Thời gian làm FK FK FK FK Ghi Mã nhân viên Tên nhân viên Ngày sinh Địa Lương Giới tính Trưởng phịng Phòng ban Ngày vào làm Ghi Mã phòng Tên phòng Trưởng phòng Ngày nhận chức Ghi Mã dự án Tên dự án Địa điểm dự án Mã phòng tblNguoithan: TT Tên thuộc tính MaNV TenNT Gioitinh Ngaysinh Quanhe III Kiểu liệu Nvarchar(20) Nvarchar(50) bit date Nvarchar(15) Ràng buộc PK, FK PK TẠO CƠ SỞ DỮ LIỆU create table tblDuan( MaDa nvarchar(20) not null primary key, TenDa nvarchar(50) null, DiaDiemDA nvarchar(20) null, Phong int null Ghi Mã nhân viên Tên người thân Giới tính Ngày sinh Quan hệ ) create table tblCongviec( MaDa nvarchar(20) NOT NULL, STT int NOT NULL, TenCV nvarchar(50) NULL, ) alter table tblCongviec add constraint pk_Congviec primary key(MaDa,STT) ; create table tblNhanvien( MaNV nvarchar(20) NOT NULL primary key, TenNv nvarchar(50) NULL, Ngaysinh date null, Diachi nvarchar(50) NULL, Gioitinh bit null, Luong float NULL, TrgPhg nvarchar(20) NULL, phg int NULL ) alter table tblNhanvien add NgVL datetime null; create table tblPhancong( MaNV nvarchar(20) NOT NULL, MaDa nvarchar(20) NOT NULL, STT int NOT NULL, Thoigian float NULL ) alter table tblPhancong add constraint pk_Phancong primary key(MaNV,MaDa,STT) ; create table tblPhongban( Maphg int primary key, TenPhg nvarchar(20) NULL, TrgPhg nvarchar(20) NULL, Ngaynhanchuc date NULL ) alter table tblPhongban add SoNV int null; create table tblNguoithan( MaNV nvarchar(20) not null, TenNT nvarchar(50) not null, Gioitinh bit null, Ngaysinh date null, Quanhe nvarchar(15) null ) alter table tblNguoithan add constraint pk_Nguoithan primary key(MaNV, TenNT) ALTER TABLE tblCongviec WITH CHECK ADD CONSTRAINT [FK_congviec_duan] FOREIGN KEY(MaDa) REFERENCES tblDuan (MaDa) GO ALTER TABLE tblCongviec CHECK CONSTRAINT [FK_congviec_duan] GO nhân viên thêm vào phịng ban alter table tblPhongban add SoNV int null; update tblPhongban set SoNV=0; create trigger TangSoNV on tblNhanvien for insert as begin declare @maphg int select @maphg = phg from inserted if exists (select * from tblPhongban where Maphg=@maphg) begin update tblPhongban set SoNV= SoNV +1 where Maphg=@maphg end else begin RAISERROR('Ma Phong %s chua ton tai', 16,10,@MaPhg) ROLLBACK TRAN hủy ghi chứa nhân viên vừa thêm end end insert into tblPhongban (Maphg, TenPhg, TrgPhg, Ngaynhanchuc,SoNV) values(9, N'Lập web ', N'001', CAST(N'2009-08-08' AS Date),1) 32 select * from tblPhongban Trigger cho phép nhập thời gian nhân viên tham gia dự án từ đến 10 alter trigger TG_PC on tblPhancong instead of insert as begin declare @tg float select @tg = Thoigian from INSERTED if (@tg10) Raiserror('Thoi gian chi nhap tu den 30', 16,1) end Kiểm soát ngày vào làm phải sau ngày sinh 33 alter table tblNhanvien add NgVL datetime null; update tblNhanvien set NgVL=0; CREATE TRIGGER CHECK_NGAYVL ON tblNhanvien FOR UPDATE,INSERT AS IF UPDATE(NgVL) Kiểm tra việc cập nhật cột BEGIN DECLARE @NS SMALLDATETIME, @NGVL SMALLDATETIME SELECT @NGVL = NgVL FROM INSERTED SELECT @NS = Ngaysinh FROM INSERTED IF( @NS > @NGVL ) BEGIN PRINT N'Ngày vào Làm phải sau ngày sinh' ROLLBACK TRAN Câu lệnh quay lui thực biến cố không thành công END END Trigger đảm bảo nhân viên không 50 tuổi 34 CREATE TRIGGER trg_tuoinv ON tblNhanvien AFTER INSERT AS BEGIN DECLARE @Tuoinvmoi int SET @Tuoinvmoi = (SELECT YEAR(GETDATE()) -YEAR(Ngaysinh) FROM inserted) IF (@Tuoinvmoi > 50) BEGIN PRINT 'Nhan vien khong duoc qua 50 tuoi' ROLLBACK TRAN END END GO test INSERT INTO tblNhanvien VALUES (N'012', N'Nguyễn Cơng N',CAST(N'1950-10-10' AS Date),N'Hải Phịng',1, 7000000, N'001',1) Trigger đảm bảo nhân viên lương từ 2000000 đến 4000000 35 CREATE TRIGGER trg_luongcbnvmoi ON tblNhanvien FOR INSERT AS BEGIN DECLARE @luongcoban float SELECT @luongcoban = Luong FROM inserted IF (@luongcoban < 2000000 or @luongcoban > 4000000) PRINT 'Luong co ban phai tu 2000000 den 4000000' ROLLBACK TRAN END GO INSERT INTO tblNhanvien VALUES (N'012', N'Nguyễn Cơng N',CAST(N'1950-10-10' Date),N'Hải Phịng',1, 1000000, N'001',1) Trigger khơng cho phép sửa cột giới tính alter TRIGGER trg_suagtnv ON tblNhanvien FOR UPDATE AS 36 AS BEGIN DECLARE @gtmoi int SELECT @gtmoi = Gioitinh FROM inserted IF ( @gtmoi in(0,1)) PRINT 'Cap nhat cong' ELSE BEGIN PRINT 'Gioi tinh phai la hoac 0' ROLLBACK TRAN END END GO test UPDATE tblNhanvien SET Gioitinh= WHERE MaNV= '007' cập nhật mã pb nv duan cập nhật theo-CREATE TRIGGER UpdateMaPhong ON tblPhongban FOR UPDATE AS BEGIN 37 IF UPDATE( MaPhg ) BEGIN DECLARE @MaPhgCu int, @MaPhgMoi int SELECT @MaPhgCu = Maphg FROM DELETED SELECT @MaPhgMoi = Maphg FROM INSERTED If ( EXISTS (select phg from tblNhanvien Where phg= @MaPhgCu) ) UPDATE tblNhanvien SET phg = @MaPhgMoi WHERE phg = @MaPhgCu If ( EXISTS (select Phong from tblDuan Where Phong = @MaPhgCu) ) UPDATE tblDuan set Phong= @MaPhgMoi WHERE Phong = @MaPhgCu END END update tblPhongban set Maphg= where Maphg=12; trigger ko cho phép sửa manv create trigger NoUpdateMaNV on tblNhanvien for Update 38 as begin if update(MaNV) begin print N'Không thể thay đổi Mã NV' RollBack transaction không lưu lại thay đổi end End 10 Trigger kiểm tra Phòng ban có tồn hay khơng trước thêm cho NV alter trigger KtraNV on tbLNhanvien instead of insert as begin declare @pb INT select @pb =phg from inserted if (@pb not in (Select Maphg from tblPhongban Where Maphg = @pb)) Raiserror('Ban nhap ma phong khong ton tai',16,1) end insert into tblNhanvien (MaNV, TenNV, Ngaysinh, Diachi,Gioitinh, Luong, TrgPhg, phg) values (N'011', N'Trần Y',CAST(N'1996-10-10' AS Date),N'Hải Phòng',0, 7000000, N'001',10) select * from tblNhanvien 39 VII PHÂN QUYỀN VÀ BẢO MẬT CSDL CREATE LOGIN VANA2 WITH PASSWORD = 'van12345'; GO CREATE LOGIN TIENA5 WITH PASSWORD = 'tien12345' ; GO CREATE LOGIN DATA3 WITH PASSWORD = 'dat12345'; GO CREATE LOGIN HUNGA5 WITH PASSWORD = 'hung12345'; 40 Tạo User cho thành viên CREATE USER NgDinhVan FOR LOGIN VANA2; GO CREATE USER TranVanTien FOR LOGIN TIENA5; GO CREATE USER DinhQuocDat FOR LOGIN DATA3; GO CREATE USER VuQuocHung FOR LOGIN HUNGA5; CẤP QUYỀN CHO CÁC THÀNH VIÊN Tạo role quyền SELECT bảng Nhanvien, Phongban, Phancong 41 CREATE ROLE role_NhanVien ; GO GRANT SELECT ON tblNhanvien TO role_NhanVien; GO GRANT SELECT ON tblPhongban TO role_NhanVien; GO GRANT SELECT ON tblPhancong TO role_NhanVien; GO /*User NgDinhVan 1.Quyền INSERT,UPDATE,DELETE Nhanvien 2.Quyền sử dụng thủ tục INSERT Nhanvien 3.addrolemember role_NhanVien */ 1-GRANT INSERT,UPDATE,DELETE ON tblNhanvien TO NgDinhVan; GO -3-EXECUTE sp_addrolemember role_NhanVien,NgDinhVan; GO ////////////////////////// /*User TranVanTien INSERT,UPDATE,DELETE Congviec va Duan 2.Quyền sử dụng thủ tục tủ INSERT Congviec 3.addrolemember role_NhanVien */ 42 1-GRANT INSERT,UPDATE,DELETE ON tblCongviec TO TranVanTien; GO GRANT INSERT,UPDATE,DELETE ON tblDuan TO TranVanTien; GO -3-EXECUTE sp_addrolemember role_NhanVien,TranVanTien; GO /*User DinhQuocDat 1.INSERT,UPDATE,DELETE Nguoithan 2.Quyền sử dụng thủ tục tủ INSERT DinhQuocDat 3.addrolemember role_NhanVien */ GRANT INSERT,UPDATE,DELETE ON tblNguoithan TO DinhQuocDat; GO EXECUTE sp_addrolemember role_NhanVien,DinhQuocDat; GO /* USER VuQuocHung 1.INSERT,UPDATE,DELETE Phongban phân công 2.Quyền sử dụng thủ tục tủ INSERT NhanVien 3.addrolemember role_NhanVien */ GRANT INSERT,UPDATE,DELETE ON tblPhancong TO VuQuocHung; 43 GRANT INSERT,UPDATE,DELETE ON tblPhongban TO VuQuocHung; GO EXECUTE sp_addrolemember role_NhanVien,VuQuocHung; Thu hồi/cấm sử dụng NgDinhVan thu hồi quyền xóa bảng Nhanvien cấm sử dụng quyền SELECT bảng nhanvien role REVOKE DELETE ON tblNhanvien FROM NgDinhVan; GO DENY SELECT ON tblNhanvien TO NgDinhVan; GO TranVanTien thu hoi quyen xoa cong viec REVOKE DELETE ON tblCongviec FROM TranVanTien; GO DinhQuocDat thu hồi quyền UPDATE REVOKE UPDATE ON tblNguoithan FROM DinhQuocDat; GO VIII PHÂN TÁN CSDL Tạo linkedserver exec sp_addlinkedserver @server = 'sv_Thaibinh', @srvproduct ='QLYNV', @provider = 'SQLNCLI', @datasrc = '192.168.253.128' exec sp_linkedservers Đăng nhập từ kết nối 44 exec sp_addlinkedsrvlogin @rmtsrvname = 'sv_Thaibinh', @useself = 'False', @rmtuser = 'sa', @rmtpassword = '1' create synonym NV for sv_Thaibinh.BTLqlynv.dbo.tblNhanvien select *from tblNhanvien select * from NV Tạo PROCEDURE thêm nhân viên: CREATE PROCEDURE insert_Value_NhanVien @MaNV NVARCHAR(20),@TenNV NVARCHAR(50),@NgaySinh DATE ,@DiaChi NVARCHAR(50), @GioiTinh BIT, @fLG FLoat, @TRGPHG NVARCHAR(20),@PHG INT, @Chinhanhlamviec NVARCHAR(20) AS BEGIN Check xem mã nhân viên tồn lại hay chưa IF @MaNV IN( SELECT MaNV FROM tblNhanvien UNION SELECT MaNV FROM NV ) BEGIN RAISERROR(N'Mã nhân viên tồn !',16,1); RETURN; END IF @DiaChi = N'Thái Bình' BEGIN INSERT INTO tblNhanvien VALUES (@MaNV ,@TenNV ,@NgaySinh ,@DiaChi , @GioiTinh , @fLG , @TRGPHG ,@PHG , @Chinhanhlamviec ); 45 RETURN; END IF @DiaChi = N'Hà Nam' BEGIN INSERT INTO NV VALUES (@MaNV ,@TenNV ,@NgaySinh ,@DiaChi , @GioiTinh , @fLG , @TRGPHG ,@PHG , @Chinhanhlamviec ); RETURN; END RAISERROR(N'Dịa không tồn !',16,1); END Chạy thủ tục thêm nhân viên EXECUTE insert_Value_NhanVien N'015', N'Nguyễn Phương Đơng','1978-1115',N'Thái Bình',1, 8000000, N'001',3,N'Hà Nội' EXECUTE insert_Value_NhanVien N'016', N'Nguyễn Phương Tây','1980-102',N'Hà Nam',1, 8000000, N'002',1,N'Hà Nội' Lấy danh sách nhân viên server SELECT *FROM tblNhanvien UNION SELECT *FROM NV 46

Ngày đăng: 20/09/2023, 15:42

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w