解密数据库模式

问题描述:

我最近继承了维护数据库的工作,这个数据库设计得不是很好,设计师也没有问任何问题。在不久的将来我还会有更多的人来这里。解密数据库模式

试图在没有任何形式的视觉辅助或数据库图表的情况下找出表格之间的关系一直很困难。

我想知道为此推荐了哪些工具。我知道Visio,但我希望有一些很好的开源/免费应用程序。我根本不需要它来改变数据库。只要阅读它并创建一些视觉帮助来帮助我理解事物的布局,并试图找出设计师在考虑数据应该如何关联的问题。


附加应答数据:SchemaSpy是那种我一直在寻找,但具有不做了大量随着年龄的命令行的事,我选择使用SchemaSpyGUI。也有一些配置需要习惯,因为我没有用过很多Java,但最终的结果就是我一直在寻找的东西(关于Visio ER图的开源替代品)。

+0

您使用了哪个数据库? – 2008-09-22 21:33:15

+0

另请参阅http://stackoverflow.com/questions/7031203/tools-for-discovering-de-facto-foreign-keys-in-databases – reinierpost 2016-07-07 18:32:12

尝试SchemaSpy。我在一个相当复杂的数据库上运行它,结果令我非常高兴,并提供了有关优化的建议。

您使用的是什么DBMS(数据库管理系统)?许多现代DBMS如SQL服务器和Access可以为您创建一个E-R图。

Microsoft Visio是一款出色的工具,可以对来自任何数据源的SQL进行反向工程。

DDT (Database Design Tool)可以在Windows上从原始SQL逆向工程,并且非常轻量级(非常小的免费下载)。

MySQL Workbench是比较流行的MySQL工具之一,并有一个免费下载的版本。

SQLFairy可以为Linux上的MySQL做同样的事情。

我对mysql数据库使用mysql工作台(http://www.mysql.com/products/workbench/)。您可以将工作台附加到您的数据库,它会为您绘制ER图。

使用pgsql/win32我发现最简单的解决方案是编写一个perl脚本,该脚本使用来自CPAN的Graph :: Easy。查询数据库中的外键关系,制定一个以表格作为节点和FK关系作为链接的有向图。如果这是您的设置,我可以发布代码。

这里有一些开源软件,但Visio Professional的逆向工程数据库模式工具非常好,因为它可以解耦逆向工程和绘图的过程。我用了很多,因为它往往在大多数网站上都可用。

visio的一个很好的功能是,您可以逆向工程,然后从反向工程架构构建自己的图。这样做是一种非常好的方式,可以在您作为交互式构建模式参考文档的一部分进行此项工作时探索架构并理解它。我使用这种技术来逆向工程,从Activity Based Costing SystemsInsurance Underwriting Systems,通常没有供应商的帮助。用Visio图修饰是相当放松的。

在这个和测试FK关系的小假设之间(如果FK没有物理存在于表上),您可以理解相当复杂的模式。我发现这种绘图方法使得Visio成为一名头对头的领导者,因为您可以非常方便地轻松与反向工程模型进行交互。您可以填写缺少的外键,构建主题区域图并在图上添加注释。这个过程的交互性使其成为一个很好的学习工具。

这是一个有点主观的观点,但交互性作为一个学习过程很适合我,这是我的首选方法。大多数网站不会吝惜您的300英镑左右的许可证 - 如果他们还没有可用。我曾经工作过的唯一一个必须进入的网站是因为他们使用了Visio Standard而不是Pro。我问得很好,PHB签了字。

我喜欢尝试一下,看看使用数据库的应用程序是否有记录他们使用的SQL(或数据库后端本身,但往往不太容易处理)的方法。了解在数据库上执行的请求有助于您专注于重要的表格。

与大多数情况一样,80/20规则适用于此:20%的表格将完成80%的有趣内容。一旦你弄明白了,一张图很少是必要的。

+0

哦真的吗? 40张桌子中的20%是可管理的。 2000桌的20%,不是那么多 – 2011-02-10 19:22:02

+0

是的。我有一些有1200多个桌子的系统。其中之一,你真的只需要知道12个左右的相互关系。另一个是大约25个。整个模式的图表是无用的,但是这些“核心”表格的图表足以在合理的水平上理解系统。 – dland 2011-05-12 10:17:54

+1

好的... 1200%的240%= 240. 25更接近2%,所以你证明了我的观点。 – 2011-05-12 16:30:41

尝试DBVis - 在http://www.minq.se/products/dbvis/下载 - 有一个专业版(不需要)和一个开放的版本,应该足够。

您只需按下一个按钮即可获得正确的JDBC数据库驱动程序,该工具在一个圆圈中显示表格和引用正交,hirarchical ;-)等。请享用!

dbdesc不是免费的,但我听说过很好的东西。它适用于那里的几个主要数据库。

我很幸运,我还没有解密其他人的数据库模式呢。我使用了一组与CodeSmith一起提供的模板。

查看已设置为起始位置的主键外键关系视图。由于没有现有图表的数据库可能没有正式建立关系,因此我查看表结构和名称,并尽可能地猜出与什么可能有关的内容,然后挖掘结构以查看是否存在是明显的(但未定义)外键。我查看存储过程,了解如何连接表以及查询哪些字段。当我自己挖掘数据库的细节时,我发现当我自动创建任何图片时,我的理解能力会得到更好的理解。

首先,我可以说我感到你的痛苦!
这里有一些我的秘诀:

  1. 在一般情况下,一个工具只会是有益的,如果设计师们正确定义所有的主键和外键,所以要知道,一个工具可能不会拿起所有的重要的关系。
  2. 最有用的是查看客户端代码正在执行哪些查询。这不仅会告诉你什么样的关系存在,而且哪些表和关系是最常用的 - 这就是你想要集中精力的地方。

我对Aqua Data Studio有一些相当不错的经验,用于逆向工程DB模式。它功能丰富,支持更多异形数据库,如Informix或Sybase。

这帮助我产生MS SQL Server 2012中的ER图:

MS SQL Server Management Studio中>文件菜单> “连接对象资源管理器” 选择你的数据库节点并展开它。在这个节点下,你会发现一个名为“Database Diagrams”的子节点。 右键点击“Database Diagrams”>“New Database Diagram”>添加希望看到他们的列,表格,关系表的表格

使用Visio。如果使用Vision 2010,则需要使用SQL Server的通用OLEDB提供程序来确保连接到Visio驱动程序时不会出现问题。