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

Bài tập SQL server hay

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 (225.07 KB, 15 trang )

Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
BÀI 1: CÁC ĐỐI TƯỢNG TRONG CƠ SỞ DỮ LIỆU
1.1. Bằng công cụ Enterprise Manager, tạo mới CSDL có tên QLBanHang
(Quản lý bán hàng) có kích thước được mô tả như sau:
a. Data File: Kích thước tạo lập 50MB; mỗi lần tăng 10MB; giới hạn kích thước
tập tin không tăng hơn 200MB.
b. Log File: Kích thước tạo lập 10MB; mỗi lần tăng 5MB; không giới hạn việc
tăng kích thước tập tin.
1.2. Sử dụng công cụ Enterprise Manager để tạo cấu trúc các bảng có mô tả như
bên dưới trong CSDL quản lý bán hàng.
Danh mục Vật tư (VATTU)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

MaVTu

Mã vật tư

Char

4

TenVTu

Tên vật tư


Nvarchar

100

DvTinh

Đơn vị tính

Nvarchar

10

PhanTram

Tỷ lệ phần trăm

Real

Danh mục Nhà cung cấp (NHACC)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

MaNhaCc

Mã nhà cung cấp


Char

3

TenNhaCc

Tên nhà cung cấp

Nvarchar

100

DiaChi

Địa chỉ

Nvarchar

200

DienThoai

Điện thoại

Nvarchar

20

Đơn đặt hàng (DONDH)

Tên cột

Ý nghĩa

Kiểu

Độ rộng

SoDh

Số đơn đặt hàng

Char

4

NgayDh

Ngày đặt hàng

Date

MaNhaCc

Mã nhà cung cấp

Char

3


Chi tiết Đơn đặt hàng (CTDONDH)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

SoDh

Số đơn đặt hàng

Char

4

MaVTu

Mã vật tư

Char

4

SlDat

Số lượng đặt hàng

Int


1


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
Phiếu nhập hàng (PNHAP)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

SoPn

Số phiếu nhập hàng Char

NgayNhap

Ngày nhập hàng

Date

SoDh

Số đơn đặt hàng

Char


4

Kiểu

Độ rộng

4

Chi tiết Nhập hàng (CTPNHAP)
Tên cột

Ý nghĩa

SoPn

Số phiếu nhập hàng Char

4

MaVTu

Mã vật tư

4

SlNhap

Số lượng
hàng


DgNhap

Đơn giá nhập hàng

Char
nhập Int
Money

Phiếu xuất hàng (PXUAT)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

SoPx

Số phiếu xuất

Char

4

NgayXuat

Ngày xuất hàng

Date


TenKh

Tên khách hàng

Nvarchar

100

Chi tiết xuất hàng (CTPXUAT)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

SoPx

Số phiếu xuất

Char

4

MaVTu

Mã vật tư


Char

4

SlXuat

Số lượng xuất hàng

Int

DgXuat

Đơn giá xuất hàng

Money

Tồn kho (TONKHO)
Tên cột

Ý nghĩa

Kiểu

Độ rộng

NamThang

Năm tháng

Char


6

MaVTu

Mã vật tư

Char

4

SLDau

Số lượng tồn đầu kỳ

Int

TongSLN

Tổng số lượng nhập trong kỳ

Int

TongSLX

Tổng số lượng xuất trong kỳ

Int

SLCuoi


Số lượng tồn cuối kỳ

Int

2


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
1.3. Sử dụng câu lệnh INSERT INTO thêm dữ liệu vào các bảng
a. Bảng VATTU

b. Bảng NHACC

c. Bảng DONDH

3


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
d. Bảng PNHAP

e. Bảng CTDONDH

f. Bảng CTPNHAP

4


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)

g. Bảng CTPXUAT

h. Bảng PXUAT

i. Bảng TONKHO

