Это почему же они разные?
Может в контексте было непонятно, но данные приходят из внешней системы, они могут прийти в любом виде — это отдельный контур твоего приложения, которому всё равно что дальше — кака базая и есть ли она вообще. Ответственность этой зоны принять данные, сверить что контракт не нарушен и пропустить их дальше или нет.
Тот код что работает непосредственно с базой ничего не должен знать что там снаружи, но подразумевает что ему приходят валидные данные. Да, он должен обрабатывать возможные ошибки и передавать их наружу, но это как раз «исключение», чем правило.