Подключение представления базы данных
Источник данных: основнойCommunity Edition+Введение
Подключайте представления из базы данных, например представления финансовых отчётов, поддерживаемые DBA, отфильтрованные представления клиентов или агрегированные представления, синхронизированные из разных систем. Это позволяет повторно использовать логику запросов, уже определённую в базе данных.
Поддерживаются обычные представления в пределах области владельца учётной записи подключения к основной базе данных. Материализованные представления не поддерживаются. Даже если у этой учётной записи есть права на чтение представлений других владельцев, такие представления не появятся в списке доступных для подключения. Перед подключением убедитесь, что поля представления имеют стабильные имена столбцов, а типы полей распознаются NocoBase.
Подключение представления базы данных
- В меню источников данных в разделе системных функций перейдите на главную страницу источников данных.
- Выберите источник данных Main в списке источников данных и нажмите «Configure», чтобы перейти к основной базе данных.
- В разделе управления основной базой данных нажмите «Create collection» и выберите «Connect to database view»

Source collections определяется на основе представления базы данных и указывает исходные таблицы данных, из которых предположительно взяты поля view; при сопоставлении полей он также ограничивает доступные варианты Field source.
Результат определения предназначен для ускорения настройки. Если view содержит переименованные, вычисляемые или агрегированные поля либо сложные join, результат может быть неточным или не определиться. В таком случае необходимо вручную подтвердить данные в Fields.
Сопоставление полей
Сопоставление полей — обязательная настройка после подключения представления базы данных. После подключения view NocoBase сначала определяет источник и тип базы данных для каждого поля представления: если исходное поле удалось определить, автоматически подставляются Field type, Field interface и Field display name существующего поля; если определить источник не удалось, начальный Field type задаётся на основе типа поля базы данных, после чего тип поля и настройки интерфейса необх одимо подтвердить вручную. Подробнее о настройке полей

Например, если представление возвращает customer_name из поля «Имя клиента» таблицы клиентов, его можно сопоставить с соответствующим полем таблицы клиентов. Тогда NocoBase сможет использовать заголовок, тип и настройки интерфейса исходного поля.
Если поле представления получено в результате агрегации или вычисления, например count(*) as total или sum(amount) as amount_total, обычно требуется вручную выбрать Field type и подходящий Field interface.
Field source определяется NocoBase на основе представления базы данных и указывает, какому существующему полю может соответствовать поле представления. Если поле содержит Field source, NocoBase в первую очередь повторно использует Field type и Field interface исходного поля.
Если исходное поле определить невозможно или результат не соответствует бизнес-смыслу, необходимо удалить Field source и вручную выбрать Field type, Field interface и Field display name.
Уникальный идентификатор записи
Для представления базы данных необходимо настроить Record unique key; в противном случае на странице нельзя будет создать блок, а просмотр или редактирование записей будет работать некорректно. В качестве уникального идентификатора можно выбрать одно поле или комбинацию нескольких полей. Поля, подходящие для использования в качестве Record unique key, обычно соответствуют следующим условиям:
- Значения поля уникальны
- Значения поля стабильны и не изменяются из-за сортировки, пагинации или изменения правил подсчёта
- Поле не содержит пустых значений
- Поле всегда возвращается в view
Если view основано на запросе к одной таблице, предпочтительно возвращать первичный ключ исходной таблицы. Если view основано на join нескольких таблиц или агрегации, в представлении базы данных можно сохранить стабильный бизнес-идентификатор либо сгенерировать стабильное уникальное поле на стороне базы данных.
Разрешение операций добавления, обновления и удаления
Если database view поддерживает запись, можно включить «Allow add new, update and delete actions». NocoBase разрешит добавление, обновление и удаление данных этог о представления на странице.
Представления базы данных больше подходят для использования в качестве результатов запросов и по умолчанию обрабатываются как таблицы только для чтения. Включать эту настройку рекомендуется только после подтверждения, что database view поддерживает соответствующие операции записи и права базы данных также это позволяют.
Предварительный просмотр результатов представления
Перед отправкой используйте Preview, чтобы просмотреть результаты запроса к представлению. При предварительном просмотре обратите внимание на следующее:
- корректно ли выполняется запрос к view
- полный ли набор полей
- соответствуют ли тип поля и тип интерфейса бизнес-смыслу
- существует ли Record unique key и уникальны ли его данные
- требуют ли неподдерживаемые типы полей корректировки на стороне базы данных

