【发布时间】:2013-04-02 23:06:56
【问题描述】:
考虑一个典型的博客应用程序,其中一个博客可以有很多帖子,而一个帖子可以有很多 cmets。 假设我们想提供一个 RESTfull API 来访问它。
如果我要使用关系数据库来存储这些数据,我会在 posts 表中拥有一个博客的外键和 cmets 表中的帖子的外键。
当通过 Mongoose 使用 MongoDB 时,我看到了三种不同的方法来设计集合:
拥有三个集合:一个用于博客,一个用于帖子,一个用于 cmets。帖子的架构将有一个引用其博客的字段,而 cmets 的架构将有一个引用其帖子的字段。 (非常类似于关系解决方案。)
同样,三个集合,但每个博客都有一个帖子引用数组,每个帖子都有一个 cmets 引用数组。
只有一个包含子文档和子子文档的集合,其中博客包含一组帖子,每个帖子包含一组 cmets。
哪一个是正确的,或者,每一个的优缺点是什么?
【问题讨论】:
标签: mongodb database-design mongoose nosql