直到几年前,我还使用Microsoft Visio将现有数据库反向工程为图表。此功能已经过时了一段时间,我很想寻找替代方法。

需求

关于这个新SE网站的FAQ告诉我要精确的需求,所以我会尽力而为。这些要求大多数都在Visio中,尽管不是全部。我想找到一个拥有所有功能的软件是不可行的,但是我想靠近一下。

重要: ;
具有所有列和主键/外键指示的逆向工程表;
将逆向工程外键作为表之间的连接器;
基本主题:选择表格的背景颜色;
能够处理复杂的模型,例如100多个表格;
可以选择显示或不显示哪些项目(例如,省略某些表格等);
至少可以免费试用;
导出为各种格式进行分发和打印用途,最优选的是PDF,我猜也是PNG;
所见即所得;

主要优点:


可在Windows 8上运行(尽管我将为满足所有重要要求的软件安装Linux VM)
自动布局和连接器路由,以最大程度地减少重叠;
可以执行SQL Server 2008和2008R2;
可以反向工程视图;
免费(或免费版本);
增量更新,例如再次进行逆向工程,并添加/删除表格等,同时保留主题,现有布局等。
漂亮的图表(现代外观,抗锯齿,字体,颜色,渐变,阴影,主题的选择等);
友好的学习曲线(只要可以轻松快速完成基础知识,我就可以处理许多复杂的功能);

必须具备:


安装程序不会在浏览器中秘密安装工具栏或更改我的主页! ;-)

我的研究

当然,这个问题以前也曾被问过,即使在姐妹网站上也是如此(尽管它们不在这里,但还是取得了一些成功)。以下是一些方法:


可视化数据库模式的好工具? [关闭](MySQL,91个投票)
有人知道像样的免费DB架构逆向工程工具吗? [关闭](MySQL,6个投票)
通过对数据库进行反向工程生成ER图(所有DBMses,10个投票)

与DBA.SE有点类似:



如何记录数据库? (sql-server,103个投票)

此外,Wikipedia的表格还比较了几种具有“逆向工程”功能的软件包:功能-视觉设计和逆向工程

尝试过

这些是我尝试传递的内容:


Visio 2003(这是我以前使用的)。它不是免费的,过时的,但是在其他方面,它却适合大多数人。不过,别无选择。
Visio 2010和2013(这是我目前的功能)。不再支持逆向工程。我曾考虑编写插件或使用VBA一起破解。不知道那会是多么艰难。它不是免费的(除非我想我个人已经拥有了它),但它在很多其他方面都符合要求。
Graphviz。很早以前就进行了此尝试,据我所知,它的学习曲线有点陡峭,我无法完全手动确定最终布局。
SSMS图。这适用于小情况,但对于大情况可能会很麻烦。
Visual Studio 2012 ADO.NET实体数据模型。连接器的手动布局是有限的,主题根本不存在,它实际上是针对文档之外的目标,并且会显示(例如,默认情况下您会获得“导航属性”等),并且不适用于100表。

我认为我可能已经尝试了SO线程的一些建议,尽管我真的不记得具体细节。

br />
所以:您会推荐什么?

#1 楼

这是我最终使用的建议(经过大量研究并尝试了许多不同的选择):

为此使用普通Visio。

这就是为什么。

这种方法的解释:

没有一种工具可以方便地满足所有上述要求,甚至没有一种工具可以满足主要要求。 Visual Studio 2012即将发布,但缺少主题支持,并且对于大量表而言效果不佳。

以下过程对我有用:


创建一个空白的Visio Flowchart1模板。选择您喜欢的设计。将页面和打印尺寸设置为所需的尺寸(我选择了横向A3格式和“线性”主题)。
在侧面的SSMS中打开query2以获取以后需要的详细信息:表格,列名和IS NULL info。
开始一张一张地添加表格。手动选择要包括哪些表和列。

这是最终结果的示例:



或缩小了整个模型的屏幕截图(因为我选择的是人工操作,因此所包含的表格明显少于全部100个以上的表格): “表格”的外观如下:


标题是加粗的,并且是较大的字体。
分隔符不是行,而是一系列的粗体彼此之间短划线。 br四个“节”:TableName,主键,外键,普通列。
NOT NULL列为粗体。
TableName和分隔符为白色,列名称为黑色。

此外,我为以下项选择了外键:


禁止交叉连接,而创建小的“引用”块来引用模型另一侧的表。
不包括所有表(例如,有更多的外键一个连接器)。

