【データベース】変更に強い設計の極意!3層スキーマ構造の正体|情報処理問題1000本ノック
データベース設計の基本でありながら、最高の知恵が詰まった「3層スキーマ構造」。なぜわざわざ3つに分けるのか。それは、一部を変更しても他に影響を与えない「データ独立性」を確保するためです。
1. 問題:管理対象を定義するスキーマ
【 問題 】 データベースの3層スキーマ構造において、データの論理的な構造(管理対象の全体像)を定義し、開発者や管理者の視点からデータの本質を表現するスキーマはどれでしょうか?
① 外部スキーマ ② 概念スキーマ ③ 内部スキーマ ④ 物理スキーマ
2. 正解:スキーマの役割に関する正解
正解: ② 概念スキーマ
3. 解説:保守性を高める「3つの境界線」
役割ごとに境界線を引くことで、ある層の変更が他の層へ波及するのを防ぎます。これを「データ独立性」と呼び、システムの保守性を劇的に高めます。
[ 3層スキーマの役割 ]
・外部スキーマ(見せ方):ユーザーやアプリが見る窓口。実務では「ビュー(VIEW)」に相当。
・概念スキーマ(論理):データの全体像。実務では「テーブル定義(CREATE TABLE)」やER図に相当。
・内部スキーマ(持ち方):物理的な保存方法。実務ではインデックスやファイル配置に相当。
[ データ独立性のメリット ]
★ 物理的データ独立性:ストレージの変更やインデックスの追加(内部)を行っても、テーブル定義(概念)やプログラムを直す必要がない。
★ 論理的データ独立性:テーブルを分割(概念)しても、ビュー(外部)を調整すれば、アプリ側のプログラムを一切修正せずに済む。
・外部スキーマ(見せ方):ユーザーやアプリが見る窓口。実務では「ビュー(VIEW)」に相当。
・概念スキーマ(論理):データの全体像。実務では「テーブル定義(CREATE TABLE)」やER図に相当。
・内部スキーマ(持ち方):物理的な保存方法。実務ではインデックスやファイル配置に相当。
[ データ独立性のメリット ]
★ 物理的データ独立性:ストレージの変更やインデックスの追加(内部)を行っても、テーブル定義(概念)やプログラムを直す必要がない。
★ 論理的データ独立性:テーブルを分割(概念)しても、ビュー(外部)を調整すれば、アプリ側のプログラムを一切修正せずに済む。
1. 理解のコツ: 概念スキーマが「本質」であり、それをどう見せるかが「外部」、どう保存するかが「内部」です。真ん中の概念スキーマがしっかりしているからこそ、両サイドの変化を吸収できるのです。
2. 試験対策の視点: 試験では「ビュー=外部スキーマ」「テーブル=概念スキーマ」という対応関係がよく問われます。また、ANSI/X3/SPARC(アンシ・スパーク)という用語と一緒に登場することもあるので、セットで覚えておきましょう。
4. まとめ
「ある層の変更を、その層だけで完結させる」。これが3層スキーマ構造の最大の価値です。この構造を理解しておくことで、保守性が高く、変化に強いデータベース設計の基礎をマスターできます!
PR