ITパスポート試験 / 平成22年度 春期 ITパスポート試験 / 問93
certification-simodake-work

平成22年度 春期 ITパスポート試験 問93 解説 データベースの主キー

文献システムのデータベース構造の記述として,適切なものはどれか。

  1. ア 貸出表の主キーは,文献番号と社員番号の組合せである。
  2. イ 貸出表の主キーは,文献番号,社員番号と貸出日の組合せである。 ✓ 正答
  3. ウ 社員表と貸出表の主キーは,社員番号である。
  4. エ 文献表と貸出表の主キーは,文献番号である。

解説

主キーを特定するポイント

データベースにおける主キーは、表の中の各データを一意に(重複なく)識別するための項目です。この問題では、ある社員が同じ文献を「別の日」に借りる可能性を考慮します。もし「文献番号」と「社員番号」だけで主キーを作ってしまうと、同じ人が同じ本を2回借りたときにデータが重複し、システム上で区別できなくなります。そのため、いつ貸し出したかという「貸出日」を組み合わせることで、レコードの一意性を確保します。

重複を許さないための組み合わせ

データベースの設計では、ある行(レコード)を特定するために必要な最小限の情報の組み合わせを主キーに選びます。

貸出表のような「誰が・何を・いつ」という関係性を表す表では、以下の事象が起こり得ます。

  • 同じ人が別の本を借りる(社員番号は同じだが文献番号が違う)
  • 別の人が同じ本を借りる(文献番号は同じだが社員番号が違う)
  • 同じ人が同じ本を別の日に借りる(社員番号も文献番号も同じだが貸出日が違う)

これらすべてを網羅して、データが「どの貸出記録なのか」を特定するには、3つの項目の組み合わせが必要になります。これが「複合主キー」という考え方です。

なぜ他の選択肢では不十分なのか

アの選択肢は、前述の通り「同じ本を借り直した場合」に対応できません。ウやエの選択肢にある「社員表の主キーは社員番号」「文献表の主キーは文献番号」は正しいですが、「貸出表」の主キーもそれらと同じになるという主張が誤りです。

貸出表は、社員表と文献表を紐付ける「中間テーブル」としての役割を持っています。中間テーブルでは、親となる表(社員表や文献表)から持ってきた外部キーを組み合わせ、さらにその貸出というイベントを特定するための情報(貸出日など)を加えることで、一意なレコードを作成します。

データベース設計における重要性

この知識は、実際に業務システムを開発する際のデータベース設計(ER図の作成など)で直結するスキルです。

例えば、図書館のシステムや店舗の販売管理システムを想像してください。もし主キーの設計を誤ると、過去の貸出履歴が上書きされてしまったり、履歴の集計ができなくなったりする不具合が発生します。実務では、データが「いつ・誰によって・何が」行われたのかというトランザクション(取引)の整合性を保つために、主キーの選定は極めて重要です。試験においても、こうした「業務上の運用ルールから主キーを導き出す」という視点は、頻出かつ重要な概念です。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう