Danh sách các thuộc tính bảng Inn

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ các dịch vụ liên quan ở trọ (Trang 48)

Bảng dữ liệu Logistic: Lưu thông tin dịch vụ vận chuyển

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

37

biệt các dịch vụ vận chuyển với nhau

2 Name String Tên dịch vụ vận

chuyển

3 Price String Giá dịch vụ vận

chuyển 4 Area Array Danh sách vùng hoạt động của dịch vụ vận chuyển 5 City Number Tỉnh/thành phố nơi dịch vụ vận chuyển hoạt động 6 District Number Quận/Huyện nơi dịch vụ vận chuyển hoạt động

7 ExactAddress String Địa chỉ của dịch vụ

vận chuyển 8 FullAdressObject Object Địa chỉ của dịch vụ vận chuyển dưới dạng Object 9 Image String Hình ảnh dịch vụ vận chuyển

10 OwnerId UUID Khóa ngoại

Khóa ngoại đến bảng User để xác định ai là chủ dịch vụ vận chuyển

38 11 Contact String

Số điện thoại liên hệ với dịch vụ vận chuyển

12 CreatedAt Datetime Ngày tạo dịch vụ vận

chuyển Bảng 2.11: Danh sách các thuộc tính bảng Logistic

Bảng dữ liệu Roommate: Lưu thơng tin bài đăng tìm người ở ghép

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính để phân biết các bài đăng tìm người ở ghép với nhau

2 Content String Nội dung bài đăng

3 Age String Độ tuổi tìm kiếm

4 City String Tỉnh/thành phố tìm

kiếm

5 District String Quận/huyện tìm kiếm

6 Gender Number Giới tính cần tìm

7 Job Number Công việc của người

ở chung mong muốn

8 HaveInnContent Boolean

Có thơng tin trọ bổ sung hay không. Đối với những người đã th phịng và tìm kiếm người ở chung.

39

9 InnAddress String Địa chỉ trọ có sẵn

10 InnArea Number Diện tích phịng có

sẵn

11 InnDeposit Number Tiền đặt cọc

12 InnElectricPrice Number Tiền điện

13 InnWaterPrice Number Tiền nước

14 InnPrice Number Tiền trọ

15 InnName Number Tên trọ

16 InnOwner UUID Khóa ngoại

Khóa ngoại đến bảng User để biết ai là chủ trọ

17 OwnerID UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người đăng

18 IsActive Boolean Trạng thái bài đăng

19 CreatedAt Datetime Ngày đăng

Bảng 2.12: Danh sách các thuộc tính bảng Roommate

Bảng dữ liệu Houseware: Lưu thông tin bài đăng bán đồ dùng cũ

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính để phân biệt các bài đăng bán đồ dùng cũ với nhau

2 Content String Nội dung bài đăng

40

4 District String Quận/huyện bán

5 IsActive Boolean Trạng thái bài đăng

6 CreatedAt Datetime Ngày đăng bài

Bảng 2.13: Danh sách các thuộc tính bảng Houseware

Bảng dữ liệu Message: Lưu thông tin cuộc trị chuyện

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 SendBy UUID Khóa ngoại

Khóa ngoại liên kết đến người dùng là người gửi tin nhắn.

2 ReceivedBy UUID Khóa ngoại

Khóa ngoại liên kết đến người dùng là người nhận tin nhắn

3 Text String Nội dung tin nhắn

4 SendAt Datetime Thời gian gửi

Bảng 2.14: Danh sách các thuộc tính bảng Message

Bảng dữ liệu Item: Lưu thơng tin các đồ dùng cũ được bán trong bài đăng bán đồ

dùng cũ

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính Khóa chính để phân

biệt các đồ dùng cũ.

2 Description String Mô tả cho đồ dùng cũ

3 Price Number Giá của đồ dùng cũ

4 HousewareId UUID Khóa ngoại Khóa ngoại liên kết đến bảng Houseware

41

để biết đồ dùng này thuộc bài đăng nào Bảng 2.15: Danh sách các thuộc tính bảng Item

Bảng dữ liệu Review: Lưu thơng tin các bài đánh giá trọ hoặc dịch vụ vận chuyển.

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính phân biệt giữa các Review khác nhau

2 PostId UUID Khóa ngoại Liên kết tới bài post

3 Text String Nội dung bài review

4 Star Number Số sao được đánh giá

5 SendAt Datetime Cho biết thời gian viết

đánh giá

6 SendBy UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người viết đánh giá

7 Type String Loại bài post

Bảng 2.16: Danh sách các thuộc tính bảng Review

