【发布时间】:2018-11-18 20:48:59
【问题描述】:
我对 NoSQL 有点陌生,当不同的文档有关系时,我很难理解如何设计数据库。我已经阅读了一些关于 NoSQL 设计模式的文章,但我似乎得到了相互矛盾的信息。这是我面临的情况。
我有一组用户,每个用户都有一组他们练习的活动。它看起来像这样:
[Collection] Users
- [Doc] usr10343
name: Bob
age: 27
- [Doc] usr19282
name: Jenny
age: 32
[Collection] Activities
- [Doc] act19203
name: Warmup Jog
description: {...}
duration: 10m
- [Doc] act28301
name: Burpies
description: {...}
duration: 8m
现在,所有用户的活动名称、持续时间和描述都相同,但还有额外的用户特定数据,例如他们进行该活动的次数或上次活动的时间。我正在为每个用户的活动创建一个子集合,但我看到了两种创建它的模式。复制所有活动数据,以便子集合中的每个文档如下所示:
- [Doc] instance39201
name: Warmup Jog
description: {...}
duration: 10m
numberOfTimes: 8
lastCompleted: 10/18/2017
如果我想更新名称或描述,这似乎是很多重复和真正的麻烦。或者,我可以使用这样的参考:
- [Doc] instance39201
activity: act19203
numberOfTimes: 8
lastCompleted: 10/18/2017
这感觉就像我在使用关系数据库而没有 SQL 的好处。我是不是错过了什么。有没有更好的方法来解决这个我没有找到的方法?谢谢。
【问题讨论】:
标签: firebase nosql google-cloud-firestore document-database