1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo bài tập lớn môn hệ quản trị cơ sở dữ liệu Đề tài quản lý nhân viên

48 0 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

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 1,18 MB

Cấu trúc

  • I. Phát biểu bài toán (4)
    • 1. Xây dựng mô hình thực thể liên kết (5)
  • II. Các bảng cơ sở dữ liệu của bài toán (11)
    • 1. Xây dựng các bảng của bài toán (11)
    • 2. Tạo bảng (12)
    • 3. Khóa (14)
    • 4. Nhập dữ liệu (15)
  • III. Thực hiện các yêu cầu sau (19)
    • 1. Truy Vấn Dữ Liệu (19)
    • 2. Tạo view (22)
    • 3. Tạo thủ tục (26)
    • 4. Tạo Trigger kiểm soát ràng buộc dữ liệu (32)
    • 5. Phân quyền cho các thành viên (43)
    • 6. Phân tán (44)

Nội dung

Quy định mỗi nhân viên có một mã nhân viên, ngày vào làm ,độ tuổi yêu cầu là trên 18 tuổi  Phòng ban cần có các thông tin: mã phòng ban để xác định cùng với tên phòng ban và mã dự án mà

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

Xây dựng mô hình thực thể liên kết

Theo bài toán trên, chúng ta xác định được thực thể và thuộc tính:

Nhân Viên: sMaNV, sTenNV, dNgaySinh, dNgayVaoLam, sDiaChi,sSodienthoai

Phòng Ban: sMaPB, sTenPB, sDiaDiem.

Thời gian công tác: dNgayBDnhamchuc.

Hệ số lương: iHesoluong, fLuongtuongung

Tiền Phụ Cấp: iMucpgucap, fTientuongung

Xác định liên kết giữa các thực thể:

 Giữa 2 tập thực thể NhanVien và PhongBan có mối liên kết “thuộc” vì một PhongBan

Có nhiều NhanVien và mỗi NhanVien chỉ thuộc một PhongBan

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “ 1 – n ”.

 Giữa 2 tập thực thể NhanVien và ThoiGianCongTac có mối liên kết “thỏa ước” vì một

NhanVien có các chức vụ vào các thời gian khác nhau

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “ 1 – n ”.

 Giữa 2 tập thực thể ChucVu và ThoiGianCongTac có mối liên kết “chứa” vì một chỉ có một ChucVu của một nhân viên được nhận vào thời gian khác nhau

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “1 – n”.

 Giữa 2 tập thực thể NhanVien và ChucVu có mối liên kết “đảm nhiệm” vì 1 NhanVien chỉ đảm nhiệm 1 ChucVu

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “1 – 1”

 Giữa 2 tập thực thể NhanVien và Luongcó mối liên kết “hưởng” trong thời điểm khác nhau

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “1 – n”

 Giữa 2 tập thực thể Lương và Hệ số lương có mối liên kết “chứa” vì 1 mức Lương có nhiều hệ số lương

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “1 – n”

 Giữa 2 tập thực thể Lương và Tiền phụ cấp có mối liên kết “chứa” vì 1 mức Lương có nhiều hệ số phụ cấp

=> Mối liên kết giữa 2 tập thực thể có kiểu liên kết là “1 – n”

2.Xây dựng mô hình cơ sở dữ liệu quan hệ

* Quy tắc với thực thể mạnh

NhanVien (s MaNV , sTenNV, dNgaySinh, dNgayVaoLam, sDiaChi,sSodienthoai).

NhanVien ( s MaNV , sTenNV, dNgaySinh,dNgayVaoLam ,sDiaChi, sSodienthoai, sMaPB).

Luong(sMaNV, iHesoluong, iMucphucap, dNgayhuong, fTamung, iSongaynghi)

* Quy tắc với liên kết 1-1:

NhanVien ( s MaNV , sMaCV,sTenNV, dNgaySinh,dNgayVaoLam ,sDiaChi, sSodienthoai, sMaPB,).

= > Cơ sở dữ liệu cuối cùng:

NhanVien ( s MaNV , sMaCV,sTenNV, dNgaySinh,dNgayVaoLam ,sDiaChi, sSodienthoai, sMaPB,).

Luong(sMaNV, iHesoluong, iMucphucap, dNgayhuong, fTamung, iSongaynghi) ChucVu(sMaCV, sTenCV).

