COMETA®なら、カラムレベルリネージやER図でデータの関連性がわかります!
ER図(エンティティ・リレーションシップ図)は、データベースの構造を視覚的に表現するために使用される図表です。
データベースの設計において、ER図の作成はその基盤となる重要なプロセスです。しかし、作成までの準備が複雑であったり記法が複数あったりするため、難解だと感じている若手エンジニアも少なくないでしょう。
ER図の作成にはいくつかの準備が必要で、実際の書き方にも独自の記法があります。しかし、ER図は基本的な知識と作成のプロセスを押さえれば、誰でも作成が可能です。
本記事では、ER図の構成要素やおもな記法など、エンジニアが知っておくべき知識をわかりやすく解説します。また、ER図を作成するためのプロセスを4ステップでご説明します。「ER図の書き方を分かりやすく知りたい」という方は、本記事でご紹介する内容を参考にしてみてください。
[lwptoc]ER図とは
まずは、ER図の概要や重要視される理由などについて詳しく解説します。
ER図の概要
ER図(Entity Relationship Diagram)とは、データベースを設計する際に、そのデータ構造や関係性を視覚的に表した図です。この図は、データベースに保存されるデータの構造を示すために設計されています。
おもに、「エンティティ」、「属性(アトリビュート)」、「関係(リレーションシップ)」、「カーディナリティ」の4つから構成されており、これらの要素を組み合わせることでデータ間の関係を設計します。
ER図は、おもに専用ツールやソフトウェアを使って作成でき、データベース設計においてほぼ100%利用されます。データベース設計の基盤となるプロセスであり、効率的に設計するうえで欠かせない存在なのです。
ER図がデータベース設計において重要な理由
ER図が重要である理由のひとつは、ER図によってデータベースの全体像が明確になり、「どのような情報があるか」「それぞれがどのように関連しているか」などが容易にわかるようになるからです。
これにより、設計の過程でのミスを減らし、より効率的なシステム開発が可能になります。エンティティの数(テーブル数)が多くなるほど、設計ミスや構造の複雑化が生じやすくなり、後戻りによるコストも大きくなります。大規模なシステム設計ほど、ER図の作成によって受けられる恩恵は大きいでしょう。
保守・運用の観点においても、ER図は効果的です。運用途中で要件が変更された場合も、ER図があれば迅速に改修を行えるためです。
ER図を作成することで、データベースの設計者は複雑なデータ構造を効果的に管理し、エラーの可能性を減少させることができます。また、データベースが完成した後も、ER図はシステム全体を俯瞰する地図のような役割を担うのです。
また、データ分析を行う際、ほかのメンバーとのコミュニケーションにも非常に役立ちます。設計者以外のメンバーが設計内容を把握したい際、ER図があれば簡単に全体像を共有でき、データの意味の理解を促進できます。
ER図を構成する4つの要素
ER図を構成する「エンティティ」、「アトリビュート」、「リレーションシップ」、「カーディナリティ」について、顧客と注文の例を用いて解説していきます。
エンティティ
エンティティとは、データベース内に存在するデータのまとまりです。データベースに保存される情報の基本的な単位であり、具体的または抽象的なモノ、人、場所、事象などが該当します。ER図はまさに、エンティティどうしの関係性を表した図といえるでしょう。
たとえば、ECサイトにおいては、「顧客」、「ショップ」、「商品」、「注文」、「販売担当」、「仕入元」などがエンティティです。
上の図においては、「顧客」、「注文」がエンティティに該当します。一般的に、データベース設計においてはテーブルとして管理します。
アトリビュート
アトリビュート(属性)とは、エンティティの中に含まれるデータの属性です。エンティティの特性や性質を説明します。データベース設計において、テーブル内で設定されているカラムとして管理されます。
上の図においては、顧客エンティティに含まれる、「顧客名」、「住所」、「郵便番号」、「電話番号」、「メールアドレス」が該当します。注文エンティティにおいても同様に、「顧客ID」、「注文日時」、「配送希望日」、「合計金額」、「配送方法」がアトリビュートです。
リレーションシップ
リレーションシップは、エンティティ同士の関係性を表す線です。データベース内のエンティティ間の動的な流れを説明します。
リレーションシップは大きく分けて、依存関係と非依存関係の2つがあります。
依存関係
依存リレーションシップ(依存関係)は、ER図において特定のエンティティが他のエンティティの存在に依存している関係を示します。
たとえば、「顧客」は「注文」に依存していることが分かります。注文が存在しなければ、顧客は存在しないためです。これが、依存関係のリレーションシップです。依存関係とは、一方のエンティティが無ければもう一方のエンティティが成り立たなくなる状態の事を言うのです。
なお、主語となるエンティティを親エンティティ、目的語となるエンティティを子エンティティと呼びます。
一般に、子エンティティは角を丸くして記述されます。
非依存関係
対して、非依存関係とは、エンティティ間で依存していないがないリレーションシップです。各エンティティがもう一方のエンティティの存在を前提としていない関係といえます。
たとえば上図のような、図書館管理システムの例で見てみましょう。このシステムには、図書と会員の2つのエンティティが存在するとします。これら2つのエンティティ間には「貸出」のリレーションシップが存在しますが、図書と会員はそれぞれの存在に依存していません。
また非依存関係の場合は、どちらのエンティティも四角の枠線で表現します。
カーディナリティ
カーディナリティ(多重度)とは、エンティティ間の対応数を示す要素です。「多重度」と呼ばれることもあります。
たとえば上図では、IE記法と呼ばれる記法に基づいて、顧客と注文が「1対1以上」の関係であることを示しています。(一般に、顧客と注文の関係は「1対0以上」の関係であるケースが多いです。)
カーディナリティの表記の仕方にはいくつかの種類がありますが、次章でおもな記法を2つご紹介します。
ER図のおもな記法2つ
ER図におけるカーディナリティの表記には、さまざまな種類が存在します。わかりやすいER図を作成するため、各記法のルールに則ることが大切です。
本章では、ER図の作成によく用いられる代表的な記法を2つご紹介します。
IE記法
IE記法(Information Engineering Notation)は、「〇」、「❘」、3つに分かれる線を用いてカーディナリティを表現します。3つに分かれる線が鳥の足のように見えることから、IE記法は「鳥の足記法」と呼ばれることもあります。
IE記法は以下の3つの記号を用いてER図を作成します。
| 記号 | 意味 |
| 〇 | 0(ゼロ) |
| | | 1(イチ) |
| 多 |
IE記法における、おもな対応の表し方をまとめた図は以下の通りです。
IDEF1X記法
IDEF1X記法は、おもに「●」とアルファベットを組み合わせてエンティティの対応数を表現します。また、非依存関係のエンティティ間は「◇」を用いて表します。IE記法と比較して直感的に理解するハードルは高くなりますが、より詳細な表現ができます。
IDEF1X記法のおもな対応数の記法は以下の通りです。
ER図のデータモデル
ER図を使ってシステム設計を行う際、初期段階から順を追って設計を深めていきます。この設計の各段階で得られるER図の形態を「データモデル」と呼びます。データモデルには大きく分けて「概念モデル」、「論理モデル」、「物理モデル」の3つがあり、それぞれの特徴は次のようになります。
概念モデル
概念モデルの設計は、データモデルの中でもっとも上流に位置する工程です。データモデリングの初期段階で使用され、システム全体のフレームワークを高レベルで表現します。
エンティティ間の関連を高レベルで捉え、要件定義をすることが目的であるため、ER図は抽象的になります。この段階では、実際のデータベースの実装はあまり考慮しません。おもにエンティティとリレーションシップのみで構成され、アトリビュートやカーディナリティは含まれません。
概念モデルでは、システムが「どのような」データを扱うかに焦点を当てます。
論理モデル
論理モデルの設計は、システム設計の中で中間的な工程です。
この段階では、概念モデルで定義した関係性への詳細な肉付けが目的のため、ER図は概念モデルより詳細になります。具体的には、アトリビュートやカーディナリティの追加、主キー/外部キーの定義が含まれます。
論理モデルは、特定のデータベース技術やソフトウェアに依存しないレベルであり、データを「どのように」扱うかを定義します。
物理モデル
物理モデルの設計は、システム設計の中でもっとも下流に位置する工程です。
この段階では、具体的なデータベースに対応させるため、論理モデルの変換を行います。物理モデルのER図が最終的なものであり、テーブル、カラム、データ型、キー(プライマリーキーやフォーリンキー)、インデックスなど、実際のデータベースに実装される要素を含みます。
物理モデルでは、データの「格納方法」に焦点を当てており、この段階でのER図が実際のシステム構築に直結します。
ER図を作成するための4ステップ
ER図を作成するために必要となるプロセスを4つのステップで解説します。今回は、「図書管理システムを設計するケース」を例として考えます。
1.要件定義
ER図作成における第一ステップは、要件定義です。設計しようとしているシステムは、 「誰が」、「どのように」、「何のために」使うのか、明確化しておく必要があります。
今回の場合の要件は、「ユーザー(図書館の利用者)が、オンラインで利用可能な書籍の検索・予約ができること」です。また、予約の確認やキャンセルも行える必要があります。
システムに求める機能が特定できたら、それらの機能を利用するユーザーの行動パターンを考えます。今回のケースでは、ユーザーはまず書籍を検索し、選択した書籍を予約し、最終的には予約の確認(またはキャンセル)を行います。
2.エンティティの洗い出し
次に、要件定義をもとに、エンティティを洗い出していきます。要件定義が確実にできていれば、エンティティの洗い出しは容易な操作となるでしょう。
図書管理システムの例では、エンティティとして「ユーザー」、「書籍」、「予約」が挙げられます。この際、各エンティティが独立していることを確認しましょう。たとえば、「予約中の書籍」と「貸出中の書籍」は別のエンティティとして扱わず、どちらも「書籍」エンティティ内で管理する方が適切です。
また、「書籍」における「ページ」など、あるエンティティに包含されるエンティティは1つにまとめます。
エンティティをマスタ系とトランザクション系に区別する
マスタ系とトランザクション系への分類もしておきましょう。マスタ系は、システム内で基本的な情報や静的なデータを管理するエンティティであり、「ユーザー」「書籍」が該当します。トランザクション系は、システム内で発生する動的な活動やイベントに関するエンティティであり、「予約」が該当します。
エンティティをマスタ系とトランザクション系に区別しておくことで、システムのデータ構造と各エンティティの役割が明確になります。これによって、次のステップで行う「アトリビュートの洗い出し」のプロセスが、より簡単に行えるようになるのです。
3.アトリビュートの洗い出し
エンティティが定義できたら、アトリビュートを洗い出していきます。
今回の例では、各エンティティに以下のようなアトリビュートが割り当てられるでしょう。
- ユーザー:名前、会員ID、住所、電話番号、メールアドレス
- 書籍:タイトル、著者、ISBN、ジャンル
- 予約:予約ID、予約日、ピックアップ日時
| エンティティ | 割り当てられるアトリビュート |
| ユーザー | 名前、会員ID、住所、電話番号、メールアドレス |
| 書籍 | タイトル、著者、ISBN、ジャンル |
| 予約 | 予約ID、予約日、ピックアップ日時 |
一般に、アトリビュートの洗い出しは、画面設計書を用いて行われるケースが多いです。画面設計書を利用することで、システム設計者はUIの観点からデータモデルを考えられ、ユーザーのニーズに合ったデータ構造を構築できます。
またアトリビュートを定義する際、最小限のアトリビュートに絞り込むことが重要です。親切な設計をしようとして不必要なアトリビュートをいくつも定義してしまうと、かえって非効率的なシステムとなってしまいます。システムの目的に直接関係する情報のみとなるよう、意識しておきましょう。
4.リレーションシップ・カーディナリティの定義
エンティティとアトリビュートが洗い出せたら、さいごにリレーションシップとカーディナリティを定義します。
今回の場合、リレーションシップとして、「ユーザーと予約」、「予約と書籍」が考えられます。
次に、カーディナリティを定義します。一人のユーザーは複数の書籍を予約できますが、1つの予約は1人のユーザーによって行われるため、「ユーザーと予約」は「1:0以上」の関係です。また、1冊の書籍は複数のユーザーによって予約されることがあり、一人のユーザーは複数の書籍を予約できるため、「予約と書籍」は「0以上:0以上」の関係です。
カーディナリティには「1:1」「1:0以上」「0以上:0以上」など、ある程度決まったパターンがあります。一方で、どのような対応関係になるかはシステムによって異なるため、要件定義に基づいて適切なカーディナリティを定めることが大切です。
以上の4ステップにより、図書管理システム設計の簡易的なER図がこちらです。今回は、カーディナリティにIE記法を使用しています。
ER図を書くためのおすすめツール5選
ER図は、ツールを利用することで効率的に作成できます。またER図作成専用のツールを使っていれば、要件が変更された際も迅速な修正が可能です。
今回は、ER図作成に利用できるおもなツールを5つご紹介します。
COMETA
COMETAは、お客様のデータ分析基盤に存在するデータから、自動的にメタデータを取得して、データカタログを生成できるツールです。
そして、メタデータを踏まえたデータ検索、取得したメタデータを踏まえたER図やリネージの自動生成もできます。その場で試しにクエリ実行できるクエリエディタなど、データ利活用を促進するための各種機能が揃っています。
COMETAのER図・リネージについて
リネージは、TROCCOと合わせてご利用の場合にのみ、表示できます。
ER図は、TROCCOを契約せずともご利用いただけます。
ただし、TROCCOを契約すると、ER図を生成するためのカラム参照が自動定義されるため、かんたんにER図を閲覧できるようになります。
Lucidchart
Lucidchartは、クラウドベースのツールです。シンプルなUIと豊富なテンプレートが特長であり、初心者からプロフェッショナルまで幅広く利用できます。
また、ER図だけでなく、フローチャートやプロセス図などの数種類の図を作成できます。さらに、GoogleやSlackをはじめとした外部サービスとの連携が可能で、メンバーと共有しながらER図を作成できます。
ただ、無料版には機能制限があるため、すべての機能を利用したい方は有料プランへアップグレードしましょう。
diagrams.net(旧:draw.io)
diagrams.netは、Webベース/デスクトップアプリケーションとして利用できる、無料ER図作成ツールです。ER図のほかにも、フローチャートやUML図など、さまざまな種類の図を作成できます。
Google DriveやOneDrive、GitHubなどとの統合が可能であるため、クラウド上での保存や共有が容易に行えます。UIも直感的で使いやすいです。
完全無料のため、ER図作成にコストを割けない組織や小規模チームに適しています。一方、オフライン編集などには制限があるため、注意が必要です。
dbdiagram.io
dbdiagram.ioは、ブラウザ上でER図を作成できるツールで、コードによって図を描く点が特徴です。ER図をテキストベースで定義できるため、コードエディタに普段から慣れている人に使いやすい仕様です。
MySQLやPostgreSQLなどのデータベーススキーマからER図を自動生成する『インポート機能』があり、既存プロジェクトを迅速にドキュメント化できます。また作成したER図は、 PDFやPNG、PosgreSQL、MySQLなどの形式でエクスポートできます。
シンプルなインターフェースであるため、学習コストが比較的低く、初めてのユーザーも直感的に使用できます。また、生成したリンクをチームに共有することで、リアルタイムでの共同作業が可能です。図は10個まで無料で作成でき、それ以降は有料プランとなります。
Cacoo
Cacooは、クラウドベースの図形作成ツールです。Lucidchartやdiagrams.netと同様、ER図だけでなく、UMLやマインドマップ、ワイヤーフレームなど、さまざまな図を作成できます。
100種類以上のテンプレートが用意されており、ER図作成の経験が浅いエンジニアでも簡単にER図を作成できます。さらに、カラーや線の太さ、多様なオブジェクト配置が可能で、デザイン性にも優れている点が特長です。
またLucidchartと同じく、メンバーと共同でER図を作成できます。複数のメンバーによるリアルタイム編集、コメントの追加、編集履歴の確認など、情報共有に関する機能が豊富です。
ただし、無料プランで作成できる図の数に制限があります。また、テーブル定義の作成やDDL出力はできないため、ER図のみ簡単に作りたい方向けといえるでしょう。
Microsoft Excel
ExcelもER図を作成できる1つのツールです。Excelがすでに利用可能な環境である組織は非常に多く、そういった組織にとっては追加の導入コストをかけずに済みます。
実際、ER図作成専用のツールがなくても、Excelで描画できる図形のみを用いてER図を作成できます。今すぐにER図を書き始めたい方は、Excelを利用するのも1つの手でしょう。
しかし、ER図作成専用のツールに比べると機能が限定的であり、複雑なER図の作成は困難です。また、Excelはあくまで表計算ソフトであり、ER図作成に最適化されていないため、修正の際に大きな工数がかかってしまいます。
まとめ
本記事では、ER図に関する基礎知識や具体的なER図作成の手順、おすすめのER図作成ツールを解説しました。
ER図の作成は、扱うデータの構造や関係性を明らかにし、データベースを効率的に設計するために非常に重要な役割を果たします。新たなシステムの設計を検討している方は、本記事で紹介した手順や注意するべきポイントを参考にして、ER図の作成から着手してはいかがでしょうか。
primeNumberが提供する「COMETA」はデータの発見・理解・活用に重点を置いたデータカタログサービスです。保有するデータの活用リードタイム短縮、ガバナンス、品質モニタリングを可能にし、データによる意思決定を行う文化の醸成を目指します。
また、お客様ごとのデータ活用のフェーズや、部署を横断するなど社内でのデータ活用の展開範囲に応じた利用ができます。
データの発見や理解、活用を促進したいと考えている方は、ぜひ一度製品サイトをご覧ください。

