YBGAMER_
  • □字体FONTS...
  • □资源ASSETS...
000%

从 DDL 到 ER 图:OnlineER 里的隐式关系推断

没有外键约束的表,怎么推断出它们之间的关系?命名规律、类型匹配和一点点启发式。

DATE2026-07-14
READ1 min
VIEWS4
CERTAINTY 较确定 · 80%

大多数真实项目的数据库里没有外键约束。但表之间的关系仍然存在——藏在命名里。

# 启发式规则

ts
// user_id -> users.id, order_no -> orders.order_no
function inferRelation(column: string, tables: Table[]) {
  const m = column.match(/^(\w+?)_(id|no|code)$/)
  if (!m) return null
  return tables.find(t => singular(t.name) === m[1]) ?? null
}

# 准确率

在 120 个毕业设计数据库上测试,召回率约 91%,误报主要来自 parent_id 这类自关联。

讨论 0

/

还没有评论。第一个说点什么吧。