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

时间:2015-04-25 17:40:31

标签: couchdb nosql

我在使用nosql数据库时迈出了第一步,但到目前为止,我的知识非常基础。我尝试为小型发票系统设置数据库。

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

但是如何用nosql做到这一点?我甚至建立关系或只为每张发票构建1份文件。

2 个答案:

答案 0 :(得分:1)

您应该记住,NoSQL设计不仅基于数据结构,而且基于数据功能。因此,您首先应该问自己,您需要对数据进行哪些类型的查询,并从中获取数据。

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

因此,请问自己为什么要使用非关系数据库,以及如何使用该数据。然后决定应用哪种建模技术以及应用的范围。如果您愿意阅读,那么高度可扩展的博客有一个很棒的article about NoSQL data modeling

答案 1 :(得分:0)

  

...或者只为每张发票构建1份文件。

是的,一开始就这样做。想象一下CouchDB中的数据是关系数据库中数据的只读副本。文档就像是SQL查询的结果。

  

我甚至建立关系吗?

当然可以,它与SQL表中的相同。您包括外国文档的ID并将该属性命名为您要表达的关系,例如发票文档中的doc.customer_id可以指向客户文档的doc._id

它有助于您将CouchDB视图视为"关系"例如您可以使用上面的示例创建一个名为InvoicesByCustomer的视图。

但总结一下,我会建议从1 document for each invoice. - 方法开始并遵循@JavoSN提示......

  

因此,您首先应该问自己,您需要对数据进行哪类查询并从中获取

...当你明白是时候深入挖掘文档设计的可能性了。