Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Kiếm tiền với Nội dung không sử dụng:Mô hình Dữ liệu Nền kinh tế Chia sẻ

Không có nhiều khả năng bạn đã bỏ lỡ toàn bộ ý tưởng về nền kinh tế chia sẻ - cho dù bạn có muốn hay không. Phổ biến bởi các công ty như Airbnb, Uber, Lyft và nhiều công ty khác, nó cho phép mọi người kiếm một số tiền mặt bằng cách cho thuê những thứ không sử dụng của họ. Hãy xem mô hình dữ liệu đằng sau một ứng dụng như vậy.

Có một phòng trống? Đăng ký với Airbnb và kiếm thêm tiền khi thuê nó. Có một chiếc xe hơi và một số thời gian rảnh rỗi? Trở thành tài xế Uber. Và nó diễn ra - ý tưởng đằng sau những công ty này và nhiều công ty khác gần như giống nhau. Đó là tất cả về việc chia sẻ tài nguyên với (hầu hết) người lạ, với đặc quyền cho cả hai bên. Chủ sở hữu nhận được tiền cho tài sản không sử dụng của họ, trong khi khách hàng thường nhận được một thỏa thuận tốt; đây sẽ là một tình huống đôi bên cùng có lợi.

Tất nhiên, chúng tôi cần một nền tảng để kết nối chủ sở hữu với khách hàng và theo dõi các chi tiết quan trọng. Hôm nay, chúng tôi sẽ trình bày một mô hình dữ liệu có thể quản lý nhiệm vụ. Ngồi xuống ghế và tận hưởng chuyến đi thông qua mô hình dữ liệu nền kinh tế chia sẻ.

Chúng ta cần gì trong Mô hình dữ liệu của mình?

Ý tưởng cho thuê tài sản khi chúng tôi không sử dụng có vẻ rất khôn ngoan. Thứ nhất, tài sản được sử dụng đúng mục đích của nó; thứ hai, việc cho thuê sẽ tạo ra một số loại thu nhập bổ sung. Đó có thể là tiền mặt, nhưng cũng có thể là một cuộc trao đổi (ví dụ:ai đó ở New York đổi căn hộ với ai đó ở Paris trong một tuần).

Các mô hình không dùng tiền mặt thực sự tuyệt vời và chúng thường phụ thuộc vào sự hiểu biết lẫn nhau, thiện chí và trung thực. Tuy nhiên, bài viết này sẽ tập trung vào các mô hình nền kinh tế chia sẻ yêu cầu thanh toán. Nó không lãng mạn như mô hình không dùng tiền mặt, nhưng mô hình thanh toán khá hiệu quả.

Chúng ta cần một cách rất đơn giản để một số lượng lớn các chủ sở hữu bất động sản có thể tiếp cận một lượng lớn khách hàng quan tâm và ngược lại. Đây là yêu cầu đầu tiên đối với mô hình dữ liệu của chúng tôi. Chúng tôi sẽ có tài khoản người dùng và ít nhất hai vai trò riêng biệt - chủ sở hữu và khách hàng.

Điều tiếp theo chúng ta cần là ứng dụng của mình liệt kê tất cả các thuộc tính có sẵn. Đối với Airbnb, đây sẽ là những căn hộ; đối với Uber, đây sẽ là ô tô. Bài viết này sẽ tập trung nhiều hơn vào việc cho thuê căn hộ (mô hình dữ liệu giống như Airbnb) nhưng tôi sẽ giữ cho mô hình đủ chung để có thể dễ dàng chuyển đổi mô hình này sang bất kỳ dịch vụ nền kinh tế chia sẻ nào khác.

Đối với mỗi chủ sở hữu sản phẩm, chúng tôi sẽ cần xác định vị trí nơi họ hoạt động. Đối với căn hộ, điều này là khá rõ ràng (thành phố nơi căn hộ nằm). Đối với dịch vụ vận chuyển, điều này sẽ phụ thuộc vào vị trí hiện tại của ô tô và / hoặc chủ sở hữu của nó.

Đối với mỗi thuộc tính hoặc tài nguyên, chúng tôi sẽ cần theo dõi thời gian sử dụng và yêu cầu / đặt chỗ. Điều này sẽ cho phép chúng tôi tìm các tài sản có sẵn khi có yêu cầu mới và tính toán tỷ lệ lấp đầy và giá cả. Chúng tôi cũng sẽ có thể sử dụng các chương trình khác để phân tích dữ liệu này và đưa ra các số liệu thống kê khác.

