# Первичное поле Baserow - идентификатор строки таблицы

> Первичное поле определяет отображаемое имя строки в связях, формах и API Baserow. Как его настроить, сменить и выбрать правильный тип данных.

Source: https://opennix.org/docs/baserow/fields/primary-field/


Первичное поле - это первая колонка любой таблицы Baserow, которая служит именем строки в связях, формах и API. Статья объясняет, чем первичное поле отличается от остальных, как его настроить или заменить другим полем и какой тип данных выбрать для наглядной идентификации записей.

## Обзор

Первичное поле - первое поле каждой таблицы Baserow, уникальный идентификатор и отображаемое имя для каждой строки. При [связывании строк между таблицами](/docs/baserow/field-types/link-to-table-field/), создании отношений или упоминании записи в другом месте базы Baserow показывает именно значение первичного поля - это человекочитаемое «имя» записи.

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

Выбор первичного поля напрямую влияет на удобство базы данных. Удачное первичное поле делает записи мгновенно узнаваемыми в выпадающих списках, средствах выбора связей и по всему рабочему пространству. Неудачный выбор (ID или дата) заставляет пользователей открывать полную запись, чтобы понять, о чём речь.

> Если нужны автоматически формируемые имена (например, Invoice-001, Sprint-Dec), превратите первичное поле в [поле формулы](/docs/baserow/fields/baserow-field-overview/).

![Первичное поле в таблице Baserow](/images/baserow/fields/primary-field-overview.jpg)

## Почему первичное поле важно

**Идентификация записей:** значения первичного поля отображаются как имена строк в полях связи с таблицей, поэтому отношения понятны с первого взгляда.

**Интеграция с формами:** когда форма ссылается на другую таблицу, пользователи видят значения первичного поля в выпадающих списках выбора связанных записей.

**Ответы API:** запросы к API возвращают значение первичного поля как основной идентификатор, что помогает внешним системам интерпретировать данные.

**Удобство работы:** удачно выбранное первичное поле делает таблицу легко просматриваемой - записи узнаются мгновенно, без открытия деталей.

**Связи данных:** смена первичного поля меняет то, как связанные записи отображаются во всей базе данных, влияя на все представления со связями.

## Как настроить первичное поле

Первичное поле нельзя удалить или переместить, но его можно настраивать, как и любое другое.

### Доступные варианты настройки

- **Изменить имя и тип поля** - поменять название и тип хранимых данных;
- **Сменить первичное поле** - назначить первичным другое поле;
- **[Продублировать первичное поле](/docs/baserow/fields/adding-a-field/)** - скопировать конфигурацию первичного поля для резервной копии;
- **[Отфильтровать по первичному полю](/docs/baserow/fields/field-customization/)** - показать только строки с определённым шаблоном идентификатора;
- **[Отсортировать по первичному полю](/docs/baserow/fields/field-customization/)** - расположить строки по алфавиту или по числовому значению идентификатора.

### Как открыть настройки

- нажмите на **стрелку раскрывающегося меню** рядом с именем первичного поля;
- выберите нужный пункт настройки в меню;
- внесите изменения и сохраните.

## Как сменить первичное поле

Назначьте первичным другое поле, если текущее плохо идентифицирует строки.

### Способ 1: прямая смена первичного поля

Подходит, когда нужно сразу же переключить, какое поле служит первичным.

**Чтобы сменить первичное поле:**

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

![Смена первичного поля в Baserow](/images/baserow/fields/primary-field-change-dropdown.jpg)

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

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

### Способ 2: копирование с ручным заполнением

Подходит, когда нужно преобразовать или объединить данные перед тем, как сделать поле первичным.

**Чтобы создать и заполнить новое первичное поле:**

1. [создайте новое поле](/docs/baserow/fields/field-customization/) того же типа данных, что и планируемые первичные данные;
2. выделите все данные в текущем первичном поле;
3. скопируйте данные (`Ctrl/Cmd + C`);
4. вставьте их в новое поле (`Ctrl/Cmd + V`);
5. при необходимости отредактируйте данные нового поля;
6. воспользуйтесь способом 1, чтобы назначить новое поле первичным;
7. при желании удалите или перепрофилируйте старое первичное поле.

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

![Копирование данных первичного поля](/images/baserow/fields/primary-field-copy-paste-populate.png)

## Как сменить тип первичного поля

Преобразуйте первичное поле в другой тип данных, оставив его первичным идентификатором.

### Чтобы сменить тип первичного поля

1. нажмите **стрелку раскрывающегося меню** рядом с именем первичного поля;
2. выберите **«Изменить поле»**;
3. выберите новый **тип поля** из списка;
4. настройте параметры, специфичные для типа;
5. нажмите **«Сохранить»**, чтобы применить изменения.

![Смена типа первичного поля](/images/baserow/fields/primary-field-change-type.png)

> Baserow пытается преобразовать существующие данные в новый тип, но некоторые преобразования могут привести к потере данных. Если преобразование потеряло нужные данные, сразу нажмите `Ctrl/Cmd + Z`.

## Ограничения первичного поля

