关联
关联字段把一张表的记录连接到另一张表的记录。cell 存储目标记录 ID 数组(string[]),渲染时异步解析为显示文本,编辑时弹出目标表记录选择器。
创建关联字段
Section titled “创建关联字段”- 在表格里点击「+」加一列,选择 🔗 关联
- 选择目标表(要连接到哪张表)
- 选择显示字段(单元格里展示目标记录的哪个列作为标题)
- 可选:勾选「在目标表创建反向列」启用双向关联
创建后,点击单元格弹出选择器,勾选目标表的记录即可建立关联。可随时增删。
最基本的用法:本表连到目标表,一条记录可以关联多条目标记录。
典型场景:
- 客户 → 订单:客户表关联订单表,在客户卡片里直接看到它的所有订单
- 文章 → 标签:文章表关联标签表,一篇文章打多个标签
创建时勾选「在目标表创建反向列」,星汉会在目标表自动建一条关联字段指回本表。两条关联自动互相同步。
双向关联通过**写穿(write-through)**实现数据一致性:
- 在 A 表勾选了 B 表某条记录 → B 表那个记录的「反向列」里自动出现 A 表记录
- 在 B 表的反向列里编辑(增加或移除关联)→ A 表正向列同步变更
- 反向列的写入实际修改的是正向列的数据,自己的格子绝不直写,保证不会出现两边不一致
典型场景:
| 场景 | A 表(正向) | B 表(反向) |
|---|---|---|
| 项目 ↔ 任务 | 项目的所有任务 | 任务所属项目 |
| 订单 ↔ 商品 | 订单包含哪些商品 | 商品被哪些订单购买 |
| 学生 ↔ 课程 | 学生选了哪些课 | 这门课有哪些学生 |
| 员工 ↔ 部门 | 员工所属部门 | 部门的成员列表 |
反向列的限制
Section titled “反向列的限制”- 反向列不可删除(删正向列时自动连带移除)
- 反向列的属性(是否反向、关联的正向列 ID)创建后不可改
- 反向列不支持再建反向列(不嵌套)
显示的文本怎么来的
Section titled “显示的文本怎么来的”关联单元格展示的文本是实时解析的,不是存储的快照。过程:
- 从 cell 值拿到
recordId[] - 去目标表异步查这些 recordId 对应的记录
- 取它们的「显示字段」值作为标题
- 多条记录用逗号拼接显示
所以如果目标表的记录改了名字,关联列里看到的文本也会自动更新。
清除无效关联
Section titled “清除无效关联”如果关联的目标记录被删除了,关联列里会留下一个「悬空 ID」(显示为原始 ID 字符串,因为查不到标题)。右键关联列表头 →「清除无效关联」,一键清理所有悬空 ID。