# Связи между таблицами простыми словами

Курс: Claude Code и терминал: с 0 — https://zero2claude.ru/learn/code-terminal
Канонический URL: https://zero2claude.ru/learn/code-terminal/12-7-svyazi

Связь между таблицами — это ссылка: «заказы» указывают на пользователя, а не переписывают его анкету заново. Так данные не дублируются.

До сих пор мы смотрели на таблицы по отдельности: вот пользователи, вот заказы. Но в реальной базе таблицы редко живут поодиночке — они **связаны** друг с другом. Сегодня разберём, что это значит и зачем вообще нужно, без единой страшной формулы.

## Почему нельзя свалить всё в одну таблицу

Представь интернет-магазин. У тебя есть клиенты и есть их заказы. Соблазнительно сделать одну большую таблицу, где в каждой строке-заказе записано всё: что купили, а заодно имя клиента, его телефон, адрес и email.

Проблема в том, что один клиент делает много заказов. И его имя, телефон, адрес придётся переписывать заново в **каждой** строке. Сделал человек десять заказов — десять раз продублировали его анкету. А если он сменил телефон? Придётся искать и править все десять строк, и не дай бог где-то ошибиться.

## Решение — связь между таблицами

Поэтому данные разносят по разным таблицам и **связывают**:

- таблица `users` — анкеты клиентов, каждый записан **один раз**;
- таблица `orders` — заказы, и в каждом заказе хранится не вся анкета, а только **номер клиента**.

```sql
-- таблица orders
-- id | товар    | user_id
-- 1  | Книга    | 7
-- 2  | Наушники | 7
```

Видишь `user_id`? Это и есть связь. Заказ как бы говорит: «меня сделал клиент номер 7». А кто такой номер 7, лежит в таблице `users`. Имя клиента хранится в одном месте, а заказы лишь ссылаются на него.

## Аналогия из жизни

Это как заполнять бланк заказа на почте. Ты же не переписываешь в каждой посылке полную анкету отправителя — ты указываешь номер договора или телефон, а остальное у почты уже есть. Один раз сообщил свои данные — дальше везде ссылаешься на них коротким идентификатором.

Главная польза связей — данные не дублируются. Поменял телефон клиента в его единственной анкете — и все заказы автоматически «знают» новый номер, потому что ссылаются на ту же строку.

## Попробуй

Задания в терминале нет — урок про понимание. Представь свою любимую соцсеть: есть таблица пользователей и таблица постов. Как, по-твоему, пост понимает, кто его автор? Правильно — в посте хранится номер пользователя-автора. Это та же самая связь. Держи эту картинку в голове и переходи к вопросам.
