Uploaded by Nguyen Hoang Trung

DBIProject SE1822 NguyenHoangTrung HE172826

advertisement
ASSIGNMENT
DBI202 – DATABASE OF LIBRARY
MANAGEMENT SYSTEM
STUDENT NAME: NGUYỄN HOÀNG TRUNG| HE172826
STUDENT NAME: NGUYỄN ĐẮC HỢP | HE170497
STUDENT NAME: NGUYỄN ĐỨC MINH | HE172826
STUDENT NAME: NGUYEN THANH PHUC | HE170081
TEACHER: NGUYỄN THỊ OANH
1
1.1. Mô tả bài toán nghiệp vụ
- Công ty TNHH thương mại và dịch vụ Phương Linh cho thuê các loại
ô
tô: 4 chỗ, 8 chỗ, 16 chỗ, 30 chỗ hay 45 chỗ.
- Khách đến công ty thuê ô tô sẽ làm việc với bộ phận kế toán. Bộ
phận này sẽ tìm trong BẢNG BÁO GIÁ xem loại ô tô khách yêu cầu
có không?
- Trường hợp không có loại xe khách yêu cầu thì sẽ thông báo cho
khách biết.
- Trường hợp có loại xe như khách yêu cầu. Bộ phận kế toán sẽ tiến
hành kiểm tra trong SỔ XE, SỔ ĐẶT XE.
+ Nếu không còn xe thì sẽ thông báo cho khách ngày gần nhất có thể có
loại xe khách yêu cầu. Nếu khách có nhu cầu đặt trước xe thì ghi lại
thông tin và yêu cầu của khách hàng vào sổ đặt xe. Khi có xe sẽ liên hệ
để thông báo cho khách hàng. Lúc đó nếu khách hàng không có nhu cầu
nữa thì sẽ xoá nhu cầu của khách hàng khỏi sổ đặt xe. Nếu khách hàng
đồng ý thuê xe thì sẽ tiến hành làm thủ tục thuê xe khi liên hệ cũng
được xoá khỏi sổ đặt xe.
+ Nếu công ty vẫn còn xe cho thuê thì tiến hành làm thủ tục, hợp đồng
theo yêu cầu của khách hàng. Thời gian, địa điểm khách nhận và trả xe
được thoả thuận trong HỢP ĐỒNG cho thuê ô tô.
- Khách có thể thuê nhiều xe, nhiều loại xe khác nhau.
- Thủ tục cho thuê xe đơn giản bao gồm: chứng minh thư, hộ khẩu, giấy
giới thiệu của cơ quan, đoàn thể nơi khách hàng làm việc hoặc cư trú và
đặt trước 50% tiền thuê xe là có thể nhận xe theo hợp đồng đã ký kết.
50% tiền thuê xe còn lại sẽ được khách hàng thanh toán khi trả xe.Bộ
phận kế toán sẽ viết hoá đơn thanh toán trước 50% và hợp đồng cho
thuê ô tô. Các thông tin cần thiết sẽ được ghi vào Sổ xe.
- Khách hàng nhận ô tô theo thời gian và địa điểm đã thoả thuận trong
hợp đồng. Lái xe của công ty sẽ kiểm tra lại hợp đồng cho thuê ô tô và
hoá đơn thanh toán khi khách nhận xe. Nếu đúng, lái xe cùng với khách
2
hàng sẽ thực hiện hợp đồng như đã kí kết. Thông tin xe ra khỏi bãi được
bộ phận bãi xe ghi SỔ XE RA
- Nếu trong thời gian từ lúc kí hợp đồng cho đến khi nhận xe khách
hàng muốn huỷ hợp đồng thì khách sẽ phải chịu 10% tổng số tiền thuê
xe. Bộ phận kế toán sẽ trả lại số tiền cho khách, huỷ hợp đồng và hoá
đơn thanh toán. Cập nhật lại Sổ xe.
- Khi trả xe,khách hàng phải hoàn tất thủ tục cho thuê ô tô với lái xe.
Lái xe kí nhận đã thu 50% tiền thuê ô tô còn lại vào hoá đơn thanh toán
cho khách và kết thúc hợp đồng.
Trường hợp khách cầm xe quá thời gian quy định (quá giờ, lưu đêm)
trong hợp đồng thì sẽ bị tính thêm tiền phụ trội theo như bảng giá cho
thuê xe của công ty quy định. Nếu việc quá thời gian do phía công ty
gây ra (xe hỏng, lái xe gây tai nạn) gây ra thì khách hàng không phải
chịu thêm bất cứ chi phí nào khác.
Lái xe có trách nhiệm giao tiền thuê xe của khách khi hoàn tất thủ tục
cho bộ phận kế toán, ký xác nhận vào HOÁ ĐƠN THANH TOÁN do bộ
phận kế toán giữ. Sổ xe được cập nhật. Thông tin xe đã về bãi được cập
nhật trong SỔ XE VÀO.
- Những ô tô hỏng hoặc cần được bảo dưỡng sẽ được chuyển sang bộ
phận sửa chữa và ngược lại, xe đã được sửa chữa, bảo dưỡng xong sẽ
được đưa ra bãi. Sổ xe vào, Sổ xe ra được cập nhật lại. Bộ phận sửa
chữa cũng cập nhật lại SỔ SỬA CHỮA.
- Các bộ phận phải viết BÁO CÁO tình trạng xe đang cho thuê, xe đã
trả, xe được thuê nhiều nhất,… Để cập nhật lại bảng giá xe cũng như
báo cáo cho giám đốc khi được yêu cầu
3
a. Biểu đồ ngữ cảnh
y.c. đặt xe
0
hủy đặt xe
t..báo có xe
Phiếu y/c, CMT, GPLX
Hợp đồng thuê xe
y.c.hủy hợp đồng
t.báo hủy hợp đồng
Khách
hàng
Hệ thống
quản lý cho
thuê ô tô
y/c báo cáo
q.đinh quản lý
B.bản giao xe
Giám
đốc
Báo cáo
y.c. gia hạn
B.bản nhận xe
t.t sự cố
B.bản xử lý sự cố
Hóa đơn t.toán
Hình 1.1. Biểu đồ ngữ cảnh của hệ thống
1.4.2. Biểu đồ phân rã chức năng
Quản lý cho thuê ô tô
1. Nhận thuê xe
2. Quản lý thuê
xe
1.1.Tiếp nhận
yêu cầu, ghi sổ
2.1. Lập biên
3. Giải quyết sự
4.Báo cáo
cố
bản giao xe
3.1 Kiểm tra
biên bản
4.1. Báo cáo
ngày
1.2. Thông báo
có xe
2.2. Lập biên
bản nhận xe
3.2.Lập biên
bản sự cố
4.2. Báo cáo
định kỳ
1.3. Ký hợp đồng
2.3. Lập phiếu
thanh toán
3.3Viết hóa đơn
bồi thƣờng
1.4. Lập lich
Hình 1.2. Biểu đồ phân rã chức năng
4
1.4.3. Mô tả chi tiết các chức năng sơ cấp
− Tiếp nhận yêu cầu, vào sổ: Khách tới thuê xe cần ghi đầy đủ thông tin về họ
tên, địa chỉ, CMND, số điện thoại, số giấy phép lái xe và loại xe muốn thuê. Số
ngày dự định thuê, ngày bắt đầu nhận. Nhân viên sẽ kiểm tra thông tin và lƣu
các thông tin đó vào sổ khách hàng.
− Thông báo có xe: Kiểm tra xem loại xe mà khách hàng muốn thuê có còn
chiếc nào đang ở trạng thái chờ thuê không. Nếu có thì thông báo cho khách
đăng ký chờ thuê
− Ký hợp đồng: Sau khi khách hàng đồng ý thuê xe sẽ ký hợp đồng và đặt cọc
tiền.
− Lập lịch: Thƣờng xuyên bổ sung xe mới ký hợp đồng vào lịch cho thuê để
theo dõi các xe đang thuê, sẽ cho thuê.
− Lập biên bản giao xe: Sau khi ký hợp đồng thì thông tin về thời gian và xe
đƣợc thuê đƣợc ghi vào lịch xếp xe. Lúc khách nhận xe sẽ cập nhật trạng thái
xe vào sổ này.
− Lập biên bảnnhận xe: Khi khách trả xe, nhân viên kiểm tra tình trạng xe, lập
biên bản giao nhận xe ghi rõ tình trạng của xe trƣớc khi trả, có đối chiếu với
tình trạng khi nhận. Nếu có sự bất thƣờng thì ghi sổ và chuyển sang bộ phận
xử lý sự cố giải quyết.
− Lập phiếu thanh toán: Nhân viên thanh toán dựa trên hợp đồng thuê, biên
bản trả xe, nếu xe không có điều gì bất thƣờng trong biên bản nhận xe thì tiến
hành lập hóa đơn thu tiền của khách và xác nhận vào biên bản giao nhận xe.
− Kiểm tra biên bản: Dựa vào biên bản giao nhận xe sẽ xác định xem xe có
điều gì bất thƣờng so với lúc giao xe không, nếu có thì mức độ nhƣ thế nào.
− Lập biên bản sự cố: Khi xảy ra sự cố phải lập biên bản về thiệt hại và xác
định mức bồi thƣờng hợp lý.
− Viết hóa đơn bồi thƣờng: Dựa vào biên bản sự cố, kế toán viết phiếu thu tiền
bồi thƣờng của khách.
− Báo cáo ngày: Hàng ngày, nhân viên theo dõi việc cho thuê báo cáo về tình
hình cho thuê trong ngày và những sự cố (nếu có) để lãnh đạo biết.
5
− Báo cáo định kỳ: Định kỳ (tuần, tháng,..) nhân viên dựa vào các số theo dõi
để lập báo cáo về số xe cho thuê, số ngƣời thuê, doanh thu, sự cố và những số
liệu phân tích theo yêu cầu của lãnh đạo
1.4.4. Danh sách hồ sơ dữ liệu đƣợc sử dụng
1. Danh sách Xe
2. DS Khách hàng
3. Lịch chờ thuê xe
4. Lịch xếp xe (theo dõi nhận trả)
5. Hợp đồng thuê
6. Biên bản giao xe
7. Biên bản nhận xe
8. Biên bản sự cố
9. Hóa đơn thanh toán
10. Các báo cáo
6
Biểu đồ hoạt động
7
1.4.5. Các biểu đồ tiến trình nghiệp vụ phức tạp
a. Tiến trình ký hợp đồng cho thuê
Sự kiện
Hồ sơ dữ liệu
Nhân viên
Có khách
đến thuê
Tiếp nhận yêu
cầu, vào sổ
DS Khách hàng
Lịch chờ thuê xe
Kiếm tra xe
Nhận thông
báo
Thông báo để
khách chờ
0
Có xe
Hợp đồng thuê xe
1
Lịch chờ thuê xe
Ký hợp đồng
Lịch thuê xe
Cập nhật thông tin
khách (hủy, kéo dài)
Cập nhật lịch
cho thuê
Hình 1.4. Tiền trình nghiệp vụ ký hợp đồng cho thuê xe
8
b. Tiến trình nghiệp vụ xử lý sự cố
Sự kiện
Hồ sơ dữ liệu
Nhân viên
Xảy ra sự cố
Kiểm tra biên
bản giao nhận
0
Biên bản giao xe
Biên bản nhận xe
Có sự
cố
1
Nhận hóa
đơn và
biên bản
sự cố
Lập biên bản
sự cố
Biên bản sự cố
Viết hóa đơn
bồi thƣờng
Hóa đơn
Hình 1.5. Tiến trình nghiệp vụ xử lý sự cố
9
Chương 2 PHÂN TÍCH HỆ THỐNG
2.1. Các mô hình xử lý nghiệp vụ
2.1.1. Biểu đồ luồng dữ liệu mức 0
Yêu cầu đặt xe
Hủy đặt xe
k
Các báo cáo
Quy định quản lý
4.0
Phiếu y/c,CMND,GPLX
Thông báo có xe
KHÁCH HÀNG Hợp đồng thuê xe
T.báo hủy hợp đồng
y/c báo cáo
Báo cáo
GIÁM ĐỐC
1.0
y/c hủy hợp đồng
Nhận yêu
cầu thuê
Báo cáo
d
Lịch chờ thuê
c
a
f Biên bản giao xe
g Biên bản nhận xe
b
i
Lịch thuê xe
Danh sách Xe
DS Khách hàng
e Hợp đồng thuê xe
Hóa đơn thanh toán
2.0
3.0
Quản lý Biên bản giao xe
Thông tin sự cố
thuê xe
KHÁCH
HÀNG
Gia hạn
Biên bản sự cố
Biên bản nhận xe
Giải quyết
sự cố
Hóa đơn
Hóa đơn
h
Hình 2.1. Biểu đồ luồng dữ liệu mức 0
Biên bản sự cố
2.1.2. Biểu đồ luồng dữ liệu mức 1
2.1.2.1. Biểu đồ luồng dữ liệu tiến trình ”1.0 nhận thuê xe”
Phiếu y/c, GPLX, CMND
Khách hàng
Hợp
đồng
thuê
xe
1.1
Ko có loại xe y/c, giấy tờ ko hợp lệ
Tiếp nhận yêu
cầu, vào sổ
b DS Khách hàng
Nhân viên
a Danh sách xe
c
Lịch chờ thuê xe
Có xe
trống
1.3
Ký hợp đồng
Khách còn nhu cầu thuê xe
Nhân viên
1.2
t.t
hợp
đồng
e
Hợp đồng thuê xe
Thông báo có
xe
d Lịch xếp xe
Nhân viên
1.4
Lập lịch
Nhân viên
t.t xe
Hủy hợp đồng
Gia hạn
Khách hàng
Hủy đặt xe
Hình 2.2. Biểu đồ luồng dữ liệu mức 1: Nhận đăng ký thuê xe
16
2.1.2.2. Biểu đồ luồng dữ liệu tiến trình ”2.0 Quản lý thuê xe”
Phiếu
thanh
toán
2.1
Biên bản giao xe
Khách hàng
e
Hợp đồng thuê xe
Lập biên
bản giao xe
f
Biên bản giao xe
Nhân viên
d Lịch xếp xe
g Biên bản nhận xe
2.4
Hóa đơn thanh toán
i
Lập phiếu
thanh toán
Biên bản nhận xe
Kế toán
2.2
Lập biên bản
nhận xe
Nhân viên
Hình 2.3. Biểu đồ luồng dữ liệu mức 1: Quản lý thuê xe
2.1.2.3. Biểu đồ luồng dữ liệu tiến trình ”3.0 Giải quyết sự cố”
Biên bản giao xe
Biên bản nhận xe
Khách hàng
g Biên bản nhận xe
Hóa
đơn
f
Biên bản giao xe
b
DS Khách hàng
3.1
Kiểm tra biên
bản giao nhận
Nhân viên
Thông
tin sự
cố
e Hợp đồng thuê xe
h Biên bản sự cố
3.3
Viết hóa đơn
bồi thƣờng
i Hóa đơn thanh toán
3.2
Lập biên bản
sự cố
Biên bản sự cố
Nhân viên
Kế toán
Hình 2.4. Biểu đồ luồng dữ liệu mức 1: Giải quyết sự cố
17
2.1.2.4. Biểu đồ luồng dữ liệu tiến trình ”4.0 Báo cáo”
Yêu cầu báo cáo
Yêu cầu báo cáo
Giám đốc
Báo cáo
Báo cáo
a Danh sách xe
4.1
Báo cáo
ngày
Nhân viên
b DS Khách hàng
4.2
f Biên bản giao xe
Báo cáo
định kỳ
g Biên bản nhận xe
e
Nhân viên
Hợp đồng thuê xe
h Biên bản sự cố
k Các báo cáo
Các báo cáo ngày
Hình 2.5. Biểu đồ luồng dữ liệu mức 1: Lập các báo cáo
2.2. Mô hình dữ liệu quan niệm
2.2.1. Xác định các thực thể
a. Liệt kê, chính xác hóa và lựa chọn thông tin
Tên đƣợc chính xác của các đặc trƣng
1
A. DANH SÁCH XE
Biển kiểm soát xe
Loại xe
Số lƣợng xe của từng loại xe
Tên xe
Mô tả xe
Phí thiếu xăng khi nhận xe
Phí đi quá km quy định
Giá thuê xe/1 ngày đêm
Mô tả tình trạng xe
Trạng thái của xe
Viết gọn tên
đặc trƣng
2
Số xe
Loại xe
Số lƣợng
Số chỗ
Mô tả
Phí xăng
Phí quá km
Giá
Mô tả TT
Trạng thái
18
Dấu loại
thuộc tính
3
B. DS KHÁCH HÀNG
Số thứ tự
Tên khách hàng
Địa chỉ
Số giấy phép lái xe
Số điện thoại
Số chứng minh nhân dân
C. LỊCH CHỜ THUÊ XE
Loại xe
Khách hàng
Ngày vào sổ
Ngày giờ nhận xe
Số ngày thuê
D. LICH BỐ TRÍ THUÊ XE
Loại xe
Khách hàng
Ngày giờ giao xe
Ngày giờ trả
Ngày giờ trả thực tế
Gia hạn thuê xe
E. HỢP ĐỒNG THUÊ XE
Số hợp đồng
Ngày làm hợp đồng
Đại diện bên thuê
Địa chỉ bên thuê
Số điện thoại bên thuê
Đại diện làm hợp đồng bên cho thuê
Chức vụ ngƣời làm hợp đồng
Loại xe
Biển kiểm soát (BKS)
Đơn giá thuê
Tiền đặt cọc
Ngày giờ thuê
Ngày giờ trả
Khuyến mãi
Giấy tờ, đồ giữ lại của khách
Nội dung hợp đồng
F. BIÊN BẢN GIAO XE
Số biên bản giao xe
19
STT
Tên KH
Địa chỉ
GPLX
Số ĐTKH
CMTKH
Mã loại
Mã KH
Ngày ĐK
Ngày đặt
Số ngày
√
√
Mã loại
Mã KH
Ngay giao
Ngày trả
Ngày trả TT
Gia hạn
√
√
Số HĐ
Ngày HĐ
Tên KH
Địa chỉ
Số ĐTKH
Tên NV
Vai trò
Tên loại
Số xe
Giá
Tiền đặt
Ngày giao
Ngày trả
Khuyến mãi
Giấy tờ GL
Nội dung HĐ
Số BBGN
√
√
√
√
√
√
√
√
Tên khách hàng
Địa chỉ
Số điên thoại
Loại xe
Số xe
Ngày giờ giao xe
Tình trạng xe khi giao
Số km lúc giao xe
Vạch xăng lúc giao xe
G. BIÊN BẢN NHẬN XE
Số biên bản nhận xe
Tên khách hàng
Địa chỉ
Số điên thoại
Loại xe
Số xe
Ngày giờ nhận xe
Số km lúc nhận xe
Vạch xăng lúc nhận xe
Tình trạng xe khi nhận
H.BIÊN BẢN SỰ CỐ
Số biên bản sự cố
Tên sự cố
Ngày lập biên bản
Đại diện giải quyết sự cố bên cho thuê
Chức vụ giải quyết sự cố bên cho thuê
Bên thuê xe
Số điện thoại
Loại xe thuê
Biển kiểm soát
Ngày giờ thuê xe
Ngày giờ trả xe
Trƣởng ca tiếp nhận sự cố
Nội dung sự cố
Tiền bồi thƣờng
I. HÓA ĐƠN THANH TOÁN
Số hóa đơn thanh toán
Ngày viết hóa đơn
Tên khách hàng
20
Tên KH
Địa chỉ
Số ĐTKH
Tên loại
Số xe
Ngày giao
TT giao
Km đi
Xăng đi
Số BBGN
Tên KH
Địa chỉ
Số ĐTKH
Tên loại
Số xe
Ngày nhận
Km về
Xăng về
TT nhận
Số BBSC
Tên SC
Ngày lập
Tên NV
Vai trò
Tên KH
Số ĐTKH
Tên loại
Số xe
Ngày giao
Ngày nhận
Tên NV
ND sự cố
Tiền phạt
Số HĐTT
Ngày HĐ
Tên KH
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Loại xe thuê
Số xe
Ngày giờ giao
Ngày giờ nhận
Lý do
Hồ sơ đi kèm
Tiền thanh toán
Tên loại
Số xe
Ngày giao
Ngày nhận
Lý do
Hồ sơ kèm
Tiền TT
√
√
√
√
√
b. xác định thực thể và gán thuộc tính
Số xe => XE ( Số xe,,tên xe, phí xăng, phí quá km, giá, mô tả TT, trạng thái)
Mã khách hàng => KHÁCH HÀNG (mã KH, CMND, Tên KH, Địa chỉ,
GPLX, Số ĐT)
hợp đồng => HỢP ĐỒNG (mã HĐ, loại HĐ, nội dung HĐ)
đại diên công ty, kế toán,.. => NHÂN VIÊN (Mã NV, tên NV, vai trò,
CMTND, điện thoại)
Biên bản sự cố => SỰ CỐ (mã SC, tên SC)
Tên loại xe => LOẠI XE(mã loại, tên loại, mô tả, số lượng)
2.2.2. Xác định mối quan hệ giữa các thực thể
Các động từ: đặt thuê (xe), ký (hợp đồng), lập lịch (thuê), giao (xe), nhận
(xe), lập biên bản (sự cố) , thanh toán (hóa đơn, bồi thường)
a. Các mối quan hệ tương tác
Câu hỏi cho “Đặt thuê”
Ai đặt thuê?
Đạt thuê cái gì?
Ai nhận đặt?
Đặt thuê khi nào?
Bao lâu?
Đặt từ khi nào?
Câu hỏi cho “lập lich thuê”
Ai thuê?
Thuê cái gì?
Ai lập lịch?
Câu trả lời nhận được từ
Thực thể
Thuộc tính
KHÁCH HÀNG
XE
NHÂNVIÊN
Ngày đặt
Số ngày
Ngày ĐK
Câu trả lời nhận được từ
Thực thể
Thuộc tính
KHÁCH HÀNG
XE
NHÂNVIÊN
21
Thuê từ khi nào?
Thuê đến bao giờ?
Thuê nhƣ thế nào?
Thuê đến khi nào?
Câu hỏi cho “ký HĐ”
Ai ký?
Ký cái gì?
Ký với ai
Ký về cái gì
Bằng cách nào?
Khi nào?
Ký nhƣ thế nào?
Ký nhƣ thế nào?
Ký nhƣ thế nào?
Câu hỏi cho “giao”
Nhận từ ai?
Nhận cái gì?
Ai nhân?
bằng cách nào?
khi nào?
Số km khi giao là bao nhiêu?
Số xăng khi giao là bao nhiêu?
Tình hình xe khi giao?
Câu hỏi cho “nhận”
Nhận từ ai?
Nhận cái gì?
Ai nhân?
bằng cách nào?
Ngày giao
Ngày nhận
Gia hạn
Ngày trả TT
Câu trả lời nhận đƣợc từ
Thực thể
Thuộc tính
KHÁCH HÀNG
HỢP ĐỒNG
NHÂNVIÊN
XE
Số HĐ
Ngày HĐ
Tiền đặt
Khuyến mãi
Giấy tờ GL
Câu trả lời nhận đƣợc từ
Thực thể
Thuộc tính
KHÁCH HÀNG
XE
NHÂN VIÊN
Số BBG
Ngày giao
Km đi
Xăng đi
Trạng thái đi
Câu trả lời nhận đƣợc từ
Thực thể
Thuộc tính
KHÁCH HÀNG
XE
NHÂN VIÊN
Số BBN
22
Ngày nhận
Km về
Xăng về
Trạng thái về
khi nào?
Số km khi nhận là bao nhiêu?
Số xăng khi nhận là bao nhiêu?
Tình hình xe khi nhận?
Câu hỏi cho “lập BBSC”
Câu trả lời nhận đƣợc từ
Thực thể
Thuộc tính
Ai lập BBSC
NHÂNVIÊN
Cho ai?
KHÁCH HÀNG
Loại sự cố gì?
SỰ CỐ
Sự cố cho cái gì?
XE
bằng cách nào?
Số BBSC
khi nào?
Ngày SC
Vì sao?
Nội dung SC
Phạt bồi thƣờng sự cố bao nhiêu?
Tiền phạt
Câu hỏi cho “thanh toán”
Ai thanh toán?
Thanh toán với ai?
Thanh toán vì cái gì?
bằng cách nào?
khi nào?
Trên cơ sở nào?
Bao nhiêu?
Câu trả lời nhận đƣợc từ
Thực thể
Thuộc tính
KHÁCH HÀNG
NHÂN VIÊN
XE
Số HĐTT
Ngày TT
Số HĐ, số BBSC
Tiền TT
b. Các mối quan hệ phụ thuộc
- Mối quan hệ THUỘC giữa XE và LOẠI XE
23
2.2.3. Biểu đồ của mô hình dữ liệu quan niệm
SốHĐ
NgàyHĐ
NộiDungHĐ
MãHĐ
KÝ
KẾT HĐ
HỢP ĐỒNG
SốLượng
LoạiHĐ
KhuyếnMãi
ĐịaChỉ
GPLX
TênKH
GiấyTờGL
MãKH
LOẠI XE
KHÁCH HÀNG
TênLoại
MôTả
TiềnĐặt
SốĐTKH
MãLoại
CMTKH
NgàyĐặt
NgàyĐK
THUỘC
ĐĂNG KÝ
THUÊ
Giá
KmĐi
MôTảTT
GIAOXE
XE
XăngĐi
NgàyNhận
NgàyGiao
PhíQuáKm
SốBBN
Hủy
SốBBG
TrạngThái
SốXe
TênXe
SốNgày
TrangTháiĐi
PhíXăng
LẬP LICH
KmVề
NgàyGiaoTT
GiaHạn
MãNV
CMTNV
NHẬNXE
XăngVề
TênNV
NHÂN VIÊN
TrạngTháiVề
NgàyTT
SốĐTNV
sốHĐTT
THANHTOÁN/
BỒI THƢỜNG
TiềnTT
LýDo
HồSơKèm
sốBBSC
ngàyBBSC
LẬP BIÊN
BẢN SỰ CỐ
NộiDungSC
MãSC
TiềnPhạt
SỰ CỐ
TênSC
Hình 2.6. Mô hình dữ liệu ER
24
VaiTrò
Chƣơng 3 THIẾT KẾ HỆ THỐNG
3.1. Thiết kế cơ sở dữ liệu
3.1.1. Chuyển mô hình ER sang mô hình quan hệ
3.1.1.1. Biểu diễn các thực thể thành quan hệ
1. Thực thể HỢPĐỒNG:
→ HỢPĐỒNG (MãHĐ, LoạiHĐ, NộiDungHĐ)
(1)
2. Thực thể KHÁCH HÀNG:
→KHÁCH HÀNG (MãKH, TênKH, CMTKH, ĐịaChỉ, SốĐTKH, GPLX) (2)
3. Thực thể NHÂN VIÊN:
→ NHÂN VIÊN (MãNV, tênNV, VaiTrò, CMTNV, SốĐTNV) (3)
4. Thực thể LOẠI XE
→ LOAIXE (MãLoại, TênLoại, SốLượng, MôTả) (4)
5. Thực thể XE:
→
XE (SốXe, MãLoại, TênXe, PhíXăng, PhíQuáKm, Giá, MôTảTT,
TrạngThái) (5)
6. Thực thể SỰ CỐ:
→ SỰ CỐ (MãSC, TênSC) (6)
3.1.1.2. Biểu diễn các mối quan hệ thành quan hệ
7. Mối quan hệ < KÝ KẾT HĐ > :
→ BẢNHỢPĐỒNG (SốHĐ, MãHĐ, SốXe, MãKH, MãNV, NgàyHĐ, TiềnĐặt,
KhuyếnMãi, GiấyTờGL) (7)
8. Mối quan hệ < ĐĂNG KÝ THUÊ>:
→ LỊCHCHỜTHUÊ (STT, MãKH, MãLoại, NgàyĐK, NgàyĐặt, SốNgày,
Hủy) (8)
9. Mối quan hệ <LẬP LỊCH>:
→ LỊCHTHUÊ (SốXe, MãKH, NgàyGiao, NgàyTrả, NgàyGiaoTT, GiaHan)
(9)
10. Mối quan hệ <GIAOXE>:
→
BIÊNBẢNGIAO ( sốBBG, SốXe, MãKH MãNV, NgàyGiao, KmĐi,
XăngĐi, TrạngThái Đi) (10)
11. Mối quan hệ <NHÂNXE>:
→ BIÊNBẢNNHẬN(sốBBN, SốXe, MãKH MãNV, NgàyNhận, KmVề,
XăngVề, TrạngTháiVề) (11)
12. Mối quan hệ <LẬP BB SỰCỐ>:
→
BIÊNBẢNSỰCỐ (sốBBSC, MãSC, SốXe, MãKH, NgàyBBSC,
NộiDungSC, TiềnPhạt, MãNV ) (12)
13. Mối quan hệ <THANHTOÁN>:
→
HÓAĐƠNTT (SốHĐTT, SốHĐ, MãNV, MãKH, NgàyTT, LýDo,
HồSơKèm, TiềnTT) (13)
3.1.1.3. Chuẩn hóa các quan hệ nhận được
Tất cả các qua hệ trên đã là chuẩn 3 nên không cần chuẩn hóa.
26
3.1.1.4. Mô hình dữ liệu quan hệ
HỢP ĐỒNG (1)
#MãHĐ
LoạiHĐ
NộiDungHĐ
BẢN HĐ (7)
#SốHĐ
MãHĐ
SốXe
MãKH
MãNV
NgàyHĐ
TiềnĐặt
KhuyếnMãi
GiấytờGL
BB GIAO (10)
#SốBBG
SốXe
MãKH
MãNV
NgàyGiao
KmĐi
XăngĐi
TrạngTháiĐi
LOẠI XE (4)
#Mãloại
TênLoại
SốLượng
MôTả
BB NHẬN (11)
#MãNV
TênNV
VaiTrò
CMTNV
Số ĐTNV
KHÁCH (2)
HÓA ĐƠN TT
(13)
#SốHĐTT
SốHĐ
MãKH
MãNV
NgàyTT
LýDo
HồSơKèm
NHÂN VIÊN (3)
#MãKH
TênKH
Địachỉ
SốĐTKH
CMTKH
GPLX
XE (5)
#SốXe
MãLoại
TênXe
Giá
PhíXăng
PhíQuáKm
MôTảTT
TrạngThái
LỊCH CHỜ (8)
LỊCH THUÊ (9)
#STT
MãKH
MãLoại
NgàyĐK
NgàyThuê
SốNgày
Hủy
#SốXe
#MãKH
NgàyGiao
NgàyNhận
NgàygiaoTT
GiaHạn
Hình 3.1. Biểu đồ liên kết của Mô hình dữ liệu quan hệ
27
#SốBBN
SốXe
MãKH
MãNV
NgàyNhận
KmVề
XăngVề
TrạngTháiVề
BB SỰ CỐ (12)
#SốBBSC
SốXe
MãKH
MãNV
MãSC
NgàyBBSC
NộiDungSC
TiềnPhạt
SỰ CỐ (6)
#MãSC
TênSC
3.1.2. Thiết kế cơ sở dữ liệu vật lý
3.1.2.1. Phân tích và phi chuẩn các quan hệ
a. Quan hệ HỢPĐỒNG chỉ có một thuộc tính chính là NộiDungHĐ, nên có
thể gộp vào quan hệ BẢNHỢPĐỒNG và lấy tên là HỢPĐỒNG không làm mất
tính chuẩn 3 của quan hệ mới nhận đƣợc:
HỢPĐỒNG (SốHĐ, LoạiHĐ, NgàyHĐ, NộiDungHĐ, TiềnĐặt, KhuyếnMãi,
GiấyTờGL, SốXe, MãKH, MãNV)(7’)
Làm như vậy ta giảm được một quan hệ.
b. Quan hệ SỰCỐ chỉ có một thuộc tính chính là TênSC, nên có thể gộp vào
quan hệ BIÊNBẢNSỰCỐ và lấy tên là SỰCỐ không làm mất tính chuẩn 3 của
quan hệ mới nhận được:
SỰCỐ( sốBBSC, SốXe, MãKH, MãNV, TênSC, NgàyBBSC, NộiDungSC,
TiềnPhạt)(12’)
Làm nhƣ vậy ta giảm được một quan hệ.
c. Hai quan hệ BIÊNBẢNGIAO và BIÊNBẢNNHẬN có cùng cấu trúc ta có
thể gộp làm một để được quan hệ BIÊNBẢNGN vẫn là chuẩn 3:
BIÊNBẢNGN (SốBBGN, SốXe, MãKH, MãNV, NgàyGiao, KmĐi, XăngĐi,
TrạngTháiĐi, NgàyNhận, KmVề, XăngVề, TrạngTháiVề)
(10’)
Nhƣ vậy ta chỉ còn lại 10 quan hệ (2), (3), (4), (5), (7’), (8), (9), (10’),
(12’) (13)
3.1.2.2. Tạo các bảng quan hệ
Khi chọn hệ quản trị cơ sở dữ liệu SQL để tổ chức lƣu trữ dữ liệu, ta thiết kế được
các bảng dữ liệu tƣơng ứng với hệ quản trị này như sau:
a. Table KHACHHANG
Thuộc tính
MaKH
TenKH
DiaChi
DienThoaiKH
CMTKH
GPLX
Kiểu dữ liệu
Ký tự
Ký tự
Ký tự
Số
Số
Ký tự
Cỡ
10
50
100
12
12
10
28
Định dạng
Chữ hoa + số
Chữ
Chữ + số
Số nguyên
Số nguyên
Chữ hoa + số
Ràng buộc
Khóa chính
b. Table NHANVIEN
Thuộc tính
MaNV
TenNV
VaiTro
CMTNV
DienThoaiNV
Kiểu dữ liệu
Ký tự
Ký tự
Ký tự
Số
Số
Cỡ
10
50
100
12
12
Định dạng
Chữ hoa + số
Chữ
Chữ + số
Số nguyên
Số nguyên
Ràng buộc
Khóa chính
Kiểu dữ liệu
Ký tự
Ký tự
Số
Ký tự
Cỡ
10
50
3
1000
Định dạng
Chữ hoa + số
Ràng buộc
Khóa chính
Kiểu dữ liệu
Ký tự
Ký tự
Ký tự
Số
Số
Số
Ký tự
Số
Cỡ
10
10
50
10
10
10
100
1
Định dạng
Chữ hoa + số
Chữ hoa + số
Chữ
Số nguyên
Số nguyên
Số nguyên
Chữ
Ràng buộc
Khóa chính
Khóa ngoài
Kiểu dữ liệu
Ký tự
Ký tự
Ký tự
Ký tự
Datetime
Ký tự
Số
Số
Ký tự
Cỡ
10
10
10
10
8
1000
10
10
50
Định dạng
HD + số
Chữ hoa + số
Chữ hoa + số
Chữ hoa + số
hh:dd/mm/yy
Ràng buộc
Khóa chính
Khóa ngoài
Khóa ngoài
Khóa ngoài
c. Table LOAIXE
Thuộc tính
MaLoai
TenLoai
SoLuong
MoTa
Số nguyên
d. Table XE
Thuộc tính
SoXe
MaLoai
TenXe
PhiXang
PhíQuaKm
DonGia
MoTaTT
TrangThai
e. Table HOPDONG
Thuộc tính
SoHD
SoXe
MaKH
MaNV
NgayHD
NoiDungHD
TienDat
KhuyenMai
GiayToGuiLai
29
Số nguyên
Số nguyên
f. Table LICHCHOTHUE
Thuộc tính
STT
MaKH
MaLoai
NgayDK
NgayThue
SoNgayThue
Huy
Kiểu dữ liệu
Số
Ký tự
Ký tự
Datetime
Datetime
Số
int
Cỡ
10
10
10
8
8
3
1
Định dạng
Số nguyên
Chữ hoa + số
Chữ hoa + số
hh:dd/mm/yy
hh:dd/mm/yy
Số nguyên
0
Ràng buộc
Kiểu dữ liệu
Ký tự
Ký tự
Datetime
Datetime
Datetime
Datetime
Cỡ
10
10
8
8
8
8
Định dạng
Chữ hoa + số
Chữ hoa + số
hh:dd/mm/yy
hh:dd/mm/yy
hh:dd/mm/yy
hh:dd/mm/yy
Ràng buộc
Khóa ngoài
Khóa ngoài
Kiểu dữ liệu
Số
Ký tự
Ký tự
Ký tự
Datetime
Số
Ký tự
Ký tự
Datetime
Số
Ký tự
Ký tự
Cỡ
10
10
10
10
8
10
20
1
8
10
20
Định dạng
Số nguyên
Chữ hoa + số
Chữ hoa + số
Chữ hoa + số
hh:dd/mm/yy
Số nguyên
Chữ + số
Chữ
hh:dd/mm/yy
Số nguyên
Chữ + số
Chữ
Ràng buộc
Khóa chính
Khóa ngoài
Khóa ngoài
Khóa ngoài
Khóa ngoài
Khóa ngoài
g. Table LICHTHUE
Thuộc tính
SoXe
MaKH
NgayGiao
NgayTra
NgayGiaTT
GiaHan
h. Table BIENBANGN
Thuộc tính
SoBBGN
SoXe
MaKH
MaNV
NgayGiao
KmDi
XangDi
TrangThaiDi
NgayNhan
KmVe
XangVe
TrangThaiVe
30
i. Table SUCO
Thuộc tính
SoBBSC
SoXe
MaKH
TenSC
NgayBBSC
NoiDungSC
TienPhat
MaNV
Kiểu dữ liệu
Số
Ký tự
Ký tự
Ký tự
Datetime
Ký tự
Số
Ký tự
Cỡ
10
10
10
50
8
1000
10
10
Định dạng
Số nguyên
Chữ hoa + số
Chữ hoa + số
Chữ + số
hh:dd/mm/yy
Kiểu dữ liệu
Số
Ký tự
Ký tự
Datetime
Ký tự
Ký tự
Số
Cỡ
10
10
10
8
30
30
10
Định dạng
Số nguyên
Chữ hoa + số
Chữ hoa + số
hh:dd/mm/yy
Chữ
Chữ + số
Số nguyên
Số nguyên
Chữ hoa + số
Ràng buộc
Khóa chính
Khóa ngoài
Khóa ngoài
Khóa ngoài
k. Table THANHTOAN
Thuộc tính
SoHDTT
SoHD
MaNV
NgayTT
LyDo
HoSoKem
TienTT
31
Ràng buộc
Khóa chính
Khóa ngoài
Khóa ngoài
4. DATABASE
4.1 REATE DATABASE LIBRARY_MANAGEMENT_SYSTEM:
--create database
CREATE DATABASE CAR_RENTAL_SYSTEM
4.2 CREATE TABLE:
-- Create the KHACHHANG table
CREATE TABLE KHACHHANG (
MaKH CHAR(10) PRIMARY KEY,
TenKH VARCHAR(50),
DiaChi VARCHAR(100),
DienThoaiKH INT,
CMTKH INT,
GPLX CHAR(10)
);
-- Create the NHANVIEN table
CREATE TABLE NHANVIEN (
MaNV CHAR(10) PRIMARY KEY,
TenNV VARCHAR(50),
VaiTro VARCHAR(100),
CMTNV INT,
DienThoaiNV INT
);
32
--Create the Tram table
CREATE TABLE Tram (
MaTram CHAR(10) PRIMARY KEY,
TenTram VARCHAR(50),
DiaChi VARCHAR(100)
);
-- Create the LOAIXE table
CREATE TABLE LOAIXE (
MaLoai CHAR(10) PRIMARY KEY,
TenLoai VARCHAR(50),
SoLuong INT,
MoTa VARCHAR(1000)
);
-- Create the XE table
CREATE TABLE XE (
SoXe CHAR(10) PRIMARY KEY,
MaLoai CHAR(10),
TenXe VARCHAR(50),
PhiXang INT,
PhíQuaKm INT,
33
DonGia INT,
MoTaTT VARCHAR(100),
TrangThai INT,
foreign key (MaLoai) references LOAIXE(MaLoai),
);
-- Create the HOPDONG table
CREATE TABLE HOPDONG (
SoHD CHAR(10) PRIMARY KEY,
SoXe CHAR(10),
MaKH CHAR(10),
MaNV CHAR(10),
MaTramNhanXe CHAR(10),
MaTramTraXe CHAR(10),
NgayHD DATETIME,
NoiDungHD NVARCHAR(1000),
TienDat INT,
KhuyenMai INT,
GiayToGuiLai NVARCHAR(50),
foreign key (SoXe) references XE(SoXe),
foreign key (MaKH) references KHACHHANG(MaKH),
foreign key (MaNV) references NHANVIEN(MaNV),
foreign key (MaTramNhanXe) references Tram(MaTram),
foreign key (MaTramTraXe) references Tram(MaTram),
);
-- Create the LICHCHOTHUE table
CREATE TABLE LICHCHOTHUE (
STT INT PRIMARY KEY,
MaKH CHAR(10),
MaLoai CHAR(10),
NgayDK DATETIME,
NgayThue DATETIME,
SoNgayThue INT,
Huy INT,
foreign key (MaKH) references KHACHHANG(MaKH),
foreign key (MaLoai) references LOAIXE(MaLoai),
);
34
-- Create the LICHTHUE table
CREATE TABLE LICHTHUE (
SoXe CHAR(10),
MaKH CHAR(10),
NgayGiao DATETIME,
NgayTra DATETIME,
NgayGiaTT DATETIME,
GiaHan DATETIME,
foreign key (SoXe) references XE(SoXe),
foreign key (MaKH) references KHACHHANG(MaKH),
);
-- Create the BIENBANGN table
CREATE TABLE BIENBANGN (
SoBBGN INT PRIMARY KEY,
SoXe CHAR(10),
MaKH CHAR(10),
MaNV CHAR(10),
NgayGiao DATETIME,
KmDi INT,
XangDi VARCHAR(20),
TrangThaiDi VARCHAR(1),
NgayNhan DATETIME,
KmVe INT,
XangVe VARCHAR(20),
TrangThaiVe VARCHAR(1),
foreign key (SoXe) references XE(SoXe),
foreign key (MaKH) references KHACHHANG(MaKH),
foreign key (MaNV) references NHANVIEN(MaNV),
);
35
-- Create the SUCO table
CREATE TABLE SUCO (
SoBBSC INT PRIMARY KEY,
SoXe CHAR(10),
MaKH CHAR(10),
TenSC NVARCHAR(50),
NgayBBSC DATETIME,
NoiDungSC NVARCHAR(1000),
TienPhat INT,
MaNV CHAR(10),
foreign key (SoXe) references XE(SoXe),
foreign key (MaKH) references KHACHHANG(MaKH),
foreign key (MaNV) references NHANVIEN(MaNV),
);
-- Create the THANHTOAN table
CREATE TABLE THANHTOAN (
SoHDTT INT PRIMARY KEY,
SoHD CHAR(10),
MaNV CHAR(10),
NgayTT DATETIME,
LyDo NVARCHAR(30),
HoSoKem NVARCHAR(30),
TienTT INT,
foreign key (SoHD) references HOPDONG(SoHD),
foreign key (MaNV) references NHANVIEN(MaNV),
);
36
4.3
-- Add foreign key constraint to HOPDONG table
ALTER TABLE HOPDONG
ADD CONSTRAINT FK_XE_HOPDONG FOREIGN KEY (SoXe) REFERENCES XE(SoXe);
-- Add unique constraint to LICHCHOTHUE table
ALTER TABLE LICHCHOTHUE
ADD CONSTRAINT UQ_MaKH_MaLoai UNIQUE (MaKH, MaLoai);
-- Add check constraint to XE table
ALTER TABLE XE
ADD CONSTRAINT CK_TrangThai CHECK (TrangThai IN (0, 1));
-- Add unique constraint to NHANVIEN table
ALTER TABLE NHANVIEN
ADD CONSTRAINT UQ_CMTNV UNIQUE (CMTNV);
4.4 Write at least 2 query for each of the following requirements
-- a. Query using inner join
-- Truy xuất thông tin về khách hàng và xe thuê của họ
SELECT KHACHHANG.TenKH, XE.TenXe, HOPDONG.NgayHD
FROM KHACHHANG
INNER JOIN HOPDONG ON KHACHHANG.MaKH = HOPDONG.MaKH
INNER JOIN XE ON HOPDONG.SoXe = XE.SoXe;
-- Another inner join query example
-- Truy xuất thông tin về nhân viên quản lý hợp đồng cho thuê và vai trò tương ứng của họ
SELECT NHANVIEN.TenNV, NHANVIEN.VaiTro, HOPDONG.NgayHD
FROM NHANVIEN
INNER JOIN HOPDONG ON NHANVIEN.MaNV = HOPDONG.MaNV;
37
-- b. Query using outer join
-- Truy xuất thông tin về tất cả các phương tiện và chi tiết cho thuê của chúng (nếu có)
SELECT XE.TenXe, HOPDONG.NgayHD, HOPDONG.NoiDungHD
FROM XE
LEFT OUTER JOIN HOPDONG ON XE.SoXe = HOPDONG.SoXe;
-- Another outer join query example
-- Truy xuất thông tin về tất cả các phương tiện và hồ sơ bảo dưỡng của chúng (nếu có)
SELECT XE.TenXe, BIENBANGN.NgayGiao, BIENBANGN.NgayNhan
FROM XE
LEFT OUTER JOIN BIENBANGN ON XE.SoXe = BIENBANGN.SoXe;
-- c. Using subquery in where
-- Truy tìm khách hàng đã thuê xe có giá thuê lớn hơn 1.000.000
SELECT TenKH, MaKH
FROM KHACHHANG
WHERE MaKH IN (SELECT MaKH FROM HOPDONG WHERE TienDat > 1000000);
-- Another subquery in where example
-- Thu hồi xe có phí thuê cao hơn phí thuê trung bình
SELECT HOPDONG.SoXe, XE.TenXe, HOPDONG.TienDat
38
FROM HOPDONG
JOIN XE ON HOPDONG.SoXe = XE.SoXe
WHERE HOPDONG.TienDat > (SELECT AVG(TienDat) FROM HOPDONG);
-- d. Using subquery in from
-- Truy xuất giá thuê trung bình của từng loại xe
SELECT LoaiXe, AVG(AvgTienDat) AS AverageRentalFee
FROM (
SELECT XE.SoXe, LOAIXE.TenLoai AS LoaiXe, AVG(HOPDONG.TienDat) AS AvgTienDat
FROM XE
LEFT JOIN HOPDONG ON XE.SoXe = HOPDONG.SoXe
LEFT JOIN LOAIXE ON XE.MaLoai = LOAIXE.MaLoai -- Added join with LOAIXE
GROUP BY XE.SoXe, LOAIXE.TenLoai
) AS Subquery
GROUP BY LoaiXe;
-- Another subquery in from example
-- Truy xuất số lượng hồ sơ bảo dưỡng của từng xe
SELECT XE.SoXe, XE.TenXe, COUNT(BIENBANGN.SoBBGN) AS NumberOfMaintenanceRecords
FROM XE
LEFT JOIN BIENBANGN ON XE.SoXe = BIENBANGN.SoXe
GROUP BY XE.SoXe, XE.TenXe;
-- e. Query using group by and aggregate functions
-- Truy xuất tổng phí thuê và phí thuê trung bình của từng khách hàng
SELECT MaKH, SUM(TienDat) AS TotalRentalFee, AVG(TienDat) AS AverageRentalFee
FROM HOPDONG
GROUP BY MaKH;
39
-- Another group by and aggregate functions example
-- Truy xuất tổng số ngày thuê của từng loại xe
SELECT LOAIXE.TenLoai AS VehicleType, SUM(LICHCHOTHUE.SoNgayThue) AS TotalRentedDays
FROM LOAIXE
LEFT JOIN LICHCHOTHUE ON LOAIXE.MaLoai = LICHCHOTHUE.MaLoai
GROUP BY LOAIXE.TenLoai;
-- Example of a function to calculate the total rental fee for a customer
CREATE FUNCTION GetTotalRentalFeeForCustomer(@CustomerID CHAR(10))
RETURNS INT
AS
BEGIN
DECLARE @TotalFee INT;
SELECT @TotalFee = SUM(TienDat)
FROM HOPDONG
WHERE MaKH = @CustomerID;
-- If there is no rental fee for the customer, set @TotalFee to 0
IF (@TotalFee IS NULL)
SET @TotalFee = 0;
RETURN @TotalFee;
END;
-- Example of a trigger to update the TrangThai (Status) column in XE table when a rental
contract is added or updated
CREATE TRIGGER UpdateTrangThaiXe
ON HOPDONG
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE XE
SET TrangThai = 0
WHERE SoXe IN (SELECT SoXe FROM inserted WHERE TrangThai = 1);
END;
-- Example of a procedure to generate a rental contract for a customer
40
CREATE PROCEDURE GenerateRentalContract
@CustomerID CHAR(10),
@VehicleID CHAR(10),
@RentalDate DATETIME,
@RentalDuration INT,
@RentalPurpose VARCHAR(1000)
AS
BEGIN
INSERT INTO HOPDONG (SoXe, MaKH, NgayHD, NoiDungHD)
VALUES (@VehicleID, @CustomerID, @RentalDate, @RentalPurpose);
END;
41
THE END
42
Download