Вопрос проверяет базовое понимание реляционных баз данных и принципов целостности данных.
Первичный ключ однозначно идентифицирует строку в таблице. Внешний ключ ссылается на первичный ключ другой таблицы. Эти ключи обеспечивают целостность данных. Они предотвращают появление “битых” связей между таблицами.
Реляционные базы данных строятся вокруг связей между таблицами. Первичные и внешние ключи — основа этих связей.
Определение:
Первичный ключ — это поле или набор полей, которые уникально идентифицируют каждую строку таблицы.
Уникальность
Не может быть NULL
Один на таблицу
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT
);
Здесь id — первичный ключ.
Определение:
Внешний ключ — это поле, которое ссылается на первичный ключ другой таблицы.
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id)
);
user_id указывает, какому пользователю принадлежит заказ.
Связь между таблицами
Защита от некорректных данных
Поддержка каскадных операций
ON DELETE CASCADE
Возможны “висячие” записи
Логика целостности уходит в код
Повышается риск ошибок
Первичный ключ идентифицирует запись, внешний ключ связывает таблицы между собой. Вместе они обеспечивают целостность и предсказуемость данных.