Mô hình dữ liệu




Mô hình dữ liệu bao gồm năm lĩnh vực chủ đề:

  • Quốc gia và thành phố
  • Người dùng và vai trò
  • Dịch vụ &tài liệu
  • Yêu cầu
  • Dịch vụ được cung cấp

Chúng tôi sẽ trình bày từng lĩnh vực chủ đề theo thứ tự được liệt kê.

Phần 1:Quốc gia và thành phố

Chúng ta sẽ bắt đầu với Quốc gia và thành phố môn học. Mặc dù không cụ thể cho mô hình dữ liệu này, nhưng các bảng này rất quan trọng. Các dịch vụ liên quan đến tài sản thường được định hướng theo địa lý. Mô hình của chúng tôi có liên quan chặt chẽ đến việc thuê một số loại nhà ở, vì vậy vị trí thực tế là rất quan trọng ở đây. Tất nhiên, vị trí đó thường không thay đổi. Có một số trường hợp rất đặc biệt có thể dẫn đến việc thay đổi vị trí của bất động sản, nhưng tôi sẽ coi việc ở tại vị trí mới đó là một bất động sản hoàn toàn mới.

Đối với các ứng dụng đặt xe và / hoặc tài xế như Uber, vị trí hiện tại của xe và tài xế cũng rất quan trọng. Không giống như cho thuê căn hộ kiểu Airbnb, những vị trí bất động sản này có thể thay đổi thường xuyên.

quốc gia bảng chứa danh sách các tên DUY NHẤT của các quốc gia nơi chúng tôi hoạt động. thành phố bảng chứa danh sách tất cả các thành phố nơi chúng tôi hoạt động. Sự kết hợp DUY NHẤT cho bảng này là sự kết hợp của Postal_code , city_name country_id thuộc tính.

Cả hai bảng này đều có thể chứa nhiều thuộc tính bổ sung, nhưng tôi đã cố ý bỏ qua chúng vì chúng sẽ không thêm bất kỳ giá trị nào vào mô hình này.

Phần 2:Người dùng và vai trò

Điều tiếp theo chúng ta cần làm là xác định người dùng và hành vi hoặc vai trò của họ trong ứng dụng của chúng ta. Để làm điều này, chúng tôi sẽ sử dụng ba bảng trong Người dùng &vai trò lĩnh vực chủ đề.

Danh sách tất cả người dùng có trong user_account bàn. Đối với mỗi người dùng, chúng tôi sẽ lưu trữ các thông tin chi tiết sau:

  • user_name - Tên DUY NHẤT mà người dùng đã chọn để truy cập ứng dụng của chúng tôi.
  • mật khẩu - Giá trị băm của mật khẩu do người dùng chọn.
  • first_name last_name - Họ và tên của người dùng.
  • city_id - Tham chiếu đến thành phố nơi người dùng thường ở.
  • current_city_id - Tham chiếu đến thành phố người dùng hiện đang ở đâu.
  • email - Địa chỉ email của người dùng.
  • time_inserted - Dấu thời gian khi bản ghi này được chèn vào bảng.
  • Confirm_code - Mã được tạo trong quá trình đăng ký để xác nhận địa chỉ email của người dùng.
  • time_conf Dead - Dấu thời gian khi địa chỉ email được xác nhận. Thuộc tính này chứa giá trị NULL cho đến khi thông qua xác nhận.

Người dùng sẽ có các quyền khác nhau trong ứng dụng tùy theo vai trò của họ. Cũng có thể một người dùng có thể có nhiều vai trò hoạt động cùng một lúc, ví dụ:họ có thể là chủ sở hữu của một tài sản và khách hàng của tài sản khác. Trong trường hợp đó, người dùng sẽ sử dụng các chi tiết đăng nhập giống nhau và sẽ có tùy chọn để chuyển đổi giữa các vai trò. Mỗi vai trò sẽ có màn hình riêng trong ứng dụng.

Danh sách tất cả các vai trò có thể có được lưu trữ trong role từ điển. Mỗi vai trò được định nghĩa BẤT NGỜ bởi role_name của nó . Vì đơn giản, chúng ta có thể mong đợi chỉ có hai vai trò:“chủ sở hữu tài sản” và “khách hàng”.

