ER図(カーディナリティ・弱エンティティ)とは?データベースの設計図

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

ER図とは(全体像)

ER図は、データベースをつくる前に描く設計図。「E」はエンティティ(実体=管理したいモノ。会員・商品など)、「R」はリレーションシップ(関係=モノどうしのつながり)の頭文字だよー。

身近にたとえると、家を建てる前の間取り図みたいなもの。いきなり建て始めず、まず「どの部屋が、どうつながるか」を図にしておくと、あとで困らないのー。

押さえるのは、ER図はつながりの「数の関係」(カーディナリティ)をはっきりさせるためのもの、ということ。ここが試験でいちばん問われるよー。


詳しく:カーディナリティと中間テーブルだけ覚えれば戦える

ここが記事の心臓部。まずカーディナリティ(つながりの数の関係)を見ていこーね。

カーディナリティ(多重度)の3パターン

種類意味
1対1片方に対し、相手はちょうど1つ社員と社員証
1対多片方に対し、相手は複数(最も多い)部署と社員
多対多おたがいに複数ずつ対応会員と部活(中間テーブルが必要)

ここで一番のひっかけが、「多対多をそのまま1つの表にできる」という誤解。多対多は、そのままでは表にしにくいんだよー。だから間に「中間テーブル」を1つ置いて、「1対多」を2つに分けるのがお約束なのー。

多対多は中間テーブルで分ける

どうするか
会員 ←多対多→ 部活そのままでは表にしにくい
会員 ←1対多→ 入部記録 ←多対1→ 部活中間テーブルを置いて分解する

もう1つ、依存するモノを表す弱エンティティもある。これは単独では主キー(見分けるための鍵)が決まらず、強いモノに頼って初めて区別できるもの。たとえば「注文1件の中の明細」は、その注文があって初めて意味を持つ、という感じだよー。

そして大事なのが、ER図はあくまで設計の段階の話で、SQL(実際の操作命令)を書くより前ということ。間取り図と建築工事が別なのと同じなのー。

わかりやすく言い換えると

要するに、会員と部活でイメージするとラクだよー。

1対多 … 1つの部署に社員がたくさん(いちばんよくある形)

多対多 … 1人が複数の部活に入り、1つの部活に複数人。だから間に「入部記録」を置く

弱エンティティ … 注文があって初めて意味を持つ「明細」みたいな、頼って存在するモノ

つまり、「多対多は中間テーブルで分ける」「ER図は設計の段階」、この2点が試験の急所なのー。


試験のツボ

🔴 一番出る:カーディナリティの3パターン

①1対1・1対多(最も多い)・多対多

②多対多はそのままにせず、中間テーブルで1対多を2つに分ける

🔴 次に出る:ER図は設計の段階

①ER図は「どんなデータがどうつながるか」を描く設計図

②SQL(実際の操作命令)を書くより前の段階の話

🟡 押さえると安定:弱エンティティ

①単独では主キーが決まらず、強いモノに頼って区別できるモノ

②例=注文があって初めて意味を持つ「明細」


よくある間違い

「多対多の関係はそのまま1つの表にすればよい」→ ✗  多対多は中間テーブルを置いて、1対多を2つに分けるのがお約束。

「ER図はSQLそのもので、実際の操作命令である」→ ✗  ER図は設計の段階。SQLを書くより前の図。

「弱エンティティは単独でも主キーが決まる強いモノである」→ ✗  弱エンティティは強いモノに頼って初めて区別できる。単独では決まらない。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(カーディナリティ)

📝 オリジナル問題 1 カーディナリティ

ER図のカーディナリティに関する次の記述のうち、正しいものはどれか。

  1. カーディナリティは画面に表示する色の数のことで、データの関係とは無関係だとされている
  2. カーディナリティはどんな関係でもすべて1対1に決まっていて、種類はないものだとされている
  3. カーディナリティは1対1・1対多・多対多があり、つながりの数の関係を表すものなのである
  4. カーディナリティはデータを削除する順番のことで、関係の数とは無関係だとされているものだ
データスラ
データスラ 解答・解説

解答は 3 だよー。

カーディナリティは、モノどうしのつながりの「数の関係」で、1対1・1対多・多対多があるのー。とくに1対多がいちばんよく出てくるよー。

選択肢1の「色の数」、選択肢2の「すべて1対1」、選択肢4の「削除する順番」はどれも誤りなのー。

選択肢判定理由
1色の数ではない
21対多・多対多もある
33種類で数の関係を表す
4削除の順番ではない

オリジナル問題2(多対多と中間テーブル)

📝 オリジナル問題 2 多対多と中間テーブル

多対多の関係の扱い方に関する次の記述のうち、正しいものはどれか。

  1. 多対多は中間テーブルを1つ置いて、1対多を2つに分けて表すのが基本のやり方なのである
  2. 多対多はそのまま1つの表にするのが正しく、中間テーブルは作ってはいけないものだとされる
  3. 多対多はどんなときも必ず1対1に書き換えてから表にするものだとされているものである
  4. 多対多は表に変換できないので、データベースでは扱えないものだとされているものである
データスラ
データスラ 解答・解説

解答は 1 だよー。

多対多は、そのままでは表にしにくいのー。だから間に中間テーブルを1つ置いて、「1対多」を2つに分けるのが基本なのー。会員と部活の間に「入部記録」を置く感じだよー。

選択肢2の「そのまま1つの表」、選択肢3の「必ず1対1に」、選択肢4の「扱えない」はどれも誤りなのー。

選択肢判定理由
1中間テーブルで1対多×2に分ける
2そのままでは表にしにくい
31対1への書き換えではない
4中間テーブルで扱える

オリジナル問題3(弱エンティティとER図の位置づけ)

📝 オリジナル問題 3 弱エンティティとER図の位置づけ

弱エンティティとER図に関する次の記述のうち、正しいものはどれか。

  1. 弱エンティティは単独で主キーが決まり、ER図はSQLそのものだとされているものである
  2. 弱エンティティは画面のボタンのことで、ER図は音を鳴らす機能だとされているものである
  3. 弱エンティティはどんなモノよりも必ず強く、ER図は工事のあとに描くものだとされている
  4. 弱エンティティは強いモノに頼って区別でき、ER図はSQLを書く前の設計段階の図である
データスラ
データスラ 解答・解説

解答は 4 だよー。

弱エンティティは、単独では主キーが決まらず、強いモノに頼って初めて区別できるモノなのー(注文があって意味を持つ「明細」みたいな感じ)。ER図はSQLを書くより前の設計の段階の図だよー。

選択肢1の「単独で主キー・SQLそのもの」、選択肢2の「ボタン・音を鳴らす」、選択肢3の「必ず強い・工事のあと」はどれも誤りなのー。

選択肢判定理由
1単独では主キーが決まらない
2ボタンや音の機能ではない
3強いモノに頼る・設計は工事の前
4強いモノに頼る・ER図は設計段階

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る