Дерево

Коллекция: Древовидная коллекцияCommunity Edition+

Введение

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

Дерево можно создать только на странице основной базы данных. Внешние базы данных, источники данных REST API и внешние источники данных NocoBase не поддерживают создание деревьев.

Подходящие сценарии

Дерево подходит для следующих бизнес-сценариев:

  • Организационная структура компании, иерархия отделов
  • Категории товаров, каталоги базы знаний и документов
  • Иерархия провинций, городов и районов, зоны продаж, уровни сервисных центров
  • Категории BOM, оборудования и активов

Создание и настройка

В основной базе данных нажмите «Create collection» и выберите «Tree collection», чтобы создать дерево.

20240324143228

Настройки создания дерева в основном совпадают с настройками обычной таблицы.

НастройкаОписание
Collection display nameНазвание таблицы, отображаемое в интерфейсе, например «Организационная структура», «Категории товаров» или «Уровни регионов».
Collection nameИдентификатор таблицы, используемый для внутренних ссылок в API, полях связей, правах доступа, рабочих процессах и других компонентах.
InheritsВыберите родительскую таблицу, от которой нужно наследовать настройки. Отображается только при использовании PostgreSQL в качестве основной базы данных.
CategoriesКатегории таблицы. Категории влияют только на способ организации интерфейса управления таблицами и не изменяют структуру таблицы.
DescriptionОписание таблицы. Здесь можно указать, какие иерархические данные хранит дерево, кто их поддерживает и для каких фильтров страниц они используются.
Preset fieldsПредустановленные поля. При создании дерева рекомендуется сохранить системные поля и встроенные поля дерева.

Встроенные поля

После создания дерево обычно содержит следующие встроенные поля. parentId, parent и children используются для хранения иерархических связей.

ПолеИмя поляОписание
IDidПоле первичного ключа по умолчанию, используется для уникальной идентификации записи.
Время созданияcreatedAtАвтоматически сохраняет время создания записи.
СоздательcreatedByАвтоматически сохраняет пользователя, создавшего запись.
Время обновленияupdatedAtАвтоматически сохраняет время последнего обновления записи.
ОбновилupdatedByАвтоматически сохраняет пользователя, последним обновившего запись.
Parent IDparentIdСохраняет ID родительского узла. Для корневого узла обычно имеет пустое значение.
ParentparentПоле связи «многие к одному», указывающее на родительский узел в текущей таблице.
ChildrenchildrenПоле связи «один ко многим», представляющее дочерние узлы текущего узла.
ПространствоspaceДоступно после включения плагина нескольких пространств и используется для изоляции данных по пространствам. Не отображается, если функция нескольких пространств не включена.

20240324143555

Внимание

Не допускайте образования циклических связей в данных дерева: например, если родительским узлом A является B, а родительским узлом B снова является A. Циклические связи могут привести к некорректному отображению дерева и результатам фильтрации.

Поле первичного ключа

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

Если у дерева нет первичного ключа, при редактировании таблицы необходимо задать «Record unique key». В противном случае блоки страниц могут неправильно отображать или редактировать записи, а иерархическое представление может нестабильно определять узлы.

Использование в настройках страниц

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

БлокНазначение
Блок таблицыОтображение иерархических записей для просмотра и управления родительско-дочерней структурой.
Блок формыДобавление или редактирование отдельной записи узла дерева.
Блок подробностейПросмотр подробностей отдельного узла дерева.
Блок иерархической фильтрацииФильтрация других блоков данных с помощью иерархической структуры, часто используется для фильтрации по категориям, организациям, регионам и другим уровням.

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

В списке таблиц нажмите «Edit» справа от дерева, чтобы изменить отображаемое имя таблицы, категории, описание, режим простой пагинации, «Record unique key» и другие настройки.

Обычно не рекомендуется без необходимости удалять поля родительско-дочерних связей дерева или изменять их назначение. Если требуется изменить иерархическую структуру, сначала измените связи с родительскими узлами в данных записей.

Удаление таблицы

В списке таблиц нажмите «Delete» справа от дерева, чтобы удалить его.

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

Предупреждение

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

Связанные ссылки