You are on page 1of 50

ĐỀ THI CUỐI KỲ HỌC KỲ I, NĂM HỌC: 2020-2021

Môn: CƠ SỞ DỮ LIỆU

ĐỀ SỐ 1
(Sinh viên không được phép sử dụng tài liệu - Đề thi gồm có 2 trang)

Câu 1: (8 điểm)

Cho lược đồ cơ sở dữ liệu “Quản lý hồ sơ bệnh án điện tử công dân” có cấu trúc như sau:
BENHNHAN (MABN, HOTEN, NGSINH, CMND, DIACHI, DOITUONG, SLPT)
Tân từ: Quan hệ BENHNHAN lưu trữ thông tin của một bệnh nhân, bao gồm: họ tên (HOTEN), ngày
sinh (NGSINH), số chứng minh nhân dân/căn cước công dân/hộ chiếu (CMND), địa chỉ (DIACHI), đối
tượng (DOITUONG), số lần phẫu thuật (SLPT). Mỗi bệnh nhân được cấp một mã số (MABN).
KHAMBENH (MAKB, MABN, BENH, BENHKT, BATDAU, KETTHUC, KETLUAN, TAIKHAM)
Tân từ: Quan hệ KHAMBENH chứa các thông tin của việc khám bệnh, bao gồm: mã khám bệnh
(MAKB), mã bệnh nhân được khám bệnh (MABN), bệnh chính (BENH), bệnh kèm theo (BENHKT), thời
gian bắt đầu việc khám bệnh (BATDAU), thời gian kết thúc việc khám bệnh (KETTHUC), kết luận của
bác sĩ (KETLUAN) và ngày hẹn tái khám nếu có (TAIKHAM).
PHAUTHUAT (MAPT, MAKB, BOPHANPT, LOAIPT, KETQUA)
Tân từ: Quan hệ PHAUTHUAT chứa các thông tin sự kiện phẫu thuật, bao gồm: mã phẫu thuật
(MAPT), mã khám bệnh mà bác sĩ kết luận chỉ định phẫu thuật (MAKB), bộ phận cơ thể cần phẫu
thuật (BOPHANPT), loại phẫu thuật (LOAIPT) và kết quả ca phẫu thuật (KETQUA).
BACSI (MABS, HOTEN, NAMSINH, CHUYENMON, KHOA, BENHVIEN)
Tân từ: Quan hệ BACSI lưu trữ thông tin các bác sĩ, bao gồm: mã bác sĩ (MABS), họ tên (HOTEN), năm
sinh (NAMSINH), chuyên môn (CHUYENMON), khoa (KHOA) và bệnh viện đang công tác (BENHVIEN).
PHUTRACH (MABS, MAKB, BATDAUPT, KETTHUCPT)
Tân từ: Quan hệ PHUTRACH lưu trữ thông tin phụ trách khám bệnh của mỗi bác sĩ, bao gồm: mã bác
sĩ phụ trách (MABS), mã khám bệnh (MAKB), thời điểm bắt đầu phụ trách (BATDAUPT), thời điểm kết
thúc (KETTHUCPT).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính.
1. Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (bao gồm bối cảnh, nội dung, bảng tầm ảnh
hưởng): (2 điểm)
“Số lần phẫu thuật của một bệnh nhân phải bằng số lần phẫu thuật được chỉ định qua các lần
khám của bệnh nhân đó.”
Lưu ý: Không được sửa thuộc tính khóa chính.
20521743 Lê Hải Phong
BỐI CẢNH: BENHNHAN, KHAMBENH, PHAUTHUAT
NỘI DUNG:
Cách 1:
∀ bn ∈ BENHNHAN: bn.SLPT =COUNT (kbpt ∈ KPBT : bn . MaBN =kbpt . MaBN ) (kbpt.MaPT)
Với KBPT ←KHAMBENH⋈ MaKB PHAUTHUAT)
Cách 2:
∀ bn ∈ BENHNHAN: bn.SLPT =COUNT (kb ∈KHAMBENH , pt ∈PHAUTHUAT :bn . MaBN =kb . MaBN ∧ pt . MaKB=kb .MaKB )
(pt.MaPT)

BẢNG TAH:
THÊM XÓA SỬA
BENHNHAN +(1) - +(SLPT)
KHAMBENH - - +(MaBN)
PHAUTHUAT + + +(MaKB)
(1): Kiểm tra SLPT = 0

2. Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL: (6 điểm)
a. Cho biết thông tin bệnh nhân (HOTEN, CMND) thuộc đối tượng ‘BHYT’ hoặc có địa chỉ ở ‘Đồng
Nai’. Kết quả được sắp xếp theo số lần phẫu thuật giảm dần. (1 điểm)
20521839, Đỗ Phi Sơn
SELECT HOTEN, CMND

FROM BENHNHAN

WHERE DOITUONG = ‘BHYT’ OR DIACHI LIKE ‘%Dong Nai%’

ORDER BY SLPT DESC


b. Cho biết thông tin (MAKB, MABN, HOTEN) của những bệnh nhân sinh sau năm 2020 có khám
bệnh chính là ‘Tim mạch’. (1 điểm)
20520594 - Trần Đình Khôi

Select MAKB, bn.MABN, HOTEN

From BENHNHAN bn, KHAMBENH kb

Where bn.MABN = kb.MABN and YEAR(NGSINH) > 2020

And BENH = ‘Tim mạch’

c. Cho biết số lần khám bệnh của từng bệnh nhân trong năm 2020. Thông tin hiển thị gồm:
MABN, HOTEN và SL. (1 điểm)
20520748 - Nguyễn Minh Tâm
SELECT B.MABN, B.HOTEN, COUNT(K.MAKB) AS SL
FROM BENHNHAN B inner join KHAMBENH K on B. MABN = K. MABN
WHERE YEAR (BATDAU) = 2020
GROUP BY B.MABN, B.HOTEN

d. Cho biết thông tin những bác sĩ (MABS, HOTEN) có chuyên môn ‘Tai-Mũi-Họng’ chưa được
phụ trách khám bệnh trong năm 2020 (BATDAUPT). (1 điểm)
Cách 1:
20521818 _ Trần Văn Quý
SELECT MABS, HOTEN
FROM BACSI
WHERE CHUYENMON=’TAI-MUI-HONG’
EXCEPT
SELECT BS.MABS, HOTEN
FROM BACSI AS BS, PHUTRACH AS PT
WHERE BS.MABS=PT.MABS AND
YEAR(BAUDAUPT)=2020

Cách 2: NOT IN
(20521661 - Cao Đình Duy Ngọc)
SELECT BACSI.MABS, HOTEN
FROM BACSI
WHERE CHUYENMON = N‘Tai-Mũi-Họng’
AND MABS NOT IN (SELECT MABS FROM PHUTRACH
WHERE YEAR(BATDAUPT) = 2020)

Cách 3: NOT EXISTS (20521813 - Nguyễn Huỳnh Vương Quốc)


SELECT BS.MABS, BS.HOTEN
FROM BACSI BS
WHERE BS.CHUYENMON = N‘Tai-Mũi-Họng’
AND NOT EXISTS ( SELECT *
FROM PHUTRACH PT
WHERE YEAR(BTPHUTRACH) = 2020
AND BS.MABS = PT.MABS)

Cách 4: Having count (MaKB) = 0


Đỗ Phạm Phúc Tính 20522020
SELECT PHUTRACH.MABS, BACSI.HOTEN

FROM BACSI, PHUTRACH

WHERE BACSI.MABS=PHUTRACH.MABS AND CHUYENMON='Tai-Mũi-Họng' AND YEAR(BATDAUPT)=2020

GROUP BY PHUTRACH.MABS, BACSI.HOTEN

HAVING COUNT(MAKB)=0

Cách 5: Left join


Nguyễn Trường Thịnh - 20520783
select BS.MABS, HOTEN
from BACSI BS left join PHUTRACH PT on BS.MABS = PT.MABS
where CHUYENMON = ‘Tai-Mũi-Họng’
and (MAKB IS NULL AND year(BATDAUPT) = 2020)
e. Cho biết thông tin (MABS, HOTEN) của những bác sĩ chuyên môn ‘Hồi sức - Cấp cứu’ tham gia
tất cả các mã khám bệnh của bệnh nhân ‘Nguyễn Văn A’. (1 điểm)

Cách 1:
20521813 - Nguyễn Huỳnh Vương Quốc
SELECT BS.MABS, BS.HOTEN, COUNT (KB.MAKB) AS SLKB
FROM BACSI BS, PHUTRACH PT, BENHNHAN BN, KHAMBENH KB
WHERE BS.CHUYENMON = ‘Hồi sức - Cấp cứu’
AND BN.HOTEN = ‘Nguyễn Văn A’
AND BS.MABS = PT.MABS
AND PT.MAKB = KB.MAKB
AND KB.MABN = BN.MABN
GROUP BY BS.MABS, BS.HOTEN
HAVING COUNT(KB.MAKB) = ( SELECT COUNT(KB.MAKB)
FROM BENHNHAN BN, KHAMBENH KB
WHERE BN.MABN = KB.MABN
AND BN.HOTEN = ‘Nguyễn Văn A’)
Cách 2:
SELECT BS.MABS, BS.HOTEN
FROM BACSI BS
WHERE BS.CHUYENMON = ‘Hồi sức - Cấp cứu’
AND NOT EXISTS ( SELECT *
FROM BENHNHAN BN, KHAMBENH KB
WHERE BN.MABN = KB.MABN
AND BN.HOTEN = ‘Nguyễn Văn A’
AND NOT EXISTS ( SELECT *
FROM PHUTRACH PT
WHERE PT.MABS = BS.MABS
AND PT.MAKB = KB.MAKB))
f. Cho biết thông tin bác sĩ (MABS, HOTEN) có số lần phụ trách khám bệnh nhiều nhất. (1 điểm)
Cách 1:20521986 Lê Thị Anh Thư
SELECT TOP 1 WITH TIES BS.MABS, HOTEN, COUNT(MAKB) AS SLKB
FROM BACSI BS, PHUTRACH PT
WHERE BS.MABS=PT.MABS
GROUP BY BS.MABS, HOTEN
ORDER BY COUNT(MAKB) DESCS
CÁCH 2- 20521936- Nguyễn Thị Phương Thảo
SELECT BACSI.MABS, BACSI.HOTEN, COUNT(MAKB) AS SLKB
FROM BACSI, PHUTRACH
WHERE BACSI.MABS=PHUTRACH.MABS
GROUP BY BACSI.MABS, BACSI.HOTEN
HAVING COUNT (MAKB) >= ALL ( SELECT COUNT(MAKB)
FROM PHUTRACH
GROUP BY MAKB)

