Skip to content

数据模型 ★ ​

一句话:低代码建表——在页面上定义表名、字段、索引,系统真实执行 CREATE TABLE / ALTER TABLE;已有物理表也能用「导入已有表」登记进来复用。每一次 DDL 都记在「DDL日志」里,DDL 无法回滚,日志就是排查表结构异常的第一手依据。

功能在哪 ​

  • 菜单路径:基础设施 → 数据管理 → 数据模型(菜单原名「数据建模」)
  • 地址栏路由:/infra/data-manage/data-model
  • 主要权限:infra:data-model:create / update / delete / query(「数据查看」按钮另需 infra:data-model-data:query)

数据模型列表:按表名 biz_ 过滤后的业务模型;行内四个按钮全平铺(租户管理员视角)

界面认识 ​

区域作用常用操作
查询区表名 / 模型名称(模糊)「搜索」「重置」
工具条整页级动作「新建」「导入已有表」
列表序号 / 模型名称 / 表名 / 表描述 / 备注 / 创建时间 / 操作行内「设计」「数据查看」「DDL日志」「删除」
删除按钮系统内置表(system_ / infra_ / bpm_ / act_ 等前缀)置灰名单由后端统一下发,前后端双保险

列表不显示自增编号:模型是拿表名认的,序号列已足够定位行。

常用操作 ​

新建模型(真实建表) ​

  1. 点「新建」,进入页内设计页(不是弹窗);
  2. 填「表名」——新建时必须以 biz_ 开头,小写字母/数字/下划线(如 biz_order);「表描述」(如「订单表」,至少 2 个字符);「模型名称」(给人看的名字);备注选填;
  3. 选「系统列策略」:
    • 多租户表(推荐):注入 tenant_id,与框架表一致,业务表一律用这个;
    • 全局表:不含 tenant_id,数据对所有租户可见,仅用于全租户共享的字典型数据(选它会看到加粗警告);
    • 兼容存量样板表:含 version、不含 tenant_id,对齐 test_demo_* 结构,新表不要用;
  4. 维护「字段列表」:灰色行是系统内置字段(主键 id、审计字段、租户与逻辑删除),建表时自动补齐、只能看不能改;你只需维护中间的业务字段;
    • 「快速添加」可一键补流程字段(process_instance_id + process_status)或常用字段(名称/编码/状态/类型/排序/备注);🔴 流程字段只补不存在的列:列已在而类型不合格时那次点击会跳过(它按列名判存在),页面顶部随即出现一条常驻红色提示,说明差在哪一列、要求什么类型、以及改完保存会执行 ALTER TABLE;
    • 主键默认是内置 id,也可在「主键」列改选某个业务字段(此时 id 自动降级为普通字段);
  5. 按需「添加索引」:普通索引 / 唯一索引,索引列按顺序多选,索引名按所选列自动生成、可改;
  6. 点「预览 DDL」核对将要执行的语句,确认无误后「保 存」。

结果:数据库里真实多出这张表,列表多一行模型登记。

新建模型设计页:系统列灰行只读、业务字段自维护、索引列表与各类提示条(租户管理员视角)

改表是「全量同步」,删列不可回滚

设计页提交的字段列表就是表结构的全部:列表里没有的列,保存时会被 ALTER TABLE … DROP COLUMN 删掉,数据随之永久丢失且无法回滚(MySQL 的 DDL 没有事务)。因此:

  • 删除一个已存在的字段时会弹「删除字段确认」,明确告知会执行 DROP COLUMN;
  • 确认后页面顶部常驻红色标签「将删除字段:xxx」——保存可能发生在十分钟之后,这个状态不该是一次性的;
  • 有损操作还需勾选「我已知晓风险(删除字段等有损操作需勾选)」,否则后端拒绝执行;
  • 表里有数据时后端会再拦一次:「表(xxx)存在 N 行数据,删除表会丢失全部数据;确认请勾选『我已知晓风险』」。

模型设计(改表)页:顶部有风险勾选框与「将删除字段」常驻标签(租户管理员视角)

别人绕过页面改了库,保存会被中止

每次打开设计页会记下结构基线(版本 + 结构指纹)。若保存时发现实测结构与基线不一致(有人手工执行了 SQL、跑了迁移脚本),后端报「表的结构与你手里那份不一致,本次改表已中止、未执行任何 DDL」,页面弹不会自动消失的告警,提示点「返回」重新进入取回最新结构再改——按过期结构生成 DDL,改出来的表和你以为的不是同一张。

导入已有表(只登记,不动结构) ​

  1. 点「导入已有表」,弹窗里按表名 / 表描述模糊搜索;
  2. 勾选一张或多张表,点「确 定」,提示「成功导入 N 张表」。

