【问题标题】:Couchbase many to many relationship modelingCouchbase 多对多关系建模
【发布时间】:2018-06-25 21:27:48
【问题描述】:

我试图弄清楚如何为我的数据建模 - 在 Couchbase 中以 多对多 关系(我也使用 n1ql)。

我有两个实体:客户项目

  • 客户 - 每个客户可以创建多个项目 - 每年大约 2000 个项目。
  • 项目 - 每个项目可以属于多个客户(最多 50 个客户)。

我想可能会为每个站点/项目创建一个新文档,但根据 Couchbase 关于数据建模的文档:

这在 Couchbase Server 中通常不是一个好方法,因为 引用和嵌入提供了很大的灵活性 避免创建这个多余的文档。

我应该如何存储数据?

任何建议/建议都会有所帮助。

谢谢。

【问题讨论】:

    标签: nosql couchbase data-modeling relationships n1ql


    【解决方案1】:

    【讨论】:

    【解决方案2】:

    那句话是指“关系文件”。在您的情况下,这意味着您将拥有一个客户文档、一个项目文档和某种客户-项目映射文档。我同意用于关系的文档不是有用的方法,除非您打算存储大量关于该关系的信息

    根据您提供的信息,我建议您存储客户文档和项目文档。根据这些数字,我认为项目应该包含客户文档 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"
    }
    

    但总的来说,这取决于您的读、写、查询用例。没有数据模型适合所有用例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2018-03-28
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      相关资源
      最近更新 更多