Cách 3 : 20520422 Nguyễn Minh Cường

SELECT BS.MABS, HOTEN, COUNT(MAKB) ‘So Lan Kham’


FROM BACSI BS, PHUTRACH PT
WHERE BS.MABS=PT.MABS
GROUP BY BS.MABS, HOTEN
HAVING COUNT(MAKB) = ( SELECT TOP 1 COUNT(MAKB)
FROM PHUTRACH
GROUP BY MABS
ORDER BY COUNT(MAKB) DESC)
CACH 4: 20521323-Nguyễn Hùng Trung Hiếu

SELECT BACSI.MABS, BACSI.HOTEN


FROM BACSI, PHUTRACH
WHERE BACSI.MABS=PHUTRACH.MABS
GROUP BY BACSI.MABS, BACSI.HOTEN
HAVING COUNT(BACSI.MAKB) = ( SELECT MAX(SL)
FROM ( SELECT COUNT(MAKB) SL
FROM PHUTRACH
GROUP BY MABS) BANG_SL)

Câu 2: (2 điểm)
Cho lược đồ quan hệ Q(ABCDE) có tập phụ thuộc hàm: F = {A→ BC, A→E, BC→AD, AB→D}
+
1. Phụ thuộc hàm BDC→E có thuộc F không? Giải thích. (0.75 điểm)
20520422 Nguyễn Minh Cường

BDC+F¿¿ = BDC ∪ AD (Do BC→AD)


= BDCA ∪ E (Do A→E)
= DBCAE = Q+
Vì E ⊂ BDCF+, Vậy phụ thuộc hàm BDC→E thuộc F+

2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.25 điểm)
20521743 Lê Hải Phong
- Tìm tất cả các khóa của Q
Tập nguồn: N= ∅
Tập trung gian: TG= {A ,B, C}
Ta có các tập con của TG: {A}, {B}, {C}, {AB}, {AC}, {BC}, {ABC}
Tìm bao đóng:
F = ABCED = Q ❑ ⇒ A là Khóa, loại các tập con của TG có chứa A: {AB}, {AC}, {ABC}
A+¿ ¿ +¿¿

F = B khác Q ❑ ⇒ B không là khóa
B+¿¿ +¿¿

F = C khác Q ❑ ⇒ C không là khóa
C +¿¿ +¿¿

F = BCADE = Q ❑ ⇒ BC là khóa
BC +¿¿ +¿¿

Khóa của Q là A, BC

- Kiểm tra dạng chuẩn 2


Tập con thật sự của Khóa là {B}, {C}
Ta có:
+¿¿
● BF = B
+¿¿
● CF = C
+¿¿ +¿¿
Ta thấy BF , C F không chứa thuộc tính không khóa D, E.
=> thuộc tính không khóa D, C phụ thuộc đầy đủ vào khóa
Vậy lược đồ Q đạt DC2.

20522020 Đỗ Phạm Phúc Tinh

20521813 - Nguyễn Huỳnh Vương Quốc


ĐỀ THI CUỐI KỲ HỌC KỲ I, NĂM HỌC: 2020-2021
Môn: CƠ SỞ DỮ LIỆU

ĐỀ SỐ 2 (Sinh viên không được phép sử dụng tài liệu - Đề thi gồm có 2 trang)

Câu 1: (8 điểm)

Cho lược đồ cơ sở dữ liệu “Quản lý hồ sơ bệnh án điện tử công dân” có cấu trúc như sau:
BENHNHAN (MABN, HOTEN, NGSINH, CMND, DIACHI, DOITUONG, SLPT)
Tân từ: Quan hệ BENHNHAN lưu trữ thông tin của một bệnh nhân, bao gồm: họ tên (HOTEN), ngày
sinh (NGSINH), số chứng minh nhân dân/căn cước công dân/hộ chiếu (CMND), địa chỉ (DIACHI), đối
tượng (DOITUONG), số lần phẫu thuật (SLPT). Mỗi bệnh nhân được cấp một mã số (MABN).
KHAMBENH (MAKB, MABN, BENH, BENHKT, BATDAU, KETTHUC, KETLUAN, TAIKHAM)
Tân từ: Quan hệ KHAMBENH chứa các thông tin của việc khám bệnh, bao gồm: mã khám bệnh
(MAKB), mã bệnh nhân được khám bệnh (MABN), bệnh chính (BENH), bệnh kèm theo (BENHKT), thời
gian bắt đầu việc khám bệnh (BATDAU), thời gian kết thúc việc khám bệnh (KETTHUC), kết luận của
bác sĩ (KETLUAN) và ngày hẹn tái khám nếu có (TAIKHAM).
PHAUTHUAT (MAPT, MAKB, BOPHANPT, LOAIPT, KETQUA)
Tân từ: Quan hệ PHAUTHUAT chứa các thông tin sự kiện phẫu thuật, bao gồm: mã phẫu thuật
(MAPT), mã khám bệnh mà bác sĩ kết luận chỉ định phẫu thuật (MAKB), bộ phận cơ thể cần phẫu
thuật (BOPHANPT), loại phẫu thuật (LOAIPT) và kết quả ca phẫu thuật (KETQUA).
BACSI (MABS, HOTEN, NAMSINH, CHUYENMON, KHOA, BENHVIEN)
Tân từ: Quan hệ BACSI lưu trữ thông tin các bác sĩ, bao gồm: mã bác sĩ (MABS), họ tên (HOTEN), năm
sinh (NAMSINH), chuyên môn (CHUYENMON), khoa (KHOA) và bệnh viện đang công tác (BENHVIEN).
PHUTRACH (MABS, MAKB, BATDAUPT, KETTHUCPT)
Tân từ: Quan hệ PHUTRACH lưu trữ thông tin phụ trách khám bệnh của mỗi bác sĩ, bao gồm: mã bác
sĩ phụ trách (MABS), mã khám bệnh (MAKB), thời điểm bắt đầu phụ trách (BATDAUPT), thời điểm kết
thúc (KETTHUCPT).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính.

1. Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (bao gồm bối cảnh, nội dung, bảng tầm ảnh
hưởng): (2 điểm)
“Số lần phẫu thuật của một bệnh nhân phải bằng số lần phẫu thuật được chỉ định qua các lần
khám của bệnh nhân đó.”
Lưu ý: Không được sửa thuộc tính khóa chính → Giống đề 1
2. Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL: (6 điểm)
a. Cho biết thông tin khám bệnh (MAKB, KETLUAN) có bệnh chính hoặc bệnh kèm theo là ‘Suy
thận’. Kết quả được sắp xếp theo mã bệnh nhân tăng dần. (1 điểm)
20521310-Trịnh Thế Hiển
SELECT MAKB, KETLUAN
FROM KHAMBENH
WHERE BENH = n‘Suy thận’ OR BENHKT = n‘Suy thận’
ORDER BY MABN ASC

b. Cho biết thông tin (MAKB, MABS, HOTEN) của những bác sĩ có chuyên môn là ‘Tim mạch’ bắt
đầu phụ trách từ năm 2021. (1 điểm)
20521940 _Nguyễn Trần Gia Thế
SELECT MAKB, BACSI.MABS, HOTEN
FROM BACSI, PHUTRACH
WHERE BACSI.MABS=PHUTRACH.MABS
AND CHUYENMON=’Tim mạch’
AND YEAR(BATDAUPT)>=2021

c. Cho biết số lần phụ trách khám bệnh của từng bác sĩ trong năm 2020 (BATDAUPT). Thông tin
hiển thị gồm: MABS, HOTEN và SL. (1 điểm)
19520025 - Đỗ Đông Chiến

SELECT BS. MABS, HOTEN, COUNT(MAKB) SL


FROM PHUTRACH PT, BACSI BS
WHERE PT.MABS = BACSI.MABS
AND YEAR(BATDAUPT) = 2020
GROUP BY BS. MABS, HOTEN

d. Cho biết thông tin những bệnh nhân (MABN, HOTEN) được bác sỹ chuẩn đoán cả 2 bệnh chính
là ‘Viêm phổi’ và ‘Tim mạch’ có lịch tái khám trong năm 2021. (1 điểm) -> PHÉP GIAO
Cách 1: INTERSECT
20521817- Trần Ngọc Quý
SELECT BN.MABN, HOTEN
FROM BENHNHAN AS BN, KHAMBENH AS KB
WHERE BN.MABN=KB.MABN
AND BENH=’VIEM PHOI’ AND YEAR(TAIKHAM)=2021
INTERSECT
SELECT BN.MABN, HOTEN
FROM BENHNHAN AS BN, KHAMBENH AS KB
WHERE BN.MABN=KB.MABN
AND BENH=’TIM MACH’ AND YEAR(TAIKHAM)=2021

