Onde a validação de dados deve ocorrer?

Eu li filosofias conflitantes sobre onde a validação de dados deve acontecer e isso está me confundindo mais. Alguns dizem que ele deve estar apenas no banco de dados. Outros dizem que as regras de validação devem ser espelhadas em outras camadas, como bll ou ui.

Onde a validação de dados deve residir? As regras devem ser divididas em várias camadas? Quais são algumas das melhores práticas reais(ao contrário da teoria, cabeça nas nuvens tipo coisas) sobre quando e onde validar dados em um aplicativo em execução em um banco de dados.

questionAnswers(2)

yourAnswerToTheQuestion