用于存储用户信息,许可证等的表设计

时间:2018-04-06 07:50:07

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

我目前正在我的应用中添加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 : ....

谢谢!

1 个答案:

答案 0 :(得分:0)

到目前为止,您的设计对我来说很好。

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

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

我会避免使用电子邮件,因为在未来的路上你可能想要添加多封电子邮件甚至是电话号码作为联系信息。

关于许可证和应用内购买:我不太熟悉firestore,自动递增id似乎只是一个SQL的东西,但如果你有我认为这是可以接受的。 GUID也可以。