erwin中文网站 > 最新资讯 > ERWin数据建模主键怎么设 ERWin唯一性与索引怎么规划
ERWin数据建模主键怎么设 ERWin唯一性与索引怎么规划
发布时间:2026/05/29 13:10:05

  ERWin数据建模主键怎么设,ERWin唯一性与索引怎么规划,做得顺不顺,往往取决于三件事:主键是不是一开始就定了口径,唯一性有没有讲清业务边界,索引是不是按访问路径去建。很多人遇到的“上线后才发现重复数据”“查询忽快忽慢”,表面像数据库问题,实际是数据建模阶段没把规则落到ERWin里,后面只能靠补丁补来补去。把主键、唯一性与索引先治理好,模型才真正可交付。

 

  一、ERWin数据建模主键怎么设

 

  在ERWin里设主键,不是简单打勾,而是先把实体的身份规则说清楚,再把它固化到实体属性与关系迁移里。主键稳了,外键、关系线、生成脚本才会跟着稳。

  1、先把主键规则讲明白

 

  (1)优先判断业务号是否长期稳定,稳定就可做业务主键;规则可能变或可能重用,就用代理主键,把业务号放到唯一性里管住;

 

  (2)复合主键只在确实需要时使用,并提前约定列顺序与字段含义,避免后续外键迁移把每张表都拖成一长串键;

 

  (3)主键生成方式先统一口径,例如自增或序列或UUID,团队固定默认方案,新表照着走,避免同类表风格混搭。

 

  2、在ERWin里把主键落到实体属性

 

  (1)在Model Explorer里到Entities右键点【New】建实体,先填逻辑名与物理名,再补说明,后续批量复制才不会越改越乱;

 

  (2)双击实体进Entity Editor,在Attributes点【New】建字段,先定数据类型与长度,再把可空属性设好,别让主键列带着Null跑到库里;

 

  (3)选中字段勾选Primary Key,或在Key Groups里新建Key并加入字段,保存后确认实体标题栏能看到PK标识。

 

  3、把主键与关系迁移一起校对

 

  (1)建关系时先选对Identifying或Non-identifying,识别关系会把父表主键迁移进子表主键,选错类型很容易导致“连得上但表结构不对”;

 

  (2)关系建好后打开Relationship Editor检查迁移结果,重点看外键列名、位数、数据类型是否与父表一致,必要时按命名规则调整前缀;

 

  (3)多对多关系用关联实体承接,两端主键迁移为外键后,再用组合唯一性或单独代理主键把重复组合挡住。

 

  二、ERWin唯一性与索引怎么规划

 

  唯一性解决“不能重复”,索引解决“怎么查更快”,两者在ERWin里都要能被看见、被生成、被对比。先把意图写清楚,再决定用AK、约束还是索引去实现,避免同一规则被做两遍。

  1、先把唯一性口径拆清楚

 

  (1)不当主键但要唯一的字段,用Alternate Key或Unique Constraint表达,比如业务单号、证件号,让“唯一”成为模型规则而不是代码约定;

 

  (2)组合唯一要写清楚“哪些列一起算唯一”,以及是否允许空值重复,口径不清最容易在不同团队里被解释成两套规则;

 

  (3)对外键列的唯一性要谨慎,先确认业务上是不是一对一,再决定是否加唯一约束,别把一对多误锁成一对一。

 

  2、在ERWin里建AK与索引并预览DDL

 

  (1)在Entity Editor的Keys或Key Groups点【New】建AK,把字段按顺序加入,命名按表名加AK后缀,后面查差异更直观;

 

  (2)在Indexes页签点【New】建索引,明确Unique或Non-Unique,再按最常过滤的列放前面,别只追求“列越多越全”;

 

  (3)做一次Forward Engineer预览脚本,核对是否生成了主键、唯一性与索引,尤其要确认生成选项没有把约束输出关掉。

 

  3、按查询路径给索引分级

 

  (1)高频点查优先保证等值过滤列有索引,且列选择性要够高,不然索引建了也不一定快;

 

  (2)范围查询与排序场景关注索引列顺序,过滤列在前、排序列在后,才能减少回表与额外排序;

 

  (3)写入频繁的表控制索引数量,先保核心路径,再结合压测决定是否加第二条索引,避免写入抖动。

 

  三、ERWin主键唯一性与索引的变更怎么留证据

 

  主键、唯一性、索引一旦进入迭代,就必须可追溯可回滚,否则线上出问题时你很难回答“这次和上次差在哪”。把证据链补齐,模型和库才算真正联动。

  1、把模型文件纳入版本与评审

 

  (1)ERWin模型文件进版本控制,提交信息写清楚改了哪些主键、哪些AK、哪些索引,尤其是改主键拆表改关系要说明影响范围;

 

  (2)发布前打标签并保存只读快照,出现口径争议先回溯版本与评审记录,再决定是否调整业务定义;

 

  (3)命名模板与域定义也一并入库,避免同一模型在不同机器上生成出不同的物理名和类型口径。

 

  2、把生成与对比做成固定动作

 

  (1)统一一套Forward Engineer配置,生成对象、命名规则、约束与索引输出选项都固定,团队按同一口径出脚本;

 

  (2)上线前做差异对比,确认新增删除的约束与索引已同步到迁移脚本,不把模型变更留到最后一刻;

 

  (3)保留上一版稳定模型与脚本,线上异常先回滚止血,再用对比结果定位是主键、唯一性还是索引导致的变化。

 

  总结

 

  ERWin数据建模主键怎么设,ERWin唯一性与索引怎么规划,说到底就是把数据建模的规则放进ERWin里:主键先定身份口径再落到实体与关系,唯一性先定业务边界再用AK或约束表达,索引按查询路径分级并用脚本预览与差异对比来验证。规则能复现、变更有证据,模型交付就会稳定很多。

135 2431 0251