← Назад к вопросам

Что такое ключи?

2.2 Middle🔥 164 комментариев
#Soft skills и карьера#Теория тестирования

Комментарии (4)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое ключи в контексте баз данных и QA

В области тестирования и работы с базами данных ключи — это специальные атрибуты (поля), которые используются для однозначной идентификации записей в таблице и установления связей между таблицами. Понимание ключей критически важно для QA-инженеров при проверке целостности данных, валидации бизнес-логики и написании сложных SQL-запросов.

Основные типы ключей

  1. Первичный ключ (Primary Key, PK)

    • Уникально идентифицирует каждую строку в таблице.
    • Не может содержать NULL значения.
    • В таблице может быть только один первичный ключ.
    CREATE TABLE Users (
        user_id INT PRIMARY KEY,
        email VARCHAR(100) NOT NULL UNIQUE,
        name VARCHAR(50)
    );
    
  2. Внешний ключ (Foreign Key, FK)

    • Устанавливает связь между двумя таблицами.
    • Ссылается на первичный ключ (или уникальный ключ) другой таблицы.
    • Обеспечивает ссылочную целостность данных.
    CREATE TABLE Orders (
        order_id INT PRIMARY KEY,
        user_id INT,
        amount DECIMAL(10,2),
        FOREIGN KEY (user_id) REFERENCES Users(user_id)
    );
    
  3. Уникальный ключ (Unique Key)

    • Гарантирует уникальность значений в столбце (или комбинации столбцов).
    • В отличие от первичного ключа, может содержать одно NULL значение (зависит от СУБД).
    ALTER TABLE Users ADD CONSTRAINT unique_email UNIQUE (email);
    
  4. Составной ключ (Composite Key)

    • Первичный или уникальный ключ, состоящий из двух и более столбцов.
    CREATE TABLE Enrollment (
        student_id INT,
        course_id INT,
        enrollment_date DATE,
        PRIMARY KEY (student_id, course_id)
    );
    
  5. Кандидат на ключ (Candidate Key)

    • Столбец или комбинация столбцов, которые потенциально могут стать первичным ключом.

Практическое значение для QA-инженера

При тестировании необходимо проверять:

  • Целостность первичных ключей:

    • Отсутствие дубликатов
    • Отсутствие NULL значений
    -- Проверка на дубликаты PK
    SELECT user_id, COUNT(*)
    FROM Users
    GROUP BY user_id
    HAVING COUNT(*) > 1;
    
  • Соблюдение внешних ключей:

    • Нельзя удалить запись, на которую есть ссылки
    • Нельзя создать "висячую" ссылку (orphaned record)
    -- Поиск нарушений ссылочной целостности
    SELECT o.*
    FROM Orders o
    LEFT JOIN Users u ON o.user_id = u.user_id
    WHERE u.user_id IS NULL;
    
  • Валидация уникальных ограничений:

    • Проверка бизнес-правил (например, уникальность email)
    • Тестирование пограничных случаев
  • Производительность запросов:

    • Ключи часто индексируются, что ускоряет поиск
    • При проектировании тестов нужно учитывать индексы

Пример тест-кейса для проверки ключей

Feature: Проверка целостности ключей в базе данных

Scenario: Валидация первичного ключа таблицы Users
Given Подключение к тестовой базе данных
When Выполняется вставка двух записей с одинаковым user_id
Then Система должна отвергнуть вторую записью с ошибкой нарушения PK
And В таблице должна остаться только первая запись

Scenario: Проверка внешнего ключа между Orders и Users
Given Существует пользователь с ID=100
When Создается заказ с user_id=100
Then Заказ успешно создается
When Пытаемся удалить пользователя с ID=100
Then Система должна предотвратить удаление (ON RESTRICT)
Or Должна каскадно удалить связанные заказы (ON CASCADE)

Заключение

Для QA-специалиста понимание ключей — это не просто теория баз данных, а практический инструмент для:

  • Проектирования эффективных тестов данных
  • Отлова критических дефектов целостности
  • Анализа сложных сценариев связанных данных
  • Оптимизации запросов при тестировании производительности

Глубокое знание работы ключей позволяет тестировать системы на более высоком уровне, предупреждая проблемы до попадания в продакшен. Особенно важно это при тестировании миграций данных, ETL-процессов и интеграций между системами, где нарушение целостности ключей может привести к катастрофическим последствиям.

Что такое ключи? | PrepBro