Мои 2 цента:
Проверка данных должна выполняться в двух местах:
Точка, в которой обрабатываются данные, например, проверка входных параметров в запросе SQL.
Общая проверка в точке отправки данных, например, в веб-приложении. На клиенте должна выполняться некоторая проверка. Преимущество заключается в том, что вы можете быстро уведомлять пользователей о проблемах ввода, например, неправильно сформированном номере телефона, слишком длинной строке и т. Д. Однако на это не следует полагаться как на проверочную проверку достоверности, поскольку в случае веб-приложения злоумышленник может обойти проверку на стороне клиента.
По моему мнению, база данных не должна выполнять общую проверку, данные должны быть проверены / экранированы / очищены, прежде чем они попадут в базу данных. При этом ваша схема базы данных может предоставить вам уровень абстрактной проверки с помощью типов данных столбцов, ограничений и т. Д. При этом любые данные, которые могут вызвать проблемы с ними, должны быть «очищены» перед их передачей в базу данных.
Тем не менее, есть много неправильных путей, но нет правильного пути. Валидация зависит от архитектуры вашего приложения, природы данных в нем и от того, как эти данные используются.