Tải bản đầy đủ (.doc) (22 trang)

Ôn tập môn Cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (196.31 KB, 22 trang )

ÔN TẬP MÔN CƠ SỞ DỮ LIỆU
1.
-

Đại số tập hợp, đại số quan hệ
Phép hợp
Phép giao
Phép trừ
Phép chia
Phép tích đề các
Phép chiếu
Phép chọn
Phép kết nối.

2.
-

Ngôn ngữ SQL
Câu lệnh truy vấn đơn giản
Câu lệnh truy vấn từ nhiều bảng
Câu lệnh truy vấn có sử dụng các hàm, nhóm, sắp xếp.
Câu lệnh truy vấn lồng nhau

3.
-

Phụ thuộc hàm
Xác định các phụ thuộc hàm trong các cơ sở dữ liệu cụ thể.
Bao đóng của phụ thuộc hàm và hệ luật dẫn Amstrong
Xác định khoá của lược đồ quan hệ
Tối thiểu hoá tập phụ thuộc hàm



4.
-

Chuẩn hoá
Kiểm tra tính bảo toàn phụ thuộc hàm
Kiểm tra tính bảo toàn thông tin
Các dạng chuẩn
Chuẩn hoá

Một số bài tập
ôn tập thi tốt nghiệp cao đẳng K3
Môn Cơ sở dữ liệu
-----Chú ý: các bài tập này chỉ nhằm minh hoạ phần lý thuyết
Phần I. Đại số quan hệ và ngôn ngữ SQL
Bài 1. Cho các quan hệ:
R

A
B
C
S B
C
D
Q
a2
b2
c1
b2
c1

d1
a1
b2
c1
b2
c1
d2
a2
b3
c2
b1
c2
d3
Hãy thực hiện các phép toán đại số quan hệ sau:
a. δA=a2(R*S)
e. R x S
b. ΠABC(R*S*Q)
f. R * δB = b1(S)

D
d1
d2
d2

E
E1
E1
E2

F

f1
f2
f3


c. ΠBC(R) ∪ ΠBC(S)
d. ΠBC(R) ∩ ΠBC(S)

g. ΠB(δB=b2(R*S))
h. δD=d1(ΠBCD(S*Q))

