この記事では、「スキーマ」の意味、「3層スキーマ」の考え方、スキーマ言語について考察します。

一般的には馴染みのない「スキーマ」ですが、プログラマーやエンジニアには基本的なIT用語です。

ビジネスには関係ないと思う人もいるかもしれません。しかし、IT時代の今、「スキーマ」の意味を理解しておくことも大切です。
この記事を通して、「スキーマ」の意味を理解し、ビジネスパーソンとしての知識アップにお役立てください。

スキーマとは

「スキーマ」は、英語では「図式」「図解」「概要」の意味になります。

「スキーム」と同じ意味として解釈されることもありますが、「スキーム」が完成された図式や概念を意味するのに対し「スキーマ」の方は概念的な意味合いが強くなります。

「スキーマ」は、哲学の概念や心理学の心象など幅広い分野で使われています。

認知心理学では、人間の認知過程を説明する際に用いられる概念のひとつが、「スキーマ」です。

例えば、「タイヤが4つ」「ドア」「ハンドル」「座席」「鉄の塊」という言葉から、「自動車」を連想するでしょう。これは、人は車に対して体系的な知識を持っているからです。

この体系的な概念が「スキーマ」です。

一般的に「スキーマ」という言葉が、多く使われるのがデータベースの世界です。

データベースにおけるスキーマとは

データベースとは、一定の形で整理されたデータの集まりのことで、電話帳や辞書などもデータベースです。

しかし、デジタル時代では、コンピュータに保存されたデータの意味で使われることが多くなっています。
「スキーマ」もデジタル化されたデータベースに関係する言葉です。

データベースにおける「スキーマ」とは、データベースの構造のことで、データの種類や大きさ、他のデータとの関連など「メタデータ」を定義したものです。

「メタデータ」とは、データに関する「付帯情報」が記載されたデータで、「データのためのデータ」と呼ばれています。
例えば、個々のデータに作者や作成日などの情報が記載されていれば、データの管理はしやすくなりますね。

スキーマの場合は、要素や関連性などの抽象的な定義で記載されます。

パソコンのOSは、ファイルの種類や目的、所有者などに分類して複数のディレクトリー(フォルダ)に保存しますが、スキーマは、このディレクトリーのようなものです。

OSの場合、データは階層化されて格納されますが、データベースのスキーマは階層化されません。

どのような種類のデータをどのような構造で格納するのかを定義したのが、データベースのスキーマです。

データベースを管理方法として「RDB(リレーションデータベース)」がありますが、スキーマはこのRDB上で使用されます。
RDBの製品としてはOracle、MS Access、MS SQL Server、MySQLなどの製品が有名です。

データベースのスキーマは、抽象度に応じて複数のスキーマを用いることがあります。

その代表的なのが「3層スキーマ」で、データベースを3つの階層に分けて定義するという考え方です。

例えば、人を「頭」「体」「心」の3つに分けたとします。頭は、「何を考えているか?」体は、「何ができるか」心は「何を感じるか」を言うことで、その人を説明することができるでしょう。

「3層スキーマ」は、階層の分け方によって2つのタイプがあります。

3層スキーマの考え方①:外部・概念・内部に分ける場合

一般的によく使われるのが、「外部」「概念」「内部」の3つのスキーマを用いる方法です。

外部スキーマ

「外部スキーマ」は、ユーザーやアプリケーション側から見たデータベースの構造を定義するスキーマのことです。データのビューや出力データなどを意味します。ビューを変更してもデータ格納の構造は変わりません。

概念スキーマ

「概念スキーマ」は、データベース上の論理で、開発者から見たデータベースと言えるものです。データの要素やデータ同士関係を定義します。
データベースにテーブルを作成するための設計図です。

内部スキーマ

「内部スキーマ」は、概念スキーマで定義されたデータを具体的にどう格納するかを定義するものです。ハードウェア的な変更はここで吸収します。

なぜわざわざ3層に分けるかというと、3層に分けていればひとつのスキーマに変更があっても、残りの2つには影響しないからです。
開発の現場では、使用などの変更はつきものです。その都度データベース全体に影響があっては、時間ばかりかかってしまいます。

3層スキーマの考え方で設計していれば、ビューやハードウェアを変更せずにデータベースの保守や運用が効率的におこなえます。

3層スキーマを設計する場合は、まず概念スキーマで理論設計をして、外部スキーマでユーザーインターフェイスを決め、内部スキーマで内部データの格納方法を定義する、という工程でおこなうのが一般的です。

3層スキーマの考え方②:概念・論理・物理に分ける場合

もうひとつの3層スキーマは、「概念」「論理」「物理」の3つに分ける考え方です。

概念スキーマ

「概念スキーマ」は、考え方①と同様に、データの要素やデータ同士の関係を定義するものです。
特に、組織の有意なものと、それに付随する情報や特性、属性の関連を説明するものです。

論理スキーマ

「理論スキーマ」は、概念スキーマで定義されたものを、どうような関係や属性で収納するかを定義するものです。概念スキーマが実際の技術などを考慮しないで定義するのとは対照的に、理論スキーマは特定のデータ管理技術を前提にして記述します。

物理スキーマ

「物理スキーマ」は、理論スキーマで定義されたものを具体的にどのように格納・管理するかを定義し、データの記録方法を指示したものです。個別のデータベース管理製品において具体的な格納を定義します。

これら2つの3層スキーマの考え方は似ていますが、それぞれ微妙な役割の違いがあります。

「スキーマ言語」とは

「スキーマ言語」は、XMLやSGMLなどのマークアップ言語を用いる際に、要素や属性を定義するための言語です。

「マークアップ言語」とは、データの中に特定の記号を入れこむもので、ホームページなどを作る際に使われるHTMLなどがあります。

例えば、HTMLで見出しを作る際には、「<h1>見出し<h1>」のようにタグを入れて設定します。このような設定をすることで、見栄えの良いホームページの画面が出来るのです。

マークアップ言語には、タグを入れるだけでなく、バイナリー中に埋め込むタイプなどさまざまなものがあります。

HTMLがWeb上のマークアップ言語であることに対して、XMLはマシンに情報をわかりやすくするためのものです。ビジネスでのデータ管理にはよく使われています。

しかし、マークアップ言語は、特定の記号を記述するだけで、要素の名前や属性などは定義していません。

例えば、社員名簿などの場合、名前や性別、役職、年齢などタグを使って記述できますが、どのような構造にするかは定義できません。
スキーマ言語を使うことで、書き方のルールなどが明確になるのです。

まとめ スキーマについてのおさらい

  • 「スキーマ」は、英語では「図式」「図解」「概要」の意味。
  • データベースにおけるスキーマは、データの種類や大きさ、他のデータとの関連などメタデータを定義したもの。
  • 3つの階層に分けて定義するという「3層スキーマ」という考え方があります。
  • 3層スキーマは、「外部」「概念」「内部」と「概念」「論理」「物理」の2つの考え方があります。
  • 「スキーマ言語」は、マークアップ言語を用いる際に、要素や属性を定義するための言語。