ER図とテーブル設計

ER図とカーディナリティの基本を学びます。

ER図はテーブル間の関係を視覚化する設計図。実体・関連・属性とカーディナリティを理解しましょう。

IPAの基本情報技術者試験シラバスが示す「業務情報を抽象化し、実体と実体間の関連を表現するE-R図」を基準に、関係データベースへの変換まで扱います。

日野 こむぎ(普段) 日野 こむぎ

ER図ってどんな図?

藤森 さやか 先生(笑顔) 藤森 さやか 先生

ER図 (Entity-Relationship Diagram) は、実体 (Entity) と関連 (Relationship) でDB構造を表す図よ。

青木 澪(普段) 青木 澪

主要要素は、実体、関連、属性です。
ER図は概念を表すので、図の実体が最初から物理テーブルそのものとは限りません。

桃井 すみれ(普段) 桃井 すみれ

カーディナリティって何ですかぁ?

青木 澪(普段) 青木 澪

カーディナリティは関連の多重度のこと。
1対1・1対多・多対多の3パターンが基本。

藤森 さやか 先生(普段) 藤森 さやか 先生

例えば「顧客 1 - * 注文」なら1人の顧客に対して複数の注文があり得るって意味。
多対多は中間テーブルで表現するのが普通ね。

日野 こむぎ(笑い) 日野 こむぎ

ER図を描いてからテーブル設計するんだね!

具体例: 顧客・注文・商品のモデル

藤森 さやか 先生(普段) 藤森 さやか 先生

『一人の顧客は0件以上の注文を行い、一つの注文は必ず一人の顧客に属する』なら、顧客と注文は1対多。
関係モデルでは、多側の注文表に顧客IDを外部キーとして置くのが基本よ。

青木 澪(普段) 青木 澪

注文と商品は、一つの注文に複数商品が入り、一つの商品が複数注文に現れるので多対多です。
そこで注文詳細という連関エンティティを置き、注文ID・商品ID・数量・注文時単価を持たせます。

桃井 すみれ(普段) 桃井 すみれ

0件以上の『0』は、注文したことがない顧客も登録できるという任意性を表すんですねぇ。

日野 こむぎ(びっくり) 日野 こむぎ

カーディナリティの1と多だけじゃなく、0か1かという最小数も読むんだ!

確認クイズ

ER図で表現する関連 (リレーションシップ) の多重度を表す概念はどれか。

  1. カラム
  2. ビュー
  3. カーディナリティ
  4. インデックス
こたえを見る

正解: 3. カーディナリティ

カーディナリティは関連の多重度を表す概念で、1対1・1対多・多対多の3種類があります。多対多は通常、中間テーブル (連関エンティティ) で表現します。

確認クイズ

顧客と注文が1対多で、各注文が必ず一人の顧客に属するとき、顧客IDを外部キーとして持つ表はどれか。

  1. 顧客表
  2. 注文表
  3. 両方の表
  4. どちらの表にも不要
こたえを見る

正解: 2. 注文表

1対多の関連では、多側の注文表に一側の顧客表を参照する顧客IDを置きます。これにより各注文の所有者を一意にたどれます。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。