Bảng dữ liệu Comment: Lưu thơng tin bình luận cho bài đăng tìm người ở ghép và

bài đăng bán đồ cũ.

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính phân biệt giữa các bình luận khác nhau

42

3 Text String Nội dung bình luận

4 SendAt Datetime Cho biết thời gian viết

bình luận

5 SendBy UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người viết bình luận

6 Type String Loại bài post

Bảng 2.17: Danh sách các thơng tin thuộc tính bảng Comment

Bảng dữ liệu Report: Lưu thông tin báo cáo vi phạm.

STT Thuộc tính Kiểu dữ liệu Ràng buộc Ý nghĩa

1 Id UUID Khóa chính

Khóa chính phân biệt giữa các báo cáo khác nhau

2 PostId UUID Khóa ngoại Liên kết tới bài post

3 Reason Object Lý do báo cáo

4 SendAt Datetime Cho biết thời gian viết

bình luận

5 SendBy UUID Khóa ngoại

Liên kết đến bảng User để biết ai là người viết bình luận

6 Type String Loại bài post

43

2.2.3. Công nghệ sử dụng 2.2.3.1. React Native 2.2.3.1. React Native

Hình 2.16: Logo React native7

Giới thiệu:

React Native là một Framework do Facebook phát hành. Nó cho phép xây dựng ứng dụng đa nền tảng cho cả 2 nền tảng di động phổ biến nhất hiện nay là Android và IOS.

Được Facebook giới thiệu vào năm 2015, với việc sử dụng ngôn ngữ JavaScript và cách chỉnh sửa giao diện tương tự CSS, những nhà phát triển Web rất dễ dàng tiếp cận với React Native. Ngồi ra, với một cộng đồng đơng đảo và nhiều thư viện hỗ trợ, những nhà phát triển mới có thể dễ dàng tìm hiểu về cơng nghệ này. Đến nay, React Native là một trong những Framework phổ biến nhất để phát triển ứng dụng di động đa nền tảng.

Sử dụng trong đề tài:

Ứng dụng được xây dựng từ React Native.

44

2.2.3.2. Firebase

Hình 2.17: Logo Firebase8

Giới thiệu:

Firebase là một nền tảng do Google phát triển để giúp phát triển nhanh chóng các ứng dụng chất có lượng cao. Từ việc định danh người dùng đến lưu trữ file và cung cấp dịch vụ cloud database, Firebase đáp ứng hầu hết các yêu cầu cần thiết có trong một ứng dụng. Trong nền tảng firebase, có nhiều dịch vụ nổi tiếng có thể kể đến như: Cloud Firestore, Storage, Cloud Functions, Realtime Database, Firebase Authentication, … Các dịch vụ được Firebase cung cấp thường được miễn phí trong một giới hạn sử dụng nhất định. Giới hạn này khá lớn nên các ứng dụng tầm vừa và nhỏ có thể giảm rất nhiều chi phí triển khai.

Trong đề tài cũng có sử dụng những dịch vụ mà Firebase cung cấp nhằm giảm chi phí và đơn giản hóa q trình phát triển.

a. Cloud Firestore

“Cloud Firestore là một cơ sở dữ liệu linh hoạt, có thể mở rộng để phát triển thiết bị di động, web và máy chủ từ Firebase và Google Cloud.”9 Đây là một NoSQL giúp chúng ta dễ dàng lưu trữ dữ liệu cho ứng dụng của mình. Với tính năng Offline Support nó cho phép chúng ta sử dụng ứng dụng ngay cả khi offline, những dữ liệu được thêm mới hoặc chỉnh sửa sẽ được cập nhật ngay khi chúng ta online trở lại. Bên cạnh đó, nó hỗ trợ truy vấn dữ liệu đa dạng và nhanh chóng.

Cloud Firestore lưu trữ dữ liệu thành các collection, các collection này tương tự như bảng ở trong SQL. Mỗi collection sẽ chứa nhiều document, mà mỗi document là một bản ghi của dữ liệu. Trong mỗi document, data sẽ được lưu dưới dạng key –

8Nguồn: https://firebase.google.com/

45

value. Firebase hỗ trợ nhiều kiểu dữ liệu cho value như string, number, array, geo hay một object dữ liệu khác.

Hình 2.18: Hình ảnh cách lưu trữ dữ liệu trên Cloud Firestore10Cloud Firestore là database lưu trữ hầu hết các dữ liệu của đề tài. Cloud Firestore là database lưu trữ hầu hết các dữ liệu của đề tài. b. Firebase Authentication

Hình 2.19: Hình ảnh các cách xác thực bằng Firebase Authentication11