5


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
1.4. Backup/Restore database
a. Sử dụng chức năng Backup Database để thực hiện Backup toàn bộ database
QLBanHang thành file QLBanHang.bak
b. (Chỉ thực hiện yêu cầu này sau khi bạn đã Backup dữ liệu thành công) Xóa
các bảng đã tạo ra trong database QLBanHang. Sử dụng chức năng Restore để phục
hồi dữ liệu từ file QLBanHang.bak.
1.5. Trong CSDL quản lý bán hàng, xây dựng các View như sau:
a. Tạo view có tên vwDMVT bao gồm các thông tin sau: Mã vật tư, Tên vật tư.
View này dùng để liệt kê danh sách các vật tư có trong bảng VATTU.
b. Tạo view có tên vwDonDH_TongSLDatNhap bao gồm các thông tin sau: Số
đặt hàng, Mã vật tư, Tổng số lượng đặt, Tổng số lượng nhập. View này dùng để
thống kê những đơn đặt hàng nào được nhập hàng đầy đủ.
c. Tạo view có tên vwDonDH_DaNhapDu bao gồm các thông tin sau: Số đặt
hàng, Tình trạng. Trong đó, cột Tình trạng sẽ có 2 giá trị là “Đã nhập đủ” nếu đơn
hàng đó đã nhập đủ và “Chưa nhập đủ” nếu đơn hàng đó chưa nhập đủ.
d. Tạo view có tên vwTongNhap bao gồm các thông tin sau: Năm tháng, Mã
vật tư, Tổng số lượng nhập. View này dùng để thống kê số lượng nhập vào các vật tư
trong từng năm tháng tương ứng. (Chú ý: không dùng bảng TONKHO)
e. Tạo view có tên vwTongXuat bao gồm các thông tin sau: Năm tháng, Mã vật
tư, Tổng số lượng xuất. View này dùng để thống kê số lượng xuất của vật tư trong

từng năm tháng tương ứng. (Chú ý: Không dùng bảng TONKHO)
f. Tạo view có tên vwDonDH_MaVTu_TongSLNhap bao gồm các thông tin
sau: Số đặt hàng, ngày đặt hàng, mã vật tư, số lượng đặt, tổng số lượng đã nhập hàng
1.6. Kết hợp các view ở câu 1.5 thực hiện các truy vấn chọn lựa trả lời các câu
hỏi sau:
a. Cho biết danh sách các đơn đặt hàng chưa được nhập hàng
b. Cho biết danh sách các mặt hàng chưa được đặt hàng bao giờ.
c. Cho biết nhà cung cấp nào có nhiều đơn đặt hàng nhất.
d. Cho biết vật tư nào có tổng số lượng xuất bán nhiều nhất.
e. Cho biết đơn đặt hàng nào có nhiều mặt hàng nhất.
f. Cho biết tình hình nhập xuất của vật tư, thông tin gồm: Năm tháng, Mã vật tư,
Tên vật tư, Tổng số lượng nhập, Tổng số lượng xuất
g. Cho biết tình hình đặt và nhập hàng: Đơn đặt hàng, mã vật tư, số lượng đặt,
tổng số lượng nhập
h. Thống kê tình hình đặt hàng trong từng ngày: Ngày đặt hàng, mã vật tư, tên
vật tư, tổng số lượng đặt hàng
i. Thống kê tình hình nhập hàng trong từng ngày: Ngày nhập hàng, mã vật tư,
tên vật tư, tổng số lượng nhập hàng
6


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
j. Thống kê những đơn đặt hàng nào chưa được nhập đủ số lượng hàng
1.7. Bổ sung thêm các dữ liệu mới vào trong các bảng. Chú ý tính chất hợp lý
của dữ liệu:
- Xác định mối quan hệ cha, con giữa các bảng. Kiểm tra xem có dữ liệu nhập
vào không hợp lý: chỉ có ở bảng con mà không có ở bảng cha hay không?
- Nhập chi tiết đơn đặt hàng nào mà SoDH không có trong bảng DONHANG
không?
- Nhập vào chi tiết phiếu nhập 1 vật tư nào mà trong chi tiết đơn đặt hàng của

