スキーマ (データベース)

スキーマ（schema）とは、データベースの構造であり、データベース管理システム (DBMS) でサポートされている形式言語で記述される。関係データベースでは、スキーマは関係 (表) と関係内の属性 (フィールド) 、属性や関係の関連の定義である。
スキーマは一般にデータ辞書に格納される。スキーマはテキストによるデータベース言語のデータ定義言語 (DDL) で定義されるが、グラフィカルにデータベース構造を表したものをスキーマと呼ぶことも多い。
用途によって属性 (フィールド) をカスタマイズして作られる。
例えばひとつの実体にA～Eまでの属性が定義されていて、スキーマ1にはA、C、Eの属性を定義、スキーマ2にはB、D、Eを定義し、2種類のデータベースで運用しているようなことも実現できる。
三層スキーマ.
三層スキーマ（）にはいくつかタイプがある。例えば概念-論理-物理の3つに分けるものや、外部-概念-内部の3つに分けるものがある。
概念-論理-物理　方式.
概念スキーマ.
概念スキーマ（英: Conceptual schema）とは、データベースに必要な情報をデータモデルによって抽象化し、その抽象化した概念と概念間の関係を定義した記述である。対象となる組織の意味論を説明し、その性質について一連の論理的表明を表す。特に、組織（実体クラス）の有意なものと、それに付随する情報、特性（属性）、それらのものの間の関連を説明する。
組織の意味論を表すものであってデータベース設計ではないため、その抽象レベルは様々である。ANSIの三層スキーマアーキテクチャでは、各利用者独自の観点を反映した概念スキーマを「外部スキーマ」と呼ぶ。逆にそれらを集約したものが「概念スキーマ」であるとされる。データモデルは各利用者の観点では固定的であり、それだけでは柔軟性に欠ける傾向がある。その個人の世界観が変われば、モデルも変更を余儀なくされる。概念スキーマはより抽象的で、本質的である。
概念スキーマには、オブジェクト指向で言う継承に相当するものもある。ある実体クラスのインスタンスの集合は、適当な下位の実体クラスに分類できる。従って、ある下位の実体クラスのインスタンスは、上位の実体クラスのインスタンスでもある。上位の実体クラスのインスタンスは、何らかの下位の実体クラスのインスタンスでもある。
基本型/派生型関係は「排他的関係」の場合もある。方法論的に、ある基本型のインスタンスがどれか1つの派生型のインスタンスでなければならない場合もある。同様に網羅的関係の場合もある。網羅的な場合、ある基本型のインスタンスは必ず何らかの派生型のインスタンスでなければならない。
論理スキーマ.
論理スキーマ（英: Logical schema）とは、対象領域について特定のデータ管理技術を前提として記述されるデータモデルである。ただし、特定のデータベース管理製品に依存することなく、例えば関係モデルなら関係 (表) と組 (タプル、行) 、オブジェクトモデルならクラス、あるいはXMLタグなどを用いて記述する。概念スキーマが実装技術を全く考慮せずに組織の意味論を記述するのとは対照的である。
データベースを作成する場合、論理スキーマを作成した後は、そこから物理スキーマを作成する。
物理スキーマ.
物理スキーマ（英: Physical schema）とは、特定のデータ管理技術の観点で記述されるデータモデルである。ANSIの四層スキーマアーキテクチャでは「内部スキーマ」と呼ぶ。論理スキーマはデータの論理的表現を定義するが、この段階では具体的にストレージ (補助記憶装置) にデータがどのように格納されるかといった部分は考慮されていない。物理スキーマは、個別のデータベース管理製品におけるデータ格納を具体的に定義する。
その他の方式.
ANSI/X3/SPARC（SPARCはStandards Planning And Requirements Committee:標準化計画委員会のこと）では、概念スキーマ、外部スキーマ、内部スキーマの3層スキーマを用いている。汎用機で用いられることが多いCOBOLを開発したCODASYLにおいては副スキーマ、スキーマ、記憶スキーマの3つとしている。
外部スキーマはユーザから見たデータベースの定義、概念スキーマは論理的な定義、内部スキーマはデータベースの物理的な定義を意味する。