Do đó, không phù hợp với các hệ thống được tạo ra với mục đích giao dịch, điều này có thể bỏ qua vì hệ thống môi giới chỉ giới thiệu khách hàng tớicác người cung cấp dịch vụ chứ không tr
Giới thiệu
Đặt vấn đề
Mức sống của con người ngày được nâng cao hơn, từ ban đầu chỉ là đủ ăn đủ mặc,dần trở thành ăn ngon mặc đẹp, … và giờ đó là sự tiện nghi cho mọi lứa tuổi khác nhau Hướng tới các đối tượng khác nhau, dịch vụ chăm sóc được đưa ra.
Đối tượng
Với những đứa trẻ 1-2 tuổi, bây giờ vì quan niệm bình đẳng giới mà nhiều phụ nữ muốn có công việc ngay cả khi kết hôn, điều này dẫn tới sự thiếu hụt trong chăm sóc con trẻ, dịch vụ được đưa ra ở đây là chăm sóc trẻ nhỏ 1-2 tuổi.
Với những đứa trẻ 3-5 tuổi thì sự lựa chọn chủ yếu ở đây là đưa đi nhà trẻ, nên sẽ tạm thời bỏ qua đối tượng lứa tuổi này.
Với những đứa trẻ 6 tuổi, đây là khi sắp bắt đầu bước vào lớp 1 Nên đưa ra dịch vụ chuẩn bị các kiến thức cơ bản cho trẻ trước khi vào lớp 1, gia sư tới tận nơi để dạy bảo.
Từ tầm 7-18 tuổi, đây là tuổi đi học, nên dịch vụ đưa ra ở đây là gia sư theo môn học yếu kém tại gia.
Từ 18 tuổi trở lên, đây là bậc đại học và thành niên, dịch vụ được đưa ra là gia sư theo môn học yếu kém tại bậc đại học hoặc các lớp trung tâm.
Nếu như chỉ xét theo tuổi, thì các đối tượng còn khá hẹp và chưa đủ cho một dịch vụ chăm sóc, nên ngoài xét theo tuổi, thì còn các đối tượng như: người khuyết tật, người già, người bệnh và dịch vụ chăm sóc gia đình.
Với người khuyết tật, người bệnh và người già thì có dịch vụ chăm sóc.
Với dịch vụ chăm sóc gia đình, có dọn dẹp vệ sinh và thuê người ở phục vụ hằng ngày.
Chức năng
Chia làm 3 đối tượng sử dụng: admin (quản lý), employees (nhà cung cấp) và customers (khách hàng). a Admin:
- Xóa tài khoản của khách hàng và nhà cung cấp
- Thêm sửa xóa thông tin các dịch vụ b Employee:
- Cập nhật thông tin cá nhân
- Cung cấp dịch vụ, ngừng cung cấp dịch vụ c Customer:
- Tìm kiếm dịch vụ, nhân viên
- Sử dụng dịch vụ, ngừng sử dụng dịch vụ
- Cập nhật thông tin cá nhân d Các chức năng chung:
Thiết kế sơ bộ
Front-end: ReactJS, HTML, CSS, Boostrap 4
Back-end: NodeJS (Express, GraphQL, Mongoose)
Cơ sở lý thuyết
MongoDB là một cơ sở dữ liệu hướng tài liệu mã nguồn mở được thiết kế để lưu trữ một lượng lớn dữ liệu và cũng cho phép làm việc với dữ liệu đó rất hiệu quả Nó được phân loại theo cơ sở dữ liệu NoSQL (Không chỉ SQL) vì việc lưu trữ và truy xuất dữ liệu trong MongoDB không ở dạng bảng.
Cơ sở dữ liệu MongoDB được phát triển và quản lý bởi MongoDB.Inc theo SSPL (Server Side Public License) và được phát hành lần đầu vào tháng 2 năm
2009 Nó cũng cung cấp hỗ trợ trình điều khiển chính thức cho tất cả các ngôn ngữ phổ biến như C, C ++, C # và Net, Go, Java, Node.js, Perl, PHP, Python, Motor, Ruby, Scala, Swift, Mongoid Ngày nay có rất nhiều công ty đã sử dụng MongoDB như Facebook, Nokia, eBay, Adobe, Google, v.v để lưu trữ lượng lớn dữ liệu của họ.
Nói tới sự khác biệt lớn nhất giữa noSQL và SQL chính là sự khác biệt về cách lưu trữ dữ liệu Trong khi SQL lưu trữ dữ liệu dưới dạng bảng (Tables) bao
7 gồm các cột (columns) và các trường (rows) thì noSQL lưu trữ dữ liệu dưới dạng các Tài liệu (Documents) như JSON Chính vì sự khác nhau này, mà noSQL có thể dễ dàng thay đổi cơ sở dữ liệu một cách linh hoạt, phù hợp với hệ thống Một điểm nổi trội nữa của noSQL đó là truy vấn dễ dàng và nhanh hơn SQL.
Tuy nhiên, một nhược điểm lớn của noSQL là không hỗ trợ ACID (atomicity – tính nguyên tố, consistency – tính nhất quán, isolation – tính độc lập, durability – tính bền vững) Do đó, không phù hợp với các hệ thống được tạo ra với mục đích giao dịch, điều này có thể bỏ qua vì hệ thống môi giới chỉ giới thiệu khách hàng tới các người cung cấp dịch vụ chứ không trực tiếp tham gia vào giao dịch giữa họ.
Những lợi ích nổi bật của MongoDB:
MongoDB không có khái niệm về các mối quan hệ giữa các bảng như cơ sở dữ liệu quan hệ.
Giảm thiểu số lượng schema - MongoDB là một cơ sở dữ liệu tài liệu trong đó một bộ sưu tập chứa các tài liệu khác nhau Số lượng trường, nội dung và kích thước của tài liệu có thể khác nhau giữa các tài liệu.
Cấu trúc của một đối tượng duy nhất là rõ ràng.
Không có liên kết phức tạp.
Khả năng truy vấn sâu MongoDB hỗ trợ các truy vấn động trên tài liệu bằng ngôn ngữ truy vấn dựa trên tài liệu gần như mạnh mẽ như SQL.
Dễ mở rộng quy mô - MongoDB rất dễ mở rộng quy mô.
Chuyển đổi / ánh xạ các đối tượng ứng dụng sang các đối tượng cơ sở dữ liệu không cần thiết.
Sử dụng bộ nhớ trong để lưu trữ tập hợp làm việc (cửa sổ), cho phép truy cập dữ liệu nhanh hơn. f NodeJS:
Node.js là một nền tảng phía máy chủ được xây dựng trên Công cụ
JavaScript của Google Chrome (V8 Engine) Node.js được phát triển bởi Ryan Dahl vào năm 2009.
Node.js là một nền tảng được xây dựng dựa trên thời gian chạy JavaScript của Chrome để dễ dàng xây dựng các ứng dụng mạng nhanh và có thể mở rộng Node.js sử dụng một mô hình hướng sự kiện, non-blocking I / O mà làm cho nó nhẹ và hiệu quả, hoàn hảo cho các ứng dụng thời gian thực dữ liệu chuyên sâu mà chạy trên các thiết bị phân phối.
Node.js là một môi trường thời gian chạy đa nền tảng, mã nguồn mở để phát triển các ứng dụng mạng và phía máy chủ Các ứng dụng Node.js được viết bằng JavaScript và có thể chạy trong thời gian chạy Node.js trên OS X, Microsoft
Node.js cũng cung cấp một thư viện phong phú gồm các mô-đun JavaScript khác nhau giúp đơn giản hóa việc phát triển các ứng dụng web sử dụng Node.js ở một mức độ lớn
Node.js là một mã nguồn mở, một môi trường cho các máy chủ (server) và ứng dụng mạng.
Với việc chọn cơ sở dữ liệu noSQL có dạng JSON thì việc sử dụng Node.js là lựa chọn có thể nói là phù hợp nhất.
Cộng đồng NodeJS và JavaScript được đánh giá là một trong những cộng đồng lớn nhất hiện nay, việc sử dụng NodeJS gặp một lỗi gì đó có thể hoàn toàn sửa chữa với sự giúp đỡ cực lớn đến từ cộng đồng.
Các lợi ích nổi bật của NodeJS:
Không đồng bộ và theo hướng sự kiện - Tất cả các API của thư viện Node.js là không đồng bộ, nghĩa là không chặn Về cơ bản, nó có nghĩa là một máy chủ dựa trên Node.js không bao giờ đợi API trả về dữ liệu Máy chủ di chuyển đến API tiếp theo sau khi gọi nó và cơ chế thông báo Sự kiện của Node.js giúp máy chủ nhận được responses từ lệnh gọi API trước đó.
Tốc độ cao - Được xây dựng trên Công cụ JavaScript V8 của Google Chrome, thư viện Node.js thực thi mã rất nhanh.
Đơn luồng nhưng có khả năng mở rộng cao - Node.js sử dụng mô hình một luồng với vòng lặp sự kiện Cơ chế sự kiện giúp máy chủ
9 responses theo cách không chặn và làm cho máy chủ có khả năng mở rộng cao so với các máy chủ truyền thống tạo ra các luồng giới hạn để xử lý các yêu cầu Node.js sử dụng một chương trình luồng đơn và chương trình tương tự có thể cung cấp dịch vụ cho số lượng yêu cầu lớn hơn nhiều so với các máy chủ truyền thống như Apache HTTP Server.
Không đệm - Các ứng dụng Node.js không bao giờ đệm bất kỳ dữ liệu nào Các ứng dụng này chỉ đơn giản là xuất dữ liệu theo từng phần.
Giấy phép - Node.js được phát hành theo giấy phép MIT g Express:
Express là một trong những framework nổi tiếng nhất của Node.js, cung cấp rất nhiều đặc điểm nổi bật cho việc phát triển App Web.
Một trong những điểm mạnh của Express là tạo ra APIs một cách dễ dàng và nhanh chóng thông qua vô số các phương thức tiện ích HTTP và các Middleware tùy ý sử dụng. h GraphQL:
Quy trình nghiệp vụ
Admin tạo ra các dịch vụ cho các người cung cấp có thể cung cấp dịch vụ theo khả năng của mình, các khách hàng có thể tìm kiếm các dịch vụ theo yêu cầu.
Khi người dùng có yêu cầu thay đổi thông tin cá nhân thì người dùng tự cập nhật thông tin cá nhân theo ý mình.
Sau khi đăng nhập, người dùng có thể:
Khi muốn xem các dịch vụ có những ai đang cung cấp và sử dụng cùng thông tin liên hệ của họ.
Khi khách hàng muốn sử dụng dịch vụ nào đó, thì vào trang Using và bấm Use, thông tin khách hàng sẽ được đưa lên và những nhà cung cấp thấy phù hợp sẽ liên hệ.
Khi khách hàng muốn ngừng tìm nhà cung cấp của dịch vụ nào đó, thì vào trang Using và bấm Stop using, thông tin khách hàng sẽ được đưa ra khỏi danh sách những khách hàng đang sử dụng dịch vụ.
Khi nhà cung cấp muốn cung cấp dịch vụ nào đó, thì vào trang Providing và bấm Provide, thông tin nhà cung cấp sẽ được đưa lên và những khách hàng thấy phù hợp sẽ liên hệ.
Khi nhà cung cấp muốn ngừng tìm khách hàng của dịch vụ nào đó, thì vào trang Providing và bấm Stop Providing, thông tin nhà cung cấp sẽ được đưa ra khỏi danh sách những nhà cung cấp đang cung cấp dịch vụ.
Khi người dùng quên mật khẩu, người dùng sẽ nhận được mật khẩu mới qua email họ đã đăng ký và dùng mật khẩu này để đăng nhập. Đối với những người dùng đã quên mật khẩu của mình, có thể sử dụng chức năng quên mật khẩu để nhận lại mật khẩu mới qua email đã đăng ký của mình.
Phân tích và thiết kế hệ thống
Sơ đồ chức năng
Hình 7 Sơ đồ phân cấp chức năng
Biểu đồ luồng dữ liệu mức khung cảnh
Hình 8 Biểu đồ luồng dữ liệu mức khung cảnh
Biểu đồ luồng dữ liệu mức đỉnh
Hình 9 Biểu đồ luồng dữ liệu mức đỉnh
Biểu đồ dữ liệu mức dưới đỉnh
Hình 10 Biểu đồ mức dưới đỉnh của Quản Lý Tài Khoản
Hình 11 Biểu đồ mức dưới đỉnh của Quản Lý Dịch Vụ
Hình 12 Biểu đồ mức dưới đỉnh của Tìm Kiếm
Hình 13 Biểu đồ mức dưới đỉnh của Thống Kê
Sơ đồ thực thể liên kết
Hình 14 Sơ đồ thực thể liên kết
Các thực thể của hệ thống gồm:
Tên thuộc tính Kiểu dữ liệu Null Mô tả
_id ID không id username String không Tên tài khoản password String không Mật khẩu name String không Tên phoneNumber String không Số điện thoại address String không Địa chỉ email String không Tài khoản email
Tên thuộc tính Kiểu dữ liệu Null Mô tả
_id ID không id username String không Tên tài khoản password String không Mật khẩu name String không Tên phoneNumber String không Số điện thoại address String không Địa chỉ email String không Tài khoản email idCard String không CMND/ CCCD certificates String có Chứng chỉ
Tên thuộc tính Kiểu dữ liệu Null Mô tả
_id ID không Id name String không Tên dịch vụ objects String không Đối tượng details String không Chi tiết
Tên thuộc tính Kiểu dữ liệu Null Mô tả
_id ID không id username String không Tên tài khoản password String không Mật khẩu