Должно ли мое приложение CRUD выполнять проверку данных или это операция с базой данных? - PullRequest
0 голосов
/ 07 января 2020

У меня есть простое приложение CRUD, использующее реляционную базу данных.

Моя база данных имеет все внешние ключи, уникальные ключи и т. Д. c настроена.

Мой вопрос: мое приложение выполняет проверку входных данных или это должно быть связано с базой данных?

Например, представьте себе POST, который ожидает идентификатор для другого объекта, который является внешним ключом в моей базе данных.

Должно ли мое приложение сначала запрашивать этот идентификатор, посмотреть, присутствует ли он в базе данных и, если нет, вернуть 404? Или я должен просто попытаться ВСТАВИТЬ эту сущность в базу данных и ждать ошибки CONSTRAINT?

1 Ответ

0 голосов
/ 07 января 2020

После анализа других ресурсов похоже, что я должен обработать ошибки ограничения.

Это называется exogenous expressions. Если я проверяю данные в своем приложении, может возникнуть непредвиденное состояние состязания, при котором другой процесс может изменить данные, которые я только что запросил.

Итак, для согласованности я должен отловить исключения базы данных. и делать с ним что угодно.

Подробнее об экзогенных выражениях вы можете узнать из этой статьи Microsoft .

...