赶项目的那个下午,在对着一堆建表语句发愁,才硬着头皮琢磨如何使用powerdesigner,本来只想着把脚本导进去,生成一个可以给组里人看的物理模型图,预想里几分钟就能搞定,没想到卡在第一步就耗了快两个钟头。

手里拿到的是线上数据库导出的sql脚本,里面字段定义写的挺杂,有带长度的varchar,也有decimal带上精度,最开始没多想,直接点开文件里的导入选项,选好脚本路径,点确认之后,弹窗一下弹出来一串红色提示,说好多字段的数据类型没法识别,模型里面一半的表导进来都是残缺的,主键标识全部丢失,有的表甚至只拉进来表名,里面是空的。

以为是脚本里多余的注释在捣乱,复制全部内容,删掉所有--开头的行,还有末尾多余的分号,重新保存成新文件再试。结果报错的数量少了一点,但还有几张表一直过不去,其中一张存金额记录的表,decimal类型每次导入都会自动变成int,精度直接丢掉,在模型里面改回来,保存刷新之后又变回原样。

旁边工位的人扫了一眼屏幕,随口说了一句,是不是数据库版本选的不对。之前导入的时候,下拉框随便挑了一个通用选项,根本没留意这个地方,那会脑子里只顾着快点跑通流程,哪里会想到这个选项会影响类型映射。

换了对应数据库的版本之后再跑导入。

大部分表顺利进模型画布了,可那张金额表还是老样子,decimal的精度和小数位始终读不出来。点开类型映射的设置页,翻来翻去看里面预设的规则,才看见里面对于带参数的decimal,默认的匹配规则写的很简略,没法读取脚本里括号里的数字。试着手动新增一条映射,把脚本里写的格式对应到模型里面的物理类型,再单独只导入这一张表的语句,这次终于完整加载出来,小数位数和精度都正常显示。

画布里面表堆的密密麻麻,挤在一块分不清谁和谁有关联,拖动表框的时候,连线跟着扯的歪歪扭扭,有时候不小心点错,还会误删已经建好的外键关联,撤销按钮点了好几次,有一次撤销过头,刚调好的类型映射配置直接清空,又要重新填一遍。

试着自动排布画布,自动排布出来的布局看着规整,可表和表之间的连线交叉的到处都是,看着反而更乱,只能手动一点点挪,把关联紧密的表放在一块,零散的字典表挪到侧边空白位置。调整的时候才发现,有几张表没有注释,导进来之后表名全是英文缩写,隔一会就分不清这张表存的是什么业务数据,只能切回原sql脚本来回对照。

导出图片的时候又遇上一点麻烦,直接截图的话画布边缘会被截断,软件自带的导出图片选项,分辨率调高点,等待加载的时间很长,低分辨率导出的图,放到文档里面,字段文字模糊,别人点开根本看不清。试了导出pdf格式,pdf里面矢量线条清晰很多,但是发给同事的时候,有人打开之后字体乱码,中文注释全部变成方框。

来回折腾到傍晚,模型图勉强能用,只是里面还有两处小瑕疵,有个索引信息导入之后丢失了,反复试了几次,都没办法自动识别,最后只能在模型的备注栏里面手动补上这条索引说明。那时候已经不想继续耗在这个软件上,想着反正交付要求只是核心表结构和主外键关系,缺失的索引信息备注写清楚就够,没有再继续深挖其他导入参数。

全程只是我自己当时这么处理,换别的脚本或者别的数据库版本,不一定会遇上一模一样的问题,也不知道别人会不会有更省事的路子。

关掉软件的时候,桌面文件夹里躺着好几个修改版本的sql文件,每一个文件名后面都跟着一串数字标记,分不清哪一个是最终导入成功的那一份。