Как перемоделировать существующую модель данных для БД, ориентированной на документы, например ravendb или mongodb - PullRequest
1 голос
/ 10 октября 2011

Предположим, что в следующем сценарии (с реляционными базами данных)

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

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

class Order
{
long id;
long currency;
}

в практическом сценарии будет большое количество заказов (с постоянно растущими числами).Что было бы оптимальным способом преобразовать это для поддержки БД на основе документов.Существует возможность изменить код валюты и название, и когда это произойдет, будет ли оно автоматически обновляться во всех заказах, если валюта добавлена ​​как дочерний элемент заказа?

1 Ответ

2 голосов
/ 10 октября 2011

При моделировании реляционной базы данных в базах данных документов полезно, если вы думаете в терминах DDD " Aggregates " и думаете, как будет обрабатываться изменение значения объекта, например, объект является Enitty или Value Object , поэтому в этом случае, если вы хотите, чтобы изменения в валюте влияли на существующие ордера, валюта НЕ является объектом стоимости, и вы просто помещаете ссылку на объект Currency, используемый в Order, как-то похоже на реляционную модель.Смоделируйте это так, как это будет работать в 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; }
}

Обратите внимание, однако, что моделируя это, выПотребуются отдельные запросы для извлечения / обновления связанных объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...