希望上面的内容对其他人也有用。作为底线,我确实推荐这种方法,主要是因为您最终得到了一个视觉上吸引人的模型和高度的控制。但是,这种方法并不适合整个法案。它满足要求的方式如下:

数据连接:


SQL Server 2012数据库
具有所有列和主要/外部的反向工程表按键指示
反向工程外键作为表之间的连接器

±这都是可能的,但不是自动的。因此,“或多或少”。处理复杂的模型,例如100多个表格

✓是的,这对于纯Visio来说都非常有效。

钱:可用

✓AFAIK提供免费的Office试用版。我没有Visio,也没有对此进行研究。

其他:


导出为各种格式br />✓是,这在Visio中可用。

奖励积分:

它具有大约一半的奖励积分:


在Windows 8上运行
还支持SQL 2008
漂亮
友好的学习曲线


1。我还尝试了UML模板和形状,但这对于连接器路由具有令人发指的行为。不推荐!

2。这是我的查询:

  SELECT  t.name TableName,
          c.name ColumnName,
          CASE WHEN c.is_nullable = 1 THEN '' ELSE 'BOLD' END AS IsNotNullable
  FROM    sys.tables AS t
          JOIN sys.columns AS c ON t.object_id = c.object_id
  WHERE   c.name NOT IN ('Excluded1', 'Excluded2')
  ORDER BY t.name,
          CASE WHEN c.name = t.name + 'Id' THEN 0
               WHEN c.name LIKE '%Id' THEN 1
               ELSE 2
          END,
          c.column_id


评论


您如何通过SSMS中的查询“添加”表? Visio是否可以接受查询?您是说您是手动创建图表吗?

– webworm
2014年5月22日17:09



@webworm是的,我必须(有点可耻地)承认,我对大量控制的渴望和视觉效果吸引了我,使我不得不采取体力劳动。完整版(从缩略图显示)总共花了我大约3个小时的时间。保持最新状态大约是每4周冲刺10分钟。最大的缺点不是人工,而是人为错误的机会(阅读:复制/粘贴错误)。除非有人提出一个好的选择(非常欢迎!),否则我可能会坚持使用这种“解决方案”。

– Jeroen
2014年5月22日18:11

@sixtytrees这就是为什么我在摘要中给它加上±:“可能的,尽管不是自动的”。另外,我认为“ Powerpoint也能正常工作”并不是从这个前提简单地遵循的...

– Jeroen
16年8月10日在6:36

PS。请放心,尽管我不满意Visio是最糟糕的选择。

– Jeroen
16年8月10日在6:37

确实,您的建议是最好的。令人惊讶的是,没有工具可以可靠地反向工程链接。

–六十棵树
16年8月10日在13:29

#2 楼



签出SQL Power Architect。它可以连接到您可以为其配置JDBC连接器的许多数据库,并且可以执行您正在寻找的所有反向工程。不过,我只处理基本数据类型,因此在导入时必须将DATETIME转换为DATE。表名称/标题的颜色,而不是更改整个表的背景颜色。





#3 楼

SchemaCrawler是一个免费的开源数据库发现工具,可以对现有数据库进行反向工程。

重要:



SQL Server 2012数据库-SchemaCrawler与SQL一起使用Server 2012数据库
具有所有列和主/外键指示的反向工程表-SchemaCrawler将创建具有所有列和外键的图
将反向工程外键作为表之间的连接器SchemaCrawler将创建具有所有列和主键的图外键
手动布置盒子和连接器(我想在视觉上对东西进行分组)-SchemaCrawler可以生成GraphViz DOT,也可以使用它来调整布局
基本主题:选择背景表的颜色-SchemaCrawler还可生成GraphViz DOT,并且您可以使用其他工具微调布局
能够处理复杂的模型,例如100多个表-SchemaCrawler可以处理大量表-更好的是,您可以提供正则表达式搜索条件以创建模式子集的多个图
可以选择是否显示哪些项目(例如,省去)某些表格等)-SchemaCrawler允许您提供正则表达式搜索条件以创建模式子集的多个图
至少有一个免费试用版-SchemaCrawler是开源的,免费的
导出为各种格式出于分发和打印目的,我最喜欢的是PDF,PNG,我猜-SchemaCrawler是开源且免费的
主要要点:


