工单系统数据建模:两张表搞定完整教程与模板
上一章完成了 NocoBase 的安装和环境熟悉,现在进入核心环节:为工单系统搭建数据模型。本章将定义工单与分类两张数据表,配置字段类型(单行文本、下拉菜单、多对一关联等),并建立表间的映射关系。数据模型构筑了系统的基石——先理清需要存储哪些信息以及它们之间的逻辑关联,后续的界面搭建和权限配置才能顺利衔接。
2.1 数据表与字段的核心概念
借助Excel类比,NocoBase的数据表概念一目了然:
| Excel 概念 | NocoBase 概念 | 说明 |
|---|---|---|
| 工作表 | 数据表(Collection) | 同一类数据的容器 |
| 列标题 | 字段(Field) | 刻画数据的属性维度 |
| 每一行 | 记录(Record) | 一条完整的数据条目 |
比如我们即将创建的“工单表”,本质上就是一张Excel表格——每一列定义一个字段(标题、状态、优先级……),每一行承载一条工单记录。
但NocoBase的功能远超Excel。它支持多种数据表类型,不同表型内置差异化能力:
| 表类型 | 适用场景 | 示例 |
|---|---|---|
| 普通表 | 标准业务数据 | 工单、订单、客户库 |
| 树表 | 带层级关系的数据 | 分类目录、部门架构 |
| 日历表 | 日期相关事件 | 会议安排、排班表 |
| 文件表 | 附件资源管理 | 文档库、图片集 |
本次操作主要用到普通表和树表,其他类型后续按需学习。
进入数据源管理:点击左下角 「数据源管理」 图标(齿轮旁的数据库形状图标),可见「主数据源」——所有业务表均在此处构建。
2.2 创建核心表:工单
直接进入实操,打造系统的核心——工单表。
创建表
- 在数据源管理页面,点击 主数据源 进入详情
- 点击 「创建数据表」,选择 「普通表」
- 数据表名称:
tickets,数据表标题:工单
创建表时,系统默认勾选一组系统字段,自动记录每条数据的元信息:
| 字段 | 说明 |
|---|---|
| ID | 主键,分布式唯一标识 |
| 创建日期 | 记录生成时间 |
| 创建人 | 提交记录的用户 |
| 最后修改日期 | 最近一次更新时间 |
| 最后修改人 | 最近一次修改的用户 |
这些系统字段保持默认即可,无需手动干涉。若特定场景不需要,也可取消勾选。
添加基础字段
表创建完成后,接下来填充字段。点击工单表的 「配置字段(Configure fields)」,可见刚才默认的系统字段已在列表中。
点击右上角的 「添加字段(Add field)」 按钮,弹出下拉字段类型列表——从中挑选需要的字段类型。
我们先添加工单自身的字段,关联字段稍后再补。
1. 标题(单行文本)
每条工单需要一个简练的标题来概括问题。点击 「添加字段」 → 选择 「单行文本」:
- 字段名称:
title,字段标题:标题 - 点击 「设置验证规则」,添加一条 「必填」 校验
2. 描述(Markdown(Vditor))
用于详细描述问题,支持格式排版,方便嵌入图片和代码。在「添加字段」→「Media」分类下有三种可选:
| 字段类型 | 特点 |
|---|---|
| Markdown | 基础Markdown,简单样式 |
| Rich Text | 富文本,支持简单样式 + 附件上传 |
| Markdown(Vditor) | 功能最全面,支持所见即所得、即时渲染、源码编辑三种模式 |
我们选择 Markdown(Vditor)。
- 字段名称:
description,字段标题:描述
3. 状态(下拉菜单 - 单选)
- 字段名称:
status,字段标题:状态 - 添加选项值(每个选项填写「选项值」和「选项标签」,颜色可选):
| 选项值 | 选项标签 | 颜色 |
|---|---|---|
| pending | 待处理 | Orange(日暮) |
| in_progress | 处理中 | Blue(拂晓蓝) |
| completed | 已完成 | Green(极光绿) |
先填好选项并保存。然后再次点击该字段的 「编辑(Edit)」,即可在「默认值」里选择 「待处理」。
首次创建时选项数据尚未入库,所以默认值无法选中——需要保存后再回来设置。
为什么选用下拉单选?因为状态是有限的固定值,下拉菜单能杜绝用户随意填写,保障数据规范化。
4. 优先级(下拉菜单 - 单选)
用于区分工单的紧急级别,方便处理人按优先级排队处理。
- 字段名称:
priority,字段标题:优先级 - 添加选项值:
| 选项值 | 选项标签 | 颜色 |
|---|---|---|
| low | 低 | |
| medium | 中 | |
| high | 高 | Orange(日暮) |
| urgent | 紧急 | Red(薄暮) |
至此,工单表拥有了 4 个基础字段。但工单应该关联一个“分类”吧?比如“网络故障”“软件报错”?
若将分类做成下拉菜单,也不是不行。不过你会发现:分类很可能包含子分类(例如“硬件问题”下还有“显示器”“键盘”“打印机”),单靠下拉菜单无法有效管理。
需要另一张独立表来专门管理分类。而且这张表,使用 NocoBase 的树表构建最为合适。
2.3 创建分类树表:实现层级化管理
树表的定义
树表是一种特殊的数据表,内置父子关系——每条记录可以设定一个“父节点”。天然适合层级结构的数据:
硬件问题 ← 一级分类
├── 显示器 ← 二级分类
├── 键盘鼠标
└── 打印机
软件故障
├── 办公软件
└── 系统问题
网络问题
账号权限
如果使用普通表,你需要手动创建一个“父分类”字段来模拟这种关系。而树表自动完成这一切,并支持树形展示、快捷添加子记录等操作,大幅降低维护成本。
创建表
注意创建后,表里除系统字段外,会自动生成 「Parent」 和 「Children」 两个关系字段——这正是树表的特殊能力。通过 Parent 可访问父节点,通过 Children 可遍历所有子节点,无需手动添加。
添加字段
点击 「配置字段」 进入字段列表,可见系统字段和自动生成的 Parent、Children 字段。
点击右上角 「添加字段」:
字段一:分类名称
- 选择 「单行文本」
- 字段名称:
name,字段标题:分类名称 - 点击 「设置验证规则」,添加 「必填」 校验
字段二:颜色
- 选择 「颜色」
- 字段名称:
color,字段标题:颜色
颜色字段可为每个分类赋予标识色,后续在界面展示时更直观易辨。
至此,两张数据表的基础字段配置完毕。接下来将它们关联起来。
2.4 返回工单表:配置关联字段
关系字段初次接触可能有些抽象。 如果感觉不好理解,可以先跳到第 3 章:搭建页面,在实际界面操作中感受数据如何呈现,之后再回过头来补充关联字段。
工单需要关联分类、提交人和处理人。这类字段就是关系字段——它不像“标题”那样直接存储一段文字,而是存储另一张表里某条记录的 ID,通过该 ID 精准定位目标记录。
以一条具体工单为例——左侧是工单的各个属性,其中“分类”和“提交人”存储的不是文字,而是一个 ID。系统通过这个 ID,从右侧的表中精确映射对应的记录:
你在界面上看到的是名称(“网络问题”“张三”),背后正是通过 ID 完成关联。多条工单可以指向同一个分类或同一个用户——这种关系称为多对一。
添加关系字段
创建时你会看到以下配置项:
| 配置项 | 说明 | 填写建议 |
|---|---|---|
| 源数据表 | 当前表(自动填充) | 无需修改 |
| 目标数据表 | 要关联的目标表 | 选择对应的业务表 |
| 外键 | 存储在当前表中的关联列名 | 设置有意义的名字 |
| 目标数据表标识字段 | 默认 id | 保持默认即可 |
| ON DELETE | 目标记录被删除时的处理策略 | 保持默认即可 |
外键默认生成随机名(如 f_xxxxx),建议改为易识别的名称,便于后期维护。命名采用小写字母加下划线(如 category_id),避免大小写混用。
按此方式依次添加三个字段:
5. 分类 → 工单分类表
- 字段标题:
分类 - 目标数据表:选择 「工单分类」(若列表未出现,直接输入表名会自动创建)
- 外键:
category_id
6. 提交人 → 用户表
记录谁提交了这条工单。NocoBase 内置了用户表,直接关联即可。
7. 处理人 → 用户表
记录负责处理这条工单的人员。
- 字段标题:
处理人 - 目标数据表:选择 「用户」
- 外键:
assignee_id
2.5 数据模型全貌
回顾一下我们搭建的完整数据模型:
}o--|| 表示多对一关系:左侧“多”,右侧“一”。
小结
本章完成了数据建模——工单系统的骨架已成型:
- 工单表(tickets):4 个基础字段 + 3 个关联字段,使用普通表创建
- 工单分类表(categories):2 个自定义字段 + 自动生成的 Parent/Children 字段,使用树表创建,天然支持层级分类
掌握了几个关键概念:
- 数据表(Collection) = 一类数据的容器
- 数据表类型 = 不同场景匹配不同表型(普通表、树表……)
- 字段(Field) = 数据的属性维度,通过「配置字段」→「添加字段」来定义
- 系统字段 = ID、创建日期、创建人等,建表时自动勾选
- 关系字段(多对一) = 指向另一张表的记录,建立表间关联
你可能注意到,后续截图中已包含测试数据——这些是为了演示效果提前录入的,不必着急。在 NocoBase 中,数据的增删改查均通过前端页面完成。第 3 章我们搭建表格来展示数据,第 4 章搭建表单来录入数据,逐步展开。
下一章预告
骨架搭好,但表里尚无数据。下一章,我们将搭建页面,让数据真正可视化。
我们下章见!


























