MỞ ĐẦU 2 sản phẩm có trên hệ thống, quản lý trạng thái các đơn hàng, quản lý thông tin cá nhân, thanh toán, tìm kiếm và lọc sản phẩm nâng cao,… Ngoài ra, website còn hỗ trợ quản trị viên
Trang 1THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Tp Hồ Chí Minh, tháng 7 năm 2024
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN
XÂY DỰNG WEBSITE BÁN LAPTOP VÀ ĐIỆN THOẠI
GVHD: PGS.TS HOÀNG VĂN DŨNG SVTH: TRẦN MẠNH CƯỜNG
VY MINH KHÁNH HOA
S K L 0 1 3 9 1 1
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
KHÓA LUẬN TỐT NGHIỆP
XÂY DỰNG WEBSITE BÁN LAPTOP VÀ ĐIỆN THOẠI
GIẢNG VIÊN HƯỚNG DẪN: PGS.TS HOÀNG VĂN DŨNG
SINH VIÊN THỰC HIỆN: TRẦN MẠNH CƯỜNG - 19110159
VY MINH KHÁNH HOA - 19110205
TP HỒ CHÍ MINH, THÁNG 7 NĂM 2024
Trang 3KHOA CNTT
*******
Độc lập – Tự do – Hạnh phúc
*******
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Họ và tên của Sinh viên 1: Trần Mạnh Cường MSSV: 19110159
Họ và tên của Sinh viên 2: Vy Minh Khánh Hoa MSSV: 19110205
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng website bán laptop và điện thoại
Họ và tên giảng viên hướng dẫn: PGS TS Hoàng Văn Dũng
Nhận xét:
1 Về nội dung đề tài và khối lượng công việc:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
Tp Hồ Chí Minh, ngày tháng năm
Giảng viên hướng dẫn
(Ký & ghi rõ họ tên)
Hoàng Văn Dũng
Trang 4ĐH SƯ PHẠM KỸ THUẬT TP HCM
KHOA CNTT
*******
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
*******
PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
Họ và tên của Sinh viên 1: Trần Mạnh Cường MSSV: 19110159
Họ và tên của Sinh viên 2: Vy Minh Khánh Hoa MSSV: 19110205
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng website bán laptop và điện thoại
Họ và tên giảng viên phản biện: TS Lê Văn Vinh
Nhận xét:
1 Về nội dung đề tài và khối lượng công việc:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
Tp Hồ Chí Minh, ngày tháng năm
Giảng viên phản biện
(Ký & ghi rõ họ tên)
Lê Văn Vinh
Trang 5LỜI CẢM ƠN
Lời đầu tiên, chúng em xin được gửi lời cảm ơn chân thành đến Khoa Công nghệ Thông tin – Trường Đại học Sư phạm Kỹ Thuật TP Hồ Chí Minh đã tạo điều kiện cho chúng em được học tập và phát triển kiến thức để nhóm em có thể hoàn thành đề tài này
Đặc biệt, nhóm em bày tỏ lòng biết ơn sâu sắc đến thầy Hoàng Văn Dũng Thầy
đã tận tình chỉ bảo, hướng dẫn và đưa ra những góp ý quý giá cho nhóm chúng em trong suốt quá trình thực hiện đề tài
Nhờ những nền tảng kiến thức chuyên ngành vững chắc thông qua việc học tập
ở trường cùng với những kinh nghiệm học hỏi được qua việc thực tập ở các công ty đã giúp chúng em hoàn thiện được đề tài và chúng em tin rằng đây sẽ là một kinh nghiệm quý báu, một hành trang vô cùng lớn để chúng em có thể phát triển bản thân hơn
Do thời gian và sự hiểu biết của nhóm có giới hạn nên trong quá trình quá thực hiện đề tài còn có những sai sót, hy vọng Quý Thầy Cô có thể góp ý để nhóm em có thể rút kinh nghiệm để có thể hoàn thiện sản phẩm tốt hơn nữa cũng như học hỏi và phát triển bản thân hơn trong tương lai
Chúng em xin chân thành cảm ơn!
Nhóm thực hiện
Trần Mạnh Cường – 19110159
Vy Minh Khánh Hoa – 19110205
Trang 6KHÓA LUẬN TỐT NGHIỆP
Trường Đại học Sư phạm Kỹ thuật TP.HCM
Khoa Công nghệ Thông tin
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Họ và tên SV thực hiện 1: Trần Mạnh Cường MSSV: 19110159
Họ và tên SV thực hiện 2: Vy Minh Khánh Hoa MSSV: 19110205
Thời gian thực hiện: Từ 04/03/2024 đến 15/06/2024
Ngành: Công nghệ Thông tin
Tên đề tài: Xây dựng website bán laptop và điện thoại
Họ và tên giảng viên hướng dẫn: PGS.TS Hoàng Văn Dũng
Nhiệm vụ của khóa luận:
- Sử dụng PostgreSQL để lưu trữ dữ liệu hệ thống
- Sử dụng ReactJS, Redux toolkit và Material UI để thiết kế và xây dựng giao diện người dùng
- Sử dụng Algolia để xử lý và xây dựng chức năng tìm kiếm, lọc nâng cao
- Xây dựng hệ thống theo kiến trúc Clean Architecture
Đề cương viết khóa luận:
MỤC LỤC
1 MỞ ĐẦU
1.1 Tính cấp thiết của đề tài
1.2 Đối tượng nghiên cứu
1.3 Phạm vi nghiên cứu
1.4 Mục tiêu đề tài
Trang 71.5 Ý nghĩa khoa học và thực tiễn
2 NỘI DUNG
1 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Các công nghệ phía Back-end
1.2 Các công nghệ phía Front-end
2.4 Yêu cầu chức năng
2.5 Yêu cầu phi chức năng
2.6 Mô hình hóa yêu cầu
3 CHƯƠNG 3: THIẾT KẾ PHẦN MỀM
3.1 Thiết kế cơ sở dữ liệu
3.2 Thiết kế chức năng
3.3 Thiết kế giao diện
4 CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ
- Thiết kế lược đồ Use Case
- Thiết kế lược đồ tuần tự
- Thiết kế lược đồ lớp
Trang 8KHÓA LUẬN TỐT NGHIỆP
3 25/03/2024 – 07/04/2024
- Thiết kế giao diện cơ bản cho ứng dụng
- Thiết kế các API cần thiết cho hệ thống
- Dùng Postman để kiểm tra các API
4 80/04/2024 – 21/04/2024
- Phân quyền người dùng
- Xây dựng trang quản lý cho admin
7 20/05/2024 – 02/06/2024 - Kiểm thử ứng dụng và chỉnh sửa các lỗi
gặp phải
8 03/06/2024 – 15/06/2024 - Hoàn thiện báo cáo
Ngày tháng năm 2024
Người viết đề cương
Ý kiến của giảng viên hướng dẫn
(ký và ghi rõ họ tên)
Trang 9MỤC LỤC
MỞ ĐẦU 1
1 Tính cấp thiết của đề tài 1
2 Đối tượng nghiên cứu 1
3 Phạm vi nghiên cứu 1
4 Mục tiêu đề tài 2
4.1 Phía khách hàng vãng lai 2
4.2 Phía người dùng 2
4.3 Phía quản trị viên 2
5 Ý nghĩa khoa học và thực tiễn 3
NỘI DUNG 4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
1.1 Các công nghệ phía Back-end 4
1.2 Các công nghệ phía Front-end 7
1.3 Clean Architecture 9
CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU 11
2.1 Khảo sát hiện trạng 11
2.2 Kiến trúc của hệ thống 14
2.3 Các tác nhân của hệ thống 14
2.4 Yêu cầu chức năng 15
2.5 Yêu cầu phi chức năng 17
2.6 Mô hình hóa yêu cầu 18
CHƯƠNG 3: THIẾT KẾ PHẦN MỀM 20
3.1 Thiết kế cơ sở dữ liệu 20
3.2 Thiết kế chức năng 29
3.3 Thiết kế giao diện 55
Trang 10KHÓA LUẬN TỐT NGHIỆP
CHƯƠNG 4: CÀI ĐẶT VÀ KIỂM THỬ 72
4.1 Cài đặt 72
4.2 Kiểm thử 77
KẾT LUẬN 85
1 Kết quả đạt được 85
1.1 Về mặt lý thuyết 85
1.2 Về mặt ứng dụng 85
2 Ưu điểm 85
3 Nhược điểm 86
4 Hướng phát triển 86
TÀI LIỆU THAM KHẢO 87
PHỤ LỤC 88
Trang 11DANH MỤC CÁC TỪ VIẾT TẮT
1 CSDL Cơ sở dữ liệu
2 API Application Programming Interface
3 JWT Json Web Token
4 SDK Software Development Kit
5 UI User Interface
Trang 12KHÓA LUẬN TỐT NGHIỆP
DANH MỤC HÌNH ẢNH
Hình 1: Clean Architecture 9
Hình 2: Tìm kiếm FPT Shop trên công cụ tìm kiếm Google 11
Hình 3: Trang chủ FPT Shop 11
Hình 4: Trang chi tiết sản phẩm của FPT Shop 12
Hình 5: Trang chủ Phong Vũ 13
Hình 6: Kiến trúc của hệ thống 14
Hình 7: Lược đồ Use Case phía Khách vãng lai 18
Hình 8: Lược đồ Use Case phía Khách hàng 18
Hình 9: Lược đồ Use Case phía Quản trị viên 19
Hình 10: Lược đồ lớp 20
Hình 11: Lược đồ tuần tự chức năng Đăng nhập 30
Hình 12: Lược đồ tuần tự Login API 30
Hình 13: Lược đồ tuần tự chức năng Đăng ký 32
Hình 14: Lược đồ tuần tự Register API 32
Hình 15: Lược đồ tuần tự chức năng Tìm kiếm sản phẩm 33
Hình 16: Lược đồ tuần tự chức năng Lọc sản phẩm 34
Hình 17: Lược đồ tuần tự chức năng Xem chi tiết sản phẩm 35
Hình 18: Lược đồ tuần tự chức năng Thêm vào giỏ hàng 37
Hình 19: Lược đồ tuần tự AddToCart API 37
Hình 20: Lược đồ tuần tự chức năng Đặt hàng 39
Hình 21: Lược đồ tuần tự CreateOrder API 39
Hình 22: Lược đồ tuần tự CheckoutWithStripe API 40
Hình 23: Lược đồ tuần tự chức năng Hủy đơn hàng 41
Hình 24: Lược đồ tuần tự CancelOrder API 41
Hình 25: Lược đồ tuần tự chức năng Xác nhận đã nhận hàng 42
Hình 26: Lược đồ tuần tự ConfirmReceivedOrder API 43
Hình 27: Lược đồ tuần tự chức năng Thêm sản phẩm 44
Hình 28: Lược đồ tuần tự CreateProduct API 44
Hình 29: Lược đồ tuần tự chức năng Đánh giá sản phẩm 46
Hình 30: Lược đồ tuần tự ReviewProduct API 46
Hình 31: Lược đồ tuần tự chức năng Thêm thuộc tính sản phẩm 48
Trang 13Hình 32: Lược đồ tuần tự AddProductAttribute API 48
Hình 33: Lược đồ tuần tự chức năng Thêm giá trị thuộc tính sản phẩm 50
Hình 34: Lược đồ tuần tự AddProductAttributeValue API 50
Hình 35: Lược đồ tuần tự chức năng Thêm sản phẩm cụ thể 52
Hình 36: Lược đồ tuần tự CreateProductVariant API 52
Hình 37: Lược đồ tuần tự chức năng Xác nhận đơn hàng 54
Hình 38: Lược đồ tuần tự ConfirmOrder API 54
Hình 39: Giao diện Đăng ký bước 1 55
Hình 40: Giao diện Đăng ký bước 2 56
Hình 41: Giao diện Đăng nhập 57
Hình 42: Giao diện Trang chủ 58
Hình 43: Giao diện Chi tiết sản phẩm 59
Hình 44: Giao diện Chi tiết sản phẩm (tiếp theo) 59
Hình 45: Giao diện Giỏ hàng 60
Hình 46: Giao diện Danh sách địa chỉ giao hàng 61
Hình 47: Giao diện Phương thức thanh toán 62
Hình 48: Giao diện Quản lý đơn hàng (phía người dùng) 63
Hình 49: Giao diện Tìm kiếm 63
Hình 50: Giao diện Kết quả tìm kiếm 64
Hình 51: Giao diện Điều hướng của trang quản trị 65
Hình 52: Giao diện Quản lý sản phẩm 66
Hình 53: Giao diện Thông tin sản phẩm 67
Hình 54: Giao diện Thuộc tính sản phẩm 68
Hình 55: Giao diện Biến thể sản phẩm 69
Hình 56: Giao diện Khuyến mãi của sản phẩm 69
Hình 57: Giao diện Hình ảnh sản phẩm 70
Hình 58: Giao diện Quản lý đơn hàng (phía quản trị viên) 70
Hình 59: Cấu trúc dự án của Back-end sau khi khởi tạo 73
Hình 60: Swagger của Back-end 74
Hình 61: Cấu trúc dự án của Front-end phía người dùng 75
Trang 14KHÓA LUẬN TỐT NGHIỆP
DANH MỤC BẢNG BIỂU
Bảng 1: Danh sách yêu cầu chức năng 15
Bảng 2: Danh sách yêu cầu phi chức năng 17
Bảng 3: Bảng Customer 21
Bảng 4: Bảng Account 21
Bảng 5: Bảng Address 22
Bảng 6: Bảng Category 22
Bảng 7: Bảng Brand 22
Bảng 8: Bảng Product 23
Bảng 9: Bảng Attribute 24
Bảng 10: Bảng AttributeValue 24
Bảng 11: Bảng Variant 24
Bảng 12: Bảng Discount 25
Bảng 13: Bảng Cart 25
Bảng 14: Bảng CartItem 25
Bảng 15: Bảng Order 26
Bảng 16: Bảng OrderItem 27
Bảng 17: Bảng OrderStatusHistoryTracking 27
Bảng 18: Bảng Review 27
Bảng 19: Bảng Notification 28
Bảng 20: Đặc tả Use Case Đăng nhập 29
Bảng 21: Đặc tả Use Case Đăng ký 31
Bảng 22: Đặc tả Use Case Tìm kiếm sản phẩm 33
Bảng 23: Đặc tả Use Case Lọc sản phẩm 34
Bảng 24: Đặc tả Use Case Xem chi tiết sản phẩm 35
Bảng 25: Đặc tả Use Case Thêm vào giỏ hàng 36
Bảng 26: Đặc tả Use Case Đặt hàng 38
Bảng 27: Đặc tả Use Case Hủy đơn hàng 40
Bảng 28: Đặc tả chức năng Xác nhận đã nhận hàng 42
Bảng 29: Đặc tả Use Case Thêm sản phẩm 43
Bảng 30: Đặc tả Use Case Đánh giá sản phẩm 45
Bảng 31: Đặc tả Use Case Thêm thuộc tính sản phẩm 47
Trang 15Bảng 32: Đặc tả Use Case Thêm giá trị thuộc tính sản phẩm 49
Bảng 33: Đặc tả Use Case Tạo sản phẩm cụ thể 51
Bảng 34: Đặc tả Use Case Xác nhận đơn hàng 53
Bảng 35: Giao diện Đăng ký bước 1 55
Bảng 36: Giao diện Đăng ký bước 2 56
Bảng 37: Giao diện Đăng nhập 57
Bảng 38: Giao diện Trang chủ 58
Bảng 39: Giao diện Chi tiết sản phẩm 60
Bảng 40: Giao diện Giỏ hàng 61
Bảng 41: Giao diện Danh sách địa chỉ giao hàng 61
Bảng 42: Giao diện Phương thức thanh toán 62
Bảng 43: Giao diện Quản lý đơn hàng (phía người dùng) 63
Bảng 44: Giao diện Kết quả tìm kiếm 65
Bảng 45: Giao diện Điều hướng của trang quản trị 66
Bảng 46: Giao diện Quản lý sản phẩm 67
Bảng 47: Giao diện Thông tin sản phẩm 68
Bảng 48: Giao diện Thuộc tính và biến thể sản phẩm 69
Bảng 49: Giao diện Khuyến mãi của sản phẩm 70
Bảng 50: Giao diện Hình ảnh sản phẩm 70
Bảng 51: Giao diện Quản lý đơn hàng (phía quản trị viên) 71
Bảng 52: Phạm vị kiểm thử 77
Bảng 53: Vấn đề và rủi ro khi tiến hành kiểm thử 78
Bảng 54: Kết quả kiểm thử chức năng Tìm kiếm sản phẩm 79
Bảng 55: Kết quả kiểm thử chức năng Lọc sản phẩm 79
Bảng 56: Kết quả kiểm thử chức năng Thêm sản phẩm vào giỏ 79
Bảng 57: Kết quả kiểm thử chức năng Chỉnh sửa số lượng sản phẩm trong giỏ 80
Bảng 58: Kết quả kiểm thử chức năng Đặt hàng 80
Bảng 59: Kết quả kiểm thử chức năng Đánh giá sản phẩm 81
Bảng 60: Kết quả kiểm thử chức năng Thêm sản phẩm 81
Bảng 61: Kết quả kiểm thử chức năng Thêm thuộc tính sản phẩm 82
Bảng 62: Kết quả kiểm thử chức năng Thêm giá trị thuộc tính sản phẩm 83
Bảng 63: Kết quả kiểm thử chức năng Thêm hình ảnh sản phẩm 83
Trang 16KHÓA LUẬN TỐT NGHIỆP
Bảng 64: Kết quả kiểm thử chức năng Tạo biến thể sản phẩm 84Bảng 65: Kết quả kiểm thử chức năng Xác nhận đơn hàng 84
Trang 171
MỞ ĐẦU
1 Tính cấp thiết của đề tài
Trong bối cảnh công nghệ thông tin và kỹ thuật ngày càng phát triển, việc chuyển đổi số đang trở nên phổ biến và là ưu tiên hàng đầu trong tất cả các lĩnh vực đặc biệt là lĩnh vực bán hàng trực tuyến
Vì thế, việc chuyển đổi từ bán hàng truyền thống sang bán hàng trực tuyến là điều không thể thiếu và hiện tại nó là xu hướng của thế giới và đem lại lợi ích to lớn cho các cửa hàng bán lẻ So với cách mua sắm truyền thống thì việc sử dụng kênh mua bán trực tuyến cho phép khách hàng có thể mua sắm mọi lúc mọi nơi giúp tiết kiệm thời gian Ngoài ra việc thanh toán và quản lý đơn hàng cho người dùng cũng dễ dàng hơn Nhận thức được thực tiễn ấy và với mong muốn đáp ứng được nhu cầu thị trường
và quan trọng nhất là tiết kiệm được thời gian cũng như đem đến nhiều sự lựa chọn hơn cho người dùng, nhóm chúng em quyết định chọn và phát triển chủ đề cho Khóa luận tốt nghiệp là “XÂY DỰNG WEBSITE BÁN LAPTOP VÀ ĐIỆN THOẠI”
2 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài dựa trên nhu cầu mua bán trực tuyến hiện nay
và các đặc điểm nổi bật từ các sàn thương mại điện tử đã có sẵn Bên cạnh đó là các công nghệ áp dụng để hiện thực hóa đề tài này Cụ thể như sau:
• Tập trung nghiên cứu Restful API, ReactJS, PostgreSQL, ASP NET Core, Algolia Search, Docker, Stripe và việc triển khai hệ thống đến người sử dụng cuối cùng
• Việc xây dựng hệ thống các APIs dựa trên kiến trúc Clean Architecture nhằm hỗ trợ truy xuất và thao tác với dữ liệu một cách chính xác và nhanh chóng nhất
• Về giao diện cho người dùng trải nghiệm nhóm chúng em tiến hành nghiên cứu thư viện ReactJS, Redux và một số thư viện được hỗ trợ cho ReactJS để xây dựng
và xử lý giao diện cho người sử dụng cũng như quản trị viên trang website
• Về phần bảo mật hệ thống, tiến hành nghiên cứu công nghệ JWT, mã hóa mật khẩu và phân quyền người dùng làm nhằm tăng bảo mật cho hệ thống
3 Phạm vi nghiên cứu
Website chủ yếu tập trung đi vào việc xử lý các nghiệp vụ cơ bản của một website bán laptop và điện thoại trực tuyến như: xem danh sách các sản phẩm, thêm sản phẩm vào giỏ hàng cá nhân, tương tác chuyển đổi qua lại giữa các biến thể, đánh giá trên từng
Trang 18MỞ ĐẦU
2
sản phẩm có trên hệ thống, quản lý trạng thái các đơn hàng, quản lý thông tin cá nhân, thanh toán, tìm kiếm và lọc sản phẩm nâng cao,… Ngoài ra, website còn hỗ trợ quản trị viên thêm thuộc tính cho sản phẩm một cách linh hoạt ngay từ bước tạo sản phẩm và hỗ trợ đề xuất các sản phẩm liên quan cho người dùng
4 Mục tiêu đề tài
Xây dựng thành công một website bán laptop và điện thoại cho các đối tượng sau:
4.1 Phía khách hàng vãng lai
Có thể thực hiện các chức năng sau:
• Đăng ký để trở thành thành viên của hệ thống
• Xem danh sách và chi tiết các sản phẩm hiện có
• Tìm kiếm và lọc sản phẩm nâng cao
• Thêm, điều chỉnh số lượng, xóa sản phẩm trong giỏ hàng
• Nhận thông báo về trạng thái đơn hàng
4.3 Phía quản trị viên
Có thể thực hiện các chức năng sau:
Trang 193
• Quản lý biểu ngữ
• Xem thống kê về doanh thu, số lượng đơn hàng và người dùng sử dụng hệ thống
5 Ý nghĩa khoa học và thực tiễn
Sau khi hoàn thiện đề tài, nhóm chúng em đã rèn luyện, tiếp thu được nhiều kỹ năng và kiến thức bổ ích, đặc biệt là về những công nghệ mới đang được sử dụng hiện nay Đồng thời, nâng cao kỹ năng làm việc nhóm và áp dụng các kiến thức này vào thực tiễn
Khi đề tài nhóm chúng em được áp dụng vào thực tế, việc mua bán trực tuyến các sản phẩm điện tử sẽ thuận tiện và dễ dàng hơn; đem lại các lợi ích to lớn cho các cửa hàng bán lẻ trên toàn thế giới Thay vì phải sắp xếp thời gian đi đến các cửa hàng
để lựa chọn sản phẩm thì người dùng chỉ cần truy cập vào website, giải quyết được các vấn đề về khoảng cách địa lý cũng như thời gian
Trang 20CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
4
NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Các công nghệ phía Back-end
1.1.1 PostgreSQL
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ đối tượng (ORDBMS), hỗ trợ cả dữ liệu quan hệ và dữ liệu phi quan hệ PostgreSQL có mã nguồn mở, được phát triển bởi cộng đồng Nó sử dụng ngôn ngữ SQL và kết hợp với nhiều tính năng giúp lưu trữ và mở rộng các khối lượng dữ liệu phức tạp [1] Những ưu điểm của PostgreSQL:
• Mã nguồn mở và miễn phí: PostgreSQL không yêu cầu chi phí bản quyền và được hỗ trợ phát triển bởi một cộng đồng lớn
• Cung cấp tính năng phong phú: hỗ trợ dữ liệu quan hệ và phi quan hệ, và có thể
sử dụng kết hợp giữa hai dạng dữ liệu này Khả năng tích hợp với các ngôn ngữ lập trình rất tốt như Python, C#, Java, …
• Khả năng mở rộng tốt: PostgreSQL có thể mở rộng cả về chiều ngang và chiều dọc, cung cấp các cơ chế lưu trữ khác nhau và quản lý các khối lượng dữ liệu lớn, phức tạp
• Tính toàn vẹn dữ liệu và tính nhất quán: hỗ trợ giao dịch ACID, các ràng buộc toàn vẹn dữ liệu và khả năng phục hồi sau sự cố
1.1.2 ASP.NET Core
ASP.NET Core là một framework mã nguồn mở dùng để phát triển ứng dụng web, được phát triển bởi Microsoft Đây là một phần của nền tảng NET Core và được thiết kế để xây dựng các ứng dụng web, API và các dịch vụ microservice hiện đại, linh hoạt Nó cung cấp các điểm mạnh sau:
• Mã nguồn mở: được duy trì và phát triển bởi Microsoft và cộng đồng mã nguồn
mở
• Dễ dàng đưa lên dịch vụ điện toán đám mây và dễ dàng mở rộng: ASP.NET Core được tối ưu cho dịch vụ điện toán đám mây bởi tiêu tốn ít bộ nhớ và cung cấp khả năng truy cập lớn [2]
• Đa nền tảng: ASP.NET Core hỗ trợ chạy trên đa nền tảng từ Windows, MacOS đến Linux Khả năng này mang lại nhiều lựa chọn mới để phát triển và phát hành
Trang 21mà ứng dụng thật sự cần thiết ASP.NET Core còn hỗ trợ dependency injection (một nguyên lý phát triển phần mềm, ở đây được đã được ASP.NET Core triển khai), nó giúp giảm thiểu sự phụ thuộc giữa các thành phần trong ứng dụng, thay
vì phụ thuộc vào những triển khai cụ thể thì ứng dụng chỉ phụ thuộc vào các trừu tượng hóa [2]
• Dễ dàng kiểm thử: ứng dụng ASP.NET Core hỗ trợ kiểm thử đơn vị Với dependency injection việc kiểm thử trở nên dễ dàng hơn bao giờ hết khi mà có thể tạo các dữ liệu giả và hành vi giả để phục vụ mục đích kiểm thử Việc kiểm thử chức năng cũng có thể được thực hiện bằng cách gửi các yêu cầu đến TestServer một máy chủ có thể chạy trực tiếp trên máy được cung cấp bởi ASP.NET Core [2]
1.1.3 Entity Framework Core
Entity Framework Core là một framework ORM (Object-Relational Mapping)
mã nguồn mở của Microsoft, được sử dụng để tạo và quản lý liên kết giữa cơ sở dữ liệu
và mã nguồn trong các dự án ASP.NET Core và NET Core Nó cho phép lập trình viên làm việc với cơ sử dữ liệu thông qua các đối tượng trong NET thay vì làm việc trực tiếp với SQL [3] Một số ưu điểm của Entity Framework Core:
• Tích hợp dễ dàng: Entity Framework Core được tích hợp sâu vào các dự án ASP.NET Core và NET Core, giúp cho việc tạo, truy vấn và cập nhật dữ liệu trở nên dễ dàng và nhanh chóng
• Tính linh hoạt: Entity Framework Core hỗ trợ nhiều loại cơ sở dữ liệu khác nhau như SQL Server, MySQL, PostgreSQL, SQLite, v.v Điều này giúp cho việc triển khai ứng dụng trên nhiều nền tảng và cơ sở dữ liệu trở nên dễ dàng hơn
1.1.4 SignalR
SignalR là một thư viện mã nguồn mở của Microsoft được sử dụng để xây dựng các ứng dụng web thời gian thực (real-time) Nó cho phép việc truyền tin nhắn và dữ
Trang 22CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
6
liệu giữa máy chủ và các máy khách (client) diễn ra một cách đồng bộ và liên tục, giúp cho việc cập nhật dữ liệu và hiển thị thông tin mới trên giao diện người dùng ngay khi
nó được tạo ra hoặc thay đổi Một vài ưu điểm của SignalR:
• Thời gian thực: SignalR cung cấp các tính năng để xây dựng các ứng dụng web thời gian thực một cách dễ dàng, bao gồm trò chuyện trực tuyến, cập nhật dữ liệu trực tiếp, và thông báo tức thì
• Dễ sử dụng và tích hợp: SignalR tích hợp một cách tương thích với các dự án ASP.NET Core và ASP.NET Framework, giúp cho việc triển khai và sử dụng trở nên dễ dàng và nhanh chóng
1.1.5 Docker
Docker là một nền tảng cho lập trình viên để phát triển và chạy ứng dụng với container Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng, môi trường này được gọi là container Khi cần deploy lên bất kỳ máy chủ nào chỉ cần chạy container của Docker thì ứng dụng sẽ được khởi chạy ngay lập tức [4]
Một số ưu điểm của Docker:
• Khả năng chuyển đổi: Docker cho phép đóng gói ứng dụng vào một container, giúp cho việc di chuyển ứng dụng giữa các môi trường phát triển, thử nghiệm trở nên dễ dàng hơn
• Tính cô lập: Docker sử dụng container để cô lập ứng dụng và môi trường của
nó khỏi hệ thống máy chủ Điều này đảm bảo rằng các ứng dụng chạy trong các container không ảnh hưởng đến nhau và không ảnh hưởng đến hệ thống máy chủ
• Dễ dàng đưa lên đám mây: ứng dụng chạy trong container, container này dễ dàng được đưa lên các kho lưu trữ container và được các dịch vụ trên đám mây lấy về để chạy
1.1.6 Algolia Search
Algolia là một dịch vụ tìm kiếm được thiết kế để cung cấp trải nghiệm tìm kiếm nhanh chóng và mạnh mẽ cho các ứng dụng web và điện thoại Algolia cung cấp tìm kiếm văn bản, chữ số và các khía cạnh Các kết quả tìm kiếm được Algolia trả về theo thời gian thực ngay từ khi bắt đầu nhập từ khóa tìm kiếm [5]
Trang 237
Các ưu điểm của Algolia:
• Tìm kiếm nhanh chóng: Algolia được xây dựng với việc tối ưu hiệu suất, giúp cho việc tìm kiếm trở nên nhanh chóng và linh hoạt
• Tùy chỉnh linh hoạt: Algolia cung cấp một loạt các tùy chọn tùy chỉnh cho giao diện tìm kiếm, cho phép bạn tinh chỉnh và điều chỉnh việc hiển thị kết quả tìm kiếm theo nhu cầu cụ thể của ứng dụng của bạn giúp tăng trải nghiệm tìm kiếm của người dùng
• Tích hợp dễ dàng: Algolia cung cấp các thư viện và SDK đa nền tảng để tích hợp
1.1.7 Stripe
Stripe là một dịch vụ thanh toán trực tuyến cho các doanh nghiệp Stripe cho phép các doanh nghiệp chấp nhận thanh toán từ khách hàng thông quá Internet, bằng cách sử dụng các phương tiện thanh toán như thẻ tín dụng, thẻ ghi nợ, ví điện tử
Stripe được biết đến với tính bảo mật cao, tích hợp dễ dàng và tính linh hoạt, giúp cho doanh nghiệp có thể xây dựng và quản lý hệ thống thanh toán trực tuyến một cách hiệu quả và tiện lợi
Những ưu điểm của Stripe:
• Dễ sử dụng và tích hợp: Stripe cung cấp các API và SDK sử dụng cho các nhà phát triển, giúp cho việc tích hợp thanh toán vào ứng dụng trở nên đơn giản và nhanh chóng Điều này giúp tiết kiệm thời gian và công sức cho việc phát triển
và triển khai hệ thống thanh toán
• Bảo mật cao: Stripe tuân thủ các tiêu chuẩn bảo mật cao nhất trong ngành, bao gồm mã hóa dữ liệu thông tin thanh toán của khách hàng giúp đảm bảo an toàn thông tin cho khách hàng
1.2 Các công nghệ phía Front-end
1.2.1 ReactJS
ReactJS là một thư viện JavaScript có tính hiệu quả và linh hoạt để xây dựng các thành phần giao diện người dùng (UI) mang tính tái sử dụng ReactJS giúp phân chia các UI phức tạp thành các thành phần nhỏ (được gọi là component) Nó được tạo ra bởi Jordan Walke, một kỹ sư phần mềm tại Facebook
ReactJS sử dụng cơ chế one-way data binding – luồng dữ liệu 1 chiều Dữ liệu được truyền từ cha đến con thông qua props Luồng dữ liệu đơn giản giúp dễ dàng quản
Trang 24CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
8
lý Các component trong ReactJS duy trì và thay đổi theo thời gian dựa trên state (trạng thái của component) và khi state thay đổi, component sẽ tự động được render lại để phản ánh sự thay đổi đó [6]
Với các đặc điểm ở trên, ReactJS dùng để xây dựng các ứng dụng lớn mà dữ liệu của chúng thay đổi liên tục theo thời gian Một số ưu điểm khác của ReactJS
• ReactJS sử dụng mô hình lập trình dựa trên thành phần, cho phép phân chia giao diện người dùng thành các phần độc lập và tái sử dụng được Điều này giúp tăng tính linh hoạt và bảo trì mã nguồn, đồng thời giảm thiểu sự phức tạp và tái sử dụng mã
• React sử dụng Virtual DOM để tối ưu hóa hiệu suất của ứng dụng thay vì cập nhật trực tiếp DOM mỗi khi có sự thay đổi, React sẽ tạo ra một bản sao ảo của DOM, so sánh DOM hiện tại và chỉ cập nhật những phần thay đổi Điều này giúp giảm thiểu thời gian xử lý và render, làm cho ứng dụng chạy mượt mà hơn
• Cú pháp dễ sử dụng: ReactJS sử dụng JSX một cú pháp cho phép viết các component tương tự với cú pháp HTML Từ đó giúp phát triển ứng dụng một cách nhanh chóng [6]
1.2.2 Redux toolkit
Redux là một khuôn mẫu và thư viện dùng để quản lý và cập nhật trạng thái (state) của ứng dụng, sử dụng các sự kiện được gọi là “action” Nó được sử dụng như một kho lưu trữ tập trung cho trạng thái cần được sử dụng trên toàn bộ ứng dụng với các quy tắc đảm bảo trạng thái chỉ có thể được cập nhật theo cách có thể dự đoán được
Redux toolkit là một bộ công cụ được cung cấp bởi Redux nhằm giúp đơn giản hóa việc viết logic cho Redux Bộ công cụ này cung cấp các API và phương pháp tích hợp sẵn giúp giảm thiểu các đoạn mã bị lặp lại nhiều lần và giúp cho Redux dễ sử dụng hơn
Một số ưu điểm của Redux toolkit:
• Giảm thiểu các đoạn mã bị trùng lặp: đây là mục đích chính của Redux toolkit
• Hỗ trợ tốt cho lập trình bất đồng bộ: Redux toolkit cung cấp cách thức giúp xử lý logic bất đồng bộ dễ dàng hơn
• Hiệu suất cao và cung cập cấu trúc rõ ràng
Trang 259
1.2.3 Material UI
Material UI là một thư viện giao diện người dùng (UI) mã nguồn mở được xây dựng trên nền tảng React, được thiết kế dựa trên hướng dẫn thiết kế của Google Material Design Nó cung cấp các thành phần giao diện đồng nhất và thẩm mỹ, giúp cho việc xây dựng các ứng dụng web trở nên dễ dàng và nhanh chóng
Ưu điểm của Material UI:
• Thiết kế thẩm mỹ và linh hoạt: Material UI cung cấp một bộ sưu tập các thành phần giao diện đẹp mắt và linh hoạt, từ nút, hộp thoại, đến thanh điều hướng và biểu đồ Điều này giúp cho việc xây dựng giao diện người dùng trở nên nhanh chóng và dễ dàng, đồng thời đảm bảo tính đồng nhất trong toàn bộ ứng dụng
• Dễ dàng tùy chỉnh: Material UI cung cấp các thành phần có thể tùy chỉnh một cách linh hoạt, từ màu sắc, kiểu chữ, đến kích thước và hình dạng Điều này giúp cho việc điều chỉnh giao diện người dùng để phù hợp với nhu cầu cụ thể của từng ứng dụng trở nên dễ dàng hơn
1.3 Clean Architecture
Clean Architecture là một phương pháp thiết kế phần mềm được đề xuất bởi Robert C Martin Phương pháp này tập trung vào việc phân tách các vấn đề và sự độc lập của nghiệp vụ ra khỏi các phụ thuộc bên ngoài như các framework, cơ sở dữ liệu, và giao diện người dùng
Hình 1: Clean Architecture
Trang 26CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
10
Clean Architecture chia ứng dụng thành các vòng tròn tập trung hoặc các lớp, với vòng tròn bên trong biểu diễn cho nghiệp vụ cốt lõi, và mỗi vòng tròn bên ngoài biểu diễn cho các phụ thuộc và các framework cấp cao Các phụ thuộc chỉ luôn hướng vào phía trong, có nghĩa là vòng tròn bên trong không nên biết về các vòng tròn bên ngoài
• Ưu điểm:
o Dễ bảo trì: với việc tách biệt nghiệp vụ và các chi tiết về kỹ thuật, việc bảo trì và cải thiện mã nguồn trở nên dễ dàng hơn Điều này cũng làm cho việc thay đổi các thành phần cụ thể trở nên ít ảnh hưởng đến toàn bộ hệ thống [7]
o Dễ dàng kiểm thử: Clean Architecture tạo điều kiện thuận lợi cho việc kiểm thử vì nghiệp vụ được tách biệt và độc lập với các thành phần khác trong hệ thống Điều này giúp dễ dàng xây dựng các bộ kiểm thử đơn vị
và kiểm thử tích hợp
o Khả năng mở rộng: cấu trúc rõ ràng của Clean Architecture làm cho việc
mở rộng hệ thống trở nên dễ dàng hơn Clean Architecture giúp thay đổi hoặc thêm mới các thành phần mà không ảnh hưởng đến toàn bộ hệ thống
o Khả năng quá tối ưu: trong một số trường hợp, việc áp dụng Clean Architecture có thể dẫn đến việc thiết kế quá tối ưu hoặc phức tạp hóa không cần thiết, gây ra sự rườm rà trong mã nguồn
Trang 28CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU
o Về nội dung, trang web còn cung cấp đầy đủ thông tin chi tiết về sản phẩm
và các sản phẩm được phân chia theo danh mục, theo loại giúp khách hàng
dễ dàng tiếp cận
Hình 4: Trang chi tiết sản phẩm của FPT Shop
• Ưu điểm:
o Giao diện đơn giản, dễ tiếp cận
o Cung cấp nhiều sản phẩm với nhiều danh mục sản phẩm khác nhau
o Thông tin chi tiết về sản phẩm được cung cấp đầy đủ
o Hiển thị thích ứng với mọi thiết bị màn hình khác nhau
o Hỗ trợ nhiều hình thức thanh toán khác nhau
• Nhược điểm:
o Hỗ trợ duy nhất một phương thức đăng nhập qua số điện thoại
o Hiện nhiều quảng cáo và các quảng cáo này nổi bật hơn so với các sản phẩm
o Sử dụng màu đỏ làm chủ đạo cho nhiều thông tin khiến cho các thông tin khác dễ bị lu mờ
Trang 29o Về mặt chức năng, trang web cung cấp đầy đủ các chức năng của một website thương mại điện tử đó là hiển thị danh sách sản phẩm, tìm kiếm sản phẩm, xem thông tin chi tiết sản phẩm, xem đánh giá sản phẩm, thêm sản phẩm vào giỏ hàng, thanh toán, xem thông tin hóa đơn
Trang 30CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU
14
o Về nội dung, trang web còn cung cấp đầy đủ thông tin chi tiết về sản phẩm
và các sản phẩm được phân chia theo danh mục, theo loại giúp khách hàng
dễ dàng tiếp cận
• Ưu điểm:
o Bố cục giao diện rõ ràng, dễ thao tác cho người mới sử dụng
o Bộ lọc đầy đủ với các nhu cầu mà người dùng muốn tìm kiếm
o Hiển thị hợp lý với mọi màn hình khác nhau
o Hỗ trợ việc đăng nhập vào hệ thống với nhiều phương thức khác nhau
o Hỗ trợ việc thanh toán đa dạng các phương thức
Website gồm 3 tác nhân chính là: khách hàng (thành viên của hệ thống), quản trị viên (người quản lý hệ thống), khách vãng lai (chưa là thành viên của hệ thống)
• Khách vãng lai: có quyền và chức năng sau: đăng ký, xem danh sách sản phẩm, xem chi tiết thông tin sản phẩm, quản lý giỏ hàng, tìm kiếm từ khóa và lọc sản phẩm
Trang 3115
• Khách hàng: ngoài tất cả các có quyền và chức năng của khách vãng lai khách hàng còn có các quyền và chức năng sau: đăng nhập, xác thực tài khoản, quên mật khẩu, đánh giá sản phẩm, đặt hàng, quản lý hồ sơ, quản lý đơn hàng, đổi mật khẩu
• Quản trị viên: có quyền và chức năng sau: tất cả các quyền và chức năng của khách hàng, quản lý khách hàng, quản lý danh mục, quản lý thương hiệu, quản
lý sản phẩm, quản lý đơn hàng khách hàng, quản lý kho hàng, quản lý biểu ngữ
2.4 Yêu cầu chức năng
Bảng 1: Danh sách yêu cầu chức năng
4 Khách vãng lai có
thể tìm kiếm sản
phẩm
Tìm kiếm - Khách vãng lai cần nhập từ khóa tìm kiếm
vào ô tìm kiếm ở thanh điều hướng
- Thêm sản phẩm vào giỏ hàng, điều chỉnh
số lượng sản phẩm trong giỏ hàng, xóa sản phẩm khỏi giỏ hàng
Trang 32CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU
16
8 Khách hàng có thể
xác thực tài khoản
Lưu trữ - Khách hàng xác thực tài khoản sau khi
đăng ký, chỉ có tài khoản đã xác thực mới được đăng nhập vào hệ thống
- Đặt hàng gồm các bước: chọn địa chỉ giao hàng, chọn phương thức thanh toán gồm có thành toán bằng tiền mặt khi nhận hàng hoặc bằng thẻ tín dụng
11 Khách hàng có thể
quản lý hồ sơ
Lưu trữ, kết xuất
- Gồm có: xem thông tin hồ sơ cá nhân, chỉnh sửa thông tin
12 Khách hàng có thể
quản lý đơn hàng
Lưu trữ, kết xuất
- Gồm có: xem danh sách đơn hàng đã đặt, chi tiết đơn hàng đã đặt và hủy đơn hàng (chỉ hủy được đơn hàng đang có trạng thái là Pending – Đang chờ được xử lý)
- Khách hàng nhận thông báo về trạng thái đơn hàng sau khi đơn hàng được xác nhận bởi quản trị viên
- Gồm có: thêm người dùng mới, xem danh sách
17 Quản trị viên có thể
quản lý danh mục
Lưu trữ, kết xuất
- Gồm có: thêm, chỉnh sửa, xem danh sách danh mục
18 Quản trị viên có thể
quản lý thương
hiệu
Lưu trữ, kết xuất
- Gồm có: thêm, chỉnh sửa xem danh sách thương hiệu
- Gồm có: thêm, chỉnh sửa, xem danh sách, xem chi tiết
Trang 33- Gồm có: thêm, chỉnh sửa thuộc tính Thêm chỉnh sửa giá trị của thuộc tính
21 Quản trị viên có thể
quản lý biến thể
sản phẩm
Lưu trữ, kết xuất
- Gồm có: thêm biến thể sản phẩm từ các thuộc tính sản phẩm, điều chỉnh thông tin của biến thể sản phẩm
- Khi đơn hàng được đặt bởi khách hàng sẽ
có thông báo gửi cho quản trị viên
23 Quản trị viên có thể
quản lý đơn hàng
Lưu trữ, kết xuất
- Gồm có: xem danh sách, xem chi tiết, hoàn thành, xác nhận đơn hàng, hủy đơn hàng
24 Quản trị viên có thể
quản lý biểu ngữ
Lưu trữ, kết xuất
- Gồm có: xem danh sách, thêm biểu ngữ
2.5 Yêu cầu phi chức năng
Bảng 2: Danh sách yêu cầu phi chức năng
1 Thao tác trên website nhanh chóng, mượt mà Tính hiệu quả
2 Giao diện đơn giản, dễ sử dụng Tính tiện dụng
3 Sử dụng màu sắc hài hòa, dễ chịu Tính tiện dụng
4 Bảo mật thông tin người dùng Tính bảo mật
Trang 34CHƯƠNG 2: KHẢO SÁT HIỆN TRẠNG VÀ MÔ HÌNH HÓA YÊU CẦU
18
2.6 Mô hình hóa yêu cầu
2.6.1 Lược đồ Use Case phía Khách vãng lai
Hình 7: Lược đồ Use Case phía Khách vãng lai
2.6.2 Lược đồ Use Case phía Khách hàng
Khách hàng sẽ có tất cả các Use Case của Khách vãng lai và các Use Case sau:
Hình 8: Lược đồ Use Case phía Khách hàng
Trang 3519
2.6.3 Lược đồ Use Case phía Quản trị viên
Hình 9: Lược đồ Use Case phía Quản trị viên
Trang 373 LastName String Tên của khách hàng
4 Email String Địa chỉ email đăng nhập của
khách hàng
Duy nhất
5 PhoneNumber String Số điện thoại của khách
hàng
6 AvatarUrl String Đường dẫn đến nơi lưu trữ
ảnh đại diện của khách hàng
• Bảng Account
Bảng 4: Bảng Account
1 Id Guid Mã tài khoản Khóa chính
2 Password String Mật khẩu đăng nhập của
người dùng
3 Role String Vai trò của người dùng Có 2 giá trị:
Admin, Customer
4 EmailConfirmed Bool Người dùng đã xác thực địa
chỉ email hay chưa
True – Đã xác thực
False – Chưa xác thực
5 CustomerId Guid Mã khách hàng Khóa ngoại
Trang 38CHƯƠNG 3: THIẾT KẾ PHẦN MỀM
22
• Bảng Address
Bảng 5: Bảng Address
1 Id Guid Mã địa chỉ Khóa chính
2 ReceiveName String Tên người nhận hàng
3 PhoneNumber String Số điện thoại người nhận
4 Street String Địa chỉ nhà, tên đường
5 City String Tên thành phố
6 State String Tên bang/tỉnh
7 Country String Tên quốc gia
8 ZipCode String Mã bưu chính
9 CustomerId Guid Mã khách hàng Khóa ngoại
• Bảng Category
Bảng 6: Bảng Category
1 Id Guid Mã danh mục Khóa chính
2 Name String Tên thể loại
3 Slug String Đường dẫn
4 PrarentId Guid Mã danh mục cha Khóa ngoại
5 UpdatedDateTime DateTime Ngày giờ cập nhật
6 CreateDateTime DateTime Ngày giở tạo
• Bảng Brand
Bảng 7: Bảng Brand
1 Id Guid Khóa chính của bảng Khóa chính
2 Name String Tên của thương hiệu
3 ImageUrl String Đường dẫn nơi lưu trữ hình
ảnh của thương hiệu
4 UpdatedDateTime DateTime Ngày giờ cập nhật
5 CreateDateTime DateTime Ngày giờ tạo
Trang 392 Name String Tên của sản phẩm
3 ShortDescription String Mô tả ngắn gọn về sản
phẩm
4 Description String Mô tả chi tiết về sản phẩm
5 Price Decimal Giá của sản phẩm
6 StockQuantity Int Số lượng tồn kho
7 IsPublished Bool Trạng thái mở bán
Int Số lượng đánh giá
10 HasVariant Bool Sản phẩm có biến thể hay
không
True – Có False – Không
11 Delected Bool Trạng thái đã xóa hay chưa True – Đã xóa
False – Chưa xóa
12 BrandId Guid Mã thương hiệu Khóa ngoại
13 CategoryId Guid Mã doanh mục Khóa ngoại
14 DiscountId Guid Mã giảm giá Khóa ngoại
15 CreateDateTime DateTime Ngày giờ tạo
16 UpdateDateTime DateTime Ngày giờ cập nhật
Trang 40CHƯƠNG 3: THIẾT KẾ PHẦN MỀM
24
• Bảng Attribute
Bảng 9: Bảng Attribute
1 Id Guid Mã thuộc tính Khóa chính
2 Name String Tên thuộc tính
3 Alias String Tên viết tắt
4 CanCombine Bool Thuộc tính có thể kết hợp
với thuộc tính khác để tạo nên một biến thể của sản phẩm hay không
True – Có thể kết hợp False – Không thể kết hợp
5 ProductId Guid Mã sản phẩm Khóa ngoại
• Bảng AttributeValue
Bảng 10: Bảng AttributeValue
1 Id Guid Mã giá trị thuộc tính Khóa chính
2 Name String Tên giá trị thuộc tính
3 Color String Mã màu
4 PriceAdjustment Decimal Giá điều chỉnh
5 AttributeId Guid Mã thuộc tính Khóa ngoại
• Bảng Variant
Bảng 11: Bảng Variant
1 Id Guid Mã biến thể sản phẩm Khóa chính
2 Price Decimal Giá của biến thể
3 IsActive Bool Trạng thái mở bán
4 AssignedImages String Chuỗi mã hình ảnh
5 AttributeSelection String Mã thuộc tính và mã giá trị
thuộc tính được được tuần tự hóa