【问题标题】:Swift & Firebase - Split data for user info?Swift & Firebase - 拆分数据以获取用户信息?
【发布时间】:2018-05-25 20:19:01
【问题描述】:

我目前正在编写一个允许记录用户所有个人记录的健身应用程序。

我对 Firebase 的 Cloud Firestore 非常陌生,所以我真的不知道如何构建数据库。

在我看来,我有两个选择:

选项 1

Users
 |
 +--UserID
 |   |
 |   +--Name
 |   +--Phone
 |   +--etc..
 |
 |
Users-records
 |
 +--UserID
 |   |
 |   +--RecordName
 |   |   |
 |   |   +--recordValue
 |   |   +--recordType
 |   | 
 |   +--RecordName
 |   |   +--recordValue
 |   |   +--recordType

选项 2

Users
 |
 +--UserID
 |   |
 |   +--Name
 |   +--Phone
 |   +--etc..
 |   +--Records
 |   |   |
 |   |   +--RecordName
 |   |   |   |
 |   |   |   +--recordValue
 |   |   |   +--recordType
 |   |   +--RecordName
 |   |   |   |
 |   |   |   +--recordValue
 |   |   |   +--recordType

问题是:我必须为用户拆分集合吗? 你认为这个架构设计得很好吗(即记录用户的个人记录)?

非常感谢

【问题讨论】:

  • 我认为您必须使用第二种选择,因为当您需要内部结构数据时,您无需调用多个api,您可以通过简单的方式访问数据

标签: swift firebase nosql google-cloud-firestore


【解决方案1】:

您的数据库结构实际上取决于您将如何使用它。请记住,每当您观察一个节点时,您也在观察所有的子节点。

所以我可能会选择更接近选项二的东西,可能是这样的:

Users
 |
 +--UserID
 |   |
 |   +--UserInfo
 |   |   |
 |   |   +--Name
 |   |   +--Phone
 |   |   +--etc..
 |   |
 |   +--Records
 |   |   |
 |   |   +--RecordName
 |   |   |   |
 |   |   |   +--recordValue
 |   |   |   +--recordType
 |   |   +--RecordName
 |   |   |   |
 |   |   |   +--recordValue
 |   |   |   +--recordType

我会选择这个,因为我想你想一次获取所有的 UserInfo,所以我们可以观察“UserInfo”节点并获取所有子节点:姓名、电话等。 ..

那么我认为您还想一次获取所有记录,这样我们就可以观察“记录”节点并获取所有数据。

此外,如果您愿意,您可以通过观察 UserID 一次获得所有内容!

但是,如果您可能要获取所有用户的列表,那么您绝对不希望所有这些数据都集中在一个位置,这样设计就行不通,因为需要观察大量数据只是为了获得所有用户。

总结:选择一个选项,让您最容易获得所需的数据,而不会获得您不想要的额外数据!

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多