関係データベースの主キーは何のために設定する?
ITパスポート試験 令和元年度秋期 問66 / データベース › データベース設計
過去問にチャレンジ
関係データベースにおいて,主キーを設定する理由はどれか。
- ア
算術演算の対象とならないことが明確になる。
- イ
主キーを設定した列が検索できるようになる。
- ウ
他の表からの参照を防止できるようになる。
- エ
表中のレコードを一意に識別できるようになる。
会話形式の解説
講師この問題では、主キーを設定する目的に注目します。表のレコードをどう扱えるようになるか、という点から考えましょう。
受験者主キーを設定すると、その列を検索できるようになるのでしょうか。
講師主キー以外の列も検索に使えます。検索を可能にすることは、主キーを設定する目的ではありません。
受験者では、主キーでレコードを区別できることが大切なのですね。
講師そのとおりです。主キーの値は重複せず、NULLにもならないので、表の各レコードを一意に識別できます。これが正解の理由です。
受験者算術演算の対象にならない、という説明もありました。主キーにすると列の扱いが変わるのでしょうか。
講師主キーの指定は、列に対して算術演算ができるかどうかを決めません。その説明は誤りです。
受験者他の表からの参照を防ぐ、という説明はどうですか。
講師それも誤りです。主キーは、他の表の外部キーから参照できます。主キーを設定しても参照は防止されません。
受験者検索や参照の可否ではなく、表の各レコードを重複なく識別するために設定するのですね。
講師はい。主キーは複数の列を組み合わせて設定することもできます。どの場合も、レコードを一意に識別するという目的は同じです。
まとめ
主キーは、関係データベースの表にある各レコードを一意に識別するために設定します。主キーの値は重複せず、NULLにもなりません。主キー以外の列も検索でき、主キーは他の表の外部キーから参照できます。
解答・解説
正解はエです
この問題のテーマ
関係データベースで主キーを設定する目的を問う問題です。
解き方の考え方
主キーの役割は、表の各レコードを一意に識別することです。検索や算術演算ができるか、他の表から参照できるかとは分けて考えます。この役割に当てはまる選択肢を選びます。
選択肢ごとの解説
- ×ア 算術演算の対象とならないことが明確になる。アの算術演算に関する説明は誤りです。主キーの指定はレコードを識別するためのもので、列に対して算術演算ができるかどうかを決めません。
- ×イ 主キーを設定した列が検索できるようになる。イの検索に関する説明は誤りです。主キー以外の列も検索に使えるため、検索を可能にすることは主キーを設定する理由ではありません。
- ×ウ 他の表からの参照を防止できるようになる。ウの他の表からの参照に関する説明は誤りです。主キーは他の表の外部キーから参照でき、主キーを設定しても参照は防止されません。
- ○エ 表中のレコードを一意に識別できるようになる。エのレコードを一意に識別できるという説明が正しいです。主キーの値は重複せず、NULLにもならないため、その値によって表の各レコードを区別できます。
補足
「主キーにすると検索できる」という選択肢は、検索できることと主キーの目的を取り違えています。他の表から主キーを参照する場合は、参照する側の表で外部キーを使います。
POINT
- 主キーは表のレコードを一意に識別するために設定します。
- 主キーの値は重複せず、NULLにもなりません。
- 主キーは複数の列を組み合わせて設定することもできます。
- 主キー以外の列も検索に使えます。
