【问题标题】:How to re-model the existing data model for a document oriented db like ravendb or mongodb如何为面向文档的数据库(如 ravendb 或 mongodb)重新建模现有数据模型
【发布时间】:2011-10-10 16:42:07
【问题描述】:

假设以下场景(使用关系数据库),

class Currency
{
long id;
String code;
String name;
}

class OrderGroup
{
long id;
Collection<Order> Orders;
}

class Order
{
long id;
long currency;
}

在实际场景中,会有大量订单(数量不断增加)。将其转换为支持基于文档的数据库的最佳方法是什么?有一个更改货币代码和名称的选项,如果将货币添加为订单的子项,它会在所有订单中自动更新吗?

【问题讨论】:

    标签: database-design mongodb ravendb document-oriented-db


    【解决方案1】:

    在文档数据库中对关系数据库进行建模时,如果您考虑 DDD 术语“Aggregates”并考虑如何处理对象值的更改,这会有所帮助,例如该对象是Enitty or a Value Object,因此在这种情况下,如果您希望货币的更改影响现有订单,货币不是值对象,您只需引用订单中使用的货币对象,有点像关系模型。像这样建模它可以在 RavenDb 中工作:

    OrderGroup 聚合:

    public class OrderGroup
    {
        public int Id { get; set; }
        public IList<Order> Orders { get; set; }
    }
    
    public class Order
    {
        public int Id { get; set; }
        public int Currency { get; set; }
    }
    

    货币实体:

    public class Currency 
    {
        public int Id { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }
    }
    

    但是请注意,像这样对其进行建模,您需要单独的查询来获取/更新相关对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 2016-08-17
      相关资源
      最近更新 更多