8
5

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 1 year has passed since last update.

ZOZOAdvent Calendar 2021

Day 3

SchemaSpyでER図を自動生成

Last updated at Posted at 2021-12-02

この記事は ZOZO #3 Advent Calendar 2021 3日目の記事になります。

DBのテーブル設計ってみなさんどうしていますか?
最初に図に書いて、あとは実テーブルみれば、、、というのが多いかと思います。

SchemaSpyというツールを使うと、実テーブルからER図をHTMLで自動作成してくれます。

俯瞰的にテーブル設計を見直したい場合などに使うとよいでしょう。

使い方は簡単で、
githubからjarファイルをダウンロードできますので、これを実行するだけです。

java -jar $PWD/lib/schemaspy-6.1.0.jar -t h2 -db ./testdb.db -u sa -o ./build/schemaspy -dp ./lib/h2-1.4.200.jar

引数は以下の通り
-t: データベースのタイプ
-db: 接続するデータベースの名前
-u: データベースユーザーID
-o: 出力ディレクトリ
-dp: JDBCドライバ
詳細はドキュメントを参照してください。

私達のチームとしての使い方は、gradleにタスクを仕込んで、CIで自動生成したり、h2でFlywayを毎度migrateして、Flywayのテストを兼ねて実行したりと言った使い方をしています。

また、テーブルに設定したコメントも表示してくれますので、CREATE TABLEではコメントを積極的に入れるといいと思います。ファイルのコメントは読み取ってくれないので、DDL内にコメントを仕込む必要があります。

CREATE TABLE stores
(
    store_id INT NOT NULL comment 'ストアID',
    store_name VARCHAR(100) NOT NULL comment 'ストア名',
    pref_id INT  NOT NULL comment '都道府県ID'
    PRIMARY KEY (store_id)
    FOREIGN KEY (pref_id) REFERENCES prefs(pref_id)
) comment =' ストア';

こんな感じで出力されます。

スクリーンショット 2021-11-30 1.16.29.png

スクリーンショット 2021-11-30 1.16.40.png

スクリーンショット 2021-11-30 1.18.05.png

明日は、@naoya_s による「Code With Meについて書く」です。同じ開発チームのメンバーによる記事になります。モブプロでCodeWithMe使えるのかどうなのか?お楽しみに!

8
5
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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?