Cách 2: IN
20521273 _TRẦN THỊ THU HÀ
Select bn.MABN, HOTEN
from KHAMBENH kb, BENHNHAN bn
where BENH= “Viêm phổi” and kb.MABN=kb.MABN and year(TAIKHAM)=2021
and bn.MABN IN (Select MABN
from KHAMBENH
where BENH= “Tim mạch” and year(TAIKHAM)=2021)

Cách 3: EXISTS
Trần ngọc quý - 20521817
SELECT BN.MABN, HOTEN
FROM BENHNHAN BN, KHAMBENH KB1
WHERE BN.MABN = KB1.MABN
AND BENH = 'VIEM PHOI' AND YEAR(TAIKHAM)=2021
AND EXISTS (
SELECT *
FROM KHAMBENH KB2
WHERE BENH = 'TIM MACH' AND YEAR(KB2. TAIKHAM) = 2021
AND KB2.MABN =KB1.MABN
)
e. Cho biết thông tin (MABS, HOTEN) của những bác sĩ khoa ‘Cấp cứu’ tham gia tất cả các mã
khám bệnh có bộ phận cơ thể cần phẫu thuật là ‘Phổi’. (1 điểm)
20520594- Trần Đình Khôi
Select bs.MABS, HOTEN

From BACSI

Where KHOA = ‘Cấp cứu’

and NOT EXISTS ( select *

from PHAUTHUAT pt, KHAMBENH kb

where pt.MaKB = kb.MaKB

and BOPHANPT = ‘Phổi’

and NOT EXISTS (select * from PHUTRACH ptr

where bs.MABS = ptr.MABS


and ptr.MAKB = kb.MAKB)

20522020 Đỗ Phạm Phúc Tính


SELECT BACSI.MABS,HOTEN
FROM BACSI , KHAMBENH , PHUTRACH, PHAUTHUAT
WHERE BACSI.MABS=PHUTRACH.MABS
AND KHAMBENH.MAKB=PHUTRACH.MAKB
AND KHAMBENH.MAKB=PHAUTHUAT.MAKB
AND BACSI.KHOA=’Cấp cứu’ AND BOPHANPT=’Phổi’
GROUP BY BACSI.MABS, HOTEN
HAVING COUNT(PHUTRACH.MAKB) = (SELECT COUNT(MAKB)
FROM PHAUTHUAT
WHERE BOPHANPT=’Phổi’)
f. Cho biết thông tin những bệnh nhân (MABN, HOTEN) có số lần khám bệnh nhiều nhất. (1 điểm)
20521818- Trần Văn Quý
SELECT TOP 1 WITH TIES BN.MABN, HOTEN, COUNT (MAKB) SLKB
FROM BENHNHAN AS BN, KHAMBENH AS KB
WHERE BN.MABN=KB.MABN
GROUP BY BN.MABN, HOTEN
ORDER BY COUNT(MAKB) DESC

hello 20521310 - Trịnh Thế Hiển


SELECT BN.MABN, HOTEN, Count(MAKB)
FROM BENHNHAN BN, KHAMBENH KB
WHERE BN.MABN = KB.MABN
GROUP BY BN.MABN, HOTEN
HAVING Count(MAKB) >= ALL (SELECT Count(MAKB)
FROM KHAMBENH
GROUP BY MABN)
Câu 2: (2 điểm)
Cho lược đồ quan hệ Q(ABCDE) có tập phụ thuộc hàm: F = {D→ BC, D→E, BC→AD, DB→A}
20520594
+
1. Phụ thuộc hàm BAC→E có thuộc F không? Giải thích. (0.75 điểm)
BAC +¿¿
F = BAC ∪ D (do BC -> AD)
= BACD ∪ E (do D->E)
= BACDE = Q+
Vì E ⊂ F ,Vậy phụ thuộc hàm BAC→E thuộc F+
BAC +¿¿
2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.25 điểm)
Nguồn: Rỗng
Trung gian: {B, C, D}
Tập con của tập trung gian: {B}, {C} ,{ D} ,{BC}, {BD}, {CD}, {BCD}
Đích: A,E
- Xác định khoá:
B+¿¿
F = B khác Q+ => B không là khoá

C +¿¿
F = C khác Q+ => C không là khoá

D +¿¿
F = DBCEA = Q+ => D là khoá, loại các tập con chứa D: {BD},{CD},{BCD}

BC +¿¿
F = BCADE = Q+ -> BC là khoá

Vậy khoá của lược đồ là D, BC


- Kiểm tra dạng chuẩn 2
Tập con thực sự của khóa {B}, {C}
B+¿¿
F = B

C +¿¿
F = C
+¿¿ +¿¿
Ta thấy BF , C F không chứa thuộc tính không khóa A, E. nên các thuộc tính không khoá đều
phụ thuộc đầy đủ vào khoá.
Do vậy Q đạt DC2

----------------------------------------------------------------Hết-------------------------------------------------------
ĐỀ THI CUỐI KỲ HỌC KỲ I, NĂM HỌC: 2019-2020
Môn: CƠ SỞ DỮ LIỆU

ĐỀ SỐ 1

Câu 1: (8 điểm) Cho lược đồ cơ sở dữ liệu “Quản lý thế vận hội Olympic” có cấu trúc như sau:
Quocgia (MaQG, TenQG, ChauLuc, DienTich)
Tân từ: Quan hệ Quocgia chứa thông tin về quốc gia gồm: mã quốc gia (MaQG), tên quốc gia
(TenQG), tên châu lục (ChauLuc), diện tích (DienTich).
Thevanhoi (MaTVH, TenTVH, MaQG, Nam)
Tân từ: Quan hệ Thevanhoi chứa thông tin về thế vận hội gồm: mã thế vận hội (MaTVH), tên thế vận
hội (TenTVH), mã quốc gia đăng cai thế vận hội (MaQG), năm (Nam) diễn ra thế vận hội.
Vandongvien (MaVDV, HoTen, NgSinh, GioiTinh, QuocTich)
Tân từ: Quan hệ Vandongvien chứa thông tin vận động viên gồm: mã vận động viên (MaVDV), họ tên
(HoTen), ngày sinh (NgSinh), giới tính (GioiTinh), quốc tịch (QuocTich) của vận động viên (quốc tịch
chính là mã quốc gia)
Noidungthi (MaNDT, TenNDT, GhiChu)
Tân từ: Quan hệ Noidungthi chứa thông tin nội dung thi gồm: mã nội dung thi (MaNDT), tên nội dung
thi (TenNDT), ghi chú (GhiChu).
Thamgia (MaVDV, MaNDT, MaTVH, HuyChuong)
Tân từ: Quan hệ Thamgia chứa thông tin vận động viên (MaVDV) tham dự nội dung (MaNDT) gì ở thế
vận hội (MaTVH) nào và đạt huy chương gì (thuộc tính HuyChuong có giá trị là: 0 nếu không đạt huy
chương, 1 nếu đạt huy chương vàng, 2 nếu đạt huy chương bạc, 3 nếu đạt huy chương đồng).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính

1. Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (bao gồm bối cảnh, nội dung, bảng tầm ảnh
hưởng): (1.5 điểm)
Tại một kỳ thế vận hội, mỗi nội dung thi chỉ có duy nhất một huy chương vàng.
Nguyễn Huỳnh Vương Quốc - 20521813
- Bối cảnh: THAMGIA
- Nội dung:
∀ tg 1 , tg2 ∈THAMGIA : Nếu tg1.MaTVH = tg2.MaTVH ∧tg1.MaNDT = tg2.MaDT ∧
tg1.HuyChuong = 1 thì tg2.HuyChuong ≠ 1

∀ tg 1 ∈THAMGIA :
COUNT ❑(tg 2∈THAMGIA :tg 2. MaTVH =tg1. MaTVH ∧ tg2. MaNDT =tg 1. MaNDT ∧ tg 2.HuyChuong=1) (¿) ≤1

- Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

THAMGIA + - +(HuyChuong)

2. Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL: (6 điểm)
a. Liệt kê danh sách vận động viên (HoTen, NgSinh, GioiTinh) có Quốc tịch là ‘UK’ và sắp xếp
danh sách theo (HoTen) tăng dần. (1 điểm)
20521808 Nguyễn Xuân Quang
SELECT HoTen, NgSinh, GioiTinh
FROM Vandongvien
WHERE Quoctich=’UK’
ORDER BY HoTen
b. In ra danh sách những vận động viên tham gia nội dung thi ‘Bắn Cung’ ở thế vận hội
‘Olympic ’. (1 điểm)
20521808 Nguyễn Xuân Quang
SELECT VDV.MaVDV, HoTen
FROM Noidungthi N join Thamgia TG on T.MaNDT=TG.MaNDT
join Thevanhoi TVH on TVH.MaTVH=TG.MaTVH
join Vandongvien VDV on VDV.MaVDV = TG.MaVDV
WHERE TenTVH=‘Olympic ’ and TenNDT=‘Bắn Cung’
c. Cho biết số lượng huy chương vàng mà các vận động viên ‘Nhật Bản’ đạt được ở thế vận
hội diễn ra vào năm 2020. (1 điểm)
CACH 1: 19520025 - DO DONG CHIEN

SELECT COUNT(HUYCHUONG)
FROM THAMGIA TG, VANDONGVIEN VDV, THEVANHOI TVH, QUOCGIA QG
WHERE VDV.MAVDV = TG.MAVDV
AND TVH.MATVH = TG.MATVH
AND VDV.QUOCTICH = QG.MAQG
AND HUYCHUONG = 1
AND TENQG = ‘NHAT BAN’
20521273-Trần Thị Thu Hà

