Estou tentando me afastar do mundo procedural + relacional que estou acostumado e me aproximar mais da POO…
Normalmente eu uso e abuso de not nulls, checks, triggers e exceptions no BD para garantir a integridade dos dados, mas agora pergunto: Estas validações devem continuar a serem feitas no banco de dados? Ou devem ser tratadas em objetos na minha aplicação?
Fiz essa mesma pergunta em um forum gringo, e a resposta que tive foi que se dados inválidos conseguirem chegar até o banco de dados, é sinal de que houve uma falha na aplicação, que deveria ter validado os dados antes de persistir. Então no final das contas, o banco de dados seria um mero repositorio de dados sem qualquer inteligencia.
A principio me pareceu chocante, pois vai contra tudo que eu tinha em mente, mas pensando bem agora posso ver que faz bastante sentido. Vocês seguem esta linha tambem?
Fiz algumas pesquisas aqui mesmo, e cheguei até o livro de Domain Driven Design do Eric Evans. Já está na minha lista para ser lido. Recomendam algum material?