Đề thi môn Hệ Quản Trị Cơ Sở Dữ Liệu có lời giải. – Tài liệu text

Đề thi môn Hệ Quản Trị Cơ Sở Dữ Liệu có lời giải.

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 (135.15 KB, 4 trang )

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

KỲ THI KẾT THÚC HỌC PHẦN
HỌC KỲ …. NĂM HỌC 20…. – 20….

Đề thi môn: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU II
Dành cho sinh viên khóa:……………Hệ: Chính quy
Đề số:
Thời gian làm bài: 60 phút (Không kể thời gian phát đề)
Hướng dẫn làm bài:
Sinh viên vào C:\SV, tạo thư mục lưu bài thi với tên là Họ tên (viết liền, không dấu), ví dụ:
sinh viên tên là Trần Ngọc Anh cần tạo thư mục Tranngocanh.

Sau khi làm xong bài, phải tạo file backup cho CSDL với tên file là Số đề và Họ tên (viết
liền, không dấu) – ví dụ: sinh viên Trần Ngọc Anh làm đề 01 thì tên file backup là
01TranNgocAnh.
Đặt file backup và tất cả các file sql dùng để tạo các đối tượng trong các câu II,III,IV vào
thư mục lưu bài thi, sau đó tạo file nén dạng .zip.

Câu I
Tạo mới CSDL với tên là Số đề và Họ tên được viết liền, không ghi dấu (ví dụ: sinh viên
Trần Ngọc Anh làm đề 01 thì tên CSDL là 01TranNgocAnh). Các file của CSDL được tạo như
sau:
– Data File: Kích thước khởi tạo là 10MB, mỗi lần tăng 5MB, kích thước giới hạn là 100MB
– Log File: Kích thước khởi tạo là 5MB, mỗi lần tăng 2MB, không giới hạn kích thước

Tạo các bảng theo cấu trúc sau:
Bảng danh mục vật tư (VATTU)
Tên
MaVTu
TenVTu
DvTinh
PhanTram

Ý nghĩa
Mã vật tư
Tên vật tư
Đơn vị tính

Tỷ lệ phần trăm

Kiểu
Char
nVarchar
nVarchar
Real

Độ rộng
4
100
10

Ràng buộc
Khóa chính
Giá trị là duy nhất
Giá trị mặc định là xâu rỗng ”
Giá trị nằm trong đoạn [0,100]

Bảng phiếu xuất hàng (PXUAT)
Tên
SoPX
Ngayxuat
TenKH

Ý nghĩa
Số phiếu xuất hàng
Ngày xuất hàng
Tên khách hàng

Kiểu
Char
Datetime
nvarchar

Độ rộng

4

Ràng buộc
Khóa chính
Mặc định là ngày hiệnhành

100

Bảng chi tiết phiếu xuất hàng (CTPXUAT)
Tên
SoPX
MaVTu

SlXuat
DgXuat

Ý nghĩa
Số phiếu xuất hàng
Mã vật tư
Số lượng xuất hàng
Đơn giá xuất hàng

Kiểu Độ rộng
Char
4

Char
4
Int
Money

Ràng buộc
Khóa chính
Giá trị>0
Giá trị>0

Bảng hàng tồn (TONKHO)
Tên

Ý nghĩa
Namthang Năm tháng
MaVTu
Mã vật tư

Kiểu
Char
Char

Độ rộng
6
4

Ràng buộc
Khóa chính

SlDau
TongSLN
TongSLX
SlCuoi

Số lượng tồn đầu kỳ
Tổng số lượng nhập trong kỳ

Tống số lượng xuất trong kỳ
Số lượng tồn cuối kỳ

Int
Int
Int
Int

– Tạo các khoá ngoại cho các bảng để thể hiện các mối liên kết theo thứ tự 1- ∞ sau:
VATTU-TONKHO, VATTU-CTPXUAT, PXUAT-CTPXUAT.

Câu II

Xây dựng trigger tg_SuaCTPX kiểm tra các ràng buộc dữ liệu khi sửa đổi dữ liệu trong bảng
CTPXUAT:
– Không cho sửa đổi dữ liệu tại các trường Số phiếu xuất và mã vật tư
– Nếu số lượng tồn cuối kỳ tại thời điểm trước khi sửa đổi nhỏ hơn (số lượng xuất sau khi
sửa đổi – số lượng xuất trước khi sửa đổi) thì không cho phép sửa đổi số lượng xuất.