Select count(HuyChuong=1)

from Thamgia t,Thevanhoi tvh, Vandongvien v, Quocgia q

where q.TenQG= ‘Nhật Bản’ and Nam=2020 and t.MaVDV=v.MaVDV and


t.MaTVH=tvh.MaTVH and q.MaQG=QuocTich.

d. Liệt kê họ tên và quốc tịch của những vận động viên tham gia cả 2 nội dung thi ‘100m bơi
ngửa’ và ‘200m tự do’. (1 điểm)
20521871 - Nguyễn Hữu Minh Tâm
Cách 1: INTERSECT
(SELECT HoTen, QuocTich
FROM Vandongvien VDV, Thamgia TG, Noidungthi NDT
WHERE VDV.MaVDV = TG.MaVDV
AND TG.MANDT = NDT.MaNDT
AND NDT.TenNDT = ’100m bơi ngửa’)
INTERSECT
(SELECT HoTen, QuocTich
FROM Vandongvien VDV, Thamgia TG, Noidungthi NDT
WHERE VDV.MaVDV = TG.MaVDV
AND TG.MANDT = NDT.MaNDT
AND NDT.TenNDT = ’200m tự do’)

20521940 _ Nguyễn Trần Gia Thế


CÁCH 2 : IN
SELECT HoTen, QuocTich
FROM Vandongvien VDV, Thamgia TG, Noidungthi NDT
WHERE VDV.MaVDV=TG.MaVDV
AND TG.MANDT=NDT.MaNDT
AND NDT.TenNDT=’100m bơi ngửa’
AND VDV.MaVDV IN (SELECT TG.MAVDV
FROM Noidungthi NDT2, Thamgia TG2
WHERE NDT2.MaNDT=TG2.MaNDT
AND NDT2.TenNDT=’200m tự do’)
Sơn - 20521839
Cách Exists
SELECT HOTEN, QUOCTICH
FROM VANDONGVIEN VDV, THAMGIA TG, NOIDUNGTHI NDT
WHERE VDV.MAVDV = TG.MAVDV AND TG.MANDT = NDT.MANDT
AND TENNDT = N‘100m bơi ngửa’
AND EXIST (SELECT * FROM THAMGIA TG1, NOIDUNGTHI NDT
WHERE TG1.MANDT = NDT1.MANDT
AND TENNDT = N‘200m tự do’
AND TG1.MAVDV = TG.MAVDV)
e. In ra thông tin (MaVDV, HoTen) của những vận động viên Nữ người Anh (QuocTich=UK)
tham gia tất cả các kỳ thế vận hội từ năm 2008 tới nay. (1 điểm)
20520477 - Nguyễn Phạm Hồng Duyên
SELECT vdv.MaVDV, HoTen
FROM Vandongvien vdv
WHERE GioiTinh=’Nữ’ and QuocTich=’UK’
and NOT EXISTS (SELECT *
FROM Thevanhoi tvh
WHERE Nam>=2008
and NOT EXISTS (SELECT *
FROM Thamgia tg
WHERE tg.MaVDV=vdv.MaVDV
and tg.MaTVH=tg.MaTVH))

Sơn -20521839 - CÁCH GOM NHÓM TÍNH TOÁN


SELECT VDV.MAVDV, HOTEN
FROM VANDONGVIEN VDV, THEVANHOI TVH, THAMGIA TG
WHERE VDV.MAVDV = TG.MAVDV
AND TG.MATVH = TVH.MATVH
AND GIOITINH = N‘Nữ’
AND QUOCTICH = ‘UK’
AND NAM >=2008
GROUP BY VDV.MAVDV, HOTEN
HAVING COUNT(distinct TG.MaTVH) = (SELECT COUNT(MATVH)
FROM THEVANHOI
WHERE NAM >= 2008)
GROUP BY MATVH
f. Tìm vận đông viên (MaVDV, HoTen) đã đạt từ 2 huy chương vàng trở lên tại thế vận hội
‘Olympic Rio 2016’. (1 điểm)
20521808 Nguyễn Xuân Quang
SELECT V.MaVDV, V. HoTen
FROM Vandongvien V join Thamgia TG on V.MaVDV=TG.MaVDV
join Thevanhoi TVH on TVH.MaTVH=TG.MaTVH
WHERE HuyChuong=1 and TenTVH=’Olympic Rio 2016’
GROUP BY V.MaVDV, V. HoTen
HAVING COUNT(HuyChuong) >=2

Câu 2: Phụ thuộc hàm và các dạng chuẩn (2.5 điểm)
Cho lược đồ quan hệ Q(ABCDEGH) có tập phụ thuộc hàm:
F = {f1: AD→CG; f2: AE→BH; f3: C→D; f4: CE→H; f5: DE→G; f6: CD→BE}

1. c. (1 điểm)
Nguyễn Minh Cường 20520422

-Xét bao đống của CG :


CG +¿¿
F =CG ∪ D( f3 ) = CGD ∪ BE ( f6) =CGDBE ∪ H ( f4 )=CGDBEH

AE không là con của CG F => CG→AE không thuộc F+


+¿¿

2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.5 điểm)
20520477 - Nguyễn Phạm Hồng Duyên.
- Tìm khóa của Q
Tập nguồn:{A}
Ta có: (A)+ =A khác Q+ => A không là khóa của Q
Tập trung gian:{C}, {D}, {E}
Các tập con của tập trung gian: {C}, {D}, {E}, {CD}, {DE}, {CE}, {CDE}
Tập đích: {B}, {G}, {H}
Tính bao đóng:
(AC)+ =ACDGBEH = Q+ => AC là khóa, loại các tập con chứa C: {CD}, {CE}, {CDE}
(AD)+ =ADCGBEH = Q+ => AD là khóa, loại các tập con chứa D: {DE}
(AE)+ =AEBH khác Q+ => AE không là khóa
Suy ra khóa của Q là AC và AD
- Xét dạng chuẩn 2
Cách 1:
Tập con thât sự của khóa là {A}, {C}, {D}
(A)+ =A
(C)+ =CDBEGH
(D)+ =D
Ta thấy (C)+ có chứa H, mà H là thuộc tính không khóa, nên H không phụ thuộc đầy đủ vào khóa.
Kết luận: lược đồ quan hệ (Q, F) không đạt dạng chuẩn 2.

Cách 2:
F = {f1: AD→CG; f2: AE→BH; f3: C→D; f4: CE→H; f5: DE→G; f6: CD→BE}

Ta có f3: C→D, f6: CD→BE

=> C→BE (tựa bắc cầu)

Vì C là tập con của khóa AC và B, E là thuộc tính không khóa => các thuộc tính không khóa không phụ
thuộc đầy đủ vào khóa
Kết luận: Q không đạt dạng chuẩn 2
ĐỀ THI CUỐI KỲ HỌC KỲ I, NĂM HỌC: 2019-2020
Môn: CƠ SỞ DỮ LIỆU
ĐỀ SỐ 2

Câu 1: (8 điểm) Cho lược đồ cơ sở dữ liệu “Quản lý thế vận hội Olympic” có cấu trúc như sau:
Quocgia (MaQG, TenQG, ChauLuc, DienTich)
Tân từ: Quan hệ Quocgia chứa thông tin về quốc gia gồm: mã quốc gia (MaQG), tên quốc gia
(TenQG), tên châu lục (ChauLuc), diện tích (DienTich).
Thevanhoi (MaTVH, TenTVH, MaQG, Nam)
Tân từ: Quan hệ Thevanhoi chứa thông tin về thế vận hội gồm: mã thế vận hội (MaTVH), tên thế vận
hội (TenTVH), mã quốc gia đăng cai thế vận hội (MaQG), năm (Nam) diễn ra thế vận hội.
Vandongvien (MaVDV, HoTen, NgSinh, GioiTinh, QuocTich)
Tân từ: Quan hệ Vandongvien chứa thông tin vận động viên gồm: mã vận động viên (MaVDV), họ tên
(HoTen), ngày sinh (NgSinh), giới tính (GioiTinh), quốc tịch (QuocTich) của vận động viên (quốc tịch
chính là mã quốc gia)
Noidungthi (MaNDT, TenNDT, GhiChu)
Tân từ: Quan hệ Noidungthi chứa thông tin nội dung thi gồm: mã nội dung thi (MaNDT), tên nội dung
thi (TenNDT), ghi chú (GhiChu).
Thamgia (MaVDV, MaNDT, MaTVH, HuyChuong)
Tân từ: Quan hệ Thamgia chứa thông tin vận động viên (MaVDV) tham dự nội dung (MaNDT) gì ở thế
vận hội (MaTVH) nào và đạt huy chương gì (thuộc tính HuyChuong có giá trị là: 0 nếu không đạt huy
chương, 1 nếu đạt huy chương vàng, 2 nếu đạt huy chương bạc, 3 nếu đạt huy chương đồng).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính
1. Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (bao gồm bối cảnh, nội dung, bảng tầm ảnh
hưởng): (1.5 điểm)
Hai kỳ thế vận hội liên tiếp không được tổ chức ở cùng một quốc gia. Biết rằng, thế vận hội diễn
ra cứ 4 năm 1 lần.
Đỗ Phi Sơn - 20521839
Bối cảnh: THEVANHOI
Nội dung:
∀tvh1, tvh2 ∈THEVANHOI: tvh1.MAQG = tvh2.MAQG ⇒ abs(tvh1.Nam - tvh2.Nam) ≠ 4
Bảng tầm ảnh hưởng: Thêm Xoá Sửa
THEVANHOI + - +(Nam,MAQG)

