データベースの3層スキーマは、情報システムのデータ管理の構造と組織を3つの異なる視点でモデル化する方法を示しています。これにより、物理的なデータの実際の配置とアプリケーションやユーザーのデータの見方との間の独立性が保たれます。
-
外部スキーマ (External Schema):
- 定義: 外部スキーマは、終端ユーザーや特定のアプリケーションのためのデータベースのビューを提供します。
- 特徴: この層は、システムの複数のユーザーが求める異なるデータの表示やアクセス方法を定義します。一つのデータベースには、多くの外部スキーマが存在することができます。
- 目的: 終端ユーザーやアプリケーションが必要とするデータの形式や表示方法をカスタマイズして提供します。
-
概念スキーマ (Conceptual Schema):
- 定義: 概念スキーマは、データベースの全体的な論理的構造を示しています。
- 特徴: この層は、データベース内のすべてのエンティティ、関連、制約などの論理的な構造と関係を定義します。物理的な詳細や特定のユーザーのビューは無視されます。
- 目的: データの論理的構造と組織を中立的な視点で表現し、データの整合性と意味を維持します。
-
内部スキーマ (Internal Schema):
- 定義: 内部スキーマは、データが物理的にストレージ上にどのように格納されるかを示しています。
- 特徴: この層は、物理的なデータの配置、インデックスの使用、アクセスパス、データの物理的な表現などの実際のデータの格納方法を定義します。
- 目的: データの効率的な格納とアクセスを実現するための物理的な詳細を管理します。
この3層スキーマのアプローチの利点は、物理的なデータの構造の変更がアプリケーションのロジックやユーザーのビューに影響を与えることなく行える独立性を提供することです。
なぜ、3層に分けるのか?
3層スキーマに分ける理由は、データベースの設計、実装、および運用における多くの課題と要件を効果的に対処するためです。具体的には、以下のような利点や目的が挙げられます:
-
独立性の確保:
- 物理的・論理的独立性: 3層スキーマのアプローチを使用すると、データの物理的な格納方法の変更がアプリケーションやユーザービューに影響を与えることなく行えるようになります。この独立性は、データベースの物理的な変更や最適化を容易にし、アプリケーションの変更を最小限に抑えます。
- 外部・概念的独立性: ユーザーやアプリケーションが必要とするビューを、データベースの全体的な構造から独立して定義できます。
-
柔軟性: 組織の要件や状況が変わるにつれて、データの物理的な格納方法や特定のユーザービューを変更する必要が生じることがあります。3層スキーマは、これらの変更を柔軟に対応できるようにしています。
-
抽象化: 3層スキーマは、データベースの複雑さを異なるレベルの抽象化で管理します。これにより、異なる利害関係者(例: DBA、アプリケーション開発者、エンドユーザー)が、それぞれの関心事に焦点を当てて作業を進めることができます。
-
セキュリティ: 外部スキーマを使用することで、ユーザーやアプリケーションがアクセスできるデータの部分を制限することができます。これにより、不要なデータへのアクセスを防ぐことができ、セキュリティを向上させることができます。
-
整合性: 概念スキーマでは、データベース全体の論理的構造を定義します。これにより、データの整合性、関連性、および制約を一貫して管理することができます。
このような利点を考慮すると、3層スキーマは、データベースの設計と管理の複雑さを取り扱う上で非常に効果的な方法と言えます。