Nghiên cứu tổng quan về cách tạo lập nên một trang website bán hàngonline hoàn chỉnh cùng với một số công nghệ mới có thể áp dụng vào cho trangweb.Với mục tiêu đặt ra như vậy, những nội
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Giảng viên hướng dẫn : TS Nguyễn Thị Mỹ Bình
Hà Nội – 2023
MỤC LỤC
Trang 2DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẲT iiDANH MỤC CÁC BẢNG iiiDANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ iv
MỞ ĐẦU _viiCHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI _11.1 Giới thiệu về hệ thống _11.2 Lựa chọn công nghệ cho hệ thống. _11.2.1 Angular 11.2.2 ASP NET CORE 31.2.3 Typescript 71.2.4 MySql _81.3 Các lý thuyết liên quan đến hệ thống 101.3.1 Lập trình hướng đối tượng (Object Oriented Programming – OOP)10
1.3.2 HTTP và HTTPS 121.3.3 Mô hình khách hàng với khách hàng (Consumer to Consumer E-Commerce) 131.3.4 Hệ thống quản lý cơ sở dữ liệu quan hệ (Relational database management system) _15CHƯƠNG 2: PHÂN TÍCH HỆ THỐNG _182.1 Khảo sát hệ thống _182.1.1 Mục đích 182.1.2 Mô tả hệ thống _182.1.3 Nhóm các chức năng chính 192.2 Phân tích hệ thống _202.2.1 Mô hình hoá chức năng _202.2.2 Phân tích hệ thống _212.2.3 Xây dựng biểu đồ Use Case _292.2.4 Mô tả use case 302.2.5 Xây dựng cơ sở quan hệ dữ liệu 50
Trang 3CHƯƠNG 3: CÀI ĐẶT MÔI TRƯỜNG VÀ KẾT QUẢ _593.1 Cài đặt môi trường _593.1.1 Cài đặt visual code _593.1.2 Cài đặt NodeJS 593.1.3 Cài đặt git-scm 593.1.4 Cài đặt Angular CLI 603.1.5 Cài đặt Visual Studio 2022 trên Windows _603.2 Kết quả 623.3 Kiểm thử 69KẾT LUẬN VÀ KIẾN NGHỊ 73TÀI LIỆU THAM KHẢO _74
Trang 4LỜI CẢM ƠN
Với sự giúp đỡ từ cô giáo hướng dẫn TS Nguyễn Thị Mỹ Bình do nhàtrường Đại học Công nghiệp Hà Nội phân công với mục đích giúp đỡ em trongquá trình hoàn thành đồ án tốt nghiệp của mình “Website bán hàng online”
Để hoàn thành khóa luận này, em xin chân thành cảm ơn tới các thầy côgiáo đã tận tình hướng dẫn, giảng dạy trong suốt quá trình học tập, nghiên cứu vàrèn luyện ở Trường Đại Học Công nghiệp Hà Nội cùng với bạn bè trên trườnglớp và sự đồng hành của bố mẹ trong suốt quá trình em học tập tại nhà trường.Đặc biệt xin gửi lời cảm ơn chân thành tới cô giáo hướng dẫn TS Nguyễn Thị
Mỹ Bình đã tận tình, chu đáo hướng dẫn em thực hiện khoá luận này
Mặc dù đã có nhiều cố gắng để thực hiện đề tài một cách hoàn chỉnh nhất.Song do thời gian có hạn, trình độ hiểu biết và nhận thức còn hạn chế cho nêntrong đồ án này không thể tránh khỏi những thiếu sót, em rất mong nhận được sựđóng góp ý kiến của các thầy cô và bạn bè để em có thể hoàn thiện đồ án này tốthơn
Em xin chân thành cảm ơn!
Hà Nội, ngày 01 tháng 05 năm 2023Sinh viên thực hiện
Tạ Quang Huy
Trang 5DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẲT
ST
T
Viết tắt Đầy đủ
2 RDBMS Relational database management system
3 SQL Structured Query Language
4 HTTP Hypertext Transfer Protocol
5 HTTPS Hypertext Transfer Protocol Sercure
7 HTML The HyperText Markup Language
8 CSS Cascading Style Sheets
9 C2C Customer to customer
10 OOP Object Oriented Programming
Trang 6DANH MỤC CÁC BẢNG
Bảng 1: Bảng phân tích chức năng 19Bảng 2: Xác định các thực thể 27Bảng 3: Kiểm thử 71
Trang 7DANH MỤC CÁC HÌNH VẼ,
Hình 1.1 Angular 2
Hình 1.2 Phương thức hoạt động của Angular 2
Hình 1.3 Component trong Angular 3
Hình 1.4 ASP.NET Core 4
Hình 1.5 Typescript 7
Hình 1.6 MySQL 8
Hình 1.7 HTTP 12
Hình 1.8 HTTPS 12
Hình 1.9 Database demo 15
YHình 2.1: Sơ đồ phân tích chức năng mức gộp 20
Hình 2.2: Hình Sơ đồ phân rã chức năng 20
Hình 2.3: Sơ đồ luồng dữ liệu mức đỉnh 21
Hình 2.4: Sơ đồ phân ra “Quản lý sản phẩm” 21
Hình 2.5: Sơ đồ phân ra “Quản lý báo cáo thống kê” 22
Hình 2.6: Sơ đồ phân ra “Quản lý đơn hàng” 22
Hình 2.7: Sơ đồ phân ra “Quản lý người dùng” 23
Hình 2.8: Mô hình khái niệm dữ liệu 27
Hình 2.9: Hình Mô hình liên kết thực thể 28
Hình 2.10: Biểu đồ use case tổng quát 29
Hình 2.11: Biểu đồ trình tự phần tìm kiếm 31
Hình 2.12: Biểu đồ trình tự phần đăng nhập 32
Hình 2.13: Biểu đồ trình tự phần đăng ký 34
Hình 2.14: Biểu đồ trình tự phần đánh giá 35
Hình 2.15: Biểu đồ trình tự phần đánh giá 37
Hình 2.16: Biểu đồ trình tự phần thêm vào giỏ hàng 38
Hình 2.17: Biểu đồ trình tự phần xem giỏ hàng 40
Hình 2.18: Biểu đồ trình tự phần xem thủ tục 41
Trang 8Hình 2.19: Biểu đồ trình tự phần xem thêm đơn hàng 43
Hình 2.20: Biểu đồ trình tự phần xem xoá đơn hàng 45
Hình 2.21: Biểu đồ trình tự phần xem xoá đơn hàng 47
Hình 2.22: Biểu đồ trình tự phần xem danh sách đơn hàng 48
Hình 2.23: Biểu đồ trình tự phần xem danh sách người dùng 49
Hình 2.24: Sơ đồ liên kết cho CSDL website bán hàng linh kiện 50
Hình 2.25: Bảng address 51
Hình 2.26: Bảng category 51
Hình 2.27: Bảng OrderDetail 52
Hình 2.28: Bảng comment 52
Hình 2.29: Bảng order 53
Hình 2.30: Bảng product 53
Hình 2.31: Bảng rating 53
Hình 2.32: Bảng refreshtoken 54
Hình 2.33: Bảng user 54
Hình 2.34: Bảng tổng quan api thứ nhất 55
Hình 2.35: Bảng tổng quan api thứ 2 56
Hình 2.36: Bảng tổng quan api thứ 3 57
YHình 3.1: Điều khoản và chính sách Visual Studio 2022 60
Hình 3.2: Cài đặt môi trường Visual Studio 2022 60
Hình 3.3: Giao diện trang chủ 61
Hình 3 4: Sản phẩm theo thể loại 61
Hình 3.5:Chi tiết sản phẩm 62
Hình 3.6: Trang tìm kiếm sản phẩm 62
Hình 3.7: Trang đăng nhập 63
Hình 3 8: Trang đăng ký 63
Hình 3.9: Giỏ hàng 64
Hình 3 10: Thủ tục thanh toán 64
Trang 9Hình 3.11: Trang xác nhận Thankyou 65
Hình 3.12: Trang thêm mới sản phẩm 65
Hình 3.13: Trang chỉnh sửa sản phẩm 66
Hình 3.14: Trang chỉnh sửa chi tiết sản phẩm 66
Hình 3.15: Trang danh sách người dùng 66
Hình 3.16: Danh sách đơn hàng 67
Hình 3 17: Trang cá nhân người dùng 67
Hình 3.18: Trang sản phẩm mới 68 Y
Trang 10MỞ ĐẦU
Lý do chọn đề tài: Với sự phát triển như vũ bão của công nghệ thông tinnói chung và công nghệ phần mềm nói riêng, việc phát triển một ứng dụngwebsite ngày càng phổ biến Hầu như đâu đâu ta cũng thấy có sự xuất hiện củanhững trang web với mục đích là quản lý, quảng cáo, tính toán, … của trườnghọc, các công ty, tập đoàn lớn hay thậm chí là những start up nhỏ Bởi vậy khôngthể phủ nhận lợi ích to lớn và website mang lại cho họ
Website còn gọi là trang web (hoặc trang mạng) là tập hợp các trang chứathông tin bao gồm văn bản, hình ảnh, video, dữ liệu, … nằm trên một domain,được lưu trữ trên máy chủ web Website có thể được người dùng truy cập từ xathông qua mạng Internet
Một trang web tồn tại dưới dạng tập tin HTML hoặc XHTML có thể truycập bằng giao thức HTTP hoặc HTTPS Website có thể xây dựng từ các tập tinHTML (website tĩnh) hoặc vận hành với các CMS chạy trên máy chủ (websiteđộng) Bên cạnh đó, website được xây dựng trên nhiều ngôn ngữ lập trình khácnhau như: PHP, JavaScript, Java, …
Đó là lý em chọn đề tài “Xây dựng website bán hàng online” làm đồ án tốtnghiệp
Mục đích của đồ án: Đề tài tìm hiểu cơ sở lý thuyết về website nói chung
và xây dựng một ứng dụng trên trang web nói riêng cũng như cách thiết kế mộttrang web hoàn chỉnh cho các mục đích khác nhau Mục tiêu chính của đề tài lànghiên cứu về thiết kế website bán hàng online hay còn gọi là E-commere
Đối tượng và phạm vi nghiên cứu:
Đồ án nghiên cứu cách tạo lập lên một trang website bán hàng online Bêncạnh đó, nghiên cứu thêm về các công nghệ để ứng dụng thêm vào cho trangweb
Phương pháp nghiên cứu:
Trang 11Nghiên cứu tổng quan về cách tạo lập nên một trang website bán hàngonline hoàn chỉnh cùng với một số công nghệ mới có thể áp dụng vào cho trangweb.
Với mục tiêu đặt ra như vậy, những nội dung và kết quả nghiên cứu chínhcủa đồ án được trình bày trong ba chương như sau:
Chương 1: Tổng quan về đề tài
Chương 2: Phân tích và thiết kế hệ thông cho trang web bán hàng onlineChương 3: Nội dung và kết quả
Phần kết luận đưa ra những đánh giá về những kết quả đạt được và nhữngkhó khăn gặp phải trong quá trình nghiên cứu thực hiện đồ án
Trang 12CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về hệ thống
Nhu cầu mua sắm online hiện nay ngày càng phổ biến hơn, một phần là doCOVID-19 đã kéo dài dai dăng trong suốt thời gian gần đây Việc mọi ngườikhông được đi lại tự do cũng như phải tuân thủ biện pháp 5k của chính phủ đãlàm cho việc mua sắm khó khăn hơn
Theo một khảo sát vào cuối năm 2021 của PwC, trong 9.000 người tiêudùng thuộc 26 quốc gia (có Việt Nam), có tới 41% người tiêu dùng toàn cầu đãtăng cường mua sắm trực tuyến qua thiết bị điện tử thay vì trực tiếp tại cửa hàng,
tỷ lệ này là 69% tại Việt Nam Trong tương lai, 50% người mong muốn sẽ muasắm trực tuyến nhiều hơn
Năm 2022, hơn 51 triệu người Việt Nam đã tham gia hoạt động mua sắmtrực tuyến, tổng chi tiêu đạt 12,42 tỷ USD Trong đó, 73% người cho biết họthường xuyên mua hàng trên các nền tảng mua sắm thương mại điện tử và 59%người đã từng đặt hàng hoặc mua sắm trên các website
Từ những yêu cầu thực tế đó và cũng như phân tích từ những trangwebsite bán hàng đi trước, em đã tìm hiểu và nghiên cứu cũng như đánh giá để
đi đến giải pháp là xây dựng một trang web bán hàng online Để người dùng tiệnlợi dễ dàng trong việc mua sắm hàng hoá
Trang web cung cấp đầy đủ thông tin hàng hoá, người dùng dễ dàng trongviệc tìm kiếm thông tin hàng hoá Thông tin cá nhân, giá thành sản phẩm cũng sốlượng hàng hoá mà người dùng đặt
1.2 Lựa chọn công nghệ cho hệ thống.
1.2.1 Angular
Angular là một javascript framework do google phát triển để xây dựng cácSingle Page Application (SPA) bằng JavaScript, HTML và TypeScript Angularcung cấp các tính năng tích hợp cho animation, http service và có các tính năngnhư auto-complete, navigation, toolbar, menus, … Code được viết bằngTypeScript, biên dịch thành JavaScript và hiển thị tương tự trong trình duyệt
Trang 13Hình 1.1 Angular
Angular có rất nhiều đặc điểm hỗ trợ cho việc tạo trang web ở front end 1cách nhanh chóng và mạnh mẽ Ví dụ SPA, Data Binding, Component, Validate,tương tác Back-End Trong Angular còn có Angular CLI là công cụ giúp tạo vàquản lý project rất nhanh chóng
Hình 1.2 Phương thức hoạt động của Angular
Component
Component được tạo ra để hiện thực 1 chức năng nào đó trong ứng dụngcủa bạn Ví dụ component Liên hệ, component giới thiệu, bình luận, đăng ký, giỏhàng, chi tiết sản phẩm…
Mỗi component gồm 3 phần: Phần view (file html, css) – là nơi codehtml, css và hiện dữ liệu Phần code chính (file ts) – là nơi viết code typescript
để tính toán, xử lý trong component Phần metadata là nơi khai báo các thông tin
bổ sung cho component
Trang 14Hình 1.3 Component trong Angular
Data binding
DataBinding là tính năng rất được yêu thích của Angular Đây là khả năngtruyền dữ liệu qua các comppnent và từ component ra view Chi tiết hơn đề cậptrong link Data Binding Trong Angular
Module
Angular cung cấp sẵn nhiều module, các module này được gọi làNgModules Ví dụ như Forms Module, RouterModule, HttpClientModule Ngoài
ra có thể tạo mới nhiều module để sử dụng
Mỗi ứng dụng Angular có 1 module đặc biệt, tên là AppModule Đây làmodule gốc, được dùng để khởi chạy ứng dụng
Service
Service là các đoạn code được tạo ra để phục vụ một chức năng nào đó.Chẳng hạn như tính toán, lấy dữ liệu từ server, validate dữ liệu…Service được sửdụng trong component thông qua dependency injection Mỗi service lưu trongfile tênService.service.ts
1.2.2 ASP NET CORE
Trang 15ASP.NET Core là một framework mới của Microsoft Nó được thiết kế lại
từ đầu để trở nên nhanh chóng, linh hoạt và chạy trên được nhiều nền tảng khácnhau Trong bài viết này, ASP.NET Core là một framework có thể được sử dụng
để phát triển web với NET Nếu bạn có kinh nghiệm làm việc với MVC hoặcWeb API trong một vài năm thì bạn sẽ nhận thấy những tính năng quen thuộc.Kết thúc khóa học ASP.NET Core của NET CORE VN Bạn sẽ có những thứ cầnthiết để bắt đầu làm việc được với ASP.NET Core và viết 1 ứng dụng có thểthêm, sửa hay xem dữ liệu từ database như các môn lập trình khác bạn đã từnghọc
Hình 1.4 ASP.NET Core
Sơ lượt về lịch sử của ASP.NET Core
ASP.NET đã được sử dụng từ nhiều năm để phát triển các ứng dụng web
Kể từ đó, framework này đã trải qua một sự thay đổi tiến hóa đều đặn và cuốicùng đã đưa chúng ta đến với ASP.NET Core 1.0 hậu duệ mới gần đây nhất củanó
ASP.NET Core không phải là phiên bản tiếp theo của ASP.NET 4.6
Đó là một framework hoàn toàn mới, may mắn rằng nó một dự án side-by-sidetương tự với mọi thứ mà chúng ta biết
Nó thực ra được viết lại trên framework ASP.NET 4.6 hiện tại những kích thướcnhỏ hơn và nhiều modular hơn
Trang 16ASP.NET Core là gì?
ASP.NET Core là một web framework mã nguồn và được tối ưu hóa chocloud để phát triển các ứng dụng web chạy trên nhiều nền tảng nhưWindows, Linux và Mac Hiện tại, nó bao gồm MVC framework được kếthợp các tính năng của MVC và Web API thành một web framework duynhất
Các ứng dụng ASP.NET Core có thể chạy trên NET Core hoặc trên NETFramework hoàn chỉnh
Nó đã được thiết kế để cung cấp một framework tối ưu cho các ứng dụng
để triển khai tới cloud hoặc chạy on-premises
Nó bao gồm những modular với các thành phần tối thiểu, do đó bạn giữđược tính linh hoạt trong quá trình xây dựng các giải pháp của mình
Bạn có thể phát triển và chạy các ứng dụng đa nền tảng từ ASP.NET Coretrên Windows, Mac và Linux
Ưu điểm của ASP.NET Core
ASP.NET Core đi kèm với những ưu điểm sau:
ASP.NET Core có một số thay đổi kiến trúc dẫn đến modular frameworknhỏ hơn
ASP.NET Core không còn dựa trên System.Web.dll Nó dựa trên một tậphợp nhiều yếu tố của Nuget packages
Điều này cho phép bạn tối ưu ứng dụng của mình chỉ cần những NuGetpackages cần thiết
Lợi ích của diện tích bề mặt ứng dụng nhỏ hơn thì bảo mật chặt chẽ hơn,giảm dịch vụ, cải thiện hiệu suất và giảm chi phí
Với ASP.NET Core, bạn có thể nhận được các cải tiến sau:
Xây dựng và chạy các ứng dụng ASP.NET Core đa nền tảng trênWindows, Mac và Linux
Được xây dựng trên NET Core, hỗ trợ side-by-side app versioning
Công cụ mới giúp đơn giản hóa việc phát triển web hiện đại
Liên kết đơn các web stack như Web UI và API Web
Cấu hình dựa trên môi trường đám mây sẵn có
Trang 17 Được xây dựng dựa trên cho DI (Dependency Injection).
Tag Helpers làm cho các Razor makup trở nên tự nhiên hơn với HTML
Có khả năng host trên IIS hoặc self-host
ASP.NET Core 6
Microsoft Net 6 đã được release vào tháng 11 năm 2021 với rất nhiều cảitiến và features mới cho lập trình viên Điểm nhấn mạnh nhất trong đó là sự rađời của ASP.NET CORE 6, một bản nâng cấp quan trọng của nền tảng xây dựngwebsites mã nguồn mở của Microsoft
ASP.NET core 6 được xây dựng trên nền tảng của Net core runtime, qua
đó cho phép các nhà phát triển xây dựng ứng dụng Web có thể chạy trên nhiềunền tảng khác nhau từ Windows đến Linux hay MacOS
Với đặc thù công việc tại Niteco, việc tìm hiểu và apply các công nghệ mới vàocông việc và xây dựng giải pháp gần như là điều bắt buộc với mỗi lập trình viên.Trong bài này, chúng ta hãy cùng nhau điểm qua những tính năng nổi bật nhấtcủa ASP.NET core
Tăng hiệu năng (performance)
Performance là một phần rất quan trọng khi phát triển ứng dụng hiện đạingày nay Về mặt kỹ thuật, tăng performance đồng nghĩa với việc tối ưu hóa tàinguyên server tốt hơn, giảm được chi phí hosting Mặt khác, performance tốt hơncũng đồng nghĩa với việc SEO cho website cũng tốt hơn Có thể nói, ai cũngmuốn tốc độ website của mình nhanh nhất có thể
Với phiên bản ASP.NET core 6, về hiệu năng chúng ta có:
Throughput của middleware request tăng ~5%
MVC trên Linux tăng ~12%
Kết nối HTTPS sử dụng ít bộ nhớ hơn ~40%
Protobuf serialization nhanh hơn ~20%
Với các trang CMS và Commerce của Optimzely, vốn build dựa trên nềntảng ASP.NET, khi nâng cấp lên ASP.NET core 6 (Optimizely CMS 12 vàCommerce 14), performance đã nhanh hơn đáng kể Với CMS 12, tốc độ phảnhồi (response time) đã nhanh hơn đến 3 lần, thậm chí có những page có tốc độnhanh hơn đến 10 lần Các server của CMS 12 và Commerce 14 cũng có khảnăng xử lý lượng server request gấp 3 lần so với các phiên bản trước đó ở cùng
Trang 18cấu hình phần cứng Có thể nói ASP.NET core 6 mang lại một trải nghiệm kháchẳn về performance so với version trước đây.
1.2.3 Typescript
TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, nó
có thể được coi là một phiên bản nâng cao của Javascript bởi việc bổ sung tùychọn kiểu tĩnh và lớp hướng đối tượng mà điều này không có ở Javascript.TypeScript có thể sử dụng để phát triển các ứng dụng chạy ở client-side(Angular2) và server-side (NodeJS)
Hình 1.5 Typescript
TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6)như classes, modules Không dừng lại ở đó nếu như ECMAScript 2017 ra đời thìmình tin chắc rằng TypeScript cũng sẽ nâng cấp phiên bản của mình lên để sửdụng mọi kỹ thuật mới nhất từ ECMAScript Thực ra TypeScript không phải rađời đầu tiên mà trước đây cũng có một số thư viện như CoffeScript và Dart đượcphát triển bởi Google, tuy nhiên điểm yếu là hai thư viện này sư dụng cú phápmới hoàn toàn, điều này khác hoàn toàn với TypeScript, vì vậy tuy ra đời saunhưng TypeScript vẫn đang nhận được sự đón nhận từ các lập trình viên
Lợi thế khi sử dụng
JavaScript đã đủ tốt và bạn có khả năng tự hỏi: Liệu tôi có thực sự cần họcTypeScript? Về mặt kỹ thuật, bạn không cần học TypeScript để trở nên một lậptrình viên giỏi, hầu như mọi người đều ổn mà không có nó Tuy vậy, thực hiệncông việc với TypeScript có một số lợi thế sau:
Với static typing, code viết bằng TypeScript dễ dự đoán hơn, và dễ debughơn
Đơn giản tổ chức code cho các ứng dụng cực lớn và phức tạp nhờmodules, namespaces và giúp đỡ OOP mạnh mẽ
Trang 19 TypeScript có một bước biên dịch thành JavaScript, sẽ bắt toàn bộ các loạilỗi trước khi chúng chạy và làm hỏng một vài thứ.
Framework Angular 2 viết với TypeScript và nó cũng khuyến khích cáclập trình viên dùng ngôn ngữ này trong các dự án của họ
Biên dịch sang Javascript
TypeScript được viết trong các file ts (hoặc tsx cho JSX), nó chẳng thể sửdụng trực tiếp trong trình duyệt và cần biên dịch thành JavaScript FFiềunày có khả năng hành động với một vài cách:
Trong terminal dùng lệnh tsc
Trực tiếp trong Visual Studio hoặc các IDE và trình biên soạn khác
Dùng các task runner như Gulp
Bí quyết trước tiên là đơn giản nhất, cho những người mới tiếp tục, vì thếchúng ta sẽ sử dụng nó trong bài đăng này
1.2.4 MySql
MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (RelationalDatabase Management System, viết tắt là RDBMS) hoạt động theo mô hìnhclient-server RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các
cơ sở dữ liệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng
Hình 1.6 MySQL
MySQL là một trong số các phần mềm RDBMS RDBMS và MySQLthường được cho là một vì độ phổ biến quá lớn của MySQL Các ứng dụng weblớn nhất như Facebook, Twitter, YouTube, Google, và Yahoo! đều dùng MySQL
Trang 20cho mục đích lưu trữ dữ liệu Kể cả khi ban đầu nó chỉ được dùng rất hạn chếnhưng giờ nó đã tương thích với nhiều hạ tầng máy tính quan trọng như Linux,macOS, Microsoft Windows, và Ubuntu.
Database là tập hợp dữ liệu theo cùng một cấu trúc Hãy thử nghĩ về việcchụp hình tự sướng: bạn nhấn nút chụp ảnh về chính bản thân bạn Hình ảnh là
dữ liệu, thư viện lưu ảnh là cơ sở dữ liệu Cơ sở dữ liệu, hay database, là nơichứa và sắp đặt dữ liệu Dữ liệu được đặt trong một bộ dữ liệu chung, dataset,được tổ chức sắp xếp giống như một bảng tính vậy Mỗi “bảng” này có liên hệvới nhau theo cách nào đó Vì vậy từ Relational (liên hệ) trong RDBMS có ýnghĩa như vậy Nếu phần mềm không hỗ trợ mô hình dữ liệu quan hệ với nhaunhư vậy thì gọi là DBMS
Open source dịch là mã nguồn mở, có nghĩa là ai cũng có thể dùng vàchỉnh sửa nó Bất kỳ ai cũng có thể cài đặt phần mềmn ày Bạn cũng có thể họccách tùy chỉnh phần mềm theo nhu cầu của bạn Tuy nhiên, giấy phép GPL(GNU Public License) quyết định bạn có thể làm gì tùy vào điều kiện nhất định.Phiên bản thương mại cũng được xuất bản nếu bạn cần thêm chủ quyền linh hoạt
và hỗ trợ cao cấp
Máy tính cài đặt và chạy phần mềm RDBMS được gọi là client (máykhách) Mỗi khi chúng cần truy cập dữ liệu, chúng kết nối tới máy chủ (server)RDBMS Cách thức này chính là mô hình “client-server”
MySQL Server là máy tính hay một hệ các máy tính cài đặt phần mềmMySQL dành cho server để giúp bạn lưu trữ dữ liệu trên đó, để máy khách có thểtruy cập vào quản lý Dữ liệu này được đặt trong các bảng, và các bảng có mốiliên hệ với nhau MySQL server nhanh, an toàn, đáng tin cậy Phần mềm MySQLcũng miễn phí và được phát triển, phân phối và hỗ trợ bởi Oracle Corporation.MySQL client không hẵn phải cài phần mềm MySQL của Oracle mà lànói chung của mọi phần mềm có thể thực hiện truy vấn lên một MySQL server
và nhận kết quả trả về MySQL client điển hình là đoạn mã PHP script trên mộtmáy tính hay trên cùng server dùng để kết nối tới cơ sở dữ liệu MySQL database.Phpmyadmin cũng là một MySQL client có giao diện người dùng Một số công
cụ miễn phí dùng làm MySQL là:
MySQL Workbench (Mac, Windows, Linux), Miễn phí, mã nguồn mở
Sequel Pro (Mac), miễn phí, mã nguồn mở
Trang 21 HeidiSQL (Windows; chạy trên Mac hoặc Linux bằng WINE emulator),miễn phí
phpMyAdmin (web app), miễn phí, mã nguồn mở
1.3 Các lý thuyết liên quan đến hệ thống
1.3.1 Lập trình hướng đối tượng (Object Oriented Programming – OOP)
Lập trình hướng đối tượng (tiếng Anh: Objectoriented programming OOP) là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đốitượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính;
-và mã nguồn, được tổ chức thành các phương thức Phương thức giúp cho đốitượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, màđối tượng hiện tại có tương tác (đối tượng được hỗ trợ các phương thức "this"hoặc "self") Trong lập trình hướng đối tượng, chương trình máy tính được thiết
kế bằng cách tách nó ra khỏi phạm vi các đối tượng tương tác với nhau Ngônngữ lập trình hướng đối tượng khá đa dạng, phần lớn là các ngôn ngữ lập trìnhtheo lớp, nghĩa là các đối tượng trong các ngôn ngữ này được xem như thực thểcủa một lớp, được dùng để định nghĩa một kiểu dữ liệu
OOP được xem là giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảotrì cũng như mở rộng phần mềm bằng cách cho phép lập trình viên tập trung vàocác đối tượng phần mềm ở bậc cao hơn Ngoài ra, nhiều người còn cho rằngOOP dễ tiếp thu hơn cho những người mới học về lập trình hơn là các phươngpháp trước đó Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảmnhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra các ứng dụng màcác yếu tố bên ngoài có thể tương tác với các chương trình đó giống như làtương tác với các đối tượng vật lý
Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữliệu mà chúng được nhìn nhận như là một đơn vị duy nhất Mỗi đối tượng có mộttên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua têncủa nó Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xử lý dữliệu (bên trong của nó), và gửi ra hay trả lời đến các đối tượng khác hay đến môitrường
Lập trình hướng đối tượng là một phương pháp lập trình có 4 tính chấtchính sau:
Trang 22 Tính trừu tượng (abstraction): Đây là khả năng của chương trình bỏ quahay không chú ý đến một số khía cạnh của thông tin mà nó đang trực tiếplàm việc lên, nghĩa là nó có khả năng tập trung vào những cốt lõi cần thiết.Mỗi đối tượng phục vụ như là một "động tử" có thể hoàn tất các công việcmột cách nội bộ, báo cáo, thay đổi trạng thái của nó và liên lạc với các đốitượng khác mà không cần cho biết làm cách nào đối tượng tiến hành đượccác thao tác Tính chất này thường được gọi là sự trừu tượng của dữ liệu.
Tính trừu tượng còn thể hiện qua việc một đối tượng ban đầu có thể cómột số đặc điểm chung cho nhiều đối tượng khác như là sự mở rộng của
nó nhưng bản thân đối tượng ban đầu này có thể không có các biện phápthi hành Tính trừu tượng này thường được xác định trong khái niệm gọi làlớp trừu tượng hay lớp cơ sở trừu tượng
Tính đóng gói (encapsulation) và che giấu thông tin (information hiding):Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạngthái nội tại của một đối tượng Chỉ có các phương thức nội tại của đốitượng cho phép thay đổi trạng thái của nó Việc cho phép môi trường bênngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào làhoàn toàn tùy thuộc vào người viết mã Đây là tính chất đảm bảo sự toànvẹn của đối tượng
Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp(message) Việc gửi các thông điệp này có thể so sánh như việc gọi cáchàm bên trong của một đối tượng Các phương thức dùng trả lời cho mộtthông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phảnứng khác nhau Người lập trình có thể định nghĩa một đặc tính (chẳng hạnthông qua tên của các phương thức) cho một loạt các đối tượng gần nhaunhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đốitượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng màkhông bị nhầm lẫn
Ví dụ khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì cómột phương thức chung là "chu_vi" Khi gọi phương thức này thì nếu đối tượng
là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron".Tính kế thừa (inheritance): Đặc tính này cho phép một đối tượng có thể có sẵncác đặc tính mà đối tượng khác đã có thông qua kế thừa Điều này cho phép cácđối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định
Trang 23nghĩa lại Tuy nhiên, không phải ngôn ngữ định hướng đối tượng nào cũng cótính chất này.
1.3.2 HTTP và HTTPS
1.3.2.1 HTTP
HTTP - HyperText Transfer Protocol (Giao thức truyền tải siêu văn bản),
là một giao thức dùng để truyền tải thông tin qua Internet
Hình 1.7 HTTP
HTTP hoạt động theo mô hình Client - Server
Trong mô hình này, trình duyệt web mà user sử dụng đóng vai trò là Clienttạo request, gửi lên máy chủ Server, server tiếp nhận, xử lý request và phản hồilại cho client Và để Client và Server có thể nói chuyện được với nhau thì phảithông qua các giao thức Một trong những giao thức được sử dụng thường xuyênnhất chính là HTTP
1.3.2.2 HTTPS
Giống như HTTP, HTTPS -HyperText Transfer Protocol Secure cũng làmột giao thức giúp truyền thông tin giữa Client và Server
Hình 1.8 HTTPS
Trang 24HTTPS bảo mật dữ liệu của bạn bằng cách sử dụng giao thức TSL(Transport Layer Security) hay còn gọi là SSL.
SSL là một dạng chứng thư số
SSL đã kết hợp những yếu tố sau để thiết lập được một giao dịch an toàn:
Mã hoá: đảm bảo thông tin không thể bị truy cập bởi đối tượng thứ ba Dữliệu phải được mã hoá để không thể bị đọc được bởi những người khác ngoàiclient và server Đây là cách giải quyết đối với bài toán phía trên
Xác thực: đảm bảo tính xác thực của trang mà bạn sẽ làm việc ở đầu kiacủa kết nối Cũng như vậy, các trang Web cũng cần phải kiểm tra tính xác thựccủa người sử dụng Điều này giúp cho người dùng sự tin cậy cần thiết trước khi
họ kết nối với website
Toàn vẹn dữ liệu: đảm bảo thông tin không bị sai lệch Thể hiện chính xácthông tin gốc gửi đến
Với việc sử dụng SSL, các Web site có thể cung cấp khả năng bảo mậtthông tin Xác thực và toàn vẹn dữ liệu đến người dùng SSL được tích hợp sẵnvào các trình duyệt và Web server Cho phép người sử dụng làm việc với cáctrang Web ở chế độ an toàn
1.3.3 Mô hình khách hàng với khách hàng (Consumer to Consumer Commerce)
E-Customer to customer (C2C) là một mô hình kinh doanh theo đó kháchhàng có thể giao dịch với nhau, điển hình là trong môi trường trực tuyến Trong
đó C2C đang ngày càng trở nên phổ biến hơn bởi hiệu quả chi phí mà nó manglại, bên cạnh đó, nó được nhiều chuyên gia dự đoán sẽ còn phát triển hơn trongtương lai
Trong tiếng Việt, C2C (customer-to-customer) được hiểu là Người tiêudùng tới người tiêu dùng Đúng như tên gọi của nó, C2C là một mô hình kinhdoanh mà trong đó, đại diện bên mua và đại diện bên bán đều là những cá nhân.Thông thường, các giao dịch này sẽ được thực hiện trong môi trường trựctuyến, thông qua một bên thứ ba đó là các nền tảng mua bán hàng trực tuyến quatrung gian, hoặc các trang web đấu giá trung gian
C2C sở hữu những đặc điểm như:
Trang 25 Cạnh tranh về sản phẩm, mặt hàng kinh doanh: C2C là mô hình kinhdoanh giữa các cá nhân nên nó cho phép khách hàng trao đổi mua bán qualại với nhau Các cá nhân này không phải là doanh nghiệp sản xuất, nhữngsản phẩm mà họ bán có thể không còn có mặt trên thị trường nhưng vẫnnhận được nhiều quan tâm và ưa chuộng
Tỷ suất lợi nhuận cho người bán cao hơn: cá nhân người bán sẽ đượchưởng tỷ suất lợi nhuận cao hơn bởi không còn sự tác động từ phía doanhnghiệp sản xuất hay nhà bán lẻ hoặc nhà bán buôn
Thiếu kiểm soát trong chất lượng và thanh toán: không có sự can thiệp từphía nhà sản xuất hay phía bán lẻ hoặc bán buôn nên các sản phẩm giaodịch trong mô hình C2C sẽ không qua kiểm soát chặt chẽ về mặt chấtlượng và cả khâu thanh toán
Lợi nhuận cao, chi phí thấp
Đăng tin rao bán dễ dàng
1.3.4.1 Cơ sở dữ liệu quan hệ
Cơ sở dữ liệu quan hệ là một tập hợp thông tin tổ chức dữ liệu theo cácmối quan hệ được xác định trước, nơi dữ liệu được lưu trữ trong một hoặc nhiềubảng (hoặc "quan hệ") của các cột và hàng, giúp dễ dàng xem và hiểu các cấutrúc dữ liệu khác nhau liên quan với nhau như thế nào Mối quan hệ là sự kết nối
Trang 26logic giữa các bảng khác nhau, được thiết lập trên cơ sở tương tác giữa các bảngnày.
1.3.4.2 Mô hình cơ sở dữ liệu quan hệ
Được phát triển bởi EF Codd từ IBM vào những năm 1970, mô hình cơ sở
dữ liệu quan hệ cho phép bất kỳ bảng nào có liên quan đến một bảng khác bằngcách sử dụng một thuộc tính chung Thay vì sử dụng cấu trúc phân cấp để tổchức dữ liệu, Codd đã đề xuất chuyển sang sử dụng mô hình dữ liệu nơi dữ liệuđược lưu trữ, truy cập và liên quan trong các bảng mà không cần tổ chức lại cácbảng chứa chúng
Hãy nghĩ về cơ sở dữ liệu quan hệ như một tập hợp các tệp bảng tính giúpdoanh nghiệp tổ chức, quản lý và liên kết dữ liệu Trong mô hình cơ sở dữ liệuquan hệ, mỗi “bảng tính” là một bảng lưu trữ thông tin, được biểu diễn dướidạng cột (thuộc tính) và hàng (bản ghi hoặc bộ dữ liệu )
Các thuộc tính (cột) chỉ định một loại dữ liệu và mỗi bản ghi (hoặc hàng)chứa giá trị của loại dữ liệu cụ thể đó Tất cả các bảng trong cơ sở dữ liệu quan
hệ đều có một thuộc tính được gọi là khóa chính , là mã định danh duy nhất củamột hàng và mỗi hàng có thể được sử dụng để tạo mối quan hệ giữa các bảngkhác nhau bằng cách sử dụng khóa ngoại —tham chiếu đến khóa chính của bảngkhác bảng hiện có
Chúng ta hãy xem mô hình cơ sở dữ liệu quan hệ hoạt động như thế nàotrong thực tế:
Giả sử bạn có bảng Khách hàng và bảng Đơn hàng
Trang 27Hình 1.9 Database demo
1.3.4.3 RDBMS
Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) là tập hợp các chươngtrình và khả năng cho phép các nhóm CNTT và những người khác tạo, cập nhật,quản trị và tương tác với cơ sở dữ liệu quan hệ Các RDBMS lưu trữ dữ liệu ởdạng bảng, với hầu hết các hệ thống quản lý cơ sở dữ liệu quan hệ thương mại sửdụng Ngôn ngữ truy vấn có cấu trúc (SQL) để truy cập cơ sở dữ liệu Tuy nhiên,
vì SQL được phát minh sau sự phát triển ban đầu của mô hình quan hệ, nên nókhông cần thiết cho việc sử dụng RDBMS
RDBMS là hệ thống cơ sở dữ liệu phổ biến nhất trong số các tổ chức trêntoàn thế giới Nó cung cấp một phương pháp đáng tin cậy để lưu trữ và truy xuấtlượng lớn dữ liệu đồng thời cung cấp sự kết hợp giữa hiệu năng hệ thống và tính
dễ thực hiện
Hoạt động
RDBMS sẽ lưu trữ dữ liệu dưới dạng bảng Mỗi hệ thống sẽ có số lượngbảng khác nhau với mỗi bảng sở hữu khóa chính duy nhất của riêng mình Khóachính sau đó được sử dụng để xác định từng bảng
Trang 28Trong bảng có hàng và cột Các hàng được gọi là bản ghi hoặc thực thểngang; chúng chứa thông tin cho từng mục nhập Các cột được gọi là các thựcthể dọc và chứa thông tin về trường cụ thể.
Trước khi tạo các bảng này, RDBMS phải kiểm tra các ràng buộc sau:
Khóa chính khóa này xác định từng hàng trong bảng Một bảng chỉ cóthể chứa một khóa chính Khóa phải là duy nhất và không có giá trị null
Khóa ngoại khóa này được sử dụng để liên kết hai bảng Khóa ngoạiđược giữ trong một bảng và đề cập đến khóa chính được liên kết với mộtbảng khác
Not null điều này đảm bảo rằng mọi cột không có giá trị null, chẳng hạnnhư ô trống
Kiểm tra điều này xác nhận rằng mỗi mục nhập trong một cột hoặc hàngđáp ứng một điều kiện chính xác và mỗi cột chứa dữ liệu duy nhất
Tính toàn vẹn của dữ liệu tính toàn vẹn của dữ liệu phải được xác nhậntrước khi dữ liệu được tạo
Trang 29Bán hàng là yếu tố sống còn đối với mọi doanh nghiệp Đó là cách duynhất để bạn có thể duy trì hoạt động của công ty Nếu không bán được hàng, bạn
sẽ không có tiền để trả các chi phí vận hành doanh nghiệp Cải thiện doanh sốbán hàng là cách tốt nhất gia tăng sự thành công cho doanh nghiệp của bạn.Khi có một trang web, doanh nghiệp của bạn có thể hiện diện trực tuyếntrên internet Điều này giúp doanh nghiệp tiếp cận được nhiều người tiêu dùngtrực tuyến, từ đó có nhiều cơ hội bán hàng Việc phát triển một trang web không
tự động mang khách hàng đến với doanh nghiệp của bạn Tuy nhiên, thông quaviệc tối ưu hóa công cụ tìm kiếm của trang web (SEO), bạn có cơ hội có nhiềunhiều khách hàng tiềm năng, những người có nhiều khả năng mua hàng hơn
Ở đây khách hàng hoặc chủ doanh nghiệp có thể tham gia vào hệ thống
mà phần mềm em cung cấp để có thể đăng tải sản phẩm cũng như người dùngtruy cập trực tiếp vào hệ thống để mua hàng, lựa chọn và tìm đọc
Trang 30 Người chủ doanh nghiệp truy cập vào hệ thống bằng tài khoản được cấp
để từ đó có thể thay đổi nội dung món hàng như thêm, sửa, xoá các trườngthuộc tính
Người quản trị viên sẽ quản lý được thông tin người dùng như sửa Vàcũng có thể thay đổi thông tin sản phẩm như thêm, sửa, xoá, …
2.1.3 Nhóm các chức năng chính
2.1.3.1 Chức năng dành cho người dùng
Đăng nhập bằng tài khoản hệ thống hoặc google
o Thêm thông tin sản phẩm
o Sửa thông tin sản phẩm
o Xoá sản phẩm
2.1.3.3 Chức năng dành cho quản trị viên
Đăng nhập hệ thống với quyền admin
Thay đổi thông tin cá nhân
Quản lý danh sách người dùng
o Cấp quyền (none)
o Cấp lại mật khẩu
Quản lý sản phẩm
o Thêm thông tin sản phẩm
o Sửa thông tin sản phẩm
o Xoá sản phẩm
Trang 31 Quản lý thể loại sản phẩm (none)
o Thêm thông tin thể loại
o Sửa thông tin thể loại
2 Quản lý báo cáo thống kê
2.1 Thống kê đơn hàng2.2 Thống kê sản phẩm2.3 Tài khoản ngườidùng
3 Quản lý đơn hàng
3.1 Thêm đơn hàng3.2 Sửa đơn hàng3.3 Xoá đơn hàng
4 Quản lý người dùng
4.1 Thêm người dùng4.2 Sửa người dùng4.3 Xoá người dùng4.4 Phân quyền
Bảng 1: Bảng phân tích chức năng
2.2.1.2 Sơ đồ phân tích chức năng mức gộp
Hình 2.1: Sơ đồ phân tích chức năng mức gộp
Trang 322.2.1.3 Sơ đồ phân rã chức năng
Hình 2.2: Hình Sơ đồ phân rã chức năng
2.2.2 Phân tích hệ thống
2.2.2.1 Sơ đồ luồng dữ liệu mức đỉnh
Trang 33Hình 2.3: Sơ đồ luồng dữ liệu mức đỉnh
2.2.2.2 Sơ đồ dữ liệu mức dưới đỉnh
2.2.2.2.1.Quản lý thông tin sản phẩm
Hình 2.4: Sơ đồ phân ra “Quản lý sản phẩm”
Trang 342.2.2.2.2.Quản lý báo cáo thống kế
Hình 2.5: Sơ đồ phân ra “Quản lý báo cáo thống kê”
2.2.2.2.3.Quản lý đơn hàng
Hình 2.6: Sơ đồ phân ra “Quản lý đơn hàng”
2.2.2.2.4.Quản lý người dùng
Trang 35Hình 2.7: Sơ đồ phân ra “Quản lý người dùng”
2.2.2.3 Mô hình khái niệm dữ liệu
QuyềnNgười xác nhậnNgày tạoNgười tạoNgày tạo
Trang 36Số điện thoạiCATEGORY
Tên sản phẩmHình ảnh chínhHình ảnh phụ
Mô tảGiá
Số lượng
Mô tả tổng quan
Mã thể loạiNgười xác nhậnNgày tạoNgười tạoNgày tạoXoá mềmCOMMENT
Nội dungTên người bình luậnEmail
Trang 37Số điện thoại
Mã bưu điện
Mã người dùngNgười xác nhậnNgày tạoNgười tạoNgày tạoXoá mềmRATING
Số điểm đánh giáNgười đánh giáEmail người đánh giá
Mã người đánh giá
Mã sản phẩm đánh giáNgười xác nhậnNgày tạoNgười tạo
Trang 38IsDeleted
Ngày tạoXoá mềmORDER
Bảng 2: Xác định các thực thể
2.2.2.3.2.Mô hình khái niệm dữ liệu
Trang 39Hình 2.8: Mô hình khái niệm dữ liệu
2.2.2.3.3.Sơ đồ thực thể liên kết (ERD)
Trang 40Hình 2.9: Hình Mô hình liên kết thực thể
2.2.3 Xây dựng biểu đồ Use Case