Я смотрю ряд соображений:
Насколько важно данные правильно.
Где это может быть неправильно.
Где находится наиболее эффективное и эффективное место для его проверки.
Где лучше всего это исправить.
Скорее всего, ваши плохие данные будут поступать из пользовательского интерфейса, и вы также можете запросить его исправление.
Ссылочные и уникальные ограничения наиболее эффективно обрабатываются в базе данных. Код, который изменяет базу данных, должен поймать их и передать полезное исключение обратно в пользовательский интерфейс.
Проверка на несколько раз стоит накладных расходов, если правильность действительно важна, а ошибки в коде могут приводить к плохим данным на заднем конце. Я выполняю несколько проверок на такие вещи, как финансовые данные или что-то, что может привести к сбою всей системы.