phiếu đó không đặt hay không?
- Nhập vào chi tiết phiếu xuất nào mà số lượng vật tư xuất của một vật tư lớn
hơn số lượng tồn trong bảng TONKHO của vật tư đó trong cùng năm tháng xuất hay
không?
BÀI 2: CÁC RẰNG BUỘC TOÀN VẸN DỮ LIỆU
2.1. Sử dụng công cụ Enterprise Manager để thêm các ràng buộc sau vào các
bảng trong CSDL QLBanHang
Chú ý: nếu dữ liệu nhập vào các bảng trong bài trước không thỏa mãn thì một số
ràng buộc sẽ không tạo được. Khi đó, thực hiện các bước sau:
- Xác định dòng dữ liệu nhập sai dựa vào ý nghĩa ràng buộc mà bạn đang tạo. Ví
dụ: Nếu tạo ràng buộc miền giá trị (CHECK) 0<=PhanTram<=100 nhưng không
thành công thì chắc chắn dữ liệu chỉ có thể nhập sai trong bảng VATTU, cột
PhanTram.
- Sửa lại dữ liệu nhập
- Thực hiện lại việc tạo ràng buộc
Danh mục Vật tư (VATTU)
- MaVTu là khóa chính
- Tên vật tư phải duy nhất, không trùng
- Giá trị mặc định cho cột đơn vị tính là “”
- 0<=PhanTram<=100
Danh mục Nhà cung cấp (NHACC)
- MaNhaCc là khóa chính
- Tên nhà cung cấp và địa chỉ nhà cung cấp phải là duy nhất, không trùng
- Giá trị mặc định cho cột DienThoai là “Chưa có”
Đơn đặt hàng (DONDH)
- SoDH là khóa chính
- Giá trị mặc định cho cột ngày đặt hàng là ngày hiện hành. Dùng hàm Getdate()
7



Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
Chi tiết Đơn đặt hàng (CTDONDH)
- SoDH, MaVTu là khóa chính
- SlDat >0
Chi tiết Nhập hàng (CTPNHAP)
- SoPn, MaVTu là khóa chính
- SlNhap >0
- DgNhap >0
Chi tiết xuất hàng (CTPXUAT)
- SoPx, MaVTu là khóa chính
- SlXuat >0
- DgXuat >0
Tồn kho (TONKHO)
- NamThang, MaVTu là khóa chính
- SlDau >=0
- TongSLN >=0
- TongSLX >=0
- Giá trị mặc định cho các cột SLDau, TongSLN, TongSLX là 0
- Trong thuộc tính Formula của cột SLCuoi: SLDau + TongSLN – TongSLX

2.2. Sử dụng công cụ Enterprise Manager để thêm vào các kiểm tra ràng buộc về
khóa ngoại cho các bảng như sau:
STT BẢNG
CỘT
BẢNG THAM CHIẾU
1
DONDH
MANHACC
NHACC
2

CTDONDH
MAVTU
VATTU
3
CTDONDH
SODH
DONDH
4
PNHAP
SODH
DONDH
5
CTPNHAP
MAVTU
VATTU
6
CTPNHAP
SOPN
PNHAP
7
CTPXUAT
MAVTU
VATTU
8
CTPXUAT
SOPX
PXUAT
9
TONKHO
MAVTU

VATTU
Chú ý: Tất cả các mối liên kết khóa ngoại đều có giá trị CASCADE cho các sự
kiện ON UPDATE và ON DELETE

8


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
2.3. Phát sinh script
a. Sử dụng chức năng Generate Script của công cụ Enterprise Manager để phát
sinh toàn bộ đoạn script dùng để tạo các bảng và ràng buộc đã làm.
b. Lưu script vừa phát sinh thành qlbanhang.sql
2.4. Tạo bảng và ràng buộc bằng câu lệnh (script)
Xóa các bảng và các ràng buộc vừa tạo. Chú ý đến các ràng buộc khóa ngoại
giữa các bảng để xác định thứ tự các bảng sẽ bị xóa.
b. Sử dụng công cụ Query Analyzer, viết các câu lệnh tạo bảng và các ràng buộc
khóa. Bạn có thể chọn một trong hai cách thực hiện:
- Tạo các bảng trước, sau đó sử dụng câu lệnh ALTER TABLE ADO
CONTRAINT để tạo các ràng buộc
- Tạo các bảng kết hợp với các ràng buộc
- Bạn có thể tham khảo lại file script đã lưu qlbanhang.sql để kiểm tra câu lệnh
của mình và tập cách đọc hiểu đoạn script do Enterprise Manager tạo ra.
2.5. Thiết lập mô hình quan hệ dữ liệu (diagram) của CSDL quản lý bán hàng
như bên dưới: Lưu tên: QLBanHang_KetNoi

