平成22年度 春期 ITパスポート試験 問83 解説 関係データベースの主キー
関係データベースにおいて主キーを指定する目的はどれか。
- ア 主キーに指定した属性(列)で,複数のレコード(行)を同時に特定できるようにする。
- イ 主キーに指定した属性(列)で,レコード(行)を一意に識別できるようにする。 ✓ 正答
- ウ 主キーに指定した属性(列)に対し,検索条件を指定できるようにする。
- エ 主キーに指定した属性(列)を算術演算の対象として扱えるようにする。
解説
主キーの役割を見抜くポイント
関係データベース(RDB)における「主キー」の役割は、ただ一つ「その行が何者であるかを特定すること」です。問題文に「主キー」「識別」「一意(重複がないこと)」というキーワードが並んでいれば、それが正解の根拠になります。逆に、「複数」「検索」「演算」といった機能は主キー固有の目的ではありません。
主キー(Primary Key)とは何か
主キーとは、データベースのテーブル内で、特定のレコード(行)を他と区別して特定するための識別子のことです。
RDBのテーブルはエクセルの表のような形をしていますが、同じようなデータが並んでいる場合、何らかの目印がなければ、システムはどれがどのデータなのかを区別できません。例えば、同じ名前の社員が複数いた場合、「佐藤太郎」という名前だけで検索すると、複数のレコードがヒットしてしまいます。そこで、社員番号のような「絶対に重複しない値」を主キーに設定することで、特定の個人をピンポイントで特定できるようにします。
主キーには以下の2つの重要な制約があります。
- 一意性制約:同じテーブル内で同じ値を持つレコードが存在してはならない。
- 非ヌル制約(Not Null):空(NULL)の状態を許してはならない。
誤った選択肢を排除する思考プロセス
各選択肢を検討する際、主キーの定義と照らし合わせるとスムーズです。
ア:複数のレコードを同時に特定することは主キーの役割ではありません。主キーはあくまで「一つのレコード」を特定するためのものです。 イ:これが正解です。一意に識別できる=そのテーブルのその行を一意に特定できる、という意味になります。 ウ:検索は主キー以外の項目(氏名や部署名など)でも可能です。検索ができること自体は主キーの機能ではありません。 エ:主キーは識別するための記号のような役割が強いため、必ずしも算術演算(足し算や掛け算など)の対象とは限りません。例えば社員番号が「A001」などの英字を含んでいれば演算はできません。
データベース設計における意義
この知識は、実際にシステム開発を行う際の「データモデル設計」において不可欠です。例えば、顧客管理システムを構築する際、顧客テーブルの主キーを「名前」にしてしまうと、同姓同名の顧客が入社した瞬間にシステムが混乱します。そのため、実務では「顧客ID」のようなシステム内部でのみ通用する、絶対に重複しない連番などを主キーに設定します。
試験では、この「データの整合性を保つために、どのように行を区別するか」というデータベース設計の基礎概念が問われています。主キーが設定されていないテーブルは、データの追加・修正・削除を行う際に「意図しない行」を操作してしまう危険性が高く、RDBとしては非常に不安定な状態となります。