Я хотел бы дополнить ответ CPerson.
Такие обсуждения, не заходя в контекст, часто бессмысленны. Каждый случай является специфическим для контекста c, и он редко сводится к проблеме с постоянством.
В упомянутом случае я бы никогда не смоделировал Review как сущность в совокупности Ресторанов. Это не проблема постоянства, это проблема моделирования.
Существует несколько книг DDD, и я считаю, что чтения нескольких постов в блоге недостаточно для понимания как стратегий c, так и тактические схемы DDD. Одним из таких паттернов действительно является Агрегатный паттерн. Короче говоря, Агрегат - это граница согласованности. Агрегат всегда определяется контекстом c (как и все остальное).
Если вы моделируете систему управления рестораном или систему доставки еды, отзывы, вероятно, будут в отдельном контексте. Нет такого контекста, как «контекст ресторана». В этом весь смысл шаблона ограниченного контекста. В вашем примере это, вероятно, контекст обзора ресторана. То, что происходит с отзывами, не имеет ничего общего с едой, часами работы и бронированием столиков.
Если вы моделируете что-то вроде TripAdviser, у вас есть только отзывы, в основном. В таком случае рецензии более или менее агрегируют c с тем, что рецензируется. Тогда ваша модель будет совершенно другой.
Количество обзоров постоянно растет, поэтому включение всех обзоров как сущностей в какую-либо совокупность не имеет большого смысла. Опять же, Aggregate - это граница согласованности. Вы сказали бы, что отзыв не может быть опубликован, если другой отзыв - одна звезда? Я так не думаю. Какой инвариант вы пытаетесь защитить в совокупности Ресторанов относительно отзывов? Нужно ли ограничивать количество отзывов об изменении состояния ресторана на основе этих отзывов? Я не думаю, что это так. Таким образом, обзор может быть агрегатом сам по себе, поскольку все отзывы полностью независимы друг от друга.
Ресторан в агрегате обзора может представлять собой простой объект значения, содержащий идентификатор ресторана. При создании этого объекта стоимости вы должны убедиться, что данный ресторан действительно существует и открыт для просмотра. Вы действительно должны очистить отзывы, когда ресторан исчезнет. Но это также зависит от контекста c. Ресторан может закрыться, но вы все равно оставите отзывы.