BÀI 3: LẬP TRÌNH VỚI CSDL
3.1. Trong CSDL quản lý bán hàng thực hiện các truy vấn sau:
a. Hiển thị danh sách các vật tư trong bảng VATTU sắp xếp theo thứ tự tên vật
tư giảm dần.
b. Hiển thị danh sách các nhà cung cấp trong bảng NHACC có cột địa chỉ ở

HCM, sắp xếp dữ liệu theo họ tên tăng dần.
9


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
c. Hiển thị danh sách các thông tin trong bảng CTPNHAP có thêm cột thành
tiền biết rằng Thành tiền=SLNhap*DgNhap
d. Hiển thị danh sách các mã nhà cung cấp, tên nhà cung cấp không trùng lặp dữ
liệu đã đặt hàng trong bảng DONDH.
e. Hiển thị danh sách các phiếu xuất hàng gồm có các cột: Số phiếu xuất và tổng
giá trị. Trong đó sắp xếp theo thứ tự tổng trị giá giảm dần.
f. Xóa chi tiết các đơn vật tư trong bảng CTDONDH có ngày đặt hàng là
15/01/2002
g. Xóa toàn bộ các dòng dữ liệu trong bảng CTPXUAT.
h. Sử dụng lại tập tin chứa các lệnh thêm dữ liệu INSERT INTO trước đây để
chèn lại các dữ liệu đã bị xóa trong bảng CTDONDH và CTPXUAT.
i. Sử dụng COMPUTE BY và các hàm tính toán để thống kê nhóm dữ liệu:
- Hiển thị các thông tin trong bảng CTPXUAT và bổ sung thêm cột thành tiền,
sao cho có thống kê dòng tổng cộng số tiền ở từng phiếu xuất.
- Hiển thị các thông tin: Mã vật tư, Số phiếu nhập, số lượng nhập, đơn giá
nhập trong bảng CTPNHAP và thống kê dòng tổng cộng số lượng, giá thấp nhất, giá
cao nhất ở từng vật tư.
3.2. Sử dụng cú pháp IF để thực hiện các yêu cầu sau:
a. Cho biết đơn giá xuất trung bình của hàng hóa “Đầu DVD Hitachi 1 đĩa”
trong bảng CTPXUAT hiện giờ là bao nhiêu? Nếu lớn hơn 3.800.000 thì in ra
“Không nên thay đổi giá bán”, ngược lại in ra “Đã đến lúc tăng giá bán”
b. Sử dụng hàm DATENAME để tính xem có đơn đặt hàng nào đã được lập vào
ngày chủ nhật không? Nếu có thì in ra danh sách các đơn đặt hàng đó, ngược lại thì in
ra chuỗi “Ngày lập các đơn đặt hàng đều là hợp lệ”
c. Hãy cho biết đã có bao nhiêu phiếu nhập hàng cho mặt hàng DD01, nếu có thì

