从 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
登录后参与讨论
登录 / 注册还没有评论。第一个说点什么吧。