如何在非关系数据库中避免冗余数据?

时间:2017-12-16 00:33:14

标签: sql mongodb mongoose nosql

我想转移到mongoose,但我需要了解我的mysql表将如何映射到基于无sql的数据库。

特别是我使用连接来避免复制数据。那就是我有2个表(B& C)与1个表(A)相关。我可以在需要时将表A连接到B,或者在需要时将表A连接到C.

如何在mongoose / mongodb中工作,即noSQL。

1 个答案:

答案 0 :(得分:5)

您描述的是标准化数据。数据库中的规范化是关系数据库的特征。面向文档的无SQL数据库(如MongoDB)使用不同的范例来构建围绕doucment范例的数据。在这个世界中,数据被安排到文档(JSON结构)中。你可以指向其他结构,但总有一个权衡。您必须确定哪种级别的数据冗余有效,但这确实是次要问题。您在类似MongoDB的世界中的首要任务是找出在上下文中最有意义的东西。例如,您可能有一个文档表示带有嵌入行项目的发票,但也有一个指向单独客户对象的指针。但是,在同一个数据库中,您也可能有一个围绕客户设计的文档,其中包含嵌套的发票标题,甚至嵌套的发票行,或嵌套在内部的发票行嵌套的发票标题,或者购买的产品,包含或不包含产品目录信息

在MongoDB世界中,联接通常很昂贵,但是为了一系列目的而以多种方式存储的丰富数据是值得使用的功能 - 在正确的上下文中。

您不应该将MongoDB视为关系DBMS的替代品,而应该将其视为更大的多语言(多语言)持久性设计的一部分。您也可以使用Redis和Neo4J等其他数据工具作为该世界的一部分来做不同的事情。

马匹课程; MongoDB并不适用于所有事情。