Swift & Firebase - 为用户信息拆分数据?

标签 swift firebase nosql google-cloud-firestore

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

我是 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

问题是:我必须为用户拆分集合吗? 您认为这种架构是否符合目的(即记录用户的个人记录)?

非常感谢

最佳答案

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

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

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

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

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

此外,如果您愿意,您可以通过观察 UserID 立即获取所有内容!

但是,如果您可能要获取所有用户的列表,那么您肯定不希望所有这些数据都集中在一个地方,而且这种设计是行不通的,因为要观察的数据太多了只是为了获得所有用户。

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

关于Swift & Firebase - 为用户信息拆分数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50536322/

相关文章:

Swift:在 Firebase 数据库中搜索特定值并查找所有关联数据

ios - 在 Collection View 中滚动后单元格不显示 - swift 2.1

swift - 执行异步 Cloud Function 的问题

javascript - CouchDB 映射/归约功能可按日期显示用户的有限结果

ios - Swift 4 - IOS 11/“Apps-prefs=root” 功能不工作

ios - 激活 segue 时自动布局无法满足约束

Android 通过身份验证将 Imageview 图像发送到 Firebase

javascript - 大型 Firebase 查询的进度事件?

nosql - 存储过程在Neo4j中

database - 是否有类似 Redis DB 的东西,但不受 RAM 大小的限制?