18

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


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

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

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

4

5 回答 5

14

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

于 2008-10-09T05:16:28.000 回答
4

Microsoft Visio 很容易做到这一点。

于 2008-10-09T05:03:06.170 回答
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 等。

于 2014-02-01T17:40:23.477 回答
1

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

于 2008-10-09T05:08:18.437 回答
1

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

于 2014-05-07T09:12:52.273 回答