热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql生成er图_利用powerdesigner生成ER图

环境:windowsserver2008,powerdesigner15(选择mysql5.0),大前提:你的powerdesigner环境已经配置好&

环境: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图。



推荐阅读
author-avatar
泥泥的春天_565_576
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有