assignment 2 _ de 2

8
Bài tp ln s2 Đề 2 Trang 1 HCơ Sở DLiu HK2 / 2015 2016 Khoa KH&KTMT Bmôn HThng Thông Tin Bài tập lớn số 2 ĐỀ 2 Cho ERD sau

Upload: bao-tran-huu

Post on 09-Jul-2016

226 views

Category:

Documents


7 download

DESCRIPTION

ass2 hệ cơ sở dữ liệu đại học bách khoa tp hcm

TRANSCRIPT

Page 1: Assignment 2 _ de 2

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

Page 2: Assignment 2 _ de 2

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

Page 3: Assignment 2 _ de 2

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)

Page 4: Assignment 2 _ de 2

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)

Page 5: Assignment 2 _ de 2

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)

Page 6: Assignment 2 _ de 2

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ể

Page 7: Assignment 2 _ de 2

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

Page 8: Assignment 2 _ de 2

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---