数据库设计文档DBMS的快速转换


今天PMO下达任务单,校讯通数据库从sybase系统改造到Oracle系统,进行了对象的总计有312张实体表,20个过程,通过手工敲,那肯定是猴年马月的事情,不符合项目任务的工期进度。以下是本次转化的快捷方法:

1、通过powerdesigner的Change Current DBMS操作。

new dbms 选择ORACLE Version 10gR2替换current dbms的Sybase AS Enterprise 12.5.3a。

符合期望的:通过此步操作char、varchar、numeric、datetime转向了我们期望的char、varchar2、number、date。

不符合期望的:integer没有转向我们期望的number,默认值getdate()没有转向我们期望的SYSDATE,default ''没有转为有效的default ' '。针对oracle 空串是无效的。索引名保留了sybase特性,对象中唯一,却没有符合oracle的全局唯一。过程那是原原本本保留了sybase的脚本。

2、开始针对不符合期望的改造工作

校讯通数据库设计文档是用powerdesigner15版本设计的,可以直接通过编辑工具editplus,UltraEdit打开,本质上是xml文件,然后查找integer类型定义关键字串。

类型定义:<a:DataType>INTEGER</a:DataType>  统一修改成了 <a:DataType>NUMBER(10)</a:DataType>。

针对本质是布尔类型,是和否的判断的,显然NUMBER(1)就行,在定义此类字段名时有显著特征is_开头,通过EltraEdit打开找到<a:Code>is_字符串,在此字符串附近定位到针对这个字段的类型定义,由于做了前面步骤,都已经改成了NUMBER(10)统一改为NUMBER(1),针对其他字段,虽然可能有的字段长度不需要10,个别对待修改。

默认值定义:<a:DefaultValue>getdate()</a:DefaultValue>统一修改成了<a:DefaultValue>SYSDATE</a:DefaultValue>,在sybase中的default ''后来经分析确认,通过编辑工具打xml真实定义是<a:DefaultValue>&#39;&#39;</a:DefaultValue>统一修改成了<a:DefaultValue>&#39; &#39;</a:DefaultValue>中间加入一空格,Oracle可以支持。

做了以上两步之后,表对象定义的类型以及默认值都符合了期望,至于索引名称由于要全局唯一,只能通过手工修改了,包括过程也是。通过统一替换已经给我们节省了不少时间,赶上项目任务单的计划进度不成问题了。其他类型的数据库设计文档的DBMS转换可以参考类似。

修改的规范参见:数据库设计规范

相关内容