Couchdb 如何在NoSQL中排列我的数据(发票)

Couchdb 如何在NoSQL中排列我的数据(发票),couchdb,nosql,Couchdb,Nosql,我正在使用nosql数据库迈出第一步,但到目前为止,我的知识非常基础。我试图为一个小型发票系统建立一个数据库 在SQL中,我将创建4个表:产品、客户、发票,以及发票和产品的匹配表 但是如何使用nosql实现这一点呢?我甚至可以为每张发票建立关系还是只建立一个文档。您应该记住,NoSQL设计不仅基于数据结构,而且还强烈地基于数据功能。因此,您应该首先问问自己,您需要对数据执行什么样的查询,并从中获取数据 首先,弄清楚反规范化和聚合要走多远。例如:通常需要立即查询或更新哪些数据集?并尽量将其保存在单

我正在使用nosql数据库迈出第一步,但到目前为止,我的知识非常基础。我试图为一个小型发票系统建立一个数据库

在SQL中,我将创建4个表:产品、客户、发票,以及发票和产品的匹配表


但是如何使用nosql实现这一点呢?我甚至可以为每张发票建立关系还是只建立一个文档。

您应该记住,NoSQL设计不仅基于数据结构,而且还强烈地基于数据功能。因此,您应该首先问问自己,您需要对数据执行什么样的查询,并从中获取数据

首先,弄清楚反规范化和聚合要走多远。例如:通常需要立即查询或更新哪些数据集?并尽量将其保存在单个文档中,即使这意味着复制来自其他实体的数据(即,将客户数据与发票数据一起存储)

所以问问自己为什么要使用非关系数据库,以及如何使用这些数据。然后决定应用哪种建模技术以及应用的程度。如果你愿意阅读的话,这个高度可扩展的博客有着巨大的潜力

。。。或者只为每张发票创建一个文档

是的,一开始就这样做。将CouchDB中的数据想象为关系数据库中数据的只读副本。这些文档类似于SQL查询的结果

我甚至可以建立关系吗

当然可以,这与SQL表中的相同。包括外国单据的id,并命名与要表达的关系相关的属性,例如发票单据中的
doc.customer\u id
,可以指向客户单据的
doc.\u id

将CouchDB视图想象为“关系”是很有帮助的,例如,您可以使用上面的示例创建一个名为
InvoicesByCustomer
的视图

但我建议从每张发票的
1个文档开始。
-方法并遵循@JavoSN提示

因此,您应该首先问问自己,您需要对数据执行什么样的查询,并从中获取数据

。。。当您清楚地知道这一点时,是时候深入挖掘文档设计的可能性了