Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

BÀI TẬP C3-C4

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))

Trong biểu thức này:


 (ĐộcGiả)ρMãĐG→MãĐG1(ĐộcGiả): Đổi tên trường MãĐG thành
MãĐG1 trong bảng ĐộcGiả để tránh xung đột tên trường khi kết hợp.
 ρMãĐG→MãĐG2(Mượn): Đổi tên trường MãĐG thành MãĐG2 trong
bảng Mượn để tránh xung đột tên trường khi kết hợp.
 ⋈: Là toán tử kết hợp (join), kết hợp các bảng theo điều kiện có trùng
khớp giữa các trường MãĐG.
 πMãĐG,TênĐG,ĐịaChỉ,SốĐT,COUNT(MãCuốn): Là toán tử chiếu, chỉ
lấy các trường MãĐG, TênĐG, ĐịaChỉ, SốĐT và số lượng cuốn sách
mà mỗi độc giả đã mượn (được tính bởi hàm đếm COUNT) từ kết quả
của phép toán kết hợp.
 γMãĐG,COUNT(MãCuốn): Là toán tử nhóm (group by), nhóm các bản
ghi theo trường MãĐG, và đếm số lượng cuốn sách mỗi độc giả đã
mượn.

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 :

NV( MSNV , TEN , MSCOQUAN , CONGVIEC , LUONG)

COQUAN( MSCOQUAN , TENCOQUAN , DIACHI)

Biểu diễn bằng ngôn ngữ SQL và đại số quan hệ các yêu cầu sau :

