18

注: 当初、この質問は PostgreSQL に対して行われましたが、その回答は、外部キーの関連付けを検出できる JDBC ドライバーを持つほぼすべてのデータベースに適用されます。


外部キーとテーブル間の関係について PostgreSQL データ ディクショナリをクエリするのは非常に簡単ですが、その情報を使用してテーブル間の関係のグラフを生成するにはどうすればよいでしょうか?

これを行うことができるツールに関する推奨事項はありますか?

編集: GraphVIZ/DOT役立つことは知っていますが、有向グラフ .DOT ファイルを生成するアプリをコーディングする方法についてはわかりません。

4

5 に答える 5

14

ドットは、かなりクールで便利なツールであるgraphvizパッケージの一部です。もちろん、graphviz 用のドット ファイルを生成するには、何かが必要です。過去に 1 度か 2 度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

ドットはマルチプラットフォームであり、役立つ場合があります。

于 2008-10-09T05:08:18.437 に答える
1

DBVisualizerも無料で優れた代替手段です。

于 2014-05-07T09:12:52.273 に答える