1
•
Cho lược đồ quan hệ gồm các quan hệ sau:
•
GIAOVIEN (MaGV,TenGV,Ngsinh,Diachi,NgVL,SoDT)
•
DETAI (MaDT, TenDT, NgBD,NgKT,MaGV)
•
SINHVIEN (MaSV, TenSV, Ngsinh, Gioitinh, MaDT)
GIAOVIEN—(MaGV)—DETAI—(MaDT)—SINHVIEN
2
•
Câu 1.1a) Viết bằng Đại số quan hệ:
•
Cho biết thông tin về các đề tài bắt đầu hay kết
thúc trong năm 2005 (MaDT, TenDT, TenGV).
],,[23
)2005)(2005)((:12
1
TenGVTenDTMaDTQQ
NgKTYEARNgBDYEARQQ
GIAOVIENDETAIQ
MaGV
←
=∨=←
←
3
•
Câu 1.1b) Viết bằng ngôn ngữ SQL:
•
Cho biết thông tin về các đề tài bắt đầu hay kết
thúc trong năm 2005 (MaDT, TenDT, TenGV).
•
SELECT detai.MaDT, TenDT, TenGV
FROM detai, giaovien
WHERE detai.MaGV = giaovien.MaGV AND
(YEAR(NgBD)=2005 OR YEAR(NgKT)=2005)
•
Xem hàm: YEAR, MONTH
4
•
Câu 1.2a) Viết bằng ĐSQH:
•
Cho biết thông tin về các đề tài do giáo viên ở
‘TP.HCM’ (Diachi=’ TP.HCM) hướng dẫn như sau:
(MaDT, TenDT, TenGV, MaSV, TenSV).
],,,,[34
)'.'(:23
12
1
TenSVMaSVTenGVTenDTMaDTQQ
HCMTPDiachiQQ
SINHVIENQQ
DETAIGIAOVIENQ
MaDT
MaGV
←
=←
←
←
5
•
Câu 1.2b) Viết bằng NN SQL:
•
Cho biết thông tin về các đề tài do giáo viên ở
‘TP.HCM’ (Diachi=’ TP.HCM) hướng dẫn như sau:
(MaDT, TenDT, TenGV, MaSV, TenSV).
•
SELECT detai.MaDT,TenDT, TenGV, MaSV,TenSV
FROM giaovien, detai, sinhvien
WHERE giaovien.MaGV = detai.MaGV
AND detai.MaDT = sinhvien.MaDT
AND Diachi=’ TP.HCM
6
•
Câu 1.3a) Viết bằng ĐSQH:
•
In ra các giáo viên (MaGV, TenGV) không hướng
dẫn đề tài nào có ngày kết thúc trong tháng 10 năm
2005
],[56
45
234
][3
][12
)2005)(
10)((:1
TenGVMaGVQQ
GIAOVIENQQ
QQQ
MaGVGIAOVIENQ
MaGVQQ
NgKTYEAR
NgKTMONTHDETAIQ
MaGV
←
←
−←
←
←
=∧
=←
7
•
Câu 1.3b) Viết bằng NN SQL:
•
In ra các giáo viên (MaGV, TenGV) không hướng
dẫn đề tài nào có ngày kết thúc trong tháng 10 năm
2005
•
SELECT MaGV, TenGV
FROM giaovien
WHERE MaGV NOT IN
(SELECT MaGV
FROM detai
WHERE YEAR(NgKT)=2005 AND
MONTH(NgKT)=10)
8
•
Câu 1.4a) Viết bằng ĐSQH:
•
Tìm các sinh viên “nam” có làm chung đề tài với các
sinh viên “nu” (MaSV).
][)1)''(:(2
])[''(:1
MaSVQnamGioitinhSINHVIENQ
MaDTnuGioitinhSINHVIENQ
MaDT
=←
=←
9
•
Câu 1.4b) Viết bằng NN SQL:
•
Tìm các sinh viên “nam” có làm chung đề tài với các
sinh viên “nu” (MaSV).
•
SELECT MaSV
FROM sinhvien
WHERE Gioitinh=‘nam’ AND MaDT
IN
(SELECT MaDT
FROM sinhvien
WHERE Gioitinh=‘nu’)
10
•
Câu 1.5b) Viết bằng NN SQL:
•
Với mỗi đề tài, hãy in thông tin sau:
(MaDT,TenDT,SLSV)
•
SELECT detai.MaDT, TenDT,
COUNT(MaSV) AS SLSV
FROM detai, sinhvien
WHERE detai.MaDT = sinhvien.MaDT
GROUP BY detai.MaDT, TenDT
•
Xem hàm: COUNT, SUM, MIN, MAX, AVG
11
•
Câu 1.6b) Viết bằng NN SQL:
•
Với các giáo viên ở ‘TP.HCM’ và các đề tài mà họ
hướng dẫn có từ 2 sinh viên trở lên, hãy cho ra
thống kê sau: (MaGV,TenGV,TenDT,SLSV)
•
SELECT detai.MaGV, TenGV, TenDT,
COUNT(MaSV) AS SLSV
FROM giaovien, detai, sinhvien
WHERE giaovien.MaGV = detai.MaGV
AND detai.MaDT = sinhvien.MaDT
AND Diachi=’ TP.HCM
GROUP BY detai.MaGV, TenGV, TenDT
HAVING COUNT(MaSV) >= 2
12
•
Câu 2.1) Phát biểu chặc chẽ ràng buộc sau:
•
R1: Ngày kết thúc của mỗi đề tài phải sau ngày
bắt đầu của đề tài đó.
•
1. Phát biểu: dùng ngôn ngữ tân từ biến n bộ
∀ d ∈ DETAI (d.NgBD < d.NgKT)
•
2. Bối cảnh: DETAI
•
3. Tầm ảnh hưởng:
R1
Thêm Xóa Sửa
DETAI
+ -
+(NgBD,NgKT)
13
•
Câu 2.2) Phát biểu chặc chẽ ràng buộc sau:
•
R2: Khi GV hướng dẫn 1 DT thì ngày bắt đầu của
đề tài phải sau ngày vào làm của GV đó.
•
1. Phát biểu: dùng ngôn ngữ tân từ biến n bộ
∀ d ∈ DETAI
(∃g ∈ GIAOVIEN (g.MaGV=d.MaGV) ⇒ g.NgVL<d.NgBD)
•
2. Bối cảnh: DETAI
•
3. Tầm ảnh hưởng:
R2
Thêm Xóa Sửa
GIAOVIEN
- -
+(NgVL)
DETAI
+ -
+(NgBD,MaGV)
14
•
Câu 2.3) Phát biểu chặc chẽ ràng buộc sau:
•
R3: Thuộc tính “SoDT” trong GIAOVIEN phải bằng
“số lượng đề tài” mà GV đó hướng dẫn.
•
1. Phát biểu: dùng ngôn ngữ tân từ biến n bộ
∀ g ∈ GIAOVIEN d ∈ DETAI
(g.SoDT = COUNT
d∈DETAI ∧d.MaGV=g.MaGV
(d.MaDT)
•
2. Bối cảnh: DETAI
•
3. Tầm ảnh hưởng:
•
Xem hàm: COUNT, SUM
R2
Thêm Xóa Sửa
GIAOVIEN
- -
+(SoDT)
DETAI
+ +
+(MaGV)
15
•
Câu 3.1) Tối ưu câu trả lời sau:
],,])[,[
],,)[2005)((:(3
],,[
))2005)((:(2
],,[
))2005)((:
)((1
TenGVTenDTMaDTTenGVMaGVGIAOVIEN
MaGVTenDTMaDTNgBDYEARDETAIBt
TenGVTenDTMaDT
GIAOVIENNgBDYEARDETAIBt
TenGVTenDTMaDT
NgBDYEAR
GIAOVIENDETAIBt
MaGV
MaGV
MaGV
==
==
=
=
16
•
Câu 3.2) Tối ưu câu trả lời sau:
],,))[2005)((:
)(2
],,[
))2005)( (:
)((1
TenGVTenDTMaDTNgBDYEAR
GIAOVIENDETAIBt
TenGVTenDTMaDT
NgBDYEARMaGVGIAOVIENMaGVDETAI
GIAOVIENDETAIBt
MaGV
=
=
=∧=
×=
17
•
Câu 3.3) Tối ưu câu trả lời sau:
],,[
))2005)(()2005)((:
)((2
],,[
))2005)((:
))2005)((:
)(((1
TenGVTenDTMaDT
NgBDMONTHNgBDYEAR
GIAOVIENDETAIBt
TenGVTenDTMaDT
NgBDMONTH
NgBDYEAR
GIAOVIENDETAIBt
MaGV
MaGV
=∧=
=
=
=
=