3.Chuẩn hóa cơ sở dữ liệu của bài toán

Từ mô hình quan hệ ta suy ra các phụ thuộc hàm:

 MaNV  TenNV, NgaySinh, ĐiaChi, ĐienThoai, sMaPB, sMaCV

 sMaNV  iHesoluong, iMucphucap, dNgayhuong, fTamung, iSongaynghi

Từ các phụ thuộc hàm trên ta thấy:

- Mọi thuộc tính đều là nguyên tố, giá trị các thuộc tính trên bộ là đơn trị, 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ệ đều phụ thuộc hàm đầy đủ vào khóa chính.

 Lược đồ quan hệ trên đã ở dạng chuẩn 2NF.

- Mọi thuộc tính không khóa của quan hệ đều 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ệ đã được chuẩn hóa về dạng cao nhất – 3NF

Mô hình LK Database Diagrams

Các bảng cơ sở dữ liệu của bài toán

Xây dựng các bảng của bài toán

- tblNhanVien: sMaNV, sTenNV, dNgaySinh, sDiaChi, dNgayvaolam, sMaCV, sSoDienThoai,sMaPB

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaNV nvarchar(20) PK Mã nhân viên

2 sTenNV nvarchar(30) Tên nhân viên

5 dNgayvaolam Date Ngày vào làm

7 sSoDienThoai VARCHAR(15) Số điện thoại

8 sMaPB nvarchar (10) FK Mã phòng ban

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaCV nvarchar(30) PK Mã chức vụ

2 sTenCV nvarchar(20) Tên chức vụ

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaPB nvarchar(10) PK Mã phòng ban

2 sTenPB nvarchar(20) Tên phòng ban

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 iHesoluong Int PK Mã Lương

2 fLuongtuongung Float Tiền lương tương ứng

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 iTMucphucap Int PK Mã hệ số

2 fTientuongung Float Tiền tương ứng

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaNV nvarchar(20) FK Mã nhân viên

2 sMaCV nvarchar(30) FK Mã chức vụ

3 dNgayBD Date Ngày bắt đầu nhận chức

- tblLuong: sMaNV, iHesoluong, iMucphucap, dNgayhuong, fTamung, iSongaynghi

STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Ghi chú

1 sMaNV nvarchar(20) FK Mã nhân viên

2 iHesoluong Int FK Mã Lương

3 iMucphucap Int FK Mã hệ số

5 fTamung Float Tiền tạm ứng

6 iSongaynghi Int Số ngày Nghỉ

Tạo bảng

Bang nhanvien create table NhanVien

