在包含数据库的项目管理中,数据库文档是一个不可缺少的资源,一般来说,在数据库设计阶段比较普遍使用的工具是PowerDesigner,相信在项目初始阶段,稍微有点责任心的人都会去维护它 ,但随着项目的扩大和时间的推移,会有多少项目组会投入资源去更新和维护,即便是投入了资源,又有多少能保证所维护的版本是最新和正确的呢,有些事情,依靠人来解决,似乎很不靠谱。
好在有许多工具可以帮助我们来维护数据库文档,比如PowerDesigner就可以反向生成ER图。
这里向大家推荐一下SchemaSpy,它提供了从实际数据库自动生成数据库结构的最新精确视图,其安装和使用都比较简单,而且支持目前绝大多数的数据库。
看一下效果图吧:
界面还是比较友好的,通过SchemaSpy可以很方便的查看各个table信息,以及各个table之间的关联关系信息。
下面说一下如何使用SchemaSpy
一。安装
SchemaSpy的安装十分简单,实际上就是一个jar文件,官方下载地址:http://schemaspy.sourceforge.net/。
SchemaSpy依靠Graphviz程序库来生成数据库结构的图形视图,Graphviz的安装参考:http://hanqunfeng.iteye.com/admin/blogs/869293
二。使用
可以通过命令行来使用
java -jar schemaSpy.jar \ -t orathin \ -u username \ -p password \ -o temp \ -host 192.168.0.xxx \ -port 1521 \ -db serverID \ -cp ojdbc14.jar
也可以通过ant来使用,这里给出在ant中的任务示例:
<!-- schemaspy lib路径 --> <property name="schemaspy.lib" location="${schemaspy.home}" /> <!-- schemaspy报告路径 --> <property name="schemaspy.dir" location="${reports.dir}/schemaspy" /> <target name="schemaspy"> <delete dir="${schemaspy.dir}" /> <mkdir dir="${schemaspy.dir}" /> <java jar="${schemaspy.lib}/schemaSpy_5.0.0.jar" output="${schemaspy.dir}/out.log" error="${schemaspy.dir}/error.log" fork="true" > <arg line="-t=orathin"/> <!-- 数据库类型,这里是oracle --> <arg line="-db=serverID"/> <!-- 数据库实例 --> <arg line="-u=username"/><!-- 用户名 --> <arg line="-p=password"/> <!-- 密码 --> <arg line="-cp=${catalina.home}/common/lib/ojdbc14.jar"/> <!-- 驱动 --> <arg line="-host=192.168.0.xxx"/> <!-- 数据库地址 --> <arg line="-port=1521"/> <!-- 端口 --> <arg line="-o=${schemaspy.dir}"/> <!-- 文档输出目录 --> <arg line="-charset=UTF-8"/> <!-- 有中文时要设置编码 --> </java> </target>
如果是使用oracle数据库,个人觉得OraSchemadoc(http://oraschemadoc.yarpen.cz/)更好一些,其功能更加丰富和完整,包括存储过程,函数,序列等等都可以进行查看。