环境:windows server 2008,powerdesigner15(选择mysql5.0),
大前提:你的powerdesigner环境已经配置好,
利用powerdesigner15生成e-r图时遇到的问题(不知道这些问题在高版本中是不是已经解决了):
1、在利用powerdesigner反向工程生成mysql指定数据库的时候,总是默认带着information_schema。
由于对pd工具的不熟练,所以不知道如何去掉information_schema数据库的e-r;
另外资料显示任何mysql的用户都会有权限使用查看information_schema库;
所以从两个方面去掉对我而言都是无法实现的。
2、利用反向工程即使生成了e-r图,某些主外键的关系也没有完全很好的体现出来。在e-r图上是明显的箭头缺失的。这个第三个遇到的问题的本质估计是一样的。
3、不通过反向工程生成,直接使用sql文件生成模型;sql文件的生成方式是通过导出指定的数据库生成的。
使用这种方式生成的e-r图有一个好处是,不会带有information_schema的信息;但是同样有些外键是没法体现的。
这种局限的来源是mysql在导出sql文件的时候没有判断建表的顺序,所以导致外键创建失败。Oracle在导出脚本的时候就很合理,把外键约束统一放到建表之后统一创建,这样保证每个外键创建成功。
有了Oracle的思想 + 不想手工去调整建表的顺序,所有这一切都是为了更加自动化的生成完整的e-r,所以找了一个折中的办法解决。
在第3个问题的基础上,即已经导出了指定数据库的sql文件;然后在此基础之上,再进行所有的外键约束的导出。方法如下:
SELECT CONCAT('alter table ', table_name ,' add constraint ' ,constraint_name,' foreign key(',column_name,') references ',referenced_table_name,'(',referenced_column_name,');'
)FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE t WHERE t.TABLE_SCHEMA = 'db_name' AND t.referenced_table_name is not null;
然后把外键约束和sql文件结合在一起生成一个新的sql文件2.通过pd工具生成完整的e-r图。
pd->new model->physical data model ->database->update model from database->选择sql文件2。
通过这种方式终于有了完整的e-r图。
回过头来思考下:为什么要用pd生成e-r图?
1)、使用过navicat 生成e-r图,没有pd的功能强大。mysql8.0打包产品本身好像也支持e-r图,这个没有用过。
2)、e-r 可以提供给非数据库人员查看,更直观的了解数据模型。
3)、传统的开发模式需要e-r图。