导入只登记模型,不会执行任何 DDL、不改动表结构;系统内置表导入后也不允许改结构(设计页会拒绝保存)。表名已存在于库但没登记时,新建同名表会被拦:「请用『导入已有表』把它登记进来直接复用,不要改名新建」。

导入已有表弹窗:搜索 + 多选 + 已选计数(租户管理员视角)

数据查看 / DDL日志 ​

  • 行内「数据查看」:跳到数据查看页并自动定位到该模型(地址栏带 modelId),免再选一次;
  • 行内「DDL日志」:弹窗按表名看每一次实际执行的 DDL(含失败的)——列有 编号 / 表名 / 类型(建表绿 / 改表橙 / 删表红)/ 结果(成功 / 失败)/ 耗时 / 操作人 / 执行时间;展开行看「执行的 SQL」与红色「失败原因」。

DDL 执行日志弹窗:类型/结果标签 + 展开看 SQL 与失败原因(租户管理员视角)

删除模型:两步确认,默认不丢数据 ​

  1. 第一步「删除确认」:「确认删除模型「X」吗?点击『确定』仅删除模型登记,保留数据库中的表 Y。」
  2. 第二步「高危操作」:问是否同时删除数据库中的真实表——确定 = 连表带数据一起删(无法回滚);取消 = 仅删登记。

仅删登记后会提示:「模型登记已删除。数据库中的表 Y 仍然保留 —— 需要再次使用时,用『导入已有表』把它登记回来即可,不要新建同名表」。拿不准就选仅删登记。

字段说明 ​

设计页字段列表的列:

列说明
字段名小写字母/数字/下划线,以字母或下划线开头;改表时直接改名即视为重命名(保留数据)
描述必填,至少 2 个字符、不能与字段名相同;它就是数据查看展示模式里的列名
类型受控类型集:STRING / INT / LONG / DECIMAL / BOOLEAN / DATE / DATETIME / TEXT / LONG_TEXT / JSON
长度 / 精度按类型适用性显示;DECIMAL 默认长度 10 精度 2
可空 / 默认值主键强制 NOT NULL、不给默认值
主键新建时可改选;改表时不可变,仅展示
自增仅「主键且整数类型(INT/LONG)」可勾
字典/关联业务语义:配字典类型或关联表/列,不改表结构、不建物理外键,表单设计等场景可直接读取

索引列表的列:索引名(唯一索引须 uk_ 开头、普通索引须 idx_ 开头)/ 类型 / 索引列(按顺序)。

视角对照 ​

视角看到什么
超管 admin / 租户管理员 docadmin全部模型,可建表、改表、导入、删除
套餐未含此菜单的租户侧边栏「数据管理」下没有本页
普通员工无此菜单;建好的表通过业务表单/接口间接使用

进阶 ​

  • TEXT / LONG_TEXT / JSON 不能做主键或索引列(MySQL 不允许直接建键),需要检索的字段用 STRING / INT / LONG / DATETIME;
  • 建模与 DDL 固定在主数据源(本系统自己的库)执行;数据源配置里登记的外部库不参与建模,只供表单设计器绑定;
  • 字段数与模型数有上限,超了会提示「字段过多通常说明该拆表了」;
  • 表用于流程审批时,需额外加 process_instance_id(字符串型,长度不小于 64)与 process_status(整数型:TINYINT / INT / LONG,建成 STRING 不合格)——用「快速添加 → 流程字段」一键补齐;🔴 这两列类型不对不会在建表、表单存草稿、发布时报错,只会在流程模型第二步选「在线表单」时把这张表单标成「不可用」,而那时表已经建出来了;
  • 模型登记带来源标记(人工创建 / AI 工具创建 / 导入),并带乐观锁版本:编辑期间被别人改过会报「已被他人修改」,避免互相覆盖。

常见问题 ​

Q:保存时报「必须且只能指定一个主键」? A:字段列表里主键列有且只能有一个圆点选中。改选了业务字段做主键后,内置 id 会自动降级为普通字段,不会冲突。

Q:为什么表名不让改? A:改表时表名只读——表名是物理对象的身份,改名等于换表。确需改名请重建或走 DBA 流程。

Q:预览 DDL 显示「表结构无变化,无需执行 DDL」? A:说明当前设计与库里的实际结构一致,直接返回即可,不用保存。

Q:删模型时手滑选了连表一起删,能恢复吗? A:不能,DROP TABLE 无法回滚。这也是第二步确认用红色加粗标出表名的原因;日常清理请选「仅删除模型登记」。

Q:导入的系统表能改字段吗? A:不能。系统内置表(system_ / infra_ / bpm_ 等前缀)导入后设计页拒绝保存结构修改,避免改坏平台自身。