PR

ER図の読み方|カーディナリティとテーブル間の関係を解説

ER図の読み方 データサイエンティスト検定
スポンサーリンク

はじめに

ER図を見たとき、四角形で囲まれたテーブルは分かっても、それらを結ぶ線や記号から何が読み取れるのか迷うことがあります。特に「1対多」という関係だけでは、データが0件でもよいのかまでは分かりません。

ER図を読むときは、何のデータを表すか、何を手がかりにつながるか、相手が何件まで対応するかの順に確認すると整理しやすくなります。この記事では、顧客と注文を例に、関係線とカーディナリティの基本的な読み方を説明します。

ER図は何を表す図なのか

ER図(Entity Relationship Diagram)は、データとして管理する対象と、その対象同士の関係を表す図です。データベースの構造を理解したり、テーブルを設計したりするときに使われます。図の書き方には複数の種類がありますが、ここではテーブルを四角形で描き、関係線の端に件数の記号を付けるCrow’s Foot(カラスの足)記法を例にします。

例えば、通販サイトでは「顧客」と「注文」がそれぞれデータとして管理されます。顧客には顧客IDや氏名、注文には注文IDや注文日などの項目があります。ER図ではこうした対象を四角形で示し、どのデータがどのデータと関連するかを線でつなぎます。

顧客と注文のER図を読んでみよう

顧客と注文のER図。注文は顧客1件に対応し、顧客には注文0件以上が対応する
図1 顧客と注文のER図。顧客1件には注文0件以上、注文1件には顧客1件が対応する。

図1の「顧客」と「注文」は、それぞれ異なる種類のデータを管理するテーブルです。顧客テーブルの「顧客ID」は各顧客を区別する主キー(PK)であり、注文テーブルの「注文ID」も各注文を区別する主キーです。注文テーブルには「顧客ID」もあり、どの顧客の注文かを示す外部キー(FK)として使われます。

ここで重要なのは、関係線を片方向だけで読まないことです。図1は「1件の注文には、必ず1件の顧客が対応する」「1件の顧客には、0件以上の注文が対応する」という両方向の条件を表しています。まだ一度も注文していない顧客はいても、この図の前提では、顧客のいない注文は作らないというモデルです。

カーディナリティの記号の読み方

カーディナリティは、関係する相手が何件あり得るかを示す考え方です。Crow’s Foot記法では、線の両端に付く丸・縦線・三つ又の記号を組み合わせ、最小件数と最大件数を表します。丸は0件、縦線は1件、三つ又は多数を意味します。1つの端では、関係線の内側寄りの記号が最小数、テーブルに近い側の記号が最大数を示します。

線の端の組み合わせ最小~最大読み方
丸+縦線0~1件対応しなくてもよいが、対応するなら最大1件
縦線+縦線1~1件必ずちょうど1件
丸+三つ又0~多数0件でもよく、複数件も対応できる
縦線+三つ又1~多数少なくとも1件あり、複数件も対応できる

図1では、顧客側の端が「ちょうど1件」、注文側の端が「0件以上」です。顧客側の記号は「注文1件に対応する顧客の数」を、注文側の記号は「顧客1件に対応する注文の数」を表します。このように、確認したいテーブルとは反対側の端を読むと、対応件数を取り違えにくくなります。

ER図を読む3つの手順

1.四角形の名前と項目を確かめる

最初に、どのテーブルが何を管理するかを確認します。顧客と注文のように、別々の対象が描かれていれば、それぞれにどんな項目があるかを見ます。主キー(PK)があれば、各行を何で区別しているかも確認できます。

2.テーブルを結ぶ線とキーを探す

次に、どのテーブル同士が線で結ばれているかを確認します。図1では、注文テーブルの顧客IDが外部キー(FK)として顧客テーブルの顧客IDを参照します。線とキーを一緒に見ると、単に関連があるだけでなく、何を使って対応付けるのかが分かります。なお、ER図の表記や抽象度によっては、キーの詳細が省略されていることもあります。

3.両端の記号を読んで件数を確かめる

最後に、関係線の左右をそれぞれ読みます。例えば「顧客1件に対して、注文は何件か」「注文1件に対して、顧客は何件か」と問いを分けます。1対多かどうかを見た後、最小数が0か1かまで確認するのがポイントです。これで、注文のない顧客が許されるか、といった条件まで読み取れます。

間違えやすい読み方

「1対多」と「1件以上」は同じ意味ではありません。1対多は主に一方と他方の件数の広がりを示す表現であり、実際に相手が0件でもよいかは、最小件数の記号を確かめる必要があります。図1の注文側は「0件以上」なので、顧客が1人でも、まだ注文がない場合があり得ます。

また、外部キーがあることだけで「必ず1件の相手がいる」と決めつけないようにします。外部キー列がNULLを許す設計なら、対応する相手が存在しない状態も表せます。図1では注文の顧客IDを必須とする前提を置いています。図に描かれた件数条件と、実際のテーブル定義が一致しているかは、必要に応じて別途確認します。

なお、ER図には1対1や多対多の関係も登場します。多対多は「両側の1件に対して相手が複数件あり得る」関係ですが、リレーショナルデータベースでは中間テーブルを使って表すことが一般的です。ここでは詳しい設計方法には踏み込まず、関係線が表す対応件数を読むことに集中します。

まとめ

ER図は、データを表す四角形と、データ同士を結ぶ関係線から、テーブルの構造を読み取るための図です。まずテーブル名と主キー・外部キーを確認し、次に関係線の両端の最小件数・最大件数を読みます。

顧客と注文の例では「注文1件には顧客1件が必要」「顧客1件には注文0件以上が対応できる」と判断できます。ER図を見返すときも、テーブル名 → キー → 線の両端の件数の順に確認すると、1対多と0件許容の違いを見落としにくくなります。

関連記事


タイトルとURLをコピーしました