Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM TP,HCM

KHOA TOÁN – TIN HỌC

BÀI KIỂM TRA ÔN THI TỐT NGHIỆP


(Cơ sở dữ liệu)

***** Được phép sử dụng tài liệu*****


Thời gian thi: 90 phút

Cho lược đồ CSDL “Quản lý đăng ký học chuyên đề” như sau:
• SINHVIEN (MASV, HOTEN, PHAI, NGAYSINH, DCHI, MANGANH)
Diễn giải: Mỗi sinh viên có một mã số duy nhất (MASV) để phân biệt với sinh viên khác, một họ
tên (HOTEN), thuộc một phái (PHAI), có một ngày sinh (NGAYSINH), một địa chỉ (DCHI) và học
một ngành duy nhất (MANG)
• NGANH (MANGANH, TENNGANH, SOCD, TSSV)
Diễn giải: Mỗi ngành có một mã số duy nhất (MANGANH) để phân biệt với ngành khác, một tên
ngành (TENNGANH), SOCD cho biết số chuyên đề mà một sinh viên theo học ngành có mã là
MANGANH phải học. TSSV cho biết tổng số sinh viên đã từng theo học ngành này.
• CHUYENDE (MACD, TENCD, SOSVTD)
Diễn giải: Mỗi chuyên đề có mã duy nhất (MACD), một tên duy nhất (TENCD). SOSVTD cho biết
số sinh viên tối đa có thể chấp nhận được mỗi khi có một lớp mở cho chuyên đề có mã là MACD
• CD_NGANH (MACD, MANGANH)
Diễn giải: Mỗi chuyên đề có thể được học bởi nhiều ngành, một ngành phải học nhiều chuyên đề.
• CD_MO (MACD, NAM, HOCKY)
Diễn giải: Mỗi bộ của quan hệ trên thể hiện một chuyên đề được mở ra trong một học kỳ của một
năm.
• DANGKY (MASV, MACD, NAM, HOCKY)
Diễn giải: Mỗi bộ của quan hệ trên thể hiện việc đăng ký học một chuyên đề đã được mở vào
một học kỳ trong một năm của một sinh viên.
Câu 1:
a. Hãy xác định khóa chính của các lược đồ quan hệ trên
b. Hãy xác định khóa ngoại của các lược đồ quan hệ trên
c. Vẽ diagram biểu diễn lược đồ CSDL trên
Câu 2: Với mỗi loại ràng buộc miền giá trị, ràng buộc liên bộ, ràng buộc liên thuộc tính
hãy liệt kê một ràng buộc toàn vẹn. Với mỗi ràng buộc nêu rõ ràng buộc thuộc loại nào,
viết phát biểu, biểu diễn hình thức, bối cảnh và bảng tầm ảnh hưởng tương ứng.
Câu 3:
Hãy viết các câu truy vấn sau bằng ngôn ngữ đại số quan hệ
a. Liệt kê danh sách chuyên đề (MACD, TENCD, SOSVTD) cần phải học của sinh viên
ngành công nghệ phần mềm (TENNGANH = “CÔNG NGHỆ PHẦN MỀM”)

1
b. Liệt kê danh sách sinh viên (MASV, HOTEN, PHAI, NGAYSINH) học ngành “CNPM”
(MANGANH = “CNPM”) có đăng ký học “Chuyên đề ORACLE” (TENCD = “Chuyên đề
Oracle”) vào học kỳ 1 năm 2006.
c. Liệt kê danh sách tên chuyên đề (TENCD) và số lần được mở tương ứng theo từng ngành
(TENNGANH)
Câu 4:
Hãy viết các câu truy vấn sau bằng ngôn ngữ SQL
a. Liệt kê danh sách chuyên đề (MACD, TENCD, SOSVTD) cần phải học của sinh viên
ngành công nghệ phần mềm (TENNGANH = “CÔNG NGHỆ PHẦN MỀM”)
b. Liệt kê danh sách sinh viên (MASV, HOTEN, PHAI, NGAYSINH) học ngành “CNPM”
(MANGANH = “CNPM”) có đăng ký học “Chuyên đề ORACLE” (TENCD = “Chuyên đề
Oracle”) vào học kỳ 1 năm 2006.
c. Với từng ngành học (MANGANH, TENNGANH), liệt kê danh sách tên chuyên đề (TENCD)
có số lần được mở lớn hơn 3 lần

2
Đáp án

