我是一位非常年轻的软件架构师。现在我在一个非常大的工作,我必须带领一群开发商重写银行的所有抵押贷款系统。
我正在查看数据库表,我意识到没有任何数据模型,也没有文档。最糟糕的是,开发环境中有大约1000个表,而生产中有600个表。我更信任生产环境,但无论如何,我该怎么办?我的意思是,我可以自杀我或者别的什么,但是有没有任何好的逆向工程工具,所以至少我可以通过表格和从字段中提取的注释之间的关系来获得模式定义?你能给我一些建议吗?
提前致谢。
答案 0 :(得分:1)
如果你很幸运并且数据库实际上使用了主键和外键,你可以使用SchemaSpy获得一些优秀的文档,这是一个用Java编写的很好的命令行工具。
更新:我刚刚记得Oracle SQL Developer有一个类似的工具(创建连接,右键单击其图标并选择“生成数据库文档”)虽然它没有画图。
答案 1 :(得分:0)
不幸的是这是神谕。对于mysql,有一个非常好的工具叫Mysql Workbench。
答案 2 :(得分:0)
尝试使用名为TOAD的工具进行连接 - 自从我使用它以来已经有几年了但是IIRC你可以选择你想要检查的相应模式,它会给你一个包含所有表的树视图视图,您可以展开表节点以查看列详细信息。毫无疑问,自从我上次使用它以来,这个工具已经发生了很大的变化。
答案 3 :(得分:0)
你可以像这样提取评论
select * from dba_tab_comments
where owner not in ('SYS', 'SYSTEM')
和
select * from dba_col_comments
where owner not in ('SYS', 'SYSTEM')
至于逆向工程:如果你打算用600多个表绘制一个ERD,那么(可能)无论如何都会变得太大了。我首先尝试找到相关表的“簇”,然后使用专门的工具绘制这些簇。
显然,您希望确保整个架构具有外键强制执行。你可能想看看
select * from dba_constraints
where constraint_type = 'R' and
owner not in ('SYS', 'SYSTEM')
查看是否所有外键。