Một đơn đặt hàng chỉ gởi cho một nhà cung cấp, trong đơn đặt hàng có thông tin mã đơn đặt hàng để phân biệt các đơn đặt hàng, ngày đặt hàng; một nhà cung cấp có thể được đặt hàng nhiều l
Trang 1KHOA CÔNG NGHỆ THÔNG TIN II
THIẾT KẾ CƠ SỞ DỮ LIỆU THƯƠNG MẠI ĐIỆN TỬ BÁN ĐỒNG HỒ GVHD: LƯU NGUYỄN KỲ THƯ
Họ và tên: Nguyễn Xuân
Tiến
MSSV: N19DCCN169
Lớp: D19CQCNPM02
TPHCM, tháng 6 năm 2023
Trang 2
Trang 3
Thành phố Hồ Chí Minh, ngày … tháng …
năm 2023
Giảng viên hướng dẫn
Trang 41 Mục tiêu : Thiết kế Cơ sở dữ liệu Thương mại điện tử bán đồng hồ
2 Khảo sát thực tế bài toán :
- Công ty bán nhiều đồng hồ, thông tin đồng hồ bao gồm mã đồng hồ để phân biệt các đồng hồ với nhau, tên đồng hồ, giá, số lượng tồn, mô tả , trạng thái, hình ảnh Một loại đồng hồ có nhiều đồng hồ và một đồng hồ có 1 loại đồng hồ
- Một đồng hồ thuộc 1 hãng đồng hồ, một hãng có nhiều đồng hồ
- Nhà cung cấp sẽ cung cấp nhiều đồng hồ thuộc các hãng khác nhau Nhà cung cấp sẽ
có thông tin: mã nhà cung cấp để phân biệt với nhà cung cấp khác, tên nhà cung cấp, địa chỉ, email, số điện thoại
- Công ty có nhiều nhân viên, mỗi nhân viên có thông tin bao gồm mã nhân viên để phân biệt các nhân viên, họ, tên, giới tính, ngày sinh, địa chỉ, số điện thoại, email
- Khi công ty muốn nhập hàng thì phải đặt hàng cho nhà cung cấp Một đơn đặt hàng chỉ gởi cho một nhà cung cấp, trong đơn đặt hàng có thông tin mã đơn đặt hàng để phân biệt các đơn đặt hàng, ngày đặt hàng; một nhà cung cấp có thể được đặt hàng nhiều lần
- Một đơn hàng có thể đặt nhiều đồng hồ khác nhau, một đồng hồ có thể được đặt hàng nhiều lần Một đồng hồ trong đơn đặt hàng phải chỉ rõ số lượng đặt, và đơn giá Ta phải ghi nhận nhân viên nào lập đơn đặt hàng cho nhà cung cấp Một đơn đặt hàng chỉ được lập bởi một nhân viên và một nhân viên lập được nhiều đơn đặt hàng
- Nhân viên chỉ nhập hàng trên đơn đặt hàng đã lập Phiếu nhập có thông tin mã phiếu nhập , ngày nhập; Một đơn đặt hàng chỉ có một phiếu nhập, nếu đơn hàng nhập còn thiếu thì xem như bỏ qua các đồng hồ nhập còn thiếu, muốn nhập lại thì ta sẽ lập đơn đặt hàng mới
- Một phiếu nhập có thể có nhiều đồng hồ khác nhau và một đồng hồ có thể được nhập
về nhiều lần với số lượng và giá khác nhau
- Khách hàng có thể đặt hàng online nhiều lần với nhiều phiếu đặt khác nhau; phiếu đặt
có thông tin: ngày đặt, họ tên người nhận, địa chỉ người nhận, số điện thoại người nhận, ngày giờ giao hàng Một phiếu đặt của khách hàng tại 1 thời điểm chỉ thuộc 1 trong các trạng thái sau: chờ duyệt, đã phân công nhân viên giao hàng, hoàn tất, đã hủy) và một phiếu đặt chỉ thuộc một khách hàng
Trang 5- Một phiếu đặt của khách hàng có thể có nhiều đồng hồ khác nhau và một đồng hồ có thể được đặt nhiều lần trên nhiều phiếu đặt Phiếu đặt sẽ được duyệt bởi một nhân viên
- Khách hàng có thông tin: id, số CMND, họ, tên, giới tính, ngày sinh, địa chỉ, số điện thoại, email, mã số thuế
- Đồng hồ có thể thay đổi giá theo thời gian, ta phải ghi nhận nhân viên thiết lập giá mới cho đồng hồ
- Khi phân công nhân viên giao hàng, nhân viên duyệt đơn hàng sẽ in luôn hóa đơn Một phiếu đặt sẽ có một hóa đơn duy nhất tương ứng, thông tin hóa đơn gồm: số hóa đơn, ngày in hóa đơn, tổng tiền và mã số thuế
- Khách hàng có thể trả hàng với điều kiện là phải có hóa đơn và được trả nhiều lần Nhân viên sẽ lập phiếu trả ghi nhận các mặt hàng trả, số lượng trả Đồng hồ chỉ được trả trong vòng 1 tuần sau khi mua
- Các đồng hồ khi bán sẽ được bảo hành với thời gian (số tháng) tùy đồng hồ Mỗi đồng
hồ sẽ có 1 phiếu bảo hành riêng gồm số phiếu bảo hành, ngày bắt đầu, ngày kết thúc Khi bảo hành phải ghi rõ trạng thái đồng hồ trước và sau khi bảo hành và nhân viên nhận, nhân viên giao trả
- Trong năm, công ty sẽ có các đợt khuyến mãi (KM) giảm giá mặt hàng Mỗi đợt khuyến mãi có thông tin: mã đợt KM để phân biệt các đợt KM, lý do KM, ngày bắt đầu, ngày kết thúc Trong 1 đợt KM, mỗi đồng hồ có % giảm giá riêng Một đợt khuyến mãi được tạo bởi 1 nhân viên và 1 nhân viên có thể tạo nhiều đợt khuyến mãi khác nhau
- Tất cả các phiếu đã lập đều phải ghi nhận nhân viên lập các phiếu đó
3 Phân tích, thiết kế CSDL:
a/ Xác đinh các thực thể
- DONG_HO ( MADH , TEN_DH, GIA , SO_LUONG , MO_TA
,TRANG_THAI ,HINH_ANH )
- LOAI (MALOAI, TEN_LOAI )
- HANG ( MAHANG , TEN_HANG)
- NHA_CUNG_CAP ( MANCC, TEN_NCC , DIA_CHI , EMAIL , SĐT)
Trang 6- NHAN_VIEN (MANV, HO, TEN , GIOI_TINH , NGAY_SINH , DIA_CHI ,SĐT,EMAIL)
- DON_DAT_HANG MADDH( , NGAY_DAT)
- PHIEU_NHAP MAPN( , NGAY_NHAP)
- KHACH_HANG IDKH( , CMND, HO ,TEN ,GIOI_TINH ,NGAY_SINH , DIA_CHI , SĐT ,EMAIL, MA_SO_THUE)
- PHIEU_DAT MAPD( , NGAY_DAT , HO_TEN_NGUOI_NHAN , SĐT ,
NGAY_GIAO)
- HOA_DON SOHD( , NGAY_IN , TONG_TIEN , MA_SO_THUE)
- PHIEU_TRA_HANG (MAPT , NGAY_TRA)
- PHIEU_BAO_HANH MAPBH( , NGAY_BAT_DAU , NGAY_KET_THUC)
- KHUYEN_MAI MAKM( , LY_DO , NGAY_BAT_DAU , NGAY_KET_THUC) b/ Mô hình ERD:
Hình 1.1: Mô hình ERD c/ Mô hình dữ liệu quan hệ từ ERD (đạt dạng chuẩn 3):
(Chú thích: MADH Khóa chính; MALOAI Khóa ngoại ; TEN_DH Khóa duy nhất)
1 DONG_HO ( MADH , TEN_DH, GIA , SO_LUONG_TON , MO_TA
,TRANG_THAI ,HINH_ANH , MALOAI , MAHANG )
2 LOAI (MALOAI, TEN_LOAI )
3 HANG ( MAHANG , TEN_HANG)
4 NHA_CUNG_CAP MANCC ( , TEN_NCC , DIA_CHI , EMAIL , SĐT)
Trang 75 NHAN_VIEN (MANV, HO, TEN , GIOI_TINH , NGAY_SINH , DIA_CHI ,SĐT,EMAIL)
6 DON_DAT_HANG MADDH( , NGAY_DAT , MANV , MANCC )
7 PHIEU_NHAP MAPN( , NGAY_NHAP , MADDH , MANV)
8 KHACH_HANG (IDKH , CMND, HO ,TEN ,GIOI_TINH ,NGAY_SINH , DIA_CHI , SĐT ,EMAIL, MA_SO_THUE)
9 PHIEU_DAT (MAPD , NGAY_DAT , HO_TEN_NGUOI_NHAN , SĐT ,
NGAY_GIAO , TRANG_THAI , IDKH , MANV_GIAO , MANV_DUYET)
10.HOA_DON SOHD , NGAY_IN , TONG_TIEN , MA_SO_THUE , ( MAPD ,
MANV )
11 PHIEU_TRA_HANG (MAPTH , NGAY_TRA ,SOHD , MANV)
12 PHIEU_BAO_HANH (MAPBH , NGAY_BAT_DAU , NGAY_KET_THUC ,
MADH)
13.KHUYEN_MAI MAKM( , LY_DO , NGAY_BAT_DAU , NGAY_KET_THUC ,
MANV)
14 CT_PHIEU_DAT( ID_PD , MAPD, MADH, SO_LUONG , DON_GIA )
15 CT_PHIEU_TRA( MAPT , ID_PD , SO_LUONG )
16 CT_KHUYEN_MAI( MAKM , MADH , KM_GIAM_GIA )
17 CT_PBH_NHAN( ID_NHAN_PBH , MAPBH , MANV , NGAY_NHAN , TT_NHAN )
18 CT_PBH_TRA( ID_NHAN_PBH , NGAY_TRA , MANV, TT_TRA )
19 CT_PHIEU_NHAP( MADH,MAPN , SO_LUONG , DON_GIA )
20 CT_DON_DAT_HANG( MADDH,MADH , SO_LUONG , DON_GIA )
21 CT_DONG_HO( MANV,MADH,NGAY_AP_DUNG, GIA )
22 CUNG_CAP( MADH,MANCC)
d/ Mô hình Diagram
Trang 8Hình 1.2: Mô hình Diagram e/ Ràng buộc toàn vẹn:
- Ràng bu c toàn v n liên b : ộ ẹ ộ
R1: “Mỗỗi đỗồng hỗồ có m t mã riêng và khỗng trùng v i đỗồng hỗồ khác”ộ ớ
dh1,dh2 DONGHO:
dh1 <> dh2 -> dh1.MADH <> dh1.MADH
Cuỗối
R2: “Mỗỗi lo i đỗồng hỗồ có m t mã riêng và khỗng trùng v i lo i đỗồng hỗồ khác”ạ ộ ớ ạ
ldh1,ldh2 LOAI:
Trang 9ldh1 <> ldh2 -> ldh1.MADH <> ldh1.MADH
Cuỗối
R3: “Mỗỗi hãng đỗồng hỗồ có m t mã riêng và khỗng trùng v i hãng đỗồng hỗồộ ớ khác”
hdh1,hdh2 HANG:
hdh1 <> hdh2 -> hdh1.MAHANG <> hdh1.MAHANG
Cuỗối
R4: “Mỗỗi nhà cung cấốp có m t mã riêng và khỗng trùng v i nhà cung cấốp khác”ộ ớ
ncc1,ncc2 NHACUNGCAP:
ncc1 <> ncc2 -> ncc1.MANCC <> ncc2.MANCC
Cuỗối
R5: “Mỗỗi Nhấn viên có m t mã riêng và khỗng trùng v i lo i nhấn viên khác”ộ ớ ạ
nv1,nv2 NHANVIEN:
nv1 <> nv2 -> nv1.MANV <> nv2.MANV
Cuỗối
Trang 10R5 Thêm Xóa S a(MANV)ử
R6: “Mỗỗi đ n đ t hàng có m t mã riêng và khỗng trùng v i đ n đ t hàngơ ặ ộ ớ ơ ặ khác”
ddh1,ddh2 DONDATHANG:
ddh1 <> ddh2 -> ddh1.MADDH <> ddh2.MADDH
Cuỗối
R7: “Mỗỗi Phiêốu đ t có m t mã riêng, khỗng trùng v i phiêốu đ t khác”ặ ộ ớ ặ pd1,pd2 PHIEUDAT:
pd1 = pd2 -> pd1.MAPD =pd2.MAPD
Cuỗối
R8: “Mỗỗi Phiêốu nh p có m t mã riêng, khỗng trùng v i phiêốu nh p khác”ậ ộ ớ ậ pn1,pn2 PHIEUNHAP:
pn1 = pn2 -> pn1.MAPN =pn2.MAPN
Cuỗối
Trang 11R9: “Mỗỗi khách hàng có m t ID riêng, khỗng trùng v i ID khách hàng khác”ộ ớ
“Mỗỗi khách hàng có m t CMND riêng, khỗng trùng v i CMND khách hàngộ ớ khác”
“Mỗỗi khách hàng có m t mã sỗố thuêố riêng, khỗng trùng v i mã sỗố thuêố kháchộ ớ hàng khác”
kh1,kh2 KHACHHANG:
kh1 = kh2 -> kh1.IDKH =pn2.IDKH
Cuỗối
kh1,kh2 KHACHHANG:
kh1 = kh2 -> kh1.CMND =pn2.CMND
Cuỗối
kh1,kh2 KHACHHANG:
kh1 = kh2 -> kh1.MA_SO_THUE =pn2.MA_SO_THUE
Cuỗối
R10: “Mỗỗi hóa đ n có m t mã riêng, khỗng trùng v i hóa đ n khác”ơ ộ ớ ơ
“Mỗỗi hóa đ n có m t mã sỗố thuêố riêng, khỗng trùng v i hóa đ n ơ ộ ớ ơ
khác”
Trang 12hd1,hd2 HOADON:
hd1 = hd2 -> hd1.MAHD =hd2.MAHD
Cuỗối
hd1,hd2 HOADON:
hd1 = hd2 -> hd1 MA_SO_THUE =hd2 MA_SO_THUE
Cuỗối
R11: “Mỗỗi phiêốu tr có m t mã riêng, khỗng trùng v i phiêốu tr khác”ả ộ ớ ả pt1,pt2 PHIEUTRA:
pt1 = pt2 -> pt1.MAPT =pt2.MAPT
Cuỗối
R12: “Mỗỗi phiêốu b o hành có m t mã riêng, khỗng trùng v i phiêốu b o hànhả ộ ớ ả khác”
pbh1,pbh2 PHIEUBAOHANH:
pbh1 = pbh2 -> pbh1.MAPBH =pbh2.MAPBH
Cuỗối
Trang 13R12 Thêm Xóa S a(MABH)ử
R13: “Mỗỗi đ t khuyêốn mãi có m t mã riêng, khỗng trùng v i đ tợ ộ ớ ợ
khuyêốn mãi khác”
dkm1,dkm2 KHUYENMAI:
dkm1 = dkm2 -> dkm1.MAKM =pbh2.MAKM
Cuỗối
- Ràng bu c toàn v n vêề miêền giá tr : ộ ẹ ị
R14: “Trong l c đỗồ quan h NHANVIEN,có NĂM hi n t i – YEAR(NGAYSINH) >ượ ệ ệ ạ 17”
nv NHANVIEN:
YEAR(Getdate())- YEAR(nv.NGAYSINH) > 17
cuỗối
R15: “Trong l c đỗồ quan h KHACHHANG có NGAYSINH < ngày hi n t i”ượ ệ ệ ạ
kh KHACHHANG:
kh.NGAYSINH < ngày hi n t iệ ạ
Trang 14Cuỗối
R16: “Trong l c đỗồ quan h DONDATHANG có NGAYDAT < ngày hi n t i”ượ ệ ệ ạ ddh DONDATHANG:
ddh.NGAYDAT < ngày hi n t iệ ạ
Cuỗối
R17: “ Trong l c đỗồ quan h CTPHIEUNHAP có giá > 0”ượ ệ
ctpn CTPHIEUNHAP:
ctpn.GIA > 0
Cuỗối
R18: “Trong l c đỗồ quan h CTPHIEUTRA có sỗố lượ ệ ượng tr > 0”ả
ctpn CTPHIEUTRA:
ctpt.SLT > 0
Cuỗối
Trang 15R19: “Trong l c đỗồ quan h DONGHO có giá đỗồng hỗồ >= 0 ”ượ ệ
dh DONGHO:
dh.GIA >= 0
Cuỗối
R20: “Trong l c đỗồ quan h PHIEUNHAP có NGAYNHAP < ngày hi n t i”ượ ệ ệ ạ
pn PHIEUNHAP:
pn.NGAYNHAP < ngày hi n t iệ ạ
Cuỗối
R21: “Trong l c đỗồ quan h PHIEUDAT có NGAYDAT < ngày hi n t i”ượ ệ ệ ạ
pd PHIEUDAT:
pd.NGAYDAT < ngày hi n t iệ ạ
Cuỗối
- Ràng bu c toàn v n liên thu c tnh: ộ ẹ ộ
R22: “Trong l c đỗồ quan h DOTKHUYENMAI có ngày bắốt đấồu < ngày kêốt thúc”ượ ệ
Trang 16dkm DOTKHUYENMAI:
dkm.NGAYBD < dkm.NGAYKT
cuỗối
NGAYKT)
R23: “Trong l c đỗồ quan h PHIEUBAOHANH có ngày bắốt đấồu < ngày kêốt thúc”ượ ệ pbh PHIEUBH:
pbh.NGAYBD < pbh.NGAYKT
cuỗối
NGAYKT)
R24: “Trong l c đỗồ quan h PHIEUDAT có ngày bắốt đấồu < ngày kêốt thúc”ượ ệ
pd PHIEDAT:
pd.NGAYBD < pd.NGAYKT
cuỗối
NGAYKT)
R25: “Trong l c đỗồ quan h DONGHO, mỗỗi đỗồng hỗồ ch có 1 mã lo i, 1 mã hãng”ượ ệ ỉ ạ
Trang 17∀ dh ∈ DONGHO, ml LOAI, mh HANG / dh.MaLoai = ml.MaLoai AND ∃ ∈ ∃ ∈ dh.MaHang = mh.MaHang
Cuỗối ∀
(MaLoai,MaHang)
R26: “Trong l c đỗồ quan h DONDATHANG, mỗỗi đ n do 1 nhấn viên l p”ượ ệ ơ ậ
∀ ddh ∈ DONDH , ∃ nv NhanVien / ddh.MaNV = nv.MaNV∈
Cuỗối ∀
R27: “Trong l c đỗồ quan h DONDATHANG, mỗỗi đ n ch g i đêốn 1 nhà cung cấốp”ượ ệ ơ ỉ ử
∀ ddh ∈ DONDATHANG, ncc NHACC ∃ ∈
/ ddh.MANCC = ncc.MANCC
Cuỗối ∀
R28: “Trong l c đỗồ quan h PHIEUNHAP, mỗỗi phiêốu nh p ch do 1 nhấn viên l p”ượ ệ ậ ỉ ậ
∀ pn ∈ PHIEUNHAP, nv NHANVIEN / pn.MANV = nv.MANV∃ ∈
Cuỗối ∀
Trang 18PHIEUNHAP + - +(MANV)
R29: “Trong l c đỗồ quan h PHIEUNHAP, mỗỗi phiêốu nh p có m t mã đ n hàng”ượ ệ ậ ộ ơ
∀ pn ∈ PHIEUNHAP, mdh DONDATHANG ∃ ∈
Cuỗối ∀
R30: “Trong l c đỗồ quan h PHIEUDAT, mỗỗi phiêốu đ t có m t mã đ n hàng”ượ ệ ặ ộ ơ
∀ pd ∈ PHIEUDAT, mdh DONDATHANG ∃ ∈
Cuỗối ∀
R31: “Trong l c đỗồ quan h PHIEUBAOHANH, mỗỗi phiêốu b o hành có m t mãượ ệ ả ộ
đ n hàng”ơ
∀ pbh ∈ PHIEUBAOHANH, mdh DONDATHANG ∃ ∈
Cuỗối ∀
Trang 19R31 Thêm Xóa S aử
R32: “Trong l c đỗồ quan h PHIEUTRA, mỗỗi phiêốu tr do 1 nhấn viên l p”ượ ệ ả ậ
∀ pt ∈ PHIEUTRA , nv NhanVien / pt.MaNV = nv.MaNV∃ ∈
Cuỗối ∀
R33: “Trong l c đỗồ quan h HOADON, mỗỗi hóa đ n do 1 nhấn viên l p”ượ ệ ơ ậ
∀ hd ∈ HOADON , ∃ nv NhanVien / hd.MaNV = nv.MaNV∈
Cuỗối ∀
R34: “Trong l c đỗồ quan h DOTKHUYENMAI, mỗỗi đ t khuyêốn mãi do 1 nhấnượ ệ ợ viên l p”ậ
∀ dkm ∈ DOTKHUYENMAI, ∃nv∈NhanVien/dkm.MANV = nv.MANV
Cuỗối ∀
f/ Ràng buộc toàn vẹn:
a/ Khi mở đợt khuyến mãi mới, ta sẽ tự động thiết lập mức khuyến mãi cho tất các đồng hồ):
Trang 20CREATE PROC SP_TU_DONG_KHUYEN_MAI @MAKM ( INT @PT_KM FLOAT )
AS
BEGIN
INSERT INTO CT_KHUYENMAI MAKM MADH KM_GIAMGIA ( , , )
SELECT MAKM @MAKM = , MADH KM_GIAMGIA , = @PT_KM
FROM DONG_HO AS DH
WHERE ( DH MADH @MAKM + ) NOT IN ( SELECT MADH MAKM + FROM CT_KHUYENMAI )
END
b/ Liệt kê các đơn đặt hàng chưa nhập hàng trong khoảng thời gian (@tungay,
@denngay) Các đơn hàng in theo thứ tự thời gian đặt tăng dần Kết xuất:
Mã số ĐĐH Ngày đặt Họ tên NV lập phiếu Nhà cung cấp Tổng trị giá
CREATE PROC SP_LK_DON_HANG_CHUA_NHAP @TUNGAY ( CHAR ( 10 ), @DENNGAY CHAR ( 10 ) )
AS
BEGIN
SET DATEFORMAT DMY
SELECT
DDH MADDH DDH , NGAYDAT ,
HOTEN NV HO = + ' ' NV TEN NCC TENNCC , ,
TONG = SUM( CTDDH SOLUONG CTDDH * DONGIA )
FROM
( SELECT MANCC , TENNCC FROM NHACUNGCAP NCC ) ,
( SELECT MADDH , SOLUONG DONGIA , FROM CT_DONDATHANG ) CTDDH ,
( SELECT MANV , HO TEN , FROM NHANVIEN ) NV ,
( SELECT MADDH , NGAYDAT MANV MANCC , ,
FROM DONDATHANG DDH
WHERE NGAYDAT BETWEEN @TUNGAY AND @DENNGAY
AND DDH MADDH NOT IN ( SELECT PN MADDH FROM PHIEUNHAP PN DDH ))
WHERE DDH MANV NV = MANV AND DDH MANCC = NCC MANCC AND DDH MADDH CTDDH MADDH =
GROUP BY DDH MADDH DDH , NGAYDAT NV , HO + ' ' + NV TEN , NCC TENNCC
ORDER BY DDH NGAYDAT ASC
END