Firebase Authentication giúp ứng dụng xác thực người dùng dễ dàng hơn bằng những bên cung cấp trình xác thực như Google, Facebook, Gmail hay cả số điện thoại. Ngồi ra, nhà phát triển cịn có thể tự tạo ra cách xác thực cho ứng dụng thông qua Firebase Authentication. Điều này, giúp nhà phát triển có thể cài đặt các hình

10 Nguồn: https://firebase.google.com/docs/firestore

46

thức đăng nhập cho ứng dụng một cách dễ dàng và nhanh chóng.

Đề tài sử dụng hai phương pháp xác thực mà firebase cung cấp là xác thực bằng Facebook và xác thực bằng số điện thoại.

c. Firebase Storage

Firebase Storage cho phép lưu trữ file được đăng tải bởi người dùng trong ứng dụng. Đây là nơi lưu trữ lý tưởng cho những ứng dụng có lưu trữ file hình ảnh, word, pdf, … từ phía người dùng.

Hình ảnh trọ, dịch vụ vận chuyển hay những hình ảnh khác trong ứng dụng được lưu trữ tại Firebase Storage.

d. Realtime Database

“Lưu trữ và đồng bộ dữ liệu với cơ sở dữ liệu đám mây NoSQL của chúng tôi. Dữ liệu được đồng bộ hóa trên tất cả các ứng dụng khách trong thời gian thực và vẫn có sẵn khi ứng dụng của bạn ngoại tuyến.”12 Dữ liệu trong Realtime

Database được lưu trữ dưới dạng JSON, một khi có bất kỳ thay đổi nào ở một người dùng, thì những người dùng cịn lại cũng nhận được thơng tin thay đổi. Tính năng này có thể dùng cho những ứng dụng chat, hoặc những ứng dụng yêu cầu cập nhật thông tin liên tục theo thời gian thực.

Tận dụng tính năng thời gian thực, đề tài đã áp dụng để lưu một số thông tin về tin nhắn, hoặc trạng thái của người dùng online hay offline.

2.2.3.3. Google Maps Platform

Hình 2.20: Hình ảnh Google Maps Platform13

Giới thiệu:

Google Maps Platform được phát triển bởi Google. Đây là platform chuyên cung

12 Nguồn: https://firebase.google.com/docs/database

47

cấp những API về bản đồ. Một số API được cung cấp như:

- Maps: Cho phép hiển thị bản đồ và các thao tác với bản đồ như chọn một điểm, xoay bản đồ, hay phóng to thu nhỏ bản đồ.

- Routes: Chỉ đường đi từ điểm A tới điểm B hoặc cho phép tính khoảng cách đường đi giữa 2 điểm.

- Places: Cho phép nhà phát triển tìm kiếm và sử dụng thơng tin của hơn 100 triệu nơi khác nhau trên thế giới. Nhà phát triển cũng có thể tìm kiếm vị trí của một điểm có trong map.

Sử dụng trong đề tài:

Đề tài sử dụng một số API của Google Maps Platform để hiển thị bản đồ bên trong ứng dụng và người dùng có thể tìm trọ dựa trên một vị trí cụ thể.

2.2.3.4. Algolia

Hình 2.21: Logo dịch vụ algolia14

Giới thiệu:

Algolia là một dịch vụ web chuyên cho việc tìm kiếm. Algolia giúp cho việc tìm kiếm trở nên linh hoạt và đơn giản hơn bằng những API, và thư viện được ban hành. Algolia có thể tìm full-search text bằng những từ khóa được cung cấp. Bên cạnh đó, nó cịn hỗ trợ lọc kết quả trên các trường tìm kiếm. Một điểm nổi bật khác, Algolia hỗ trợ tìm kiếm kết quả dựa trên vị trí được cung cấp, nó giúp cho những ứng dụng có thao tác với bản đồ dễ dàng tìm kiếm những kết quả mong muốn.

Sử dụng trong đề tài:

Các yêu cầu tìm kiếm nâng cao như tìm trọ dựa trên vị trí hay full search text thì firebase khơng đáp ứng được. Do đó, Algolia được sử dụng để giúp thực hiện các

48 truy vấn nâng cao dễ dàng hơn.

2.2.3.5. Thư viện React Native Firebase Giới thiệu: Giới thiệu:

React Native Firebase là một thư viện hỗ trợ các thao tác với Firebase cho React Native. Thư viện này giúp cho việc kết nối, truy vấn đến firebase trở nên dễ dàng hơn.

Sử dụng trong đề tài:

Đề tài sử dụng React Native Firebase để kết nối tới Firebase và thao tác với những dịch vụ được Firebase cung cấp.

