Professional Documents
Culture Documents
BÀI TẬP C3 4
BÀI TẬP C3 4
Câu 1:
1. πTENDA(DUAN⋈MADA(σMANV=1(PHANCONG)))
Trong biểu thức này:
σMANV=1(PHANCONG) là toán tử chọn các dự án mà nhân viên có mã
'1' tham gia từ bảng PHANCONG.
⋈MADA là toán tử kết hợp dựa trên khóa ngoại MADA.
πTENDA là toán tử chiếu chỉ các cột TENDA (tên dự án) từ bảng
DUAN.
2. πMANV,TongThoiGian(γMANV,TongThoiGian
(PHANCONG⋈(DUAN⋈ρTongThoiGian
(PHANCONG,ThoiGianThamGia))))
Trong biểu thức này:
PHANCONG⋈(DUAN⋈ρTongThoiGian
(PHANCONG,ThoiGianThamGia)) là một phép nối các bảng
PHANCONG và DUAN dựa trên khóa ngoại MADA, sau đó tính tổng
thời gian tham gia mỗi dự án bằng cách thêm cột ThoiGianThamGia vào
bảng PHANCONG và tính tổng theo nhóm của MANV.
γMANV,TongThoiGian là toán tử tổng hợp, tính tổng thời gian tham gia
của mỗi nhân viên.
πMANV,TongThoiGian là toán tử chiếu chỉ cột MANV (mã nhân viên)
và cột tổng thời gian từ kết quả của phép toán tử tổng hợp.
3. πHoNV,Tenlot,TenNV(NHANVIEN−πHoNV,Tenlot,TenNV
(σMANV∈PHANCONG(NHANVIEN×DUAN)))
Trong biểu thức này:
σMANV∈PHANCONG(NHANVIEN×DUAN) là một phép toán lấy giao
hai tập hợp, nó tạo ra tập hợp các cặp (MANV, MADA) thể hiện việc
tham gia dự án của mỗi nhân viên từ việc kết hợp tất cả các cặp nhân viên
và dự án.
Phép toán NHANVIEN−πHoNV,Tenlot,TenNV(σMANV∈PHANCONG
(NHANVIEN×DUAN)) là phép lấy hiệu hai tập hợp, nó trả về tập hợp
các nhân viên mà không có trong tập hợp kết quả của phép toán lấy giao.
3.a πNgSinh,DChi(σHoNV="Nguyễn"∧Tenlot="Mạnh"∧TenNV="Hùng"
(NHANVIEN))
Trong biểu thức này:
σHoNV="Nguyễn"∧Tenlot="Mạnh"∧TenNV="Hùng"(NHANVIEN) là
toán tử chọn các bản ghi của nhân viên có họ "Nguyễn", tên lót "Mạnh"
và tên "Hùng" từ bảng NHANVIEN.
πNgSinh,DChi là toán tử chiếu chỉ các cột NgSinh (ngày sinh) và DChi
(địa chỉ) từ kết quả của phép lựa chọn trên.
3.b πHoNV,Tenlot,TenNV,DChi(σTenPB="Nghiên cứu"
(NHANVIEN⋈PHONGBAN))
Trong biểu thức này:
σTenPB="Nghiên cứu"(NHANVIEN⋈PHONGBAN) là toán tử chọn các
bản ghi từ bảng NHANVIEN kết hợp với bảng PHONGBAN dựa trên
khóa ngoại PHONG.
πHoNV,Tenlot,TenNV,DChi là toán tử chiếu chỉ các cột HONV (họ),
Tenlot (tên lót), TenNV (tên), và DChi (địa chỉ) từ kết quả của phép nối.
3.c πMaDA,MaPB,HoNV,Tenlot,TenNV,NgSinh((σDiadiem="Gò Vấp"
(DUAN⋈PHONG))⋈MaNQL=MaNVNHANVIEN)
Trong biểu thức này:
σDiadiem="Gò Vấp"(DUAN⋈PHONG) là toán tử chọn các bản ghi từ
bảng DUAN kết hợp với bảng PHONG dựa trên điều kiện địa điểm là
"Gò Vấp".
NHANVIEN là bảng chứa thông tin về nhân viên.
⋈MaNQL=MaNV là phép nối các bảng kết quả với bảng NHANVIEN
dựa trên khóa ngoại MaNQL (mã nhân viên quản lý) trong bảng PHONG
và MaNV (mã nhân viên) trong bảng NHANVIEN.
πMaDA,MaPB,HoNV,Tenlot,TenNV,NgSinh là toán tử chiếu chỉ các cột
cần thiết từ kết quả của phép nối.
3.d πTenNV,TenlotNVQL(NHANVIEN⋈MaNQL=MaNV
ρNVQL←TenNV,Tenlot(NHANVIEN))
Trong biểu thức này:
NHANVIEN là bảng chứa thông tin về nhân viên.
⋈MaNQL=MaNV là phép nối bảng NHANVIEN với chính bản thân nó
dựa trên khóa ngoại MaNQL (mã nhân viên quản lý) và MaNV (mã nhân
viên).
ρNVQL←TenNV,Tenlot là toán tử đổi tên cột cho phép lấy thông tin về
họ tên của người quản lý (NVQL).
3.e πMaNV,HoNV,Tenlot
((σTenPB="Nghiên cứu"∧Luong≥30000∧Luong≤50000
(NHANVIEN⋈PHONGBAN)))
Trong biểu thức này:
σTenPB="Nghiên cứu"∧Luong≥30000∧Luong≤50000
(NHANVIEN⋈PHONGBAN) là toán tử chọn các bản ghi từ bảng
NHANVIEN kết hợp với bảng PHONGBAN dựa trên điều kiện phòng là
"Nghiên cứu" và mức lương nằm trong khoảng từ 30000 đến 50000.
⋈ là phép nối bảng NHANVIEN và PHONGBAN dựa trên khóa ngoại
MaPB.
πMaNV,HoNV,Tenlot là toán tử chiếu chỉ các cột cần thiết từ kết quả của
phép nối.
3.f πMaNV,HoNV,Tenlot,MaDA,TenDA((NHANVIEN⋈MaNV=MaNV
PHANCONG)⋈MaDA=MaDADUAN)
Trong biểu thức này:
NHANVIEN là bảng chứa thông tin về nhân viên.
PHANCONG là bảng chứa thông tin về phân công dự án cho nhân viên.
DUAN là bảng chứa thông tin về các dự án.
⋈MaNV=MaNV là phép nối bảng NHANVIEN với bảng PHANCONG
dựa trên mã nhân viên.
⋈MaDA=MaDA là phép nối kết quả trên với bảng DUAN dựa trên mã
dự án.
πMaNV,HoNV,Tenlot,MaDA,TenDA là toán tử chiếu chỉ các cột cần
thiết từ kết quả của phép nối.
3.g πMaNV,HoNV,Tenlot(NHANVIEN−(πMaNQL(NHANVIEN)))
Trong biểu thức này:
NHANVIEN là bảng chứa thông tin về nhân viên.
πMaNQL(NHANVIEN) là toán tử chiếu chỉ cột MaNQL từ bảng
NHANVIEN, lấy ra danh sách các mã nhân viên quản lý.
NHANVIEN−(πMaNQL(NHANVIEN)) là phép lấy sự khác biệt giữa tất
cả các bản ghi trong bảng NHANVIEN và danh sách các mã nhân viên
quản lý, đưa ra chỉ các bản ghi mà không có người quản lý.
πMaNV,HoNV,Tenlot là toán tử chiếu chỉ các cột cần thiết từ kết quả trả
về.
3.h πHoNV,Tenlot((σTrPhong=MaNV∧Quanhe=null
(NHANVIEN⋈PHONGBAN))⋈THANNHAN)
Trong biểu thức này:
σTrPhong=MaNV∧Quanhe≠null(NHANVIEN⋈PHONGBAN) là toán tử
chọn các bản ghi từ bảng NHANVIEN kết hợp với bảng PHONGBAN
dựa trên điều kiện nhân viên là trưởng phòng và có thân nhân.
⋈ là phép nối bảng NHANVIEN và PHONGBAN dựa trên khóa ngoại
TrPhong.
THANNHAN là bảng chứa thông tin về thân nhân.
πHoNV,Tenlot là toán tử chiếu chỉ các cột cần thiết từ kết quả của phép
nối.
3.i πTongLuong,LuongCaoNhat,LuongThapNhat,LuongTrungBinh
(ρTongLuong←SUM(Luong),LuongCaoNhat←MAX(Luong),LuongThapNhat
←MIN(Luong),LuongTrungBinh←AVG(Luong)(NHANVIEN))
Trong biểu thức này:
πTongLuong,LuongCaoNhat,LuongThapNhat,LuongTrungBinh là toán
tử chiếu chỉ các cột cần thiết từ kết quả của phép toán.
ρTongLuong←SUM(Luong),LuongCaoNhat←MAX(Luong),LuongThap
Nhat←MIN(Luong),LuongTrungBinh←AVG(Luong) là toán tử đổi tên
các cột trong kết quả của phép toán.
3.j πTongSoNhanVien,LuongTrungBinh(σPhong=’Nghiên cứu’(NHANVIEN))
Trong biểu thức này:
πTongSoNhanVien,LuongTrungBinh là phép toán chiếu chỉ các cột cần
thiết từ kết quả của phép toán.
σPhong=’Nghiên cứu’ là phép toán chọn chỉ các bản ghi trong bảng
NHANVIEN mà cột Phong có giá trị 'Nghiên cứu'.
3.k πMaPB,SoLuongNhanVien,LuongTrungBinh
(γCOUNT(MaNV)→SoLuongNhanVien,AVG(Luong)→LuongTrungBinh
(NHANVIEN))
Trong biểu thức này:
πMaPB,SoLuongNhanVien,LuongTrungBinh là phép toán chiếu chỉ các
cột cần thiết từ kết quả của phép toán.
γCOUNT(MaNV)→SoLuongNhanVien,AVG(Luong)→LuongTrungBin
h là phép toán tổng hợp, tính số lượng nhân viên và mức lương trung bình
cho mỗi phòng.
3.l πMaDA,TENDA,TongSoNhanVien(γCOUNT(MaNV)→TongSoNhanVien
(σMaDA=MaDA(DUAN⋈PHANCONG)))
Trong biểu thức này:
σMaDA=MaDA là phép chọn chỉ các bản ghi trong bảng DUAN và
PHANCONG có cùng mã dự án.
⋈ là phép nối giữa bảng DUAN và PHANCONG.
γCOUNT(MaNV)→TongSoNhanVien là phép tổng hợp, tính tổng số
nhân viên tham gia cho mỗi dự án.
πMaDA,TENDA,TongSoNhanVien là phép chiếu chỉ các cột cần thiết từ
kết quả của phép toán.
3.m πMaDA,TENDA,SoLuongNhanVien
(γCOUNT(MaNV)→SoLuongNhanVien(σSoLuongNhanVien>2
(DUAN⋈PHANCONG)))
Trong biểu thức này:
σSoLuongNhanVien>2 là phép chọn chỉ các bản ghi trong bảng DUAN
và PHANCONG có số lượng nhân viên tham gia lớn hơn 2.
⋈ là phép nối giữa bảng DUAN và PHANCONG.
γCOUNT(MaNV)→SoLuongNhanVien là phép tổng hợp, tính số lượng
nhân viên tham gia cho mỗi dự án.
πMaDA,TENDA,SoLuongNhanVien là phép chiếu chỉ các cột cần thiết
từ kết quả của phép toán.
3.n πMaDA,TENDA,SoLuongNhanVien
(γCOUNT(MaNV)→SoLuongNhanVien(σPhong=5(DUAN⋈NHANVIEN)))
Trong biểu thức này:
σPhong=5 là phép chọn chỉ các bản ghi trong bảng DUAN và
NHANVIEN có số phòng là 5.
⋈ là phép nối giữa bảng DUAN và NHANVIEN.
γCOUNT(MaNV)→SoLuongNhanVien là phép tổng hợp, tính số lượng
nhân viên tham gia cho mỗi dự án.
πMaDA,TENDA,SoLuongNhanVien là phép chiếu chỉ các cột cần thiết
từ kết quả của phép toán.
3.o πPhong,SoLuongNhanVien(γCOUNT(MaNV)→SoLuongNhanVien
(σSoLuongNhanVien>2∧Luong>25000(NHANVIEN)))
Trong biểu thức này:
σSoLuongNhanVien>2∧Luong>25000 là phép chọn chỉ các bản ghi trong
bảng NHANVIEN có số lượng nhân viên lớn hơn 2 và lương lớn hơn
25000.
γCOUNT(MaNV)→SoLuongNhanVien là phép tổng hợp, tính số lượng
nhân viên cho mỗi phòng.
πPhong,SoLuongNhanVien là phép chiếu chỉ các cột cần thiết từ kết quả
của phép toán.
3.p πMaPB,TenPB,SoLuongNhanVien(γCOUNT(MaNV)→SoLuongNhanVien
(ρMaPB,TenPB,LuongTB(σLuongTB>30000(γAVG(Luong)→LuongTB
(NHANVIEN)))⋈PHONGBAN))
Trong biểu thức này:
γAVG(Luong)→LuongTB là phép tổng hợp, tính mức lương trung bình (\
text{LuongTB}) của mỗi phòng.
σLuongTB>30000 là phép chọn chỉ các bản ghi có mức lương trung bình
lớn hơn 30000.
ρMaPB,TenPB,LuongTB là phép đổi tên cột kết quả thành MaPB, TenPB
và LuongTB.
⋈ là phép nối giữa kết quả của phép toán trên và bảng PHONGBAN.
γCOUNT(MaNV)→SoLuongNhanVien là phép tổng hợp, tính số lượng
nhân viên (\text{SoLuongNhanVien}) cho mỗi phòng.
πMaPB,TenPB,SoLuongNhanVien là phép chiếu chỉ các cột cần thiết từ
kết quả của phép toán.
3.q πMaPB,TenPB,SoLuongNam(γCOUNT(MaNV)→SoLuongNam
(σLuongTB>30000∧Phai=′NAM′(γAVG(Luong)→LuongTB
(NHANVIEN)))⋈PHONGBAN)
Trong biểu thức này:
γAVG(Luong)→LuongTB là phép tổng hợp, tính mức lương trung bình (\
text{LuongTB}) của mỗi phòng.
σLuongTB>30000∧Phai=′NAM′ là phép chọn chỉ các bản ghi có mức
lương trung bình lớn hơn 30000 và giới tính là 'NAM'.
γCOUNT(MaNV)→SoLuongNam là phép tổng hợp, tính số lượng nhân
viên nam (\text{SoLuongNam}) cho mỗi phòng.
πMaPB,TenPB,SoLuongNam là phép chiếu chỉ các cột cần thiết từ kết
quả của phép toán.
Câu 2: Cho lược đồ CSDL của một thư viện như sau:
Hãy viết biểu thức đại số quan hệ thực hiện các yêu cầu sau:
a. Cho biết Địa chỉ và số điện thoại của Nhà xuất bản “Addison Wesley”
b. Cho biết mã sách và Tựa sách của những cuốn sách được xuất bản bởi nhà xuất
bản “Addison Wesley”
c. Cho biết mã sách và Tựa sách của những cuốn sách có tác giả là “Hemingway”
d. Với mỗi đầu sách, cho biết tựa và số lượng cuốn sách mà thư viện đang sở hữu
e. Với mỗi độc giả, hãy cho biết Tên, địa chỉ và số lượng cuốn sách mà người đó
đã mượn
f. Cho biết mã cuốn, tựa sách và vị trí của những cuốn sách được xuất bản bởi
nhà xuất bản “Addison Wesley”
g. Với mỗi đầu sách, hãy cho biết Tên nhà xuất bản và số lượng tác giả
h. Hãy cho biết Tên, địa chỉ, số điện thoại của những độc giả đã mượn từ 5 cuốn
sách trở lên
i. Cho biết mã NXB, tên NXB và số lượng đầu sách của NXB đó trong CSDL
j. Cho biết mã NXB, tên NXB và địa chỉ của những NXB có từ 100 đầu sách trở
lên
k. Cho biết mã NXB, tên NXB, và số lượng tác giả đã hợp tác với NXB đó
l. Tựa và số lượng tác giả của những cuốn sách có tác giả là “Hemingway” mà
độc giả “Nguyễn Văn A” đã từng mượn
a. πĐịaChỉ,SốĐT(σTênNXB=′AddisonWesley′(NXB))
Trong biểu thức này:
σTênNXB=′AddisonWesley′(NXB): Là toán tử lựa chọn, chọn ra những
bản ghi từ bảng NXB mà TênNXB bằng "Addison Wesley".
πĐịaChỉ,SốĐT: Là toán tử chiếu, chỉ lấy các trường ĐịaChỉ và SốĐT từ
kết quả của toán tử lựa chọn.
e. πMãĐG,TênĐG,ĐịaChỉ,SốĐT,COUNT(MãCuốn)(ρMãĐG→MãĐG1
(ĐộcGiả)⋈(γMãĐG,COUNT(MãCuốn)(ρMãĐG→MãĐG2
(Mượn)⋈CuốnSách))
i. γMãNXB,TenNXB,COUNT(Masach)(NXB⋈ĐầuSách)
Trong biểu thức này:
⋈: Là toán tử kết hợp (join), kết hợp các bảng NXB và ĐầuSách theo
trường MaNXB.
γMãNXB,TênNXB,COUNT(MãSách): Là toán tử nhóm (group by), nhóm
các bản ghi theo trường MãNXB và TênNXB, và đếm số lượng đầu sách
của mỗi NXB.
Câu 3: a. Cho CSDL gồm các quan hệ sau :
Biểu diễn bằng ngôn ngữ SQL và đại số quan hệ các yêu cầu sau :
SELECT TEN
FROM NV
WHERE MSCOQUAN =’50’;
Bài tập 4:
Cho một lược đồ CSDL dùng để quản lý hoạt động sửa chữa và bảo trì xe của một ga
ra như sau:
Tân từ:
Mỗi người thợ đều có một mã so (MaTho) để nhận diện, một tên (TenTho) và chỉ thuộc một
nhóm. Nhóm trưởng của mỗi nhóm là một trong những người thợ của nhóm đó.
MGT(MaTho) = MGT(NhomTruong)
CONGVIEC(MaCV, NoiDungCV)
Tân từ:
Dịch vụ sửa xe được chia thành nhiều công việc để dễ dàng tính toán chi phí với khách hàng.
Mỗi công việc đều có một mã (MaCV) và thuộc tính “NoiDungCV” mô tả nội dung của công việc.
NgayGiaoDK, NgayNgThu)
Tân từ:
Mỗi hợp đồng sửa chữa đều có một mã số phân biệt. NgayHD là ngày ký hợp đồng
sửa xe với khách hàng là chủ xe (MaKH). SoXe là số đăng bộ của xe đem đến sửa. Một
khách hàng có thể ký nhiều hợp đồng sửa chữa nhiều xe khác nhau hoặc sửa chữa nhiều lần
cho cùng một xe nhung trong cung một ngày, những công việc sửa chữa cho một xe chỉ ký
hợp đồng một lần. TriGiaHD là tổng trị giá của hóa đơn. NgayGiaoDK là ngày dự kiến phải
giao xe cho khách. NgayNgThu là ngày nghiệm thu thật sự sau khi đã sửa chữa xong để
thanh lý hợp đồng.
Tân từ:
Mỗi khách hàng có một MAKH để phân biệt, một tên (TenKH), một địa chỉ (DiaChi) và một
số điện thoại để theo dõi công nợ.
Tân từ:
Mỗi hợp đồng sửa xe có thể gồm nhiều công việc, MaCV là mã số của từng công việc,
TriGiaCV là chi phí của công việc đã tính toán với khách. Mỗi công việc của hợp đồng được giao cho
một người thợ (MaTho) phụ trách. Một người thợ có thể được giao một hoặc nhiều công việc của một
hay nhiều hợp đồng khác nhau. KhoanTho là số tiền giao khoán cho người thợ ve công việc sửa chữa
tương ứng.
Tân từ:
Khách hàng (MaKH) có thể thanh toán tiền của một hợp đồng (SoHD) làm nhiều lần trước
hoặc sau khi nghiệm thu (trong cùng một ngày hoặc khác ngày). Mỗi lần thanh toán đều có số phiếu
thu (SoPT) để phân biệt, NgayLapPT là ngày lập phiếu thu. SoTienThu là số tiền thanh toán của lần
thu đó. HoTen là ho tên của người mang tiền đến thanh toán (có thể khác với người đứng ra ký hợp
đồng).
Yêu cầu:
Thực hiện các yêu cầu sau bằng ngôn ngữ SQL:
1. Cho biết danh sách các người thợ hiện không tham gia vào một hợp đồng sửa chữa
nào.
2. Cho biết danh sách những hợp đồng đã thanh lý nhưng chưa được thanh toán tiền đầy
đủ.
3. Cho biết danh sách những hợp đồng cần phải hoàn tất trước ngày 31/12/2002
4. Cho biết người thợ nào thực hiện công việc nhiều nhất.
5. Cho biết người thợ nào có tổng trị giá công việc được giao cao nhất.
5. Cho một phần CSDL của một trường phổ thông như sau :
GV(MAGV, TENGV, MAMH)
Tân từ : Một giáo viên (MAGV) chủ nhiệm một bộ môn duy nhất. Đối với
những giáo viên không phải là chủ nhiệm bộ môn thì giá trị của thuộc tính
MAMH là null.
MHỌC(MAMH, TENMH, SOTIET)
Tân từ : Mỗi môn học có một MAMH duy nhất, một TENMH và một số tiết học
của môn học đó.
BUỔITHI(HKY, NGAY, GIO, PHG, MAMH, TGTHI)
Tân từ : Mỗi buổi thi được xác định bởi một HỌC KỲ (HK), một ngày, một giờ và một
phòng (PHG). Buổi thi liên quan đến một môn duy nhất và có một thời gian thi (TGTHI) duy
nhất.
PC_COI_THI(MAGV, HK, NGAY, GIO, PHG)
Tân từ : Một lần phân công coi thi được xác định bởi 1 giáo viên, 1 học kỳ, 1
ngày, 1 giờ và 1 phòng.
Ghi chú :
Một giáo viên có thể được phân công gác thi nhiều buổi trong một học kỳ,
với điều kiện các buổi thi đó không liên quan đến môn học do giáo viên đó
chủ nhiệm.
Nếu số tiết học là 30 thì thời gian thi là 120 phút
Nếu số tiết học là 45 tiết trở lên thì thời gian thi là 150 phút
Câu hỏi :
b. Danh sách giáo viên được phân công gác thi trong học kỳ 1
c. Danh sách giáo viên không được phân công gác thi trong học kỳ 1
e. Cho biết các buổi gác thi của các giáo viên chủ nhiệm môn văn (TENMH
= ‘VĂN HỌC’).
5.a Danh sách các giáo viên dạy các môn học có số tiết từ 45 trở lên
SELECT DISTINCT MAGV, TENGV
FROM GV
WHERE MAMH IN (SELECT MAMH FROM MHOC WHERE SOTIET
>=45);
5.e Cho biết các buổi gác thi của các giáo viên chủ nhiệm môn văn (TENMH =
‘VĂN HỌC’).
SELECT *
FROM PC_COI_THI