Чем отличаются первичный ключ и внешний ключ в базе данных, и как они используются?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Первичный ключ однозначно идентифицирует каждую строку таблицы. Внешний ключ связывает строки одной таблицы со строками другой и обеспечивает целостность связей. Обычно важно показать, что первичный ключ уникален и не может быть NULL, а внешний ключ может повторяться и ссылается на существующую запись.
Определение:
Первичный ключ (Primary Key) — это поле или набор полей, которые уникально определяют запись в таблице. Значение первичного ключа не должно повторяться и обычно не может быть NULL.
Внешний ключ (Foreign Key) — это поле или набор полей, которые ссылаются на первичный или уникальный ключ другой таблицы. Он нужен для связи таблиц и контроля ссылочной целостности: нельзя сослаться на несуществующую запись.
Пример использования:
Например, есть таблица users и таблица orders.
В users поле id — первичный ключ, а в orders поле user_id — внешний ключ, который указывает на users.id.
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
amount DECIMAL(10, 2),
CONSTRAINT fk_orders_user
FOREIGN KEY (user_id) REFERENCES users(id)
);
Пояснение кода:
users.id — уникальный идентификатор пользователя. Он нужен, чтобы однозначно находить конкретную строку.
orders.user_id хранит ссылку на пользователя, который сделал заказ.
Ограничение FOREIGN KEY (user_id) REFERENCES users(id) не позволит добавить заказ с user_id, которого нет в таблице users. Это защищает данные от “битых” ссылок.
Ключевые моменты:
- Первичный ключ уникально идентифицирует запись в своей таблице.
- Внешний ключ связывает одну таблицу с другой.
- Первичный ключ не должен повторяться и обычно не бывает
NULL. - Внешний ключ может повторяться, потому что на одного пользователя может ссылаться много заказов.
- Внешний ключ обеспечивает ссылочную целостность данных.
- В одной таблице может быть только один первичный ключ, но может быть несколько внешних ключей.