06 May 2014, 19:24

ER図作成ツール MySQL Workbench を使ってみる

表題の通りER図作成ツールというものを使ってみました。
現代では、WebアプリケーションのフレームワークにDBマイグレーションのような機能を持ち、スクリプト的にDB構造を管理することが多いかもしれません。しかし、時としてER図を管理したい場合もあるのではないでしょうか。
ER図とかテーブル構造はよくExcelでまとめて管理していましたが、規模が大きくなると辛いので試してみました。

試してみようと思ったきっかけは、ソフトウエアデザインを読んでいてER図作成ツールなるものがでてきたので、便利そうと思ったからです。
調べると主なフリーのER図作成ツールは以下があるようです。

  1. DBDesigner
  2. A5-SQLmk-2
  3. AmaterasERD
  4. MySQL Workbench
  5. ERMaster

(参考) http://treeapps.hatenablog.com/entry/20110505/p1

この中でMacで使えそうなのがMySQL Workbenchしかなかったのでこちらを利用してみます。
本当はMySQLといった製品に縛られないツールがよかったのだけど仕方ないですね。

優れている点

ざっと使ってみた感じ以下3つがよいと感じた点です。

1.ER図作成が容易

ER図作成ツールなのであたりまえなのだが、今までExcelの図形など使っていて書いていたので簡単さに驚きました。
属性についてもそれぞれ型やキー・制約などの設定も記述できます。

2.DDLにすぐにエクスポート可能

作成したER図についてはDDLにすぐにエクスポートできます。
なので、ツールでER図さえきちんと書けば実際のDB、テーブル構築はすぐに可能です。

3.イメージ図としてエクスポート可能

作成したER図をPNG形式にエクスポートできるので、メンバー等との共有が容易です。
また、ドキュメントとして残す際にもとても使えます。

試しにER図を作ってみる

実際にMySQL Workbenchを使って簡単にER図を作成してみます。 下記のような簡単なシステムと想定します。日本酒好きなのがばれましたね。

  • ユーザが飲んだお酒を記録していくWebシステムです。
  • 利用用するにはシステムへのユーザ登録が必要。
  • ユーザはお酒マスターから飲んだお酒を登録する。
    • 同じお酒を何度登録(飲んでも)よい
  • お酒には産地(都道府県)を記入する。
  • ユーーザは本システムへログイン後のアクセスログが取得される。

こんなざっくりとした感じ。

作成したER図はこんな感じに出来上がります(PNG)。
![er](/image/mysql-workbench-er.png)

DDLの出力もこんな感じに可能です。

```mysql -- MySQL Script generated by MySQL Workbench -- Tue May 6 19:16:11 2014 -- Model: New Model Version: 1.0 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

– Schema mydb


CREATE SCHEMA IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE mydb ;


– Table mydb.User


CREATE TABLE IF NOT EXISTS mydb.User ( user_id INT NOT NULL AUTO_INCREMENT, account VARCHAR(45) NOT NULL, password VARCHAR(45) NOT NULL, team_id INT NOT NULL, last_login DATETIME NULL, PRIMARY KEY (user_id), UNIQUE INDEX account_UNIQUE (account ASC)) ENGINE = InnoDB;

(以下省略)


## まとめ
現代の環境ではあまり使う場面も少ないかもしれないですが、
使ってみた感想は、思ったよりも使い勝手がよくいいものでした。
プロジェクトやお客さんのニーズに合わせて選択肢の1つしてどのようなツールかだけでも知っておくと良いと思います。

</body>
関連する記事はこちら
  • Sock Shopを使ったマイクロサービス体験のハンズオン (2020/01/22)
  • Datadog APMとトレーシングの仕組みについて (2019/11/21)
  • [基礎] ElasticSerachなどの外部コンポーネントがあるときのテスト (2019/05/26)
  • SlideShare APIをGoogleAppsScriptから利用する方法 (2018/12/20)
  • Docker Compose上でのRailsアプリケーションの開発フロー (2018/05/02)
  • comments powered by Disqus
    このエントリーをはてなブックマークに追加