Очень сильно зависит от приложения, я бы сказал. Если ваше приложение ориентировано на данные, вы должны отдать предпочтение базе данных над дизайном приложения; если ваше приложение в основном связано с бизнес-логикой или вычислениями, вы, вероятно, хотите отдать предпочтение дизайну приложения.
Еще одним соображением является долговечность и охват приложения - как говорит Джей, нередки случаи, когда несколько приложений используют одну и ту же базу данных. Хотя я бы на самом деле предположил, что это является причиной предоставления сервиса или интерфейса на основе сообщений для базы данных - я не думаю, что вы захотите позволить нескольким приложениям иметь прямой доступ к данным. В таком случае, я думаю, вы бы сосредоточили свои усилия на дизайне на уровне обслуживания.
Вы также можете подумать о сопоставлении дизайна с бизнес-областью - в идеале вы хотите, чтобы ваше программное обеспечение отражало бизнес-концепции (см. «Проектирование на основе доменов» Эванса). Это обычно - но не всегда - легче при работе с объектной технологией, а не с моделями отношения сущностей (классический вопрос - как сопоставить наследование с моделью базы данных).
Наконец, важно учитывать навыки и склонность команды - наличие банды гуру баз данных для разработки объектной модели обычно приводит к крутой кривой обучения (и наоборот).