web-dev-qa-db-ja.com

データベースをリバースエンジニアリングしてE-R図を生成する

注:元々この質問はPostgreSQLに対して行われたものですが、その答えは、外部キーの関連付けを検出できるJDBCドライバーを備えたほとんどすべてのデータベースに当てはまります。


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

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

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

17

ドットは graphviz パッケージの一部であり、これはかなりクールで便利なツールです。もちろん、graphvizのドットファイルを生成するために何かが必要になります。私は過去に1回か2回 SchemaSpy を使用しましたが、データベースで定義された関係があれば、かなりうまく機能します。

14
Paul Wicks

MicrosoftVisioはこれを簡単に実行できます。

4
Andrew

少なくとも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;

同様のクエリはSQLServerでも簡単に作成できますが、MySQLやPostgreSQLなどについては知りません。

2
Joe Pineda

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

1
user20282

DBVisualizer も無料で素敵な代替手段です。

1
Zeemee