本文主要介绍我在工作过程中如果利用PowerDesinger同步数据库设计PDM和物理数据库保持同步。PowerDesinger以下简称PD.我们经常在数据库生成后,在后续的开发中发现数据设计有遗漏,或者是少字段,或者是参照完整性不一致,那么我们都要修改PDM,并将修改同步到物理数据库。
在PowerDesigner中提供了modifyDatabase的功能,在菜单DataBase下面。打开该功能。
同步有两种方式,第一种是PDM和物理数据库比较,PD直接将差异同步到物理数据库。这种情况具有很大的冒险性,1、在同步修改物理数据库的过程中,如果发生错误,我们难于跟踪,难以将已经同步的数据表回滚,此期间也会因备份数据会在物理数据中产生很多的临时表,因为出错,这些临时表就存在了数三四三据库中,需要手工删除。2、在某些情况下,如在某个表中新增一列,该列是外建,不能为空,且该表中已经有数据了,这种情况PD会将该表先重新命名(在表名前加入tmp_),主要目的是备份该表的数据。然后创建修改过后的表,再将临时表的数据导入新表,这时,导入新表的数据就需要加入外键,就需要手工调整脚本,再行导入临时表数据。例如。
第二种就是PDM先和物理数据库比较,产生差异脚本,再用手工同步这些差异脚本到物理数据库中。这种方法策略比较稳妥些,自己明白对那些表做了修改,修改后是什么样子。自己可以对对脚本进行修改,有选择的执行脚本。
界面上的参数设置可以参考PD的帮助,这里只是对两种同步的方法进行比较说明。