树表

数据表:树社区版+

介绍

树表适合保存有上下级关系的数据,比如组织架构、商品分类、地区层级、部门目录、知识库目录。树表使用邻接表结构保存父子关系,每条记录都可以指向自己的父节点。

树表只能通过主数据库页面创建,外部数据库、REST API 数据源和外部 NocoBase 数据源不支持创建树表。

适用场景

树表适合这些业务场景:

  • 公司组织架构、部门层级
  • 商品分类、知识库目录、文档目录
  • 省市区、销售区域、服务网点层级
  • BOM 分类、设备分类、资产分类

创建配置

在主数据库中点击「Create collection」,选择「Tree collection」可以创建树表。

20240324143228

树表的创建配置与普通表基本一致。

配置说明
Collection display name数据表在界面中显示的名称,比如「组织架构」「商品分类」「地区层级」。
Collection name数据表的标识名称,用于 API、关系字段、权限、工作流等内部引用。
Inherits选择要继承的父表。只有主数据库是 PostgreSQL 时可见。
Categories数据表分类。分类只影响数据表管理界面的组织方式,不改变数据表结构。
Description数据表说明。可以写这个树表保存什么层级数据、由谁维护、用于哪些页面筛选。
Preset fields预设字段。创建树表时建议保留系统字段和树表内置字段。

内置字段

树表创建后通常包含这些内置字段。parentIdparentchildren 用来保存树形层级关系。

字段字段名说明
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 是否仍然依赖它。

警告

树表经常被用作其他区块的筛选条件。删除树表后,相关树筛选区块和依赖该分类层级的页面配置都可能失效。

相关链接