我试图弄清楚如何为我的数据建模-在Couchbase中以多对多的关系(也使用n1ql)。
我有两个实体:客户和项目。
我认为可能为每个站点/项目创建一个新文档,但是根据Couchbase有关数据建模的文档:
在Couchbase Server中,这通常不是一个好方法,因为 引用和嵌入为 避免创建此冗余文档。
我应该如何存储数据?
任何建议/建议都会有所帮助。
谢谢。
答案 0 :(得分:2)
请参考以下URL解决以上问题: https://developer.couchbase.com/documentation/server/current/data-modeling/modeling-relationships.html
答案 1 :(得分:1)
该引用引用了“关系文档”。就您而言,这意味着您将拥有一个客户文档,一个项目文档以及某种客户-项目映射文档。我同意,除非您打算存储有关该关系的很多信息 ,否则仅对关系的文档 将不是一种有用的方法。
根据您所提供的信息,建议您存储客户端文档和项目文档。根据数字,我想说这些项目应包含一个客户文档ID列表。
类似的东西:
key client::001
{
"name" : "Clienty McClientface",
"address" : "123 main st",
"foo" : "bar",
"type" : "client"
}
key project::001
{
"name" : "Alan Parsons Project",
"startDate" : "2012-09-27",
"clients" : [
"client::001",
"client::007",
"client::123",
// ... etc ...
],
"type" : "project"
}
但通常,这取决于您的用例用于读取,写入和查询。没有哪种数据模型会适合每个用例。