📚

SchemaSpyでER図を生成する [MySQL]

2024/01/30に公開

はじめに

SchemaSpy は、データベース内のスキーマのメタデータを分析し、ブラウザー表示可能な形式でその視覚的表現を生成する Java ベースのツール (Java 8 以降が必要) です。
今回、DBの把握のためにSchemaSpyを利用します。

https://schemaspy.org/

対応DB

今回は、MySQLに接続して使いましたが、以下のDBで使えそうです。
DB2、Firebird、Impala、MySQL、MariaDB、Netezza、Oracle、PostgreSQL、Redshift、SQLite、SQL Server、Sybase、Teradata

事前準備

実行するにあたって、下記を準備する必要があります。

  • SchemaSpyのjarファイル
  • Java8以降のインストール
  • 対象のDBに応じたJDBCドライバ
  • Graphvizのインストール(オプション)

https://schemaspy.readthedocs.io/en/latest/installation.html

フォルダ構成

.
┣ drivers
    ┗ mysql-connector-j-8.3.0.jar
┣ schemaspy-6.2.4.jar
┗ schemaspy.properties

設定ファイル

schemaspy.properties

# DB種類
schemaspy.t=mysql
# JDBCドライバ場所
schemaspy.dp=drivers
# DBホスト
schemaspy.host=127.0.0.1
# DBポート番号
schemaspy.port=3306
# データベース名
schemaspy.db=mydb
# DBスキーマ名
schemaspy.s=mydb
# ユーザ名
schemaspy.u=root
# ユーザパスワード
schemaspy.p=root
# 出力先
schemaspy.o=output

コマンド

# 実行
java -jar schemaspy-6.2.4.jar -vizjs

# デバック
java -jar schemaspy-6.2.4.jar -vizjs -debug

直下に、outputフォルダが作成され、その中のindex.htmlをブラウザで開くと閲覧できます。
設定ミスとかは、デバックコマンドで地道に解消しましょう。

カラムリストをページ切り替えせずに一括で見る

[-nopages]: データをページではなく 1 つの長いリストにする

# 実行
java -jar schemaspy-6.2.4.jar -vizjs -nopages

おわりに

ちなみに、outputフォルダを共有すれば見れるので数名しか閲覧しない状況であれば、ファイルサーバーとかにoutputフォルダを置いて個々にローカルに落として閲覧してもらうスタイルでも良い気がします。

参考

https://zenn.dev/onozaty/articles/schema-spy-er
https://qiita.com/Ikeponias/items/bab03342f8a467321faf
https://note.com/fukurou_dev/n/nb4efe573864c

Discussion