E-R図(Entity Relationship Diagram)

導入

最近ではPythonやRubyのフレームワークによりデータベースが自動で作られるようになったり、データベース自体がクラウドサービス化されたことでデータベースを意識しない開発も可能となりました。そのような背景から、ER図を知らない若手のエンジニアも増えているのではないでしょうか?

しかし、大規模なシステム開発においてはER図は必要不可欠です。そこで、これからはじめてER図を書くという方向けに、ER図の概要や書き方、テクニックなどについてご紹介します。


データベース設計の基本中の基本であるER図。ER図を書きたいけど、「記法が分からない」「どういうステップで書けば良いか分からない」という若手エンジニアも多いのではないでしょうか。

ER図は10種類近くあり、種類によって記法が異なります。このことが難しいイメージを与えていますが、実はそれほど難しいものではありません。覚えれば良いER図は2種類だけです。
しかも、この記事で解説している基礎知識を押えれば、たった5つのステップで作成することができます。

この記事では、ER図の基礎知識からER図の書き方まで、エンジニアが抑えておくべきER図の全知識をどこよりも分かりやすく解説します。
この記事を読み終えたとき、若手エンジニアもER図を書けるようになっているでしょう。
この記事を参考に最適なデータベース設計を進めて下さい。


ウェブサイトやシステムの複雑なデータベースの構造を可視化したいときは「ER図」を活用しましょう。ER図はデータベースの設計図として役立ちます。

データベースの構造によっては、ER図(実体関連モデル図)よりも詳細な要素を含んだEER図(拡張実体関連モデル図)を設計図として利用することをおすすめします。

本記事では、ER図とEER図の基本と違いER図の作成ツールの選び方を図を交えてご紹介します。


実体関連モデルじったいかんれんモデル: entity-relationship Model、ERM)は、概念的データモデルの高レベルな記述を可能とするモデルの一種である。また、実体関連モデルによって具体的なシステムのデータモデルを図で表現したものを実体関連図: entity-relationship Diagram、ERD)あるいはER図と呼ぶ。本項ではピーター・チェンの1975年の論文で提唱された技法を中心に解説する[1]。ただし、同様のアイデアはそれ以前から存在し[2]、実体と関連を扱う様々な派生モデルが考案されている。









とは

ER図(Entity Relationship Diagram)とはデータベース設計における代表的な設計図のことです。システムを設計する手法としては他にもUMLなどの技法がありますが、ER図はDOA(データ中心アプローチ)の技法であり、作成したER図がそのまま物理データベース上に変換できることから、データベース設計手法におけるデファクトスタンダードとなっています。

ER図のEはエンティティ(Entity)の略で、Rはリレーションシップ(Relationship)の略です。つまりER図は「エンティティ=モノ」と「リレーションシップ=関係」の組み合わせでシステムのデータやデータ間の処理構造を設計します。例として「顧客が商品を注文する」という処理をER図で表すと以下のようになります。

シンプルなER図

図1. ER図の例

「顧客」や「商品」がエンティティ、「注文する」がリレーションシップとなります。どのような大規模システムであっても、ER図ではエンティティとリレーションシップの組み合わせでシンプルにシステムが表現できることが特長となっています。


R図とは、「データベース設計(データモデリング)で使う設計手法」です。
海外では「Entity Relationship Diagram」と呼ばれています。
「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」と呼ばれるオブジェクトで構成されており、ER図を活用してデータ構造を俯瞰的に設計します。

ER図は、データベースが必要なWEBサイトやシステムの設計では必ずと言ってよいほど作成されます。逆に言うと、ER図なしにはデータベースを構築できません。データベース設計の基本中の基本と言える設計手法です。

ER図の例(IE記法)

er%e5%9b%b3%e6%a6%82%e8%a6%81

ER(Entity Relationship)は「実体関連モデル」と呼ばれています。主にデータベースや情報システムでデータを編成するときの設計図として使われています。

ER図では、データベースを構成するデータのまとまりを「エンティティ」と呼ばれる四角形で表します。そして、データ同士を「リレーション」と呼ばれる線で結び「カーディナリティ」と呼ばれる記法で相互の関係性を示します。


ER図もしくはERDとは
“Entity Relationship Diagram”のこと

DB設計において
テーブルとテーブルを線でつなぎ、中身の種類と関係性見やすくしたもの
と思っていただければ大丈夫です。

プログラミング学習者の方であればどこかで”鳥の足”みたいな先端で図表が結ばれたものを見たことがあるかもしれません。

それがERDもしくはER図。

簡素なものですがたとえば下のような図です。

スクリーンショット 2019-12-16 11.24.29.png

実体関連 (ER) 図とは、人、オブジェクト、コンセプトといった「実体」のシステム内での関連を示す設計図の一種です。ER 図は、主にソフトウェアエンジニアリング、企業情報システム、教育および研究の分野における関係データベース設計やデバッグを目的として広く利用されています。ERD または ER モデルとしても知られ、長方形、ひし形、楕円形などの一連の定義された記号と接続線を用いて、実体、関連とその属性の間の相互関連性を表すものです。実体を名詞、関連を動詞とした文法構造を反映する図でもあります。英語では(Entity Relationship Diagram)とも呼びます。

ER図の例

ER図は、実体そのものの間の関連ではなく、実体内の要素の関連に重きを置いたデータ構造図 (DSD) に関連した図です。また、ER 図はしばしば、プロセスやシステムの流れを描き出すデータフロー図 (DFD) とも関連して用いられます。

ER図

 E-R図は、実世界をエンティティ(Entity:実体)とリレーションシップ(Relationship:関連)でモデル化した図です。


