平成21年度 秋期 ITパスポート試験 問98 解説 主キーの定義
図1の取引先担当者表のレコードを一意に特定するための主キーとして, 適切なものはどれか。
- ア 取引先コード ✓ 正答
- イ 取引先コード, 名前
- ウ 取引先コード, 部署名
- エ 名前, 役職
解説
主キーとは、表の中のレコード(データ1行分)を一つに絞り込むための識別子です。この問題では、重複せず、かつ空値(null)にならない項目を探すことが正解への近道となります。
主キーに求められる2つの条件
データベース設計における主キーには、主に2つの重要な性質が求められます。
- 一意性(ユニーク性):テーブル内のどのレコードを見ても、その値が重複しないこと。
- 最小性:特定の行を特定するために必要な最小限の項目の組み合わせであること。
例えば「名前」という項目は、同姓同名の人がいれば重複が発生するため、単独では一意性を保証できません。一方で「取引先コード」は、システム上で各取引先を管理するためにユニークに発行される値であることが前提であるため、そのレコードを特定するための最も適切なキーとなります。
選択肢の絞り込み方
今回の選択肢を検証すると、なぜ他の選択肢が不適切なのかが見えてきます。
イの「取引先コード」と「名前」を組み合わせた場合、確かに一意にはなり得ますが、すでにある「取引先コード」だけで一意性が確保できているため、余計な「名前」を組み合わせることはデータベース設計の観点(最小性)から好ましくありません。
ウの「取引先コード」と「部署名」も同様で、1つの取引先に複数の部署がある場合や、1つの部署しか存在しない場合など、データの内容によって一意性の保証が揺らいだり、冗長になったりします。
エの「名前」と「役職」は、同姓同名で同じ役職の人が同じ会社にいる可能性を排除できず、主キーとしての信頼性がありません。
このように、単独の項目ですべての行を識別できる場合は、それを選び、余計な項目を付加しないのがデータベース設計の鉄則です。
データベース設計が現場で意味すること
実際の業務システムにおいて、主キーを正しく設定することは非常に重要です。もし主キーの設定が不適切で、重複する可能性のある項目を主キーに設定してしまうと、プログラムが誤ったデータを取得したり、データの更新時にどの行を直せばよいか分からなくなったりする不具合が発生します。
また、システム開発の現場では、人間が使う「氏名」や「部署名」などは変更される可能性があるため、これらを主キーにするのは避けるべきとされています。そのため、今回のように「コード」や「ID」といった、意味を持たない識別用の番号を主キーにする設計が広く採用されています。この問題は、単なる知識の暗記ではなく、データ整合性を保つための論理的な設計手法を問うています。