( sMaNV nvarchar(20) NOT NULL, sTenNV nvarchar(30), sMaCV NVARCHAR(30), dNgaySinh date, dNgayVaoLam date, sDiaChi nvarchar(30), sSoDienThoai char(20), sMaPB nvarchar (10),

Bang phong ban create table PhongBan

( sMaPB nvarchar(10) NOT NULL, sTenPB nvarchar(20)

Bang thoi gian cong tac

CREATE TABLE thoigiancongtac( sMaNV NVARCHAR(20), sMaCV NVARCHAR(30)

ALTER TABLE dbo.thoigiancongtac ALTER COLUMN sMaNV NVARCHAR(20) Bang chuc vu create table ChucVu

( sMaCV nvarchar(30) NOT NULL, sTenCV nvarchar(20)

ALTER TABLE dbo.ChucVu ALTER COLUMN sMaCV NVARCHAR(30) NOT NULL

Bang luong create table Luong

( sMaNV nvarchar(10), iHesoluong INT, iMucphucap int , dNgayhuong DATETIME, fTamung FLOAT, iSongaynghi INT

ALTER TABLE dbo.Luong ALTER COLUMN sMaNV NVARCHAR(20)

CREATE TABLE TienPhuCap( iMucphucap INT NOT NULL, fTientuongung FLOAT

CREATE TABLE HeSoLuong( iHesoluong INT NOT NULL, fLuongtuongung FLOAT

Khóa

ALTER TABLE dbo.NhanVien ADD CONSTRAINT PK_NhanVien PRIMARY KEY(sMaNV)

ALTER TABLE dbo.ChucVu ADD CONSTRAINT PK_chucvu PRIMARY

ALTER TABLE dbo.PhongBan ADD CONSTRAINT PK_phongban PRIMARY KEY(sMaPB)

ALTER TABLE dbo.TienPhuCap ADD CONSTRAINT PK_tienphucap PRIMARY KEY(iMucphucap)

ALTER TABLE dbo.HeSoLuong ADD CONSTRAINT PK_hesoluong PRIMARY KEY(iHesoluong)

ALTER TABLE dbo.NhanVien ADD CONSTRAINT FK_Nhanvien_chucvu

FOREIGN KEY(sMaCV) REFERENCES dbo.ChucVu(sMaCV),

CONSTRAINT FK_Nhanvien_PhongBan FOREIGN KEY(sMaPB) REFERENCES dbo.PhongBan(sMaPB)

ALTER TABLE dbo.thoigiancongtac ADD CONSTRAINT

FK_thoigiancongtac_nhanvien FOREIGN KEY(sMaNV) REFERENCES dbo.NhanVien(sMaNV),

CONSTRAINT FK_thoigiancongtac_chucvu FOREIGN KEY(sMaCV)

ALTER TABLE dbo.Luong ADD CONSTRAINT FK_luong_nhanvien FOREIGN KEY(sMaNV) REFERENCES dbo.NhanVien(sMaNV),

CONSTRAINT FK_luong_hesoluong FOREIGN KEY(iHesoluong) REFERENCES dbo.HeSoLuong(iHesoluong),

CONSTRAINT FK_luong_phucap FOREIGN KEY(iMucphucap) REFERENCES dbo.TienPhuCap(iMucphucap)

Ràng buộc miền giá trị

Nhan vien phải từ 18 tuổi trở lên

ALTER TABLE dbo.NhanVien ADD CONSTRAINT ck_nhanvien

CHECK(FLOOR(DATEDIFF(DAY,dNgaySinh,dNgayVaoLam)/365)>)

Nhập dữ liệu

bảng PhongBan insert into PhongBan(sMaPB,sTenPB,sDiaDiem) values('20A01',N'Ban Quản Trị',N'Hà Nội') insert into PhongBan(sMaPB,sTenPB,sDiaDiem) values('20A02',N'Ban Tổng Giám Đốc',N'Hồ Chí Minh') insert into PhongBan(sMaPB,sTenPB,sDiaDiem) values('20A03',N'Ban Kiểm Soát',N'Thanh Hóa') insert into PhongBan(sMaPB,sTenPB,sDiaDiem) values('20A04',N'Ban Kiểm Toán',N'Bắc Ninh') insert into PhongBan(sMaPB,sTenPB,sDiaDiem) values('20A05',N'Ban Quản Lí',N'Hà Nội')

Bảng Chức Vụ insert into dbo.ChucVu (sMaCV,sTenCV) values('1A1',N'Trưởng Phòng') insert into dbo.ChucVu (sMaCV,sTenCV) values('1A3',N'Nhân Viên') insert into dbo.ChucVu (sMaCV,sTenCV) values('1A2',N'Phó Phòng') insert into dbo.ChucVu (sMaCV,sTenCV) values('1A4',N'Thử Việc')

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(0,0.0)

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(1,150)

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(2,185)

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(3,200)

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(4,300)

INSERT INTO dbo.TienPhuCap(iMucphucap,fTientuongung) VALUES(5,350)

INSERT INTO dbo.HeSoLuong(iHesoluong,fLuongtuongung) VALUES(1,1000)

INSERT INTO dbo.HeSoLuong(iHesoluong,fLuongtuongung) VALUES(2,1500)

INSERT INTO dbo.HeSoLuong(iHesoluong,fLuongtuongung) VALUES(3,2500)

INSERT INTO dbo.HeSoLuong(iHesoluong,fLuongtuongung) VALUES(4,3000)

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'001', N'Bùi Tuấn Anh', N'1A1', '1999-11-25','2019-10-25', N'Hà Nội', '0383865954', N'20A01', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'002', N'Trần Thế Anh', N'1A1', '1995-10-25','2018-11-20', N'Hồ Chí Minh', '0380989873', N'20A02', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'003', N'Trần Lan Anh', N'1A1', '1992-03-20','2021-3-12', N'Hà Nội', '0104957289', N'20A03', N'Nữ')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'004', N'Nguyễn Thanh Bình', N'1A1', '2002-10-25','2019-10-25', N'Hà Nội', '0956861121', N'20A04', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'005', N'Nguyễn Thị A', N'1A3', '2002-11-3','2020-12-21', N'Bắc Giang', '0383865954', N'20A05', N'Nữ')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'006', N'Trần Văn C', N'1A2', '1992-12-1','2019-10-25', N'Quảng Ninh', '0183486297', N'20A05', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'007', N'Trần Lan Anh', N'1A4', '2001-12-3','2019-10-25', N'Hưng Yên', '0456982923', N'20A01', N'Nữ')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'008', N'Trần Thu Chiên', N'1A3', '1990-10-25','2020-5-4', N'Quảng Bình', '0383865954', N'20A04', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'009', N'Đào Văn Hai', N'1A2', '1998-4-12','2019-11-12', N'Hà Nội', '0383865954', N'20A03', N'Nam')

INSERT INTO dbo.NhanVien(sMaNV,sTenNV,sMaCV,dNgaySinh,dNgayVaoLam,sDiaChi,sSoDien Thoai,sMaPB,sgioitinh)

VALUES(N'010', N'Trần Thị Tý', N'1A3', '2002-1-1','2021-11-3', N'Hưng Yên', '0383865954', N'20A02', N'Nữ')

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'001',4,0,'2019-12-31',0.0,4)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'002',4,0,'2018-12-20',0.0,0)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'003',4,0,'2021-3-12',0.0,1)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'004',4,0,'2019-12-25',0.0,2)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'005',4,0,'2021-1-22',0.0,2)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'006',3,0,'2019-11-30',0.0,0)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'007',1,0,'2019-12-25',0.0,0)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'008',4,0,'2020-6-4',0.0,0)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi)VALUES(N'009',3,0,'2019-12-15',0.0,1)

