跳到主要内容

数据模型与 ER 图

数据模型形态弥合了 API 契约与数据库之间的鸿沟。它可以从你的 OpenAPI 模式推导完整的关系模型,与已存在的数据库比对,并在任一侧变化时让两者保持同步——用一张可视化 ER 图呈现全局。

有两个起点,两者都支持:

  • 尚无表。 直接从当前 API 推导每张表、列、外键和关系表,以及创建它们的 SQL。
  • 已有数据库。 读取真实表及其强制外键,与 API 隐含的模型对照,看到它们在哪里匹配或分歧。

四层对账​

对账(datamodel.reconcile)分四层返回权威事实:

层它包含什么
Observed(观察)来自所连数据库的孤立表以及仅存在于数据库或被强制的外键
Modeled(建模)每张表的状态(missing、drift、matched、extra)、建模/真实列对、字段级差异、受影响的 API 操作以及建模关系
Proposed(提议)一份有序、只增的迁移计划,含 blockedBy 依赖和每一步的 SQL
Inferred(推断)自动推导的多对多关系表、待澄清问题和安全保障

模型把每张表、列、关系和陈述都建立在这个结果之上——它不捏造 DDL。

表状态​

  • Missing(新增)——API 隐含但数据库中缺失;
  • Drift(漂移)——两者都存在,但列或约束不同;
  • Matched(匹配)——存在且一致;
  • Extra(多余)——数据库中存在但当前 API 不隐含。

关系表和索引会被推导​

你不必手工建模连接表。当模式隐含多对多关系时——例如给定 user 和 product 资源——推断层会推导连接它们的关系表(及相关索引),而不是停在两张基础表上。二级索引包含在生成的 SQL 中。

当业务逻辑无法被明确推断时,结果会提出待澄清问题而不是猜测,安全保障会标记任何需要人工复核的内容。

可视化 ER 图​

ER 视图把模型渲染为图,让关系和外键一目了然,而不是从表列表中读取:

  • 表是节点,自动布局以减少连线交叉;
  • 外键关系绘制为连接;
  • 节点状态反映对账状态(新增、漂移、匹配、多余);
  • 侧面板列出具体迁移步骤——create_table、alter_table 和复核项——以及所选表的 SQL。

这给你模式的宏观视图,以及让数据库对齐的精确、有序路径。

双向影响分析​

由于模型同时知道 API 操作和表,变化会可见地传播:

  • 当 API 变化时,对账识别受影响的表——发生漂移的已有表和要新增的表——并给出相应 SQL;
  • 当数据库变化时,触及受影响表的操作会作为受影响项呈现。

编辑任一侧后,你可以刷新并重新比对,直到模型与数据库匹配。

部署脚本​

对于全新数据库,datamodel.deploymentScript 生成一份幂等、只前进的 SQL 脚本:

  • 按外键顺序的 CREATE TABLE IF NOT EXISTS;
  • 二级索引;
  • 可选的确定性示例数据(0–50 行,默认 0);关系表从不会被填充。

对于已有数据库,改用对账,它以有序迁移计划的形式产出只增的 ALTER 语句。

数据库连接​

连接作为已保存的配置文件管理(ID、名称、方言、主机、端口、用户、数据库);密码从不返回。支持的方言为 MySQL、SQL Server 和 Oracle。

  • database.runSelect 在已保存配置上运行只读 SELECT,返回有上限、被截断的行集;写入和 DDL 被阻止;
  • database.prefillConnection 打开预填你所提供细节的新建连接对话框,因此密码由你输入,而不是在提示中接收。

SQL 只生成,从不自动执行​

在整个形态中,SQL 是生成以供审阅的,而不是针对你的数据库运行。你决定何时以及如何应用它,只读访问保护真实数据。这让你在触碰数据库之前可以安全地探索模型和迭代。

相关:协议、请求工作区、设置。