解密数据库架构

时间:2008-09-22 21:32:04

标签: database database-design diagram

我最近继承了维护数据库的工作,该数据库设计得不是很好,设计师无法提出任何问题。在不久的将来,我还会有更多的事情发生。

在没有任何视觉辅助或数据库图表的情况下,试图弄清楚表格之间的关系是很困难的。

我想知道为此建议使用哪些工具。我知道Visio,但我希望有一些很好的开源/免费软件应用程序。我根本不需要它来更改数据库。只需阅读它并创建一些视觉辅助,以帮助我理解事物的布局,并试图弄清楚设计师正在考虑数据应该如何相关。


其他答案数据:SchemaSpy是我正在寻找的那种东西,但是由于多年来没有使用命令行做很多事情,我选择使用SchemaSpyGUI。还有一些配置需要习惯,因为我不使用Java很多,但最终结果是我正在寻找的(在Visio的ER图的开源替换)。

13 个答案:

答案 0 :(得分:15)

试试SchemaSpy。我在一个相当复杂的数据库上运行它,我对结果感到非常满意,并提出了优化建议。

答案 1 :(得分:2)

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

你所要做的就是获得正确的JDBC - 数据库驱动程序,工具显示表格和参考正交,层次结构,在一个圆圈内;-)等只需按一个按钮即可。享受!

答案 2 :(得分:1)

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

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

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

MySQL Workbench是比较流行的MySQL工具之一,可以免费下载。

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

答案 3 :(得分:1)

有一些开源软件,但Visio Professional的逆向工程数据库模式工具非常好,因为它解耦了逆向工程和图表的过程。我经常使用它,因为它在大多数网站上都很容易获得。

visio的一个很好的功能是你可以逆向工程,然后从反向工程模式构建自己的图表。这样做是探索模式并理解它的一种非常好的方法,因为您正在以交互方式构建模式的参考文档来完成此工作。我已经使用这种技术对从Activity Based Costing SystemsInsurance Underwriting Systems的所有内容进行逆向工程,通常没有来自供应商的帮助。使用Visio图表进行修补是非常轻松的。

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

这是一种有点主观的看法,但互动性对我来说非常适合作为一种学习过程,这是迄今为止我的首选方法。大多数网站都不会吝啬300英镑左右的许可证 - 如果他们还没有可用的话。我曾经在他们必须得到它的地方工作的唯一网站是因为他们有Visio Standard而不是Pro。我问得很好,PHB签了字。

答案 4 :(得分:1)

dbdesc不是免费的,但我听到了非常好的事情。它适用于那里的几个主要数据库。

我很幸运,因为我还没有解密其他人的数据库模式。我使用了CodeSmith附带的一组模板。

答案 5 :(得分:1)

首先,我可以说我感觉到你的痛苦! 以下是我的一些提示:

  1. 通常,只有设计人员正确定义了所有主键和外键时,工具才会有用,因此请注意,工具可能无法获取所有重要关系。
  2. 最有用的是查看客户端代码正在执行哪些查询。这将告诉您不仅存在哪些关系,而且最常使用哪些表和关系 - 这是您需要集中精力的地方。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

查看已设置为起始位置的主键外键关系。

由于没有现有图表的数据库,可能没有正式设置关系,我查看表格结构和名称,并尽可能猜测可能与什么有关,然后挖掘结构,看看是否有明显的(但未定义的)外键。我查看存储过程以了解表格如何连接以及正在查询哪些字段。

虽然找出数据库的自动化工具可能很精简,但我发现当我真正深入研究数据库的细节时,我最终会比从任何自动创建的图片中获得更好的理解。

答案 10 :(得分:0)

我对Aqua Data Studio有一些非常好的反向工程数据库架构的经验。它功能非常丰富,支持更多异国情调的数据库,如Informix或Sybase。

答案 11 :(得分:0)

这有助于我在MS SQL Server 2012上生成ER图表:

MS SQL Server管理Studio>文件菜单> “连接对象浏览器” 选择您的数据库节点并展开它。在此节点下,您将找到一个名为“Database Diagrams”的子节点 右键单击“Database Diagrams”> “新数据库图”>添加您希望查看其列,关系......的表

答案 12 :(得分:0)

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