Đáp án
Một số bài
tập mẫu môn
cơ sở dữ liệu Dap an Bai tap mon CSDL trang 1
ĐÁN ÁN
MỘT SỐ BÀI TẬP MẪU MÔN CSDL Bài 1.
Cho lược đồ CSDL sau:
HANGHOA (MaHH, TenHH, DonGia)
NHANVIEN (MaNV, TenNV)
HOADON (MaHD, NgayHD, MaNV)
CTHD (MaHD, MaCT, MaHH, SoLuong)
1.1. Viết các câu SQL cho biết:
a) Doanh số bán trong năm 2008 theo mặt hàng. Biết rằng doanh số bán =
SoLuong * DonGia. Kết quả hiển thò gồm Mã HH, Tên HH và tổng doanh số bán.
SELECT hh.mahh, tenhh, sum(soluong*dongia) AS dsban
FROM hanghoa hh, hoadon hd, cthd ct
WHERE hh.mahh=ct.mahh
SELECT NV.MANV, TENNV
FROM NHANVIEN NV
WHERE MANV NOT IN (SELECT DISTINCT MANV FROM HOADON)
e) Tổng doanh số bán trong tháng 08/2008 của mặt hàng có tên ‘iPHONE 3G’.
Biết rằng doanh số bán = SoLuong * DonGia. Thông tin gồm: TenHH, TongDS.
SELECT MaHH, TenHH, SUM(SOLUONG*DONGIA) AS DSBAN
FROM CTHD CT, HANGHOA HH, HOADON HD
WHERE HD.MAHD=CT.MAHD
AND CT.MAHH=HH.MAHH
AND TENHH=’iPHONE 3G’
AND YEAR(NGAYHD)=2008 AND MONTH(NGAYHD)=08
GROUP BY CT.MAHH, TenHH
f) Doanh số bán trong các hóa đơn do nhân viên có tên ‘Quynh Huong’ phụ trách.
Thông tin gồm: MaHD, NgayHD, Doanh số. Kết quả sắp xếp theo doanh số giảm
dần.
SELECT HD.MAHD, NGAYHD, SUM(SOLUONG*DONGIA) AS DSBAN
FROM HOADON HD, CTHD CT, NHANVIEN NV, HANGHOA HH
WHERE HD.MAHD=CT.MAHD
AND CT.MAHH=HH.MAHH
AND NV.MANV=HD.MANV
AND TENNV=’Quynh Huong’
GROUP BY HD.MAHD, NGAYHD
g) Danh sách nhân viên không phụ trách hóa đơn nào trong tháng 08/2008.
NGAYHD=’31/12/2007’
HOADON))
Bài 2: xác đònh phụ thuộc hàm.
2.1. Cho lược đồ quan hệ Q(ABCDEGH) và tập các phụ thuộc hàm
F = { AB à C
B à D
CD à E
CE à GH
G à A }
Phụ thuộc hàm BG à E có được suy ra từ F không? Chứng minh.
Tính bao đóng (BG)
+
= BGDACEH É E. Vậy BG à E được suy ra từ F
2.2. Cho lược đồ quan hệ Q( IJKLMNO) và tập các phụ thuộc hàm
F = { IJ à K
J à L
KL à M
KM à NO
Nà I }
Phụ thuộc hàm JN à M có được suy ra từ F không? Chứng minh.
Tính (JN)
+
=JNLIKMO É M nên JNàM được suy từ F
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
Dap an Bai tap mon CSDL trang 4
3.2. Cho lược đồ quan hệ Q(CDVLGTPN) và tập phụ thuộc hàm F
F = { V à CDLG
CD à LG
T à P
CDN à P
DN à TP }
- Xác đònh {VN} là khóa của lược đồ.
- Xác đònh dạng chuẩn của lược đồ.
Tính {VN}
+
= {VNCDLG}
{ VNCDLG }
+
= { VNCDLGTP } = Attrs(Q)
=> VN là siêu khóa, và các tập con của VN thỏa:
{V}
+
= {VCDLG} => không là siêu khóa
{N}
+
= {N} => không là siêu khóa
=> VN là tối thiểu => VN là khóa
Do f1 nên CDLG phụ thuộc không đầy đủ vào khóa à không đạt Dạng chuẩn 2
à Dạng chuẩn 1
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
1
Câu 2 :
Từ lược đồ cơ sở dữ liệu quan hệ ở câu 1 sử dụng ngôn ngữ đại số quan hệ, truy vấn các
thông tin sau:
a. Cho biết danh sách các tựa sách có ngôn ngữ là ‘tiếng Việt’ và xuất bản sau năm
2000.
b. Cho biết danh sách độc giả chưa mượn bất kỳ cuốn sách nào.
Giải:
a) p
TuaSach
(s
NgonNgu = ‘tiếng Việt’ Ù NamXuatBan >= 2000
SACH)
b) p
Ho, Ten
DOCGIA |><| (p
MaTheDocGia
DOCGIA - p
MaTheDocGia
MUON)
Câu 3 :
Từ lược đồ cơ sở dữ liệu quan hệ ở câu 1 sử dụng ngôn ngữ SQL, truy vấn các
thông tin sau
a. Cho biết với mỗi sách có bao nhiêu cuốn sách.
b. Cho biết độc giả có mã thẻ độc giả = ‘DG0001’ đã mượn những cuốn sách có tựa là
gì.
c. Cho biết trong năm 2007 mỗi độc giả đã mượn bao nhiêu cuốn sách.
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
3
X
i
TN U X
i
{TN U X
i
}
+
Siêu khóa Khóa
Æ
D D
A A,D A,D
B B,D B,D
C C,D R
+
C,D C,D
A,B A,B,D R
+
A,B,D A,B,D
A,C A,C,D R
+
A,C,D
B,C B,C,D R
+
B,C,D
A,B,C A,B,C,D R
+
= (A,B,C,D,E,G,H) và tập phụ thuộcc hàm
F = {A→D,AB→DE,CE→G,E→H}
a) Tìm khóa.
b) Xác đònh dạng chuẩn cho quan hệ này.
Giải:
a) Tìm khóa:
TN = {A,B,C}
TG = {E}
X
i
(X
i
U TN) (X
i
U TN)
+
Siêu khóa Khóa
Ỉ
{A,B,C}
Q
+
{A,B,C} {A,B,C}
E {E,A,B,C}
Q
+
{E,A,B,C}
X
i
(X
i
U TN) (X
i
U TN)
+
Siêu khóa Khóa
Ỉ
Ngaykh Ngaykh
Maybay
Maybay,
ngaykh
Q
+
Maybay,
ngaykh
Maybay,
ngaykh
Phicong
Phicong,
ngaykh
Phicong,
ngaykh
Giokh
Giokh,
ngaykh
giokh,
Q
+
Phicong,
giokh,
ngaykh
Phicong,
giokh,
ngaykh
Maybay,
phicong,
giokh
Maybay,
phicong,
ngaykh,
giokh
Q
+
Maybay,
phicong,
ngaykh,
giokh Khóa là: K
1
= {maybay,ngaykh}; K
2
= {phicong,giokh,ngaykh}