所以我从SQL后台切换到NoSQL的。 所以我知道我应该是“非规范化”这里..所以基本上我有什么,我必须做一个简单的想法;
用户这些文件持有的认证信息,也许支付方式,用户名和各种细节
帖子这些职位是由用户制作,并在每个岗位,我们要显示一个用户的用户名和电子邮件。 因此,通过“反规范化”的方法,我会把用户名和用户到每个岗位S的电子邮件/他做。
但是,当用户改变他们的用户名或电子邮件不此创建一个问题吗? 难道不是我得去追溯和更新所有的职位?
我是不是正确的设计呢? 还是失去了一些东西?
所以我从SQL后台切换到NoSQL的。 所以我知道我应该是“非规范化”这里..所以基本上我有什么,我必须做一个简单的想法;
用户这些文件持有的认证信息,也许支付方式,用户名和各种细节
帖子这些职位是由用户制作,并在每个岗位,我们要显示一个用户的用户名和电子邮件。 因此,通过“反规范化”的方法,我会把用户名和用户到每个岗位S的电子邮件/他做。
但是,当用户改变他们的用户名或电子邮件不此创建一个问题吗? 难道不是我得去追溯和更新所有的职位?
我是不是正确的设计呢? 还是失去了一些东西?
在这种情况下,你没有义务非规范化的数据。
您可以存储用户和岗位作为单独的文件(在同一个数据库):
{
"_id":"alice",
"email":"alice@wonderland.org"
}
{
"author":"alice",
"text":"Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, 'and what is the use of a book,' thought Alice 'without pictures or conversation?'"
}
然后,你需要一个地图功能,说明哪场将被用于连接:
function(o) {
if (o.text) {
emit(o._id, {text:o.text, _id:o.author});
}
}
然后调用该视图与include_docs=true
和后作为的ID key
。
也许这是矫枉过正,只是这个创建索引,但你可能可以重复使用它为其他有用的东西(如“整理”的博客文章和评论)。