ER図とは、データベースのテーブル(Entity)とテーブル同士の関連(Relationship)を図に表したものであり、データベースのテーブル設計に用いられる。ER図において、エンティティは四角形の記号、リレーションは四角形同士を結ぶ線で表現される。


ERモデルは、データベース、特に関係データベースを抽象的に表現する手法の1つである。関係データベースはにデータを格納し、表内の一部のデータは他の表内のデータを指している。例えば個人情報のデータベースでは、ある個人のエントリが当人のいくつかの電話番号のデータを指している構成になっていることがある。ERモデルでは、その個人のエントリが1つの「実体」[3]であり、電話番号も「実体」で、それら実体間に「一件の電話番号を持つ」という「関連」[4]が存在するという見方をする。そういった実体や関連を設計する際に作られる図が実体関連図またはER図である。

三層スキーマソフトウェア開発に使用する場合、三層それぞれに対応するERモデルが構築される。


データは互いに関係を持っているので幾つかの纏まりに切り分けて整理したい。まずは、纏まりが明らかな部分を実体(Entity)として切り出す。

例えば履修管理システムを作ろうとしているのなら、「学生」や「科目」などが実体の有力候補となる。学生は学生名や住所などのデータの纏まり、科目は科目名や単位数、講師名などのデータの纏まりとして切り出すことができるだろう。

実体「学生」は個々の学生を要素とする集合(Set)である。要素の一意識別がデータ値のみでできるように、値の組が全て同じ要素は無いことにする。

※要素値に重複が無いことは集合の要件。

履修管理システムであれば、学生がどの科目を履修しているかこそが重要なデータである。例えば、(科目名、学生名、成績)のようなデータの組を要素とする集合を「履修」として切り出すことができる。ここで科目名や学生名は実体の科目や学生の要素に同じものがあるはずだ。このような制約から履修は2つの実体の関連を示すので関連(Relationship)と名前を付けて実体とは分けて扱うことにする。

このようにしてデータを実体とその間の様々な関連で切り分けて整理し、これを図にしたものを実体関連図:ER図と呼ぶ。ER図はデータ構造の概念モデルを表現するために良く使われる。 




H2候補

  • ER図を書くメリット
  • ER図のデータモデル
  • ER図の表記法
  • 概念モデルの書き方
  • 論理モデルの書き方
  • 物理モデルの書き方
  • ER図から物理データベースを構築する方法
  • ER図の正規化とは
  • ER図を見やすくするテクニック
  • ER図作成ツールを活用する
  • 2.主なER図の種類
  • 2.1.IE記法
  • 2.2.IDEF1X記法
  • 3.ER図の基本ルール
  • 3.1.エンティティ
  • 3.2.アトリビュート(属性)
  • 3.3.リレーション
  • 3.4.カーディナリティ(多重度)
  • 3.5.エンティティの依存関係・非依存関係
  • 4.カーディナリティの書き方(IE記法とIDEF1X記法)
  • 5.ER図の書き方-5つの作成ステップ-
  • 6.無料で使えるER図作成ツール3選
  • 概念データモデル、論理データモデル、物理データモデルとは
  • ER図の6つの基本要素
  • カーディナリティとは
  • カーディナリティと鳥の足記法の使い方
  • EER図とは
  • ER図とEER図の違い
  • ER図とEER図の作成ツールの選び方
  • ER図のリレーション表記法一覧
  • 例1: 1 対 多
  • 例2 1 対 1
  • 1対多 ~制約がある場合~
  • ER モデルの歴史
  • ER図の使い方と活用メリット
  • ER図の特徴
  • 自然言語のマッピング
  • ERDの記号と表記
  • 概念/論理/物理データモデル
  • ER図とモデルにおける制約
  • 基本的なER図の作成と書き方ステップ
  • ER図に関するその他のヒント
  • 書き方
  • エンティティ
  • 非依存実体
  • 依存実体
  • 属性
  • 外部キー(FK)
  • リレーション
  • カーディナリティ(多重度)
  • IDEF1X記法
  • IE記法
  • 多対多のリレーション
  • ER図作成ツール
  • 1. ER図(Peter Chen記法)
  • 1-2. 関連:リレーションシップ(菱形で表記)
  • 1-3. 汎化 継承
  • 1-4. IDEF1XとIE表記法
  • 2. IDEF1X アイデフワンエックス
  • 2-1. エンティティー(四角形で表記)
  • 2-2. リレーションシップ(線で表記)
  • 2-3. 分類
  • 3. IE表記法
  • 3-1. エンティティー
  • 3-2. リレーションシップ
  • 3-3. 分類
  • 4. UMLのクラス図でのデータモデリング
  • ER図をクラス図で書くと?

まとめ

※ このページは現在準備中です。記述内容は、以下の参考リンクより抜粋したものです。

参考

  • https://products.sint.co.jp/ober/blog/create-er-diagram
  • https://it-koala.com/entity-relationship-diagram-1897
  • https://cacoo.com/ja/blog/entity-relationship-diagram-for-beginner/
  • https://qiita.com/ramuneru/items/32fbf3032b625f71b69d
  • https://www.lucidchart.com/pages/ja/er-diagram
  • https://astah.change-vision.com/ja/manual/455-erd.html
  • https://www.atmarkit.co.jp/ait/articles/1703/01/news178.html
  • http://itref.fc2web.com/technology/entity_relationship_diagram.html
  • https://ja.wikipedia.org/wiki/%E5%AE%9F%E4%BD%93%E9%96%A2%E9%80%A3%E3%83%A2%E3%83%87%E3%83%AB
  • http://www.ics.kagoshima-u.ac.jp/edu/database/ERD.html

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です