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


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

有关可以执行此操作的工具的任何建议吗?

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

有帮助吗?

解决方案

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

其他提示

Microsoft Visio很容易做到这一点。

至少对于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等。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top