Выбор ответа Middle Тестирование БД через SQL обновлено

Ограничения как защита данных

Вопрос

Зачем тестировщику проверять, что в базе есть ограничения (UNIQUE, NOT NULL, FOREIGN KEY, CHECK)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Без них при гонке или баге появятся дубли и сироты, проверка в коде не спасёт. Проверка «email уже занят» в коде не спасает от двух параллельных регистраций: обе проверки пройдут до записи.

Варианты ответа

  1. Ограничения ускоряют любые запросы: планировщик строит по ним планы и пропускает лишние проверки
  2. Без ограничений ORM не сгенерирует модели и API не запустится
  3. Это зона администратора базы, тестировщик проверяет поведение через API
  4. Без них при гонке или баге появятся дубли и сироты, проверка в коде не спасётправильный ответ

Разбор

Проверка «email уже занят» в коде не спасает от двух параллельных регистраций: обе проверки пройдут до записи. Защищает только UNIQUE в базе. Внешние ключи не дают ссылаться в пустоту. Ограничения не ускоряют запросы сами по себе (кроме индексов под UNIQUE и PK) и не нужны для запуска.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме