# Связь с таблицей в Baserow - поле для связей между таблицами

> Связь с таблицей соединяет строки между таблицами Baserow: создание поля, ручная и групповая привязка, односторонняя связь и модальное окно выбора строк.

Source: https://opennix.org/docs/baserow/field-types/link-to-table-field/


Поле «Связь с таблицей» - самый мощный способ построить отношения между таблицами Baserow: оно соединяет строки одной таблицы со строками другой (или той же самой) и открывает доступ к подстановке и своду данных. Статья описывает, что такое это поле и зачем оно нужно, как создать его и привязать строки, какие есть настройки - односторонняя связь, отношение «один к одному», ограничение выбора представлением - и как пользоваться модальным окном выбора строк.

Подробнее о настройке полей: [«Настройка полей»](/docs/baserow/fields/field-customization/).

> Поле «Связь с таблицей» нельзя назначить [первичным полем](/docs/baserow/fields/primary-field/) таблицы.

![Создание нового поля связи с таблицей и выбор целевой таблицы](/images/baserow/field-types/link-to-table-field-create-select-table.png)

## Что такое поле «Связь с таблицей»

Поле «Связь с таблицей» создаёт динамическую связь между строкой одной таблицы и одной или несколькими строками другой таблицы (или той же самой). Это позволяет строить продуманные реляционные базы данных и избегать дублирования и рассинхронизации данных.

Например, есть таблица **Клиенты** и таблица **Заказы**. Вместо того чтобы заново вводить имя и email клиента в каждой строке таблицы заказов, можно связать заказ с нужной записью в таблице клиентов через поле «Связь с таблицей».

Это даёт возможность:

- быстро увидеть все заказы конкретного клиента;
- использовать поля [подстановки](/docs/baserow/field-types/lookup-field/) и [свода](/docs/baserow/field-types/rollup-field/), чтобы автоматически подтягивать данные клиента (например, email) в таблицу заказов;
- изменить имя клиента один раз в таблице клиентов - и оно обновится везде, где встречается связь.

## Как создать поле «Связь с таблицей»

1. В таблице нажмите на значок плюса `+`, чтобы [добавить новое поле](/docs/baserow/fields/adding-a-field/).
2. Выберите **«Связь с таблицей»** из выпадающего меню типов поля.
3. В выпадающем списке **«Выберите таблицу для связи»** укажите таблицу, с которой нужно установить отношение.
4. Нажмите **«Создать»**.

Baserow автоматически создаст связь. В связанной таблице появится соответствующее новое поле, показывающее, какие строки привязаны обратно к текущей записи.

## Как привязывать и отвязывать строки

После создания поля можно начинать связывать записи:

1. Нажмите на кнопку **+** внутри ячейки колонки связи с таблицей.
2. Откроется **модальное окно выбора строк** со списком всех строк связанной таблицы.
3. Нажмите на одну или несколько строк, чтобы выбрать их. Окно закроется, а выбранные строки появятся в ячейке в виде цветных меток.

**Чтобы отвязать строку**, нажмите на `x` на метке той строки, которую нужно убрать.

![Отвязка строки нажатием на 'x' на её метке](/images/baserow/field-types/link-to-table-field-unlink-row.png)

## Настройка поля

Поле «Связь с таблицей» можно настроить так, чтобы контролировать количество допустимых отношений и то, какие строки доступны для выбора. Подробнее: [«Настройка полей»](/docs/baserow/fields/field-customization/).

### Управление созданием связанного поля (односторонняя связь)

При создании поля «Связь с таблицей» по умолчанию Baserow создаёт *обратное поле* в связанной таблице - так возникает **двусторонняя связь**, стандартная для большинства реляционных баз данных.

Это поведение можно изменить. В меню создания или редактирования поля есть флажок **«Создать связанное поле в связанной таблице»** (по умолчанию включён).

#### Флажок установлен (по умолчанию)

Создаётся стандартная **двусторонняя связь**. Если связать таблицу «Задачи» с таблицей «Проекты», в таблице «Проекты» появится поле связи «Задачи». Это рекомендуемая настройка для большинства сценариев: она позволяет видеть отношение из обеих таблиц и использовать [подстановки](/docs/baserow/field-types/lookup-field/) или [своды](/docs/baserow/field-types/rollup-field/) в любом направлении.

#### Флажок снят (односторонняя связь)

Если снять флажок, Baserow создаст поле связи только в текущей таблице (например, поле «Проекты» в таблице «Задачи»). В связанной таблице «Проекты» новое поле «Задачи» создано не будет.

Это полезно, чтобы не захламлять центральные справочные таблицы. Например, если 10 разных таблиц (Задачи, Обращения, Документы и так далее) связаны с одной таблицей «Категории», можно снять флажок, чтобы не добавлять в «Категории» десять обратных полей связи.

> При односторонней связи отношение нельзя увидеть из связанной таблицы. Также нельзя добавить в таблицу «Проекты» поле [подстановки](/docs/baserow/field-types/lookup-field/) или [свода](/docs/baserow/field-types/rollup-field/), чтобы подтянуть данные из «Задач», - потому что нужного поля связи там просто нет.

![Настройка отношения «один к одному» снятием флажка «Разрешить множественный выбор»](/images/baserow/field-types/link-to-table-field-one-to-one-relationship.jpg)

### Отношение «один к одному»

По умолчанию поле «Связь с таблицей» позволяет привязать *несколько* строк (отношение «многие ко многим»). Это можно ограничить до отношения «один к одному», сняв флажок **«Разрешить множественные отношения»** при создании поля или позже, при его редактировании.

Такая настройка полезна, когда модель данных требует ровно одной связи - например, один «Проект» связан с одним «Руководителем проекта».

### Ограничение выбора представлением

Можно ограничить набор строк, доступных для привязки, конкретным [представлением](/docs/baserow/views/overview-of-baserow-views/). Это удобно, если пользователи должны выбирать только из релевантных, заранее отфильтрованных данных.

1. Нажмите на стрелку рядом с именем поля и выберите **«Редактировать поле»**.
2. Найдите опцию **«Ограничить выбор представлением»**.
3. Откройте выпадающий список и выберите нужное представление, из которого будут доступны строки для выбора.

![Ограничение доступных для связи строк конкретным представлением](/images/baserow/field-types/link-to-table-field-limit-selection-view.png)

### Связь таблицы саму с собой

Таблицу можно связать саму с собой. Это мощная возможность для таких сценариев, как:

- связать «Задачи» с «Подзадачами» внутри одной таблицы;
- построить организационную структуру, связав «Сотрудников» с их «Руководителями».

Для этого при настройке поля в выпадающем списке **«Выберите таблицу для связи»** выберите ту же таблицу, в которой сейчас находитесь.

## Модальное окно выбора строк

Модальное окно выбора строк - мощный инструмент для поиска и управления связанными записями.

### Создание новых строк на лету

Если нужной для связи записи ещё не существует, её можно создать прямо в модальном окне. Нажмите на кнопку **+** внизу окна, чтобы создать новую строку в связанной таблице - она будет автоматически привязана.

![Создание новой строки прямо из модального окна выбора строк](/images/baserow/field-types/link-to-table-field-create-row-modal.png)

### Настройка отображаемых полей

Модальное окно можно настроить так, чтобы показывать только нужную информацию. Нажмите на значок **«…»** (или кнопку «Скрыть поля») в окне, чтобы изменить ширину полей, скрыть второстепенные поля и изменить их порядок.

![Настройка отображаемых полей и их порядка в модальном окне выбора строк](/images/baserow/field-types/link-to-table-field-customize-modal-fields.webp)

### Поиск и навигация

Если в связанной таблице много строк, можно воспользоваться строкой поиска вверху окна, чтобы мгновенно найти нужную запись. Если строк больше 10, появятся стрелки навигации.

![Поиск конкретной строки в модальном окне выбора строк](/images/baserow/field-types/link-to-table-field-search-modal.png)

## Связанные возможности

### Открытие связанной строки в укрупнённом виде

При клике на метку связанной строки открывается [укрупнённый вид](/docs/baserow/rows/enlarging-rows/) («модальное окно детализации строки») этой записи. Так можно увидеть все детали связанной записи, не покидая текущую таблицу. Внутри этого окна можно кликать по вложенным связям и открывать несколько укрупнённых видов друг за другом.

