ERWin里外键不是单独手工敲出来的字段,而是通过建立关系关系来触发主键或候选键迁移到子表,从而形成外键与约束。参照完整性校验也不是只看图上有没有连线,而是要把默认RI规则、关系级RI动作、以及模型校验一并跑通,才能避免生成DDL后才发现缺外键或规则不一致。
一、ERWin数据建模外键怎么建
外键建立的核心动作是创建识别关系或非识别关系,让父表键迁移到子表形成外键字段,并在需要时补齐外键约束命名与显示选项。
1、先确认父表已定义主键或候选键
在父表表编辑器里先把主键字段标成PK,或把可替代主键的候选键标成AK;如果父表没有可迁移的键,关系再怎么画也不会形成可用外键,后面校验时也容易报结构问题。
2、在图上用关系工具连接父表与子表
在Diagram里选择识别关系或非识别关系工具,先点击父表再点击子表完成连线;识别关系常用于子表主键包含父表键的场景,非识别关系常用于子表独立主键但仍需要引用父表的场景。
3、确认键迁移到子表并处理同名冲突
建立关系后,ERWin会把父表主键或候选键迁移到子表作为外键字段;如果子表里已经存在同名字段,系统会提示你处理重复,你需要按提示选择用迁移外键替换子表字段,或保留子表字段并调整映射,避免出现你以为有外键但字段没有真正迁移的问题。
4、在关系属性里核对外键约束命名与关系方向
打开【Model】→【Relationships】选择对应关系,在【General】里检查外键约束名相关字段,按你们命名规则补齐父到子与子到父的约束名,保证后续生成DDL时外键约束名称可读且可追踪。
5、如果看不到FK标识或迁移字段先把显示选项打开
你在图上看不到FK字样或看不到迁移属性时,不要先怀疑外键没建,先在图表显示设置里开启显示逻辑外键标识与显示迁移属性等选项,让外键与迁移字段在图上可见,避免误判。
二、ERWin参照完整性怎么校验
参照完整性校验建议分两层做,第一层校验模型结构是否满足生成外键的条件,第二层校验RI规则口径是否一致并能正确生成到DDL。
1、先设置默认参照完整性规则作为全局口径
点击【Model】→【Model Properties】进入Model Editor,切到【RI Defaults】页签,在网格里设置不同关系类型对应的默认动作口径,并在需要时使用重新绑定按钮把新默认规则应用到现有关系,避免同一模型里不同关系的ON DELETE与ON UPDATE口径各自为政。
2、对关键关系单独设定RI动作并明确业务语义
在关系级属性里为关键关系定义删除与更新时的动作口径,例如限制删除、级联删除、置空等,确保这些动作与业务规则一致;如果你的数据库策略依赖触发器来实现RI动作,也要在关系里把相应触发动作口径配置完整。
3、明确外键生成方式避免DDL里缺失外键语句
在Schema Generation相关的RI选项里确认外键是随CREATE TABLE生成还是以ALTER TABLE补充生成,并核对ON DELETE与ON UPDATE等子句是否会被输出,避免你在模型里看似配置了RI但生成脚本里没有落地。
4、运行模型校验检查参照完整性相关问题
执行【Model】→【Model Validation】或对应的校验入口,在校验列表里选择与关系、键、约束相关的检查项并运行;重点关注父表缺键、子表外键迁移不完整、关系定义缺失等问题,这类问题会直接导致参照完整性无法成立或生成脚本不完整。
5、把校验结果回写到修复动作而不是只看报错文本
校验发现问题后,按报错对象逐条回到表编辑器与关系编辑器修复,例如补齐父表PK或AK、重新建立关系触发迁移、修正外键约束命名、统一RI Defaults口径,然后再次运行校验直到关键项清零,再进入下游的脚本生成与评审环节。
三、外键与参照完整性常见问题定位顺序
你遇到外键没生成或RI校验不过时,按这个顺序查,定位会更快。
1、先查父表是否真的有可迁移的键
优先确认父表PK与AK是否定义完整,这是外键迁移的前提,很多外键缺失问题最终都落在父表键未定义或定义不规范。
2、再查关系类型与迁移是否真的发生
确认关系是从父到子建立,且迁移字段已出现在子表中;遇到同名字段冲突时要按系统提示处理,否则会出现图上有线但子表没有可用外键字段的情况。
3、再查显示选项避免把显示问题当成建模问题
当你看不到FK标识或迁移字段时,先把显示逻辑外键标识与显示迁移属性打开,确认是显示层问题还是建模层问题。
4、最后查RI Defaults与关系级动作是否冲突
默认RI规则与关系级RI动作不一致时,容易造成同类关系生成脚本口径不同或校验项反复出现;统一默认口径后,再对少数关系做例外配置更易维护。
总结
ERWin里外键建立依赖关系创建与键迁移,先保证父表键定义完整,再用识别或非识别关系把键迁移到子表,并补齐外键约束命名与显示选项。参照完整性校验要同时抓默认RI规则、关系级RI动作、以及模型校验结果,确保模型结构可生成外键、RI口径一致且能正确落到DDL里,才能把缺外键与规则不一致的问题提前拦在建模阶段。
