gpt4 book ai didi

database - 如果一切都非规范化,那更新不会很慢吗(作者,里面的博客示例)

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:30 28 4
gpt4 key购买 nike

所以我从 SQL 背景转向 NoSQL。所以我知道我应该在这里“非规范化”。所以基本上我对我必须做的事情有一个简化的想法;

用户这些文件包含身份验证信息,可能是付款方式、用户名和各种详细信息

帖子这些帖子是由用户发布的,在每个帖子中,我们必须显示用户的用户名和电子邮件。因此,通过“非规范化”的方法,我会将用户的用户名和电子邮件放入他/她发布的每个帖子中。

但这不会在用户更改用户名或电子邮件时产生问题吗?难道我不需要追溯去更新所有帖子吗?

我的设计是否正确?还是遗漏了什么?

最佳答案

在这种情况下,您没有义务对数据进行反规范化。

您可以将用户和帖子存储为单独的文档(在同一数据库中):

{
"_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?'"
}

然后您需要一个 map 函数来告知哪个字段将用于连接:

function(o) {
if (o.text) {
emit(o._id, {text:o.text, _id:o.author});
}
}

然后使用 include_docs=true 调用此 View ,并将帖子的 ID 作为 key

也许仅仅为此创建索引有点矫枉过正,但您可以将它重新用于其他有用的事情(例如“整理”博客文章和评论)。

关于database - 如果一切都非规范化,那更新不会很慢吗(作者,里面的博客示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19431946/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com