Cách 2: 20520477 - Duyên

Bối cảnh: Thevanhoi

Nội dung: ∀tvh1,tvh2 ∈ Thevanhoi, |tvh1.Nam-tvh2.Nam|=4 => tvh1.MaQG ≠ tvh2.MaQG

∀tvh1,tvh2 ∈ Thevanhoi, tvh1.Nam=tvh2.Nam+4 => tvh1.MaQG ≠ tvh2.MaQG

Bảng tầm ảnh hưởng:

Thêm Xóa Sửa

Thevanhoi + - +(MaQG,Nam)

2. Thực hiện các câu truy vấn sau bằng ngôn ngữ SQL: (6 điểm)
a. Liệt kê danh sách Nữ vận động viên (HoTen, NgSinh) có Quốc tịch là ‘JA’. (1 điểm)
20521817- Trần Ngọc Quý
SELECT HoTen, NgSing
FROM VANDONGVIEN
WHERE GioiTinh=’Nu’ AND QuocTich=’JA’

b. In ra danh sách những vận động viên tham gia nội dung thi ‘Điền kinh’ ở thế vận hội
‘Olympic Rio 2016’. (1 điểm)
20521871 - Nguyễn Hữu Minh Tâm
SELECT VDV.MaVDV, VDV.HoTen
FROM Vandongvien VDV, Thamgia TG, Noidungthi NDT, Thevanhoi TVH
WHERE VDV.MaVDV = TG.MaVDV
AND TG.MaNDT = NDT.MaNDT
AND TG.MaTVH = TVH.MaTVH
AND NDT.TenNDT = ‘Điền kinh’
AND TVH.TenTVH = ’Olympic Rio 2016’

c. Cho biết số lượng huy chương bạc mà các vận động viên nước ‘Trung Quốc’ đạt được tại
thế vận hội diễn ra vào năm 2012. (1 điểm)
20521818 _Trần Văn Quý

SELECT COUNT(HUYCHUONG)

FROM THAMGIA AS TG, THEVANHOI AS TVH, QUOCGIA AS QG, VANDONGVIEN AS VDV

WHERE TG.MATVH=TVH.MATVH AND TG.MAVDV= VDV.MAVDV AND VDV.QUOCTICH =


QG.MAQG

AND TENQG=’TRUNG QUOC’ AND NAM=2012 AND

HUYCHUONG=2

d. Liệt kê họ tên và quốc tịch của những vận động viên tham gia nội dung thi ‘100m bơi ngửa’
nhưng không tham gia nội dung thi ‘200m tự do’. (1 điểm)
20521936 - Nguyễn Thị Phương Thảo
(SELECT Vandongvien.HoTen, Vandongvien.QuocTich
FROM Vandongvien INNER JOIN Thamgia
ON Vandongvien.MaVDV=Thamgia.MaVDV INNER JOIN Noidungthi
ON Noidungthi.MaNDT = Thamgia.MaNDT
WHERE TenNDT = '100m bơi ngửa')
EXCEPT
(SELECT Vandongvien.HoTen, Vandongvien.QuocTich
FROM Vandongvien INNER JOIN Thamgia
ON Vandongvien.MaVDV=Thamgia.MaVDV INNER JOIN Noidungthi
ON Noidungthi.MaNDT = Thamgia.MaNDT
WHERE TenNDT = '200m tự do')

Nguyễn Huỳnh Vương Quốc - 20521813 (EXISTS)

SELECT V1.HoTen, V1.QuocTich

FROM Vandongvien V1, Thamgia T1, Noidungthi N1

WHERE V1.MaVDV = T1.MaVDV AND T1.MaNDT = N1.MaNDT

AND N1.TenNDT = N‘100m bơi ngửa’ AND NOT EXISTS (

SELECT * FROM Thamgia T2, Noidungthi N2


WHERE T2.MaNDT = N2.MaNDT AND N2.TenNDT = N‘200m tự do’
AND T1.MaVDV = T2.MaVDV
)

e. In ra thông tin (MaVDV, HoTen) của những vận động viên Nam người Đức (QuocTich=DE)
tham gia tất cả các kỳ thế vận hội từ năm 2012 tới nay. (1 điểm)

Nguyễn Huỳnh Vương Quốc - 20521813 (COUNT)

SELECT V1.MaVDV, V1.HoTen FROM Vandongvien V1, Thamgia T1, Thevanhoi TV1
WHERE V1.MaVDV = T1.MaVDV AND T1.MaTVH = TV1.MaTVH
AND V1.GioiTinh = ‘Nam’ AND V1.QuocTich = ‘DE’
AND TV1.Nam >= 2012
GROUP BY V1.MaVDV, V1.HoTen
HAVING COUNT(DISTINCT TV1.MaTVH) = (
SELECT COUNT(TV2.MaTVH) FROM Thevanhoi TV2
WHERE TV2.Nam > 2012
)

CACH 1: 19520025 - ĐỖ ĐÔNG CHIẾN


SELECT VDV.MaVDV, HoTen
FROM Vandongvien VDV
WHERE GioiTinh= ‘NAM’ and QuocTich = ‘DE’
and NOT EXISTS ( SELECT *
FROM Thevanhoi TVH
WHERE Nam >= 2012
and NOT EXISTS ( SELECT *
FROM Thamgia TG
WHERE TG.MaVDV=VDV.MaVDV
and TG.MaTVH=TG.MaTVH))

f. Tìm vận đông viên (MaVDV, HoTen) đã đạt từ 2 huy chương vàng trở lên với nội dung thi
‘Bắn cung’. (1 điểm)
20521936 - Nguyễn Thị Phương Thảo
SELECT Vandongvien.MaVDV, Vandongvien.HoTen
FROM Vandongvien INNER JOIN Thamgia
ON Vandongvien.MaVDV=Thamgia.MaVDV INNER JOIN Noidungthi
ON Noidungthi.MaNDT = Thamgia.MaNDT
WHERE HuyChuong = 1 AND TenNDT = 'Bắn cung'
GROUP BY Vandongvien.MaVDV, Vandongvien.HoTen
HAVING COUNT(HuyChuong) >= 2

Câu 2: Phụ thuộc hàm và các dạng chuẩn (2.5 điểm)
Cho lược đồ quan hệ Q(ABCDEGH) có tập phụ thuộc hàm:
F = {f1: DG→BE; f2: AD→CH; f3: E→G; f4: AE→C; f5: AG→B; f6: EG→AH}
1. BE→AC có thuộc F+ không? Giải thích. (1 điểm)

2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.5 điểm)
Nguyễn Huỳnh Vương Quốc - 20521813

- Tìm khóa của Q:


+ Tập nguồn N = {D}
=> (D)+ = D ≠ Q+
=> D không là khóa trên Q
+ Tập trung gian TG = {A, E, G}
=> Tập con khác rỗng của tập TG: {A}, {E}, {G}, {AE}, {AG}, {EG}, {AEG}
+ Tìm bao đóng:
● (DA)+ = DACH ≠ Q+ => DA không là một khóa của Q
● (DE)+ = DEGAHBC ¿ Q+ => DE là một khóa của Q, loại các tập con chứa
E: {AE}, {EG}, {AEG}
● (DG)+ = DGBEAHC¿ Q+ => DG là một khóa của Q, loại các tập con chứa
G: {AG}
=> Q có các khóa là DE và DG
- Xét dạng chuẩn 2:
+ Ta có, khóa trên Q là DE và DG
+ Các tập con thực sự của Khóa là {D}, {E}, {G}:
● (D)+ = D
● (E)+ = EGAHCB
● (G)+ = G
=> Ta thấy (E)+ chứa thuộc tính B là thuộc tính không khóa
=> Thuộc tính không khóa B không phụ thuộc đầy đủ vào khóa
=> Q không đạt dạng chuẩn 2
BÀI TẬP THÊM PHẦN RÀNG BUỘC TOÀN VẸN
I. QUẢN LÝ THẺ TÀI KHOẢN
<Trích đề 1 và 2 thi Cuối kỳ Học kỳ 1 năm học 2017-2018>
Cho lược đồ cơ sở dữ liệu “Quản lý thẻ tài khoản” gồm các quan hệ như sau:
KhachHang(MaKH, HoTen, NgaySinh, DiaChi, SoDT, CMND)
Tân từ: khách hàng có mã khách hàng (MaKH), họ tên (HoTen), ngày sinh (NgaySinh), địa chỉ
(DiaChi), số điện thoại (SoDT) và chứng minh nhân dân (CMND).
LoaiTaiKhoan(MaLTK, TenLTK, MoTa)
Tân từ: loại tài khoản có mã loại tài khoản (MaLTK), tên loại tài khoản (TenLTK, VD: tiết kiệm,
thanh toán, vay, ...) và mô tả.
TaiKhoan(SoTK, MaKH, MaLTK, NgayMo, SoDu, LaiSuat, TrangThai)
Tân từ: tài khoản có số tài khoản (SoTK), của khách hàng nào (MaKH), loại tài khoản (MaLTK),
ngày mở (NgayMo), số dư (SoDu), lãi suất (LaiSuat) và trạng thái (TrangThai, VD: chưa kích hoạt,
hoạt động, khóa, ...).
LoaiGiaoDich(MaLGD, TenLGD, MoTa)
Tân từ: loại giao dịch có mã loại (MaLGD), tên loại giao dịch (TenLGD, VD: gửi tiền, rút tiền,
thanh toán hóa đơn, ...) và mô tả.
GiaoDich(MaGD, SoTK, MaLGD, NgayGD, SoTien, NoiDung)
Tân từ: giao dịch có mã giao dịch (MaGD), số tài khoản (SoTK), loại giao dịch (MaLGD), thời
điểm giao dịch (NgayGD), số tiền (SoTien) và nội dung (NoiDung). Ghi chú: Các thuộc tính gạch
dưới là các thuộc tính khóa chính.

Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (1.5 điểm)
Đề 1:
Khách hàng chỉ được mở tài khoản (SoTK) khi khách hàng có tuổi từ 14 trở lên.

