我在使用nosql数据库时迈出了第一步,但到目前为止,我的知识非常基础。我尝试为小型发票系统设置数据库。
在SQL中,我创建了4个表:产品,客户,发票以及发票和产品的匹配表。
但是如何用nosql做到这一点?我甚至建立关系或只为每张发票构建1份文件。
答案 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提示......
因此,您首先应该问自己,您需要对数据进行哪类查询并从中获取
...当你明白是时候深入挖掘文档设计的可能性了。