0

我来自 SQL 世界,所以请不要问我 NoSQL 中没有表、关系等,我知道,但我很难理解如何在没有关系的类别中保存新闻。

因此,假设我们想要将新闻、新闻类别、标签、用户资料和用户对新闻的评论保存在数据库中。使用 SQL,我认为这个任务可以用这样的架构来解决(不要看语法,它是伪代码):

categories ( id, title )
news (id, title, content, category_id)
users (id, first_name, last_name, homepage_url)
news_comments (id, news_id, user_id, comment)
tags (id, title)
news_tags (news_id, tag_id)

如何使用 MongoDB / CouchDB / NoSQL 解决此任务?我对良好的架构感兴趣,我不需要了解诸如索引之类的特定内容。

4

1 回答 1

1

通常,您需要对数据进行非规范化。您的“新闻”记录如下所示:

news (id, title, content, category_title, [tags]) # that is list of tags

或者在技术上更精确,例如:

(id, type=news, title, content, category_title, [tags])

您可以按“外键”过滤,因此

news_comments (id, news_id, user_id, comment)

如果您想为给定新闻选择评论,这不是什么大问题,但如果您想显示用户的first_name,您可能希望将该数据包含在评论记录本身中。

那么如果用户在评论后更改了它的数据怎么办?

  1. 你真的不在乎
  2. 你在工作中使用了错误的工具

有一个选项 3,您可以找到所有评论并更新它们,但如果这种情况足够常见,您可能需要从关系数据库开始。

于 2012-04-05T20:38:09.557 回答