IE 記法 vs IDEF1X 記法
ER 図の 2 大記法 IE(カラスの足)と IDEF1X の違いを比較し、使い分けを明確化。
2 つの記法が併存する理由
ER 図の記法は歴史的に複数あり、現代の実務でよく見るのは IE 記法(Information Engineering / カラスの足) と IDEF1X 記法 の 2 つです。
- IE 記法: 1981 年に Clive Finkelstein / James Martin が提唱。多重度を線端の記号(棒・○・カラスの足)で直感的に表す。民間の DB 設計ツールがほぼこれを採用
- IDEF1X 記法: 米国空軍の ICAM プロジェクト発、1993 年に FIPS 184(連邦情報処理標準)として制定。政府調達・防衛・大規模基幹システムで採用される
どちらも同じ ER モデルを描くが、どの情報を図に織り込むかの思想が違います。IE は「パッと見の読みやすさ」、IDEF1X は「識別関係や依存関係まで厳密に表現」を優先します。
多重度の書き分け — 同じ関係を両記法で描くと
同じ多重度を IE と IDEF1X で並べて描くと上の図のようになります。IDEF1X は「子(N)側の黒丸」+「多重度ラベル」で表現します。
| 多重度 | IE 記法 | IDEF1X 記法 |
|---|---|---|
| 1 .. 1(ちょうど 1) | 棒 1 本 ──┼── | 親側に記号なし(単線) |
| 0 .. 1(0 か 1) | ○ + 棒 ──○┼── | 子側に Z ラベル + ● |
| 1 .. N(1 以上) | 棒 + カラスの足 ──┼≪── | 子側に P ラベル + ● |
| 0 .. N(0 以上、既定) | ○ + カラスの足 ──○≪── | 子側に ● のみ(ラベル無し) |
| ちょうど n 個 | (記号では表現できない・注釈で補足) | 子側に数値ラベル(例: 3)+ ● |
IE は「両端の記号を見るだけ」で読めるが、「ちょうど 3 個」のような固定多重度は表現できず注釈に逃がします。IDEF1X は任意の数も書けるため、より厳密な契約文書向きです。
識別関係と非識別関係 — IDEF1X 独自の概念
IDEF1X の最大の特徴は、親子関係を 識別関係(identifying) と 非識別関係(non-identifying) に区別することです。
- 識別関係(実線): 子エンティティの PK に親の PK が組み込まれる関係。子は親が無ければ存在できない(例:
order_lines (order_id, line_no)— 注文が消えたら明細も意味を失う) - 非識別関係(破線): 子は自前の PK を持ち、親の PK は FK 列としてだけ参照する(例:
orders (order_id, customer_id)— 注文はシステム内で独立した存在)
さらに子エンティティも形状で区別され、依存エンティティ(Dependent)= 角丸の箱/独立エンティティ(Independent)= 角張った箱 となります。
IE 記法にはこの区別が無く、どちらも同じ実線で描かれます。代わりに FK 列に注記(FK (NOT NULL) か FK (NULLABLE))で同じ情報を表現します。
使い分けの目安 — 実務的な比較
| 項目 | IE 記法(カラスの足) | IDEF1X 記法 |
|---|---|---|
| 制定 | 1981 年、Finkelstein / Martin | 1993 年、FIPS 184(米国連邦標準) |
| 多重度の表記 | 線端の ○・棒・カラスの足 | ● + ラベル(P / Z / 数字) |
| 識別/非識別の区別 | 無し(実線のみ) | 実線 vs 破線で明示 |
| エンティティ形状 | すべて同じ角張った箱 | 独立 = 角張り/従属 = 角丸 |
| 学習コスト | 低(4 種類の線端を覚えるだけ) | やや高(記号・形状が多い) |
| 代表的なツール | A5:SQL Mk-2 / dbdiagram.io / DBeaver / MySQL Workbench / PlantUML | ERwin / ER/Studio / PowerDesigner |
| よく使われる場面 | Web/業務システム/OSS/スタートアップ全般 | 政府調達/防衛/金融の基幹/大規模 SI |
迷ったら IE 記法。現代の DB 設計ツールはほぼ IE を既定としており、ドキュメント共有のハードルも低い。IDEF1X は「顧客が公的機関」「設計書が納品物として契約に入る」場合だけ検討すれば十分です。
本サイトの ER 解説・図はすべて IE 記法で統一しています。
