1.1.2. データベースの3層スキーマアーキテクチャ

1. 概要

 データベースの3層スキーマアーキテクチャは、データベース設計の基本的な概念です。このアーキテクチャは、データベースを3つの異なる層(スキーマ)に分けることで、データの独立性を確保し、柔軟性と保守性を向上させます。

 3層スキーマアーキテクチャは、以下の層で構成されています:

  1. 外部スキーマ(ユーザー固有のビュー)
  2. 概念スキーマ(データベース全体の論理構造)
  3. 内部スキーマ(データの物理的な格納方法)

 この構造を理解することは、効率的なデータベース設計と管理において非常に重要です。

2. 詳細説明

2.1. 外部スキーマ(副スキーマ)

 外部スキーマは、ユーザーやアプリケーションから見たデータの定義を表します。特定のユーザーグループやアプリケーションが必要とするデータベースの一部分を記述し、異なるニーズに応じたカスタマイズされたビューを提供します。

 特徴:

  • ユーザーやアプリケーション固有のビュー
  • データの論理的な表現
  • 必要な情報のみを提供し、不要な詳細を隠蔽  :財務部門は従業員の給与情報のみが必要である一方、人事部門は全ての従業員情報が必要です。外部スキーマを利用することで、部門ごとに異なるビューを提供し、必要な情報だけを表示できます。

2.2. 概念スキーマ

 概念スキーマは、データベース全体の論理的な構造を表します。これは、全てのデータエンティティやその関係を定義し、組織全体のデータモデルを一元的に管理します。概念スキーマは、複数の外部スキーマを統合したビューを提供します。

 特徴:

  • データベース全体の論理構造の基礎
  • エンティティ、属性、関係を定義
  • データの整合性と制約を管理  :従業員や部署、給与情報を一つのデータベースで統合し、エンティティ間の関係を管理することで、データの整合性を保ちます。

2.3. 内部スキーマ(記憶スキーマ)

 内部スキーマは、データの物理的な格納方法を定義します。これは、データベースの実装の詳細を記述し、効率的なデータアクセスと格納を実現します。内部スキーマは、ファイル構造やインデックス、アクセス方法などの物理的なストレージに関する情報を管理します。

 特徴:

  • 物理データモデルの基礎
  • ファイル構造、インデックス、アクセス方法を定義
  • ストレージの最適化に関連  :従業員テーブルはB-treeインデックスを利用し、従業員IDでクラスタ化されることで、データアクセスの効率が向上します。

3. 応用例

3.1. データ独立性の実現

 3層スキーマアーキテクチャは、論理的データ独立性と物理的データ独立性を実現します。

  • 論理的データ独立性:概念スキーマの変更が外部スキーマに影響を与えない
  • 物理的データ独立性:内部スキーマの変更が概念スキーマに影響を与えない  例えば、新しいフィールドをテーブルに追加しても、既存の外部スキーマに影響を与えず、新しいビジネス要件に対応できます。

3.2. データベース管理システム(DBMS)の実装

 多くのDBMSは3層スキーマアーキテクチャを採用しています。以下のようなシステムがその例です:

  • Oracle Database
  • Microsoft SQL Server
  • PostgreSQL  これらのシステムでは、ビュー(外部スキーマ)、テーブル定義(概念スキーマ)、物理的なストレージ構造(内部スキーマ)が明確に分離されており、管理の柔軟性が向上しています。

4. 例題

例題1

 ある企業の人事データベースにおいて、3層スキーマアーキテクチャの各層を具体的に説明してください。

回答例:

  1. 外部スキーマ:
  • 人事部門用ビュー:従業員ID、氏名、部署、給与情報
  • 経理部門用ビュー:従業員ID、氏名、給与情報、税金控除額
  1. 概念スキーマ:
  • 従業員テーブル:従業員ID、氏名、生年月日、住所、入社日、部署ID
  • 部署テーブル:部署ID、部署名、所在地
  • 給与テーブル:従業員ID、基本給、手当、控除額
  1. 内部スキーマ:
  • 従業員テーブルの物理的格納:B-treeインデックスを使用し、従業員IDでクラスタ化
  • 給与テーブルの物理的格納:月次パーティショニングを適用

例題2

 3層スキーマアーキテクチャにおいて、概念スキーマを変更した場合、どのような影響があるか説明してください。

回答例:
 概念スキーマの変更(例:新しい属性の追加)は、以下の影響を与える可能性があります:

  1. 外部スキーマへの影響:
  • 論理的データ独立性により、既存の外部スキーマは影響を受けない
  • 新しい属性を利用するために、必要に応じて新しい外部スキーマを作成または既存のものを更新
  1. 内部スキーマへの影響:
  • 物理的なストレージ構造の変更が必要になる可能性がある(例:新しい列の追加)
  • インデックスの再構築や最適化が必要になる場合がある
  1. アプリケーションへの影響:
  • 既存のアプリケーションは影響を受けないが、新しい属性を利用するためにはアプリケーションの更新が必要

5. まとめ

 データベースの3層スキーマアーキテクチャは、以下の重要な概念を包含しています:

  1. 外部スキーマ:ユーザーやアプリケーション固有のデータビュー
  2. 概念スキーマ:データベース全体の論理構造を表す論理データモデル
  3. 内部スキーマ:データの物理的な格納方法を定義する物理データモデル  このアーキテクチャにより、データの独立性が確保され、柔軟性と保守性が向上します。各スキーマの役割と相互関係を理解し、実際のデータベース設計や管理にどのように適用されるかを把握することが重要です。