三層スキーマ (サンソウスキーマ) とは | 意味や読み方など丁寧でわかりやすい用語解説
三層スキーマ (サンソウスキーマ) の読み方
日本語表記
三層スキーマ (サンソウスキーマ)
英語表記
Three-tier schema (スリーティアスキーマ)
三層スキーマ (サンソウスキーマ) の意味や用語解説
三層スキーマとは、データベースの構造を、利用者の視点、データベース全体の論理的な構造、そして物理的な格納方法という三つの異なる視点から定義する枠組みのことである。これは、データベースシステムの設計において、利用者の要求やデータの物理的な配置が変わっても、その影響が他の部分に波及するのを最小限に抑え、システムの保守性や柔軟性を高めることを主要な目的としている。これにより、データベースを利用するアプリケーションや個々のユーザーは、データが実際にどのように保存されているか、あるいはデータベース全体の詳細な構造を知ることなく、自分に必要な情報にアクセスできるようになる。 三層スキーマは、その名の通り「外部スキーマ」「概念スキーマ」「内部スキーマ」という三つの階層から構成される。それぞれの層は特定の役割を持ち、互いに独立性を保ちながら、連携してデータベースシステム全体を機能させる。 まず「外部スキーマ」は、最も利用者に近い層であり、特定のユーザーやアプリケーションから見たデータの構造を定義する。この層は、データベース全体の中から、その利用者グループやアプリケーションが必要とする情報のみを抽出し、それらの利用者にとって最も分かりやすい、カスタマイズされた形式で提供する。例えば、ある経理部門のユーザーは顧客の購買履歴や支払い状況に焦点を当てた情報を、別の営業部門のユーザーは顧客の基本情報や連絡先に焦点を当てた情報を見る、といった具合である。外部スキーマは、複雑なデータベース構造を利用者から隠蔽し、見せる情報と見せない情報を区別することで、データのアクセス制御やセキュリティを向上させる役割も持つ。そのため、異なる利用者のニーズに応じて複数の外部スキーマが存在することも一般的である。 次に「概念スキーマ」は、データベース全体の論理的な構造を定義する層である。これは、特定の利用者からの視点や物理的な格納方法に依存しない、データベースが保持するすべてのデータ、それらの間の関係性、データに対する制約、そしてデータの一貫性を保つためのルールなどを抽象的に表現する。現実世界に存在するオブジェクトや事象(例えば、顧客、商品、注文など)と、それらの間の関連性(顧客が商品を注文する)を、データモデル(多くの場合、リレーショナルモデル)を用いて記述する。概念スキーマは、データベース管理者がシステム全体のデータ構造を把握し、一貫性を維持するための基盤となる。この層の定義は、データの意味論的な側面、つまり「このデータは何を意味するのか」「他のデータとどのように関連しているのか」を明確にする。 最後に「内部スキーマ」は、データベースが物理的にどのようにストレージに格納されるかを定義する層である。この層は、データのファイル構造、レコードの物理的な配置、インデックスの利用方法、データの圧縮方法、データアクセスの最適化戦略など、パフォーマンスを最大化するための詳細な物理情報を扱う。データベース管理システム(DBMS)がデータを効率的に読み書きするために必要な情報がすべて含まれる。一般の利用者はこの層の存在を意識することはなく、概念スキーマや外部スキーマを通じてデータにアクセスする。内部スキーマの定義は、ディスクI/Oの回数を減らす、検索速度を向上させるなど、具体的なシステム性能に直結する。 これらの三つの層が独立して機能することで、三層スキーマは「データ独立性」という大きなメリットをシステムにもたらす。データ独立性には「論理的データ独立性」と「物理的データ独立性」の二種類がある。 論理的データ独立性とは、概念スキーマの変更が、外部スキーマやそれを利用するアプリケーションに影響を与えないことを指す。例えば、データベース全体の構造を示す概念スキーマに新しい項目を追加したり、既存の項目の定義を一部変更したりした場合でも、外部スキーマの定義を変更しなければ、その外部スキーマを利用しているアプリケーションは修正する必要がない。これは、外部スキーマが概念スキーマの変更から保護されるためである。この独立性により、既存のアプリケーションに大きな影響を与えることなく、データベース構造を拡張したり、一部を変更したりできる柔軟性が生まれる。 物理的データ独立性とは、内部スキーマの変更が、概念スキーマや外部スキーマ、そしてそれらを利用するアプリケーションに影響を与えないことを指す。例えば、データベースの物理的な格納方法(データのファイル形式の変更、インデックスの追加や削除、ストレージデバイスの変更など)を変更した場合でも、概念スキーマの定義はそのまま維持され、外部スキーマやアプリケーションは何も変更する必要がない。これは、データベース管理システムが内部スキーマと概念スキーマの間のマッピングを自動的に管理するためである。この独立性により、パフォーマンス改善のために物理的な格納方法を変更しても、アプリケーションのコードを修正する必要がなくなり、システムの運用・保守が非常に容易になる。 三層スキーマの導入は、こうしたデータ独立性の実現を通じて、データベースシステムの保守性を大幅に向上させる。ある層での変更が他の層に波及する範囲を限定できるため、システムの進化や要件の変化に柔軟に対応できる。また、異なる利用者やアプリケーションに対してカスタマイズされたビューを提供することで、開発効率の向上やセキュリティの強化にも寄与する。この考え方は、現代のリレーショナルデータベース管理システム(RDBMS)においても、その設計思想の根幹として深く根付いており、データベースシステムの堅牢性と柔軟性を確保するための重要な概念として認識されている。