Ответ
Primary Key (Первичный ключ, PK) и Foreign Key (Внешний ключ, FK) — это основные механизмы обеспечения целостности данных в реляционных базах, знание которых критично для тестирования.
| Аспект | Primary Key (PK) | Foreign Key (FK) |
|---|---|---|
| Назначение | Уникально идентифицирует каждую запись (строку) в своей таблице. | Устанавливает связь между записями двух таблиц. Создает ссылку из одной таблицы на другую. |
| Уникальность | Значение должно быть уникальным в рамках таблицы. Повторяющиеся значения недопустимы. | Значения могут повторяться. Многие записи в дочерней таблице могут ссылаться на одну запись в родительской. |
| Обязательность (NOT NULL) | Не может быть NULL. Каждая запись должна иметь уникальный идентификатор. | Может быть NULL, если связь необязательная. Если связь обязательная, столбец определяется как NOT NULL. |
| Количество в таблице | В таблице может быть только один первичный ключ (хотя он может состоять из нескольких столбцов — составной ключ). | В таблице может быть несколько внешних ключей, ссылающихся на разные таблицы. |
Пример для тестировщика: Представьте систему заказов:
-- Таблица пользователей (родительская)
CREATE TABLE Users (
user_id INT PRIMARY KEY, -- PK: уникальный ID пользователя
username VARCHAR(50) NOT NULL
);
-- Таблица заказов (дочерняя)
CREATE TABLE Orders (
order_id INT PRIMARY KEY, -- Свой собственный PK
user_id INT, -- FK: ссылается на PK таблицы Users
order_date DATE,
FOREIGN KEY (user_id) REFERENCES Users(user_id) -- Определение связи
);
Что важно проверять в тестах:
- Целостность при вставке: Нельзя вставить запись в
Ordersсuser_id = 999, если в таблицеUsersнет записи сuser_id = 999. Система должна вернуть ошибку нарушения внешнего ключа. - Целостность при удалении: Что произойдет с заказами (
Orders), если удалить пользователя изUsers? Варианты: каскадное удаление (CASCADE), запрет удаления (RESTRICT), обнуление ссылки (SET NULL). Поведение должно соответствовать требованиям. - Уникальность PK: Попытка добавить двух пользователей с одинаковым
user_idдолжна завершиться ошибкой. Понимание этих правил помогает проектировать тесты для проверки бизнес-логики, связанной с данными.