Một người dùng có thể có cùng một vai trò được chỉ định nhiều lần trong các khoảng thời gian khác nhau. Một trường hợp như vậy sẽ là nếu người dùng đang thuê căn hộ chưa sử dụng của họ và sau đó quyết định không thuê căn hộ của họ vì họ cần nó. Tuy nhiên, sau một vài tháng, cùng một người sử dụng đã quyết định thuê lại căn hộ của họ. Trong trường hợp này, chúng tôi sẽ hủy kích hoạt vai trò của họ và sau đó kích hoạt lại vai trò đó.

Danh sách tất cả các vai trò đã từng được chỉ định cho người dùng được lưu trữ trong has_role bàn. Đối với mỗi bản ghi trong bảng này, chúng tôi sẽ lưu trữ:

  • user_account_id - ID của người dùng có liên quan .
  • role_id - ID của role có liên quan .
  • time_from - Dấu thời gian khi vai trò này được chèn vào hệ thống.
  • time_to - Dấu thời gian khi vai trò này bị vô hiệu hóa. Điều này sẽ chứa giá trị NULL miễn là vai trò vẫn hoạt động.
  • is_active - Được đặt thành Sai khi vai trò bị vô hiệu hóa vì bất kỳ lý do gì.

Khi chèn một bản ghi mới trong bảng này, chúng ta nên kiểm tra các bản ghi chồng chéo. Điều này cho phép chúng tôi tránh làm cho cùng một vai trò có hiệu lực hai lần trong cùng một khoảng thời gian.

Phần 3:Dịch vụ và Tài liệu

Điều tiếp theo chúng ta cần xác định là các dịch vụ được cung cấp bởi người dùng. Chúng tôi cũng sẽ cần theo dõi mọi tài liệu liên quan. Để làm điều đó, chúng tôi sẽ cần các bảng trong Dịch vụ &tài liệu lĩnh vực chủ đề.

Hãy bắt đầu với thuộc tính bàn. Tài sản là bất kỳ đối tượng nào của dịch vụ của chúng tôi:nhà ở, ô tô, xe đạp, v.v. Chúng tôi có thể mong đợi rằng người dùng sẽ tự chăm sóc tài sản của họ. Đối với mỗi thuộc tính, chúng tôi sẽ cần xác định:

  • property_name - Tên màn hình cho thuộc tính đó, do người dùng chọn. Tên này được sử dụng khi hiển thị thuộc tính cho khách hàng tiềm năng trên ứng dụng. Nó phải ngắn gọn, mang tính mô tả và đặt thuộc tính đó ngoài các thuộc tính khác.
  • property_description - Văn bản miêu tả bổ sung ở dạng không có cấu trúc. Chúng ta có thể mong đợi một loạt các thông tin chi tiết ở đây - về cơ bản là mọi thứ từ kích thước của căn hộ đến việc liệu khách hàng có nhận được đồ uống chào đón khi họ đến hay không. Đồ uống chào mừng trong các dịch vụ vận chuyển ít xảy ra hơn nhiều.
  • active_from active_to - Khoảng thời gian mà thuộc tính đó hoạt động trong hệ thống của chúng tôi. active_to thuộc tính sẽ chứa giá trị NULL cho đến khi thuộc tính này bị hủy kích hoạt.
  • is_available - Một cờ biểu thị liệu thuộc tính này có khả dụng tại một thời điểm cụ thể hay không.
  • is_active - Cờ biểu thị nếu thuộc tính đó vẫn còn hoạt động trong hệ thống của chúng tôi. Giá trị của thuộc tính này sẽ được đặt thành Sai tại cùng thời điểm active_to đã được thiết lập.

Bây giờ chúng tôi sẽ chuyển sang dịch vụ từ điển. Đây là nơi chúng tôi sẽ xác định tất cả các loại dịch vụ có thể có, như “thuê dài hạn”, “thuê ngắn hạn”, “vận chuyển”, v.v. Nó chứa tên DUY NHẤT của loại dịch vụ và một mô tả bổ sung , nếu cần.

