Разработка @Paul Sonier ответ ...
P.S. Я использую бизнес-уровень , бизнес-классы в общем смысле, а не как жаргон какой-то конкретной модели технического дизайна.
Конкретные проблемы использования ключей базы данных
Использование ключей базы данных может привести к взрыву накладных расходов на кодирование для синхронизации объектов и базы данных. По мере необходимости добавлять, изменять, удалять объекты (через пользовательский интерфейс) вы будете прыгать через обручи, как сумасшедшие. Как бы вы создали дочерний объект, если родительский объект еще не существует в базе данных? Представьте себе попытку сделать это с любой структурой данных N-уровня.
Всегда разрабатывать бизнес-классы без учета хранения данных
Классы бизнес-уровня должны точно отражать бизнес-правила, жаргон, концепции и контекст. Загрязнение этого «пространства идей» некоммерческими материалами с подробностями о хранении или отображении данных плохо в долгосрочной перспективе. Услышь меня сейчас и поверь мне позже.
Бизнес-классы, основанные на некоторой конкретной компоновке таблицы базы данных (и ее ключах и т. Д.), Крайне затруднят написание кода для проверки правил, создания надлежащего состояния этих объектов и т. Д. Это на вершине проблемы синхронизации идентификаторов объектов с базой данных.
Максимальное разделение бизнес-уровня и уровня данных
Пример, показанный в вашем вопросе, является заманчивым обманом. Некоторые из ваших бизнес-классов могут очень хорошо соответствовать вашему дизайну базы данных. И поэтому может показаться, что первичные и внешние ключи тоже подходят.
НО в любом нетривиальном приложении модель базы данных будет отклоняться . Если не сейчас, позже. Он будет отличаться в целях обеспечения целостности, эффективности и скорости работы с базой данных. И какое это имеет отношение к бизнес-модели? Ничего такого.
Показатели того, что вы все делаете правильно
Можно создать экземпляр бизнес-объекта без существующей базы данных
Каждый объект может ссылаться на своих «детей», не требуя специальных ключей, созданных вне модели бизнес-класса.
Каждый бизнес-объект сам по себе может проверять, применять, помечать и т. Д. все своих собственных правил, даже тривиальные, такие как "не может быть пустым" , Проверка бизнес-правил для составных классов / объектов - это деятельность по разработке и анализу классов, а не деятельность по разработке базы данных.