【问题标题】:Decipher database schema [closed]解密数据库模式[关闭]
【发布时间】:2010-09-12 04:17:35
【问题描述】:

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

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

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


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

【问题讨论】:

标签: database database-design diagram


【解决方案1】:

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

【讨论】:

  • 这真的回答了这个问题吗?这个工具似乎不能推断密钥,我认为这是问题的一部分。
  • @reinierpost 我在原始问题中没有看到“关键”,所以我不确定你为什么这么认为...... :-) (实际上,我什至不明白你的意思通过“推断密钥”。)无论如何,有几个答案的兴趣是提出几个工具,这样你就可以选择最适合你的使用。
  • 如果数据库设计得不是很好(在许多其他情况下),通常外键甚至主键都没有明确声明。因此,试图理解数据库需要试图弄清楚事实上的外键(表之间的关系)是什么。绘制数据库架构图的工具不会这样做,因此在这种情况下,它只会生成表的转储,而不会显示它们之间的任何关系。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        1. 一般来说,只有当设计者正确定义了所有主键和外键时,工具才会有用,因此请注意,工具可能无法识别所有重要关系。
        2. 最有用的是查看客户端代码正在执行哪些查询。这不仅会告诉您存在哪些关系,而且会告诉您哪些表和关系是最常用的——这就是您要集中精力的地方。

        【讨论】:

        • 如果名称一致,一些工具可以推断关系。
        • 谢谢,@Stephanie。知道这很有用。你能说出几个吗?
        • PowerDesigner 可以做到这一点。这是我用的。它并不便宜,但有一个 15 天的定时炸弹完整版。
        【解决方案6】:

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

        visio 的一个不错的功能是您可以进行逆向工程,然后从逆向工程架构构建您自己的图表。这样做是探索模式和理解模式的一种非常好的方法,因为您将这项工作作为交互式构建模式参考文档的一部分。我已经使用这种技术对从Activity Based Costing SystemsInsurance Underwriting Systems 的所有内容进行逆向工程,通常不需要供应商提供太多帮助。修补 Visio 图表非常轻松。

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

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

              【讨论】:

              • 哦,真的吗? 40 个表中有 20% 是可管理的。 2000 张桌子的 20%,不多
              • 确实如此。我有几个系统有 1200 多个表。一方面,你真的只需要知道 12 个左右是如何相互关联的。另一方面,大约 25 个。整个模式的图表是无用的,但是这些“核心”表的映射足以在合理的水平上理解系统。
              • ok... 20% of 1200= 240. 25 接近 2% 所以你证明了我的观点。
              【解决方案10】:

              查看已经设置好的主键外键关系hsips。

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

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

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                  【解决方案12】:

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

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

                  【讨论】:

                    【解决方案13】:

                    使用 Visio。如果使用 Vision 2010,则需要使用 Generic OLEDB Provider for SQL Server 以确保连接到 Visio 驱动程序时不会出现问题。

                    【讨论】:

                    • 这行不通。 Visio 不会推断表之间的关系。
                    猜你喜欢
                    • 2010-09-09
                    • 2011-02-24
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-09-13
                    • 1970-01-01
                    • 2011-02-25
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多