Подключение представления базы данных

Источник данных: основнойCommunity Edition+

Введение

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

Подсказка

Поддерживаются обычные представления в пределах области владельца учётной записи подключения к основной базе данных. Материализованные представления не поддерживаются. Даже если у этой учётной записи есть права на чтение представлений других владельцев, такие представления не появятся в списке доступных для подключения. Перед подключением убедитесь, что поля представления имеют стабильные имена столбцов, а типы полей распознаются NocoBase.

Подключение представления базы данных

  1. В меню источников данных в разделе системных функций перейдите на главную страницу источников данных.
  2. Выберите источник данных Main в списке источников данных и нажмите «Configure», чтобы перейти к основной базе данных.
  3. В разделе управления основной базой данных нажмите «Create collection» и выберите «Connect to database view»

configure_main_datasource connect_view connect_view_configure

НастройкаОписание
Collection display nameИмя представления базы данных, отображаемое в интерфейсе, например «Представление финансового отчёта» или «Представление статистики клиентов». Рекомендуется использовать имя, отражающее назначение представления.
Collection nameИдентификационное имя представления базы данных в NocoBase, используемое для внутренних ссылок в API, полях связей, правах доступа, рабочих процессах и т. д. Оно создаётся автоматически, но его можно изменить вручную; допускаются только буквы, цифры и символы подчёркивания, имя должно начинаться с буквы.
Database viewВыберите представление базы данных, которое нужно подключить. Из представления считываются структура полей и результаты запросов. При редактировании можно просмотреть текущее подключённое view, но нельзя переключиться на другое view.
CategoriesКатегория таблицы данных. Влияет только на организацию интерфейса управления таблицами данных и не изменяет само представление базы данных.
DescriptionОписание таблицы данных. Рекомендуется указать, кто поддерживает это view, какие данные оно запрашивает и для каких страниц или отчётов используется.
Use simple pagination modeПростой режим пагинации. После включения при разбиении блока таблицы пропускается подсчёт общего количества записей. Подходит для представлений с большим объёмом данных и снижает нагрузку на запросы.
Record unique keyУникальный идентификатор записи. У представлений базы данных обычно нет первичного ключа, поэтому необходимо выбрать поле, однозначно определяющее запись; в противном случае просмотр или редактирование записей в блоке может работать некорректно.
Source collectionsИсточник полей представления базы данных. Используется для связывания полей представления с полями существующих таблиц данных, чтобы NocoBase мог распознать типы полей и типы интерфейса.
FieldsНастройка сопоставления полей. Используется для подтверждения имени, заголовка, типа данных и типа интерфейса каждого поля представления.
PreviewПредварительный просмотр результатов представления базы данных. Перед отправкой можно проверить, соответствуют ли сопоставление полей и отображение ожидаемому результату.
Allow add new, update and delete actionsРазрешить ли добавление, обновление и удаление данных в представлении базы данных. После включения NocoBase откроет соответствующие операции на странице; успешная запись по-прежнему зависит от того, допускает ли само view запись и есть ли у учётной записи базы данных права на insert, update и delete.
Подсказка

Source collections определяется на основе представления базы данных и указывает исходные таблицы данных, из которых предположительно взяты поля view; при сопоставлении полей он также ограничивает доступные варианты Field source.

Результат определения предназначен для ускорения настройки. Если view содержит переименованные, вычисляемые или агрегированные поля либо сложные join, результат может быть неточным или не определиться. В таком случае необходимо вручную подтвердить данные в Fields.

Сопоставление полей

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

connect_view_configure_field_source connect_view_configure_field_interface

НастройкаОписание
Field sourceВыбор существующей таблицы данных и поля, из которых взято поле представления. После выбора источника NocoBase может повторно использовать Field type и Field interface исходного поля.
Field typeЕсли у поля представления нет однозначно определённого источника, необходимо вручную подтвердить тип данных поля.
Field interfaceОпределяет, как поле отображается и вводится на странице, например как однострочный текст, число, дата или выпадающий список.
Field display nameИмя поля, отображаемое в интерфейсе. Рекомендуется использовать понятное бизнес-пользователям имя.

Например, если представление возвращает 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 и уникальны ли его данные
  • требуют ли неподдерживаемые типы полей корректировки на стороне базы данных

connect_view_configure_preview

Настройка полей

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

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

Подробнее о настройке полей

configure_view

Добавление поля связи

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

Нажмите «Add field», чтобы добавить поле связи многие-к-одному.

Подробнее о настройке полей

add_view_field add_view_field_configure

НастройкаОписание
Field display nameИмя поля связи многие-к-одному, отображаемое в интерфейсе. Рекомендуется использовать понятное бизнес-пользователям имя, например «Клиент» или «Связанный заказ».
Field nameИдентификационное имя поля связи многие-к-одному, сохраняемое в NocoBase и используемое для внутренних ссылок в API, правах доступа, рабочих процессах и т. д.
Source collectionИсходная таблица данных, то есть текущая таблица данных представления базы данных. Она определяет, из какого поля таблицы данных выбирается Foreign key; при добавлении поля связи многие-к-одному к представлению базы данных обычно оставляется текущее view.
Target collectionЦелевая таблица данных, с которой устанавливается связь. Обычно выбираются обычные таблицы данных, таблицы внешних баз данных и другие реальные таблицы данных; представление базы данных выбрать нельзя.
Foreign keyПоле текущего представления базы данных, используемое для хранения идентификатора целевой записи. Это поле должно стабильно возвращаться в результатах запроса view.
Target keyПоле целевой таблицы данных, с которым сопоставляется Foreign key; обычно выбирается первичный ключ или уникальное поле.
DescriptionОписание поля. Здесь можно указать смысл связи, источник данных, способ поддержки или важные примечания.

Сопоставление полей

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

Подробнее о настройке полей

edit_view_field_configure

Подсказка
  • 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, и повторно определит типы и источники полей.

edit_view_sync_from_database edit_view_sync_from_database_configure

Внимание

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

Редактирование поля

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

edit_field edit_field_configure

Внимание

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

Удаление поля

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

Подробнее о настройке полей

delete_field

Внимание

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

Редактирование представления

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

edit_view edit_view_configure

НастройкаОписание
Collection display nameИмя представления базы данных, отображаемое в интерфейсе. Его можно заменить на понятное бизнес-пользователям имя, например «Представление финансового отчёта» или «Представление статистики клиентов».
Collection nameИдентификационное имя представления базы данных в NocoBase. При редактировании изменить его нельзя.
Database viewТекущее подключённое database view. В режиме редактирования доступно только для чтения, переключиться на другое view нельзя.
CategoriesКатегория таблицы данных. Влияет только на организацию интерфейса управления источниками данных и не изменяет database view.
DescriptionОписание таблицы данных. Здесь можно указать ответственного за поддержку view, источник запроса, а также страницы или отчёты, где оно используется.
Use simple pagination modeПростой режим пагинации. После включения при разбиении блока таблицы пропускается подсчёт общего количества записей; подходит для view с большим объёмом данных.
Record unique keyУникальный идентификатор записи. Используется для определения записи; обычно выбирается стабильное уникальное поле или комбинация полей в view.
Allow add new, update and delete actionsРазрешение на добавление, обновление и удаление. Включать его рекомендуется только в том случае, если само database view поддерживает запись и учётная запись базы данных имеет соответствующие права.
Внимание

После изменения Record unique key или Allow add new, update and delete actions необходимо повторно проверить, соответствуют ли блоки страниц, права доступа и рабочие процессы ожидаемому поведению.

Удаление представления

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

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