4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SchemaSpyを使って、RedmineのER図作成を自動化する

Posted at

目的

RedmineのER図が無かったのだが、手で描くのが非効率なのでなるべく自動化したかったため

方法

SchemaSpyを使用。railsモードを使ってER図を描画した。

公式:
https://schemaspy.readthedocs.io/en/latest/index.html

環境情報

  • CentOS 7
  • MySQL 5.7.26
  • MySQL JDBCドライバ 5.1.48
  • SchemaSpy 6.1.0

実施スクリプトのディレクトリ構成

※ 出力ディレクトリは割愛しています。

schemaspy
    ├─config
    │      config.file
    │
    └─jar
            mysql-connector-java-5.1.48.jar
            schemaspy-6.1.0.jar

制御ファイル

jarファイルや、ER図の出力ディレクトリは、フルパスで記述しています。
データベース名も含め、適宜、自身の環境に読み替えてください。
schemaspy.sオプションは、指定しないとエラーになりました

config.file
# type of database. Run with -dbhelp for details
schemaspy.t=mysql
# optional path to alternative jdbc drivers.
schemaspy.dp=/media/sf_work/script/schemaspy/jar/mysql-connector-java-5.1.48.jar
# database properties: host, port number, name user, password
schemaspy.host=localhost
schemaspy.port=3306
schemaspy.db=ew_dev_redmine33x
schemaspy.u=root
# schemaspy.p=database_password
# output dir to save generated files
schemaspy.o=/media/sf_work/script/schemaspy/er_output
# db scheme for which generate diagrams
schemaspy.s=ew_dev_redmine33x

実行コマンド

java -jar /media/sf_work/script/schemaspy/jar/schemaspy-6.1.0.jar -configFile /media/sf_work/script/schemaspy/config/config.file -vizjs -rails -connprops useSSL\\=false

オプション解説:

  • -vizjs
    • Graphvizという描画モジュールを使わず、SchemaSpyに組み込まれている描画モジュールを使用する
  • -rails
    • DBに外部キー制約が定義されていなくても、カラム名から推察してリレーションの線を作ってくれる。RedmineはRailsで、かつ、外部キー制約がなかったので、このオプションを使った。
  • -connprops useSSL\=false
    • SSL関係でワーニングが出るのを回避したかったので、公式を参照して付けたオプション。

出力結果

出力ディレクトリに指定したフォルダにindex.htmlが作成されるので、ブラウザで見てみましょう。

image.png

とても全体を見切れないことがわかりました。テーブル単位で見てみましょう。
issuesテーブルがRedmineの要なので、ここを見てみました。

image.png

なんとか見れないこともないですが、データベースのカラム名から推察しているので、Redmineのソースコードを読み取っているわけではありません。ActiveRecordで独自に作成されたリレーションは取り込めないということですね。手でリレーションを追加することもできますが、自動化したいという目的には合っていません。

まとめ

外部キー制約が貼られているのであれば、ER図の作成を非常に効率化できそうです。
しかしRailsのソースコードを解析していないので、精度の高いER図を出力するには別の手段が必要だと分かりました。
Rails ERDというツールがあったので、こちらを調べてみようと思います。

参考情報

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?