2.2.3.6. Thư viện React Redux Giới thiệu: Giới thiệu:

React Redux là một thư viện quản lý trạng thái cho ứng dụng xây dựng bằng ReactJS hoặc React Native. Thư viện này giúp các thành phần trong ứng dụng giao tiếp dữ liệu dễ dàng hơn. Ngoài ra, với việc sử dụng React Redux, luồng dữ liệu của ứng dụng trở nên tường minh hơn.

Sử dụng trong đề tài:

49

2.2.4. Thiết kế kiến trúc hệ thống 2.2.4.1. Kiến trúc tổng thể 2.2.4.1. Kiến trúc tổng thể

Hình 2.22: Kiến trúc hệ thống tổng thể

- Google Maps Platform: Được sử dụng để hiển thị bản đồ, và các thao tác

trên bản đồ của ứng dụng.

- Algolia: Dùng để mở rộng khả năng tìm kiếm cho ứng dụng như full text

search, tìm kiếm dựa trên vị trí, …

- Facebook Server: Hỗ trợ đăng nhập bằng Facebook cho ứng dụng.

- Firestore: Là database để lưu trữ dữ liệu cho ứng dụng.

50 thực.

- Firebase Authentication: Dùng để xác thực người dùng trong ứng dụng.

Thông qua số điện thoại hoặc Facebook Provider để cung cấp chức năng login trong ứng dụng.

- Firebase Storage: Để lưu trữ file được người dùng tải lên. Chủ yếu là các

file hình ảnh.

2.2.4.2. Kiến trúc ứng dụng

Hình 2.23: Kiến trúc ứng dụng di động - View: Hiển thị giao diện cho người dùng. - View: Hiển thị giao diện cho người dùng.

- Hook: Chứa dữ liệu cho View và thực hiện các thao tác kiểm tra, cập nhật

dữ liệu cho View.

- Action: Gửi một hành động để yêu cầu thực thi một nhiệm vụ như lấy dữ

liệu, xóa dữ liệu.

- Store: Là nơi chứa dữ liệu tạm thời, cục bộ của ứng dụng. Các dữ liệu được

51 cầu.

o Saga: Lắng nghe những hành động được gửi tới và thực hiện hành

động.

o Reducer: Có vai trị như một phễu lọc để cập nhật trạng dữ liệu trong

State.

o State: Để chứa dữ liệu.

- Service: Có nhiệm vụ thực hiện các request để gọi các API Service hoặc

thao tác với database.

- Database: Chứa dữ liệu của hệ thống ứng dụng.

- API Service: Là những API được cung cấp thêm bởi những bên thứ 3 như

Facebook, Google Maps Platform.

2.2.5. Thiết kế giao diện

2.2.5.1. Danh sách màn hình

STT Tên màn hình Mơ tả chức năng

1 Đăng nhập Cho phép người dùng đăng nhập vào hệ thống

2 Đăng nhập bằng số điện thoại

Hiển thị yêu cầu nhập số điện thoại

3 Xác nhận mã xác thực

Cho phép người dùng nhập mã xác thực được gửi về số điện thoại trong trường hợp đăng nhập bằng số điện thoại

52 nhân

5 Tìm trọ Hiển thị danh sách trọ và cho phép người dùng tìm kiếm trọ

6 Chi tiết trọ Hiển thị thông tin chi tiết nhà trọ cho người dùng

7 Tạo trọ Cho phép người dùng tạo mới một trọ

8 Cập nhật hoặc xóa trọ Cho phép người dùng cập nhật hoặc xóa trọ đã tạo

9 Hiển thị trọ lên bản đồ

Hiển thị danh sách trọ lên bản đồ và cho phép người dùng tìm kiếm dựa trên địa chỉ và bán kính tìm kiếm

10 Danh sách trọ đã đăng Hiển thị danh sách trọ mà người dùng đã tạo

11 Tìm dịch vụ vận chuyển Cho phép người dùng tìm kiếm dịch vụ vận chuyển

12 Chi tiết dịch vụ vận chuyển Hiển thị thông tin chi tiết dịch vụ vận chuyển

13 Danh sách dịch vụ vận chuyển đã đăng

Hiển thị danh sách dịch vụ vận chuyển mà người dùng đã tạo

14 Tạo dịch vụ vận chuyển Cho phép người dùng thêm mới một dịch vụ vận chuyển

53

vận chuyển dịch vụ vận chuyển

16 Tìm người ở ghép Cho phép người dùng tìm người ở ghép

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ các dịch vụ liên quan ở trọ (Trang 48)

Tải bản đầy đủ (PDF)

(78 trang)