データベース

【データベース】ER図とIE記法の書き方(鳥の足などの意味)

データベース設計で使うER図とIE記法の書き方を紹介します。鳥の足(多)・○(0)・|(1)の意味と4つの組み合わせ、商品と在庫を例にした1対多の読み方、多対多を中間テーブルで表す方法まで説明します。

この記事の目次
  1. ER図とは
  2. IE記法
  3. 多対多は中間テーブルで表す

データベースのテーブル設計をするとき、ER図とIE記法の書き方を知っていると、他のエンジニアと共通認識を持てます。
テーブル同士の関係性を可視化できるので、設計の確認にも役立ちます。
鳥の足などの記号の意味も紹介します。

先に結論を書くと、ER図の線の端に付く「鳥の足(3本に分かれた線)」は「多」を表します。相手側が「|(1)」なら1対多、両端が鳥の足なら多対多です。「○」は0件もありうることを示し、鳥の足と組み合わせた「○と鳥の足」は「0以上」、「|と鳥の足」は「1以上」という意味になります。

ER図とは

ER図とは、テーブル(エンティティ)の関係を可視化するための代表的な記法です。
ER図を使うと、正規化を行ったあと、テーブル同士の関係性を具体的に可視化できます。
正規化については、Web開発者が知っておくべきテーブル設計の正規化手順を参考にしてみてください。

ER図では、横線で区切って表の属性を二分割します。
上にあるものが主キー、下にあるものが主キー以外の属性です。
外部キーには「FK」と添えることが多く、線の端の記号で「何件と何件が結びつくか」を表します。

スポンサーリンク

IE記法

IE記法(Information Engineering)は、ER図において、テーブルの関係を表す代表的な記法です。
テーブル同士のレコード数は、カーディナリティと呼びます。

  • 鳥の足(三本線):多
  • ○:0
  • |:1

線の端には記号を2つ重ねて書き、テーブルに近い側が「最大(1か多か)」、遠い側が「最小(0か1か)」を表します。よく使う組み合わせは次の4つです。

端の記号 読み方 意味
| | 1(ちょうど1) 必ず1件だけ対応する
○ | 0または1 対応しないこともある
| 鳥の足 1以上 最低1件、複数ありうる
○ 鳥の足 0以上 0件のこともあり、複数ありうる

たとえば、商品テーブルと在庫テーブルの関係を考えます。1つの商品に対して、在庫テーブルの行(店舗ごとの在庫)は複数ありえるので、在庫テーブル側の端に鳥の足を書きます。
在庫が1件もない商品もありうるなら、鳥の足に○を添えて「0以上」にします。
鳥の足と○を併用したときは0以上を意味するので、1を表す|は書きません。

逆に、在庫テーブルから商品を見ると、1行の在庫は必ず1つの商品にしか属さないので、商品テーブル側の端は| |(ちょうど1)です。
この「商品 1 対 在庫 多」の形が、いちばんよく出てくる1対多の関係です。

多対多は中間テーブルで表す

両端が鳥の足になる多対多(たとえば学生と講義)は、リレーショナルデータベースではそのまま実装できません。ER図の段階で、両方の主キーを持つ中間テーブル(受講テーブルなど)を置き、「学生 1 対 受講 多」「講義 1 対 受講 多」の2本の1対多に分解します。
ER図を描いたあとに実際のテーブルへ落とし込む考え方はMySQLの実践的なテーブル構成方法、CREATE TABLEで外部キー制約を書く手順はMySQL DDLの書き方で解説しています。

スポンサーリンク