Вы пометили «ddd», поэтому при условии, что вы ищете более доменный подход к проектированию, отбросьте идентификатор этих объектов и рассматривайте их как Объекты значений .
Причина, по которой вы могли бы рассмотреть возможность удаления идентификатора, заключается в том, что он добавляет ненужную сложность в проблемную область. Например, я предполагаю, что в вашей реализации есть таблица "Страна"? У вас все еще будет это, но это не будет ссылочный поиск. Вы бы использовали его исключительно как «справочные данные». Загрузите его заранее для сценариев, где на него нужно ссылаться - возможно, ваш пользовательский интерфейс привязывает его к выпадающему списку, например ...
Когда объект сохраняется или обновляется, вы сохраняете значение объекта, отсюда и «значение» «объект». Если пользователь меняет объект на другое значение, нет проблем, просто обновите значение. Это один менее ассоциативный поиск, который необходимо выполнить при выполнении операций CRUD, что делает общую модель менее сложной.