令和5年度 ITパスポート試験 公開問題 問78 解説 関係データベースの主キー
関係データベースの主キーの設定に関する記述として,適切なものだけを全て挙げたものはどれか。 a 値が他のレコードと重複するものは主キーとして使用できない。 b インデックスとの重複設定はできない。 c 主キーの値は数値でなければならない。 d 複数のフィールドを使って主キーを構成できる。
- ア a, c
- イ a, d ✓ 正答
- ウ b, c
- エ b, d
解説
この問題は、データベース設計における主キーの性質を正しく理解しているかを問うものです。主キーの決定的なルールである「重複不可(一意性)」と「空値不可(非NULL)」を軸に、各選択肢を判断します。
aが正しい理由 主キーの最大の目的は、テーブル内の各レコードを唯一無二のものとして特定することです。もし同じ値を持つレコードが複数存在してしまうと、特定の1行を指定できなくなります。したがって、値が重複する可能性のある項目を主キーに設定することはできません。
dが正しい理由 主キーは必ずしも1つの列(フィールド)でなければならないという決まりはありません。複数の列を組み合わせて、その組み合わせでレコードを特定できるならば、それを主キーに設定できます。これを複合キーと呼びます。例えば、「部署コード」と「社員番号」をセットにすることで、会社全体で唯一の社員を識別するようなケースです。
なぜ他の選択肢は誤りなのか bについて:主キーを設定すると、データベース管理システム(DBMS)は自動的にその項目に対して検索を高速化するためのインデックスを作成します。したがって、インデックスとの重複設定ができないのではなく、むしろ主キーを設定すれば自動的にインデックスが付与されるというのが正しい理解です。
cについて:主キーは数値である必要はありません。英数字や文字列なども使用可能です。例えば、社員番号に「A001」「A002」といった文字列を使う場合でも、それらが重複せず、空でない限りは主キーとして機能します。
実務における主キーの考え方 データベース設計において主キーを選ぶ際は、将来にわたって値が変わらないものを選ぶのが原則です。例えば、氏名は重複する可能性があるため主キーには適さず、また電話番号も変更される可能性があるため、一般的には連番や固定の識別コード(ID)を主キーとして割り振ることが推奨されます。この知識はデータベースの設計図であるE-R図を作成する問題や、SQLでのテーブル定義を問う問題でも頻出します。