我来自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解决此任务?我对良好的架构感兴趣,我不需要了解像索引这样的特定内容。
答案 0 :(得分: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
,您可能希望将这些数据包含在评论记录本身中。
那么如果用户在评论后更改了数据呢?
有一个选项3您可以找到所有注释并更新它们,但如果这是常见的情况,您可能需要开始使用关系数据库。