← Все вопросы

Что такое первичный и внешний ключ в базе данных?

Задан 17 дней назад1.1к просмотров2 ответа
16

Часто встречаю «primary key» и «foreign key», но не понимаю разницу и зачем они нужны. Объясните на таблицах users и orders, пожалуйста.

2 ответа

23
✓ Принятый ответ — помог автору

Простыми словами:

Первичный ключ (PRIMARY KEY) — столбец, который уникально определяет строку. У каждого пользователя свой id, двух одинаковых нет, и он не может быть NULL. По нему ты однозначно находишь конкретную запись.

Внешний ключ (FOREIGN KEY) — столбец, который ссылается на первичный ключ другой таблицы. В orders поле user_id ссылается на users.id — так заказ «знает», чей он.

CREATE TABLE users (
  id   INTEGER PRIMARY KEY,
  name TEXT
);

CREATE TABLE orders (
  id      INTEGER PRIMARY KEY,
  user_id INTEGER REFERENCES users(id),  -- внешний ключ
  amount  NUMERIC
);

Зачем FK: база сама не даст создать заказ с несуществующим user_id и (по настройке) не даст удалить юзера, у которого есть заказы. Это защищает данные от рассинхрона.

Oleg Lubomirsky связка users.id ↔ orders.user_id всё расставила по местам, спасибо! · 7 дней назад
8

PK — уникальный идентификатор строки в своей таблице. FK — ссылка на PK другой таблицы.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект