【问题标题】:Generate an E-R Diagram by reverse-engineering a database [closed]通过对数据库进行逆向工程来生成 E-R 图 [关闭]
【发布时间】:2010-09-16 04:54:00
【问题描述】:

注意:最初这个问题是针对 PostgreSQL 提出的,但是,答案几乎适用于任何具有可以检测外键关联的 JDBC 驱动程序的数据库。


在 PostgreSQL 数据字典中查询外键和表之间的关系非常简单,但是我如何使用这些信息来生成表之间的关系图呢?

关于可以做到这一点的工具有什么建议吗?

编辑:我知道 GraphVIZ/DOT 可以有用,但是,我不知道如何编写会生成有向图的应用程序.DOT 文件。

【问题讨论】:

标签: database diagram entity-relationship


【解决方案1】:

DBVisualizer 也是一个免费且不错的选择。

【讨论】:

    【解决方案2】:

    至少对于 Oracle,我运行此查询或要求 DBA 运行它并将结果发送给我。结果可以直接复制到文本文件中,由 Graphviz 的工具解释,从而生成数据库图表。

    SELECT '"' || Source.TABLE_NAME || '" -> "' 
               || Destiny.TABLE_NAME || '";' AS For_GraphViz
    FROM dba_constraints Source
    JOIN dba_constraints Destiny
    ON Source.owner='my_db_owner' AND Destiny.owner='my_db_owner'
    AND Source.CONSTRAINT_TYPE='R'
    -- theoretically this validation should be redundant
    -- AND Destiny.Constraint_type = 'P'
    AND Source.R_CONSTRAINT_NAME = Destiny.CONSTRAINT_NAME
    ORDER BY Source.TABLE_NAME, Source.CONSTRAINT_TYPE, Source.CONSTRAINT_NAME
        , Source.R_CONSTRAINT_NAME, Source.INDEX_NAME;
    

    SQL Server 可以轻松创建类似的查询,不了解 MySQL、PostgreSQL 等。

    【讨论】:

    • 顺便说一下,我强烈建议使用“circo”或“twopi”来绘制图表,而不是简单的“dot”甚至“neato”——至少在我的经验为拥有数百个表的数据库产生了非常令人愉快的图形结果。
    【解决方案3】:

    Dot 是 graphviz 软件包的一部分,这是一个非常酷/有用的工具。当然,您需要一些东西来为 graphviz 生成点文件。我过去曾使用过一次或两次SchemaSpy,只要您在数据库中定义了关系,它就可以很好地工作。

    【讨论】:

    • 是的,SchemaSpy 看起来是适合这项工作的工具!谢谢:)
    • 即使过去几年没有更新,这个工具仍然可以正常工作。
    • SchemaSpy 非常棒。确认它可以与 SQL Server 一起使用!
    【解决方案4】:

    Dot 是多平台的,可能很有用。

    【讨论】:

      【解决方案5】:

      Microsoft Visio 可以轻松做到这一点。

      【讨论】:

      • 自 Visio 2013 起不再存在,他们已从现有数据库中删除了数据库图表。
      • 真可惜。在过去 6 年左右的时间里,我一直在定期使用该功能。
      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 2012-10-09
      • 2019-05-10
      • 2022-01-20
      • 1970-01-01
      • 2018-08-26
      相关资源
      最近更新 更多