スキーマ(schema)は、「データベースの構造」というような意味になります。元々は、「概要」や「大要」といった意味です。
ANSI/SPARC3層スキーマでは、データベースの構造について、概念スキーマ、外部スキーマ、内部スキーマの3層を定義しています。
それぞれの層の説明の例としてよくあげられるのは、概念スキーマについては table 定義、外部スキーマについては view 定義、内部スキーマについては、物理ファイル定義です。
このANSI/SPARC3層スキーマに関して、平成17年度情報処理技術者試験テクニカルエンジニア(データベース)午前試験問題の問21をみてみます。なお、試験問題の全文については、情報処理技術者試験センターのWebサイト http://www.jitec.jp/ にて公開されています。
問21 ANSI/SPARC3層スキーマに関する記述として、適切でないものはどれか。
ア ANSI/SPARC3層スキーマの意義は、物理的データ独立性及び論理的データ独立性を確保することである。
イ 外部スキーマは、実世界が変化しても応用プログラムができるだけ影響と受けないようにするための考え方である。
ウ 関係データベースのビューやネットワークデータベースのサブスキーマは、概念スキーマに相当する。
エ 内部スキーマは、直接編成ファイルやVSAMファイルなどの物理ファイルを用いて、概念スキーマをコンピュータ上に実装するための記述である。
答えは、ウ。
この問題に関連して、わたしが個人的に感じていることをちょっと書いてみます。
アは、物理的データの独立性及び論理的データ独立性についての記述です。理論としてよくみることのある説明です。実際には、物理的データ構造を意識せずに論理的データを扱うことができますが、それはDBMSごとのしくみによって実現されているものがほとんどのように思えます。完全な独立性が確保されるかというと、そうともいえないこともありそうです。
イも理論としてよくみることのある説明です。ただ、実際には、外部スキーマの代表例である view を利用することがそれほど多くはないように思えます。メンテナンスや管理が煩雑になりますし、結局のところ、なんらかの変化がおきた時には応用プログラム(アプリケーションプログラム)にもなんらかの影響が及ぶことがほとんどなので、構造上の複雑さを避けるために外部スキーマを設けないことも多いと感じます。むしろ、応用プログラム(アプリケーションプログラム)が外部スキーマを兼ねているとも感じられます。
エについて、直接編成ファイルやVSAMファイルというと、汎用機やオフコンが思い浮かびます。現在の現役エンジニアの方のうち、何人くらいの方が扱ったことがあるのだろう?と、ふと思いました。ちなみに「内部スキーマは、物理ファイルを用いて、概念スキーマをコンピュータ上に実装するための記述である。」という説明でも、理解できそうな気もします。