SOA Service-Oriented Architecture là một mô hình kiến trúc phần mềm trong đó các chức năng của hệ thống được đóng gói dưới dạng các dịch vụ độc lập, có thể tái sử dụng, tương tác với nha
CƠ SỞ LÝ THUYẾT
KIẾN TRÚC HƯỚNG DỊCH VỤ (SOA)
Khái niệm về kiến trúc Client/Server
Kiến trúc Client/Server là mô hình điện toán phổ biến, chia hệ thống thành hai thành phần chính là máy khách (client) và máy chủ (server) Trong mô hình này, mỗi thành phần đảm nhận vai trò và chức năng riêng biệt, giúp hệ thống hoạt động hiệu quả và linh hoạt hơn.
Client là thiết bị hoặc phần mềm người dùng trực tiếp tương tác để gửi yêu cầu tới server, nhằm thực hiện các tác vụ như truy xuất dữ liệu, xác thực người dùng hoặc thực hiện các phép tính Đây là thành phần quan trọng trong quá trình giao tiếp giữa người dùng và hệ thống, giúp đảm bảo việc truy cập và xử lý thông tin diễn ra hiệu quả Client đảm nhận vai trò trung gian, gửi các yêu cầu và nhận phản hồi từ server, đóng vai trò thiết yếu trong kiến trúc hệ thống.
- Server là hệ thống tiếp nhận và xử lý các yêu cầu từ client, sau đó trả lại kết quả Nó thường chứa logic nghiệp vụ, truy cập cơ sở dữ liệu, và cung cấp các dịch vụ cần thiết cho client.
Ví dụ dễ hiểu nhất về kiến trúc này là khi bạn dùng trình duyệt web (client) để truy cập vào một trang web Trình duyệt gửi yêu cầu đến máy chủ web (server), máy chủ này sẽ xử lý và gửi nội dung trang web về cho trình duyệt hiển thị.
Hệ thống Client/Server bao gồm:
Giao diện người dùng (UI) để nhập liệu và hiển thị kết quả.
Phần mềm trung gian để tạo yêu cầu (request) và nhận phản hồi (response).
Không chứa logic xử lý phức tạp, chủ yếu là các tương tác cơ bản.
Lắng nghe các yêu cầu từ client.
Xử lý nghiệp vụ (ví dụ: kiểm tra tài khoản, xử lý giao dịch).
Kết nối và thao tác với hệ thống cơ sở dữ liệu.
Gửi phản hồi về client sau khi xử lý.
Cấu trúc này thường được áp dụng trong nhiều mô hình triển khai hệ thống như mô hình 2 tầng (client trực tiếp truy cập server) hoặc 3 tầng (thêm lớp trung gian giữa client và server như application server).
Quá trình tương tác giữa client và server diễn ra theo các bước sau:
- Người dùng thực hiện hành động trên giao diện ứng dụng client, ví dụ như đăng nhập, tìm kiếm sản phẩm.
- Ứng dụng client đóng gói dữ liệu và gửi yêu cầu đến server thông qua mạng (thường là HTTP hoặc TCP/IP).
- Server tiếp nhận yêu cầu, kiểm tra tính hợp lệ, xử lý logic nghiệp vụ và truy xuất dữ liệu từ cơ sở dữ liệu nếu cần.
- Kết quả xử lý (thành công hoặc lỗi) được đóng gói thành phản hồi và gửi ngược lại client.
- Client nhận phản hồi, hiển thị kết quả tương ứng trên giao diện người dùng. Ưu điểm
- Quản lý tập trung: Dữ liệu và toàn bộ logic xử lý đều tập trung ở server nên dễ dàng quản lý, cập nhật và bảo trì hệ thống.
- Bảo mật cao: Do dữ liệu không lưu trữ tại client nên hạn chế nguy cơ mất mát hoặc lộ thông tin nhạy cảm.
- Tiết kiệm tài nguyên phía client: Client không cần xử lý phức tạp, có thể sử dụng các thiết bị cấu hình thấp như điện thoại, máy tính bảng.
- Mở rộng đơn giản ở mức vừa phải: Có thể thêm nhiều client truy cập vào cùng một server, miễn là server đủ khả năng xử lý.
- Dễ phát triển phần mềm: Việc tách biệt rõ vai trò giữa client và server giúp dễ dàng phân chia nhiệm vụ trong đội ngũ phát triển.
- Phụ thuộc vào server: Nếu server bị lỗi, toàn bộ hệ thống ngưng hoạt động,gây gián đoạn dịch vụ.
- Khó mở rộng linh hoạt: Khi số lượng client quá lớn, server sẽ bị quá tải Việc nâng cấp server có thể tốn kém và mất thời gian.
- Chi phí đầu tư cao: Để đảm bảo hiệu suất, hệ thống server cần cấu hình mạnh, đường truyền ổn định, kèm theo hệ thống bảo mật và sao lưu.
- Tắc nghẽn khi lưu lượng lớn: Nếu mạng hoặc server bị quá tải, thời gian phản hồi chậm, ảnh hưởng đến trải nghiệm người dùng.
- Không thích hợp cho hệ thống phân tán quy mô lớn: Khi cần xử lý dữ liệu ở nhiều khu vực địa lý hoặc khối lượng lớn, cần sử dụng kiến trúc phân tán (Distributed System) hoặc hướng dịch vụ (SOA, Microservices).
1.1.2 Các mô hình truyền thông cho tính toán phân tán.
Tính toán phân tán là mô hình nơi nhiều hệ thống máy tính riêng biệt, thường phân tán về địa lý, phối hợp xử lý các tác vụ như một hệ thống thống nhất Để các hệ thống trong môi trường phân tán hoạt động hiệu quả, việc truyền thông giữa các thành phần đóng vai trò cực kỳ quan trọng Các mô hình truyền thông được thiết kế nhằm mục đích gửi, nhận, đồng bộ hoặc bất đồng bộ các thông điệp giữa các tiến trình, dịch vụ hoặc hệ thống trong mạng lưới, đảm bảo sự liên kết và phối hợp liên tục trong hệ thống phân tán.
Vai trò của truyền thông trong hệ thống phân tán.
- Kết nối các thành phần: Giúp các thành phần trong hệ thống (service, node, process) tương tác với nhau qua mạng.
- Truyền dữ liệu: Cho phép chia sẻ dữ liệu giữa các máy tính trong hệ thống.
- Đảm bảo đồng bộ: Duy trì trạng thái thống nhất giữa các thành phần đang xử lý một tác vụ phân tán.
- Giảm tải và tối ưu hiệu năng: Phân bổ tác vụ và tài nguyên một cách hợp lý dựa trên khả năng truyền thông.
Các mô hình truyền thông phổ biến.
- Là mô hình đơn giản và phổ biến nhất.
- Client gửi yêu cầu tới server, và server trả kết quả sau khi xử lý.
- Giao tiếp thường qua các giao thức như HTTP, TCP/IP. Ưu điểm:
- Dễ triển khai, dễ hiểu.
- Hỗ trợ tốt trong môi trường nội bộ nhỏ hoặc trung bình.
- Phụ thuộc vào server, dễ gây tắc nghẽn hoặc điểm lỗi đơn (single point of failure).
Mô hình Peer-to-Peer (P2P).
- Trong mô hình này, mỗi nút (node) đều có thể đóng vai trò client và server.
- Giao tiếp ngang hàng, không có máy chủ trung tâm.
- Ví dụ: BitTorrent, Skype cũ. Ưu điểm:
- Không có điểm lỗi trung tâm, độ bền cao.
- Phân tán tốt tải và dữ liệu.
- Khó kiểm soát và bảo mật.
- Đồng bộ dữ liệu phức tạp.
Mô hình Remote Procedure Call (RPC).
- Cho phép một tiến trình gọi hàm từ xa như thể gọi hàm cục bộ.
- Ẩn đi quá trình truyền thông và phân phối. Ưu điểm:
- Trừu tượng hóa việc gọi hàm từ xa.
- Lập trình dễ hơn, thân thiện với lập trình viên.
- Gặp khó khăn khi lỗi mạng xảy ra.
- Không phù hợp với môi trường yêu cầu độ tin cậy cực cao.
Mô hình Message Passing (Truyền thông qua thông điệp).
- Các tiến trình giao tiếp bằng cách gửi và nhận các thông điệp.
- Có thể đồng bộ (synchronous) hoặc bất đồng bộ (asynchronous). Ứng dụng: MPI trong HPC, RabbitMQ, Kafka. Ưu điểm:
- Tăng độ linh hoạt và khả năng mở rộng.
- Dễ quản lý khi có nhiều dịch vụ.
- Phức tạp trong thiết kế hệ thống.
- Cần cơ chế đảm bảo tin cậy cho thông điệp.
- Một bên publish (phát thông điệp), bên khác subscribe (đăng ký nhận).
- Không cần biết cụ thể ai gửi, ai nhận.
- Ví dụ: MQTT (trong IoT), Apache Kafka. Ưu điểm:
- Rất phù hợp với hệ thống phân tán lớn và thời gian thực.
- Giảm phụ thuộc giữa các thành phần.
- Khó debug, theo dõi luồng dữ liệu.
- Phụ thuộc vào broker trung gian.
1.1.3 Kiến trúc hướng dịch vụ (SOA).
SOA (Service-Oriented Architecture) là mô hình kiến trúc phần mềm nơi các chức năng của hệ thống được đóng gói thành các dịch vụ độc lập, có khả năng tái sử dụng và tương tác qua giao tiếp chuẩn Mỗi dịch vụ đảm nhận nhiệm vụ cụ thể, giúp tăng tính linh hoạt và khả năng mở rộng của hệ thống Các dịch vụ này có thể được truy cập dễ dàng từ các hệ thống khác qua mạng, thường là Internet hoặc Intranet, nâng cao khả năng tích hợp và chia sẻ dữ liệu trong doanh nghiệp.
SOA (Service-Oriented Architecture) là phương pháp thiết kế hệ thống phần mềm tập trung vào việc xây dựng các “dịch vụ” như các đơn vị chức năng riêng biệt, có khả năng tương tác hiệu quả thông qua các giao diện chuẩn hóa và giao thức mở Phương pháp này giúp tăng tính linh hoạt, khả năng mở rộng và dễ bảo trì của hệ thống chính nhờ vào việc sử dụng các dịch vụ độc lập và chuẩn hóa SOA được ứng dụng rộng rãi trong phát triển phần mềm hiện đại để tối ưu hóa quá trình tích hợp hệ thống và nâng cao hiệu quả vận hành.
- Tái sử dụng dịch vụ: Một dịch vụ có thể được sử dụng trong nhiều ứng dụng khác nhau.
- Tích hợp linh hoạt: Cho phép kết nối giữa các hệ thống khác nhau về nền tảng, ngôn ngữ.
- Giảm chi phí phát triển và bảo trì.
- Tăng tính linh hoạt: Dễ dàng thêm, sửa, hoặc loại bỏ dịch vụ mà không ảnh hưởng đến toàn hệ thốn.
Thành phần chính trong SOA.
Service Provider (Nhà cung cấp dịch vụ):
- Là đơn vị triển khai và công bố dịch vụ ra ngoài.
- Cung cấp thông tin mô tả dịch vụ (WSDL).
- Lưu trữ thông tin dịch vụ trên Service Registry.
Service Consumer (Người sử dụng dịch vụ):
- Là hệ thống hoặc ứng dụng gọi và sử dụng dịch vụ.
- Tìm kiếm dịch vụ thông qua Service Registry và tương tác với Provider.
Service Registry (Bộ đăng ký dịch vụ):
- Là nơi lưu trữ thông tin mô tả dịch vụ.
- Cho phép người dùng tra cứu dịch vụ cần sử dụng.
- Một chuẩn phổ biến là UDDI (Universal Description, Discovery and Integration). Đặc điểm chính của SOA.
- Tách biệt giữa giao diện và triển khai: Khách hàng chỉ cần biết cách gọi dịch vụ mà không cần quan tâm đến cách dịch vụ đó được xây dựng hoặc hoạt động nội bộ.
- Khả năng tương tác (interoperability): Các dịch vụ được thiết kế để hoạt động tốt giữa các hệ thống khác nhau, dùng chuẩn giao tiếp như XML, HTTP, SOAP.
- Hướng sự kiện hoặc thông điệp: Dịch vụ tương tác với nhau thông qua việc gửi/nhận thông điệp (message).
- Không phụ thuộc ngôn ngữ lập trình: Một dịch vụ có thể viết bằng Java, dịch vụ khác viết bằng C#, vẫn có thể tương tác.
- Khả năng mở rộng: Dễ dàng thêm dịch vụ mới hoặc sửa dịch vụ cũ mà không ảnh hưởng hệ thống.
Quy trình hoạt động của SOA.
- Đăng ký dịch vụ: Nhà cung cấp dịch vụ công bố dịch vụ của mình (giao diện và mô tả) trên Service Registry.
- Tìm kiếm dịch vụ: Người dùng dịch vụ truy vấn Service Registry để tìm dịch vụ phù hợp.
- Gọi dịch vụ: Sau khi tìm được dịch vụ, người dùng gọi dịch vụ trực tiếp thông qua giao diện đã công bố.
- Tăng tính linh hoạt và mở rộng.
- Dễ tích hợp với hệ thống khác.
- Tăng khả năng tái sử dụng mã nguồn và dịch vụ.
- Giảm chi phí bảo trì.
- Phù hợp với hệ thống lớn và phát triển lâu dài.
- Độ phức tạp cao: Việc thiết kế và triển khai SOA cần hiểu rõ về kiến trúc và các tiêu chuẩn liên quan.
- Hiệu suất có thể bị ảnh hưởng: Do sử dụng giao tiếp mạng (SOAP, XML), tốc độ xử lý có thể chậm hơn so với phương thức nội bộ.
- Chi phí đầu tư ban đầu cao: Hệ thống cần được tổ chức bài bản từ đầu, kèm theo công cụ và hạ tầng hỗ trợ.
1.1.4 Các nguyên tắc và tính chất của hệ thống SOA.
Kiến trúc hướng dịch vụ (SOA) được xây dựng dựa trên một tập hợp các nguyên tắc thiết kế và tính chất cốt lõi, nhằm đảm bảo rằng các dịch vụ trong hệ thống có thể hoạt động độc lập, dễ tích hợp, dễ mở rộng và dễ bảo trì Việc tuân thủ các nguyên tắc này là yếu tố then chốt quyết định sự thành công khi triển khai SOA.
Các nguyên tắc cơ bản của SOA.
- Tính tái sử dụng dịch vụ (Service Reusability)
Mỗi dịch vụ được thiết kế để có thể sử dụng lại trong nhiều ngữ cảnh khác nhau.
Ví dụ: Một dịch vụ thanh toán có thể dùng trong nhiều ứng dụng khác nhau như thương mại điện tử, quản lý học phí, mua vé máy bay…
- Tách biệt giao diện và triển khai (Service Abstraction)
Người dùng dịch vụ chỉ biết được các chức năng dịch vụ cung cấp qua giao diện.
Họ không cần biết hoặc không thể truy cập vào cách thức triển khai nội bộ của dịch vụ đó.
- Khả năng tự trị (Service Autonomy)
Mỗi dịch vụ hoạt động độc lập và tự quản lý tài nguyên riêng.
Giảm sự phụ thuộc lẫn nhau, giúp hệ thống dễ bảo trì và mở rộng.
- Giao tiếp dựa trên hợp đồng (Service Contract)
Các dịch vụ giao tiếp thông qua hợp đồng định nghĩa rõ ràng (ví dụ: WSDL cho Web Service).
Điều này đảm bảo tính nhất quán và hiểu rõ giữa các bên khi tương tác.
- Khả năng tương tác (Service Interoperability)
Dịch vụ phải có khả năng hoạt động với các dịch vụ hoặc hệ thống khác sử dụng công nghệ khác nhau.
Đảm bảo bằng cách sử dụng các chuẩn mở như XML, SOAP, HTTP, JSON…
- Tính phát hiện (Service Discoverability)
Mỗi dịch vụ nên được đăng ký trên một kho dịch vụ (Service Registry) để các thành phần khác dễ dàng tra cứu và sử dụng khi cần.
- Tính tái sử dụng thành phần (Component Reusability)
Ngoài dịch vụ, các thành phần bên trong hệ thống cũng nên thiết kế theo hướng tái sử dụng được ở nhiều mức (mô-đun, thư viện, logic nghiệp vụ ).
Các tính chất đặc trưng của hệ thống SOA.
- Phân tán (Distributed Nature): Các dịch vụ có thể được triển khai tại các vị trí khác nhau về mặt vật lý hoặc mạng nhưng vẫn tương tác được với nhau như trong cùng một hệ thống.
Hệ thống SOA hỗ trợ kiểu kiến trúc hướng sự kiện (EDA), trong đó các dịch vụ được kích hoạt dựa trên sự kiện hoặc thông điệp phát sinh Kiến trúc này giúp các ứng dụng phản ứng nhanh chóng và linh hoạt hơn trước các thay đổi, tăng hiệu quả trong xử lý dữ liệu theo thời gian thực Việc triển khai kiến trúc hướng sự kiện còn giúp tối ưu hóa phản hồi của hệ thống và nâng cao khả năng mở rộng, phù hợp với nhu cầu phát triển của doanh nghiệp hiện nay.
- Tính lỏng lẻo trong liên kết (Loose Coupling)
Các dịch vụ trong SOA chỉ biết đến nhau thông qua hợp đồng hoặc giao diện, không biết chi tiết nội bộ của nhau.
Điều này giúp thay thế, cập nhật hoặc mở rộng dịch vụ dễ dàng.
Khả năng mở rộng (Scalability) là yếu tố quan trọng của hệ thống, cho phép mở rộng theo chiều ngang bằng cách tăng số lượng dịch vụ hoặc máy chủ mà không làm ảnh hưởng đến toàn bộ kiến trúc Điều này đảm bảo hệ thống luôn linh hoạt và có khả năng đáp ứng tốt nhu cầu phát triển ngày càng tăng của doanh nghiệp.
WEB SERVICE
1.2.1 Tổng quan về Web service
Web Service (dịch vụ web) là một hệ thống phần mềm cho phép các ứng dụng khác nhau giao tiếp và trao đổi dữ liệu với nhau thông qua mạng, sử dụng các giao thức và chuẩn mở như HTTP, XML, SOAP, hoặc REST.
Web Service đóng vai trò là cầu nối hiệu quả giữa các hệ thống phần mềm khác nhau, giúp tích hợp và giao tiếp linh hoạt giữa các ứng dụng trên nhiều nền tảng, ngôn ngữ và công nghệ khác nhau Đặc điểm của Web Service là khả năng trao đổi dữ liệu một cách tiêu chuẩn, định dạng nhẹ, dễ mở rộng và dễ tích hợp vào các hệ thống hiện tại, mang lại sự linh hoạt tối đa cho doanh nghiệp trong quá trình phát triển phần mềm.
Hoạt động qua mạng (Internet hoặc Intranet).
Sử dụng chuẩn mở: như HTTP, XML, SOAP, WSDL, UDDI…
Không phụ thuộc nền tảng và ngôn ngữ lập trình.
Giao tiếp dạng thông điệp: dữ liệu trao đổi thường ở dạng XML hoặc JSON.
Tương tác thông qua giao diện mô tả rõ ràng (WSDL trong SOAP WebServices hoặc URL trong RESTful).
1.2.2 Các thành phần chính trong Web Service
Service Provider (Nhà cung cấp dịch vụ)
- Là nơi triển khai và cung cấp dịch vụ ra bên ngoài.
- Công bố dịch vụ qua mô tả WSDL (nếu dùng SOAP) hoặc tài liệu API (nếu dùng REST).
Service Consumer (Người sử dụng dịch vụ)
- Là hệ thống hay ứng dụng gọi dịch vụ để thực hiện chức năng nhất định.
- Có thể là website, app di động, hoặc hệ thống backend khác.
Service Registry (Bộ đăng ký dịch vụ)
- Là nơi lưu trữ và cho phép tìm kiếm dịch vụ.
1.2.3 Các loại Web Service phổ biến
SOAP Web Service (Simple Object Access Protocol)
Sử dụng chuẩn SOAP để gửi/nhận dữ liệu dưới dạng XML.
Mô tả dịch vụ bằng WSDL (Web Services Description Language).
Hỗ trợ nhiều tính năng nâng cao: bảo mật, giao dịch, thông điệp phức tạp.
Phù hợp cho các hệ thống lớn, yêu cầu tính nghiêm ngặt và độ tin cậy cao.
RESTful Web Service (Representational State Transfer)
Giao tiếp thông qua HTTP (GET, POST, PUT, DELETE).
Dữ liệu thường trao đổi dưới dạng JSON hoặc XML.
Dễ sử dụng, hiệu năng tốt, phổ biến trong ứng dụng web và mobile hiện đại.
Ít phức tạp hơn SOAP, dễ tích hợp và phát triển nhanh.
1.2.4 Quy trình hoạt động của Web Service
- Nhà cung cấp dịch vụ xây dựng và công bố dịch vụ qua WSDL (SOAP) hoặc tài liệu API (REST).
- Người dùng dịch vụ tìm kiếm (qua Service Registry nếu có) hoặc gọi trực tiếp đến địa chỉ dịch vụ.
- Dữ liệu được truyền qua HTTP dưới dạng thông điệp XML/JSON.
- Web Service xử lý yêu cầu, trả kết quả về cho client.
1.2.5 Lợi ích của Web Service
- Khả năng tương tác cao giữa các hệ thống khác nhau.
- Tích hợp hệ thống dễ dàng và tiết kiệm chi phí.
- Tái sử dụng dịch vụ trong nhiều ứng dụng khác nhau.
- Hỗ trợ điện toán đám mây và mô hình phần mềm dịch vụ (SaaS).
- Dễ phát triển, kiểm thử và triển khai.
1.2.6 Ứng dụng thực tế của Web Service
- Các cổng thanh toán điện tử như PayPal, VNPAY tích hợp qua API.
- Dịch vụ xác thực qua Google, Facebook OAuth.
- Giao tiếp giữa các module nội bộ trong hệ thống ERP, CRM.
- Hệ thống đặt vé máy bay, khách sạn kết nối qua các Web Service của đối tác.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
GIỚI THIỆU VÀ MÔ TẢ BÀI TOÁN
Mô tả: Ứng dụng mobile hỗ trợ quản lý bán sách cho cửa hàng, bao gồm các chức năng như: quản lý kho sách, bán hàng, hóa đơn, khách hàng, nhân viên… Người dùng chính là nhân viên và quản lý cửa hàng.
Giảm thiểu thao tác thủ công (ghi sổ sách).
Nâng cao hiệu quả bán hàng và quản lý tồn kho.
Hỗ trợ tìm kiếm sách và thống kê doanh thu.
ĐẶC TẢ YÊU CẦU CỦA HTTT QUẢN LÝ
Quản lý sách: thêm, sửa, xóa, tìm kiếm.
Quản lý khách hàng: thêm, sửa, xóa thông tin khách hàng.
Tạo hóa đơn bán hàng.
Tính tổng tiền và in/ghi nhận hóa đơn.
Quản lý nhân viên đăng nhập ứng dụng.
Xem báo cáo doanh thu, thống kê bán hàng.
Yêu cầu phi chức năng:
Giao diện thân thiện trên điện thoại.
Bảo mật thông tin đăng nhập.
Thời gian phản hồi nhanh.
Dữ liệu được lưu trữ tập trung trên máy chủ (hoặc cloud).
SƠ ĐỒ PHÂN RÃ CHỨC NĂNG
Hình 2.1Sơ đồ phân rã chức năng
SƠ ĐỒ LUỒNG DỮ LIỆU
Hình 2.2 Sơ đồ người dùng
Hình 2.3 Sơ đồ quản trị viên
PHÂN TÍCH DỮ LIỆU
Người dùng Nhân viên bán hàng sử dụng hệ thống để tạo đơn hàng, tính tiền, in hóa đơn.
Quản trị viên Người quản lý dữ liệu sách và theo dõi báo cáo bán hàng.
Bảng 2.1 Bảng thực thể bên ngoài
Tên tiến trình Mô tả Đăng nhập / Đăng xuất Kiểm tra thông tin đăng nhập, xác thực người dùng
Quản lý đơn hàng Tạo đơn hàng, tính tiền, lưu hóa đơn vào cơ sở dữ liệu
Quản lý sách Quản trị viên thực hiện thêm, sửa, xóa thông tin sách
Báo cáo Sinh báo cáo doanh thu và thống kê sách bán chạy từ dữ liệu hóa đơn
Bảng 2.2 Các tiến trình xử lý
Tên kho dữ liệu Mô tả
CSDL Đơn hàng Lưu thông tin đơn hàng đã được tạo: ngày, sản phẩm, người tạo, số lượng
CSDL Hóa đơn Lưu hóa đơn sau khi đơn hàng được tính tiền hoàn tất
CSDL Sách Danh mục sách đang bán: mã sách, tên, thể loại, giá bán, tồn kho
Bảng 2.3 Bảng kho dữ liệu
Tên dòng dữ liệu Nguồn Đích Mô tả truyền tải
Thông tin đăng nhập Người dùng Đăng nhập Gồm tài khoản và mật khẩu để xác thực người dùng
Thông tin đơn hàng Người dùng Quản lý đơn hàng Thông tin sách, số lượng, khách hàng
Sách Thanh toán Truy vấn thông tin sách để tính tổng hóa đơn
Hóa đơn đã tính Thanh toán Lưu hóa đơn Hóa đơn sau khi tính xong
Hóa đơn đầu ra Lưu hóa đơn CSDL Hóa đơn Lưu thông tin hóa đơn đã hoàn tất
Quản trị viên Quản lý sách Thực hiện thêm/sửa/xóa sách
Dữ liệu sách cập nhật
Quản lý sách CSDL Sách Ghi nhận các thay đổi thông tin sách
Yêu cầu báo cáo Quản trị viên Báo cáo Lọc báo cáo theo ngày, tháng, hoặc sản phẩm
Kết quả báo cáo doanh thu
CSDL Hóa đơn Báo cáo Truy xuất doanh thu
Kết quả thống kê sách bán chạy
CSDL Sách Báo cáo Truy xuất số lượng bán để thống kê
Bảng 2.4 Bảng dòng dữ liệu
THIẾT KẾ CƠ SỞ DỮ LIỆU
Tên trường Kiểu dữ liệu Mô tả
_id ObjectId Khóa chính tự sinh
Tên đăng nhập, duy nhất password String Mật khẩu (đã mã hoá hoặc plain-text tuỳ implementation) fullname String Họ và tên đầy đủ address String Địa chỉ người dùng phone String Số điện thoại status String Trạng thái tài khoản (Active,
Inactive, …) createdAt Date Thời điểm tạo bản ghi updatedAt Date Thời điểm cập nhật gần nhất
Tên trường Kiểu dữ liệu Mô tả
_id ObjectId Khóa chính tự sinh productname String Tên sản phẩm image String URL hình ảnh sản phẩm author String Tác giả / nhà xuất bản (tuỳ domain) description String Mô tả ngắn về sản phẩm price Number Giá bán (đơn vị VND) cateID String Mã hoặc tên danh mục (Đời sống, Truyện, Học thuật, …) stock Number Số lượng tồn kho status String Tình trạng (Còn hàng, Hết hàng) createdAt Date Thời điểm thêm sản phẩm updatedAt Date Thời điểm cập nhật lần cuối
Tên trường Kiểu dữ liệu Mô tả
_id ObjectId Khóa chính tự sinh username String Khóa ngoại liên kết đến
Users.username status String Trạng thái đơn hàng (Chờ xác nhận, Đã giao hàng,
…) totalAmount Number Tổng giá trị đơn hàng
(VND) orderDate Date Ngày đặt hàng createdAt Date Thời điểm tạo đơn updatedAt Date Thời điểm cập nhật lần cuối
Tên trường Kiểu dữ liệu Mô tả
This article defines the structure of an order detail in a database, highlighting key fields such as a unique primary key (ID) for each record, which ensures data integrity It emphasizes the importance of foreign keys, specifically orderId referencing the Orders collection and productId linking to the Products collection, to establish relational connections The quantity field captures the number of products in the order, while unitPrice records the price at the time the order was placed; the total amount is calculated by multiplying quantity by unitPrice Additionally, timestamp fields like createdAt and updatedAt track when the order details were added and last modified, ensuring accurate historical data Incorporating these elements enhances data consistency and supports efficient order management.
Tên trường Kiểu dữ liệu Mô tả
_id ObjectId Khóa chính tự sinh username String Khóa ngoại liên kết đến
Users.username productID ObjectId Khóa ngoại liên kết đến
Products._id createdAt Date Thời điểm thêm sản phẩm vào danh sách yêu thích updatedAt Date Thời điểm cập nhật lần cuối
Tên trường Kiểu dữ liệu Mô tả
_id ObjectId Khóa chính tự sinh username String Khóa ngoại liên kết đến
Users.username productID ObjectId Khóa ngoại liên kết đến
Các sản phẩm trong giỏ hàng được ghi nhận với mã số Product._id, cùng với số lượng (quantity) và thành tiền tạm tính (amount) cho từng sản phẩm Trạng thái đơn hàng (status) thể hiện qua các số 0 (chưa thanh toán) hoặc 1 (đã chuyển đơn), giúp quản lý quá trình mua hàng dễ dàng hơn Thời điểm thêm sản phẩm vào giỏ hàng (createdAt) và thời điểm cập nhật lần cuối (updatedAt) đều được ghi nhận để theo dõi hành trình mua sắm của khách hàng.
CHƯƠNG TRÌNH ỨNG DỤNG
CÁC ĐOẠN CODE CHÍNH
API đăng ký đăng nhập
API thêm sản phẩm vào giỏ hàng
API báo cáo doanh thu
ĐÁNH GIÁ CHƯƠNG TRÌNH
Cơ bản nắm được các bước xây dựng một ứng dụng di động quản lý, thực hiện đúng quy trình
Xây dựng được bố cục ứng dụng hợp lí, bước đầu thực hiện được nghiệp vụ của hệ thống.
Với thời gian hạn chế chương trình còn một số hạn chế sau:
Ứng dụng nhỏ, mang tính chất mô phỏng.
Cơ sở dữ liệu nhỏ, chức năng phân quyền chưa tối ưu.
Chưa hoàn thiện được giao diện xem chi tiết đơn hàng.
Chưa tích hợp được các hình thức thanh toán online.
Ứng dụng còn nhiều chức năng chưa sát với thực tế.
HƯỚNG PHÁT TRIỂN
Để tiếp tục phát triển đề tài này và đảm bảo ứng dụng thực tế hiệu quả, cần tiến hành các công việc cụ thể như nghiên cứu sâu hơn về chủ đề, khảo sát ý kiến người dùng, và áp dụng các phương pháp phù hợp để nâng cao chất lượng Việc này sẽ giúp hoàn thiện nội dung và mở rộng khả năng ứng dụng của đề tài trong thực tiễn.
Khắc phục, phát triển các điểm hạn chế nêu trên.
Phát triển thêm các biện pháp bảo mật.
Phân quyền và quản trị tối ưu.
Phát triển thêm chức năng báo cáo thống kê theo tháng, quý, năm,