| Ограничение | Причина | Обходной путь |
|---|---|---|
| **Нельзя удалить** | Каждой строке нужен идентификатор | Назначьте первичным другое поле, затем удалите старое |
| **Нельзя скрыть** | Должно оставаться видимым для идентификации строки | Управляйте видимостью остальных полей через представления |
| **Нельзя переместить** | Зафиксировано на первой позиции | Обходного пути нет - проектируйте таблицы с учётом этого |
| **Не может быть полем связи** | Иначе возникнут циклические ссылки | Используйте поля подстановки для отображения связанных данных |
| **Всегда обязательно** | Пустое первичное поле делает строку неопознаваемой | Проектируйте первичное поле так, чтобы оно всегда содержало осмысленное значение |

Эти ограничения обеспечивают целостность базы данных и не дают строкам стать неопознаваемыми, а связям - сломаться.

## Поддерживаемые типы первичного поля

Первичное поле поддерживает почти все типы полей, включая «Создано пользователем», «Изменено пользователем» и поле соавтора, что даёт гибкость в выборе способа идентификации строк:

| Тип поля | Хорошо подходит для | Пример использования |
|---|---|---|
| **Однострочный текст** | Имена, заголовки, коды | Имена клиентов, названия товаров, названия проектов |
| **Длинный текст** | Описания | Заголовки статей, краткие заметки |
| **Число, UUID, автонумерация, длительность** | Числовые последовательные идентификаторы | Номера счетов, номера заказов, номера тикетов |
| **Рейтинг** | Редко полезно | Значения шкалы оценки (нечасто) |
| **Логическое (да/нет)** | Не рекомендуется | Только 2 возможных значения |
| **Дата, дата изменения, дата создания** | Записи, привязанные ко времени | Ежедневные журналы, исторические события |
| **Email** | Идентификация пользователя | Учётные записи, контакты по email |
| **Файл** | Идентификация документа | Библиотека файлов по имени файла |
| **URL** | Записи на основе ссылок | Каталоги сайтов, коллекции закладок |
| **Множественный выбор** | Только для отображения | Показывает несколько тегов, но пользы немного |
| **Одиночный выбор** | Таблицы по категориям | Типы статусов, уровни приоритета (когда каждый - уникальная запись) |
| **Телефон** | Записи на основе контактов | Тикеты поддержки по номеру звонящего |
| **Формула** | Вычисляемые идентификаторы | Объединение «Имя + Фамилия», генерируемые коды |
| **Подсчёт, свод, подстановка** | Отображение связанных данных | Показ имени клиента из связанной таблицы клиентов |

> **Не поддерживается:** поля [«связь с таблицей»](/docs/baserow/field-types/link-to-table-field/) не могут быть первичным полем - это исключает циклические ссылки.

## Лучшие практики выбора первичного поля

- **Выбирайте описательные идентификаторы**: используйте однострочный текст для первичного поля - текстовые идентификаторы наиболее читаемы в связях и формах;
- **Используйте формулы для составных идентификаторов**: если ни одно поле не идентифицирует строки однозначно, создайте поле формулы, объединяющее несколько полей, и назначьте его первичным для ясных уникальных идентификаторов;
- **Стремитесь к полноте данных**: убедитесь, что у каждой строки есть значение первичного поля (без пустых ячеек), значения различимы (избегайте множества записей «Без названия»), а похожие записи легко отличить друг от друга;
- **Планируйте заранее перед созданием связей**: выбирайте первичное поле до создания связей «связь с таблицей» - смена первичного поля позже обновит отображение всех связанных записей, что может запутать пользователей, если новый идентификатор менее понятен, чем старый.

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

**Почему нельзя удалить первичное поле?** Каждой таблице нужен способ идентифицировать строки. Первичное поле служит универсальным идентификатором Baserow - в связях, формах, ответах API и интерфейсе. Удаление сломало бы ссылки и сделало строки неопознаваемыми.

**Можно ли скрыть первичное поле в отдельных представлениях?** Нет, первичное поле нельзя скрыть ни в одном представлении - это гарантирует, что строки всегда имеют видимый идентификатор. Если нужно представление без видимого первичного поля, стоит пересмотреть структуру таблицы.

**Что происходит со связанными записями при смене первичного поля?** Все [связи через поля «связь с таблицей»](/docs/baserow/field-types/link-to-table-field/) автоматически обновляются и показывают новое значение первичного поля вместо старого. Например, при смене с «ID клиента» на «Имя клиента» связанные записи начинают показывать имя вместо идентификатора.

**Можно ли сделать поле подстановки первичным?** Да, поля подстановки могут быть первичными - это отображает данные из связанной таблицы как идентификатор строки. Например, в таблице заказов первичным может быть подстановка имени клиента из связанной таблицы клиентов.

**Использовать уникальные идентификаторы или описательные имена в качестве первичного поля?** По возможности используйте описательные имена. Первичное поле отображается по всему интерфейсу базы данных, и «Редизайн сайта» гораздо полезнее для человека, чем «PRJ-001». Идентификаторы на основе кодов оставляйте для таблиц, где описательного имени не существует.

## Что дальше

Первичное поле - это лишь одно из [полей таблицы Baserow](/docs/baserow/fields/baserow-field-overview/). Чтобы добавить новые поля рядом с первичным, читайте статью [«Создание полей»](/docs/baserow/fields/adding-a-field/), а для управления сортировкой, фильтрами и видимостью - [«Настройка полей»](/docs/baserow/fields/field-customization/).

