【问题标题】:Table design for storing user information, license, etc用于存储用户信息、许可证等的表格设计
【发布时间】:2018-09-16 04:40:51
【问题描述】:

我目前正在我的应用中添加 Google Firestore,以便存储用户首选项、许可证和其他元数据。我也设置了 Google 身份验证,因此我可以跟踪用户是否注册。

不是数据库/NoSQL 专家,任何设计建议都将不胜感激!

我需要存储以下内容,以后可能还会更多:

  • 应用安装/许可(多平台:iOS、macOS 等)
  • 购买的应用内购买(以便能够从其他平台恢复)
  • 用户偏好,以便它们可以在另一个平台上重复使用并用于备份目的

我在想这个简单的设计:

/users (collection)
     |
     +-- {user_XXXXXX} <- what should be used here? e-mail? generated ID?
             |
             +--- app_licenses (collection)
                      |
                      + {license_XXX} <-- incremental id? auto-generated?
                      |    |
                      |    +-- platform : ios / macos / ...
                      |    +-- installation_id : device id ?
                      + {license_XXX} <--- incremental id? auto-generated?
                      |    +-- platform : ios / macos / ...
                      |    +-- installation_id : device id ?
                      |
             +--- iap_purchases (collection)
                      |
                      + {iap_XXX} <--- incremental id? auto-generated?
                           |
                           +-- name : unique identifier (title/name)
                           +-- transaction_id 
                           +-- date : purchase date
             +--- prefs
                    |
                    + fav_color : red / blue / ...
                    + another_pref : ....

谢谢!

【问题讨论】:

标签: ios database firebase nosql google-cloud-firestore


【解决方案1】:

到目前为止,您的设计对我来说看起来不错。

关于您的 root 用户级别:您添加的用户信息是否必须通过 firebase 登录?如果是这样,我会使用来自 firebase 的用户 UID。它保证是唯一的,并且只有经过身份验证才能检索。 Here's a stack overflow question concerning that.

如果您不必存储通过 firebase 登录的用户,我仍然会使用某种自动递增的 id 或 GUID。只要确保避免生成重复 ID 的可能性。

我会避免使用电子邮件,因为在更远的地方您可能想要添加多个电子邮件甚至电话号码作为联系信息。

至于许可证和应用内购买:我对 Firestore 不太熟悉,自动递增 id 对我来说似乎只是一个 SQL 的东西,但如果你可以使用它,我想这是可以接受的。 GUID 也可以。

【讨论】:

  • 是的,用户需要登录,所以我可以按照你的建议使用 Firebase 的 UID。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 2012-07-15
  • 2012-05-26
  • 2018-10-20
  • 2012-08-24
相关资源
最近更新 更多