この記事では10種類ほどあるER図の表記法の中から代表的な、IDEF1X(アイデフワンエックス、Integreation Definition 1Xの略)表記とIE(アイイー、Information Engineering)表記に焦点を当て、解説していきます。
ER図とは?
ER図(Entity Relationship Diagram)とは、データベース設計における代表的な設計図のことです。E(エンティティ=モノ)と、R(リレーション=関係)の組み合わせでシステムのデータやデータ間の処理構造を設計します。また、「エンティティ」「アトリビュート」「カーディナリティ」「リレーション」と呼ばれるオブジェクトで構成します。
なぜER図が必要か?
設計書自体を作らず物理テーブルを構築するという方法もありますが、テーブル数が多くなればなるほど、不整合が起こるリスクや、プログラマが仕様を理解できない、または勘違いすることで後戻りによるコストが発生してしまいます。そこで設計段階でER図という図を作成することで、システム全体の構成が俯瞰でき、品質の高いデータベースおよびプログラムを構築できるようになります。
ER図の作成順序
ER図はシステムの上流工程の中で段階的に設計します。各工程で作成するER図の状態のことを「データモデル」と呼びます。データモデルには「概念モデル」「論理モデル」「物理モデル」があり、以下の順番でデータモデルを作成します。
概念モデル
要件定義工程で作成するデータモデルです。最初にシステム全体における「もの」や「できごと」をエンティティ、リレーションシップとして洗い出し、概要を表したものとなります。
-
エンティティとは
システムに登場する「モノ」を洗い出し、エンティティとして定義します。エンティティは以下の3種類に分離されます。また、独立エンティティ(他のテーブルのデータに依存することなくデータを保持できるエンティティ)を角の尖った四角で示し、従属エンティティ(他のテーブルが存在しないとデータを保持することができないエンティティ)を角の丸い四角で示します。
-
リソースエンティティ
マスターテーブルとして管理される類いの情報です。基本的には参照(SELECT)される事が多く、更新(INSERT/UPDATE)される事は少ないです。
例)顧客、商品、部門
-
イベントエンティティ
定期的に発生するトランザクション等のテーブルとして管理される類いの情報で、
「~日」等の属性を持ち、日次や月次等で起こる業務処理の事です。
基本的には更新(INSERT/UPDATE)が多く発生します。
例)受注、貸出、請求
-
サマリーエンティティ
リソース系とイベント系のデータを、あるタイミングで集計した結果のサマリを格納するエンティティです。定期的な処理(分析やレポート)のための情報を格納するのが一般的です。
例)商品別売上集計、部門別売上集計
-
-
リレーションシップとは
エンティティ同士の関係を表現する線のことです。リレーションシップには向きがあり、関連の「主語」から「目的語」に向かって線を引きます。主語となるエンティティを「親エンティティ」、目的語となるエンティティを「子エンティティ」と呼びます。また、リレーションシップには以下の種類があります。
-
依存型
リレーションシップを引いた両エンティティ間で依存関係が成立する場合は、依存型のリレーションシップです。依存関係とは、「親エンティティのデータが存在しない場合、子エンティティのデータも存在できない」という意味です。依存型の場合は、親エンティティの「主キー」が子エンティティに於いても「主キー」となります。
-
非依存型
親エンティティが存在しなくても、独立して存在できる場合は非依存型のリレーションシップです。非依存型の場合は、親エンティティの「主キー」は子エンティティに於いて「外部キー」となります。 下図の社員マスタと社内サークルマスタは社員番号をもとにリレーションシップが成り立っていますが、紐づくデータがなくてもシステム的に成り立ちます。非依存型の場合、どちらのエンティティも四角の枠線で表現します。
-
論理モデル
論理モデルでは概念モデルに対して様々な肉付けを行います。具体的には属性(アトリビュート)、アイデンティファイア(主キー)、外部キーの定義や、リレーションの線には、エンティティが関連する最小件数 (オプショナリティ) と最大件数 (カーディナリティ (多重度) ) を示すための記号を使用します。ただし、論理モデルではデータ型の定義などの物理データベース向けの設計は行いません。つまり、論理モデルは「特定のデータベースに依存しないレベルで具体化した状態」となります。
-
アトリビュート(属性)とは
エンティティの中の属性情報のことです。アトリビュートの中で「主キー」や「外部キー」も表現します。主キーとなる項目は、エンティティ上部で四角に囲い明示します。外部キーとなる項目は、項目名の後ろに「(FK)」と書いて明示します。その他の項目は、項目名のみ記述します。
-
主キー(PK)とは
主キー(Primary Key)はエンティティのレコードを検索するときに使用するカラムです。カラムの値は必ず一意(ユニーク)になります。
-
外部キー(FK)とは
外部キー(Foreign Key)は関連するエンティティの整合性を保つために設定します。たとえば予約情報テーブルの「ユーザID」の値は必ずログインマスタに存在する、などです。
-
-
カーディナリティとオプショナリティ
カーディナリティとは、「1対1」「1対多」「多対多」など、リレーションの詳細を表現する記号のことです。日本語では「多重度」と呼ばれています。
オプショナリティとは、IE記法で多重度にゼロが含むかを区別して表記するものです。「0以上」や「0または1」といったことも表現することができます。
両者を使ってリレーションの始点と終点を定められた記号で表現します。IE記法とIDEF1X記法では表記方法が異なります。
ER図のIE記法とIDEF1X記法の例
物理モデル
詳細設計工程で作成するデータモデルです。Oracle Database等の特定の物理データベース向けに論理モデルの変換を行います。例えばデータ型を追加したり、物理データベースに即したアルファベットに変換します。ER図の最終形態がこの物理モデルとなります。物理モデル完成後は、その情報をもとに物理データベースを作成することができます。
ER図の作成ツール
ER図についてはExcelやVisioなどのアプリケーションで作成することも可能ですが、罫線や図形オブジェクトを使って作図するのは時間がかかります。昨今ではER図を作成する専用ツールが出ており、これらのツールを活用することで効率良くER図が作成できます。ここでは、無料で利用できるER図作成ツールを紹介します。
-
GitMind
価格:無料
無料で使用できるオンラインマインドマップ、及び概念データモデル作るWebツール「GitMind」は、作図に役立つ様々な図形や矢印などが提供されています。さらに、図を非公開にしたり、他の人と共有したり、機密コンテンツが含まれている場合にパスワードで保護したりできます。テンプレートが多く用意されているから、ER図書き方はとても簡単です。デスクトップ版もリリースしたので、Webで作図したくない時に利用でき、とても便利です。もちろんWebツールと同じく無料でも利用可能です。
おすすめポイント:
- オンライン無料で利用可能
- 様々な実用な図形などが用意
- URLで共有できる
-
Draw.io
価格:無料
登録を必要とせずにER図を作る無料Webツールです。図の保存場所はGoogleドライブ、Dropbox、またはコンピューターのハードドライブに指定できますので、再編集や閲覧、共有が非常に便利です。異なる国のユーザーのために使用する時に言語を選択できます。さらに、JiraやConfluenceなどの統合されたプログラムに合わせて図を編集し続けることができます。
おすすめポイント:
- 作成した図の保存場所を指定できる
- 複数の言語をサポート
- JiraとConfluenceの統合
-
Lucidchart
価格:無料(制限あり)。月間7.95ドル/一人
実体関連図作成ツールを使用して、リレーショナルおよび論理的な方法でデータベース構造を視覚化します。ドラッグアンドドロップでの操作のおかげで、使い方はとても簡単になります。1から図を作成したり、DBMSからERD図を自動的に生成して、データベーステーブルをアップロードしたりすることもできます。また、ERDをMySQL、Oracle、SQLServerなどのデータベースサービスにエクスポートできます。
おすすめポイント:
- ドラッグアンドドロップで操作可能
- ERDを自動生成可能
- 作成したER図をデータベースサービスにエクスポート可能
まとめ
ER図の書き方の手順とツールについて解説しました。表記方法の違いはありますが、考え方は同じです。重要なのは、いきなりER図を書き始めるのではなく、大枠から徐々に詳細に落とし込んでいくことです。これはER図に限らずシステム設計全般に言えることです。ER図を段階的に作成することによって、システムの全容を把握しつつ、質の高いデータベースを構築することを可能にします。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.03.18
【DB】クライアントツール「Table Plus」の導入方法と基本操作を解説
TablePlusは**GUI**でデータベースを操作することのできるクライアントツールです。
- データベース
2022.12.29
【初心者入門】データベースとは?
データベースとは、特定の条件により集められた「データ」を決まった形式で構造化・整理したものです。
- データベース
2022.12.29
【AWS】リレーショナルデータベースAmazon RDSの利点
AWS(Amazon Web Services)で使用できるリレーショナルデータベースサービスのことです。
- AWS
- データベース