本文へスキップ

E-R図・キー設計と正規化

頻出約 32 分5 用語過去問 20 題

この単元の目標

  • E-R図で、業務の実体と関連、関連の多重度を読み取れるようになる
  • 主キーと外部キーを、役割と値の制約で区別できるようになる
  • 正規化で表をどう分けるか、その目的と合わせて説明できるようになる
用語総表(5 語)
用語ひとことで設計での役目
E-R図実体と実体の間の関連を図に表したもの業務の分析結果からデータの構造を整理する
主キー表の中の1行を一意に識別する列または列の組合せ行を1つに特定する
外部キーほかの表の主キーの値を参照する列または列の組合せ表と表を値で結び付ける
インデックス列の値と行の位置を対応づけた索引検索を速くする
正規化重複をなくすために表を複数に分ける作業更新時の食い違いを防ぐ

用語

E-R図は、業務で管理する実体(エンティティ)と、実体どうしの関連(リレーションシップ)を図に表したものである。

多重度対応のしかた例
1対1どちらの側から見ても相手は1件店舗と店長(1店舗に店長は1人、店長は1店舗だけ担当)
1対多一方の1件に相手の複数件が対応し、逆向きは1件学級と生徒(1学級に生徒は複数、生徒は1学級に所属)
多対多どちらの側から見ても相手は複数件生徒と部活動(兼部あり、1つの部に生徒は複数)

実体はデータとして記録したい対象のまとまりで、関連は実体どうしのつながりを表す。関連には、片方の1件に相手が何件対応するかを示す多重度(1対1、1対多、多対多など)を書き添える。

たとえドラマの人物相関図のようなもの。登場人物を枠で描き、親子や同僚といった関係を線で結んで、誰と誰がどうつながるかを一目で分かるようにする。

覚え方E は Entity(実体)、R は Relationship(関連)の頭文字。名前そのものが図の2つの部品を表している。

出題のポイント

  • 出題E-R図は、データベースを設計するときに業務の管理対象どうしの関係を整理する図であり、関係データベースではテーブル間のつながりを示すのにも使う。
  • 出題1つの学級に生徒が複数いて、どの生徒も1つの学級だけに属するなら、学級と生徒は1対多の関連になる。多重度は両方の向きから件数を数えて決める。
  • 出題E-R図は業務の分析結果をもとに描き、テーブルの設計はそのE-R図を土台に進める。

この用語の過去問 3 題 E-R図

主キーは、表の中の1行(レコード)を一意に識別するために決める列、または列の組合せである。

公演番号座席番号予約者名
P01A1青木
P01A2青木
P02A1西村

上の表では、公演番号だけでも座席番号だけでも同じ値が複数の行にあるが、2つの列を組にすると1行が決まる。このように組にした場合は、その組全体で1つの主キーとして扱う。

たとえ学生証の学籍番号のようなもの。同じ名前の学生がいても、番号が分かれば一人に決まる。

覚え方英語では primary key。primary は「第一の」という意味で、表の行を見分ける第一の手がかりになる。

出題のポイント

  • 出題主キーの値は行ごとに異なり、列を組にした主キーでは組全体の値で行を区別するので、組を構成する個々の列の値は重なってよい。主キーを構成する各列は空の値(NULL)をとれない。
  • 出題1つの列で行が決まらない表では、列を2つ以上まとめて1つの主キーとすることもできる。
  • 出題主キーを決める目的は、表の中のどの行かを一意に見分けられるようにすることにある。

この用語の過去問 3 題 主キー

外部キーは、ほかの表の主キーの値を参照する列(または列の組合せ)で、表と表を値によって結び付ける。

表列役割
学級表学級コード主キー
生徒表生徒番号主キー
生徒表学級コード外部キー(学級表の学級コードを参照)

外部キーの列には、参照先の表に存在しない値は入れられず、この決まりを参照制約(参照整合性)という。この制約によって、上の表で言えば学級表にない学級を指す生徒の行が生じず、表どうしのつながりが保たれる。

たとえ宅配の伝票に書くお届け先の会員番号のようなもの。番号は会員名簿に実在する人を指していなければならない。

覚え方「外部」は自分の表の外を指すという意味。外部キーは、外の表への道しるべになる。

