9

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

在没有任何视觉帮助或数据库图表的情况下试图找出表之间的关系是很困难的。

我想知道为此推荐什么工具。我知道 Visio,但我希望那里有一些好的开源/免费软件应用程序。我根本不需要它来更改数据库。只需阅读它并创建某种视觉辅助工具来帮助我了解事物的布局方式,并尝试弄清楚设计师在考虑数据应该如何关联。


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

4

13 回答 13

15

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

于 2008-09-22T22:03:00.843 回答
2

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

您所要做的就是获得正确的 JDBC - 数据库驱动程序,该工具只需按一个按钮即可显示表和引用正交、分层、循环;-) 等。享受!

于 2008-09-22T21:48:21.173 回答
1

您使用的是什么 DBMS(数据库管理系统)?许多现代 DBMS,如 SQL server 和 Access 都可以为您创建 ER 图。

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

DDT(数据库设计工具)可以在 windows 上从原始 SQL 进行逆向工程,并且非常轻量级(非常小的免费下载)。

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

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

于 2008-09-22T21:33:36.200 回答
1

那里有一些开源软件,但 Visio Professional 用于逆向工程数据库架构的工具非常好,因为它将逆向工程和图表的过程分离。我经常使用它,因为它在大多数网站上都很容易获得。

visio 的一个不错的功能是您可以进行逆向工程,然后从逆向工程架构构建您自己的图表。这样做是探索模式和理解模式的一种非常好的方式,因为您将这项工作作为交互式构建模式参考文档的一部分。我已经使用这种技术对从基于活动的成本计算系统保险承保系统的所有内容进行了逆向工程,通常无需供应商提供太多帮助。修补 Visio 图表非常轻松。

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

这是一个有点主观的观点,但交互性对我来说作为一种学习过程非常有效,这是迄今为止我更喜欢的方法。大多数网站不会吝啬你 300 英镑左右的许可证——如果他们还没有许可证的话。我曾经工作过的唯一一个他们必须进入的网站是因为他们使用的是 Visio Standard 而不是 Pro。我问得很好,PHB 签字了。

于 2008-09-22T21:39:26.250 回答
1

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

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

于 2008-09-22T22:09:00.033 回答
1

首先,我可以说我感受到了你的痛苦!
以下是我的一些建议:

  1. 一般来说,只有当设计者正确定义了所有的主键和外键时,一个工具才会有帮助,所以请注意,一个工具可能无法获取所有重要的关系。
  2. 最有用的是查看客户端代码正在执行哪些查询。这不仅会告诉您存在哪些关系,而且会告诉您哪些表和关系是最常用的——这就是您要集中精力的地方。
于 2008-09-23T08:41:59.230 回答
0

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

于 2008-09-22T21:37:17.003 回答
0

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

于 2008-09-22T21:37:47.407 回答
0

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

与大多数事情一样,80/20 规则在这里适用:20% 的表格将完成 80% 的有趣事情。一旦你弄清楚了它们,图表就很少需要了。

于 2008-09-22T21:39:33.940 回答
0

查看已经设置好的主键外键关系hsips作为起点。

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

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

于 2008-09-22T22:57:36.047 回答
0

我在使用Aqua Data Studio对数据库模式进行逆向工程方面有一些非常好的经验。它的功能非常丰富,并且支持更多奇特的数据库,例如 Informix 或 Sybase。

于 2008-09-24T18:31:49.757 回答
0

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

MS SQL Server management Studio > File menu > "Connect Object Explorer" 选择您的数据库节点并展开它。在此节点下,您将找到一个名为“Database Diagrams”的子节点,右键单击“Database Diagrams”>“New Database Diagram”> 添加您希望查看其列、关系、...

于 2013-12-06T19:51:05.280 回答
0

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

于 2014-03-13T19:47:31.887 回答