之前,我真的下潜深入到MongoDB的几天,我想我会问一个非常基本的问题,就是我是否应该潜入它在所有与否。我基本没有使用nosql的经验。MongoDB的正常化,外键和加入
我看过一些关于一些文档数据库的利益,我觉得这个新的应用程序,他们会真的很棒。对许多类型的对象(大量m-to-m关系)和子类进行收藏夹,评论等操作总是一件麻烦事 - 处理起来会很痛苦。
我也有,这将是一个痛苦的SQL来定义,因为它是非常嵌套,并转换为文档的很多比15代不同的表更好的结构。
但我对一些事情感到困惑。
是否需要保持数据库正常化?我真的不想更新多个记录。那仍然是人们如何处理MongoDB中数据库的设计?
当用户收藏夹一本书,这个选择是仍然存储在用户的文件,但后来这本书被删除,会发生什么?如何在没有外键的情况下解除关系?我是否负责手动删除所有链接?
如果用户收藏最多的一本书不再存在,会发生什么,我查询它(某种加入的)?我必须在这里做任何容错吗?
当您执行SQL数据库(如MySQL)时,即使通过外键连接,它们也不会自动删除表之间的链接。他们所做的唯一的事情就是阻止你删除另一个由外键连接的表中的行,但即使在那里,它也只有在你告诉它时才会这样。你为什么会认为NoSQL会有所不同? – trysis 2014-07-23 13:14:52
@trysis,google ON DELETE CASCADE。 – 2015-01-16 08:36:10
是的,我忘记了为什么我说那是很久以前的事了。如果我误导了过去无知的人,我很抱歉。 – trysis 2015-01-17 00:07:16