17

我有一个非常大的数据库,我需要绘制图表。数据库是 x64 上的 SQL Server 2008。它很大,因为有数百个相关表,每个表最多有 2000 个字段(有些是稀疏的),表之间的多个关系(实际上每个表通常有数百个),多个模式......你明白了。

我尝试使用 SQL Server Management Studio 的数据库图表功能,但它因 Win32Exception 而崩溃:“没有足够的存储空间来处理此命令...”

我尝试在另一台机器上使用 Visio 的逆向工程功能来连接并绘制图表,但这已经持续了几个小时,没有完成的迹象。

构建这个巨大模式的脚本是由我们为这项工作构建的工具提供的。虽然该工具运行良好,但可视化其输出却很棘手。

我正在寻找一个工具来踢出这个数据库的图表,这样我们就可以做到这一点。有什么建议么?

编辑:只是强调一下,该图确实不应该用于实际有用的参考。它是一个客户关系管理设备,用于展示系统的复杂性/规模。

4

8 回答 8

18

我在一个有数百张桌子(接近 1k)的地方工作,没有人真正知道系统中发生了什么,公司正在发展并招聘了很多人。一个人的任务是绘制图表,他自动创建了一张巨大的瓷砖海报,其中包含每张桌子,并用线条连接不同的桌子(到处都是)。我不确定他使用的是什么,它是几年前的 Unix 和 Oracle(在 Linux 和开源之前)。他的图表中的表格布局没有真正的韵律或理由。他已经成功地创建了每张桌子的图表。“海报”贴在公共区域的墙上,看了几眼,但没有人真正用过,不实用,太杂乱,太杂乱。因此,我使用 MS-Word 创建了一个包含 20 个主表的单页图(当我“发现”新的主表时,它经历了几次迭代),每个外键的行和每个表以逻辑方式定位。我展示了列名、数据类型、可空性、PK 和所有 FK。我把我的图表贴在我的显示器旁边的墙上。最终每个人都想要我的图表的副本,包括制作“海报”的人。当我离开那份工作时,他们仍在将我的图表提供给新员工。

我建议你像探险家一样工作,找到关键表并在你去的时候映射它们,在你发现系统时制作尽可能多的特定图表。试图自动制作巨大的“海报”不会很好。

于 2010-08-17T14:12:14.673 回答
11

为这种大小的数据库生成任何类型的图像只会变成粘在墙上的吸引眼球的糖果,老实说,除了偶尔瞥一眼之外,没有任何实际用途。为什么不使用像Red Gate 的文档工具这样可以服务于实际目的的工具呢?请理解我并不是在以嘲弄的方式说这句话,但在尝试绘制一个巨大的数据库之前,我一直在走这条路,我在某种程度上取得了成功,但从未找到一个有用的出路。

于 2010-08-17T14:05:46.353 回答
2

由于您有多个模式,也许一个好主意是为每个模式生成图表

于 2010-08-17T14:06:23.873 回答
2

使用图形可视化。使用一些 SQL 语句生成 digram,然后通过 dot.exe 运行它以生成 PDF 或 PNG。

我用它在 SQL Server 表中生成数据图。没有理由也可以将它用于表格。

http://www.graphviz.org/

还有用于导航超大图形的 java、silverlight 和 AJAX 实用程序,因为 PDF 仅用于一页。

于 2010-08-17T14:23:08.713 回答
0

FWIW,假设您确实想继续进行此操作,我个人发现 Visual Studio 2010 数据库建模器制作了迄今为止我遇到的最好的图表 - 只需导入您的数据库,就好像您打算将它用于 Linq2SQL

于 2010-08-17T14:07:54.170 回答
0

我会避免在一个图表中完成整个事情。正如您所提到的,这些工具会崩溃,并且可能无法轻松理解包含数百个表且每个表可能有数千条记录的图表。您能否生成与其他逻辑区域重叠的较小逻辑区域的图表?

或者,您可以尝试使用类似 graphviz 的东西来解析 DDL 语句,然后生成一个图表。它可能会搅动一段时间,但我记得在大学海报大小的图表中看到了小字,可能和你的一样复杂。祝你好运!

于 2010-08-17T14:05:51.860 回答
0

schemaspy 提供了一个方便的界面,可以使用 graphviz 作为后端生成跨越多个模式的交互式图表。不过,我从未在这种尺寸的任何东西上尝试过。

于 2016-03-24T21:27:52.197 回答
0

IntelliJ(特别是刚刚尝试过的 IDEA,但我相信他们的其他 IDE 提供此功能https://www.jetbrains.com/)有一个内置的数据库客户端工具,从这里您可以连接到您的数据库并分析单个表、特定组合或表格或所有表格,方法是突出显示所需表格、“右键单击”并选择“图表”选项。您可以保存以供以后参考,也可以打印。我刚刚在一个包含 500 多个表的大型数据库上进行了尝试,它在几秒钟内呈现,矢量图可作为一种替代方式来直观地消化数据库结构以及某些表之间的关系和约束,但不推荐用于打印。

在此处输入图像描述

于 2016-07-19T15:30:11.067 回答