Вопрос проверяет понимание механизмов реляционных баз данных для идентификации и ссылочной целостности.
PRIMARY KEY — уникальный идентификатор записи в таблице и не может быть NULL. FOREIGN KEY — поле или набор полей, указывающих на PRIMARY KEY другой (или той же) таблицы для обеспечения ссылочной целостности.
PRIMARY KEY:
Обеспечивает уникальность строк.
Может состоять из одного или нескольких столбцов (составной ключ).
Обычно создаётся с AUTO_INCREMENT или SERIAL.
FOREIGN KEY:
Создаёт связь между таблицами.
Ограничение FOREIGN KEY проверяет, что значение существует в родительской таблице.
Обеспечивает целостность данных.
Пример:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);Поведение при удалении/обновлении:
ON DELETE CASCADE — удаляет зависимые записи.
ON UPDATE RESTRICT — запрещает изменение ключа, если есть зависимые.
Когда применять:
PRIMARY KEY — всегда для уникальной идентификации.
FOREIGN KEY — для связных сущностей и контроля целостности.