平成21年度 秋期 ITパスポート試験 問84 解説 関係データベースの主キー
関係データベースの主キーに関する記述のうち, 適切なものはどれか。
- ア 関係データベースの各表は, 主キーだけで関係付けられる。
- イ 主キーとして指定した項目は, NULL を属性値としてもつことができる。
- ウ 一つの表において, 主キーとして指定した項目の値に同一のものがあってもよい。
- エ 一つの表において, 複数の項目を組み合わせて主キーとしてもよい。 ✓ 正答
解説
主キーの定義である「重複不可」「NULL不可」「一意性(ユニーク)の保証」という3つの条件を思い浮かべ、各選択肢がこれらに反していないかを確認することで正解を導き出せます。
主キーの重要な3つのルール
関係データベースにおける主キーは、表の中のレコード(行)を特定するための唯一無二の識別子です。主キーとして設定するためには、以下の条件をすべて満たす必要があります。
- 重複不可:同じ列の値を持つレコードが他に存在してはいけない。
- NULL不可:値が空(NULL)であってはならない。
- 一意性の保証:ひとつの値を指定すれば、必ずひとつの行が特定できる。
今回の問題は、このルールを正しく理解しているかを問うものです。
選択肢の判断プロセス
ア:主キーは関係付け(外部キーによる結合など)にも使われますが、他にも候補キーやデータ項目の値などを用いてテーブル同士を関連付けることは可能です。主キーだけが唯一の手段ではないため、この記述は不適切です。
イ:主キーのルールに「NULLは不可」という絶対的な条件があります。識別できなくなるため、NULLを許容することはできません。
ウ:主キーはレコードを特定するための値です。もし同一の値が存在してしまうと、どちらのレコードを指しているのか区別がつかなくなるため、重複は認められません。
エ:単一の項目だけでは一意性を保てない場合、複数の項目を組み合わせることで一意性を確保できます。例えば、「社員番号」単独でキーにできない場合に、「日付」と「社員番号」をセットにして主キーとするケースなどが該当します。これは「複合キー」と呼ばれる手法であり、データベース設計において極めて一般的かつ適切な手法です。
データベース設計における複合キーの意義
実務において、ひとつの列だけでレコードを一意に特定するのが難しいケースは多々あります。たとえば、売上明細テーブルを想像してください。「伝票番号」だけでは複数の商品行を区別できませんが、「伝票番号」と「行番号」を組み合わせれば、その行を確実に特定できるようになります。
ITパスポート試験でこの知識を問う意図は、単なる用語暗記ではなく「データ設計の整合性」を理解しているかを確かめるためです。データベースに格納される情報の信頼性を担保するためには、どの項目をどのように組み合わせれば漏れなく重複なくデータを管理できるかという視点が不可欠です。この「複合キー」という考え方を理解しておくことは、システム開発におけるテーブル定義や、効率的なクエリ作成の基礎となります。