Câu III
Tạo bảng ảo có tên vw_Tonkho cho phép hiển thị danh sách tất cả các vật tư có lượng tồn
kho trong thời gian gần nhất (giá trị trường namthang đạt max) bằng 0, thông tin hiển thị gồm: Năm
tháng, Mã vật tư, Tên vật tư.

Câu IV

Xây dựng hàm f_Soluongxuat, các tham số truyền vào là Mã vật tư và Ngày tháng năm, giá
trị trả về là Tổng số lượng đã xuất của vật tư tương ứng tại thời điểm đó.

————————————-Hết———————————Ghi chú:

+ Thí sinh không được sử dụng tài liệu khi làm bài
+ Cán bộ coi thi không giải thích gì thêm.

Cán bộ ra đề
Họ tên và chữ ký

Duyệt đề

Trưởng Bộ môn
Họ tên và chữ ký

Bài giải.
Câu 2.
create trigger tg_suactpx
on ctpxuat
for update
as
if( UPDATE(sopx) or UPDATE(mavtu))
begin

print’khong duoc thay doi truong nay’
rollback transaction
end
else
begin
declare @mavtu char(4);
declare @toncuoi int
declare @soluongban int;
select @mavtu=mavtu from inserted
select @toncuoi =slcuoi from tonkho where @mavtu=mavtu
select @soluongban=inserted.slxuat-deleted.slxuat
from inserted inner join deleted on inserted.sopx=deleted.sopx and

inserted.mavtu=deleted.mavtu
where @mavtu=inserted.mavtu
if @soluongban>@toncuoi
begin
print’so luong ton cuoi kong du’
rollback transaction
end
else
begin
update tonkho
set slcuoi=slcuoi-@soluongban
where mavtu=@mavtu

end
end
Câu 3.
create view vw_tonkho
as
select top 1 with ties namthang,tonkho.mavtu,tenvtu
from tonkho inner join vattu on vattu.mavtu=tonkho.mavtu
where slcuoi=0
order by namthang desc
Câu 4.
create function f_tongsoluongxuat(@mavtu char(4),@thoigian datetime)
returns int

as

begin
declare @tongslxuat int
select @tongslxuat= SUM(slxuat)
from pxuat inner join ctpxuat on pxuat.sopx=ctpxuat.sopx
where mavtu=@mavtu and @thoigian=ngayxuat
group by mavtu
return (@tongslxuat)
end