Настройка полей
После создания представления базы данных в списке таблиц данных нажмите «Configure fields» справа от представления, чтобы перейти на страницу настройки полей. Настройка полей предназначена для управления списком полей представления, их отображением в интерфейсе, а также сопоставлением полей database view с Field type и Field interface в NocoBase.
Обычные поля представления базы данных поступают из database view; NocoBase не добавляет, не изменяет и не удаляет реальные столбцы непосредственно в view. На странице настройки полей можно добавлять только поля связей многие-к-одному для дополнения бизнес-связей в NocoBase. Представление базы данных нельзя использовать в качестве целевой таблицы данных для поля связи; поле заголовка обычно настраивать не требуется.

Добавление поля связи
Для представления базы данных можно добавлять только поля связей многие-к-одному. Такое поле связывает существующее поле view с первичным ключом или уникальным полем целевой таблицы данных и позволяет отображать связанные записи на странице, но не создаёт реальные поля или ограничения внешнего ключа в database view.
Нажмите «Add field», чтобы добавить поле связи многие-к-одному.

Сопоставление полей
После подключения представления базы данных NocoBase определяет Field type на основе полей view и исходных полей и подбирает Field interface по умолчанию. Если источник поля, способ отображения или бизнес-смы сл не соответствуют ожиданиям, сопоставление можно изменить в настройках поля.

- Field interface (тип интерфейса / тип UI): определяет, как поле отображается и с ним взаимодействуют на стороне клиента. Например, «однострочный текст», «число», «выпадающее меню», «дата и время». Это классификация поля с точки зрения пользователя
- Field type (тип данных): определяет, как NocoBase распознаёт тип данных поля. Для полей view без исходного поля тип обычно определяется по типу поля базы данных, например
string,integer,decimal,boolean,datetimeи т. д.
Изменение Field source, Field type или Field interface не означает изменение типа поля в database view. В основном это влияет на способ отображения на странице, правила проверки и способ распознавания поля в NocoBase.
Синхронизация из базы данных
Если структура полей view была изменена на стороне базы данных, перейдите в «Configure fields» и нажмите «Sync from database», чтобы повторно считать структуру полей. После синхронизации NocoBase обновит поля: добавит новые поля, появившиеся в view, удалит поля, которые были удалены из view, и повторно определит типы и источники полей.

При синхронизации переименование поля обычно отображается как «удаление старого поля + добавление нового поля». Перед синхронизацией убедитесь, что старое поле не используется страницами, правами доступа, рабочими процессами или внешними API, чтобы избежать потери настроек. После синхронизации также необходимо повторно проверить Field type и Field interface.
Редактирование поля
Нажмите «Edit» справа от поля, чтобы изменить его настройки. Редактирование поля подходит для изменения способа отображения и использования поля в NocoBase, например его имени, описания, правил проверки или индивидуальных настроек. Подробнее о настройке полей

Редактирование настроек поля не изменяет реальные имена столбцов, типы полей, SQL-выражения или индексы в database view. Если требуется изменить фактическую структуру view, сначала измените view на стороне базы данных, а затем выполните синхронизацию с помощью «Sync from database».
Удаление поля
Нажмите «Delete» справа от поля, чтобы удалить отдельное поле. Удаление поля удаляет только сохранённое в NocoBase поле и не удаляет реальный столбец из database view.

Удаление поля может повлиять на блоки страниц, условия фильтрации, сортировку, права доступа, рабочие процессы, API и существующие настройки. Перед удалением убедитесь, что поле больше нигде не используется. Если database view по-прежнему возвращает этот столбец, при последующем выполнении «Sync from database» NocoBase может снова обнаружить это поле.
Редактирование представления
SQL-определение представления базы данных поддерживается на стороне базы данных. В списке таблиц данных нажмите «Edit» справа от нужного представления базы данных, чтобы изменить его метаданные и рабочие настройки в NocoBase; это не изменит view в базе данных. Если требуется подключить другое database view, рекомендуется создать новую таблицу данных на основе представления базы данных.

После изменения Record unique key или Allow add new, update and delete actions необходимо повторно проверить, соответствуют ли блоки страниц, права доступа и рабочие процессы ожидаемому поведению.
Удаление представления
В списке таблиц данных нажмите «Delete» справа от представления базы данных, чтобы удалить таблицу данных представления базы данных. Удаление этой таблицы данных удаляет только настройки подключения и поля в NocoBase, но не удаляет view из базы данных.
Представления базы данных в основной базе данных также можно выбрать пакетно и удалить одновременно. Перед удалением проверьте, не используются ли эта таблица данных представления базы данных блоками страниц, диагра ммами, правами доступа, рабочими процессами или внешними API.