20521310 - Trịnh Thế Hiển

BỐI CẢNH: KhachHang, TaiKhoan


NỘI DUNG: ∀tk ∊ TaiKhoan, ∃kh ∊ KhachHang: kh.MaKH = tk.MaKH ∧ year(tk.NgayMo)-
year(kh.NgSinh) >= 14

BẢNG TAH:

THÊM XÓA SỬA

KhachHang - - +(NgSinh)

TaiKhoan + - +(MaKH, NgayMo)

Đề 2:
Thời điểm giao dịch (NgayGD) của một tài khoản (SoTK) phải lớn hơn hoặc bằng ngày mở tài
khoản đó (NgayMo).
20521808 Nguyễn Xuân Quang

BỐI CẢNH: TaiKhoan,GiaoDich

NỘI DUNG: ∀ gd ϵ GiaoDich , ∃tk ϵTaiKhoan, tk.SoTK=gd.SoTK ^ gd.NgayGD>=tk.NgayMo


Type equation here .

BẢNG TAH:

THÊM XÓA SỬA

TaiKhoan - - +(NgayMo)

GiaoDich + - +(NgayGD,SoTK)
II. QUẢN LÝ ĐƠN ĐẶT HÀNG
<Trích đề 1 và 2 thi Cuối kỳ Học kỳ 1 năm học 2018-2019>

Cho lược đồ cơ sở dữ liệu “Quản lý đơn đặt hàng” có cấu trúc như sau:
MATHANG (MAMH, TENMH, DVT, NUOCSX)
Tân từ: Quan hệ MATHANG chứa thông tin về các mặt hàng. Thông tin này gồm có: mã mặt
hàng (MAMH), tên mặt hàng (TENMH), đơn vị tính (DVT) và nước sản xuất (NUOCSX). Mỗi mặt
hàng sẽ được quản lý bằng một mã mặt hàng duy nhất (MAMH).
NHACC (MACC, TENCC, DIACHICC)
Tân từ: Quan hệ NHACC chứa thông tin về các nhà cung cấp. Thông tin này gồm có: mã nhà
cung cấp (MACC), tên nhà cung cấp (TENCC) và địa chỉ nhà cung cấp (DIACHICC). Mỗi nhà cung cấp
sẽ được quản lý bằng một mã số duy nhất (MACC)
CUNGCAP (MACC, MAMH, TUNGAY)
Tân từ: Quan hệ CUNGCAP chứa thông tin về các mặt hàng mà nhà cung cấp có thể cung cấp.
Thông tin này gồm có: mã nhà cung cấp (MACC), mã mặt hàng (MAMH) và ngày bắt đầu cung cấp
mặt hàng này (TUNGAY).
DONDH (MADH, NGAYDH, MACC, TONGTRIGIA, SOMH)
Tân từ: Quan hệ DONDH chứa thông tin về các đơn đặt hàng. Thông tin này gồm có: mã đơn
hàng (MADH), ngày đặt hàng (NGAYDH), đặt hàng từ nhà cung cấp (MACC), tổng trị giá của đơn
hàng (TONGTRIGIA) và số mặt hàng có trong mỗi đơn đặt hàng (SOMH). Khi thêm mới đơn đặt
hàng thì TONGTRIGIA, SOMH được gán giá trị mặc định là 0. Mỗi đơn đặt hàng sẽ được quản lý
bằng một mã đơn hàng duy nhất (MADH).
CHITIET (MADH, MAMH, SOLUONG, DONGIA, TRIGIA)
Tân từ: Quan hệ CHITIET chứa thông tin về các chi tiết đặt hàng. Thông tin này gồm có: mã đơn
hàng (MADH), mã mặt hàng (MAMH), số lượng (SOLUONG), đơn giá (DONGIA) và trị giá của mặt
hàng được đặt (TRIGIA= SOLUONG x DONGIA).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính.
Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (1.5 điểm)
Đề 1:
Tổng trị giá của đơn đặt hàng (TONGTRIGIA) bằng tổng các trị giá (TRIGIA) của các chi tiết đặt
hàng thuộc đơn đặt hàng đó.
*Lưu ý: Không được sửa thuộc tính khóa chính.
20521818 _ Trần Văn Quý

BỐI CẢNH: DONDH, CHITIET

NỘI DUNG: ∀ ddh ϵ DONDH :ddh .TONGTRIGIA=¿

Σ (ct ϵ CHITIET: ddh.MADH=ct.MADH) (TRIGIA)

BẢNG TAH:

THÊM XÓA SỬA

DONDH - - +(TONGTRIGIA)

CHITIET + + +(SOLUONG,
DONGIA, TRIGIA)

Đề 2:
Thuộc tính số mặt hàng (SOMH) trong đơn đặt hàng phải bằng số mặt hàng thuộc chi tiết của
đơn đặt hàng đó.
*Lưu ý: Không được sửa thuộc tính khóa chính.
Cao Đình Duy Ngọc 20521661

BỐI CẢNH: DONDH, CHITIET

NỘI DUNG:

∀ddh ∈ DONDH: ddh.SOMH= COUNT ¿¿(ct.MaMH)

BẢNG TAH:

THÊM XÓA SỬA

DONDH - - +(SoMH)

CHITIET + + -(*)
III. QUẢN LÝ ĐẶT HÀNG VÀ PHÂN BỔ VẮC-XIN
<Trích đề 1 và 2 thi Cuối kỳ Học kỳ 2 năm học 2020-2021>

Cho một phần lược đồ cơ sở dữ liệu “Quản lý đặt hàng và phân bổ vắc xin Covid-19” có cấu trúc
như sau:

VACXIN (MAVX, TENVX, LOAIVX, MACTY, HQLS, HQTT, SOMUI)


Tân từ: Quan hệ VACXIN lưu trữ thông tin của một vắc xin cụ thể, bao gồm: tên vắc xin (TENVX),
loại vắc xin (LOAIVX), mã công ty sản xuất (MACTY), hiệu quả lâm sàn (HQLS), hiệu quả thực tế
(HQTT) và số mũi tiêm cần thiết (SOMUI). Mỗi vắc xin được cấp một mã số (MAVX) để quản lý. Giá
trị hiệu quả lâm sàn và hiệu quả thực tế có đơn vị là phần trăm (%).
CONGTY (MACTY, TENCTY, QUOCGIA, NAMTL)
Tân từ: Quan hệ CONGTY chứa thông tin các hãng sản xuất vắc xin. Thông tin bao gồm: mã công
ty (MACTY), tên công ty (TENCTY), quốc gia (QUOCGIA) và năm thành lập (NAMTL).
DIAPHUONG (MADP, TENDP, SOF0, SOTV, DATIEM, TONGPB)
Tân từ: Quan hệ DIAPHUONG là quan hệ ghi nhận thông tin của các địa phương (tỉnh/thành
phố), bao gồm: mã địa phương (MADP), tên địa phương (TENDP), số lượng bệnh nhân F0 (SOF0),
số ca tử vong (SOTV), số lượng vắc xin đã tiêm (DATIEM) và tổng số lượng vắc xin được phân bổ
(TONGPB).
DATHANG (MADH, MAVX, NOIDAT, SL, THGIAO, TINHTRANG)
Tân từ: Quan hệ DATHANG là quan hệ chứa các thông tin đặt hàng vắc xin từ các chương trình
hỗ trợ, chính phủ, công ty. Thông tin bao gồm: mã đặt hàng (MADH), mã vắc xin (MAVX), nơi đặt
(NOIDAT), số lượng (SL), thời hạn giao vắc xin (THGIAO) và tình trạng của đơn đặt hàng
(TINHTRANG).
PHANBO (MADP, MAVX, DOT, SL, NGAYCAP)
Tân từ: Quan hệ PHANBO lưu trữ thông tin phân bổ vắc xin về các địa phương, bao gồm: mã địa
phương (MADP), mã vắc xin (MAVX), đợt cấp (DOT), số lượng (SL) và ngày cấp (NGAYCAP).
Ghi chú: Các thuộc tính gạch dưới là các thuộc tính khóa chính.
Hãy phát biểu chặt chẽ ràng buộc toàn vẹn (1.5 điểm)
Đề 1, 2:
“Tổng số lượng vắc xin được phân bổ của từng địa phương (TONGPB) phải bằng tổng số lượng
(SL) các vắc xin được phân bổ qua các đợt về địa phương đó.”
20521808 Nguyễn Xuân Quang

BỐI CẢNH: DIAPHUONG, PHANBO

NỘI DUNG: ∀ dp ϵ DIAPHUONG: dp.TONGPB=SUM(pb ϵ PHANBO: pb.MADP=dp.MADP)(pd.SL)

BẢNG TAH:

THÊM XÓA SỬA

DIAPHUONG +(1) - +(TONGPB)

PHANBO + + +(SL,MADP)

(1) ktra TONGPB=0


