データベース平成16年問21
問 題
データベースの3層スキーマアーキテクチャに関する記述として、適切なものはどれか。
ア 概念スキーマは、内部スキーマと外部スキーマの中間に位置し、
エンティティやデータ項目相互の関係に関する情報を持つ。
イ 外部スキーマは、概念スキーマをコンピュータ上に具体的に実現
させるための記述であり、データベースに対して、ただ一つ存在する。
ウ サブスキーマは、複数のデータベースを結合した内部スキーマの
一部を表す。
エ 内部スキーマは、個々のプログラム又はユーザの立場から見たデ
ータベースの記述である。
解 説
難易度 ★★解答
ア 概念スキーマは、内部スキーマと外部スキーマの中間に位置し、
エンティティやデータ項目相互の関係に関する情報を持つ。
長 池「今回はデータベースの問題をやってみよう。
データベースが苦手だなっていう人は、参考書でも最初に出てくる
概念的なことが分からないっていうことが多いんだよね。」
ユウト「3層スキーマとかデータモデルとかですよね。
わたしも苦手です。」
長 池「今日は、その3層スキーマについて見てみよう。
3層っていうぐらいだから、3つの層に分かれているんだなって
いうのは分かるよね。」
ユウト「はい。」
長 池「3層スキーマは、概念スキーマ、外部スキーマ、内部スキーマと
呼ばれるんだ。
スキーマとは、データ構造や各データの関連などを記述した情報
のことだよ。」
ユウト「抽象的ですよね。分かりにくい。」
長 池「一つずつ例を挙げながら説明していくから、しっかり理解しよう。」
ユウト「はい。よろしくお願いします。」
長 池「まずは、概念スキーマからいくよ。
概念スキーマの定義は、『対象となる外界の事象を抽象化したもので、
内部スキーマと外部スキーマの中間に位置し、両者を結び付ける拠り所
となる。』
例を挙げようね。
企業内で導入されるデータベースの構造は、その目的によって、
大きく異なることになるけど、たとえば、売上情報を管理する
データベースを例にとって考えてみようか。
商品の売上がどの顧客の注文によって発生したものかを知るために、
顧客情報が必要になるよね。
また、その顧客がどの商品を注文したかを管理する必要があるので、
自社の商品情報も必要となる。
概念スキーマで、顧客情報、商品情報、売上情報の実体型と関連型を
ER図などで明確にし、各情報の項目を列挙して、SQL-DDLの
CREATE SCHEMA文やCREATE TABLE文によって定義するんだ。
ユウト「なるほど。」
長 池「次に外部スキーマを説明するね。
外部スキーマの定義は、『ユーザまたはプログラムからみた
データベースの記述』のことだよ。
外部スキーマは、データベースを有効利用するために必要となる
アプリケーションが、実際にデータベースを利用する際に用いる
ビューのことで、SQL-DDLのCREATE VIEW文によって定義するよ。
ユウト「ビューって聞いたことあります。」
長 池「最後に内部スキーマだね。
内部スキーマとは、『記憶装置名やファイル編成方式、ファイルに
対するアクセス方法、データ内部の表現形式、ブロック長やレコ
ード長、ファイルサイズ、空き領域サイズなど、物理データベース
の構成方法を記述すること』だよ。
内部スキーマは、ハードディスクなどの記憶装置からの視野に立って
概念スキーマを見るとともに、これを実際に記述するものと
言えるね。」
ユウト「分かりやすく、例を挙げて説明してくださって、
ありがとうございます。」
長 池「本当に理解しているかな?」
ユウト「ち、ちょっと自信がありません。」
長 池「それじゃ、実際に問題を解いてごらん。」
ユウト「はい。
選択肢アは、概念スキーマの説明の通りですね。
これが正解でしょうか?」
長 池「理解することが大切だから、他の選択肢も見てみよう。」
ユウト「はい。
選択肢イは、概念スキーマをコンピュータ上に具体的に実現させる
ための記述ってありますね。
これって、内部スキーマのことですよね。」
長 池「おぉ。そうだね。じゃ、選択肢ウに行ってみよう。」
ユウト「選択肢ウは、サブスキーマなんていう用語が出てきて、
よく分かりません。」
長 池「サブスキーマとは、CODASYLが定義している外部スキーマのこと
だね。」
ユウト「選択肢エは、個々のプログラム又はユーザの立場から見たデータベース
の記述ってありますね。これは、外部スキーマのことですね。」
長 池「そうだね。
3層スキーマそれぞれに、キーワードがあるのが分かったかな。」
ユウト「えぇ。ちょっとまとめてみますね。
概念スキーマ:内部スキーマと外部スキーマの中間
ER図
外部スキーマ:ユーザまたはプログラムからみたデータベースの記述
ビュー
内部スキーマ:物理データベースの構成方法の記述
概念スキーマをコンピュータ上に具体的に実現
させるための記述」
長 池「うん。良くできたね。」
◇CODASYL とは。。。
Conference on Data System Languagesの略で、
データシステムズ言語協議会と訳されます。1959年に設立され、COBOLや
データベース言語の研究開発を行いました。
そのCODASYLは3層スキーマを以下のように定義しています。
概念スキーマをスキーマ、外部スキーマをサブスキーマ、内部スキーマを
記憶スキーマ。