基本情報技術者試験 無料問題 1 / 10 ・ 分野1: 科目A テクノロジ系
あるシステムで、検索を速くするために表の格納先のディスクを分け、索引を追加した。表の論理的な構造と利用者向けの表の見え方は変えていないため、表を使う業務プログラムは書き換えずにそのまま動いた。業務プログラムが影響を受けなかった理由の説明として、適切なものはどれか。
- 業務プログラムの中に、ディスクの割当てと索引の構造を定義する文を埋め込んでいる
- 物理的な構造を表す内部スキーマが、論理的な構造を表す概念スキーマと分けられている
- 利用者から見たデータを表す外部スキーマが、論理的な構造を表す概念スキーマと分けられている
- 業務プログラムが必要とする列を取り出すビューを定義し、表そのものは直接参照させていない
正解と解説を見る
正解: B
正解の理由
3層スキーマでは、データを外部スキーマ(利用者やプログラムから見た定義)・概念スキーマ(論理的な構造)・内部スキーマ(物理的な構造)の3層に分ける。ディスクの割当てや索引は内部スキーマの事柄で、概念スキーマと分けてあるので、変えても概念スキーマとその上の外部スキーマは変わらない。業務プログラムは外部スキーマを通してデータを扱うため、書き換えが要らない。これを物理的なデータの独立性という。
違う選択肢
「利用者から見たデータを表す外部スキーマが、論理的な構造を表す概念スキーマと分けられている」… 外部スキーマと概念スキーマの分離が効くのは、表の論理的な構造(列の追加や表の分割)を変えたときである。設問で変えたのは格納先と索引という物理的な構造で、効いているのは内部スキーマの分離である。
「業務プログラムが必要とする列を取り出すビューを定義し、表そのものは直接参照させていない」… ビューは外部スキーマを作る手段で、表の列の追加など論理的な変更から業務プログラムを守る。ビューが無くても、格納先や索引の変更は内部スキーマの中で済むので業務プログラムに影響しない。
「業務プログラムの中に、ディスクの割当てと索引の構造を定義する文を埋め込んでいる」… 物理的な構造をプログラムに持たせると、格納先や索引を変えるたびにプログラムも書き換えることになる。独立性とは逆の状態で、設問の結果(そのまま動いた)を説明できない。
対比
データの独立性は2種類ある。内部スキーマを変えても概念スキーマが変わらないのが物理的な独立性、概念スキーマを変えても外部スキーマが変わらないのが論理的な独立性である。何を変えたか(物理か論理か)を見れば、どの層の分離が効いたかが決まる。