Что такое Constraint в контексте баз данных?

«Что такое Constraint в контексте баз данных?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Constraint (ограничение) — это правило, применяемое к столбцу или таблице в базе данных для обеспечения целостности данных и соблюдения бизнес-логики.

Основные типы ограничений:

  • PRIMARY KEY: Уникально идентифицирует каждую строку в таблице. Комбинация NOT NULL и UNIQUE.
  • FOREIGN KEY: Обеспечивает ссылочную целостность, связывая столбец с PRIMARY KEY другой таблицы.
  • NOT NULL: Запрещает вставку NULL значений в столбец.
  • UNIQUE: Гарантирует, что все значения в столбце (или комбинации столбцов) различны.
  • CHECK: Проверяет, что значение в столбце удовлетворяет заданному условию (например, age >= 18).
  • DEFAULT: Задает значение по умолчанию для столбца при вставке новой строки.

Пример создания таблицы с ограничениями:

CREATE TABLE Employees (
    employee_id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE NOT NULL,
    department_id INT,
    salary DECIMAL(10,2) CHECK (salary > 0),
    hire_date DATE DEFAULT CURRENT_DATE,
    CONSTRAINT fk_department
        FOREIGN KEY (department_id)
        REFERENCES Departments(department_id)
);

С точки зрения тестирования (QA):

  • Валидация данных: Тесты должны проверять, что приложение корректно обрабатывает попытки нарушения ограничений (например, вставку дубликата PRIMARY KEY), возвращая понятные ошибки.
  • Регрессионное тестирование: Изменение или добавление ограничений в БД требует проверки существующего функционала.
  • Тестирование миграций: Проверка скриптов миграции БД на корректное применение/удаление ограничений.