a. Tìm tên những nhân viên ở cơ quan có mã số là 50

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:

 THO(MaTho, TenTho, Nhom, NhomTruong)

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.

 HOPDONG(SoHD, NgayHD, MaKH, SoXe, TriGiaHD,

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.

 KHACHHANG(MaKH, TenKH, DiaChi, DienThoai)

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ợ.

 CHITIET_HD(SoHD, MaCV, TriGiaCV, MaTho, KhoanTHo)

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.

 PHIEUTHU(SoPT, NgaylapPT, SoHD, MaKH, HoTen, SoTienThu)

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:

 Xác định các khóa trong các lược đồ quan hệ trên.

 Phát biểu các RBTV có trong lược đồ CSDL

 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.

* Các khóa chính trong lược đồ quan hệ trên


- Quan hệ ‘THO’ có khóa chính là ‘MaTho’
- Quan hệ ‘CONGVIEC’ có khóa chính là ‘MaCV’
- Quan hệ ‘HOPDONG’ có khóa chính là ‘SoHD’
- Quan hệ ‘KHACHHANG’ có khóa chính là ‘MaKH’
- Quan hệ ‘CHITIET_HD’ có khóa chính là ‘SoHD’,’ MaCV’
- Quan hệ ‘PHIEUTHU’ có khóa chính là ‘SoPT’
* Các khóa ngoại trong lược đồ quan hệ trên
- Quan hệ ‘HOPDONG’ có khóa ngoại là ‘MaKH’
- Quan hệ ‘CHITIET_HD’ có khóa ngoại là ‘SoHD’, ‘MaCV’, ‘MaTho’
- Quan hệ ‘PHIEUTHU’ có khóa ngoại là ‘SoHD’, ‘MaKH’
* Các RBTV có trong lược đồ quan hệ:
1. Ràng buộc khóa chính (Primary Key Constraint):
 Trong quan hệ THO: MaTho là khóa chính.
 Trong quan hệ CONGVIEC: MaCV là khóa chính.
 Trong quan hệ HOPDONG: SoHD là khóa chính.
 Trong quan hệ KHACHHANG: MaKH là khóa chính.
 Trong quan hệ CHITIET_HD: (SoHD, MaCV) là khóa chính.
 Trong quan hệ PHIEUTHU: SoPT là khóa chính.
2. Ràng buộc khóa ngoại (Foreign Key Constraint):
 Trong quan hệ HOPDONG: MaKH là khóa ngoại tham chiếu đến
MaKH trong quan hệ KHACHHANG.
 Trong quan hệ CHITIET_HD:
 SoHD là khóa ngoại tham chiếu đến SoHD trong quan hệ
HOPDONG.
 MaCV là khóa ngoại tham chiếu đến MaCV trong quan hệ
CONGVIEC.
 MaTho là khóa ngoại tham chiếu đến MaTho trong quan hệ
THO.
 Trong quan hệ PHIEUTHU:
 SoHD là khóa ngoại tham chiếu đến SoHD trong quan hệ
HOPDONG.
 MaKH là khóa ngoại tham chiếu đến MaKH trong quan hệ
KHACHHANG
3. Ràng buộc miền giá trị
 Trong quan hệ THO:
 Ràng buộc miền giá trị có thể áp dụng cho trường TenTho, yêu
cầu chỉ chấp nhận các giá trị là chuỗi ký tự không vượt quá một độ
dài cụ thể.
 Trong quan hệ CONGVIEC:
 Ràng buộc miền giá trị có thể áp dụng cho trường NoiDungCV,
yêu cầu chỉ chấp nhận các giá trị là chuỗi ký tự không vượt quá
một độ dài cụ thể.
 Trong quan hệ KHACHHANG:
 Ràng buộc miền giá trị có thể áp dụng cho trường DienThoai, yêu
cầu chỉ chấp nhận các giá trị là chuỗi số có độ dài cố định (ví dụ:
10 chữ số).
 Trong quan hệ PHIEUTHU:
 Ràng buộc miền giá trị có thể áp dụng cho trường SoTienThu, yêu
cầu chỉ chấp nhận các giá trị là số không âm.
4.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.
SELECT MaTho, TenTho
FROM THO
WHERE MaTho NOT IN (SELECT DISTINCT MaTho FROM
CHITIET_HD);
4.5 Cho biết người thợ nào có tổng trị giá công việc được giao cao nhất.
SELECT MaTho, TenTho
FROM THO
ORDER BY (
SELECT SUM(TriGiaCV)
FROM (CHITIET_HD)
WHERE CHITIET_HD.MaTho = THO.MaTho
) DESC
LIMIT 1;

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 :

1. Xác định khóa của các lược đồ quan hệ trên.


2. Phát biểu các RBTV.
3. Dùng đại số quan hệ và SQL để viết các câu hỏi sau:
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

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

d. Cho biết lịch thi môn văn (TENMH = ‘VĂN HỌC’)

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.1 Các khóa chính trong CSDL trên:


- Quan hệ GV có khóa chính là ‘MAGV’
- Quan hệ MHOC có khóa chính là ‘MAMH’
- Quan hệ BUOITHI có khóa chính là ‘(HKY, NGAY, GIO, PHG, MAMH)’
- Quan hệ PC_COI_THI có khóa chính là ‘(MAGV, HKY, NGAY, GIO, PHG)’
Các khóa ngoại trong CSDL trên:
- Quan hệ GV có khóa ngoại là ‘MAMH’
- Quan hệ BUOITHI có khóa ngoại là ‘MAMH’
- Quan hệ PC_COI_THI có khóa ngoại là ‘MAGV’.
5.2 Các RBTV trong CSDL trên:
1. Ràng buộc khóa chính (Primary Key Constraint):
 Trong quan hệ GV (Giáo viên):
 MAGV (Mã giáo viên) là khóa chính.
 Trong quan hệ MHOC (Môn học):
 MAMH (Mã môn học) là khóa chính.
 Trong quan hệ BUOITHI (Buổi thi):
 (HKY, NGAY, GIO, PHG, MAMH) (Học kỳ, Ngày, Giờ,
Phòng, Mã môn học) là khóa chính.
 Trong quan hệ PC_COI_THI (Phân công coi thi):
 (MAGV, HK, NGAY, GIO, PHG) (Mã giáo viên, Học kỳ,
Ngày, Giờ, Phòng) là khóa chính.
2. Ràng buộc khóa ngoại (Foreign Key Constraint):
 Trong quan hệ GV:
 MAMH (Mã môn học) là khóa ngoại tham chiếu đến
MAMH trong quan hệ MHOC.
 Trong quan hệ BUOITHI:
 MAMH (Mã môn học) là khóa ngoại tham chiếu đến
MAMH trong quan hệ MHOC.
 Trong quan hệ PC_COI_THI:
 MAGV (Mã giáo viên) là khóa ngoại tham chiếu đến
MAGV trong quan hệ GV.
3. Ràng buộc miền giá trị
Trong quan hệ MHOC (Môn học):
 Ràng buộc miền giá trị cho trường SOTIET: Giá trị của trường này
phải là số nguyên không âm, vì nó thể hiện số tiết học của môn học.
Trong quan hệ BUOITHI (Buổi thi):
 Ràng buộc miền giá trị cho trường TGTHI: Dựa vào số tiết học của
môn học, nếu số tiết học là 30 thì thời gian thi là 120 phút, và nếu số
tiết học là 45 tiết trở lên thì thời gian thi là 150 phút.

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

WHERE MAGV IN (SELECT MAGV FROM GV WHERE MAMH IN


(SELECT MAMH FROM MHOC WHERE TENMH =’VĂN HỌC’));

You might also like