in ra “có xx phiếu nhập hàng cho mặt hàng D001”, ngược lại thì in ra “Chưa có phiếu
nhập hàng nào cho mặt hàng DD01”
3.3. Sử dụng cú pháp WHILE để thực hiện yêu cầu sau: Tạo một bảng tên
VATTU_Temp có cấu trúc và dữ liệu đựa vào bảng VATTU (chỉ lấy 2 cột: MaVTu,
TenVTu và bỏ đi các constraint liên quan). Sau đó sử dụng WHILE viết đoạn chương
trình dùng để xóa từng dòng dữ liệu trong bảng VATTU_Temp đối với điều kiện câu
lệnh bên trong vòng lặp khi mỗi lần thực hiện chỉ được phép xóa một dòng dữ liệu
trong bảng VATTU_Temp. Trong khi xóa nên thông báo ra màn hình nội dung
“Đang xóa vật tư” + tên vật tư.
3.4. Sử dụng cú pháp CASE lồng vào các lệnh truy vấn cần thiết trong các yêu
cầu sau:
a. Liệt kê danh sách các đơn đặt hàng trong bảng DONDH bổ sung thêm cột
hiển thị thứ trong tuần (bằng tiếng việt) của ngày đặt hàng.
b. Giảm đơn giá của các hàng hóa bán ra (DGXUAT) trong tháng 01/2002 theo
quy tắc sau:
10


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
- Không giảm nếu số lượng <4
- Giảm 5%nếu số lượng >=4 và số lượng <10
- Giảm 10% nếu số lượng >=10 và số lượng <=20
- Giảm 20% nếu số lượng >20.
BÀI 4: THỦ TỤC NỘI TẠI
4.1. Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại tính toán các yêu cầu
sau:
a. Xây dựng thủ tục tính số lượng đặt hàng với tên spud_DONDH_TinhSLDat
gồm có 2 tham số vào là: Số đặt hàng và Mã vật tư, 1 tham số ra là: Số lượng đặt hàng
của một vật tư trong một số đặt hàng.
b. Xây dựng thủ tục tính tổng số lượng đã nhập hàng với tên

spud_PNHAP_TinhTongSLNHang gồm có 2 tham số vào là: Số đặt hàng và mã vật
tư, 1 tham số ra là : Tổng số lượng đã nhập hàng của một vật tư trong một số đặt
hàng.
c. Xây dựng thủ tục tính số lượng tồn kho cuối kỳ của một vật tư với tên
spud_TONKHO_TinhTonCuoi có 2 tham số vào là: Năm tháng và mã vật tư, 1
tham số ra là: Số lượng cuối kỳ của một vật tư trong năm tháng truyền vào.
4.2. Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại cập nhật dữ liệu trong
bảng VATTU. Các thủ tục này có kiểm tra các ràng buộc dữ liệu và thông báo ra các
lỗi rõ ràng khi dữ liệu vi phạm các ràng buộc.
a. Xây dựng thủ tục thêm mới dữ liệu vào bảng VATTU với tên
spud_VATTU_Them gồm có 4 tham số vào chính là giá trị thêm mới cho các cột
trong bảng VATTU: Mã vật tư, tên vật tư, đơn vị tính và phần trăm. Trong đó cần
kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT INTO để
thêm dữ liệu vào bảng VATTU
- Mã vật tư phải duy nhất
b. Xây dựng thủ tục xóa một vật tư có trong bảng VATTU bới tên
spud_VATTU_Xoa gồm có 1 tham số vào chính là mã vật tư cần xóa. Trong đó cần
kiểm tra tính ràng buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong
bảng VATTU
- Mã vật tư phải chưa có trong bảng CTDONDH
- Mã vật tư phải chưa có trong bảng CTPXUAT
- Mã vật tư phải chưa có trong bảng TONKHO
c. Xây dựng thủ tục sửa đổi vật tư trong bảng VATTU theo giá trị Mã vật tư
nhập vào với tên spud_VATTU_Sua gồm có 4 tham số vào chính là giá trị cần thay
đổi của các cột trong bảng VATTU: Mã vật tư, tên vật tư, đơn vị trính và phần trăm.
Trong thủ tục chỉ thực hiện lệnh UPDATE SET để cập nhật dữ liệu vào bảng VATTU
với các giá trị cần thay đổi. Đưa ra thông báo đã sửa giá trị nào, không sửa nếu giá trị
đó là giá trị hiện tại của bảng.(Chú thích: Nếu Mã vật tư cần sửa không có trong bảng
thì đưa ra thông báo: “Không tìm thấy MÃ VẬT TƯ như bạn yêu cầu” và không sửa
11



Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
thông tin. Nếu tất cả 4 thông số cần sửa trùng với giá trị tương ứng của bảng thì đưa
ra thông báo: “Đã tồn tại giá trị này trong bảng. Không cần sửa đổi” và không
sửa thông tin. Còn sửa thông tin nào thì đưa ra thông báo đã sửa. VD: “ Đã cập nhật
cột PHẦN TRĂM”,...)
4.3. Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại liệt kê dữ liệu với các
yêu cầu sau:
a. Xây dựng thủ tục liệt kê các cột dữ liệu trong bảng VATTU với tên
spud_VATTU_BcaoDanhSach, thủ tục này không có tham số nào. Hành động duy
nhất trong thủ tục này đơn giản chỉ là một câu lệnh truy vấn SELECT * FROM
VATTU có sắp xếp theo thứ tự tên vật tư tăng dần.
b. Xây dựng thủ tục liệt kê các cột dữ liệu trong bảng TONKHO có thể hiện
thêm cột TENVTU trong bảng VATTU với tên spud_TONKHO_BcaoTonKho gồm
có 1 tham số vào là năm tháng muốn lọc dữ liệu
c. Xây dựng thủ tục liệt kê các cột dữ liệu trong hai bảng dữ liệu PXUAT và
CTPXUAT có thể hiện thêm cột TENVTU trong bảng VATTU với tên là
spud_PXUAT_BcaoPhieuXuat gồm có 1 tham số vào là: Số phiếu xuất muốn lọc dữ
liệu có giá trị mặc định là NULL. Tuy nhiên nếu lúc gọi thủ tục mà không truyền giá
trị số phiếu xuất vào thì xem như không lọc gì cả, khi đó thủ tục sẽ liệt kê tất cả phiếu
xuất trong bảng PXUAT
4.4. Trong CSDL quản lý bán hàng, tạo các thủ tục nội tại dùng cho việc cập
nhật dữ liệu trong bảng DONDH, CTDONDH để về sau sử dụng trong đơn đặt hàng.
Các thủ tục này có kiểm tra các ràng buộc dữ liệu và thông báo ra các lỗi rõ ràng khi
dữ liệu vi phạm các ràng buộc.
a. Xây dựng thủ tục thêm mới dữ liệu vào bảng DONDH với tên
spud_DONDH_Them gồm có 3 tham số vào là giá trị thêm mới cho các cột trong
bảng DONDH: Số đặt hàng, mã nhà cung cấp, ngày đặt hàng. Trong đó cần kiểm tra
các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT để thêm dữ liệu

