親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。育児のイロハという育児サイト(https://ikujip.jp)の開発も行っているため、その開発で使用されている技術についても掲載しています。

MySQLWorkbenchでDBからER図(モデル)を作成 – リバースエンジニアリング

ここのページでは、
MySQLWorkbenchでDBからER図を作成する手順を共有します。
いわゆるリバースエンジニアリングという手順です。

ER図とは?

「Entity Relationship Diagram」と呼ばれ、データベース設計を行う際の設計手法の1つです。
各テーブルが外部キーでどのように繋がっているのかリレーションを表したり、そのリレーションが「1対1」、「1対多」、「多対多」のいずれのパターンなのかも表現します。

f:id:tomotomo1129:20180521082152j:plain

もしデータベース設計時にER図を作っていない人がいれば、設計時に作成することをおすすめします。
設計者であればある程度設計は頭の中に入ってきますが、後からプロジェクトに参加した人などはテーブル同士の相関関係というものを俯瞰して見なければわからないものです。

MySQLWorkbenchとは?

MySQLWorkbenchとは、MySQLの管理ツールとして有名です。

このツールを使用するメリットとして挙げられることは、phpMyAdminと違っていちいちブラウザを開く必要がないこと等、いくつか挙げられますが、私はER図が用意に使えることが大きなメリットだと思っています。

同じようにMySQLの管理ツールとしてSequelProが有名です。
もしMySQLWorkbenchでER図を使えないなら、圧倒的にSequelProをおすすめと言いたいところですが、設計時の利便性を考えるとER図を使えるMySQLWorkbenchもおすすめのツールです。

ER図の作成手順

本題に入りますが、ER図の作成手順です。

後述しますが、今回はリバースエンジニアリングということで、すでにデータベース上にテーブルはいくつかできているものとします。

ちなみにMySQLWorkbenchのバージョンは6.0.9です。

以下のようなクエリ実行画面で、
「Database」→「Reverse Engineer..」と進んでください。

f:id:tomotomo1129:20180521082005j:plain

DBへの接続設定画面が表示されるので、「Stored Connection」のセレクトボックスで、自分が設定を保存しているDBの設定名を選択してください。

f:id:tomotomo1129:20180521082031j:plain

「continue」を押して進んで行くと、接続するDBスキーマの選択画面に進みます。

f:id:tomotomo1129:20180521082117j:plain

ここで接続するDBスキーマを選択して、後はひたすら「continue」を押して進んでください。そうすればなんと一瞬でER図が作成されるではありませんか。

f:id:tomotomo1129:20180521082152j:plain

これで各テーブルの相関関係が理解しやすくなります。
ちなみにテーブル同士を繋いでいる線にポインタを当てると、線の色が変わって、各テーブルのどの項目同士に相関関係があるのかが分かりやすくなります。

なぜリバースエンジニアリングなのか

リバースエンジニアリングとは、工業製品の業界でよく使用される言葉のようですが、製品(自動車、製造機器など)を分解し、その内部構造や動作原理を探る手法のことで、ライバル他社の製品を分析する際や、自社製品であっても仕様を理解している人がいない場合などに行うようです。

エンジニアに関連させて説明しやすいように言えば、既存のシステムを解体・分解してシステムの仕組みやシステムの構成要素を分析する手法とでも言えるのでしょうか。

今回の対応ではMySQLWorkbenchによりER図を作成することで、既存のデータベースを各テーブルごとに解体し、そのテーブルの定義内容を確認・分析する状態を作ることができました。

データベースは改修を重ねることで、どんどん複雑になります。
初期からいるメンバーにとっては理解していることでも、途中から加入したメンバーなどは理解するまで時間がかかるものなので、データベースの設計書がない場合はまずはこのようなシステムでER図を作成し、新メンバーに見てもらうのもいいかもしれませんね。

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)