assignment 2 _ de 2
DESCRIPTION
ass2 hệ cơ sở dữ liệu đại học bách khoa tp hcmTRANSCRIPT
Bài tập lớn số 2 – Đề 2 Trang 1
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
Bài tập lớn số 2
ĐỀ 2
Cho ERD sau
Bài tập lớn số 2 – Đề 2 Trang 2
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
PHẦN 1: TẠO CSDL TRÊN ORACLE (4đ)
I. Tạo bảng dữ liệu với các thuộc tính và ràng buộc sau (3.5đ)
1. NHÂN VIÊN (ID, Họ tên, ngày sinh, email, ngày vào làm, CMND, di động, điện thoại nội bộ,
địa chỉ, lương, trình độ, loại nhân viên, số bằng lái)
ID: Kiểu số, tự động tăng dần
CMND: bao gồm 9 hoặc 12 ký tự số và các nhân viên có CMND không được trùng nhau
Email: dạng chuỗi chỉ bao gồm các ký tự [0-9], [a-z], [A-Z], ‘.’, ‘_’, và có một ký tự ‘@’.
Ngày vào làm: kiểu DATE, có giá trị > 1/1/2000
Di động/ điện thoại nội bộ: bao gồm 10 hoặc 11 ký tự số
Loại nhân viên: Có giá trị
- 1: NV Quản lý
- 2: NV Kế toán
- 3: NV Bán hàng
- 4: NV Thu ngân
- 5: NV Nhập hàng
- 6: NV Giao hàng
2. NHÂN VIÊN_NGÀY NGHỈ (ID_NV, Ngày nghỉ)
ID_NV: khóa ngoại tham khảo đến NHÂN VIÊN (ID)
Ngày nghỉ: kiểu DATE
3. HÓA ĐƠN BÁN HÀNG (ID, thời điểm, cách thanh toán, chiết khấu, tổng tiền, tổng cây, ID_NV,
ID_PhieuDBH, ID_KH)
ID: mã số hóa đơn bán hàng, kiểu số tự động tang dần
Thời điểm: ngày xuất hóa đơn, kiểu DATE
Cách thanh toán: có các giá trị
- 0: ghi nợ
- 1: trả tiền liền nhưng chưa thanh toán
- 2: trả tiền liền đã thanh toán
Nếu có giá trị 1 hoặc 2, cần bổ sung thông tin số tiền chiết khấu trong thuộc tính chiết
khấu.
Tổng tiền: Tổng giá trị hóa đơn
Tổng cây: Tổng số cây trong hóa đơn.
ID_NV: nhân viên bán hàng, khóa ngoại tham khảo đến NHÂN VIÊN (ID)
ID_PhieuDBH: khóa ngoại tham khảo đến PHIẾU ĐẶT BÁN HÀNG(ID)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID), cần kiểm tra ID này là của nhân viên
bán hàng
Bài tập lớn số 2 – Đề 2 Trang 3
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
4. GỒM_CÂY VẢI_HĐ BÁN HÀNG (ID_CV, ID_HĐBH)
ID_CV: khóa ngoại tham khảo đến CÂY VẢI (ID)
ID_HĐBH: khóa ngoại tham khảo đến HÓA ĐƠN BÁN HÀNG (ID)
5. GIAO_NV_HDBH (ID_NV, ID_HDBH, thời điểm, cách đóng gói, số lượng, địa chỉ)
ID_NV: khóa ngoại tham khảo đến NHÂN VIÊN (ID), cần kiểm tra ID này là của nhân viên giao
hàng
ID_HDBH: khóa ngoại tham khảo đến HÓA ĐƠN BÁN HÀNG (ID)
Thời điểm: ngày giao hàng, kiểu DATE
Cách đóng gói: có giá trị 0/1.
- Nếu 0: để cây Thuộc tính số lượng chỉ số cây đã giao
- Nếu 1: đóng bao thuộc tính số lượng chỉ số bao đã đóng.
6. KHÁCH HÀNG (ID, tên, công ty đại diện, MST, điện thoại, địa chỉ, email, công nợ)
ID: kiểu số tự động tăng
Tên: Họ tên của khách hàng, kiểu biến kí tự
Công nợ: tổng số tiền hiện tại khách hàng đang nợ công ty
7. KHÁCH HÀNG_DI ĐỘNG (ID_KH, Di động)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID)
8. KHÁCH HÀNG_NGÂN HÀNG (ID_KH, Ngân hàng, Số tài khoản)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID)
9. PHIẾU BÁN ĐẶT HÀNG (ID, thời điểm, tình trạng, ID_KH)
Tình trạng: Có 4 giá trị: chưa xử lý/ đang xử lý/ đã hoàn thành/ hủy
ID_KH: khóa tham khảo đến KHÁCH HÀNG (ID)
10. LOẠI VẢI (ID, tên, mô tả)
ID: mã số loại vải, kiểu số tự động tăng
Tên: kiểu biến chuỗi (varchar)
Mô tả: kiểu kí tự cho phép ghi một đoạn dài
11. LOẠI VẢI_MÀU (ID_Loại Vải, mã màu, tên màu, ID_NCC)
ID_Loại vải: khóa ngoại tham khảo đến LOẠI VẢI (ID)
Mã màu: kiểu chuỗi (Char) 8 kí tự
ID_NCC: khóa tham khảo đến NHÀ CUNG CẤP (ID)
12. GIÁ BÁN (ID_KH, ID_Loại Vải, mã màu, thời điểm, giá)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID)
ID_Loại Vải, mã màu: khóa ngoại tham khảo đến LOẠI VẢI_MÀU (ID_Loại Vải, mã màu)
Thời điểm: kiểu DATE, ngày mà giá mới được áp dụng
13. GIÁ MUA (ID_Loại Vải, mã màu, thời điểm, giá)
ID_Loại Vải, mã màu: khóa ngoại tham khảo đến LOẠI VẢI_MÀU (ID_Loại Vải, mã màu)
Bài tập lớn số 2 – Đề 2 Trang 4
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
Thời điểm: kiểu DATE, ngày mà giá mới được áp dụng
14. GỒM_PHIẾU ĐBH_LOẠI VẢI MÀU (ID_Phiếu ĐBH, ID_Loại Vải, mã màu, mét, cây)
ID_Phiếu ĐBH: khóa ngoại tham khảo đến PHIẾU ĐẶT BÁN HÀNG (ID)
ID_Loại Vải, mã màu: khóa ngoại tham khảo đến LOẠI VẢI_MÀU (ID_Loại Vải, mã màu)
Mét: kiểu số thực, số lượng vải tính theo đơn vị mét mà khách hàng muốn đặt
Cây: Kiểu số nguyên, số lượng vải tính theo đơn vị cây mà khách hàng muốn đặt
15. CÂY VẢI (ID, chiều dài, tình trạng, ID_Lo, ID_Loại Vải, mã màu, ID_HĐMH)
ID: kiểu số tự động tăng
Chiều dài: đơn vị mét, kiểu số thực
Tình trạng: có các giá trị
- Kho: vải vẫn nằm trong kho
- Đã bán
- Bị hư
- Khách trả: Vải do khách hàng trả lại
- Trả NCC: Trả vải lại cho Nhà cung cấp
- Mất
ID_Lo: khóa ngoại tham khảo đến LÔ NHUỘM (ID)
ID_Loại Vải, mã màu: khóa ngoại tham khảo đến LOẠI VẢI_MÀU (ID_Loại Vải, mã màu)
ID_HĐMH: khóa tham khảo đến HÓA ĐƠN MUA HÀNG (ID)
16. LÔ NHUỘM (ID, ngày nhuộm)
ID: kiểu số tự động tăng
Ngày nhuộm: DATE
17. PHIẾU ĐẶT MUA HÀNG (ID, tình trạng, thời điểm, ID_NV)
(tương tự PHIẾU ĐẶT BÁN HÀNG)
18. GỒM_PHIẾU ĐMH_LOẠI VẢI MÀU (ID_Phiếu ĐBH, ID_Loại Vải, mã màu, mét, cây)
ID_Phiếu ĐMH: khóa ngoại tham khảo đến PHIẾU ĐẶT MUA HÀNG (ID)
ID_Loại Vải, mã màu: khóa ngoại tham khảo đến LOẠI VẢI_MÀU (ID_Loại Vải, mã màu)
Mét: kiểu số thực, số lượng vải tính theo đơn vị mét mà khách hàng muốn đặt
Cây: Kiểu số nguyên, số lượng vải tính theo đơn vị cây mà khách hàng muốn đặt
19. NHÀ CUNG CẤP (ID, tên, công ty đại diện, MST, điện thoại, địa chỉ, email, công nợ)
(tương tự KHÁCH HÀNG)
20. NHÀCC_DI ĐỘNG (ID_NCC, Di động)
ID_NCC: khóa ngoại tham khảo đến NHÀ CUNG CẤP (ID)
(tương tự di động của KHÁCH HÀNG)
21. NHÀCC_NGÂN HÀNG (ID_NCC, Ngân hàng, Số tài khoản)
ID_NCC: khóa ngoại tham khảo đến NHÀ CUNG CẤP (ID)
Bài tập lớn số 2 – Đề 2 Trang 5
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
22. KHÁCH HÀNG_TRẢ (ID_CV, ID_KH, ngày)
ID_CV: khóa ngoại tham khảo đến CÂY VẢI (ID)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID)
Ngày: kiểu DATE, ngày khách hàng trả
23. TRẢ_NHÀ CC (ID_CV, ID_NCC, ngày)
ID_CV: khóa ngoại tham khảo đến CÂY VẢI (ID)
ID_NCC: khóa ngoại tham khảo đến NHÀ CUNG CẤP (ID)
Ngày: kiểu DATE, ngày khách hàng trả
24. KHO (ID, tên, địa chỉ, diện tích)
Diện tích: số thực > 0
25. THANH TOÁN (ID, thời gian, số tiền, thu/chi, hình thức, người nhận/gởi, tên ngân hàng, số
tài khoản, ID_Nhân Viên, ID_KH, ID_NCC)
ID_Nhân Viên: khóa ngoại tham khảo đến bảng NHÂN VIÊN (ID)
ID_KH: khóa ngoại tham khảo đến KHÁCH HÀNG (ID)
ID_NCC: khóa ngoại tham khảo đến NHÀ CUNG CẤP (ID)
Thời gian: thời điểm thanh toán
Thu/chi: 1: Thu, 0: Chi
Hình thức: tiền mặt/ chuyển khoản
Người nhận/ gởi: nếu thuộc tính thu/chi = 1 (thu), giá trị ở ô này là tên của người gởi tiền cho
công ty còn ID_NV có vai trò là người nhận tiền; nếu thu/ chi = 0, giá trị ở ô này là tên người
nhận tiền còn ID_NV đóng vai trò là người gởi tiền.
Tên ngân hàng: nếu thuộc tính hình thức là tiền mặt giá trị ở đây sẽ là NULL
Số tài khoản: nếu thuộc tính hình thức là tiền mặt giá trị ở đây sẽ là NULL
26. HÓA ĐƠN MUA HÀNG (ID, thời điểm, chiết khấu, cách thanh toán, tổng tiền, tổng cây,
ID_Kho, ID_NV, ID_PhieuDBH, ID_NCC)
(Tương tự hóa đơn bán hàng)
ID_Kho: khóa tham khảo đến KHO (ID)
ID_NV: nhân viên nhập hàng, khóa ngoại tham khảo đến NHÂN VIÊN (ID)
ID_PhieuDMH: khóa ngoại tham khảo đến PHIẾU ĐẶT MUA HÀNG(ID)
ID_NCC: khóa ngoại tham khảo đến NHÀ CUNG CẤP (ID)
27. SỔ THU CHI (ID, số tiền, diễn giải, thu/chi, ngày, ID_TT, ID_HĐMH, ID_HĐBH)
Thu/chi: 1: Thu, 0: Chi
ID_TT: khóa ngoại tham khảo đến THANH TOÁN (ID)
Số tiền: Nếu thuộc tính ID_TT khác NULL, giá trị này bằng giá trị thuộc tính THANH TOÁN (số
tiền)
ID_HĐMH: khóa ngoại tham khảo đến HÓA ĐƠN MUA HÀNG (ID)
Bài tập lớn số 2 – Đề 2 Trang 6
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
ID_HĐBH: khóa ngoại tham khảo đến HÓA ĐƠN BÁN HÀNG (ID)
Nếu thuộc tính ID_HĐMH/ ID_HĐBH khác NULL,
Số tiền = HÓA ĐƠN MUA (BÁN) HÀNG. Tổng tiền - HÓA ĐƠN MUA (BÁN) HÀNG. Chiết khấu
(*) Các thuộc tính in nghiêng trong lược đồ quan hệ ở trên là khóa tham khảo
(*) Đường nối nét đậm trong ERD thay thể cho đường nối nét đôi giữa thực thể và mối quan hệ.
Lưu ý: Ngoài những gì đã được mô tả cụ thể ở trên, sinh viên phải tự xác định kiểu dữ liệu, kích thước
dữ liệu, và một số ràng buộc khác hợp lý, đặc biệt các ràng buộc về khóa chính, khóa ngoại, unique, not
null (dựa trên mô tả nghiệp vụ trong Assignment 1, ERD và lược đồ quan hệ đã cung cấp ở trên).
II. Tạo Index (0.5đ)
Người dùng cơ sở dữ liệu thường hay truy vấn những thông tin như sau:
a. Thông tin cây vải theo loại vải và màu sắc
b. Thông tin giao hàng (nếu có) theo mã phiếu đặt bán hàng.
Dựa trên mục đích truy vấn trên, bạn hãy tạo những index thích hợp để tăng tốc độ truy xuất cơ sở dữ
liệu.
PHẦN 2: STORE PROCEDURE, FUNCTION, TRIGGER (4.5đ)
I. Store Procedure/Function (2.25đ)
1. (0.25đ)Viết hàm tính số ngày nghỉ của một nhân viên trong một khoảng thời gian cụ thể
Input: tên nhân viên, thời gian bắt đầu, thời gian kết thúc
Output: số ngày nghỉ.
2. (0.75đ. Riêng KSTN tính 0.25đ)Viết hàm tính tổng tiền của hóa đơn bán hàng
Tổng tiền được tính bằng công thức
∑
Trong đó, giá bán được lấy từ bảng GIÁ BÁN (giá) của loại vải và khách hàng tương ứng, sao cho
thời điểm của giá này phải phù hợp với thời điểm hiện tại. Ví dụ với dữ liệu như ở bảng dưới, nếu
ngày hiên tại là 10/5/2016 thì giá được tính là 20.000đ.
Khách hàng Loại vải_màu Thời điểm Giá
A Kate trắng 3/3/2016 20.000đ
A Kate trắng 14/5/2016 21.000đ
Input: mã số hóa đơn bán hàng
Output: tổng số tiền.
3. (0.5đ)Viết thủ tục liệt kê thông tin chi tiết của các hóa đơn bán hàng của một phiếu đặt bán hàng
cụ thể
Bài tập lớn số 2 – Đề 2 Trang 7
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
Input: mã số phiếu đặt bán hàng
Output: danh sách thống kê các loại vải_màu đã bán
Ví dụ:
4. (0.5đ)Viết thủ tục liệt kê thông tin chi tiết của các lần giao hàng liên quan đến một phiếu đặt bán
hàng cụ thể.
Input: mã số phiếu đặt bán hàng
Output: danh sách những lần giao hàng cho phiếu đặt hàng đó
5. (0.25đ)Viết hàm tính giá cây vải bị khách hàng trả lại, giá này chính bằng giá khi khách hàng mua
cây vải đó.
Input: mã số cây vải
Output: giá cây vải
II. Trigger (1.75đ)
1. (1đ) Viết trigger cập nhật công nợ của khách hàng, công nợ của khách hàng thay đổi khi
- Khi hoàn thành việc tính tiền cho khách hàng (thuộc tính HÓA ĐƠN BÁN HÀNG.tổng tiền được cập
nhật vào bảng), nếu HÓA ĐƠN BÁN HÀNG.cách thanh toán = 0 KHÁCH HÀNG.công nợ mới =
công nợ cũ + tổng tiền, những trường hợp khác công nợ của khách hàng không thay đổi.
- Khi khách hàng trả cây vải (dòng mới được update vào bảng KHÁCH HÀNG_TRẢ), công nợ của
khách hàng đó được tính bằng công thức: KHÁCH HÀNG.công nợ mới = công nợ cũ – giá cây vải
được trả.
2. (0.75đ. Riêng KSTN chỉ tính 0.25đ)
Viết trigger tự động thêm dòng mới vào bảng SỔ THU CHI
- Nếu cách thanh toán của bất kì hóa đơn bán hàng nào được cập nhật thành giá trị 2 (trả tiền liền
đã thanh toán), một dòng mới được thêm vào bảng SỔ THU CHI với các giá trị
o Số tiền = HÓA ĐƠN BÁN HÀNG.tổng tiền – HÓA ĐƠN BÁN HÀNG.chiết khấu
o Diễn giải = ‘bán hàng tiền liền’
o Thu/chi = 1
o Ngày = ngày hiện tại
o ID_TT = NULL
o ID_HĐMH = NULL
o ID_HĐBH = HÓA ĐƠN BÁN HÀNG.ID
Loại vải màu Số cây Số mét
Kate trắng 10 1,169.60
Kate biển 5 456.00
Tuyết xanh trung 200 11,354.00
Tuyết trắng 10 456.00
Bài tập lớn số 2 – Đề 2 Trang 8
Hệ Cơ Sở Dữ Liệu – HK2 / 2015 – 2016 Khoa KH&KTMT – Bộ môn Hệ Thống Thông Tin
- Nếu cách thanh toán của bất kì hóa mua bán hàng nào được cập nhật thành giá trị 2 (trả tiền liền
đã thanh toán), một dòng mới được thêm vào bảng SỔ THU CHI với các giá trị
o Số tiền = HÓA ĐƠN MUA HÀNG.tổng tiền – HÓA ĐƠN MUA HÀNG.chiết khấu
o Diễn giải = ‘trả tiền liền mua hàng’
o Thu/chi = 0
o Ngày = ngày hiện tại
o ID_TT = NULL
o ID_HĐMH = HÓA ĐƠN MUA HÀNG.ID
o ID_HĐBH = NULL
- Bất kì dòng mới nào thêm vào bảng thanh toán đều kích hoạt trigger này, một dòng mới sẽ được
thêm vào bảng SỔ THU CHI với các giá trị.
o Số tiền = THANH TOÁN.số tiền
o Diễn giải = ‘thanh toán định kì’
o Thu/chi = THANH TOÁN.thu/chi
o Ngày = THANH TOÁN.thời gian
o ID_TT = THANH TOÁN.ID
o ID_HĐMH = NULL
o ID_HĐBH = NULL
PHẦN 3: THAO TÁC CƠ SỞ DỮ LIỆU (2.5đ)
I. Insert (1đ)
Thực hiện việc nhập dữ liệu cho các bảng trong cơ sở dữ liệu.
Yêu cầu: Dữ liệu trong các bảng phải có nghĩa, và mỗi bảng có tối thiểu 4 hàng.
II. Select (1.5đ)
a. Liệt kê danh sách các hóa đơn bán hàng mà có thuộc tính cách thanh toán có giá trị là 1 (trả tiền
liền chưa thanh toán). Sắp xếp theo thứ tự thời điểm tăng dần.
b. Liệt kê số lượng (theo cây) của từng loại vải, theo từng màu thực tế tồn trong kho có ID = 1
c. Liệt kê số lượng (theo mét và theo cây) loại vải-màu đã được bán. Sắp xếp theo thứ tự giảm dần
theo số lượng cây.
Chú ý: Script cho phần I và II, Insert của phần III được yêu cầu sao cho có thể chạy
trong một lần từ đầu đến cuối để tạo cơ sở dữ liệu hoàn chỉnh đã có dữ liệu.
---Hết---