vào bảng DONDH
- Số đặt hàng phải là duy nhất
- Mã nhà cung cấp phải có bên bảng NHACC
- Ngày đặt hàng có thể không truyền vào (optional), khi đó sẽ lấy ngày hiện
hành truyền vào
b. Xây dựng thủ tục xóa DONDH với tên spud_DONDH_Xoa gồm có 1 tham
số vào chính là số đặt hàng cần xóa. Tuy nhiên nếu ràng buộc dữ liệu hợp lệ thì xóa tự
động luôn các dòng dữ liệu liên quan trong bảng CTDONDH. Trong đó cần kiểm tra
ràng buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong bảng
DONDH
- Số đặt hàng chưa có trong bảng PNHAP
c. Xây dựng thủ tục sửa đổi dữ liệu trong bảng DONDH với tên
spud_DONDH_Sua gồm có 3 tham số vào chính là giá trị cần thay đổi của các cột
trong bảng DONDH: Số đặt hàng, mã nhà cung cấp, ngày đặt hàng. Trong đó cần
12


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh UPDATE SET để
cập nhật dữ liệu vào bảng DONDH
- Mã nhà cung cấp phải có bên bảng NHACC
- Ngày đặt hàng phải trước ngày nhập hàng (Nếu đơn đặt hàng đã được nhập về
rồi)
d. Xây dựng thủ tục thêm mới dữ liệu vào bảng CTDONDH với tên
spud_CTDONDH_Them gồm có 3 tham số chính là giá trị thêm mới cho các cột
trong bảng CTDONDH: Số đặt hàng, mã vật tư, số lượng đặt hàng. Trong đó cần
kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lệnh INSERT để thêm
dữ liệu vào bảng CTDONDH.
- Số đặt hàng phải có bên bảng DONDH
- Mã vật tư phải có bên bảng VATTU