Chúng tôi sẽ giữ các thuộc tính, dịch vụ và người dùng có liên quan trong cung cấp bàn. Nó sẽ lưu trữ các khoảng thời gian khi một thuộc tính có sẵn. Trong trường hợp vận chuyển, điều này sẽ cho chúng tôi biết khi nào một chiếc xe hơi và tài xế thực sự làm việc cho công ty của chúng tôi. Trong trường hợp cho thuê căn hộ, nó sẽ cho chúng tôi biết khi nào có tài sản. Đối với mỗi bản ghi ở đây, chúng tôi sẽ có:

  • user_account_id - ID của người dùng cung cấp dịch vụ đó.
  • service_id - ID của dịch vụ loại được cung cấp.
  • property_id - Tham chiếu đến thuộc tính đã qua sử dụng.
  • time_from time_to - Khi tài sản này được sử dụng để cung cấp dịch vụ này. time_to thuộc tính sẽ chứa giá trị NULL cho đến khi bản ghi này bị hủy kích hoạt.
  • is_active - Được đặt thành Sai sau khi thuộc tính này không được sử dụng nữa hoặc khi người dùng này ngừng cung cấp dịch vụ này. Điều này được đặt cùng lúc khi time_to đã được thiết lập.

Hai bảng còn lại trong chủ đề này liên quan đến tài liệu. (Bảng user_account chỉ là bản sao của bản gốc, được sử dụng ở đây để tránh các mối quan hệ bị chồng chéo.) Công ty chúng tôi sẽ làm việc với nhiều chủ sở hữu tài sản và hầu như sẽ không có cơ hội để kiểm tra mọi thứ trực tiếp. Một cách để đảm bảo chất lượng dịch vụ là ghi chép mọi thứ đầy đủ.

Bảng đầu tiên liên quan đến tài liệu là document_type bàn. Từ điển đơn giản này chứa danh sách type_name DUY NHẤT các giá trị. Chúng tôi có thể mong đợi các giá trị như "hình ảnh tài sản" và "ID chủ sở hữu" ở đây.

Danh sách tất cả các tài liệu được lưu trữ trong document bàn. Những tài liệu này có thể liên quan đến tài khoản người dùng, thuộc tính hoặc cả hai. Đối với mỗi tài liệu, chúng tôi sẽ lưu trữ:

  • document_location - Đường dẫn đầy đủ đến tài liệu đó.
  • document_type_id - Tham chiếu đến document_type từ điển.
  • user_account_id - Tham chiếu đến user_account bàn. Thuộc tính này sẽ chỉ giữ một giá trị khi tài liệu có liên quan đến người dùng hoặc nếu tài liệu liên quan đến thuộc tính nhưng người dùng cũng sở hữu thuộc tính đó.
  • property_id - Tham chiếu đến thuộc tính có liên quan .
  • is_active - Cho biết liệu tài liệu này có còn hoạt động (hợp lệ) hay không.

Phần 4:Yêu cầu

Trước khi có thể cung cấp bất kỳ dịch vụ nào, chúng tôi cần nhận được một số yêu cầu của người dùng. Trong dịch vụ cho thuê căn hộ, khách hàng sẽ đặt yêu cầu về bất động sản mong muốn sau khi họ đã tìm kiếm trong danh sách và tìm thấy nơi ở mà họ muốn. Trong trường hợp dịch vụ vận chuyển, khách hàng yêu cầu thông qua ứng dụng di động (ví dụ:họ đang ở sân bay và cần đi xe sau 20 phút). Chúng tôi sẽ nói về cách chúng tôi xử lý yêu cầu trong phần tiếp theo; bây giờ, hãy xem cách chúng tôi quản lý chúng.

Bảng trung tâm trong lĩnh vực chủ đề này là request bàn. Đối với mỗi yêu cầu, chúng tôi sẽ lưu trữ:

  • has_role_id - Tham chiếu đến người dùng (và vai trò hiện tại của anh ta, thông qua has_role table) ai đã đưa ra yêu cầu đó.
  • request_status_id - Tham chiếu đến trạng thái hiện tại của yêu cầu đó.
  • status_time - Dấu thời gian khi trạng thái đó được chỉ định.
  • service_id - ID của dịch vụ bắt buộc với yêu cầu đó.
  • city_id - Tham chiếu đến thành phố khi dịch vụ này được yêu cầu.
  • request_details - Tất cả các chi tiết yêu cầu bổ sung, ở định dạng văn bản không có cấu trúc.
  • is_processed - Một cờ biểu thị nếu yêu cầu này đã được xử lý (tức là được chỉ định cho nhà cung cấp dịch vụ).
  • is_active - Cờ này sẽ chỉ được đặt thành Sai nếu khách hàng hủy yêu cầu của họ hoặc nếu ứng dụng hủy yêu cầu vì lý do nào đó.

