【いーあーるず】

ER図(実体関連図) とは?

💡 データの間取り図を描こう
📌 このページのポイント
ER図(実体関連図)のイメージ ユーザー PK: user_id 名前 メールアドレス 注文 PK: order_id FK: user_id 注文日 合計金額 1対多 商品 PK: product_id 商品名 / 価格 多対多 エンティティ リレーション
ER図のイメージ
ひよこ ひよこ

ER図って何なの?設計図みたいなもの?

ペンギン先生 ペンギン先生

そうだよ!データベースの設計図そのものだね。マンションの間取り図みたいに、「どんなデータがあって、それぞれがどう関係しているか」を箱と線で描いたものだよ。

ひよこ ひよこ

箱と線だけで表せるの?

ペンギン先生 ペンギン先生

箱がエンティティテーブル)で、中に属性(カラム)を書くよ。たとえば「ユーザー」という箱には「名前」「メールアドレス」が入る。箱同士を線でつないで「ユーザーは複数の注文を持つ」みたいな関係を表すんだ。

ひよこ ひよこ

1対多とか多対多ってよく聞くけど、どういう意味なの?

ペンギン先生 ペンギン先生

カーディナリティと呼ばれるもので、関係の「数」を表すよ。たとえば「1人のユーザーが複数の注文をする」なら1対多。「学生が複数の授業を取り、授業にも複数の学生がいる」なら多対多だね。

ひよこ ひよこ

ER図っていつ作るものなの?

ペンギン先生 ペンギン先生

データベースを作る前の設計段階で描くのが基本だよ。いきなりテーブルを作り始めると、後から「この関係おかしい!」となって大変なことになる。チームで「この設計で合ってるよね?」と確認するのにも使うんだ。

ひよこ ひよこ

記法にも種類があるって聞いたんだけど…?

ペンギン先生 ペンギン先生

いい質問だね。代表的なのはIE記法(鳥の足記法)とUML記法の2つだよ。IE記法は線の端に「鳥の足」みたいな記号をつけてカーディナリティを表す。現場ではIE記法が多いけど、UMLクラス図と統合して使うチームもあるよ。

ひよこ ひよこ

大きいシステムだとER図も巨大になりそうだね!

ペンギン先生 ペンギン先生

そうなんだよ。数百テーブルになると全体を一枚に描くのは無理だから、サブシステムごとに分割して描くのがコツだね。A5:SQL Mk-2やdbdiagram.ioみたいな専用ツールを使うと、テーブル定義から自動生成もできて便利だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ER図」って出てきたら「データベーステーブル同士の関係を図にしたもの」と思えればだいたいOK!
📖 おまけ:英語の意味
「Entity-Relationship Diagram」 = 実体関連図
💬 Entity(実体)とRelationship(関係)を図にしたもの。1976年にピーター・チェンが提案した歴史ある設計手法だよ
← 用語集にもどる