DDD может предложить вам принять решение, которое в первую очередь фокусируется на модели объектной модели, а не на модели ER / data. Я вижу, вы подумали о том, как должна выглядеть модель данных (с таблицей «многие ко многим» и т. Д.), Но, возможно, вам следует подумать о том, как должна выглядеть модель объекта в первую очередь. Затем, поскольку эта объектная модель отражает домен (бизнес-логика, бизнес-поведение), подумайте, как можно сопоставить эту объектную модель с базой данных.
Например, возможно, имеет смысл возвращать Продукт с набором платежей. И у каждого Платежа есть ссылка на лицо Плательщика. В зависимости от вашего дизайна у этой ссылки Плательщика могут быть копии информации о Плательщике, к которой вы хотите получить доступ, или, возможно, эта ссылка знает, как загрузить полную сущность Плательщика с необходимой информацией / значениями.
Кроме того, каждый экземпляр Плательщика может иметь коллекцию Платежей (того же типа класса, что и выше?), Которые ссылаются на Продукт.
Этот дизайн лучше использует принципы ОО и описывает домен лучше, чем способы, которыми могла бы заниматься реляционная база данных. Кроме того, эти объекты могут быть проще обрабатывать в слоях Services и UI, поскольку их собственная структура объектов уже предоставляет вам необходимые вещи. то есть. Товар имеет Платежи, которые есть у Плательщика и т. д.
Я достаточно новичок в DDD, думая сам. И прежде чем термин DDD отпугнет вас, взгляните на эту обобщенную версию книги Эвана . Это легкое чтение и бесплатная загрузка. Это может просто дать вам драгоценные камни, которые вы искали.