Danh sách tất cả các trạng thái có thể có được lưu trữ trong request_status từ điển với status_name là giá trị DUY NHẤT (và duy nhất). Chúng ta có thể mong đợi các giá trị như “yêu cầu đã đặt”, “thuộc tính đặt trước”, “giao cho tài xế”, “đang tiến hành lái xe” và “đã hoàn thành”.

request_status_history bảng sẽ lưu trữ lịch sử của tất cả các trạng thái liên quan đến yêu cầu. Đối với mỗi bản ghi trong bảng này, chúng tôi sẽ lưu trữ ID của yêu cầu liên quan ( request_id ), ID trạng thái ( request_status_id ), ID tài khoản người dùng và vai trò của người dùng khi họ đặt trạng thái đó ( has_role_id ). Chúng tôi cũng sẽ ghi lại thời điểm mỗi trạng thái được chỉ định ( status_time ).

Phần 5:Dịch vụ được cung cấp

Sau khi yêu cầu được đặt, chúng tôi cần xử lý nó. Một yêu cầu sẽ tự động được chỉ định cho nhà cung cấp dịch vụ thích hợp (dựa trên loại dịch vụ được yêu cầu, vị trí, v.v.) hoặc nó sẽ được nhà cung cấp dịch vụ chấp nhận theo cách thủ công. Chúng tôi chỉ cần thêm hai bảng nữa để xử lý việc này.

Đầu tiên là well_service bàn. Đối với mỗi bản ghi, chúng tôi sẽ bao gồm:

  • request_id - ID của request có liên quan .
  • supports_id - Tham chiếu đến cung cấp bảng biểu thị nhà cung cấp dịch vụ và thuộc tính có trong hành động này.
  • chi tiết - Tất cả các chi tiết bổ sung, ở định dạng văn bản có cấu trúc. Cấu trúc này có thể bao gồm các thẻ và giá trị mô tả chi tiết yêu cầu. Đối với một chuyến đi, điều này có nghĩa là điểm xuất phát và điểm kết thúc, quãng đường đã đi, v.v.
  • start_time end_time - Khoảng thời gian mà dịch vụ này đã được cung cấp. Cả hai giá trị này sẽ được đặt khi dịch vụ vừa bắt đầu và vừa kết thúc.
  • grade_customer grade_provider - Điểm do khách hàng và nhà cung cấp dịch vụ đưa ra cho dịch vụ đó.

Bảng cuối cùng trong mô hình của chúng tôi là hóa đơn bàn. Chúng tôi sẽ tính phí khách hàng ( customer_name ) cho các dịch vụ được cung cấp ( cung cấp_service_id ). Đối với mỗi hóa đơn, chúng tôi cần biết total_amount , mọi khoản phí đã trả ( fee_amount ), khi hóa đơn được phát hành ( time_issued ) và khi nào nó được thanh toán ( time_paid ) Trường đã thanh toán đóng vai trò như một lá cờ cho biết hóa đơn đã được thanh toán hay chưa.

Bạn nghĩ gì về Mô hình dữ liệu nền kinh tế chia sẻ của chúng tôi?

Hôm nay chúng ta đã thảo luận về một mô hình dữ liệu có thể được sử dụng bởi một công ty như Airbnb hoặc Uber. Xương sống của một mô hình kinh doanh như vậy là khách hàng và nhà cung cấp dịch vụ. Có một số chi tiết tôi có thể thêm vào mô hình này. Tuy nhiên, tôi quyết định không làm điều đó vì mô hình sẽ nhanh chóng trở nên quá lớn. Bạn có nghĩ rằng tôi nên thêm một cái gì đó? Nếu vậy, vui lòng cho tôi biết trong phần bình luận bên dưới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm mẫu giản đồ

  2. Tùy chọn điều chỉnh hiệu suất cơ sở dữ liệu Azure SQL

  3. Làm thế nào để thêm chú thích trong SQL?

  4. Bạn được sắp xếp? Mẹo liên quan đến việc sắp xếp cửa sổ T-SQL

  5. Các trang trình bày và mẫu giao nhau trong SQL