INSERT INTO dbo.Luong(sMaNV,iHesoluong,iMucphucap,dNgayhuong,fTamung,iSongaynghi) VALUES(N'010',1,0,'2021-12-3',0.0,0)

SELECT sMaNV,sMaCV,dNgayVaoLam FROM dbo.NhanVien

Bảng thời gian công tác

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

INSERT INTO dbo.thoigiancongtac(sMaNV,sMaCV,dNgayBD)

Thực hiện các yêu cầu sau

Truy Vấn Dữ Liệu

Câu 1: Lấy thông tin phòng ban có tên phòng ban là "Ban Quản Trị" select * from PhongBan where sTenPB= N'Ban Quản Trị'

Câu 2: Lấy thông tin nhân viên có độ tuổi từ 18 trở lên select * from NhanVien where (datediff(year,dNgaysinh,getdate())>)

Câu 3: Lấy thông tin nhân viên có hệ số lương lớn hơn hoặc bằng 3 select * from Luong where iHesoluong >=3

Câu 4: Tính tổng số ngày nghỉ của tất cả các nhân viên select sum(iSongaynghi) as[Tổng số ngày nghỉ của tất cả nv] from Luong

Câu 5: Lấy danh sách gồm tên nhân viên và tên phòng ban của nhân viên đó select sTenNV,sTenPB from NhanVien,PhongBan where NhanVien.sMaPB = PhongBan.sMaPB

Câu 6: Lấy ra tên nhân viên và hệ số lương của từng người select sTenNV,luong.iHesoluong from NhanVien inner join Luong on NhanVien.sMaNV= Luong.sMaNV

Câu 7: Lấy ra tên nhân viên có tháng sinh là tháng 10 select * from NhanVien where month(dngaysinh) = 10

Câu 8: Lấy ra tất cả thông tin nhân viên có tên chức vụ là Trưởng Phòng select sTenNV, sMaNV from NhanVien inner join ChucVu on NhanVien.sMaCV = ChucVu.sMaCV where sTenCV = N'Phó Phòng'

Câu 9: Lấy ra tất cả thông tin nhân viên có năm sinh lớn hơn 1999 select * from NhanVien inner join thoigiancongtac on NhanVien.sMaNV = thoigiancongtac.sMaNV where year(dNgaySinh) > 1999

Câu 10: In ra nhân viên có hệ số lương nhỏ hơn 3 và quê phải ở Hưng Yên select * from NhanVien inner join Luong on Luong.sMaNV = NhanVien.sMaNV where iHesoluong

Ngày đăng: 16/11/2024, 15:27

w