- Số đặt hàng và mã vật tư phải duy nhất trong bảng CTDONDH
e. Xây dựng thủ tục xóa CTDONDH với tên spud_CTDONDH_Xoa gồm có 2
tham số vào chính là số đặt hàng và mã vật tư cần xóa. Trong đó cần kiểm tra ràng
buộc dữ liệu trước khi thực hiện lệnh DELETE để xóa dữ liệu trong bảng
CTDONDH.
- Số đặt hàng và mã vật tư này chưa được nhập hàng trong các bảng liên quan
PNHAP và CTPNHAP
f. Xây dựng thủ tục sửa đổi dữ liệu trong bảng CTDONDH với tên
spud_CTDONDH_Sua gồm có 3 tham số vào chính là giá trị cần thay đổi của các
cột trong bảng CTDONDH: Số đặt hàng, mã vật tư, số lượng đặt hàng. Trong đó cần
kiểm tra các ràng buộc dữ liệu phải hợp lệ trước khi thực hiện lênh UPDATE SET để
cập nhật dữ liệu vào bảng CTDONDH
- Số đặt hàng và mã vật tư có bên bảng CTDONDH
- Số lượng đặt mới phải >= tổng số lượng đã nhập hàng (Nếu đã có nhập hàng)
BÀI 5: HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA
5.1. Xây dựng các hàm đơn trị sau:
a. Xây dựng hàm Fn_TongNhapThang(@NamThang, @MaVTu) trả về tổng số
lượng đã nhập trong tháng của vật tư
b. Xây dựng hàm Fn_TongXuatThang(@NamThang, @MaVTu) trả về tổng số
lượng đã xuất trong tháng của vật tư
c. Xây dựng hàm Fn_TongNhap(@SoDH, @MaVTu) trả về tổng số lượng đã
nhập của vật tư theo số đặt hàng.
d. Xây dựng hàm Fn_ConNhap((@SoDH, @MaVTu) trả về số lượng còn phải
nhập của vật tư theo số đặt hàng (Có sử dụng hàm Fn_TongNhap)
e. Xây dựng hàm tồn kho Fn_TonKho(@NamThang, @MaVTu) trả về số lượng
tồn kho của vật tư theo năm tháng
13


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)

5.2. Xây dựng các hàm đọc bảng sau:
a. Sử dụng hàm Fn_ConNhap để viết hàm Fn_DS_VatTuConNhap(@SoDH) liệt
kê Số đặt hàng, Mã vật tư, Số lượng thiếu của các vật tư chưa nhập đủ
b. Fn_DS_VatTuTonKho(@NamThang, @ToiThieu) liệt kê danh sách các vật
tư trong @NamThang với số lượng tồn kho tối thiểu là @ToiThieu
5.3. Xây dựng hàm tạo bảng:
Fn_DS_Nhap(@NamThang) liệt kê các thông tin sau: Mã vật tư, Số lượng tồn
kho, Tình trạng trong đó cột [Tình trạng] có giá trị “Cần nhập thêm” nếu số lượng tồn
kho của vật tư đó nhỏ hơn 10.
BÀI 6: TRIGGER
6.1. Tạo Trigger thêm mới dữ liệu để kiểm tra các ràng buộc toàn vẹn dữ liệu
theo yêu cầu bên dưới:
a. Xây dựng Trigger khi thêm mới dữ liệu vào bảng PNHAP với tên
tg_PNHAP_Them. Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ
- Ngày nhập hàng phải sau ngày đặt hàng
b. Xây dựng trigger khi thêm mới dữ liệu vào bảng CTPNHAP với tên
tg_CTPNHAP_Them. Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ
- Số lượng nhập hàng <=(Số lượng đặt – Tổng số lượng đã nhập vào trước đó)
6.2. Tạo Trigger khi xóa dữ liệu dùng để kiểm tra các ràng buộc toàn vẹn dữ liệu
như yêu cầu bên dưới
a. Xây dựng trigger khi xóa dữ liệu trong bảng PXUAT với tên
tg_PXUAT_Xoa. Trong đó cần thực hiện các hành động
- Thực hiện tự động xóa các dòng dữ liệu liên quan bên bảng CTPXUAT
b. Xây dựng trigger khi xóa dữ liệu trong bảng PNHAP với tên
tg_PNHAP_Xoa. Trong đó cần thực hiện các hành động
- Thực hiện tự động xóa các dòng dữ liệu liên quan bên bảng CTPNHAP
6.3. Tạo trigger khi sửa đổi dữ liệu dùng để kiểm tra các ràng buộc toàn vẹn dữ
liệu như bên dưới
a. Xây dựng trigger khi sửa đổi dữ liệu trong bảng PNHAP với tên
tg_PNHAP_Sua. Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ

