CHƯƠNG 1: ĐẶT BÀI TOÁN
Hoạt động quản lý nhân sự của công ty được mô tả như sau:
1.1 Quản lý nhân viên
Một công ty có nhiều nhân viên làm việc. Mỗi nhân viên có 1 mã duy nhất. Thông tin
về lý lịch nhân viên bao gồm: họ tên nhân viên, ngày sinh, giới tính, địa chỉ, số điên
thoại
Nhân viên có thông tin về trình độ học vấn và chuyên môn, gồm: mã trình độ, tên trình
độ
Nhân viên làm việc tại các phòng ban của công ty. Nhân viên có thể đảm nhận những
vị trí, chức vụ khác nhau trong công ty. Mỗi một chức vụ có một mã duy nhất kèm theo
tên có thể đảm nhận bởi nhiều nhân viên
1.2 Quản lý phòng ban
Công ty có nhiều phòng ban khác nhau. Mỗi phòng ban có nhiều nhân viên cùng làm
việc và mỗi nhận viên chỉ được làm việc tại một phòng ban.
Mỗi phòng ban có một mã phòng, tên phòng và số điện thoại liên hệ.
1.3 Quản lý lương
Nhân viên làm việc được nhận lương hàng tháng. Lương gồm: mã lương, lương cơ
bản, hệ số lương.
Ngoài ra công ty còn có các chính sách lương cho nhân viên. Nếu trong quá trình làm
việc tại công ty, nhân viên có thành tích, làm việc chăm chỉ và nhiều đóng góp thì công
ty sẽ tăng lương: lương tăng ca, thưởng, phụ cấp,.. Nếu nhân viên vi phạm nội quy của
công ty và phòng ban làm việc sẽ bị nhắc nhở, kiểm điểm và phạt, trừ lương
1.4 Quản lý dự án
Mỗi dự án có mã duy nhất và tên, do một phòng ban phụ trách. Nhân viên được tham
gia các dự án do phòng ban mình triển khai
CHƯƠNG 2:
1
XÂY DỰNG MÔ HÌNH THỰC THỂ LIÊN KẾT
2.1 Xác định các thuộc thể
NhanVien, PhongBan, ChucVu, TrinhDo, Luong, DuAn.
2.2 Xác định các thuộc tính cho thực thể
NhanVien( MaNV, Hoten, Ngaysinh, Gioitinh, Diachi, SDT )
PhongBan( MaPB, TenPB, SDT)
ChucVu( MaCV, TenCV)
TrinhDo(MaTDHV, TenTDHV)
Luong( MaLuong, HSLuong, LuongCB, Phucap)
DuAn( MaDA, TenDA)
2.3 Xác đinh mối quan hệ giữa các thuộc tính
Quan hệ một-nhiều (1-n hay n-1):
NhanVien
NhanVien
NhanVien
PhongBan
n
Lamviec
n
Co
Huong
n
1
Quanly
PhongBan
1
1
TrinhDo
1
Luong
n
DuAn
Quan hệ nhiều- nhiều(n-n):
ThamGia
DuAn
2
NhanVien
NhạnVien
n
n
DamNhiem
n
n
n
ChucVu
2.4 Vẽ mô hình thực thể liên kết ER
SDT
Ma
Luong
3
TenPB
Gioitin
h
MaPB
H
o
t LuongCB
MaNV
Diachi
HS
Luong
PhuCap
SDT
Ngaysinh
1
Lamviec
PhongBan
n
NhanVien
Huong
n
1
1
Luong
n
n
Quanly
n
ThamGia
DamNhiem
Co
n
n
n
DuAn
MaDA
ChucVu
1
TrinhDo
TenDA
TenCV
Ten
TDHV
MaCV
MaTDHV
CHƯƠNG 3:
4
CHUYỂN MÔ HÌNH THỰC THỂ LIÊN KẾT SANG MÔ HÌNH
QUAN HỆ
Mối quan hệ một- nhiều:
Quy tắc : Thêm vào quan hệ một thuộc tính khóa của quan hệ nhiều
•
NhanVien- Lamviec- PhongBan: Thêm khóa “MaPB” vào thực thể
Nhanvien
H
o
t Diachi
MaPB
Gioitin
h
MaNV
SDT
TenPB
Ngaysinh
SDT
PhongBan
1
Lamviec
n
NhanVien
NhanVien( MaNV, Hoten, Ngaysinh, Gioitinh, Diachi, SDT, MaPB)
•
LuongCB
NhanVien –Huong- Luong: Thêm thuộc tính khóa “MaLuong” vào
thực thể Nhanvien.
MaNV
Ngaysinh
MaLuong
5
HSPhucap
HS
Luong
Diachi
1
Luong
Huong
H
o Gioitin
t
h
SDT
n
NhanVien
NhanVien( MaNV, Hoten, Ngaysinh, Gioitinh, Diachi, SDT, MaLuong)
•
PhongBan- Quanly- DuAn: Thêm thuộc tính khóa “MaPB” vào thực
thể Duan.
MaPB
TenPB
MaDA
TenDA
SDT
1
PhongBan
Quanly
n
DuAn
DuAn(MaDA, TenDA, MaPB)
•
Ngaysinh
Diachi
NhanVien – Co – TrinhDo: Thêm thuộc tính khóa “MaTDHV” vào
thực thể Nhanvien
Gioitin
h
6
MaNV
Ten
TDHV
SDT
MaTDHV
H
o
t
n
NhanVien
Co
1
TrinhD
o
NhanVien( MaNV, Hoten, Ngaysinh, Gioitinh, Diachi, SDT, MaTDHV)
Mối quan hệ nhiều – nhiều:
Quy tắc: Tạo một quan hệ mới có:
+ Tên quan hệ là tên mối quan hệ
+ Thuộc tính là những thuộc tính khóa của các tập thực thể liên quan.
NhanVien – ThamGia – DuAn:
Cách chuyển:
+ Tạo quan hệ mới: ThamGia
+ Thêm thuộc tính khóa “MaNV” và “MaDA” vào quan hệ Thamgia
•
MaNV
Diachi
SDT
Ngaysinh
n
NhanVien
MaDA
Gioitin
h
H
o
t
ThamGia
TenDA
n
DuAn
7
ThamGia ( MaNV,MaDA)
•
NhanVien – DamNhiem – ChucVu
Cách chuyển:
+ Tạo quan hệ mới : DamNhiem
+ Thêm thuộc tính khóa “MaNV”, “MaCV” vào quan hệ Damnhiem
Ngaysinh
H
o
t
Gioitinh
MaNV
Diachi
SDT
NhanVien
n
MaCV
DamNhiem
n
TenCV
ChucVu
DamNhiem ( MaNV, MaCV)
4.2 Mối quan hệ giữa các bảng
8
CHƯƠNG 5:
TRUY VẤN TRÊN HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU
9
5.1 Đưa ra tên nhân viên có giới tính là “Nữ”, có chữ “a” trong họ tên và là
“ Nhân Viên”
SQL
SELECT NhanVien.HoTen, NhanVien.GioiTinh, ChucVu.TenCV
FROM NhanVien, ChucVu, DamNhiem
WHERE ((NhanVien.HoTen) Like "%a%") AND ((NhanVien.GioiTinh)="Nữ")
AND ((ChucVu.TenCV)="Nhân Viên")) AND (ChucVu.MaCV =
DamNhiem.MaCV, NhanVien.MaNV = DamNhiem.MaNV);
ĐSQH
(
(
HoTen Gioitinh=”Nữ”˄ HoTen=”%a%” TenCV=”Nhân Viên”
(DamNhiem⋈ChucVu))(NhanVien))
5.2 Đưa ra danh sách nhân viên làm dự án số 3.
SQL
10
SELECT NhanVien.MaNV, NhanVien.HoTen, PhongBan.MaPB,
DuAn.MaDA
FROM PhongBan, NhanVien, DuAn
WHERE ((DuAn.MaDA)=3) AND (PhongBan.MaPB = NhanVien.MaPB,
PhongBan.MaPB = DuAn.MaPB);
ĐSQH
(
MaNV, HoTen MaDA=3
(PhongBan⨝DuAn)(NhanVien))
5.3 Đưa ra thông tin của phòng ban có trên 3 nhân viên
SQL
11
SELECT PhongBan.MaPB, PhongBan.TenPB, PhongBan.SDT,
Count(NhanVien.MaNV) AS SL_NV
FROM PhongBan, NhanVien
GROUP BY PhongBan.MaPB, PhongBan.TenPB, PhongBan.SDT
HAVING ((Count(NhanVien.MaNV))>3) AND (PhongBan.MaPB =
NhanVien.MaPB);
ĐSQH
(
MaPB,TenPB,SDT count(NhanVien)>3(MaPB,TenPB,SDTF count(NhanVien)(PhongBan⨝NhanVien)))
5.4 Thống kê số nhân viên có trình độ học vấn “Tốt Nghiệp Trung Học Phổ
Thông” của mỗi phòng ban
ĐSQH
12
MaPBℑSUM ( MaTDHV = 7 ) ((TrinhDo∞NhanVien)∞PhongBan)
SQL
SELECT PhongBan.MaPB, PhongBan.TenPB, Count(NhanVien.MaNV) AS
SLNVTTC3
FROM TrinhDo INNER JOIN (PhongBan INNER JOIN NhanVien ON
PhongBan.MaPB = NhanVien.MaPB) ON TrinhDo.MaTDHV =
NhanVien.MaTDHV
GROUP BY PhongBan.MaPB, PhongBan.TenPB, TrinhDo.MaTDHV
HAVING (((TrinhDo.MaTDHV)=7));
5.5 Đưa ra họ tên, trình độ học vấn, SĐT, địa chỉ và hệ số lương của trưởng mỗi
phòng ban.
ĐSQH
∏ HoTen,TenTDHV ,SDT , DiaChi, HSLuong (σ MaCV =3)(((( PhongBan∞NhanVien)∞DamNhiem)∞Luong )∞TrinhDo )
SQL
SELECT PhongBan.TenPB, NhanVien.HoTen, TrinhDo.TenTDHV,
NhanVien.SDT, NhanVien.DiaChi, Luong.HSLuong
13
FROM TrinhDo INNER JOIN (PhongBan INNER JOIN ((Luong INNER JOIN
NhanVien ON Luong.MaLuong = NhanVien.MaLuong) INNER JOIN
DamNhiem ON NhanVien.MaNV = DamNhiem.MaNV) ON PhongBan.MaPB
= NhanVien.MaPB) ON TrinhDo.MaTDHV = NhanVien.MaTDHV
GROUP BY PhongBan.TenPB, NhanVien.HoTen, TrinhDo.TenTDHV,
NhanVien.SDT, DamNhiem.MaCV, NhanVien.DiaChi, Luong.HSLuong
HAVING (((DamNhiem.MaCV)=3));
5.6 Đưa ra thông tin của những phòng ban có mức lương cơ bản trung
bình của nhân viên > 8 000 000.
σ
ĐSQH
Avg ( LuongCB) >8 000000
( NhanVien∞PhongBan)
SQL
SELECT PhongBan.MaPB, PhongBan.TenPB, PhongBan.SDT
FROM PhongBan INNER JOIN (Luong INNER JOIN NhanVien ON
Luong.MaLuong = NhanVien.MaLuong)
14
ON PhongBan.MaPB = NhanVien.MaPB
GROUP BY PhongBan.MaPB, PhongBan.TenPB, PhongBan.SDT
HAVING (((Avg(Luong.LuongCB))>8000000));
15