マナビングITパスポート

DBMSで検索を速くする仕組みはどれ?4つの用語の役割

ITパスポート試験 令和7年度 問65 / データベース › データベース設計

過去問にチャレンジ

令和7年度 問65

DBMSにおいて,データの検索を高速に行う目的で,必要に応じて設定して利用する情報はどれか。

  1. ア

    インデックス

  2. イ

    外部キー

  3. ウ

    主キー

  4. エ

    スキーマ

会話形式の解説

講師講師
今回はデータベース管理システム、つまりDBMSの用語の問題です。注目してほしいのは「検索を高速に行う目的」と「必要に応じて設定」という2つの言葉です。
受験者受験者
選択肢がどれもデータベースの用語なので迷います。主キーを使えば目的の行がすぐ見つかるので、主キーも検索が速くなるものだと思っていました。
講師講師
そこがつまずきやすいところです。まず、それぞれの主な目的を一言で言えるか確かめてみましょう。主キーは何のためのものでしょうか。
受験者受験者
表の各行を区別するための列、だったと思います。
講師講師
そのとおりです。主キーは表の各行を一意に、つまりただ一つに識別するための列、または列の組合せです。値の重複や空の値であるNULLは認められません。主な目的は行の識別であって、検索の高速化ではありません。
受験者受験者
外部キーも「キー」が付いているので似た役割に見えますが、違うのでしょうか。
講師講師
外部キーは、他の表の主キーを参照する列です。表と表を関連付け、データの整合性を保つための制約です。たとえば、存在しない顧客番号が注文表に登録されるのを防ぐ、といった働きをします。こちらも高速化が目的ではありません。
受験者受験者
スキーマはカタカナで分かりにくいのですが、データベースの構造のことでしたか。
講師講師
はい。スキーマは表・列・データ型など、データベースの構造を定義したもので、設計図にあたります。検索を速くするために設定するものではありません。
受験者受験者
そうすると、残るインデックスが正解ですね。インデックスは具体的にどう速くするのでしょうか。
講師講師
インデックスは日本語で索引です。本の索引のように、列の値とデータの格納場所を対応付けておく補助的なデータ構造です。これがあれば全行を順に調べなくても目的のデータにたどり着けるので、大量のデータを検索するときに特に効果があります。
受験者受験者
整理すると、インデックスは検索の高速化、主キーは行の識別、外部キーは表どうしの関連と整合性、スキーマは構造の定義、ということですね。
講師講師
よくまとまっています。補足すると、インデックスはデータの追加・更新・削除のたびに更新が必要になるので、作り過ぎるとかえって性能が下がります。だから「必要に応じて」設定するわけです。
受験者受験者
最初に主キーで迷ったのは、思い込みだったのですね。
講師講師
実は多くのDBMSでは主キーにインデックスが自動で作られるので、そう思い込みやすいのです。それでも主キー本来の役割は行の識別です。また、スキーマには外部スキーマ・概念スキーマ・内部スキーマの3層があるという考え方も、別の問題でよく出題されるので押さえておきましょう。

まとめ

DBMSで検索を高速化する目的で、必要に応じて設定する情報はインデックス(索引)です。インデックスは列の値とデータの格納場所を対応付ける補助的なデータ構造で、全行を調べずに目的のデータにたどり着けます。主キーは行の一意な識別、外部キーは表どうしの関連付けと整合性の維持、スキーマはデータベース構造の定義が目的です。多くのDBMSで主キーにインデックスが自動作成されるため混同しやすいですが、主キー本来の役割は行の識別です。また、インデックスは更新のたびに保守が必要になるため、作り過ぎると性能が下がる点にも注意が必要です。

解答・解説

正解はアです

この問題のテーマ

データベース管理システム(DBMS)で使われる用語のうち、「検索を速くする目的で、必要に応じて設定する情報」がどれかを問う問題です。インデックス、外部キー、主キー、スキーマの役割をきちんと区別できているかが問われています。

解き方の考え方

まず、問題文のキーワード「検索を高速に行う目的」と「必要に応じて設定」に注目します。次に、各選択肢の主な目的を一言で言えるか確かめます。外部キーは表と表の関連付け、主キーは行の識別、スキーマは構造の定義が主な目的で、いずれも高速化のための仕組みではありません。検索の高速化そのものを目的とする仕組みはインデックス(索引)だけなので、これが正解になります。

選択肢ごとの解説

  1. ○ア  インデックス
    インデックスは、本の索引のように列の値とデータの格納場所を対応付けておく補助的なデータ構造です。これがあると、全行を順に調べなくても目的のデータにたどり着けるため、特に大量のデータを検索するときに効果があります。検索を速くするために必要に応じて設定する情報なので、設問に当てはまります。
  2. ×イ  外部キー
    外部キーは、他の表の主キーを参照する列で、表と表の関連付けやデータの整合性を保つための制約です。たとえば、存在しない顧客番号が注文表に登録されるのを防ぐ、といった働きをします。検索の高速化を目的としたものではありません。
  3. ×ウ  主キー
    主キーは、表の各行を一意に識別するための列(または列の組合せ)です。値の重複や空の値(NULL)は認められません。主な目的は行の識別であり、検索の高速化ではないため、設問の説明には当てはまりません。
  4. ×エ  スキーマ
    スキーマは、表・列・データ型など、データベースの構造や定義を表すものです。データベースの「設計図」にあたるもので、検索を速くするために設定するものではありません。

補足

多くのDBMSでは主キーにインデックスが自動で作られるため、「主キー=検索を速くするもの」と思い込みやすい点に注意してください。主キーの本来の役割はあくまで行の識別です。また、スキーマには外部スキーマ・概念スキーマ・内部スキーマの3層があるという考え方(ANSI/SPARC)も、別の問題でよく出題されます。

POINT

  • インデックス(索引)は、検索を高速化するために作る補助的なデータ構造です。
  • インデックスがあると、全行を調べなくても目的のデータにたどり着けるので、大量データの検索で特に効果があります。
  • インデックスはデータの追加・更新・削除のたびに更新が必要になり、作り過ぎるとかえって性能が下がります。
  • 外部キーは表どうしの関連と整合性を保つもの、主キーは行を一意に識別するもの、スキーマはデータベースの構造を定義するものです。

※出典:令和7年度 ITパスポート試験 問65