- Không cho phép sửa đổi giá trị của các cột: Số phiếu nhập, số đặt hàng
- Kiểm tra giá trị mới của cột nhập hàng phải sau ngày đặt hàng
b. Xây dựng trigger khi sửa dữ liệu trong bảng PXUAT với tên
tg_PXUAT_Sua. Trong đó cần kiểm tra các ràng buộc dữ liệu phải hợp lệ
- Không cho phép sửa đổi giá trị cột số phiếu xuất
- Kiểm tra giá trị mới của ngày xuất phải cùng năm tháng với giá trị cũ của ngày
xuất. Nếu khác nhau thì thông báo lỗi không cho sửa đổi
14


Hệ quản trị cơ sở dữ liệu (Trường đại học Kỹ thuật - Hậu cần CAND)
6.4. Tạo trigger khi thêm mới dữ liệu dùng để kiểm tra các ràng buộc toàn vẹn
dữ liệu và tính toán tự động như yêu cầu bên dưới
a. Trong bảng PNHAP tạo thêm cột tổng giá trị có tên TONGTG với kiểu Float
dùng để lưu tổng trị giá của 1 phiếu nhập hàng. Trong trigger tg_CTPNHAP_Them
đã xây dựng trước đó ở phần 6.1b. Bổ sung thêm các tính toán tự động sau:
- Tăng giá trị tại cột TONGTG trong bảng PNHAP khi dữ liệu trong bảng
CTPNHAP được thêm vào
- Tăng giá trị tại cột TONGSLN trong bảng TONKHO khi dữ liệu trong bảng
CTPNHAP được thêm vào
b. Trong bảng PXUAT tạo thêm cột tổng giá trị có tên TONGTG với kiểu Float
dùng để lưu tổng trị giá của một phiếu xuất hàng. Xây dựng trigger khi thêm mới dữ
liệu vào bảng CTPXUAT với tên tg_CTPXUAT_Them. Trong đó cần kiểm tra các
ràng buộc dữ liệu phải hợp lệ và tính toán tự động như sau:
- Kiểm tra số phiếu xuất phải tồn tại trong bảng PXUAT
- Kiểm tra mã vật tư phải tồn tại trong bảng VATTU
- Kiểm tra số lượng xuất phải đủ trong TONKHO
- Kiểm tra đơn giá xuất phải dương. Nếu tất cả các ràng buộc ở trên hợp lệ thì tự
động thực hiện các hành động sau:
+ Tăng giá trị tại cột TONGTG trong bảng PXUAT

+ Tăng giá trị tại cột TONGSLX trong bảng TONKHO
6.5. Tạo trigger khi xóa dữ liệu dùng để kiểm tra các ràng buộc toàn vẹn dữ liệu
và tính toán tự động như yêu cầu bên dưới:
a. Xây dựng trigger khi xóa dữ liệu trong bảng CTPXUAT với tên
tg_CTPXUAT_Xoa. Trong đó cần thực hiện các tính toán như sau:
- Giảm giá trị tại cột TONGTG trong bảng PXUAT
- Giảm giá trị tại cột TONGSLX trong bảng TONKHO
b. Xây dựng trigger khi xóa dữ liệu trong bảng CTPNHAP với tên
tg_CTPNHAP_Xoa. Trong đó cần thực hiện các tính toán như sau:
- Giảm giá trị tại cột TONGTG trong bảng PNHAP
- Giảm giá trị tại cột TONGSLN trong bảng TONKHO

15



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×