ER図の記号
ER図の記号には大きく三つの流儀があります。データベースのツールが描く IE記法(鳥の足、クロウズフット)、教科書で習う Chen 記法、データにも使われる UML です。どれもテーブル(エンティティ)を箱で、リレーションを箱どうしを結ぶ線で表します。違うのは「カーディナリティ」の書き方です。カーディナリティとは、片側の 1 行に反対側の何行が対応するかのことです。IE記法では線の端に記号を描き、1 本の線を両方向から読みます。以下の記号はすべて読み方つきで、ErdDocs が描いています。下のツールでご自身のスキーマに使うのと同じ記法です。
IE記法(鳥の足)の線端の意味
IE記法では、すべてが線の端で決まります。端には記号が二つまで重なり、テーブルに近い方が最大、遠い方が最小を表します。
| 記号 | 名前 | 読み方 | 例 |
|---|---|---|---|
| ちょうど 1 | 縦線+縦線:最小 1、最大 1 | 注文はちょうど 1 人の顧客に属する | |
| 0 または 1 | 丸+縦線:任意、最大 1 | 顧客が持つポイントカードは最大 1 枚 | |
| 1 以上 | 縦線+鳥の足:少なくとも 1 | 注文には明細が少なくとも 1 行ある | |
| 0 以上 | 丸+鳥の足:いくつでも、0 も可 | 顧客の注文は 0 件以上 |
1 本の線の読み方
リレーションの線は、それぞれのテーブルに向かって 2 回読みます。定番の例:
スキーマが半分しかわかっていないときに記号が何を意味するかも含め、読み方の規則の全体は IE記法(鳥の足)のページにあります。どの組み合わせを選ぶかは カーディナリティの問題です。
Chen・IE記法・UML の比較
| 概念 | Chen | IE記法(鳥の足) | UML |
|---|---|---|---|
| エンティティ/テーブル | 長方形 | カラム一覧を中に持つ箱 | クラスの箱 |
| 属性 | エンティティにつながる楕円 | テーブルの箱の中の 1 行 | クラスの箱の中のフィールド |
| リレーション | エンティティ間のひし形 | 両端にカーディナリティ記号のある線 | 関連の線 |
| カーディナリティ | ひし形のそばの 1・N・M | 線端の縦線・丸・鳥の足 | 1、0..1、1..*、* の多重度 |
| 主キー | 下線を引いた属性名 | カラム行のキー表示 | ステレオタイプなど |
目安:構想段階は Chen、アプリのコードと並べるなら UML、実際のデータベースになったら IE記法。ErdDocs が描くのは最後の場合で、貼り付けたスキーマからそのまま作図します。
教科書にない記号:破線
実際のダンプには外部キーがないことがよくあります。Rails や Django、Laravel のアプリはリレーションをアプリ側で守るので、データベースは何も宣言しません。そこで ErdDocs は、この場合のための記号を一つ加えます。実線はデータベースが宣言したリレーション、破線はカラム名(user_id → users)から推定したリレーションです。前者は制約、後者は根拠のある推測です。
実際のスキーマで見る
下のツールに SQL を貼り付けると、外部キーと一意制約から、すべての線の「多」の側に鳥の足を描きます。
よくある質問
鳥の足の記号は何を意味しますか?
線の端に記号が二つまで重なります。テーブルに近い方が最大で、縦線は「最大 1」、三本に分かれた鳥の足は「多」です。外側が最小で、縦線は「少なくとも 1」、丸は「0 でもよい」。丸+鳥の足は「0 以上」、縦線+縦線は「ちょうど 1」と読みます。
Chen 記法と IE記法、どちらを使うべきですか?
教育や概念設計なら Chen。ひし形でリレーションを独立して描けるので、授業に向いています。実際のデータベースなら IE記法。テーブルごとに 1 つの箱にカラムを並べる形が、スキーマそのものの形だからです。
多対多の記号は?
線の両端に鳥の足を描きます。物理的なスキーマでは、多対多は中間テーブル(orders と products の間の order_items)で実装されます。そのため実際のデータベースを描くツールでは、中間テーブルに 2 本の一対多の線が集まる形になります。
データベースのツールが Chen 記法のひし形や楕円を描かないのはなぜですか?
物理的なデータベースでは、Chen 記法が別々に描くものがテーブルとカラムにまとまってしまうからです。属性の楕円は、テーブルの箱の中の 1 行になります。リレーションのひし形は、外部キーのカラムか中間テーブルのどちらかになります。これらを別の図形として描くと、図の大きさは倍になるのに、読み取れることは何も増えません。
関連ページ
- ER図:エンティティ、リレーション、そして概念モデルがテーブルに変わるところ。
- IE記法(鳥の足):読み方の規則を、例とともに。
- ER図のカーディナリティ:実際のデータベースから、線にどの記号がつくかがどう決まるか。
- ER図のサンプル:完全なスキーマ 14 件。それぞれ ER図とテーブル定義書つき。