データベーススキーマ:構造と設計アプローチ
データベーススキーマとは、
データベースの構造を定義する設計図のようなものです。
データベース管理システム(DBMS)がデータをどのように格納し、操作するかを規定するもので、
データ辞書に格納され、
データ定義言語(DDL)を使って定義されます。視覚的な表現として、
データベース構造図をスキーマと呼ぶこともあります。
スキーマは、用途に応じて柔軟にカスタマイズできます。例えば、同じデータ要素(属性)であっても、必要な属性だけを選択して複数のスキーマを作成し、複数の
データベースで運用することが可能です。 属性A~Eを持つデータに対し、スキーマ1ではA、C、Eを使用、スキーマ2ではB、D、Eを使用するといったことが考えられます。
三層スキーマ
データベーススキーマを設計する際に用いられる代表的なアプローチとして、三層スキーマがあります。これは、
データベースの構造を複数のレベルに分割し、それぞれのレベルで異なる視点からスキーマを定義する手法です。代表的なものとしては、
概念-論理-物理の3層と、外部-
概念-内部の3層があります。
概念-論理-物理方式
この方式では、
データベース設計を以下の3つのレベルに分けます。
概念スキーマ: データベースに必要となる情報を抽象的に表現します。組織や対象領域における
概念とそれらの間の関係を定義し、
データモデルを用いて表現します。実装技術に依存せず、対象領域の意味論を表現する点が重要です。この段階では、具体的なデータ型や格納方法などは考慮しません。ANSIの三層スキーマアーキテクチャでは、個々の利用者の観点を反映した
概念スキーマを「外部スキーマ」と呼び、それらを統合したものを「
概念スキーマ」と定義しています。
概念スキーマは、
オブジェクト指向における継承の
概念も取り入れることができ、実体クラスの上位・下位関係を定義できます。基本型と
派生型が排他的関係、または網羅的関係にある場合も表現できます。
論理スキーマ: 概念スキーマを基に、特定のデータ管理技術を考慮して
データモデルを記述します。しかし、具体的な
データベース管理製品には依存しません。例えば、
関係モデルであれば表とタプル(行)を用いて記述し、オブジェクトモデルであればクラスを用いて記述します。
概念スキーマとは異なり、データ管理技術の特性をある程度考慮しますが、物理的な実装方法は考慮しません。
*
物理スキーマ: 具体的な
データベース管理システム(DBMS)を用いたデータ格納方法を定義します。データの物理的な格納方法、インデックス、セキュリティなどの詳細を記述します。ANSIの四層スキーマアーキテクチャでは「内部スキーマ」と呼ばれます。論理スキーマでは考慮されなかった、データのストレージへの具体的な格納方法を決定します。
その他の方式
ANSI/X3/SPARC(標準化計画委員会)では、
概念スキーマ、外部スキーマ、内部スキーマの3層スキーマを採用しています。一方、COBOL開発で知られる
CODASYLでは、副スキーマ、スキーマ、記憶スキーマの3層スキーマを用いています。これらの違いは、各スキーマが担う役割(ユーザ視点、論理的な定義、物理的な定義)の解釈の違いによるものです。外部スキーマはユーザの視点からの
データベース定義、
概念スキーマは論理的な定義、内部スキーマは物理的な定義を意味します。
データベーススキーマの理解には、
データモデル、
概念マップ、
オブジェクト関係マッピング、
実体関連モデル、
知識表現、マインドマップ、
オントロジー、セマンティックウェブといった関連
概念の知識が役立ちます。これらの
概念を理解することで、より高度な
データベース設計が可能になります。