Tải bản đầy đủ (.docx) (320 trang)

Full tài liệu báo cáo môn thực tập cơ sở dữ liệu Quản lí bán hàng xe đạp Online

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 (1.59 MB, 320 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN

Giáo viên hướng dẫn: Chu Thị Hường
Sinh viên:

Nguyễn Quang Dự -KTPM16
Lê Văn Thắng

-KTPM16

Lớp:Thực tập cơ sở dữ liệu chiều thứ 5
BÁO CÁO MÔN HỌC
THỰC TẬP CƠ SỞ DỮ LIỆU

Đề tài:Quản lý bán hàng xe đạp online

CHƯƠNG 1. ĐẶC TẢ HỆ THỐNG


1. Mục đích yêu cầu
Hiện nay, tại các doanh nghiệp việc quản lý hàng hoá, nhân viên, hàng xuất
nhập hàng ngày…gặp nhiều khó khăn, chính vì vậy ý tưởng tạo lên một phần
mềm để góp phần giải quyết vấn đề trên của mỗi người lập trình là không thể
tránh khỏi.
Ngoài việc cung cấp cho 1 phần mềm giúp người kinh doanh quản lý về nhân
viên,khách hàng,hàng hóa,đơn nhập,xuất,…Phần mềm còn giúp người kinh
doanh:
 tổng kết doanh thu,chi phí của cửa hàng trong tháng(quý hoặc năm )
 Tổng kết số lượng xe nào bán chậm ít trong khoảng thời gian nhất định
để hạn chế nhập hàng đó lại.


 Tổng kết số lượng xe nào được bán chạy nhất trong một khoảng thời
gian nhất định(theo mùa,theo tháng,theo năm) để nhập hàng đáp ứng
nhu cầu mua hàng của khách hàng.
 Tài chính hiện tại của cửa hàng có đáp ứng được những nhu cầu nhập
hàng của công ty không đưa ra giải pháp.
1.1 Mô tả hệ thống
Một hệ thống kinh doanh cần có những công việc chính như sau:
 Nhập hàng
 Bán hàng
 Bộ phận bảo hành(sửa chữa)
1.1.1 Cơ cấu tổ chức và sự phân công trách nhiệm
Cửa hàng sẽ có 5 chức vụ nhân viên:
 Nhân viên giới thiệu sản phẩm
 Nhân viên quản lí
 Nhân viên kho hàng
 Nhân viên chủ kho
 Nhân viên sửa chữa(bảo hành)
 Nhân viên kế toán
1.1.1.1. Bộ phận nhập hàng
Nhân viên kho có nhiệm vụ:
- Nhập hàng và kiểm tra hàng rồi báo cáo lại cho nhân viên quản lí


- Giao hàng cho khách hàng
- Kiểm kê kho
1.1.1.2 Bộ phận bán hàng
Nhân viên giới thiệu sản phẩm có nhiệm vụ:
- Giới thiệu chi tiết sản phẩm cho khách hàng
- Giải đáp những thắc mắc của khách hàng về sản phẩm
Nhân viên quản lí có nhiệm vụ:

- Lập hóa đơn bán hàng
- Thanh toán hóa đơn với khách hàng
- Lập đơn hàng nhập hàng
- Thanh toán hóa đơn với nhà cung cấp
- Giải quyết vấn đề đổi hàng(do hàng có thể bị lỗi)
1.1.1.3:Bộ phận sửa chữa
Nhân viên sửa chữa có nhiệm vụ:
- Tiếp nhận những trường hợp đổi trả sản phẩm
- Sửa chữa các vấn đề liên quan đến sản phẩm của khách hàng

trong thời

gian bảo hành (như hỏng hóc,…)
1.2:Quy trình nghiệp vụ
1.2.1 Nhập hàng
Khi có yêu cầu nhập hàng ,nhân viên kho sẽ nhập hàng,nhân viên chủ kho sẽ
check hàng và kiểm tra số lượng rồi báo lại cho nhân viên quản lí.
Nhân viên quản lí sẽ cập nhật những mẫu xe mới vào hệ thống và nhập hóa đơn
nhập hàng vào hệ thống.
Sau đó thanh toán hóa đơn với nhà sản xuất.
1.2.2 Bán hàng

*Khách hàng mua trực tiếp tại cửa hàng
Khi khách hàng đến cửa hàng xem sản phẩm, nhân viên giới thiệu sản phẩm sẽ tư
vấn cho khách hàng về sản phẩm.


Nếu khách hàng mua sản phẩm thì nhân viên kho sẽ lấy sản phẩm trong kho và
mang đến bộ phận của nhân viên quản lí để nhân viên quản lí lập hóa đơn mua hàng
cho khách hàng, đơn hàng được lập thành 2 bản:

-1 bản lưu tại bộ phận quản lý(trong hệ thống)
-1 bản đưa cho khách (khi đã thanh toán)
* Khách hàng mua online
Sau khi đơn hàng online được gửi đến cửa hàng ,nhân viên quản lí sẽ dùng số
điện thoại của khách hàng để gọi cho khách hàng xác nhận khách hàng đặt hàng tại
cửa hàng.
Nhân viên quản lí yêu cầu nhân viên chủ kho chuẩn bị đơn hàng, nhân viên kho
gói hàng cẩn thận rồi giao hàng cho khách hàng.
Khách hàng nhận hàng và sau khi kiểm tra hàng xong khách hàng thanh toán
với nhân viên kho.
Sau đó nhân viên kho về báo cáo với nhân viên quản lí kho về tình trạng đơn
hàng(hoàn thành hay chưa). Nhân viên chủ kho báo lại cho nhân viên quản lý để
nhân viên quản lý hoàn thành thông tin đơn hàng này vào hệ thống(chốt đơn: ĐÃ
HOÀN THÀNH HOẶC CHƯA HOÀN THÀNH)

1.2.3:Sửa chữa(bảo hành)
*Sản phẩm đổi trả
Sản phẩm được đổi trả trong vòng 30 ngày.Vậy nên khi khách hàng đến đổi sản
phẩm do lỗi thì nhân viên quản lí đưa sản phẩm đến bộ phận của nhân viên sửa chữa
check sản phẩm xem có đúng là lỗi của nhà sản xuất hay không hay do lỗi của khách
hàng để có biện pháp đổi hàng khác cho khách hàng(hoặc có thể khách hàng mua sản
phẩm khác với số tiền bù thêm,…)
Nếu sản phẩm do lỗi của nhà sản xuất thì khách hàng sẽ được đổi sản phẩm mới
và nhân viên quản lí lập một hóa đơn mua hàng khác thực hiện việc đổi sản phẩm
cho cho khách và chuyển sản phẩm lỗi vào kho để sau này thực hiện việc đổi trả với
nhà sản xuất .


*Sản phẩm bảo hành
Trong thời gian bảo hành khách hàng muốn sửa chữa các vấn đề liên quan đến sản

phẩm.
Khách hàng được đưa đến bộ phận nhân viên sửa chữa để được hỗ trợ và khắc
phục các lỗi của sản phẩm .
1.3 Một số ghi chú về cửa hàng và quy tắc nghiệp vụ
Cửa hàng có 3 chi nhánh.
Số lượng nhân viên ở mỗi chi nhánh là như nhau.
Sản phẩm sẽ có chương giảm giá theo từng đợt trong năm(theo những ngày đặc
biệt),giảm giá cho khách hàng tùy vào số lượng sản phẩm mua tại cửa hàng,chính
sách giảm giá cho khách hàng quen thuộc .

1.3 Đặc tả các chức năng cần xây dựng
1.3.1 Nhập hàng
-Đầu vào: yêu cầu nhập hàng.
-Đầu ra: Cập nhật hàng mới ,cập nhật thông tin nhà sản xuất.
1.3.2: Lập đơn nhập hàng vào hệ thống
- Đầu vào: Phiếu yêu cầu
- Đầu ra: Đơn nhập hàng
1.3.3 Lập đơn bán hàng
- Đầu vào: Yêu cầu mua hàng
- Đầu ra: Hóa đơn bán hàng
-Nội dung xử lí: Xác nhận yêu cầu mua hàng của khách hàng và lập hóa đơn
mua hàng.
1.3.4 Lập phiếu giao hàng


- Đầu vào: Phiếu giao hàng
- Đầu ra: Phiếu xuất kho
- Nội dung xử lý: Kiểm tra phiếu giao hàng và gửi phiếu yêu cầu xuất kho đến
kho hàng
1.3.5 Kiểm tra hàng

- Đầu vào: kiểm tra hàng trong kho.
- Đầu ra:
+ Nếu: hàng trong kho lớn hơn hoặc bằng hàng khách yêu cầu thì dừng
kiểm tra hàng.
+ Nếu: hàng trong kho nhỏ hơn hàng khách yêu cầu thì lập phiếu yêu
cầu nhập hàng.
- Nội dung xử lý: cập nhật hàng trong kho và lên danh sách những mặt
hàng cần nhập thêm, sau đó gửi yêu cầu nhập hàng
1.3.6:Cập nhật nhân viên
Đầu vào:Nhân viên mới hoặc nhân viên xin thôi việc
Đầu ra:Cập nhật tình trạng nhân viên (thôi việc hay đang làm việc) vào hệ thống
1.3.7:Cập nhật danh sách khách hàng
Đầu vào:Khách hàng mới tại cửa hàng
Đầu ra:Cập nhật khách hàng vào hệ thống

CHƯƠNG 2: PHÂN TÍCH VÀ CÀI ĐẶT DỮ LIỆU HỆ THỐNG
*Chuẩn hóa dữ liệu:
Dạng chuẩn 1 – 1NF (First Normal Form)


Định nghĩa: Một bảng (quan hệ) được gọi là ở dạng chuẩn 1NF nếu và chỉ nếu toàn
bộ các miền giá trị của các cột có mặt trong bảng (quan hệ) đều chỉ chứa các giá trị
nguyên tử (nguyên tố)
Ví dụ:
Một bảng (quan hệ) chưa ở 1NF:
MASV

HOTEN

DIACHI


MAMON

TENMON

DIEM

A01

Lê Na

12 Thái Hà

M01M02

CSDLAnh

89

A02

Trần An

56 Mã Mây

M01

CSDL

8


A03

Hà Nam

24 Cầu Gỗ

M01M02M03

CSDLAnhToán 1

689

Dạng chuẩn 2 – 2NF
Định nghĩa Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó:
 Là 1NF
 Các thuộc tính không khoá phải phụ thuộc hàm đầy đủ vào khoá chính
Ví dụ
 Ví dụ1: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm F =
{AB -> C, AB -> D}là quan hệ đạt chuẩn 2NF.
 Ví dụ2: Cho quan hệ R = (ABCD) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, B -> DC} là quan hệ không đạt chuẩn 2NF vì có phụ thuộc