出題のポイント

  • 出題1対多の関連は、多の側の表に、1の側の表の主キーを外部キーとして持たせて表す。
  • 出題外部キーには参照先に存在しない値を入れられないので、データを追加するときは参照される側の表から先に登録する。
  • 出題1つの表が複数の表を参照するときは参照先ごとに外部キーを置くので、1つの表に外部キーが複数あってよい。

この用語の過去問 3 題 外部キー

「主キー」と「外部キー」の違い

観点主キー外部キー
決め手役割自分の表の行を一意に識別するほかの表の主キーを参照して表を結び付ける
同じ値主キーの値(組なら組全体の値)はほかの行と重複できない何行に現れてもよい
1つの表での数1つ参照先に応じて複数あってよい

インデックスは、表の列の値と行の位置を対応づけた索引で、検索を速くするために作る。

インデックスなしインデックスあり
条件に合う行の検索全行を順に調べる索引から行の位置へ直接たどる
行の追加・更新・削除表だけを書き換える表に加えて索引も書き換える
記憶領域表の分だけ索引の分が増える

索引がなければ、条件に合う行を探すために表の行を端から調べることになる。索引があれば検索は速くなる一方、行を書き換えるたびに索引も直すので書き込みの手間が増え、索引そのものを保存する分だけ記憶領域も増える。

たとえ分厚い本の巻末にある索引のようなもの。語からページをすぐ引けるが、本文を改訂するたびに索引も直す必要がある。

覚え方英語の index には「人差し指」の意味もある。目的の行を指さして場所を教える、と覚える。

出題のポイント

  • 出題インデックスの役割は検索を速くすることであり、どの列に作るかは検索の使われ方に応じて決める。
  • 出題インデックスは検索に使う列ごとに作れるので、1つの表に複数あってよい。

この用語の過去問 3 題 インデックス

「主キー」と「インデックス」の違い

観点主キーインデックス
決め手目的行を1つに特定する検索を速くする
設定のしかた1つの表に1つだけ決める検索の使われ方に応じて必要な列に作る

正規化は、データの重複をなくして更新時の矛盾を防ぐために、1つの表を複数の表に分ける設計の作業である。

  1. 予約の表に会員と講座の情報も混在
  2. 会員表を分ける(会員番号で決まる項目)
  3. 講座表を分ける(講座コードで決まる項目)
  4. 予約表は会員番号と講座コードで参照

予約表には会員番号と講座コードを外部キーとして残し、分けた表と結び付ける。

4 / 4

同じ事実が何か所にも記録されていると、変更のときに一部だけ直して値が食い違うおそれがある。正規化では、各項目がどの項目によって決まるかを手がかりに表を分け、分けた表どうしは共通の列(主キーと外部キー)で結び付ける。段階を進めるほど表は細かく分かれる。

たとえいろいろな書類に何度も書いていた取引先の住所を、専用の取引先名簿に切り出し、書類には名簿の番号だけを書くようにするようなもの。住所が変わっても名簿の1か所を直せば済む。

覚え方「正規」は決まった形に整えること。整えるほど表は増える、と逆向きの感覚で覚える。

出題のポイント

  • 出題正規化のねらいは、同じ事実を1か所にだけ記録して、更新したときに値が食い違わないようにし、保守を楽にすることにある。
  • 出題別の列(例えば会員番号)だけで値が決まる項目は、その列を主キーとする表へ移し、元の表にはその列を残して結び付ける。
  • 出題ほかの項目から計算で求められる項目は冗長な項目である。例えば単価と数量があれば金額は求まる。

この用語の過去問 3 題 正規化

要点

  • E-R図は実体と関連で業務のデータ構造を表し、関連には1対1や1対多などの多重度を付ける。
  • 主キーは行を一意に識別する列またはその組合せで、その値はほかの行と重複できず、構成する列には空の値を入れられない。
  • 外部キーはほかの表の主キーを参照する列(または列の組合せ)で、参照先に存在しない値は入れられない。
  • インデックスは検索を速くする索引で、書き込みの手間と記憶領域が増える。
  • 正規化は、各項目が何によって決まるかで表を分け、重複と更新時の食い違いをなくす。

確認問題

この単元の過去問から 5 題

確認問題を解く

この分野の過去問をすべて見る