BÀI TẬP THÊM PHẦN PHỤ THUỘC HÀM – DẠNG CHUẨN
Câu 1. Cho lược đồ quan hệ Q(ABCDEG) và tập phụ thuộc hàm:
F = {f1: A→BC; f2: AB→D; f3: AC→E; f4: B→G}
20521813 - Nguyễn Huỳnh Vương Quốc
1. (0.75 đ) Cho f: AG →DG, f có phải là phụ thuộc hàm hệ quả (là thành viên) của F không?
Giải thích.
(AG)+ = AG
= AG ∪ BC (Do có f1: A → BC)
= AGBC ∪ D (Do có f2: AB → D)
= AGBCD ∪ E (Do có f3: AC → E)
= (Q)+
Vì DG ⊂ (AG)+, do đó phụ thuộc hàm AG → DG thuộc (F)+

2. (1 đ) Tìm khóa của lược đồ quan hệ (Q, F)

- Tập nguồn N = {A}

=> (A)+ = ABCDEG = Q+

=> Q có khóa là A

Vậy khóa của lược đồ quan hệ (Q, F) là A

3. (0.75 đ) Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 3 không? Giải thích.
Cách 1: Dùng định nghĩa 1
- Phân rã F thành các phụ thuộc có vế phải chứa 1 thuộc tính ta được:
F = {A → B; A → C; AB → D; AC → E; B → G}
- Ta thấy A → B và B → G
=> Thuộc tính không khóa G phụ thuộc bắc cầu vào khóa A
Nên Lược đồ quan hệ (Q, F) không đạt dạng chuẩn 3
Cách 2: Dùng định nghĩa 2
- Phân rã F thành các phụ thuộc có vế phải chứa 1 thuộc tính ta được:
F = {A → B; A → C; AB → D; AC → E; B → G}
- Xét phụ thuộc hàm B → G, ta thấy vế trái B không là 1 siêu khóa và vế phải G
không là một thuộc tính khóa
=> Lược đồ quan hệ (Q, F) không đạt dạng chuẩn 3
<Trích đề 1 thi Cuối kỳ Học kỳ 1 năm học 2017-2018>

Câu 2. Cho lược đồ quan hệ Q(ABCDEGH) có tập phụ thuộc hàm:
F = {f1: A→H; f2: DG→B; f3: C→A; f4: E→D; f5: AE→C; f6: DG→H}
1. (0.75đ) Cho f: EG→C, f có phải là phụ thuộc hàm hệ quả (là thành viên) của F không? Giải
thích.
2. (1 đ) Tìm khóa của lược đồ quan hệ (Q, F)
3. (0.75 đ) Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích.
<Trích đề 2 thi Cuối kỳ Học kỳ 1 năm học 2017-2018>

Câu 3. Cho lược đồ quan hệ Q(ABCDEGH) có tập phụ thuộc hàm:


F = {f1: A→C; f2: AB→DG; f3: BC→AH; f4: BG→DE; f5: AG→E; f6: CG→H}
1. Chứng minh: BC→DG ∈ F+ (1 điểm)
2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.5 điểm)
<Trích đề 1 thi Cuối kỳ Học kỳ 1 năm học 2018-2019>

Câu 4. Cho lược đồ quan hệ Q(ABCDEGH) có tập phụ thuộc hàm:


F = {f1: CD→B; f2: D→G; f3: DE→AC; f4: CE→AB; f5: CG→H; f6: EG→DH}
1. Chứng minh: EG→AC ∈ F+ (1 điểm)
2. Lược đồ quan hệ (Q, F) có đạt dạng chuẩn 2 không? Giải thích. (1.5 điểm)
<Trích đề 2 thi Cuối kỳ Học kỳ 1 năm học 2018-2019>

Câu 5. Cho lược đồ quan hệ R(OPQSTUVWXY) có tập phụ thuộc hàm:

F = {OP → Q, OS → VW, PS → TU, O → X}


1. Phụ thuộc hàm OPS → Y có thuộc F+ không? Giải thích. (0.75 điểm)

Nguyễn Minh Cường 20520422


Xét bao đống OPS :
OPSF+=OPS ∪ Q (do OP->Q)=OPSQ ∪ VW ( do OS->VW)=OPSQVW ∪ TU ( do PS->TU)=
OPSQVWTU ∪ X ( do O->X)
=> Y không là con của OPSF+ ,vậy Phụ thuộc hàm OPS → Y không thuộc F+

2. Lược đồ quan hệ (R, F) có đạt dạng chuẩn 2 không? Giải thích. (1.25 điểm)
20521813 - Nguyễn Huỳnh Vương Quốc

- Tìm khóa của Q:


+ Tập nguồn N = {O, P, S}
+ Tập treo T = {Y}
Xét bao đóng tập hợp giữa tập treo và tập nguồn:
=> (N∪T)+ = (OPSY)+ = OPSYQVWTUX = R+
=> Khóa của R là OPSY
- Xét dạng chuẩn 2:
+ Xét phụ thuộc hàm O → X, ta thấy vế trái O ⊂ OPSY (OPSY là khóa) và vế phải
X là thuộc tính không khóa
=> Thuộc tính không khóa (X) không phụ thuộc đầy đủ vào khóa
=> Q không đạt dạng chuẩn 2

<Trích đề 1 thi Cuối kỳ Học kỳ 2 năm học 2020-2021>


BÀI TẬP THÊM PHẦN TRUY VẤN
Cho một phần lược đồ cơ sở dữ liệu “Quản lý tiêm chung vắc-xin” có cấu trúc như
sau:

KHACHHANG (MaKH, HoTen, NgSinh, DChi)

CONGTY (MaCTy, TenCTy, QuocGia, NamTL)

LOAIBENH (MaLB, TenLB, NamPH)

VACXIN (MaVX, TenVX, CongNgheSX, NamPM, MaLB, MaCTy, HQLS, HQTT, SoMui,
KC2Mui)

LICHSUTIEM (MaKH, MaVX, LanTiem, NgTiem)

I. CÂU HỎI TRUY VẤN (CHIẾU – CHỌN – KẾT 3 BẢNG)


1. Liệt kê các vắc xin (MaVX, TenVX) phòng ngừa bệnh có tên là ‘Covid-19’
của công ty có tên ‘ABC’ sản xuất

SELECT MAVX, TENVX


FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND TENLB = ‘COVID-19’
AND TENCTY = ‘ABC’
2. Liệt kê các công ty (MaCTy, TenCTy) sản xuất vắc xin ngừa bệnh có tên là
‘Covid-19’ theo công nghệ ‘Viral vector vaccine’

SELECT CTY.MACTY, TENCTY


FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND TENLB = ‘COVID-19’
AND CONGNGHESX = ‘VIRAL VECTOR VACCINE’

3. Liệt kê các khách hàng (MaKH, HoTen) trong năm 2021 đã tiêm các vắc xin
được sản xuất theo công nghệ ‘Viral vector vaccine’.

SELECT KH.MAKH, HOTEN


FROM VACXIN VX, LICHSUTIEM LST, KHACHHANG KH
WHERE KH.MAKH = LST.MAKH
AND VX.MAVX = LST.MAVX
AND YEAR(NGTIEM) = 2021
AND CONGNGHESX = ‘VIRAL VECTOR VACCINE’

4. Liệt kê các loại bệnh (MaLB, TenLB) đã có vắc xin phòng ngừa do các
công ty của nước có tên là ‘Hoa Ky’ sản xuất theo công nghệ ‘Viral vector
vaccine’

SELECT LB.MALB, TENLB


FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND CONGNGHESX = ‘VIRAL VECTOR VACCINE’

II. CÂU HỎI TRUY VẤN (GIAO, TRỪ)


1. Cho biết thông tin khách hàng (MaKH, HoTen) đã tiêm cả 2 vắc xin có tên
là ‘Quai bi B’ và ‘Covid-19 A’ trong năm 2021.
Cách 1:
SELECT KH.MAKH, HOTEN
FROM VACXIN VX, LICHSUTIEM LST, KHACHHANG KH
WHERE KH.MAKH = LST.MAKH
AND VX.MAVX = LST.MAVX
AND YEAR(NGTIEM) = 2021
AND TENVX = ‘Quai bi B’
INTERSECT
SELECT KH.MAKH, HOTEN
FROM VACXIN VX, LICHSUTIEM LST, KHACHHANG KH
WHERE KH.MAKH = LST.MAKH
AND VX.MAVX = LST.MAVX
AND YEAR(NGTIEM) = 2021
AND TENVX = ‘Covid-19 A’

Cách 2:
SELECT KH.MAKH, HOTEN
FROM VACXIN VX, LICHSUTIEM LST, KHACHHANG KH
WHERE KH.MAKH = LST.MAKH
AND VX.MAVX = LST.MAVX
AND YEAR(NGTIEM) = 2021
AND TENVX = ‘Quai bi B’
AND KH.MAKH IN (SELECT MAKH
FROM VACXIN VX, LICHSUTIEM LST
WHERE VX.MAVX = LST.MAVX
AND YEAR(NGTIEM) = 2021
AND TENVX = ‘Covid-19 A’)

Cách 3: dùng EXISTS


2. Cho biết thông tin các công ty (MaCTy, TenCTy) của ‘Hoa Ky’ có sản xuất
cả 2 vắc xin ngừa bệnh có tên là ‘Soi’ và bệnh có tên là ‘Uon van’
CÁCH 1:
SELECT CTY.MACTY, TENCTY
FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND TENLB = ‘SOI’
INTERSECT
SELECT CTY.MACTY, TENCTY
FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND TENLB = ‘UON VAN’

