跳转到内容

关联

关联字段把一张表的记录连接到另一张表的记录。cell 存储目标记录 ID 数组(string[]),渲染时异步解析为显示文本,编辑时弹出目标表记录选择器。

  1. 在表格里点击「+」加一列,选择 🔗 关联
  2. 选择目标表(要连接到哪张表)
  3. 选择显示字段(单元格里展示目标记录的哪个列作为标题)
  4. 可选:勾选「在目标表创建反向列」启用双向关联

创建后,点击单元格弹出选择器,勾选目标表的记录即可建立关联。可随时增删。

最基本的用法:本表连到目标表,一条记录可以关联多条目标记录。

典型场景:

  • 客户 → 订单:客户表关联订单表,在客户卡片里直接看到它的所有订单
  • 文章 → 标签:文章表关联标签表,一篇文章打多个标签

创建时勾选「在目标表创建反向列」,星汉会在目标表自动建一条关联字段指回本表。两条关联自动互相同步。

双向关联通过**写穿(write-through)**实现数据一致性:

  • 在 A 表勾选了 B 表某条记录 → B 表那个记录的「反向列」里自动出现 A 表记录
  • 在 B 表的反向列里编辑(增加或移除关联)→ A 表正向列同步变更
  • 反向列的写入实际修改的是正向列的数据,自己的格子绝不直写,保证不会出现两边不一致

典型场景:

场景A 表(正向)B 表(反向)
项目 ↔ 任务项目的所有任务任务所属项目
订单 ↔ 商品订单包含哪些商品商品被哪些订单购买
学生 ↔ 课程学生选了哪些课这门课有哪些学生
员工 ↔ 部门员工所属部门部门的成员列表
  • 反向列不可删除(删正向列时自动连带移除)
  • 反向列的属性(是否反向、关联的正向列 ID)创建后不可改
  • 反向列不支持再建反向列(不嵌套)

关联单元格展示的文本是实时解析的,不是存储的快照。过程:

  1. 从 cell 值拿到 recordId[]
  2. 去目标表异步查这些 recordId 对应的记录
  3. 取它们的「显示字段」值作为标题
  4. 多条记录用逗号拼接显示

所以如果目标表的记录改了名字,关联列里看到的文本也会自动更新。

如果关联的目标记录被删除了,关联列里会留下一个「悬空 ID」(显示为原始 ID 字符串,因为查不到标题)。右键关联列表头 →「清除无效关联」,一键清理所有悬空 ID。