Mô tả bài toán Để quản lý việc phân công của nhân viên tham gia vào xây dựng các công trình, Công ty xây dựng ABC tổ chức quản lý như sau: - Cùng lúc công ty có thể tham gia xây dựng nhi
Trang 1ĐẠI HỌC DUY TÂN -
-Khoa CNTT
Đồ Án Cá Nhân
Học Phần: Cơ Sở Dữ Liệu
Đề Tài: Quản Lý Lao Động
GVHD : TRẦN HUỆ CHI
Lớp : IS 301 I
Tên SV: Nguyễn Khương Long
MSSV : 28211141925
Đà Nẵng, Ngày 13 Tháng 10 Năm 2023
Trang 2Mục lục PHẦN I-PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ SỞ
DỮ LIỆU……… 3
I.mô tả bài toán ……… ……… 3
II mô hình thực thể liên kết ……….4
III mô hình quan hệ……… 4
IV nhập dữ liệu………5
PHẦN II-BIỂU THỨC ĐẠI SỐ QUAN HỆ……….6
PHẦN II- NGÔN NGỮ SQL……… 7
I viết câu lệnh về bảng……… 7
1.tạo bảng (ít nhất 3 câu) ……….7
2.viết câu lệnh chỉnh sửa cấu trúc bảng……….7
3.câu lệnh về dữ liệu……….8
II câu lệnh thao tác dữ liệu ………8
1 Truy vấn lấy dữ liệu từ 1 bảng (8 câu) ………8
Trang 32 Truy vấn từ nhiều bảng (6câu)
……… 9
3 Truy vấn có dùng
hàm……… 10
4 Truy vấn có gộp
nhóm……… 11
5 Truy vấn lồng
nhau……….12
PHẦN I- PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ
SỞ DỮ LIỆU
I Mô tả bài toán
Để quản lý việc phân công của nhân viên tham gia vào xây dựng các công trình, Công ty xây dựng
ABC tổ chức quản lý như sau:
- Cùng lúc công ty có thể tham gia xây dựng nhiều công trình, mỗi công trình có một mã số công trình duy nhất (MACT), mỗi mã số công trình xác định các thông tin như: tên gọi công trình (TENCT), địa
điểm(ĐỊAĐIEM), ngày công trình được cấp giấy phép xây dựng (NGAYCAPGP), ngày khởi công (NGAYKC), ngày hoàn thành (NGAYHT)
- Mỗi nhân viên của công ty ABC có một mã số nhân viên(MANV) duy nhất, một mã số nhân viên xác định các thông tin như: Họ tên (HOTEN), ngày sinh (NGAYSINH), phái (PHAI), địa chỉ (ĐIACHI)
Trang 4- Mỗi nhân viên phải chịu sự quản lý hành chánh bởi một phòng ban Tất nhiên một phòng ban quản lý hành chánh nhiều nhân viên Công ty có nhiều phòng ban (Phòng kế toán, phòng kinh doanh, phòng kỹ thuật, phòng tổ chức, phòng chuyên môn, Phòng phục vụ, ) Mỗi phòng ban
có một mã số phòng ban (MAPB) duy nhất, mã phòng ban xác định tên phòng ban (TENPB)
- Công ty phân công các nhân viên tham gia vào các công trình, mỗi công trình có thể được phân cho nhiều nhân viên và mỗi nhân viên cùng lúc cũng có thể tham gia vào nhiều công trình Với mỗi công trình một nhân viên có một số lượng ngày công (SLNGAYCONG) đã tham gia vào công trình đó
Trang 5II Vẽ mô hình thực thể liên kết
Sơ đồ mô hình thực thể liên kết
III Vẽ mô hình quan hệ
Mối quan hệ giữa các bảng
Trang 6IV Cho dữ liệu mỗi bảng >=3 dòng
Bảng công trình
Bảng công trình
Bảng nhân viên
Bảng phòng ban
Bảng công
Trang 7Discover more
from:
IS 301
Document continues below
Cơ sở dữ liệu
Trường Đại Học…
41 documents
Go to course
IS 301 BGCN Chith 30122020
Cơ sở dữ
liệu 100% (2)
70
CƠ SỞ DỮ LIỆU - tài liệu môn cơ sở dữ…
Cơ sở dữ
liệu 100% (1)
15
KTGK - sresw
Cơ sở dữ
liệu 100% (1)
2
Dapan bai1 - Đáp án bài kiểm tra
Cơ sở dữ liệu None
7
CSDL - strt3
Cơ sở dữ liệu None
3
Trang 8PHẦN II- BIỂU THỨC ĐẠI SỐ QUAN HỆ
1 Liệt kê những công trình có ngày hoàn thành <=#20/10/2023#
- δNGAYHT <= #20/10/2023# (CONGTRINH)
2 Liệt kê những nhân viên phái nam
- δ Phai = “nam”(NHANVIEN)
3 Lập danh sách những công trình khởi công trong năm
2024.mact, tenct, ngaykc
- πMACT, TENCT, NGAY KC (δYear (Ngay KC) = 2024 CONGTRINH))
4 Lấy những nhân viên có tham gia công trình có mã “X” manv,
mact, slngaycong
- πMANV, MACT, SLNGAYCONG (δMACT = ‘X’ (CONG))
5 Liệt kê những nhân viên thuộc phòng Kế hoạch Manv, mapb,
Tenpb
- πMANV, MAPB, TENPB (δTENPB = ‘Kế hoạch’ (NHANVIEN * PHONGBAN))
6 Lập danh sách nhân viên làm công trình Y trên 40 ngày Manv,
hoten, mact, tenct, slngaycong
- πMANV, HOTEN, MACT, TENCT, SLNgayCong (δMACT = ‘Y’ (CONGTRINH * CONG *
NHANVIEN)) π∪ MANV, HOTEN, MACT, TENCT, SLNgayCong (δSLNgayCong > 40 (CONGTRINH * CONG * NHANVIEN))
7 Lập danh sách những công trình đã hoàn thành Mact, tenct,
Ngayht
38 Huỳnh-Thị-Minh-Thi 282002 33754…
Cơ sở dữ liệu None
20
Trang 9- πMACT, TENCT, NGAYHT (δNGAYHT != Null (CONGTRINH))
8 Lập danh sách những nhân viên tham gia công trình X và công
trình Y
- πMANV, HOTEN, NGAYSINH, PHAI, DIACHI (δMACT = X (CONGTRINH * CONG * NHANVIEN))
∪πMANV, HOTEN, NGAYSINH, PHAI, DIACHI (δMACT = Y (Công Trình * Ngày Công * Nhân Viên))
PHẦN II- NGÔN NGỮ SQL
I.viết câu lệnh về bảng.
1 câu lệnh tạo bảng
- tạo bảng :
+ create table CONGTRINH(mact text primary, tenct text,diadiem
text,ngaycapgp datetime, ngaykhoicong datetime, ngayhoanthanh datetime) + create table NHANVIEN(manv text primary, hoten text, sdt number) + create table PHONGBAN(mapb text, tenpb text)
+ create table CONG(mact text primary, manv text primary,
soluongngaycong number)
2 viết câu lệnh chỉnh sửa cấu trúc bảng:
2.1 câu lệnh thêm cột vùng miền :
Alter table NHANVIEN add column vungmien text
2.2 câu lệnh xóa cột vùng miền :
Alter table NHANVIEN drop column vungmien
2.3 câu lệnh đổi kiểu dữ liệu số lượng ngày công :
Trang 10Alter table CONG alter column soluongngaycong double
3 viết câu lệnh về dữ liệu:
3.1 câu lệnh nhập dữ liệu vào bảng phòng ban :
Insert into PHONGBAN values (“pb06”,”phong ban p”)
3.2 câu lệnh cập lệnh cập nhật dữ liệu bảng công :
Update CONG set soluongngaycong = soluongngaycong+2 where mact =”Z” 3.3 câu lệnh xóa dữ liệu bảng công có số lượng ngày công <=30 :
Delete from CONG where soluongngaycong <=30
II câu lệnh thao tác dữ liệu.
1 truy vấn lấy dữ liệu từ 1 bảng (8 câu)
1.1câu không cần điều kiện: lấy ra tên của tất cả công trình
select tenct from CONGTRINH
1.2 câu có 1 điều kiện: lấy ra công trình ở Đà Nẵng
select mact, tenct, diadiem from CONGTRINH where diadiem=”Da Nang“ 1.3 câu có 2 điều kiện: lấy ra công trình đang thi công và được khởi công năm 2022:
select tenct, diadiem, year(ngaykhoicong) as nam, ngayhoanthanh from CONGTRINH
where year(ngaykhoicong)=2022 and ngayhoanthanh is null
1.4 câu có sử dụng biểu thức: lấy ra những nhân viên có số ượng ngày công
>30:
select manv, soluongngaycong from CONG
Trang 11where soluongngaycong >30
1.5 câu có dùng tùy chọn to N: lấy ra công trình đầu tiên trong bảng công trình
select top1 mact, tenct, diadiem from CONGTRINH
1.6 Câu có dùng tuyd chọn *: tính lương của nhân viên:
select manv, (soluongngaycong*500000) as luong from CONG
1.7 Câu có dùng tùy chọn order by: lấy ra nhân viên có số lượng ngày công nhiều nhất :
select top1 manv, tennv, soluongngaycong from CONG
order by soluongngaycong DESC
1.8 Câu có sử dụng kết hợp 2 hoặc 3 tùy chọn trên: lấy ra nhân viên có lương
cao nhất
select top1 manv, tennv, (soluongngaycong*500000) from CONG
order by soluongngaycong*500000 DESC
2 truy vấn từ nhiều bản
2.1 2 Câu truy vấn từ 2 bảng không cần điều kiện lọc:
- nhân viên thuộc phòng ban nào
Select manv, hoten, sdt, a.mapb, tenpb from a.NHANVIEN,b.PHONGBAN Where a.mapb=b.mapb
- số lượng ngày công của nhân viên :
Select a.manv, hoten, soluongngaycong from a.NVIEN,b.CONG
Where a.manv=b.manv
2.2 2 Câu truy vấn từ 2 bảng có thêm điều kiện lọc :
Trang 12- công trình đang thi công có số ngày công là
Select a.mact, tenct, soluongngaycong, ngayhoanthanh from
a.CONGTRINH, b.CONG Where a.manv=b.manv and ngayhoanthanh is null
- nhân viên có lương cao nhất:
Select top1 a.manv, hoten, (soluongngaycong*500000) as luong from a.NVIEN,b.CONG
Where a.manv=b.manv
Order by soluongngaycong*500000 DESC
2.3 2 câu truy vấn từ 3 bảng trở lên:
- nhân viên thuộc công trình nào
select a.manv, hoten, b.mact, tenct from a.NHANVIEN, b.CONG,
c.CONGTRINH
where a.manv=b.manv and b.mact=c.mact
- số lượng ngày công của phòng ban
select a.manv, hoten, c.mapb, tenpb, soluongngaycong from a.NHANVIEN, b.CONG, c.PHONGBAN
where a.mapb=c.mapb and a.manv=b.manv
3 truy vấn dùng hàm
3.1 câu có dùng làm sum có điều kiện: tổng số ngày công của nhân viên
“nv01”
Select sum (soluongngaycong) as cong_cua_nv01 from CONG
where manv = “nv01”
Trang 133.2câu dùng hàm count: đếm có bao nhiêu công trình
select count (mact)as tong_so_cong_trinh from CONGTRINH
3.3 câu dùng hàm avg có điều kiện: tính trung bình cộng ngày công của nhân
viên tại công trình “ct03”
select avg (soluongngaycong) as tb_ngay_cong_cua_nv from CONG where mact = “ct03”
3.4 Câu dùng hàm max: số lượng ngày công nhiều nhất là
select max (soluongngaycong) from CONG
3.5 Câu dùng hàm min: số lượng ngày công ít nhất là
select min (soluongngaycong) drom CONG
4 truy vấn có gọp nhóm
4.1 câu có dùng sum
Select manv, sum (soluongngaycong) from CONG
Group by manv
4.2câu có dùng hàm count có điều kiện nhóm
select mact, count (soluongngaycong) as so_luong
where mact = ”ct02”
group by mact
4.3 câu có dùng hàm max lấy thông tin từ 2 bảng
select a.manv, tennv, max(soluongngaycong) from a.NHANHVIEN, B.CONG
where a.manv=b.manv
Trang 14group by manv
4.4 câu có dùng hàm avg có điều kiện nhóm
select manv, avg (soluongngaycong) as tb_nhom _ngay_cong from CONG group by manv
5 truy vấn lồng nhau
5.1truy vấn con trong where
- lấy mức lương cao nhất
select manv, (soluongngaycong*500000) as luong from CONG
where (soluongngaycong*500000) = (select max(soluongngaycong*500000) from CONG)
- lấy số lượng ngày công cao hơn ngay công trung bình
select *from CONG where soluongngaycong > (select avg
(soluongngaycong) from CONG)
5.2truy vấn con trong having
- đếm số công trình mà những nhân viên tham gia
select manv, hoten, count(mact) as so_ct
from CONG, NHANVIEN
Where NHANVIEN.manv = CONG.manv
Group by manv having count (mact) = (select count (mact) from
CONGTRINH)
- lấy những lương cao hơn mức lương trung bình
select manv ,sum (soluongngaycong*500000) as luong
Trang 15from CONG
group by manv having sum (soluongngaycong*500000)>(select
avg(soluongngaycong*500000) from CONG )