### Преобразование существующего поля

Существующее поле (например, текстовое) можно преобразовать в поле «Связь с таблицей».

> **Предупреждение:** такое действие может **удалить все данные**, которые сейчас хранятся в этом поле. Перед преобразованием обязательно сделайте резервную копию данных (например, продублировав поле).

Чтобы преобразовать поле, откройте выпадающее меню, выберите **«Редактировать поле»** и смените тип поля на **«Связь с таблицей»**. После этого Baserow предложит выбрать таблицу для связи.

### Групповая привязка строк

Записи можно привязывать массово: скопируйте список названий (совпадающих со значениями [первичного поля](/docs/baserow/fields/primary-field/) связанной таблицы) из Excel или Google Таблиц и вставьте их прямо в поле связи в Baserow. Baserow автоматически найдёт и свяжет совпадающие записи.

## Часто задаваемые вопросы

**В чём разница между полем «Связь с таблицей» и полем множественного выбора?** [Поле множественного выбора](/docs/baserow/field-types/multiple-select-field/) хранит статичный список *текстовых вариантов*, которые вы задаёте сами. Поле «Связь с таблицей» соединяет запись с *другими записями* в другой таблице. Используйте множественный выбор для простых неизменных меток (например, «Приоритет: высокий»). Используйте «Связь с таблицей», когда вашими «вариантами» на самом деле служат сами записи данных (например, «Клиент: Иван Смирнов»).

**В чём разница между полем «Связь с таблицей», полем подстановки и полем свода?** Сначала нужно создать **поле «Связь с таблицей»**. [Поле подстановки](/docs/baserow/field-types/lookup-field/) и [поле свода](/docs/baserow/field-types/rollup-field/) *используют* эту связь, чтобы подтягивать данные из связанных записей.

- **Связь с таблицей**: создаёт отношение (например, связывает «Заказ» с «Клиентом»).
- **Подстановка**: «подтягивает» и показывает конкретное поле связанной записи (например, показывает «Email клиента» в таблице заказов).
- **Свод**: выполняет вычисление по связанным записям (например, показывает «Сумму покупок» этого клиента).

**Есть ли автоматизированный способ связать сразу несколько строк?** Если в таблице или CSV-файле есть список названий (или значений первичного поля), можно скопировать эту колонку и вставить её прямо в поле связи с таблицей в Baserow. Baserow попытается сопоставить текст с существующими записями и связать их. Вставка в поле связи выполняет операцию поиска и привязки за один шаг.

**Что произойдёт в связанной таблице, когда я свяжу таблицу А с таблицей Б?** Когда вы создаёте в таблице А поле «Связь с таблицей», указывающее на таблицу Б, Baserow автоматически создаёт соответствующее поле связи в таблице Б - при условии, что был выбран флажок «Создать связанное поле в связанной таблице». Это новое поле показывает, какие строки таблицы А «ссылаются обратно» на каждую запись в таблице Б, - отношение остаётся видимым и доступным с обеих сторон.

**Что произойдёт, если удалить строку, на которую ссылаются из других таблиц?** Если удалить строку (например, запись клиента), все ссылки на эту строку в других таблицах (например, в таблице заказов) будут автоматически убраны. Метки связи просто исчезнут из ячеек, потому что записи, на которые они указывали, больше не существует.

**Можно ли связать несколько разных таблиц с одной таблицей?** Да, вы не ограничены одной связью. Например, таблица «Задачи» может содержать одно поле «Связь с таблицей», связывающее её с «Пользователями» (для исполнителя), и второе поле связи с «Проектами» (для проекта). Полей «Связь с таблицей» можно добавить столько, сколько нужно.

## Что дальше

Поле «Связь с таблицей» - основа для полей [подстановки](/docs/baserow/field-types/lookup-field/), [подсчёта](/docs/baserow/field-types/count-field/) и [свода](/docs/baserow/field-types/rollup-field/): без него эти вычисляемые поля не работают. Изучите [«Подстановку»](/docs/baserow/field-types/lookup-field/), чтобы подтягивать данные из связанной таблицы, или вернитесь к [обзору типов полей](/docs/baserow/fields/baserow-field-overview/), чтобы сравнить связь с таблицей с другими вариантами.

