ER図って、どう書いたらいいのだろう…? システム開発に携わっていても、基本設計書や詳細設計書の作成+プログラム作成というエンジニアが多いのが現状。もしもER図を書けるチャンスに恵まれたなら、ぜひ積極的にチャレンジしてみてください。すべてを理解しなくても大丈夫。お助けツールを有効活用してER図を克服しましょう!
- 目次 -
Part 1: ER図とは
ER図とは、実体関連モデルを用いて作成されたデータモデルを図式化したもので、実体関連図とも呼ばれます。
Entity(実体)Relationship(関連)Diagram(図)の略で、特に大規模システムの開発には必要不可欠なデータベース設計書となっています。
ここからは、以下のようなシステムを開発する想定で解説していきます。
●ユーザにはマイページを用意し、ログインして旅行予約サイトを利用していただく
●予約した金額に応じてユーザにポイントを付与する
●ポイントは、すでに運用中の「ポイント管理サブシステム」を利用して管理する
上図:EdrawMaxで作成した宿泊予約管理システム
これらの開発要件をもとにシステム全体像の最終形とキーワードを図にしました。この図を参考に以降の解説を読んでみてください。
では、くわしく解説していきましょう。
最終目標は、旅行予約サイトに必要なテーブルを設計することです。
ER図は設計フェーズに沿って段階的に作成していきます。設計フェーズとは、要件定義~詳細設計までを示しています。詳細設計以降にテーブル設計の大きな変更がある場合は、システム的に致命的な設計ミスや設計漏れ、大きな後戻りが発生する可能性があります。それらのリスクをできるだけ回避するために、チームでレビューを重ねたり、新たな仕様が追加されたりするたびに改変しながらER図の精度を高めていきましょう。
実体関連モデルには、具体的に下記の3つのデータモデルがあります。
【ER図作成:第1段階】概念データモデル
いわゆるシステムの「登場人物」や「モノ」を洗い出してみましょう。おおまかな概要を洗い出すのが目的です。
ここでは、ホテルなどの宿泊施設、それを予約する人(=ユーザ)、予約した内容などが相当します。
●予約した内容 → 予約情報
●予約する人 → ログインアカウント(ユーザID、パスワード)
【ER図作成:第2段階】論理データモデル
この段階では、以下の要素を追加していきます。
● エンティティ
図では「箱」で示されています。エンティティは「レコードの集まり」で大きく2つに分類されます。
➤リソース(マスタ系):基本となる情報。宿泊先やログインアカウントがそれに相当します。
➤イベント(トランザクション系):予約情報がそれに相当します。予約した、請求した、受注したなどのイベントやアクションで作成されるレコードです。
システムの規約にもよりますが、一般的にマスタ系は「XXXマスタ」、トランザクション系は「XXXテーブル」と命名することが多いです。
第1段階で洗い出した内容をもとに、エンティティを決めていきましょう。
・予約情報 → 予約情報テーブル
・ログインアカウント → ログインマスタ
・ログインユーザ情報 → ログインユーザ情報テーブル
● リレーションシップ
エンティティとエンティティの「関連性」を表現します。図では「線」で示されています。
なお、リレーションシップには「依存/非依存」があります。依存とはエンティティ同士が「親子」の関係です。親が存在しなければ子も存在しない、となります。非依存の場合は、エンティティ同士に強い関係性はありません。
● カーディナリティ
「多重度」とも呼ばれ、リレーションシップの状態を具体的に表現します。一般的によく使用される「IE表記」を例に代表的なものをご紹介しますが、これ以外にも多くの記号があります。
宿泊先マスタと予約情報テーブルは「1対0以上」の関係です。宿泊先(ホテルや旅館)には複数の予約が存在するからです。ただし、予約が全く入っていない宿泊先もあることを考慮して予約情報テーブルは「0以上」で表現しています。
同じくログインマスタと予約情報テーブルも「1対0以上」の関係です。ユーザが必ずしも宿泊予約を入れるとは限らないからです。
ログインマスタとログインユーザ情報テーブルは「1対1」の関係です。ログインマスタではユーザIDとパスワードのみを格納し、ログインユーザ情報テーブルにはユーザの住所などの詳細情報を格納します。ログインマスタとログインユーザ情報テーブルという2つのエンティティに分けるかどうかは、状況に応じて判断してください。
● 主キー(PK)
主キー(Primary Key)はエンティティのレコードを検索するときに使用するカラムです。カラムの値は必ず一意(ユニーク)になります。
● 外部キー(FK)
外部キー(Foreign Key)は関連するエンティティの整合性を保つために設定します。たとえば予約情報テーブルの「ユーザID」の値は必ずログインマスタに存在する、などです。
● 属性
アトリビュートとも呼ばれ、エンティティ内の各カラムの名称や、主キー、外部キーなどの総称です。
【ER図作成:第3段階】物理データモデル
第2段階で作成したエンティティを精査して問題がなければ、さっそくシステムで使用するデータベースに即したデータ型を当てはめていきましょう。
Oracleであれば、宿泊先マスタの「宿CD」はCHAR型、「宿名称」はVARCHAR2型…と決めていきます。データ型や桁数はデータベースの仕様を確認しながら慎重に決定しましょう。
Part 2: ER図を導入するメリット
エンティティ同士は必ずなんらかの関連性があります。ER図によってシステム全体のテーブル設計を俯瞰できることが多くのメリットを生み出します。
【ER図のメリット1】設計ミスや設計漏れを防ぐ
「システム全体を把握すること」これはどの設計フェーズにおいても重要なことです。設計フェーズのそれぞれの段階でER図の精度を高めていくことで、製造フェーズやテストフェーズでの大きな後戻りを防ぐことができます。
たとえば「旅行予約サイトで予約したユーザが退会する」場合を想像してみてください。ER図を確認すれば、ログインマスタに紐づく予約情報テーブルや、その他影響がありそうなエンティティを簡単に洗い出すことができるので、適切な仕様変更が可能になります。
【ER図のメリット2】運用・保守の基盤が安定する
システム開発はプログラムが完成すれば終わりではありません。日次/月次/年次などの運用や保守、将来の機能追加でもやはり必要になってくるのがシステム全体を俯瞰できるER図です。
インフラチームと開発チームというようにチームが分かれている場合でも、お互いのタスクを明確にできる上、共通の認識で作業を進められることは大きなメリットです。
【ER図のメリット3】サブシステムとの関連性が明確になる
今回の例題では、すでに運用中の「ポイント管理サブシステム」といかにうまく連携していくかが大きなポイントでもあります。
予約管理システムからどの情報(エンティティなど)をポイント管理サブシステムに連携すればよいのか。ポイント管理サブシステムからどのような情報をもらえばよいのか。このようなときにもER図が役に立ちます。
EdrawMaxはER図を簡単に書けるためのオールインワンのソフトウェアです。EdrawMaxは無料体験可能なので、ぜひ一度ご体感ください!
Part 3: ER図の基本表記について
ER図の表記方法は10種類ほどありますが、よく使用されているのが「IDEF1X(アイデフワンエックス)表記」と「IE(アイイー)表記」です。
これらの表記方法は「カーディナリティ」(多重度)の表現が違います。さきほどご紹介したIE表記のカーディナリティと比較してみます。
IDEF1X表記のほうが細かく数字を指定できますが、IE表記のほうが直感的に読みやすい印象です。どちらの表記を使用するのかは、システム規約で決めましょう。
ER図を作成できるソフトやツールの大半は、図形描画に特化した優れた機能を持っています。
システム開発でER図を作成するためのツールをお探しでしたら、チームメンバーなどと会話しながら決めるとよいかもしれません。少しだけおすすめのツールをご紹介しましょう。
Part 4: ER図を書くツール5選
4.1 EdrawMax(エドラマックス)
EdrawMaxは直感的な操作性と、コスパの良さが魅力の図形描画ソフトです。ER図だけではなく、間取り図やフローチャートなども作成できるので、業界を超えた応用範囲の広さが大きな特徴です。
■ 特徴
●操作性が優れている
多数のテンプレートを選択するとき、表記記号を変更するとき、最終的にファイルを共有するとき…どのシチュエーションでも迷うことなくストレスが少ない作業が可能です。
●Visioファイルのインポート&エクスポートができる
ER図作成ソフトVisioを使い慣れた人も多いはず。そのVisioファイルのインポートやエクスポートが可能です。またPDFやOfficeファイル、SVGへのエクスポートもできるので、ビジネスシーンでの即戦力になります。
●テンプレートや図形が豊富!
基本図形を多数搭載。図形同士の結合や分割もできるので便利です。
●内臓記号も豊富!
ER図でエンティティを書いたら、それぞれをリレーションシップ(線)で結びます。その線を選択してメニュー「ホーム」>線種を選択すれば、さまざまな線に変更可能です。
線種の一部をご紹介します。
EdrawMaxでは線と線とをまたぐ「飛越線」や、セキュリティに役立つ「透かし」機能を搭載しています。
■ 対応OS
Windows/Mac/Linuxに対応しています
■ 価格
「1年間プラン」が9,800円(税込)でデバイス3台まで利用可能!もちろん1年間の技術サポートもついています。
「買い切り版」が19,600円(税込)で永久に使えます。
※トライアルプランもあります!最新情報は公式サイトを確認してください。
EdrawMaxは無料体験可能なので一度ご体感ください。
4.2 Lucidchart
■ 特徴
● オンラインコラボレーションや無限に使えるキャンバスなど、他には無いオンラインホワイトボード機能が豊富
● ER図をMySQL、Oracle、SQLServerなどにエクスポートして編集可能/JiraやConfluenceとの連携も可能
■ 対応OS
● Windows/Mac/Linuxに対応しています。
■ 価格
無料:編集可能な文書数:3、プロフェッショナルなテンプレート100まで
Indivisual:800円/月、編集可能な文書:無制限、テンプレ1,000以上
Team:1ユーザあたり1,000円/月
※月払いと年払いで価格が異なります。最新情報は公式サイトをご確認ください。
4.2 Lucidchart
■ 特徴
● オンラインコラボレーションや無限に使えるキャンバスなど、他には無いオンラインホワイトボード機能が豊富
● ER図をMySQL、Oracle、SQLServerなどにエクスポートして編集可能/JiraやConfluenceとの連携も可能
■ 対応OS
● Windows/Mac/Linuxに対応しています。
■ 価格
無料:編集可能な文書数:3、プロフェッショナルなテンプレート100まで
Indivisual:800円/月、編集可能な文書:無制限、テンプレ1,000以上
Team:1ユーザあたり1,000円/月
※月払いと年払いで価格が異なります。最新情報は公式サイトをご確認ください。
4.3 Draw.io
■ 特徴
●洗練された図形を簡単に作成できる
●作成した図はGoogleドライブなどに共有可能
■ 対応OS
WebアプリケーションでWindows/Mac/Linuxに対応しています。
■ 価格
無料で利用可能です。
4.4 Visual Paradigm
■ 特徴
● ER図を含む数百のテンプレートが用意され、データベースの構造を即座に作成
● 透かしのない画像でエクスポート可能
● 作成した図はパソコンやGoogleドライブなどのクラウドに保存してシェアできる
■ 対応OS
Windows/Mac/Linuxに対応しています。
■ 価格
無料:テンプレートの制限あり
Starter:$4/月(年間契約の場合)
Advance:$9/月(年間契約の場合)
Combo:$15/月(年間契約の場合)
※最新情報は公式サイトをご確認ください。
4.5 A5:SQL Mk-2
■ 特徴
● 高機能かつ軽量なフリーのSQLクライアント
● テーブルの設計結果をもとにDDLを出力することも可能
● SQL実行/テーブル編集/SQL実行計画の取得/ER図の作成が可能
● 既存のデータベースからER図をリバース作成することも可能
■ 対応OS
Windows(Wineを使えば、不安定ですがLinuxやMacでの動作も可能)
■ 価格
無料です。
ER図を作成するツールはたくさんあります。ぜひご自身に合ったツールを探してみてください。
せっかくですので、実際にEdrawMaxでER図を書いてみましょう!
Part 5: ER図の書き方
5.1 ER図を書くときのコツ
今回想定した「予約管理システム」をもとにER図を書いていきます。ER図を書くときのコツは以下の通りです。
● 親エンティティや、中心的役割のエンティティは画面の左上に配置する ←親から子、その他という関連付けがわかりやすくなります
● マスタ系エンティティとトランザクション系エンティティを色分けする ←色分けすることで視覚的にわかりやすい資料になります
ではさっそくEdrawMaxを起動しましょう。
5.2 EdrawMaxでER図を書くときの操作手順
新規作成>データベース>データベースモデル図を選択します。
左メニュー「ライブラリ」>実体関係図からお好みの実体「箱」を選択します。
すべてのエンティティを書いていきましょう。入力したい箇所をダブルクリックすると文字列入力ができます。
マスタ系とトランザクション系の色分けをして、カーディナリティを追加します。線を選択してメニュー「ホーム」>線種で線を変更できます。
ER図らしくなってきましたね!
5.3 ER図描画時の注意点
リレーションシップはエンティティの側面に対して直角になるように接続しましょう。こうすることでカーディナリティが見やすくなります。
EdrawMaxではエンティティ(実体)を選択すると複数の接続ポイントが「〇」で表示されますので、よい位置を探してみてください。
多数のエンティティがある場合には、全体のバランスを見ながら調整していきましょう
Part 6: まとめ
実際のシステム開発ではもっと多くのエンティティがあり、リレーションシップも複雑になります。複雑になって困ったときには、ぜひ基本を思い出してみてください。
「システム全体を把握すること」それを忘れなければ、きっとすばらしいER図を書くことができるようになります!