注意:最初这个问题是针对PostgreSQL提出的,但是,答案几乎适用于任何具有可以检测外键关联的JDBC驱动程序的数据库。
查询外键和表间关系的PostgreSQL数据字典非常简单,但是如何使用该信息生成表间关系图?
有关可以执行此操作的工具的任何建议吗?
编辑:我知道GraphVIZ / DOT 可以有用,但是,我不知道如何编写会生成有向图的应用程序.DOT文件。
答案 0 :(得分:14)
Dot是graphviz包的一部分,这是一个非常酷的/有用的工具。当然,你需要一些东西来生成graphviz的点文件。我过去曾使用过一次或两次SchemaSpy,只要您拥有数据库中定义的关系,它就能很好地工作。
答案 1 :(得分:4)
Microsoft Visio很容易做到这一点。
答案 2 :(得分: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等。
答案 3 :(得分:1)
Dot是多平台的,可能很有用。
答案 4 :(得分:1)
DBVisualizer也是一个免费且不错的选择。