Generalmente è meglio convalidare su tutti i livelli dell'applicazione, ripetendo le convalide se necessario.
In genere si desidera la convalida nel db perché generalmente si desidera garantire che i dati siano coerenti e obbediscano a determinati vincoli.
Dovresti convalidare nel back-end perché di solito è lì che si trova la "verità" sulla logica aziendale e convalidare lì può salvare inutili viaggi nel db per salvare dati non validi.
La convalida nell'interfaccia utente è la parte facoltativa, in quanto può essere gestita dal back-end, che può restituire un errore per l'interfaccia utente da visualizzare. Tuttavia, l'esperienza utente è molto meglio se si convalida il front end in quanto è più veloce (non c'è bisogno di parlare con l'API)