Sau khi làm xong bài, phải tạo file backup cho CSDL với tên file là Số đề và Họ tên ( viếtliền, không dấu ) – ví dụ : sinh viên Trần Ngọc Anh làm đề 01 thì tên file backup là01TranNgocAnh. Đặt file backup và toàn bộ những file sql dùng để tạo những đối tượng người tiêu dùng trong những câu II, III, IV vàothư mục lưu bài thi, sau đó tạo file nén dạng. zip. Câu ITạo mới CSDL với tên là Số đề và Họ tên được viết liền, không ghi dấu ( ví dụ : sinh viênTrần Ngọc Anh làm đề 01 thì tên CSDL là 01T ranNgocAnh ). Các file của CSDL được tạo nhưsau : – Data File : Kích thước khởi tạo là 10MB, mỗi lần tăng 5MB, kích cỡ số lượng giới hạn là 100MB – Log File : Kích thước khởi tạo là 5MB, mỗi lần tăng 2MB, không số lượng giới hạn kích thướcTạo những bảng theo cấu trúc sau : Bảng hạng mục vật tư ( VATTU ) TênMaVTuTenVTuDvTinhPhanTramÝ nghĩaMã vật tưTên vật tưĐơn vị tínhTỷ lệ phần trămKiểuCharnVarcharnVarcharRealĐộ rộng10010Ràng buộcKhóa chínhGiá trị là duy nhấtGiá trị mặc định là xâu rỗng ‘ ‘ Giá trị nằm trong đoạn [ 0,100 ] Bảng phiếu xuất hàng ( PXUAT ) TênSoPXNgayxuatTenKHÝ nghĩaSố phiếu xuất hàngNgày xuất hàngTên khách hàngKiểuCharDatetimenvarcharĐộ rộngRàng buộcKhóa chínhMặc định là ngày hiệnhành100Bảng chi tiết cụ thể phiếu xuất hàng ( CTPXUAT ) TênSoPXMaVTuSlXuatDgXuatÝ nghĩaSố phiếu xuất hàngMã vật tưSố lượng xuất hàngĐơn giá xuất hàngKiểu Độ rộngCharCharIntMoneyRàng buộcKhóa chínhGiá trị > 0G iá trị > 0B ảng hàng tồn ( TONKHO ) TênÝ nghĩaNamthang Năm thángMaVTuMã vật tưKiểuCharCharĐộ rộngRàng buộcKhóa chínhSlDauTongSLNTongSLXSlCuoiSố lượng tồn đầu kỳTổng số lượng nhập trong kỳTống số lượng xuất trong kỳSố lượng tồn cuối kỳIntIntIntInt – Tạo những khoá ngoại cho những bảng để bộc lộ những mối link theo thứ tự 1 – ∞ sau : VATTU-TONKHO, VATTU-CTPXUAT, PXUAT-CTPXUAT. Câu IIXây dựng trigger tg_SuaCTPX kiểm tra những ràng buộc dữ liệu khi sửa đổi dữ liệu trong bảngCTPXUAT : – Không cho sửa đổi dữ liệu tại những trường Số phiếu xuất và mã vật tư – Nếu số lượng tồn cuối kỳ tại thời gian trước khi sửa đổi nhỏ hơn ( số lượng xuất sau khisửa đổi – số lượng xuất trước khi sửa đổi ) thì không được cho phép sửa đổi số lượng xuất. Câu IIITạo bảng ảo có tên vw_Tonkho được cho phép hiển thị list tổng thể những vật tư có lượng tồnkho trong thời hạn gần nhất ( giá trị trường namthang đạt max ) bằng 0, thông tin hiển thị gồm : Nămtháng, Mã vật tư, Tên vật tư. Câu IVXây dựng hàm f_Soluongxuat, những tham số truyền vào là Mã vật tư và Ngày tháng năm, giátrị trả về là Tổng số lượng đã xuất của vật tư tương ứng tại thời gian đó. ————————————- Hết———————————Ghi chú : + Thí sinh không được sử dụng tài liệu khi làm bài + Cán bộ coi thi không lý giải gì thêm. Cán bộ ra đềHọ tên và chữ kýDuyệt đềTrưởng Bộ mônHọ tên và chữ kýBài giải. Câu 2.create trigger tg_suactpxon ctpxuatfor updateasif ( UPDATE ( sopx ) or UPDATE ( mavtu ) ) beginprint’khong duoc thay doi truong nay’rollback transactionendelsebegindeclare @ mavtu char ( 4 ) ; declare @ toncuoi intdeclare @ soluongban int ; select @ mavtu = mavtu from insertedselect @ toncuoi = slcuoi from tonkho where @ mavtu = mavtuselect @ soluongban = inserted.slxuat-deleted.slxuatfrom inserted inner join deleted on inserted.sopx = deleted.sopx andinserted.mavtu = deleted.mavtuwhere @ mavtu = inserted.mavtuif @ soluongban > @ toncuoibeginprint’so luong ton cuoi kong du’rollback transactionendelsebeginupdate tonkhoset slcuoi = slcuoi – @ soluongbanwhere mavtu = @ mavtuendendCâu 3.create view vw_tonkhoasselect top 1 with ties namthang, tonkho.mavtu, tenvtufrom tonkho inner join vattu on vattu.mavtu = tonkho.mavtuwhere slcuoi = 0 order by namthang descCâu 4.create function f_tongsoluongxuat ( @ mavtu char ( 4 ), @ thoigian datetime ) returns intasbegindeclare @ tongslxuat intselect @ tongslxuat = SUM ( slxuat ) from pxuat inner join ctpxuat on pxuat.sopx = ctpxuat.sopxwhere mavtu = @ mavtu and @ thoigian = ngayxuatgroup by mavtureturn ( @ tongslxuat ) end

Source: https://ta-ogilvy.vn
Category: Hỏi Đáp