Câu 1:
a. Hãy xác định khóa chính của các lược đồ quan hệ trên
o SINHVIEN (MASV, HOTEN, PHAI, NGAYSINH, DCHI, MANGANH)
o NGANH (MANGANH, TENNGANH, SOCD, TSSV)
o CHUYENDE (MACD, TENCD, SOSVTD)
o CD_NGANH (MACD, MANGANH)
o CD_MO (MACD, NAM, HOCKY)
o DANGKY (MASV, MACD, NAM, HOCKY)
b. Hãy xác định khóa ngoại của các lược đồ quan hệ trên
o SINHVIEN [ MANGANH ] ⊆ NGANH [ MANGANH ]
o CD_NGANH [ MANGANH ] ⊆ NGANH [ MANGANH ]
o CD_NGANH [ MACD ] ⊆ CHUYENDE [ MACD ]
o CD_MO [ MACD ] ⊆ CHUYENDE [ MACD ]
o DANGKY [ MACD] ⊆ CHUYENDE [ MACD ]
o DANGKY [ MASV] ⊆ SINHVIEN [ MASV ]
o DANGKY [ MACD, NAM, HOCKY ] ⊆ CD_MO [ MACD, NAM, HOCKY ]
c. Vẽ diagram biểu diễn lược đồ CSDL trên

SINHVIEN NGANH
MANGANH = MANGANH
MASV MANGANH

MASV = MASV

MANGANH = MANGANH
DANGKY
MASV
MACD
NAM
HOCKY CD_NGANH
MACD
MACD = MACD MANGANH

MACD = MACD
NAM = NAM
HOCKY = HOCKY
MACD = MACD

CD_MO
CHUYENDE
MACD = MACD
MACD
MACD
NAM
HOCKY

3
Câu 3: Hãy viết các câu truy vấn sau bằng ngôn ngữ đại số quan hệ
a. Liệt kê danh sách chuyên đề (MACD, TENCD, SOSVTD) cần phải học của sinh viên
ngành công nghệ phần mềm (TENNGANH = “CÔNG NGHỆ PHẦN MỀM”)

- Chiếu:
o MACD, TENCD, SOSVTD (thuộc quan hệ CHUYENDE)
- Chọn:
o TENNGANH = ‘CÔNG NGHỆ PHẦN MỀM’
- Quan hệ liên quan:
o NGANH, CD_NGANH, CHUYENDE
o Điều kiện kết:

NGANH CD_NGANH CHUYENDE


MANGANH = MANGANH MACD = MACD

∏ CHUYENDE.MACD, TENCD, SOSVTD ( σ


TENNGANH = ‘CÔNG NGHỆ PHẦN MỀM’

(NGANH NGANH.MANGANH = CD_NGANH.MANGANH CD_NGANH

CHUYENDE.MACD = CD_NGANH.MACD CHUYENDE ))

b. Liệt kê danh sách sinh viên (MASV, HOTEN, PHAI, NGAYSINH) học ngành “CNPM”
(MANGANH = “CNPM”) có đăng ký học “Chuyên đề ORACLE” (TENCD = “Chuyên đề
Oracle”) vào học kỳ 1 năm 2006.

- Chiếu:
o MASV, HOTEN, PHAI, NGAYSINH (thuộc quan hệ SINHVIEN)
- Chọn:
o MANGANH = ‘CNPM’ (thuộc quan hệ SINHVIEN)
o TENCD = ‘Chuyên đề ORACLE’ (thuộc quan hệ CHUYENDE)
o NAM = 2006 (thuộc quan hệ DANGKY)
o HOCKY = 1 (thuộc quan hệ DANGKY)
- Quan hệ liên quan:
o SINHVIEN, CHUYENDE, DANGKY

4
o Điều kiện kết:

SINHVIEN DANGKY CHUYENDE


MASV = MASV MACD = MACD

∏SINHVIEN.MASV, HOTEN, PHAI, NGAYSINH (σ MANGANH = ‘CNPM’ ∧ TENCD = ‘CHUYÊN ĐỀ

ORACLE’ ∧ NAM = 2006 ∧ HOCKY = 1

(SINHVIEN SINHVIEN.MASV = DANGKY.MASV DANGKY

CHUYENDE.MACD = DANGKY.MACD CHUYENDE ))

c. Liệt kê danh sách tên chuyên đề (TENCD) và số lần được mở tương ứng theo từng ngành
(TENNGANH)
- Chiếu:
o TENNGANH (thuộc quan hệ NGANH)
o TENCD (thuộc quan hệ CHUYENDE)
o COUNT(MACD) (thuộc quan hệ CD_MO)
- Quan hệ liên quan:
o NGANH, CHUYENDE, CD_MO, CD_NGANH
o Điều kiện kết:
CD_NGANH NGANH
MANGANH = MANGANH

