本文へスキップ

平成22年度 春期 ITパスポート試験 問83

この問題の解説と、これまでの解答の記録です。

問83
頻出度★★★

関係データベースにおいて主キーを指定する目的はどれか。

出典 平成22年度 春期 ITパスポート試験 問83
解説

問 83

  • 不正解ア

    主キーの目的は「複数のレコードを同時に特定する」ことではなく、その逆で「ただ 1 つのレコードに絞り込む」ことである。主キーには一意性制約があるため同じ値をもつ行は存在せず、主キーの値を指定すれば該当する行は必ず 1 行だけになる。複数の行をまとめて取り出したい場合は、部署コードのような主キー以外の列を条件に使うのであって、主キーを指定する目的とは正反対の説明になっている。

  • イ

    正解 正解は イ。関係データベース (リレーショナルデータベース) では、データは行 (レコード) と列 (属性) からなる表の形で管理される。このとき「どの行のことを指しているか」を確実に言い当てられる目印がないと、更新も削除も参照もできない。そこで表の中の 1 行を他の行と区別して特定するために指定する列 (またはその組合せ) が主キーである。主キーに指定された列には、値が重複してはならない (一意性制約) 、値が空 (NULL) であってはならない (非 NULL 制約) という 2 つの制約が課される。この 2 つがそろうことで、主キーの値を 1 つ与えれば該当する行が必ずちょうど 1 行に定まる。たとえば社員表で社員番号を主キーにすれば、同姓同名の社員がいても社員番号で 1 人を確実に特定できる。つまり主キーを指定する目的は、レコード (行) を一意に識別できるようにすることであり、イ が正しい。

  • 不正解ウ

    検索条件は主キーでない列にも自由に指定でき、たとえば氏名や入社年月日を条件に検索することは主キーの指定とは無関係に行える。したがって「検索条件を指定できるようにする」ことは主キーを設ける理由にならない。主キーには通常インデックスが自動的に作られ検索が速くなるという効果はあるが、それは一意性を保証した結果として付随する利点であって、主キーを指定する目的そのものではない。

  • 不正解エ

    ある列を足し算や平均などの算術演算の対象にできるかどうかは、その列のデータ型が数値型かどうかで決まるものであり、主キーかどうかとは関係がない。主キーには社員コードや商品コードのような文字列型の列が使われることも多く、その場合は主キーであっても算術演算の対象にはならない。逆に主キーでない数値列は普通に演算できるので、この説明は主キーの目的として成り立たない。

ここがポイント
  • 主キー (primary key) とは、関係データベースの表の中で 1 行 (レコード) を一意に識別するために指定する列 (属性) またはその組合せ。値の重複が許されない (一意性) 、空値 (NULL) が許されない (非 NULL) という 2 つの制約をもち、これによって主キーの値から行がちょうど 1 つに定まる。
  • 1 列だけでは一意にならない場合は、複数の列を組み合わせた複合キーを主キーにする。また、他の表の主キーを参照して表と表を結び付ける列を外部キーと呼び、主キーと外部キーの対応関係が関係データベースにおける表の関連付けの基礎になる。
用語

解答の記録