可在Windows 8上运行(尽管我将为满足所有重要要求的软件安装Linux VM)-SchemaCrawler是跨平台的
自动布局和连接器布线可最大程度地减少重叠-SchemaCrawler可以在场景后面使用GraphViz实现自动布局es
能够执行SQL Server 2008和2008R2-SchemaCrawler支持所有版本的SQL Server
能够反向工程视图-SQL Server可以反向工程视图免费(或免费版本)-SchemaCrawler是开源且免费的
增量更新,例如再次进行反向工程并添加/删除表等,同时保留主题,现有布局等。-保存SchemaCrawler命令行命令,然后重新运行
漂亮的图(现代外观,抗锯齿,选择字体,颜色,渐变,阴影,主题等)-SchemaCrawler网站上的一些示例

友好的学习曲线(只要可以轻松快速完成基础知识,我就可以处理许多复杂的功能)_取决于您:-)

必须具备:


安装程序不会在浏览器中秘密安装工具栏或更改我的主页! ;-)-SchemaCrawler没有安装程序-解压缩并运行

Sualeh Fatehi,SchemaCrawler

评论


感谢您的回复,很高兴得知您已开源解决方案。不幸的是,现在不再能够判断该答案是否会奏效了。 -PS。将您的签名(通常在Stack Exchange上也不需要,因为您的姓名右下角也一样)更改为显式公开将是很友好的。

– Jeroen
17年1月30日在20:01

#4 楼

您的要求清单已由Lucidchart完全涵盖。好吧,它不是免费的,但是可以免费试用。

使用Lucidchart,您可以运行他们指定的查询,然后导入查询结果。这将创建表的集合,您可以将它们放到诸如模板形状的图表上。 Lucidchart绘制所选表的键之间的连接。您可以重新排列表格和连接,删除字段,更改颜色和字体等。据我所知,在较新版本的Visio中,您可以节省90%的手绘时间,并且您可以获得格式化的灵活性。不用担心错别字。缺点是这不是到数据库的实时连接,因此要刷新,您需要做一些手工工作。

您可以导出为各种图形格式(PNG,PDF,JPG)以及Visio(VDX)。

#5 楼

考虑使用SQL Server Management Studio(SSMS)。

转到数据库->数据库图->右键单击->添加新图->为您的ERD添加所需的表。

优点:
与SSMS一起提供,可以提取并很好地显示列名。
缺少链接的键。

请注意,上面列出的任何免费或试用工具都未获取到数据库的链接密钥。

#6 楼

Visio 2016现在具有用于逆向工程的加载项

https://support.office.com/en-us/article/Reverse-engineer-an-existing-database-into-a- database-model-fb034862-acfc-45bc-88b2-f33d1e1f8614#ID0EAABAAA = Visio_Pro_for_Office_365

评论


你会推荐吗?它与我的问题的要求如何相符?

– Jeroen
17年9月11日15:53

我没有正确安装它。但是我在工作中尝试过-工作总是有差异。我将花一些时间与系统管理员联系后进行更新。如果OP对Visio 2010感到满意,那么他们应该对此感到满意。看起来就像是同一件事。

– EthR
17年9月12日在20:24



我是OP :-)。 Visio 2010在当时还算不错,尽管7多年后,您还是希望有更好的东西。我发表上述评论的原因是,如果答案不符合要求并解释如何与要求相抵触,那么答案对我和其他人来说价值更大。

– Jeroen
17年9月12日在21:07

#7 楼

Try 
Apex SQL Model
Free: 
https://www.apexsql.com/sql-tools-model.aspx

with: 

Forward and reverse engineer
Customize the appearance of models
Create new or modify existing object groups
Navigate through model history
Export database models as images
Customize print output


#8 楼

我的要求与原始问题相同,但是Visio在选择方面已经具有优势,因为ERD图是2007年通过反向工程生成的。它给了我Visio 16(2015年底发布)。然后,我们为Visio安装了Database Modeling加载项以对数据库进行反向工程。
我使用该加载项使用ODBC驱动程序连接到SQL Server(2019)数据库(但它具有更多选择驱动程序和服务器,例如Oracle或SQL Server Native等),

导入架构,
SQL Server 2012数据库-是(已通过SQL Server 2019测试)
具有所有列和主键/外键指示-是

反向工程外键作为表之间的连接器-是,包括强项和弱项
手动布置盒和连接器(我想在视觉上对物料进行分组)-是

基本主题:为表格选择背景颜色-是

能够处理复杂的模型,例如100多个表格-是,发出警告,但仍然可以导入并布置好。
可以选择显示或不显示哪些项目(例如,省略某些表格等)-是

至少有一个免费试用版-否

导出为分发和打印目的的各种格式,最优选的是PDF,PNG我也猜到-是

所见即所得-是


PS:如果我要开始,而没有如上所述的对Visio的任何优势/偏好,我可能会选择dbdiagram.io