hàm
B -> DC là phụ thuộc hàm bộ phận (phụ thuộc hàm không đầy đủ) vào khoá. Khi đó
ta đưa về dạng chuẩn 2NF như sau:


Nhận xét
Một quan hệ ở dạng chuẩn 2NF nếu thoả mãn 1 trong các đièu kiện sau:
 Khoá chính chỉ gồm một thuộc tính

 Bảng không có các thuộc tính không khoá
 Tất cả các thuộc tính không khoá phụ thuộc hoàn toàn vào tập các thuộc tính
khoá chính
Dạng chuẩn 3 – 3NF
Định nghĩa Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó:
 Là 2NF
 Các thuộc tính không khoá phải phụ thuộc trực tiếp vào khoá chính
Ví dụ
 Ví dụ1: Cho quan hệ R = (ABCDGH, khoá là AB và tập phụ thuộc hàm F =
{AB -> C, AB -> D, AB -> GH} là quan hệ đạt chuẩn 3NF.
 Ví dụ2: Cho quan hệ R = (ABCDGH) , khoá là AB và tập phụ thuộc hàm
F = {AB -> C, AB -> D, AB -> GH, G -> DH} là quan hệ không đạt chuẩn 3NF vì có
phụ thuộc hàm G -> DH là phụ thuộc hàm gián tiếp vào khoá. Khi đó ta đưa về dạng
chuẩn 3NF như sau:


2.1. Xác định kiểu thực thể,kiểu thuộc tính
1.HANG_XE(ID_Hang,Ten_hang).
+khóa chính:ID_Hang
+tập phụ thuộc hàm:ID_Hang->Ten_hang
đạt chuẩn 3nf
2.LOAI_XE(ID_Loai,Ten_Loai).
+khóa chính:ID_Loai
+tập phụ thuộc hàm:ID_Loai->Ten_Loai
đạt chuẩn 3nf
3.XE(ID_Xe,Ten_Xe,ID_Loai,ID_Hang,Model,Gia_ban,Bao_hanh,Mo_ta,khu
yen_mai_hien_tai,is_con_hang,is_het_hang,khong_kinh_doanh).
+khóa chính:ID_Xe
+Tập phụ thuộc hàm: ID_Xe-> Ten_Xe, ID_Loai, ID_Hang,
Model,Gia_ban,Bao_hanh,Mo_ta,khuyen_mai_hien_tai,is_con_hang,is_

het_hang,khong_kinh_doanh
Đạt chuẩn 3nf
4.NSX(ID_NSX,Ten_NSX,SDT,email,Dia_chi).
+khóa chính:ID_NSX
+tập phụ thuộc hàm: ID_NSX -> Ten_NSX, SDT, email, Dia_chi.
đạt chuẩn 3nf
5.DON_NHAP_HANG(ID_hoa_don_nhap,ID_NSX,
ID_chu_kho,ngay_nhap_hang).
+khóa chính:ID_hoa_don_nhap
+tập phụ thuộc hàm: ID_hoa_don_nhap -> ID_NSX ,
ngay_nhap_hang
đạt chuẩn 3nf
6.CHI_TIET_DON_NHAP_HANG(ID_hoa_don_nhap,
ID_muc,ID_Xe,Gia_nhap,So_luong,Chiet_khau)
+khóa chính:ID_hoa_don_nhap,ID_muc

ID_chu_kho,


+tập phụ thuộc hàm: ID_hoa_don_nhap,ID_Muc -> ID_Xe, Gia_nhap,
So_luong, Chiet_khau
đạt chuẩn 3nf

7.CUA_HANG(ID_cua_hang,Ten_cua_hang,SDT,email,dia_chi)
+khóa chính:ID_cua_hang
+tập phụ thuộc hàm: ID_cua_hang -> Ten_cua_hang, SDT, email,
dia_chi.
đạt chuẩn 3nf
8.KHO(ID_cua_hang,ID_Xe,So_luong_khong_loi,So_luong_bi_loi)
+khóa chính:ID_cua_hang,ID_XE

+tập phụ thuộc hàm:
ID_cua_hang,ID_XE->So_luong_khong_loi,So_luong_bi_loi
đạt chuẩn 3nf

9.CHUC_VU(ID_chuc_vu,Ten_chuc_vu,Luong)
+khóa chính:ID_chuc_vu
+tập phụ thuộc hàm:
ID_chuc_vu->Ten_chuc_vu,Luong
đạt chuẩn 3nf

10.NHAN_VIEN(ID_NV,Ten_nhan_vien,SDT,Dia_chi,ngay_vao_lam_viec,I
D_chuc_vu,is_dang_lam_viec,is_nghi_viec,ID_cua_hang, ID_nguoi_quan_li)
+khóa chính:ID_NV
+tập phụ thuộc hàm:
ID_NV->Ten_nhan_vien,
SDT,
Dia_chi,
ngay_vao_lam_viec
,ID_chuc_vu,is_dang_lam_viec,is_nghi_viec,ID_cua_hang, ID_nguoi_quan_li
đạt chuẩn 3nf


11.KHACH_HANG(ID_khach_hang,Ten_khach_hang,SDT,dia_chi,So_tien_
duoc_giam).
+khóa chính:ID_khach_hang
+tập phụ thuộc hàm:
ID_khach_han-> Ten_khach_hang,SDT,dia_chi,So_tien_duoc_giam
đạt chuẩn 3nf

12.DAT_HANG(ID_don_dat_hang,ID_khach_hang,ngay_dat_hang,ngay_gia

o_hang,tien_ship,ID_Nhan_vien_ban_hang,ID_nhan_vien_giao_hang,is_dang_giao_
hang,is_da_giao_hang,is_huy_don_hang).
+khóa chính:ID_don_dat_hang
+tập phụ thuộc hàm:
ID_don_dat_hang->
ID_khach_hang,ngay_dat_hang,ngay_giao_hang,tien_ship,ID_Nhan_vien_ban
_hang,ID_nhan_vien_giao_hang,is_dang_giao_hang,is_da_giao_hang,is_huy_
don_hang
đạt chuẩn 3nf

13.CHI_TIET_DON_DAT_HANG(ID_don_dat_hang,ID_muc,ID_xe,so_luong
)
+khóa chính:ID_don_dat_hang,ID_muc
+tập phụ thuộc hàm:
ID_don_dat_hang,ID_muc-> ID_xe,so_luong
đạt chuẩn 3nf

14.DOI_TRA(ID_don_dat_hang,ID_muc,ID_xe,so_luong)
+khóa chính:ID_don_dat_hang,ID_muc
+tập phụ thuộc hàm:
ID_don_dat_hang,ID_muc-> ID_xe,so_luong
đạt chuẩn 3nf


Nhưng để đảm bảo về tốc độ truy vấn em thêm một số thuộc tính và thêm một số
bảng như sau:
1.HANG_XE(ID_Hang,Ten_hang)
2.LOAI_XE(ID_Loai,Ten_Loai)
3.XE(ID_Xe,Ten_Xe,ID_Loai,ID_Hang,Model,Gia_ban,Bao_hanh,Mo_ta,khu
yen_mai_hien_tai,ID_NSX,is_con_hang,is_het_hang, is_khong_kinh_doanh).

4.NSX(ID_NSX,Ten_NSX,SDT,email,Dia_chi)
5.DON_NHAP_HANG(ID_hoa_don_nhap,ID_NSX,
ID_chu_kho,ngay_nhap_hang,ID_cua_hang,Tong_tien).
Bị hạ chuẩn xuống 2NF do :
+khóa chính:ID_hoa_don_nhap
+tập phụ thuộc hàm:F={ID_hoa_don_nhap-> ID_NSX,
ID_chu_kho,ngay_nhap_hang,ID_cua_hang,Tong_tien;
ID_chu_kho->ID_cua_hang}
Nhưng ta sẽ thiết lập trigger trước khi insert vào bảng để lấy ID_cua_hang của
ID_chu_kho để insert vào cột ID_cua_hang để đảm bảo ID_cua_hàng khớp với
ID_cua_hang mà ID_chu_kho đưa sang
6.CHI_TIET_DON_NHAP_HANG(ID_hoa_don_nhap,
ID_muc,ID_Xe,Gia_nhap,So_luong,Chiet_khau)
7.CUA_HANG(ID_cua_hang,Ten_cua_hang,SDT,email,dia_chi)
8.KHO(ID_cua_hang,ID_Xe,So_luong_khong_loi,So_luong_bi_loi)
9.CHUC_VU(ID_chuc_vu,Ten_chuc_vu,Luong)
10.NHAN_VIEN(ID_NV,Ten_nhan_vien,SDT,Dia_chi,ngay_vao_lam_viec,I
D_chuc_vu,ID_cua_hang, ID_nguoi_quan_li, is_dang_lam_viec,is_nghi_viec).
11.KHACH_HANG(ID_khach_hang,Ten_khach_hang,SDT,dia_chi,So_tien_
duoc_giam).
12.DAT_HANG(ID_don_dat_hang,ID_khach_hang,ngay_dat_hang,ngay_giao_
hang,tien_ship,So_tien_duoc_giam,ID_Nhan_vien_ban_hang,
ID_nhan_vien_giao_hang,ID_cua_hang,Tong_tien,
is_dang_giao_hang,is_da_giao_hang,is_huy_don_hang).
Bị hạ chuẩn xuống 2NF do:
+khóa chính:ID_don_dat_hang


+tập phụ thuộc hàm : F={ID_don_dat_hang->
ID_khach_hang,ngay_dat_hang,ngay_giao_hang,tien_ship,So_tien_duoc_giam,ID_N

han_vien_ban_hang, ID_nhan_vien_giao_hang,ID_cua_hang,Tong_tien,
is_dang_giao_hang,is_da_giao_hang,is_huy_don_hang;
ID_khach_hang->so_tien_duoc_giam;
ID_nhan_vien_ban_hang->ID_cua_hang}
+khắc phục:thiết lập trigger sao cho:
 ID_khach_hang khớp với so_tien_duoc_giam
 id_nhan_vien_ban_hang khớp với id_cua_hang
 id_nhan_vien_ban_hang và id_nhan_vien_giao_hang phải khớp với cùng
id_cua_hang

13.CHI_TIET_DON_DAT_HANG(ID_don_dat_hang,ID_muc,ID_xe,so_luong
,gia_ban,giam_gia)
Bị hạ chuẩn xuống 2NF do:
+khóa chính:id_don_dat_hang,id_muc
+tập phụ thuộc hàm: F={ID_don_dat_hang,ID_muc->ID_xe,
so_luong,gia_ban,giam_gia;
ID_xe->gia_ban}
+khắc phục:thiết lập trigger giá bán khớp với id_xe đó
14.DOI_TRA(ID_don_dat_hang,ID_muc,ID_xe,so_luong).

Mô hình ER cuối cùng:


2.2:ĐẶC TẢ DỮ LIỆU CHO TỪNG BẢNG
1.HANG_XE
Thuộc tính

Key

Type


Mô tả


ID_hang

Khóa chính

Ten_hang

NVARCHAR(10)

ID hãng xe

NVARCHAR(15)

Tên hãng xe

2.LOAI_XE
Thuộc tính

Key

Type

Mô tả

ID_loai

Khóa chính


NVARCHAR(10)

ID loại xe

NVARCHAR(20)

Tên loại xe

Ten_loai
3.XE
Thuộc tính

Key

Type

Mô tả

ID_xe

Khóa chính

NVARCHAR(12)

ID xe

NVARCHAR(55)

Tên xe


Ten_xe
ID_hang

Khóa phụ

NVARCHAR(10)

ID hãng xe

ID_loai

Khóa phụ

NVARCHAR(10)

ID loại xe

Model_year

SMALLINT

Mẫu năm của xe

Gia_ban

DECIMAL(6,0)

Giá bán của
xe(x1000đ)


Bao_hanh

TINYINT

Bảo hành(năm)

Mô tả

NVARCHAR(1500)

Mô tả về xe

Khuyen_mai_hien_tai

DECIMAL(3,2)

Phần tram khuyến
mại của xe hiện
tại

NVARCHAR(11)

ID của nhà sản
xuất xe này

Is_con_hang

BIT


Xe còn hàng

Is_het_hang

BIT

Xe hết hàng

Is_khong_kinh_doanh

BIT

Xe không còn
kinh doanh

ID_NSX

Khóa phụ

4.NSX
Thuộc tính

Key

Type

Mô tả


ID_NSX


Khóa chính

NVARCHAR(11)

ID nhà sản xuất

Ten_NSX

NVARCHAR(30)

Tên nhà sản xuất

SDT

VARCHAR(10)

Số điện thoại

email

VARCHAR(40)

email

Dia_chi

NVARCHAR(200)

Địa chỉ của NSX


5.DON_NHAP_HANG
Thuộc tính

Key

Type

ID_hoa_don_nhap

Khóa chính

NVARCHAR(11) ID hóa đơn nhập hàng

ID_NSX

Khóa phụ

NVARCHAR(11) ID NSX

ID_chu_kho

Khóa phụ

NVARCHAR(10) ID nhân viên chủ kho

Ngay_nhap_hang

Mô tả


DATE

ID_cua_hang

Khóa phụ

Tong_tien

Ngày nhập hàng

NVARCHAR(10) ID cửa hàng mà nhập hàng
về
DECIMAL(7,0)

Tổng tiền của đơn nhập
hàng

6. CHI_TIET_DON_NHAP_HANG
Thuộc tính

Key

Type

Mô tả

ID_hoa_don_nhap

Khóa
chính


NVARCHAR(11)

ID hóa đơn nhập hàng

ID_muc

Khóa
chính

TINYINT

ID mục trong đơn hàng

ID_Xe

Khóa
phụ

NVARCHAR(12)

ID Xe

Gia_nhap

DECIMAL(6,0)

Giá nhập xe(x1000đ)

So_luong


TINYINT

Số lượng xe

Chiet_khau

DECIMAL(3,2)

Chiết khấu (%)


7. CUA_HANG
Thuộc tính

Key

Type

Mô tả

ID_cua_hang

Khóa chính

NVARCHAR(10)

ID cửa hàng

Ten_cua_hang


NVARCHAR(15)

Tên cửa hàng

SDT

VARCHAR(10)

Số điện thoại cửa hàng

email

VARCHAR(40)

Email cửa hàng

dia_chi

NVARCHAR(100)

Địa chỉ của cửa hàng

8.KHO
Thuộc tính

Key

Type


Mô tả

ID_cua_hang

Khóa chính

NVARCHAR(10)

ID cửa hàng

ID_xe

Khóa chính

NVARCHAR(12)

ID xe

So_luong_khong_loi

SMALLINT

Số lượng sản phẩm không
bị lỗi trong kho

So_luong_bi_loi

TINYINT

Số lượng sản phẩm bị lỗi

trong kho

9.CHUC_VU
Thuộc tính

Key

Type

Mô tả

ID_chuc_vu

Khóa chính

NVARCHAR(10)

ID chức vụ

Ten_chuc_vu

NVARCHAR(20)

Tên chức vụ

Luong

DECIMAL(5,0)

Mức lương của chức vụ


10.NHAN_VIEN
Thuộc tính

Key

Type

Mô tả

ID_NV

Khóa chính

NVARCHAR(10)

ID nhân viên

Ten_nhan_vien

NVARCHAR(30)

Tên nhân viên

SDT

VARCHAR(10)

Số điện thoại nhân viên



Dia_chi

NVARCHAR(100)

Địa chỉ của nhân viên

Ngay_vao_lam_viec

DATE

Ngày vào làm việc của
nhân viên

ID_Chuc_vu

Khóa phụ

NVARCHAR(10)

ID chức vụ của nhân viên

ID_cua_hang

Khóa phụ

NVARCHAR(10)

ID cửa hàng làm việc


ID_nguoi_quan_li

Khóa phụ

NVARCHAR(10)

ID người quản lí

Is_dang_lam_viec

BIT

Trạng thái đang làm việc

Is_nghi_viec

BIT

Trạng thái nghỉ việc

11.KHACH_HANG
Thuộc tính

Key

Type

Mô tả

ID_khach_hang


Khóa chính NVARCHAR(12)

Ten_khach_hang

NVARCHAR(30)

Tên của khách hàng

SDT

VARCHAR(10)

SDT khách hàng

Dia_chi

NVARCHAR(100)

Địa chỉ của khách
hàng

So_tien_duoc_giam

DECIMAL(5,0)

Số tiền được giảm
của khách khi khách
đến cửa hàng đổi trả
do lỗi


ID của khách hàng

12.DAT_HANG
Thuộc tính

Key

Type

Mô tả

ID_don_dat_hang

Khóa
chính

NVARCHAR(11)

ID của đơn đặt hàng

ID_khach_hang

Khóa
phụ

NVARCHAR(12)

ID của khách hàng


Ngay_dat_hang

DATE

Ngày đặt hàng của khách
hàng

Ngay_giao_hang

DATE

Ngày giao hàng cho khách

Tien_ship

DECIMAL(3,0)

Tiền ship hàng (x1000đ)


So_tien_khach_duoc_giam

DECIMAL(5,0)

Số tiền khách hàng được
giảm

Id_nhan_vien_ban_hang

Khóa

phụ

NVARCHAR(10)

ID của nhân viên bán hàng

ID_Nhan_vien_giao_hang

Khóa
phụ

NVARCHAR(10)

ID nhân viên kho phụ trách
giao hàng

ID_cua_hang

Khóa
phụ

NVARCHAR(10)

ID của cửa hàng mà khách
mua hàng

Tong_tien

DECIMAL(8,0)


Tổng tiền đơn mua hàng
của khách hàng

Is_dang_giao_hang

BIT

Đang giao hàng

Is_da_giao_hang

BIT

Đã giao hàng

Is_huy_don_hang

BIT

Hủy đơn hàng

13.CHI_TIET_DON_DAT_HANG
Thuộc tính

Key

Type

Mô tả


ID_don_dat_hang

Khóa chính

NVARCHAR(11)

ID của đơn đặt hàng của
khách hàng

ID_Muc

Khóa chính

TINYINT

ID các mục mà khách hàng
mua hàng

ID_xe

Khóa phụ

NVARCHAR(12)

ID xe mà khách hàng mua

so_luong

TINYINT


Số lượng xe mà khách mua

Gia_ban

DECIMAL(6,0)

Giá bán của mỗi một ID xe

Giam_gia

DECIMAL(3,2)

Giảm giá(%) do mua nhiều
xe cùng một lúc

14.DOI_TRA
Thuộc tính

Key

Type

Mô tả

ID_don_dat_hang

Khóa chính

NVARCHAR(11)


ID của đơn đặt hàng của
khách hàng

ID_Muc

Khóa chính

TINYINT

ID các mục mà khách hàng


đổi sản phẩm
ID_xe

Khóa phụ

so_luong

NVARCHAR(12)

ID xe mà khách hàng đổi

TINYINT

Số lượng xe mà khách đổi

2.3:Cài đặt dữ liệu vào hệ thống
2.3.1.Tạo cơ sở dữ liệu QuanLyBanXeDap
-Tạo 4 schema là:ban_hang,nhap_hang,san_pham,nhan_vien

CREATE DATABASE BikeStoreShopping
GO
USE BikeStoreShopping
GO
CREATE SCHEMA san_pham
GO
CREATE SCHEMA nhan_vien
GO
CREATE SCHEMA nhap_hang
GO
CREATE SCHEMA ban_hang
GO
2.3.2:Tạo bảng vào cơ sở dữ liệu
--1.tạo bảng hãng xe
CREATE TABLE san_pham.hang_xe
(
stt INT IDENTITY(1,1),
ten_hang NVARCHAR(15),
id_hang_xe AS ISNULL('HX'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED
CONSTRAINT pk_id_hang_xe PRIMARY KEY(id_hang_xe)
)
--2.tạo bảng loại xe
CREATE TABLE san_pham.loai_xe
(
stt INT IDENTITY(1,1),
ten_loai NVARCHAR(20),
id_loai_xe AS ISNULL('LX'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED
CONSTRAINT pk_id_loai_xe PRIMARY KEY(id_loai_xe)

)
--3.tạo bảng về xe
CREATE TABLE san_pham.xe
(


stt INT IDENTITY(1,1),
id_xe AS ISNULL('XE'+RIGHT(CAST(model_year AS
NVARCHAR(4)),2)+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*') PERSISTED,
ten_xe NVARCHAR(55) NOT NULL,
id_hang_xe NVARCHAR(10) NOT NULL,
id_loai_xe NVARCHAR(10) NOT NULL,
model_year SMALLINT NOT NULL,
gia_ban DECIMAL(6,0) NOT NULL,
bao_hanh TINYINT NOT NULL DEFAULT 2,
mo_ta NVARCHAR(1500),
khuyen_mai DECIMAL(3,2) NOT NULL DEFAULT 0,
id_nsx NVARCHAR(11) NOT NULL ,
is_con_hang BIT NOT NULL DEFAULT 1,
is_het_hang BIT NOT NULL DEFAULT 0,
is_khong_kinh_doanh BIT NOT NULL DEFAULT 0,
CONSTRAINT pk_id_xe PRIMARY KEY(id_xe),
CONSTRAINT fk_id_hang FOREIGN KEY (id_hang_xe)
REFERENCES san_pham.hang_xe(id_hang_xe) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT fk_id_loai FOREIGN KEY (id_loai_xe)
REFERENCES san_pham.loai_xe(id_loai_xe) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT check_modelYear_giaBan_baoHanh_khuyenMai
CHECK((model_year BETWEEN 2000 AND 2050) AND gia_ban>100 AND (bao_hanh

BETWEEN 0 AND 3) AND (khuyen_mai BETWEEN 0 AND 1) )
)
--4.tạo bảng về NSX
CREATE TABLE nhap_hang.nsx
(
stt INT IDENTITY(1,1),
id_nsx AS ISNULL('NSX'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
ten_nsx NVARCHAR(30) NOT NULL UNIQUE,
SDT VARCHAR(10) UNIQUE,
email VARCHAR(40) UNIQUE,
dia_chi NVARCHAR(200),
CONSTRAINT pk_id_nsx PRIMARY KEY(id_nsx)
)
--taọ foreign key id_nsx cho san_pham.xe
ALTER TABLE san_pham.xe ADD
CONSTRAINT fk_id_nsx FOREIGN KEY(id_nsx)
REFERENCES nhap_hang.nsx(id_nsx) ON DELETE NO ACTION ON UPDATE NO ACTION
--5.tạo bảng về cửa hàng
CREATE TABLE ban_hang.cua_hang
(
stt INT IDENTITY(1,1),
id_cua_hang AS ISNULL('CH'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
ten_cua_hang NVARCHAR(15) NOT NULL,
SDT VARCHAR(10),


email VARCHAR(40),
dia_chi NVARCHAR(100),

CONSTRAINT pk_id_cua_hang PRIMARY KEY(id_cua_hang)
)
--6.tạo bảng chức vụ nhân viên
CREATE TABLE nhan_vien.chuc_vu
(
stt INT IDENTITY(1,1),
id_chuc_vu AS ISNULL('CV'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
ten_chuc_vu NVARCHAR(20) NOT NULL UNIQUE,
luong DECIMAL(5,0) NOT NULL,
CONSTRAINT pk_id_chuc_vu PRIMARY KEY(id_chuc_vu)
)
--7.tạo bảng về nhân viên
CREATE TABLE nhan_vien.nhan_viens
(
stt INT IDENTITY(1,1),
id_nhan_vien AS ISNULL('NV'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
ten_nhan_vien NVARCHAR(30) NOT NULL,
SDT VARCHAR(10),
dia_chi NVARCHAR(100),
ngay_vao_lam_viec DATE NOT NULL,
id_chuc_vu NVARCHAR(10) NOT NULL,
id_cua_hang NVARCHAR(10) NOT NULL,
id_nguoi_quan_li NVARCHAR(10),
is_dang_lam_viec BIT NOT NULL DEFAULT 1,
is_nghi_viec BIT NOT NULL DEFAULT 0,
CONSTRAINT pk_id_nhan_vien PRIMARY KEY(id_nhan_vien),
CONSTRAINT fk_id_chuc_vu FOREIGN KEY(id_chuc_vu)
REFERENCES nhan_vien.chuc_vu(id_chuc_vu) ON DELETE CASCADE ON UPDATE

CASCADE,
CONSTRAINT fk_id_cua_hang FOREIGN KEY(id_cua_hang)
REFERENCES ban_hang.cua_hang(id_cua_hang) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT fk_id_nguoi_quan_li FOREIGN KEY(id_nguoi_quan_li)
REFERENCES nhan_vien.nhan_viens(id_nhan_vien) ON DELETE NO ACTION ON
UPDATE NO ACTION,
CONSTRAINT check_ngayLamViec CHECK(ngay_vao_lam_viec <= GETDATE() )
)
--8.tạo bảng đơn nhập hàng
CREATE TABLE nhap_hang.don_nhap_hang
(
stt INT IDENTITY(1,1),
id_hoa_don_nhap AS ISNULL('HDN'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
id_nsx NVARCHAR(11) NOT NULL,
id_chu_kho NVARCHAR(10) NOT NULL,
ngay_nhap_hang DATE NOT NULL,
id_cua_hang NVARCHAR(10) NOT NULL,
tong_tien DECIMAL(7,0) NOT NULL DEFAULT 0,
CONSTRAINT pk_id_hoaDonNhap PRIMARY KEY(id_hoa_don_nhap),


CONSTRAINT fk_id_nsx FOREIGN KEY(id_nsx)
REFERENCES nhap_hang.nsx(id_nsx) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT fk_id_chu_kho FOREIGN KEY(id_chu_kho)
REFERENCES nhan_vien.nhan_viens(id_nhan_vien) ON DELETE CASCADE ON
UPDATE CASCADE,
CONSTRAINT fk_id_cuaHang FOREIGN KEY(id_cua_hang)

REFERENCES ban_hang.cua_hang(id_cua_hang) ON DELETE NO ACTION ON
UPDATE NO ACTION,
CONSTRAINT check_date_and_tongTien CHECK((ngay_nhap_hang<=GETDATE())
AND (tong_tien>=0))
)
--9.tạo bảng chi tiết đơn nhập hàng
CREATE TABLE nhap_hang.chi_tiet_nhap_hang
(
id_hoa_don_nhap NVARCHAR(11) NOT NULL,
id_muc INT NOT NULL,
id_xe NVARCHAR(12) NOT NULL,
gia_nhap DECIMAL(6,0) NOT NULL,
so_luong TINYINT NOT NULL,
chiet_khau DECIMAL(3,2) NOT NULL DEFAULT 0,
CONSTRAINT pk_id_hoaDonNhap_muc PRIMARY KEY(id_hoa_don_nhap,id_muc),
CONSTRAINT fk_id_hoa_don_nhap FOREIGN KEY(id_hoa_don_nhap)
REFERENCES nhap_hang.don_nhap_hang(id_hoa_don_nhap) ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT fk_id_xe FOREIGN KEY(id_xe)
REFERENCES san_pham.xe(id_xe) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT check_soLuong_and_chieuKhau_and_giaNhap
CHECK((gia_nhap>0) AND (so_luong>0) AND (chiet_khau BETWEEN 0 AND 1))
)
--10.tạo bảng về kho hàng
CREATE TABLE san_pham.kho
(
id_cua_hang NVARCHAR(10) NOT NULL,
id_xe NVARCHAR(12) NOT NULL,
so_luong_khong_loi SMALLINT NOT NULL DEFAULT 0,
so_luong_bi_loi TINYINT NOT NULL DEFAULT 0,

CONSTRAINT pk_idCuaHang_idXe PRIMARY KEY(id_cua_hang,id_xe),
CONSTRAINT fk_id_cua_hang FOREIGN KEY(id_cua_hang)
REFERENCES ban_hang.cua_hang(id_cua_hang) ON DELETE CASCADE ON UPDATE
CASCADE,
CONSTRAINT fk_idXe FOREIGN KEY(id_xe)
REFERENCES san_pham.xe(id_xe) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT check_greater_than_0 CHECK(so_luong_khong_loi>=0 AND
so_luong_bi_loi>=0)
)
--11.tạo bảng về khách hàng
CREATE TABLE ban_hang.khach_hang
(
stt INT IDENTITY(1,1),


id_khach_hang AS ISNULL('KH'+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*')
PERSISTED,
ten_khach_hang NVARCHAR(30) NOT NULL,
SDT VARCHAR(10),
dia_chi NVARCHAR(100),
so_tien_duoc_giam DECIMAL(5,0) NOT NULL DEFAULT 0,
CONSTRAINT pk_id_khach_hang PRIMARY KEY (id_khach_hang),
CONSTRAINT check_greater_than_0 CHECK(so_tien_duoc_giam>=0)
)
--12.tạo bảng về đặt hàng
CREATE TABLE ban_hang.dat_hang
(
stt INT IDENTITY(1,1),
id_don_dat_hang AS ISNULL('DDH'+RIGHT(CAST(YEAR(ngay_dat_hang) AS
NVARCHAR(4)),2)+RIGHT('00000000'+CAST(stt as nvarchar(8)),8),'*') PERSISTED,

id_khach_hang NVARCHAR(10) NOT NULL,
ngay_dat_hang DATE NOT NULL,
ngay_giao_hang DATE,
tien_ship DECIMAL(3,0) NOT NULL DEFAULT 20,
so_tien_khach_duoc_giam DECIMAL(5,0) NOT NULL,
id_nhan_vien_ban_hang NVARCHAR(10) NOT NULL,
id_nhan_vien_giao_hang NVARCHAR(10) NOT NULL,
id_cua_hang NVARCHAR(10) NOT NULL,
tong_tien DECIMAL(8,0) NOT NULL DEFAULT 0,
is_dang_giao_hang BIT NOT NULL DEFAULT 0,
is_da_giao_hang BIT NOT NULL DEFAULT 1,
is_huy_don_hang BIT NOT NULL DEFAULT 0,
CONSTRAINT pk_id_donDatHang PRIMARY KEY(id_don_dat_hang),
CONSTRAINT fk_id_khach_hang FOREIGN KEY(id_khach_hang)
REFERENCES ban_hang.khach_hang(id_khach_hang) ON DELETE CASCADE ON
UPDATE CASCADE,
CONSTRAINT fk_id_nhan_vien_ban_hang FOREIGN KEY(id_nhan_vien_ban_hang)
REFERENCES nhan_vien.nhan_viens(id_nhan_vien) ON DELETE CASCADE ON
UPDATE CASCADE,
CONSTRAINT fk_id_nhan_vien_giao_hang FOREIGN KEY(id_nhan_vien_giao_hang)
REFERENCES nhan_vien.nhan_viens(id_nhan_vien) ON DELETE NO ACTION ON
UPDATE NO ACTION,
CONSTRAINT fk_id_cua_hang FOREIGN KEY(id_cua_hang)
REFERENCES ban_hang.cua_hang(id_cua_hang) ON DELETE NO ACTION ON
UPDATE NO ACTION,
CONSTRAINT check_date CHECK(ngay_giao_hang IS NULL OR (ngay_giao_hang IS
NOT NULL AND ngay_dat_hangCONSTRAINT check_greater_than_0_dat_hang CHECK(tien_ship >=0)
)
--13.tạo bảng về chi tiet dat hang

CREATE TABLE ban_hang.chi_tiet_don_dat_hang
(
id_don_dat_hang NVARCHAR(13) NOT NULL,
id_muc INT NOT NULL,
id_xe NVARCHAR(12) NOT NULL,
so_luong TINYINT NOT NULL,
gia_ban DECIMAL(6,0) NOT NULL,


giam_gia DECIMAL(3,2) NOT NULL DEFAULT 0,
CONSTRAINT pk_idDonDatHang_idMuc PRIMARY KEY(id_don_dat_hang,id_muc),
CONSTRAINT fk_id_don_dat_hang FOREIGN KEY(id_don_dat_hang)
REFERENCES ban_hang.dat_hang(id_don_dat_hang) ON DELETE CASCADE ON
UPDATE CASCADE,
CONSTRAINT fk_id_xe FOREIGN KEY(id_xe)
REFERENCES san_pham.xe(id_xe) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT check_chiTietDonDatHang CHECK(so_luong>0 AND (giam_gia
BETWEEN 0 AND 1 ))
)
--14:tạo bảng đổi trả
CREATE TABLE ban_hang.doi_tra
(
id_don_dat_hang NVARCHAR(13) NOT NULL,
id_muc INT NOT NULL,
id_xe NVARCHAR(12) NOT NULL,
so_luong TINYINT NOT NULL CHECK(so_luong>0),
CONSTRAINT pk_idDonDatHang_idMuc_doi_tra PRIMARY
KEY(id_don_dat_hang,id_muc),
CONSTRAINT fk_id_don_dat_hang_doi_tra FOREIGN KEY(id_don_dat_hang)
REFERENCES ban_hang.dat_hang(id_don_dat_hang) ON DELETE CASCADE ON

UPDATE CASCADE,
CONSTRAINT fk_id_xe_doi_tra FOREIGN KEY(id_xe)
REFERENCES san_pham.xe(id_xe) ON DELETE CASCADE ON UPDATE CASCADE
)

2.3.5:Thiết lập Trigger và Insert dữ liệu vào bảng
--insert vào bảng hãng xe
SET IDENTITY_INSERT san_pham.hang_xe ON
INSERT INTO san_pham.hang_xe(stt,ten_hang) VALUES(1,'Electra'),(2,'Haro'),(3,'Heller'),
(4,'Pure Cycles'),(5,'Ritchey'),(6,'Strider'),(7,'Sun Bicycles'),(8,'Surly'),(9,'Trek')
SET IDENTITY_INSERT san_pham.hang_xe OFF
--insert vào bảng loại xe
SET IDENTITY_INSERT san_pham.loai_xe ON;
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(1,'Children Bicycles')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(2,'Comfort Bicycles')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(3,'Cruisers Bicycles')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(4,'Cyclocross Bicycles')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(5,'Electric Bikes')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(6,'Mountain Bikes')
INSERT INTO san_pham.loai_xe(stt,ten_loai) VALUES(7,'Road Bikes')
SET IDENTITY_INSERT san_pham.loai_xe OFF;
--thiết lập insert vào bảng xe
--tạo hàm kiểm tra chỉ tồn tại một trạng thái của xe
--ví du: xe không thể vừa còn hàng lại vừa hết hàng hoặc xe vừa còn hàng lại vừa không kinh doanh


×