CÁCH 2: DÙNG IN
SELECT CTY.MACTY, TENCTY
FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND TENLB = ‘SOI’
AND CTY.MACTY IN (SELECT MACTY
FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND TENLB = ‘UON VAN’

CÁCH 3: DÙNG EXISTS


3. Cho biết thông tin khách hàng (MaKH, HoTen) sinh năm 2002 chưa tiêm
bất kỳ mũi vắc xin nào ngừa bệnh có tên ‘Covid-19’
CÁCH 1:
SELECT MAKH, HOTEN
FROM KHACHHANG
WHERE YEAR(NGSINH) = 2002
EXCEPT
SELECT KH.MAKH, HOTEN
FROM KHACHHANG KH, LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE KH.MAKH = LST.MAKH
AND LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’

CÁCH 2: DÙNG NOT IN


SELECT MAKH, HOTEN
FROM KHACHHANG
WHERE YEAR(NGSINH) = 2002
AND MAKH NOT IN (SELECT MAKH
FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’)

CÁCH 3: DÙNG NOT EXISTS


4. Cho biết thông tin loại bệnh (MaLB, TenLB) được phát hiện trước năm
2020 chưa có vắc xin phòng ngừa nào do công ty của nước ‘Hoa Ky’ sản xuất
theo công nghệ ‘Viral vector vaccine’
CÁCH 1:
SELECT MALB, TENLB
FROM LOAIBENH
WHERE NAMPH <2020
EXCEPT
SELECT LB.MALB, TENLB
FROM VACXIN VX, LOAIBENH LB, CONGTY CTY
WHERE VX.MALB = LB.MALB
AND CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND CONGNGHESX = ‘VIRAL VECTOR VACCINE’

CÁCH 2: DÙNG NOT IN


SELECT MALB, TENLB
FROM LOAIBENH
WHERE NAMPH <2020
AND MALB NOT IN (SELECT MALB
FROM VACXIN VX, CONGTY CTY
WHERE CTY.MACTY = VX.MACTY
AND QUOCGIA = ‘HOA KY’
AND CONGNGHESX = ‘VIRAL VECTOR VACCINE’)

CÁCH 3: DÙNG NOT EXISTS


5. Cho biết thông tin khách hàng (MaKH) đã tiêm mũi 1 vaccine ngừa bệnh
có tên là ‘Covid-19’ nhưng chưa tiêm mũi 2 vaccine ngừa bệnh này
CÁCH 1:
SELECT MAKH
FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 1
EXCEPT
SELECT MAKH
FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 2

CÁCH 2: NOT IN
SELECT MAKH
FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 1
AND MAKH NOT IN (SELECT MAKH
FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 2)

CÁCH 3: NOT EXISTS

III. CÂU HỎI TRUY VẤN (CHIA)


1. Cho biết thông tin khách hàng (MaKH, HoTen) đã tiêm ít nhất một mũi của
tất cả các vắc xin do công ty có tên là ‘ABC’ sản xuất

SELECT MAKH, HOTEN


FROM KHACHHANG
WHERE NOT EXISTS (SELECT *
FROM VACXIN, CONGTY
WHERE VACXIN.MACTY = CONGTY.MACTY
AND TENCTY = ‘ABC’
AND NOT EXISTS (SELECT *
FROM LICHSUTIEM
WHERE LICHSUTIEM.MAKH = KHACHHANG.MAKH
AND LICHSUTIEM.MAVX = VACXIN.MAVX))

2. Cho biết thông tin vắc xin (MaVX, TenVX) phòng ngừa bệnh có tên là
‘Covid-19’ đã được tất cả các khách hàng sinh năm 2003 tiêm ít nhất một mũi.

SELECT MAVX, TENVX


FROM VACXIN, LOAIBENH
WHERE VACXIN.MALB = LOAIBENH.MALB
AND TENLB = ‘COVID-19’
AND NOT EXISTS (SELECT *
FROM KHACHHANG
WHERE YEAR(NGSINH) = 2003
AND NOT EXISTS (SELECT *
FROM LICHSUTIEM
WHERE LICHSUTIEM.MAKH = KHACHHANG.MAKH
AND LICHSUTIEM.MAVX = VACXIN.MAVX))

3. Cho biết thông tin khách hàng (MaKH, HoTen) đã tiêm ít nhất một mũi tất
cả các vắc xin do công ty có tên ‘BIT’ sản xuất theo công nghệ ‘Viral vector
vaccine’
SELECT MAKH, HOTEN
FROM KHACHHANG
WHERE NOT EXISTS (SELECT *
FROM VACXIN, CONGTY
WHERE VACXIN.MACTY = CONGTY.MACTY
AND TENCTY = ‘BIT’
AND CONNGHESX = ‘VIRAL VECTOR VACCINE’
AND NOT EXISTS (SELECT *
FROM LICHSUTIEM
WHERE LICHSUTIEM.MAKH =
KHACHHANG.MAKH
AND LICHSUTIEM.MAVX = VACXIN.MAVX))

CÁC CÂU PHÉP CHIA CÓ THỂ SỬ DỤNG CÁCH TÍNH TOÁN GOM NHÓM CÓ
ĐIỀU KIỆN ĐỂ GIẢI

IV. CÂU HỎI TRUY VẤN TÍNH TOÁN GOM NHÓM


1. Với mỗi quốc gia và mỗi công nghệ sản xuất, tính số lượng vắc xin do các
công ty sản xuất. Thông tin hiển thị: QuocGia, CongNgheSX, SLVacXin

SELECT QUOCGIA, CONGNGHESX, COUNT(MAVX) SLVACXIN


FROM VACXIN, CONGTY
WHERE VACXIN.MACTY = CONGTY.MACTY
GROUP BY QUOCGIA, CONGNGHESX

2. Với mỗi loại bệnh, tính số lượng vắc xin được sản xuất để phòng ngừa
loại bệnh đó. Thông tin hiển thị: MaLB, TenLB, SLVacXin

SELECT LB.MALB, TENLB, COUNT(MAVX) SLVACXIN


FROM VACXIN, LOAIBENH
WHERE VACXIN.MALB = LOAIBENH.MALB
GROUP BY LB.MALB, TENLB

3. Với mỗi khách hàng, tính số lượt tiêm chủng của khách hàng đó. Thông
tin hiển thị: MaKH, HoTen, SoLuotTiem
SELECT KH.MAH, HOTEN, COUNT(MAVX) SOLUOTTIEM
FROM KHACHHANG KH, LICHSUTIEM LST
WHERE KH.MAKH = LST.MAKH
GROUP BY KH.MAH, HOTEN

V. CÂU HỎI TRUY VẤN TÍNH TOÁN GOM NHÓM CÓ ĐIỀU KIỆN
1. Cho biết thông tin loại bệnh có vắc-xin do các công ty có quốc gia là ‘Hoa
Ky’ sản xuất nhiều nhất. Thông tin hiển thị bao gồm: MaLB, TenLB, SLVX

SELECT LB.MALB, TENLB, COUNT(MAVX) SLVX


FROM LOAIBENH LB, VACXIN VX, CONGTY CTY
WHERE LB.MALB = VX.MALB
AND VX.MACTY = CTY.MACTY
AND QUOCGIA = ‘HOA KY’
GROUP BY LB.MALB, TENLB
HAVING COUNT (MAVX) >= ALL (SELECT COUNT(MAVX)
FROM VACXIN VX, CONGTY CTY
WHERE MACTY = CTY.MACTY
AND QUOCGIA = ‘HOA KY’
GROUP BY MALB)

SELECT TOP 1 WITH TIES LB.MALB, TENLB, COUNT(MAVX) SLVX


FROM LOAIBENH LB, VACXIN VX, CONGTY CTY
WHERE LB.MALB = VX.MALB
AND VX.MACTY = CTY.MACTY
AND QUOCGIA = ‘HOA KY’
GROUP BY LB.MALB, TENLB
ORDER BY COUNT(MAVX) DESC

2. Cho biết thông tin vắc-xin phòng bệnh có tên là “Covid-19” được khách
hàng lựa chọn tiêm mũi một nhiều nhất. Thông tin hiển thị bao gồm: MaVX,
TenVX, SLKH

SELECT VX.MAVX, TENVX, COUNT(MAKH) SLVX


FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 1
GROUP BY VX.MAVX, TENVX
HAVING COUNT (MAKH) >= ALL (SELECT COUNT(MAKH)
FROM VACXIN VX, LOAIBENH LB
WHERE VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 1
GROUP BY MAVX)

SELECT TOP1 WITH TIES VX.MAVX, TENVX, COUNT(MAKH) SLVX


FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND TENLB = ‘COVID-19’
AND LANTIEM = 1
GROUP BY VX.MAVX, TENVX
ORDER BY COUNT(MAKH) DESC

3. Cho biết thông tin loại bệnh được khách hàng lựa chọn tiêm mũi một
nhiều nhất trong năm 2021. Thông tin hiển thị bao gồm: MaLB, TenLB, SLKH

SELECT LB.MALB, TENLB, COUNT(MAKH) SLVX


FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND YEAR(NGTIEM) = 2021
GROUP BY LB.MALB, TENLB
HAVING COUNT (MAKH) >= ALL (SELECT COUNT(MAKH)
FROM LICHSUTIEM LST, VACXIN VX
WHERE VX LST.MAVX = VX.MAVX
AND YEAR(NGTIEM) = 2021
GROUP BY MALB)

SELECT TOP 1 WITH TIES LB.MALB, TENLB, COUNT(MAKH) SLVX


FROM LICHSUTIEM LST, VACXIN VX, LOAIBENH LB
WHERE LST.MAVX = VX.MAVX
AND VX.MALB = LB.MALB
AND YEAR(NGTIEM) = 2021
GROUP BY LB.MALB, TENLB
ORDER BY COUNT(MAKH) DESC

You might also like