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或约束表达,索引按查询路径分级并用脚本预览与差异对比来验证。规则能复现、变更有证据,模型交付就会稳定很多。