MACD = MACD

CHUYENDE CD_MO
MACD = MACD

TENNGANH, TENCD I COUNT (CD_MO.MACD) (


NGANH NGANH.MANGANH = CD_NGANH.MANGANH CD_NGANH

CHUYENDE.MACD = CD_NGANH.MACD CHUYENDE

CD_MO.MACD = CHUYENDE.MACD CD_MO)

5
Câu 4: Hãy viết các câu truy vấn sau bằng ngôn ngữ SQL
a. Liệt kê danh sách chuyên đề (MACD, TENCD, SOSVTD) cần phải học của sinh viên
ngành công nghệ phần mềm (TENNGANH = “CÔNG NGHỆ PHẦN MỀM”)

• ĐSQH

∏ CHUYENDE.MACD, TENCD, SOSVTD ( σ


TENNGANH = ‘CÔNG NGHỆ PHẦN MỀM’

(NGANH NGANH.MANGANH = CD_NGANH.MANGANH CD_NGANH

CHUYENDE.MACD = CD_NGANH.MACD CHUYENDE ))


• SQL
SELECT CD.MACD, TENCD, SOSVTD
FROM (NGANH AS N JOIN CD_NGANH AS CDN ON N.MANGANH = CDN.MANGANH)
JOIN CHUYENDE AS CD ON CD.MACD = CDN,MACD
WHERE TENNGANH = ‘CÔNG NGHỆ PHẦN MỀM’

b. Liệt kê danh sách sinh viên (MASV, HOTEN, PHAI, NGAYSINH) học ngành “CNPM”
(MANGANH = “CNPM”) có đăng ký học “Chuyên đề ORACLE” (TENCD = “Chuyên đề
Oracle”) vào học kỳ 1 năm 2006.

• ĐSQH

∏SINHVIEN.MASV, HOTEN, PHAI, NGAYSINH (σ MANGANH = ‘CNPM’ ∧ TENCD = ‘CHUYÊN ĐỀ

ORACLE’ ∧ NAM = 2006 ∧ HOCKY = 1

(SINHVIEN SINHVIEN.MASV = DANGKY.MASV DANGKY

CHUYENDE.MACD = DANGKY.MACD CHUYENDE ))

• SQL
SELECT SV.MASV, HOTEN, PHAI, NGAYSINH
FROM (SINHVIEN AS SV JOIN DANGKY AS DK ON SV.MASV = DK.MASV)
JOIN CHUYENDE AS CD ON CD.MACD = DK.MACD
WHERE MANGANH = ‘CNPM’ AND TENCD = ‘CHUYÊN ĐỀ ORACLE’ AND NAM = 2006
AND HOCKY = 1

6
c. Liệt kê danh sách tên chuyên đề (TENCD) và số lần được mở tương ứng theo từng ngành
(TENNGANH)

• ĐSQH

TENNGANH, TENCD I COUNT (CD_MO.MACD) (


NGANH NGANH.MANGANH = CD_NGANH.MANGANH CD_NGANH

CHUYENDE.MACD = CD_NGANH.MACD CHUYENDE

CD_MO.MACD = CHUYENDE.MACD CD_MO)

• SQL
SELECT TENNGANH, TENCD, COUNT (CDM.MACD)
FROM ((NGANH AS N JOIN CD_NGANH AS CDN ON N.MANGANH = CDN.MANGANH)
JOIN CHUYENDE AS CD ON CD.MACD = CDN.MACD)
JOIN CD_MO AS CDM ON CD.MACD = CDM.MACD
GROUP BY TENNGANH, TENCD

d. Với từng ngành học (MANGANH, TENNGANH), liệt kê danh sách tên chuyên đề (TENCD)
có số lần được mở lớn hơn 3
Tương tự câu c, chỉ thêm điều kiện số lần được mở > 3 ⇔ thêm điều kiện sau khi
gom nhóm (HAVING COUNT (CDM.MACD) > 3)

SELECT N.MANGANH, TENNGANH, TENCD, COUNT (CDM.MACD)


FROM ((NGANH AS N JOIN CD_NGANH AS CDN ON N.MANGANH = CDN.MANGANH)
JOIN CHUYENDE AS CD ON CD.MACD = CDN.MACD)
JOIN CD_MO AS CDM ON CD.MACD = CDM.MACD
GROUP BY N.MANGANH, TENNGANH, TENCD
HAVING COUNT (CDM.MACD) > 3

You might also like