Bài 2. Cho các quan hệ với lược đồ sau:
HH(HH#, TenHH, SoLuong, NgaySX,
ChungLoai, NSX#) và NSX (NSX#, TenNSX)
Trong đó:
HH#:
Mã hàng hoá.
TenHH: Tên hàng.
SoLuong:
Số Lượng.
NgaySX: Ngày sản xuất.
ChungLoai: Chủng loại hàng hoá.
NSX#:
Mã Nhà
sản xuất.
TenNSX:
Tên Nhà sản xuất.
Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:
a. Cho biết tên hàng, chủng loại của những mặt hàng có số lượng lớn hơn 50 và
sản xuất trước ngày 1/1/2000.

b. Cho biết mã hàng, tên nhà sản xuất của tất cả các mặt hàng.
c. Cho biết tên hàng do nhà sản xuất LG cung cấp.
Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:
d. Cho biết tổng số mặt hàng hiện có trong cơ sở dữ liệu.
Cho biết mã hàng, tên hàng của các mặt hàng có số lượng ít nhất.
Bài 3. Cho các quan hệ với lược đồ sau:CB(CB#, TenCB, SoNamCT, NgayVD,
DiaChi, CQ#) và CQ (CQ#, DCCQ)
Trong đó:
CB#:
Mã cán bộ.
TenCB: Tên cán bộ.
SoNamCT: Số năm công tác của cán bộ.
NgayVD: Ngày vào Đảng.
DiaChi:
Địa chỉ cán bộ.
CQ#:
Mã cơ quan của
cán bộ.
DCCQ:
Địa chỉ cơ quan của cán bộ.
Hãy biểu diễn các yêu cầu sau bằng cả biểu thức đại số quan hệ và câu hỏi SQL:
e. Cho biết tên cán bộ, số năm công tác của những cán bộ có địa chỉ là “Ha Tay”
có số năm công tác ít hơn 10.
f. Cho biết mã cán bộ, tên cán bộ và địa chỉ cơ quan của tất cả các cán bộ.
g. Cho biết tên những cán bộ có địa chỉ cơ quan là Hà Nam.
Hãy biểu diễn các yêu cầu sau bằng câu hỏi SQL:
h. Cho biết tổng số cán bộ hiện có trong cơ sở dữ liệu.
i. Cho biết mã cán bộ, tên cán bộ của các cán bộ có số năm công tác ít nhất nhất.
Phần II: Phụ thuộc hàm
Bài 1. Cho quan hệ R trên tập thuộc tính U = {A, B, C, D, E, G) và tập các

phụ thuộc hàm F = {AB→ C, AC→D, D→EG, G→B, A→D, CG→A}.
a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB → E



AD → BC.
b. Tính bao đóng {A}+ của tập thuộc tính {A}.
c. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của
F.
Bài 2. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F
= {A→C, AB→G, B→DE, G→H, GH→A }.
a. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm AB → H
và G→ C.
b. Tính bao đóng {G}+ của tập thuộc tính {G}.
Bài 3. Cho quan hệ R trên tập thuộc tính U = {G, H, I, K, L, M} và tập các phụ
thuộc hàm F = {GH→ L, I→M, L→K, HM→G, GK→I, H→L}.
d. Chứng minh rằng nếu R thoả mãn F thì R cũng thoả mãn các phụ thuộc hàm HI → G

GH → KM.
e. Tính bao đóng {G, H}+ của tập thuộc tính {G, H}.
f. Tập các phụ thuộc hàm F đã là tối thiểu chưa? Vì sao? Nếu chưa, tìm một phủ tối thiểu của
F.
Bài 4. Cho quan hệ R(U): U = {H, I, K, L, M, N} và tập phụ thuộc hàm F = {I →
LM, HI → K, K → N, KN→I}.
c. Tìm một khoá tối thiểu của quan hệ R.
d. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R 1(HIN); R2(HIK),
R3(ILM).
e. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.
Bài 5. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F
= {A→C, AB→G, B→DE, G→H, GH→A }.

f. Tìm một khoá tối thiểu của quan hệ R.
g. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R 1(AC); R2(BDE);
R3(ABGH).
h. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.
6. Cho quan hệ R(U): U = { A, B, C, D, E, G, H } và tập phụ thuộc hàm F =
{A→C, AB→G, B→DE, G→H, GH→A }.
i. Kiểm tra tính mất mát thông tin khi tách R thành các quan hệ : R 1(AC); R2(BDE);
R3(ABGH).
j. Chuẩn hoá quan hệ R về dạng chuẩn 3NF.
Bài tập
Bài tập 1
Cho quan hệ
R1

A
a1
a2
a2
a3
a1

B
b1
b1
b2
b3
b2

C
1

1
2
4
1

R2

B
b1
b2
b3
b4

C
1
1
4
2

D
2
3
5
1


Hãy xác định kết quả của các phép toán sau:
1. R1 x R2
2. R1 * R2
3. σ c>=2 (R1* R2)

4. ΠBC (R1) ∩ ΠBC (R2)
5. ΠBC (R1) ∪ ΠBC (R2)
6. ΠBC (R1)- ΠBC (R2)
7. R1÷ ΠBC ( σc=1 (R2))
Bài tập 2
Cho CSDL EMPLOYMENT về quản lý nhân viên của một công ty bao gồm quan hệ
EMPLOYEE và các quan hệ khác DEPARTMENT, JOBS và EMPLHIST. Quan hệ
DEPARTMENT (phòng, ban) định nghĩa trên các thuộc tính: DeptNo (Mã phòng),
DeptName (Tên phòng), Loc (Địa điểm), Mgr (Mã NV phụ trách phòng), Exp_budg
(Ngân sách | kinh phí hoạt động), Rev_budg (Doanh thu) với các bộ giá trị sau:
DeptNo

DeptName

Loc

Mgr Exp_bud Rev_bud
g
g

10

Accounting Dallas

200 10.000

30

Research


San
Fransisco

105 125.000

40

Sales

Boston

109 280.000 800.000

50

Manufacturi Houston
ng

210 130.000

60

Shipping

215 90.000

Houston

Và quan hệ JOBS (các chức danh công việc) định nghĩa trên các thuọc tính: Job (Mã
chức danh), JobName (Tên gọi chức danh), MinSalary (mức lương tối thiểu), MaxSalary

(mức lương tối đa) MgrFlag (Có thể tiến cử làm lãnh đạo ?) với các bộ giá trị sau:
Job

JobName

MinSala
ry

MaxSalar
y

MgrFla
g

Mngr

Manager

2.500

5.500

Y

Clrk

Clerk

950


1.800

N

Slsa

Sales Assist

950

2.000

N

Amgr

Assist
Manager

1.500

3.000

Y


Drvr

Driver


1.050

1.700

N

Slsm

Salesman

750

5.000

N

Spvr

Supervisor

1.500

2.000

Y

Anlt

Analyst


1.300

3.500

N

Secy

Secretary

800

2.200

N

Newh

New Hire

500

800

N

Và cuối cùng là quan hệ EMPLHIST về quá trình thay đổi lương, phòng làm việc,
thăng quan tiến chức của các nhân viên định nghĩa trên các thuộc tính EmpNo (Mã số
nhân viên), Seq (Số thứ tự lần thay đổi), Date_beg, Date_end, Salary, Frjob, Tojob,
Frdept, Todept, Promo với các bộ giá trị được cho như sau:

EmpNo

Seq Date_Beg

Date_End Salary FrJob ToJob Promo FrDept ToDept

101

1

01/03/81

30/06/81

800

Newh Slsa

N

101

2

01/07/81

30/06/82

1125


Slsa

Slsa

N

40

40

101

3

01/07/82

1900

Slsa

Slsm Y

40

40

101

4


01/07/84

2500

Slsm

Slsm N

40

40

109

1

01/04/80

30/09/80

725

Newh Slsa

109

2

01/10/80


30/06/82

1500

Slsa

Slsm Y

40

40

109

3

01/07/82

31/03/83

2600

Slsm

Amgr Y

40

40


109

4

01/04/83

30/06/85

3200

Amgr Mngr Y

40

40

109

5

01/07/85

3800

Mngr

40

40


220

1

01/05/82

31/08/82

1900

Newh Mngr N

220

2

01/09/82

30/06/83

1600

Mngr

Slsm N

60

40


220

3

01/07/83

31/12/83

2200

Slsm

Slsm N

40

40

220

4

01/01/84

30/06/84

3400

Slsm


Slsm N

40

40

220

5

01/07/84

4250

Slsm

Slsm N

40

40

30/06/84

40

N

Mngr N


40

60

Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ đại số quan hệ:
Câu 1: Cho biết Mã phòng (DeptNo), Tên phòng (DeptName) và ngân sách hoạt động
(Exp_budg) của các phòng ban.
Câu 2: Cho Tên phòng ban (Deptname) và địa điểm trụ sở (Loc) của các phòng ban.


Câu 3: Cho tên chức danh công việc (Jobname) và mức lương tối thiểu (MinSalary)
và tối đa (MaxSalary) của từng chức danh công việc.
Câu 4: Cho danh sách các phòng ban ở thành phố Houston.
Câu 5: Cho danh sách các chức danh công việc có mức lương tối thiểu từ 1.500$ trở
lên.
Câu 6: Cho Tên phòng ban (DeptName), Mã số người lãnh đạo (Mgr), Ngân sách
(Exp_budg) và Doanh thu (Rev_Budg) của các phòng có Doanh thu.
Bài tập 3: Cho cơ sở dữ liệu dùng để quản lý các chuyến đi của một công ty du lịch
1. DIADIEM(MADD, TENDD)
Mỗi một địa điểm có một mã số( MADD) dùng để phân biệt với các địa điểm khác và có
một tên (TENDD)
2. XE(BIENSO, KHTD)
Mỗi một xe có một biển số duy nhất(BIENSO) để phân biệt với các xe khác và có số
lượng khách tối đa mà xe đó có thể chở(KHTD)
3. HUONGDV(MAHDV, HTHDV, DCHDV)
Mỗi một hướng dẫn viên của công ty có một mã số duy nhất để phân biệt(MAHDV), có
họ tên(HTHDV) và địa chỉ của hướng dẫn viên(DCHDV)
4. CHUYENDI(MACD, TENCD, NGKH, NGKT, KHDK)
Mỗi một chuyến đi có một mã số để phân biệt(MACD), thông tin về chuyến đi bao gồm:
tên chuyến đi(TENCD), ngày khởi hành(NGKH), ngày kết thúc(NGKT) và số khách dự

kiến(KHDK).
5. CTIETCD(MACD, MADD, SNLUU)
Chi tiết của chuyến đi (MACD) là các địa điểm mà chuyến đi đó đi qua (MADD),
(SNLUU) là số ngày lưu lại tại điểm du lịch đó.
6.HUONGDAN(MACD, MAHDV)
Ghi nhận các hướng dẫn viên(MAHDV) tham gia hướng dẫn cho chuyến đi (MACD)
7. KHACH(MACD, HTKH, TUOI, DCKH, DTKH)
Ghi nhận thông tin về khách hàng đăng ký vào chuyến đi(MACD), bao gồm: họ
tên(HTKH), tuổi (TUOIKH), địa chỉ(DCKH) và điện thoại liên lạc của khách(DTKH)
8. XEPV(MACD, BIENSO)
Ghi nhận các xe (BIENSO) phục vụ cho chuyến đi (MACD)
Dùng câu lệnh SQL để thực hiện các yêu cầu sau:


1. Tạo tất cả các bảng trên.
2. Cho biết danh sách các hướng dẫn viên của công ty.
3. Liệt kê đầy đủ thông tin về các điểm du lịch liên kết với công ty.
4. Cho biết đầy đủ thông tin về các địa điểm mà chuyến đi mã số CD2000 đi qua.
5. Liệt kê các lữ khách của chuyến đi CD2000.
6. Cho biết số lượng khách của chuyến đi CD1999.
7. Chuyến đi nào có số lượng khách lớn hơn số lượng dự kiến.
8. Cho biết tổng số lượng khách của tất cả các chuyến đi có ngày khởi hành trong tháng
12/2001.
9. Cho biết số ngày lưu lại trung bình, số ngày lưu lại lớn nhất, nhỏ nhất qua các điểm du
lịch của chuyến đi CD2000.
10. Cho biết số lượng xe phụ vụ cho chuyến đi CD2000.
11. Điểm du lịch nào(Mã số, tên) có số ngày lưu lại lớn nhất của chuyến đi CD2000.
12. Điểm du lịch nào(Mã số, tên) có số ngày lưu lại lớn hơn số ngày lưu lại trung bình
qua các điểm của chuyến đi CD2000.
13. Điểm du lịch SaPa(mã số SP) có bao nhiêu chuyến đi ghé qua và khai thác được bao

nhiêu ngày(tổng số ngày phục vụ).
14. Liệt kê 3 điểm du lịch đầu tiên của chuyến đi CD2000 có số ngày lưu lại lớn nhất.
15. Liệt kê 3 điểm du lịch đầu tiên của chuyến đi CD2000 có số ngày lưu lại ít nhất.
16. Liệt kê các điểm du lịch của chuyến đi CD2000 ngoại trừ điểm có số ngày lưu ít nhất
17.Cho biết số lượng các điểm du lịch, tổng số ngày lưu lại tại các địa điểm, số lượng các
hướng dẫn viên, số lượng xe phụ vụ cho từng chuyến đi có ngày khởi hành trong tháng
12/2000.
18. Chuyến đi nào (đầy đủ thông tin) có số lượng khách nhiều nhất.
19. liệt kê các chuyến đi, ngoại trừ chuyến đi điều động xe ít nhất.
20. liệt kê các chuyến đi (đầy đủ thông tin) cùng với số lượng các địa điểm mà nnó ghé
qua ngoại trừ chuyến đi ghé ít điểm du lịch nhất.
21. Hướng dẫn viên nào chưa từng tham gia hướng dẫn.
22. Cho biết các hướng dẫn viên hướng dẫn cùng lúc từ hai chuyến trở lên.
23. Cho biết chuyến đi nào mà một hướng dẫn viên hướng dẫn trên 20 khách.


24. Cho biết tất cả các địa điểm cùng với các chuyến đi ghé qua nó nếu có.
25. Điểm du lịch nào mà tất cả các chuyến đi có ngày khởi hành trong năm 2000 đều ghé
qua.
26. Hướng dẫn viên nào có tham gia vào tất cả các chuyến đi từ 20 khách trở lên.
27.Chuyến đi nào đã đi ghé qua tất cả các điểm du lịch.
28. Trong năm 2000 điểm du lịch nào đón nhiều khách nhất.
Bài tập 4:
Xét CSDL quản lý công chức viên chức CCVC, gồm các bảng ĐƠN-VỊ, LOẠI-ĐVỊ,
NGẠCH-CBVC, NGẠCH-BẬC-LƯƠNG và CBVC ở chương 2. Hãy viết các câu lệnh
truy vấn thông tin cho các câu hỏi sau đây:
1. Cho danh sách CBVC theo thứ tự Alphabet của tên của các CBVC.
2. Cho danh sách CBVC có hệ số lương từ 3.0 trở lên.
3. Cho biết tổng hệ số lương của từng đơn vị.
4. Cho danh sách CBVC thuộc các đơn vị mà tên có chữ "phòng".

5. Cho danh sách CBVC thuộc các đơn vị có tên loại hình tổ chức là "hành
chánh"
6. Cho danh sách CBVC thuộc ngạch "cán sự" có bậc 7 trở lên, hoặc những
người có hệ số lương lơn hơn 3.06
7. Cho danh sách CBVC (mà) có thời hạn xếp lương tính đến cuối năm 1998
là 3 năm trở lên đối với các ngạch chuyên viên và chuyên viên chính; hoặc 2 năm
trở lên đối với các ngạch còn lại. (Đây là danh sách CBVC đến hạn nâng lương
trong năm 1998).
8. Cho danh sách các CBVC có hệ số lương cao hơn hệ số lương của những
người thuộc ngạch "cán sự".
Bài tập 5: (Gợi ý đáp án)
Cho lược đồ CSDL sau dùng để quản lý việc học tập của sinh viên
1. KHOA(MAKH, VPKH)
Mỗi khoa có 1 mã số phân biệt (MAKH), ta biết được vị trí của văn phòng khoa.
2. LOP(MALOP, MAKH)
Mỗi lớp có 1 mã số để phân biệt (MALOP) thuộc duy nhất một khoa nào đó
(MAKH).
3. SINHVIEN(MASV, HSSV, TENSV, NSSV, DCSV,LOPTR, MALOP)
Mỗi sinh viên có một mã số để phân biệt với các sinh viên khác (MASV), thông
tin của từng sinh viên là họ và dệm (HOSV), tên (TENSV), năm sinh(NSSV), địa
chỉ (DCSV), có phải là lớp trưởng không (LOPTR) và thuộc một lớp duy nhất nào
đó (MALOP)
4. MONHOC(MAMH, TENMH, LT, TH)
Mỗi môn học có một mã số duy nhất (MAMH), có một tên (TENMH), số tiết lý
thuyết (LT), số tiết thực hành (TH)


5. CTHOC(MALOP, HK, MAMH)
Mỗi lớp học (MALOP) trong từng học kỳ (HK) sẽ có một số môn học (MAMH)
được giảng dạy cho lớp đó.

6. DIEMSV(MASV, MAMH, LAN, DIEM)
Ghi nhận điểm của các môn học (MAMH) ở lần thi nào (LAN), của sinh
viên(MASV).
Yêu cầu: Viết câu lệnh SQL để thực hiện yêu cầu sau:
1. Cho biết danh sách lớp
SELECT *
FROM [LOP]
2. Cho biết danh sách sinh viên lớp TH1.
SELECT *
FROM SINHVIEN
WHERE MALOP=’TH1’
3. Cho biết danh sách SV khoa CNTT
SELECT SINHVIEN.*
FROM SINHVIEN, LOP
WHERE SINHVIEN.MALO =LOP.MALOP AND MAKHOA= ‘CNTT’
4. Cho biết chương trình học của lớp TH1
SELECT *
FROM CTHOC
WHERE MALOP=’TH1’
5. Điểm lần 1 môn CSDL của SV lớp TH1.
SELECT DIEM
FROM DIEMSV, MONHOC, SINHVIEN
WHERE DIEMSV.MAMH = MONHOC.MAMH
AND DIEMSV.MASV = SINHVIEN.MASV
AND TENMH = ‘CTDL’ AND MALOP = ‘TH1’ AND LAN=’1’
6. Điểm trung bình lần 1 môn CTDL của lớp TH1.
SELECT AVG(DIEM)
FROM DIEMSV, MONHOC, SINHVIEN
WHERE DIEMSV.MAMH = MONHOC.MAMH
AND DIEMSV.MASV = SINHVIEN.MASV

AND TENMH = ‘CTDL’ AND MALOP = ‘TH1’ AND LAN=’1’
7. Số lượng SV của lớp TH2.
SELECT COUNT(MASV)
FROM SINHVIEN
WHERE MALOP=’TH2’


8. Lớp TH1 phải học bao nhiêu môn trong HK1 và HK2.
SELECT COUNT(MAMH)
FROM CTHOC
WHERE MALOP=’TH1’ AND (HK1= ‘1’ OR HK=’2’)
9. Cho biết 3 SV đầu tiên có điểm thi lần 1 cao nhất môn CSDL.
SELECT TOP 3 MASV
FROM DIEMSV, MONHOC
WHERE LAN = ‘1’ AND DIEMSV.MAMH=MONHOC.MAMH
AND TENMH=’CSDL’
ODER BY DIEM DESC
10. Cho biết sĩ số từng lớp.
SELECT MALOP, COUNT(MASV) AS SISO
FROM SINHVIEN
GROUP BY MALOP
11. Khoa nào đông SV nhất.
SELECT MAKH
FROM LOP, SINHVIEN
WHERE LOP.MALOP = SINHVIEN.MALOP
GROUP BY MAKH
HAVING COUNT (MASV) >= ALL ( SELECT COUNT(MASV)
FROM LOP, SINHVIEN
WHERE
LOP.MALOP=SINHVIEN.MALOP

GROUP BY MAKH )
12. Lớp nào đông nhất khoa CNTT.
SELECT MAKH
FROM LOP, SINHVIEN
WHERE LOP.MALOP = SINHVIEN.MALOP AND MAKH=’CNTT’
GROUP BY MAKH
HAVING COUNT (MASV) >= ALL ( SELECT COUNT(MASV)
FROM LOP, SINHVIEN
WHERE LOP.MALOP=SINHVIEN.MALOP
AND MAKH=’CNTT’
GROUP BY MAKH )


13. Môn học nào mà ở lần thi 1 có số SV không đạt nhiều nhất.
SELECT MAMH
FROM DIEMSV
WHERE LAN=’1’ AND DIEM < 5
GROUP BY MAMH
HAVING COUNT(MASV) >= ALL ( SELECT (COUNT(MASV)
FROM DIEMSV
WHERE LAN=’1’ AND DIEM<5
GROUP BY MAMH )
14. Tìm điểm thi lớn nhất của mỗi SV cho mỗi môn học (vì SV được thi nhiều lần).
SELECT MASV, MAMH, MAX(DIEM)
FROM DIEMSV
GROUP BY MASV, MAMH
15. Điểm trung bình của từng lớp khoa CNTT ở lần thi thứ nhất môn CSDL.
SELECT MALOP, AVG(DIEM)
FROM DIEMSV, SINHVIEN, LOP
WHERE DIEMSV.MASV = SINHVIEN.MASV

AND LOP.MALOP = SINHVIEN.MALOP
AND MAKH = ‘CNTT’ AND LAN = ‘1’ AND MAMH = ‘CSDL’
GROUP BY MALOP
16. Sinh viên nào của lớp TH1 đã thi đạt tất cả các môn học ở lần 1 của HK2.
SELECT SINHVIEN.MASV
FROM DIEMSV, SINHVIEN, CTHOC
WHERE SINHVIEN.MASV = DIEMSV.MASV
AND DIEMSV.MAMH = CTHOC.MAMH
AND CTHOC.MALOP = ‘TH1’
AND LAN = ‘1’ AND DIEM > 5 AND HK = ‘2’
GROUP BY SINHVIEN.MASV
HAVING COUNT (DIEMSV.MAMH) =
( SELECT COUNT (MAMH)
FROM CTHOC
WHERE MALOP=’TH1’ AND HK = ‘2’
17. Danh sách SV nhận học bổng học kỳ 2 của lớp TH2, nghĩa là đạt tất cả các môn
học của học kỳ này ở lần thi thứ nhất.

18. Biết rằng lớp TH1 đã học đủ 6 học kỳ, cho biết SV nào đủ điều kiện thi tốt
nghiệp, nghĩa là đã đạt đủ tất cả các môn.


Bài tập 6:
Cho lược đồ CSDL về hệ thống kế toán của một doanh nghiệp với các quan hệ sau:
1. DM-TK (Mã-TK, Tên-TK)
Tân từ: Danh mục các tài khoản hạch toán kế toán theo chế độ kế toán hiện hành của
Nước CHXHCN Việt nam bao gồm các tài khoản. Mỗi tài khoản có một tên gọi cụ thể và
một mã số duy nhất để phân biệt với mọi tài khoản khác.
2. TK-ĐỐI-ỨNG (Mã-TK, TK-Đối-ứng);
Tân từ: Mỗi tài khoản, theo chế độ hạch toán hình chữ T, khi được phát sinh bên NỢ

(hạch toán tăng) thì phải có một mã tài khoản đối ứng bên CÓ (hạch toán giảm) để đảm
bảo cân đối tài khoản. Một tài khoản được ghi NỢ có thể có nhiều tài khoản khác nhau
được ghi CÓ. Mã tài khoản NỢ và mã tài khoản đối ứng đều phải thuộc danh mục các tài
khoản
3. SỔ-CT (Loại-CT, Số-CT, NGày-CT, Diễn-Giải, Số-Tiền, TK-NỢ, TK-CÓ).
Tân từ: Trong phương pháp kế toán ghi sổ, các chứng từ ban đầu được ghi vào sổ
theo dõi, gọi là sổ chứng từ. Mỗi chứng từ đều thuộc một loại chứng từ cụ thể (LOẠICT); có một số chứng từ (SỐ-CT) phân biệt với mọi chứng từ khác. Chứng từ được ghi
rõ ngày tháng phát sinh (NGÀY-CT), diễn giải nội dung phát sinh (DIỄN-GIẢI), số tiền
phát sinh (SỐ-TIỀN), mã tài khoản ghi NỢ (TK-NỢ) và mã tài khoản đối ứng ghi CÓ
(TK-CÓ);
4. SỔ-CÁI (Mã-TK, NỢ-ĐK, CÓ-ĐK, PS-NỢ, PS-CÓ, NỢ-CK, CÓ-CK).
Tân từ: Từ sổ chứng từ (SỔ-CT), các chứng từ ghi sổ được tổng hợp theo từng loại
tài khoản (Mã-TK) và lập thành sổ cái. Mỗi mã tài khoản (Mã-TK) trong SỔ-CÁI được
phản ảnh duy nhất 1 lần các số dư NỢ, dư CÓ đầu kỳ (NỢ-ĐK, CÓ-ĐK); số phát sinh
NỢ, CÓ trong tháng (PS-NỢ, PS-CÓ), và số dư NỢ, dư CÓ cuối kỳ (NỢ-CK, CÓ-CK).
Mã tài khoản phải có trong danh mục tài khoản (DM-TK) nêu trên.
Câu 1: Xác định khóa của các quan hệ trong CSDL nêu trên.
Câu 2: Xác định các RBTV của CSDL. Nêu rõ nội dung RBTV, bối cảnh và lập (các)
bảng tầm ảnh hưởng của các RBTV của lược đồ CSDL
Bài tập 7:
Vận dụng hệ tiên đề Amstrong để tìm chuỗi suy diễn:
Cho R(A,B,C,D,E,G,H) với F = { AB-> C; B-> D; CD-> E; CE-> GH; G-> A }
(a) Tìm chuỗi suy diễn cho AB-> E.
(b) Tìm chuỗi suy diễn cho BG-> C.
(c) Tìm chuỗi suy diễn cho AB->G.
Bài tập 8:
Xác định khóa của các lược đồ quan hệ sau:
Q1 (A,B,C,D,E,H)
với F = { AB-> C; CD-> E; AH-> B; B-> D; A-> D }
Q2 (A,B,C,D,M,N,P,Q)

với F = { AM-> NB; BN-> CM; A-> P; D-> M; PC-> A; DQ-> A }


Q3 (M, N, P, Q, R, S, T, U, W)
với F = { M-> W; MR-> T; T-> R; QR-> T; M-> U; MT-> P; NP-> Q; UW-> R }
Bài tập 9:
Xác định khoá và xét các phân rã sau đây theo hai tiêu chuẩn bảo toàn thông tin và
bảo toàn phụ thuộc hàm.
a. Q(ABCD), F = {A → BC, C → D}
Q1(AB), F1 = {A → B}
Q2(CD), F2={C→D}
b. Q(ABCD), F={A→B, AC→D}
Q1(AB), F1={A→B}
Q2(ADC),F2={AC→D}
c. Q(ABDCE),F={A→C, B→C, C→D, DE→C, CE→A}
Q1(AB),F1={A→D}
Q2(CD),F2=∅
Q3(AB),F3=∅
Q4(CD),F4={C→D, DE→C, CE→D}
Q5(AB), F5=∅
d. Q(ABCD), F={A→B, C→D}
Q1(AB), F1={A→B}
Q2(CD), F2={C→D}
Bài tập 10:
Xét dạng chuẩn của các lược đồ quan hệ sau:
a. Q(ABCD), F={A→B, C→D}
b. Q(ABCD), F={AB→C, C→D}
c. Q(ABCD), F={AB→CD, CD→AB, C→B}
d. Q(ABCD), F={AB→CD, D→E, DE→ABC}
e. Q(ABCDEF), F={AB→E, AC→F, AD→B, B→C, C→D}

Bài tập 11
Cho lược đồ quan hệ Q(ABCDEF), F={C→F, E→A, CE→D, A→B}
a. Xác định khoá của Q
b. Phân rã thành dạng chuẩn Boyce-Codd bảo toàn thông tin
c. Phân rã thành dạng chuẩn 3 bảo toàn thông tin và bảo toàn phụ thuộc hàm.
Bài tập 12
Giả sử bài 3 được phân rã thành Q1(CDEF) và Q2(ABE), hãy xác định F1, F2 và đánh
giá phân rã trên.
Bài tập 13
Nếu bài 3 được phân rã thành Q1(CF), Q2(AE), Q3(CDE), Q4(AB). Hãy xác định F1,
F2, F3, F4 và đánh giá chúng.


Bài tập 14
Cho lược đồ quan hệ
VẬNCHUYỂN(TÀU, LOẠITÀU, CHUYẾN, HÀNG, CẢNG, NGÀY)
Mỗi tàu (TÀU) thuộc duy nhất một loại tàu nào đó (LOẠITÀU), mỗi chuyến có một mã
số riêng biệt (CHUYẾN) dùng để xác định một chuyến tàu (TÀU) chở một khối lượng
hàng hoá nào đó (HÀNG), mỗi chiếc tàu trong một ngày(NGÀY) chỉ cập vào một cảng
duy nhất (CẢNG) của một chuyến vận chuyển nào đó (CHUYẾN)
a. Xác định tập các phụ thuộc hàm trên.
b. Xác định dạng chuẩn của VẬNCHUYỂN
c. Nếu VẬNCHUYỂN chưa tốt hãy tìm một phân rã tốt cho nó.

Trường Đại học Điện lực
Khoa Công nghệ thông tin

ĐỀ THI CƠ SỞ DỮ LIỆU
LỚP: C5 TIN
Đề 1

(Thời gian làm bài 90 phút)

ĐỀ BÀI
Câu 1(2,5 đ)
Cho cơ sở dữ liệu gồm bốn quan hệ
-Quan hệ các hãng cung ứng gồm các thuộc tính: số hiệu hãng, tên hãng, địa
chỉ, tài khoản)

S(shh, tenh, dc, tk)
- Quan hệ các mặt hàng gồm các thuộc tính: số hiệu mặt hàng, tên mặt
hàng, màu sắc, khối lượng
P(shmh, tenmh, msac, kluong)
- Quan hệ các dự án gồm: số hiệu dự án, tên dự án, địa chỉ thực hiện
dự án
J(shda, tenda, dc)


-Quan hệ hãng cung ứng mặt hàng cho dự án gồm các thuộc tính: số
hiệu hãng, số hiệu mặt hàng, số hiệu dự án và khối lượng hàng được cung
ứng.
SPJ(shh, shmh, shda, kl)
Hãy bểu diễn các câu hỏi sau bằng đại số quan hệ:
1. Đưa ra tên và địa chỉ của tất cả các dự án
2. Đưa ra tên các hãng có địa chỉ ở Hà nội
3. Đưa ra tên và địa chỉ các hãng đã cung ứng hàng cho dự án có số hiệu dự
án là J1
4. Đưa ra tên các mặt hàng đã được hãng có tên là Hoà Phát và tên là Đồng
tâm cung cấp.
5. Đưa ra tên và tài khoản các hãng đã cung ứng cho tất cả các dự án
6. Đưa ra số hiệu các dự án chưa được cung cấp mặt hàng nào.

Câu 2(2,5 đ)
Cho cơ sở dữ liệu gồm bốn quan hệ như bài 1
Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ SQL:
1. Đưa ra danh sách tất cả các dự án
2. Đưa ra tên các mặt hàng có màu đỏ.
3. Đưa ra tên các mặt hàng đã được hãng có số hiệu là S1 cung ứng
4. Tìm tên và địa chỉ các hãng đã cung ứng mặt hàng có số hiệu là P1 và mặt
hàng có số hiệu là P2
5. Đưa ra màu sắc của các mặt hàng do hãng có tên là Sao Mai cung ứng
6. Đưa ra số lượng mặt hàng mà hãng Hoà Phát đã cung ứng cho các dự án.
7. Đưa ra tên các hãng đã cung ứng cho tất cả các dự án.
8. Đưa ra tên, địa chỉ các hãng đã cung ứng khối lượng hàng lớn nhất.
Câu 3 (2 đ)
Cho quan hệ R(A, B, C, D, E,G, H,I)
với tập phụ thuộc hàm F={AB→C, CD→E, CA→G, B→D, G→B, GI→H}
1.Vận dụng tiên đề Amstrong để tìm chuỗi suy diễn ABI→H
2. Hãy tìm bao đóng AB+
Câu 4( 3 đ)
Cho quan hệ:
Nhanvien_Phong (maNV, hoten, diachiNV, congviec, maph,
diachiph, dienthoaiph)
Mỗi nhân viên có một mã số (maNV), họ tên (hoten), địa chỉ
(diachiNV). Người ta dùng mã số nhân viên để phân biệt nhân viên này với
nhân viên khác. Mỗi phòng có mã phòng (maph) để phân biệt các phòng, có


địa chỉ phòng (diachiph), có một số điện thoại để liên hệ (dienthoaiph). Mỗi
nhân viên trong một phòng thì có một công việc nhất định.
Tìm tập phụ thuộc hàm, xác định khoá của quan hệ và chuẩn hoá quan
hệ về dạng chuẩn 3.


Trường Đại học Điện lực
Khoa Công nghệ thông tin

ĐỀ THI CƠ SỞ DỮ LIỆU
LỚP: C5 TIN
Đề 2
(Thời gian làm bài 90 phút)

ĐỀ BÀI
Câu 1(2,5 đ)
Cho cơ sở dữ liệu gồm ba quan hệ
Sinh viên(masv, tensv, ns, dc, malop)
Mỗi sinh viên có một mã số để phân biệt với các sinh viên
khác(mssv), thông tin của từng sinh viên là họ tên sinh viên(tensv), ngày
sinh của sinh viên(ns), địa chỉ của sinh viên(dc), mỗi sinh viên thuộc một lớp
duy nhất
Lop(malop, tenlop, makhoa)
Mỗi lớp có một mã số duy nhất(malop), có tên lớp (tenlop), mỗi lớp thuộc
một khoa được xác định bởi mã khoa(makhoa)
Diem(masv, maMH, lan, diem)
Quan hệ Diem ghi nhận điểm(diem) của các sinh viên(masv) các môn
học(maMH) ở lần thi nào(lan)
Monhoc( maMH, tenMH, soht)


Quan hệ môn học cho biết thông tin về mã môn học (maMH), tên môn học
(tenMH), số đơn vị học trình của môn học đó (soht).
Hãy biểu diễn các câu hỏi sau bằng đại số quan hệ
1.Đưa ra họ tên, ngày sinh, địa chỉ của các sinh viên.

2.Đưa ra số đơn vị học trình của môn học có tên là Cơ sở dữ liệu.
3.Đưa ra điểm lần 1 và lần 2 môn có tên CTDL của sinh viên Hà An
4. Đưa ra tên, ngày sinh của những sinh viên có điểm lần 1 >= 7
5. Đưa ra tên, điểm của những sinh viên phải thi lần 2 tất cả các môn
6. Đưa ra tên của những sinh viên chưa có điểm nào.
Câu 2(2,5 đ)
Cho cơ sở dữ liệu gồm bốn quan hệ như bài 1
Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ SQL:
1. Cho biết danh sách sinh viên tất cả các lớp
2. Cho biết danh sách sinh viên lớp C5 tin
3. Cho biết sĩ số từng lớp
4. Cho biết điểm lần 1 của sinh viên Anh Thư lớp C5 tin
5. Đưa ra tên sinh viên, điểm lần 2 môn có tên CSDL của lớp C5tin
6. Cho biết điểm trung bình từng lớp
7. Cho biết danh sách sinh viên lớp C4 nhiệt xếp theo thứ tự giảm dần
của điểm lần 1 môn tin đại cương
8. Đưa ra danh sách sinh viên phải thi lại lần 1 (điểm lần 1<5) môn Toán
rời rạc của lớp C4 tin
Câu 3 (2 đ)
Cho quan hệ R(A, B, C, D, E, G, H, I)
Tập phụ thuộc hàm F= {AB→D, AG→I, BD→I, D→G, GI→H, H→E}
1. Chứng minh nếu R thoả mãn F thì R cũng thoả mãn AB→GE
2. Hãy tìm bao đóng AB+
Câu 4( 3 đ)
Cho quan hệ

SP(shh, tenh, dc, tk, dt, shmh, tenmh, msac, kluong, dg)
Trong đó shh: số hiệu hãng; tenh: tên hãng; dc: địa chỉ hãng; tk: tài khoản
hãng, dt: điện thoại của hãng.
shmh: số hiệu mặt hàng; tenmh: tên mặt hàng; msac: màu sắc;

kluong: khối lượng hàng đã được hãng cung cấp, dg: đơn giá.
Mỗi hãng có một số hiệu hãng, ta có thể biết các thông tin về hãng như tên
hãng, địa chỉ, tài khoản, điện thoại thông qua số hiệu hãng. Mỗi hãng cung ứng
nhiều mặt hàng, mỗi mặt hàng có nhiều hãng cung ứng, mỗi mặt hàng do một


hãng cung ứng sẽ có một khối lượng và đơn giá nhất định. Mỗi mặt hàng có một
số hiệu riêng từ đó ta có thể xác định được các thông tin về mặt hàng như tên, màu
sắc.
Xác định các phụ thuộc hàm của quan hệ trên, chuẩn hoá quan hệ đã cho về
dạng chuẩn 3.

Trường Đại học Điện lực
Khoa Công nghệ thông tin

ĐỀ THI CƠ SỞ DỮ LIỆU
LỚP: C5 TIN
Đề 3
(Thời gian làm bài 90 phút)

ĐỀ B ÀI
Câu 1(2,5 đ)
Cho cơ sở dữ liệu gồm ba quan hệ
R1 A
a1
a2
a1
a3

B

b1
b2
b2
b3

C
1
2
2
3

R2

A
a1
a1
a3
a4

B
b1
b2
b1
b2

C
1
2
3
5


Hãy xác định kết quả của các phép toán sau:
8. R1 ∩ R2
9. R1 ∪ R2
10.R1- R2

R3

C
1
2
5

D
d1
d2
d3


11.R1 * R3
12. σ D=’d2’ (R1* R3)
13. R1÷ ΠBC ( σc<=2 (R2))
Câu 2(2,5 đ)
Cho cơ sở dữ liệu về khách sạn gồm các quan hệ sau:
Khachsan ( maks, tenks, diachi)
Phong ( maphong, maks, loai, gia)
Khach (makhach, hoten, diachi)
Datphong (maks, makhach, ngayden, ngaydi, maphong)
Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ SQL
1. Cho biết tên của tất cả các khách sạn

2. Liệt kê tất cả các phòng có giá dưới 500.000 đ
3. Cho biết giá và loại của tất cả các phòng thuộc khách sạn có tên là
Sao Mai.
4. Khách sạn Sao mai đã có bao nhiêu người thuê.
5. Đưa ra danh sách các phòng trong khách sạn có tên Kim Liên
theo giá thuê giảm dần.
6. Đưa ra danh sách các phòng trong khách sạn Sao Mai chưa có
người thuê.
7. Đưa ra tên của 3 khách sạn có giá thuê phòng cao nhất.
8. Đưa ra giá thuê phòng trung bình hiện nay.
Câu 3 (2 đ)
Cho quan hệ
QLSV(masv, tensv, ns, dc, malop, mamh, hocky, lan, diem )
và tập phụ thuộc hàm
masv→tensv, ns, dc, malop
mamh, malop→ hocky
masv, mamh, lan→diem
được tách thành các quan hệ


Sinh viên(masv, tensv, ns, dc, malop)
CThoc(mamh, malop, hocky)
Diem(masv, mamh, lan, diem)
Hãy kiểm tra xem phép tách trên có mất mát thông tin không ?
Câu 4( 3 đ)
Cho quan hệ R(A, B, C, D, E, F, G, H, I,)
Tập phụ thuộc hàm F= {A→DEF, F→DH, C→B, AF→GI}
Tối thiểu hoá tập phụ thuộc hàm và chuẩn hoá quan hệ về dạng chuẩn 3 NF

Trường Đại học Điện lực

Khoa Công nghệ thông tin

ĐỀ THI CƠ SỞ DỮ LIỆU
LỚP: C5 TIN
Đề 4
(Thời gian làm bài 90 phút)

ĐỀ BÀI
Câu 1(2 đ)
Cho cơ sở dữ liệu gồm ba quan hệ
SV1 masv
001
002
005

tênsv
Hoàn
Hải
Hải

diachi
HN
TPHCM
HP

SV2 masv
003
002
004


Hãy xác định kết quả của các phép toán sau:
1. SV1∩ SV2
2. SV1∪ SV2
3. SV2- SV1
4. Π tênsv, diachi (SV1) ÷Π diachi (SV2)

5. σ tênsv=’Hải’ (SV2)

tênsv
Huy
Hải
Hải

diachi
HP
TPHCM
TPHCM


6. SV1 * Π tênsv, diachi (SV2)
Câu 2(3 đ)
Cho cơ sở dữ liệu gồm ba quan hệ:
BANDOC(mabd, tenbd, dcbd, gioitinh, dvct )
mabd: mã bạn đọc, tenbd: tên bạn đọc, dcbd: địa chỉ bạn đọc, dvct: đơn vị
công tác.
SACH(mas, tens, nhxb, nxb, tl)
mas: mã sách, tens: tên sách, nhxb: nhà xuất bản, nxb: năm xuất bản, tl: thể
loại.
MSACH(sophieu, mabd, mas, ngaym, ngayt)
sophieu: số phiếu, mabd: mã bạn đọc, mas: mã sách, ngaym: ngày mượn,

ngayt: ngày trả.
Hãy biểu diễn các câu hỏi sau bằng ngôn ngữ SQL:
1. Đưa ra danh sách các sách trong thư viện
2. Đưa ra tên bận đọc, đơn vị công tác của những bạn đọc ở Hà nội
3. Đưa ra danh sách bạn đọc nữ của trường Đại học Điện Lực.
4. Đưa ra tên bạn đọc mượn sách Cơ sở dữ liệu xuất bản năm 2007
5. Đưa ra tên của bạn đọc đã mượn 5 quyển sách.
6. Cho biết phiếu T04 đã mượn bao nhiêu quyển sách
7. Đưa ra tên của bạn đọc chưa mượn quyển sách nào.
8. Đưa ra danh sách bạn đọc xếp theo thứ tự tăng dần của họ tên.
Câu 3 (2 đ)
Cho quan hệ:
QUANLY(manv, tennv, namsinh, gioitinh, bacluong, maphong,
tenphong, congviec, loai, hesoluong, phucap)
và tập phụ thuộc hàm:
manv →tennv, namsinh, gioitinh, maphong, bacluong
maphong→ tenphong, loai
bacluong→ hesoluong, phucap
manv,maphong → congviec
Quan hệ trên được tách thành bốn quan hệ:
NV(manv, tennv, namsinh, gioitinh, maphong, bacluong)
PHONG(maphong, tenphong, loai)
LV(manv, maphong, congviec)
LUONG(bacluong, hesoluong, phucap)
Hãy kiểm tra tính không mất mát thông tin của phép tách quan hệ trên


Câu 4( 3 đ)
Cho quan hệ R(A, B, C, D, E, F, G, H)
Tập phụ thuộc hàm F= { AB→CD; B→D; AD→E; F→A, H→G}

Tối thiểu hoá tập phụ thuộc hàm và chuẩn hoá quan hệ về dạng chuẩn 3



×