Não há uma resposta definitiva, pode depender do projeto, do expertise da equipe, que ferramentas vai usar ou outros critérios.
É certo que todo sistema deveria começar pela estrutura de dados, e em muitos casos isso significa começar pelo banco de dados, seja no modelo físico ou no modelo lógico (algo que quase todo mundo ignora ou faz de outro jeito sem perceber). Mas hoje muita gente cria as estruturas de dados da aplicação e tenta encaixar o banco de dados nisso. Minha experiência é que isso tende a não dar bom resultado.
Mas ainda fica a questão de quem é mais importante para o projeto. Se não for possível determinar, eu iria pelo DB.
Por outro lado, em aplicações simples, e a maioria delas são simples, qualquer coisa funciona e fazer o mais simples costuma ser a melhor decisão. E por isso pensar demais sobre o problema pode ser um caso de overengineering.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).