データベース設計の基本であるER図。ER図を書きたいけど、「ER図とは何か理解しきれていない」「ER図の読み方がわからない」「ER図を書くメリットがわからない」という見習いエンジニアも多いのではないでしょうか。
ER図の説明には専門用語が多分に含まれており難しいイメージを与えていますが、実はそれほど難しいものではありません。
この記事では、見習いエンジニアが抑えておくべきER図の知識について、分かりやすく解説します。
本記事の最後にはデータベースについてしっかりと勉強したいという方向けにおすすめの参考書や講座も紹介させていただいてますので、ぜひ最後までご覧ください!
監修者
經田 原弘
東京大学大学院新領域創成科学研究科複雑理工学専攻修了。大学時代は3次元の医療データの平滑化処理を研究テーマとし、大学院時代はJAXAと協業し、月探査機かぐやの衛星データから、月面上の水の存否について調査していた。新卒では株式会社リクルートにてレコメンドシステムの開発等に従事し、現在は製造業系スタートアップにてデータサイエンティストとして勤務。応用情報技術者試験・E資格合格者。
ER図とは?
実世界にあるデータ構造をできるだけそのままの姿で表現できる、つまりデータベース管理システムに依存しないデータモデルとして、ERモデルがあります。そして、ERモデルを図で表現したものをER図と呼びます。例えば、「顧客 (customer) が商品 (product) を購入する (buy)」という処理をER図で表すと、以下のようになります。
現時点だとイメージが全然掴めない方が大多数かと思います。これから細かく解説するので、安心してください。
ER図のメリットは?
保守運用時に役に立つ
システム設計者が別のプロジェクト案件に異動するなど、プロジェクト内に残り続けるとは限らないでしょう。このような時に、ER図を設計書の中に記載しておくことで、設計者ではない方でもシステムの設計内容を正確に理解できるようになるため、システムの改修がスムーズに行えます。
大規模システム開発時の手戻りが減らせる
大規模システム開発の際に、仮にER図を書かずに開発に移ってしまうと、開発メンバーがシステムの仕様について理解できず、手戻りが多発してしまいます。その際に、ER図でテーブルの関係性などを整理することで、システム全体の構成を俯瞰することができるため、手戻りを起こす可能性を減少させることができます。そのため、特に大規模システム開発時には、ER図の作成は必要不可欠といえるでしょう。
ER図の構成要素
エンティティ・アトリビュート・リレーションシップ・カーディナリティとは?
データベース化の対象となる実世界を構成する要素を実体 (エンティティ)と呼び、これらのエンティティは、その特徴や性質を表すいくつかの属性 (アトリビュート) を持ちます。例えば、商品エンティティには、商品番号や商品名などの属性を持ちます。なお、属性の中には、商品番号のように1つのエンティティを一意に識別するための識別子が必要となります。これは、リレーショナルデータベースの表の主キーに相当します。
「顧客は複数の商品を注文する」などの業務上の規則やルールなどによって発生するエンティティの間の関係を関連 (リレーションシップ)と呼びます。以下に、ER図の例を示します。
この例では、
- エンティティ = customer (顧客) 、product (商品)
- アトリビュート = customer_id (顧客ID)、name (顧客名)、address (住所)、product_id (製品)、product_name (製品名)
となります。
加えて、エンティティの間のリレーションシップは、線をつなぐことで表現されます。その際に、エンティティ間の関係性 (「1対1」「1対多」「多対多」)を結合部分の形で表現し、これをカーディナリティ(多重度)と呼びます。カーディナリティは、ER図の代表的な記法の1つであるIE法だと、以下のような記号を用いて表現されます。
カーディナリティの種類
1対1のカーディナリティ
カスタマー1人に対して、購入商品1つが必ず紐づく場合は以下のように表現されます。
1対多 (0以上) のカーディナリティ
カスタマー1人に対して、購入商品が0個以上紐づく場合は以下のように表現されます。
1対多 (1以上) のカーディナリティ
カスタマー1人に対して、購入商品が1個以上紐づく場合は以下のように表現されます。
多対多のカーディナリティ (発展)
多対多は以下のように表現できるものの、リレーショナルデータベースとして実装することが不可能なので、「1対多」と「多対1」の関係に分解する必要があります。
以上が、ER図の構成要素についての説明でした。
練習問題
問題1
以下の図の解釈として、最も適切な選択肢を1つ選びましょう
- nameはエンティティである
- userはアトリビュートである
- phone_numberはアトリビュートである
問題2
以下、user (ユーザー) とtweet (ツイート) の関係性についてのER図です。
この際の解釈として、最も適切な選択肢を1つ選びましょう。
- ユーザーは必ず1ツイートのみである
- ユーザーは0ツイート以上している
- ユーザーは1ツイート以上している
略解
- 問題1: (3)
- 問題2: (3)
いかがでしたでしょうか?わからない・答えを間違えた場合は記事の上部をみて復習してみましょう!
初心者向けのおすすめ本・講座
ここまで、見習いエンジニアが抑えておくべきER図の知識について解説しました。この単元はDS検定やITパスポートでは頻出問題として扱われ、非常に重要な分野となります。そこで、本記事の内容よりも詳しく学びたい方向けに、おすすめの本と講座を紹介します。
リレーショナルデータベース入門―データモデル・SQL・管理システム
リレーショナルデータベースについて基礎から優しく解説されている本です。この記事で触れられているER図についても、より詳細に説明されています。
DS検定対策講座
DS検定対策講座は、一般社団法人 データサイエンティスト協会が主催する『データサイエンティスト検定™ リテラシーレベル』(略称:DS検定™★)を短時間で突破するための講座です。ER図の説明を含むデータエンジニア力から、データサイエンス、ビジネスまで幅広く学べる講座です。データサイエンティストやデータエンジニアを目指している方は、受講を検討してみてはいかがでしょうか?