関係データベースに関する記述中の a, b に入れる字句の適切な組合せはどれか。 関係データベースにおいて, レコード (行) を一意に識別するための情報を a と言い, 表と表を特定の b で関連付けることもできる。
平成23年度 特別試験 ITパスポート試験 問72
この問題の解説と、これまでの解答の記録です。
問 72
不正解ア
b のフィールドは正しいが、a のエンティティが誤り。エンティティ (実体) とは、業務で管理する対象となる人・物・事柄そのもの、あるいはそれを表現した概念であり、E-R 図では四角形で表され、関係データベースでは 1 つの表に対応することが多い。つまりエンティティは「表そのもの」に近い粒度の用語であって、表の中の 1 行を一意に識別するための情報ではない。組合せ問題では両方の空欄が正しくなければならないため、a が誤りである時点でこの選択肢は選べない。
不正解イ
a・b とも誤り。a のエンティティは前述のとおり管理対象の実体を指す用語で、行を一意に識別する情報 (主キー) ではない。b のレコードは表の行そのもの、すなわちデータ 1 件分のまとまりを指す。表と表の関連付けは、共通する列の値を突き合わせて行うものであり、レコードは関連付けの手掛かりではなく、関連付けられた結果として取り出される側のデータである。したがって 2 つの空欄のどちらも成立しない。
- ウ
正解 正解はウ (a: 主キー / b: フィールド)。まず空欄 a を考える。問題文は「レコード (行) を一意に識別するための情報」と定義しており、これは関係データベースにおける主キー (primary key) の定義そのものである。主キーとは、表の中の 1 行を他の行と区別して確実に特定できる列 (または列の組合せ) のことで、値が重複しないこと (一意性)、値が空 (NULL) にならないことが条件になる。社員表なら社員番号、商品表なら商品コードのように、業務上ひとつに定まる番号やコードが主キーに選ばれる。次に空欄 b を考える。関係データベースでは、表と表を線でつなぐような特別な仕組みは持たず、両方の表に共通する列 (フィールド) を用意し、その値が一致する行どうしを結び付けることで表と表を関連付ける。例えば受注表に得意先コードというフィールドを持たせておけば、得意先表の主キーである得意先コードと値を突き合わせることで、受注 1 件ごとに得意先名や住所を取り出せる。このように他の表の主キーを参照する目的で持たせた列を外部キー (foreign key) と呼び、外部キーもフィールド (列・項目) の一種である。問題文の「特定の b で関連付ける」という言い回しは、まさにこの特定の列を指しているので b はフィールドとなる。したがって a に主キー、b にフィールドが入るウが正しい組合せである。
不正解エ
a の主キーは正しいが、b のレコードが誤り。レコード (行) は 1 件分のデータのまとまりであり、フィールド (列・項目) が横に並んで 1 レコードを構成する。関係データベースで表と表を関連付けるときに突き合わせるのは、両方の表に共通して存在する特定の列の値、すなわちフィールド (外部キーと主キー) である。行という単位でつなぐわけではないため b には入らない。a だけが合っていても組合せ問題では不正解になる点に注意したい。
- 主キーの定義 — 主キー (primary key) は、表の中でレコード (行) を一意に識別するための列または列の組合せ。値が重複しない (一意性) こと、空値 (NULL) を許さないことが条件で、社員番号や商品コードのように業務上ひとつに定まる項目が選ばれる。
- 表と表の関連付けとフィールド・外部キー — 関係データベースでは、共通するフィールド (列・項目) の値が一致する行どうしを突き合わせて表と表を関連付ける。他の表の主キーを参照するために持たせた列が外部キー (foreign key)。レコードは行そのもの、エンティティは管理対象の実体 (ほぼ表に対応する概念) であり、いずれも関連付けの手掛かりとなる単位ではない。