通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典【簡易表示】

スキーマ (schema)

pointこの用語のポイント

point何かの構造だよ

pointうまく説明できないや。ごめんね


スキーマ (schema)とは

何かの「構造」を指す用語だけど、分かりやすく説明できないや。ごめんね。

です。
image piyo
何かの「構造」を意図した表現が「スキーマ」です。

例えば、XMLファイルの構造を定義したファイルがあるとします。
このファイルの書き方ルールを「スキーマ言語」と呼んだりします。
※「XMLファイル」や「スキーマ言語」がどんなものか知りたい人は、用語「スキーマ言語」の説明をご覧ください。

とはいえ、ITの分野で「スキーマ」という用語が頻繁に登場するのは、データベース関連でしょう。
このページをご覧になっているあなたも、データベースのお勉強中ではないですか?

データベースの分野におけるスキーマ、それは「データベースの構造」です。

分かります、分かりますよ。

だから「データベースの構造」ってなんだよ!

ですよね?

それはですね~。う~ん。

まずは、データベース全体で考えてみましょう。

世の中には「データベースの構造を3つに分けて定義しましょう」な考え方があります。
このやり方を「3層スキーマ三層スキーマ)」と言います。

分け方はいくつかありますが、

・外部スキーマ
・概念スキーマ
・内部スキーマ


の3つに分ける考え方と

・概念スキーマ
・論理スキーマ
・物理スキーマ


の3つに分ける考え方が有名です。

ここまでの説明がよく分からない方は、データベースを「ピヨ太君」に置き換えて考えてみましょう。

スキーマ

ピヨ太君という人間(?)がどんなやつかを説明したいとします。
ですが、ピヨ太君はとっても奥ゆかしいやつです。
とても一言では説明できません。

そこで、ピヨ太君の要素を3つに分けて説明することにしました。
その3つとは

・頭
・身体
・心


の3つです。

スキーマ2

頭は、ピヨ太君が「何を考えるか」の部分です。
身体は、ピヨ太君が「何をできるか」の部分です。
心は、ピヨ太君が「何を感じるか」の部分です。

ピヨ太君の頭、身体、心がどうなっているかをそれぞれ説明することによって、ピヨ太君という人間(?)がどんなやつかを説明できるでしょう。

3層スキーマも同じ考え方です。

データーベースがどんなものかを一言で定義するのは大変です。
そこでデーターベースの要素を3つに分けて、それぞれを定義することによって、全体を定義しようと考えました。
それが3層スキーマです。

はい、ここまでで「スキーマ」という単語がいっぱい出てきましたね。
ここまでに登場した「スキーマ」は、すべて「構造」と読み替えて結構です。

データベースの構造を3つに分けて定義しような「3層構造」という考え方があります。
3つの分け方は「外部構造」「概念構造」「内部構造」や「概念構造」「論理構造」「物理構造」と分けるのが有名です。


ちゃんと意味は通じますよね?

さて、ここまではデータベース全体のお話でした。

次に個々のデータベースについて見ていきます。
ただし、ここまでに説明したスキーマの説明は、一旦忘れてください。

それでは個々のデータベースのお話です。

データベースにはいろいろな種類があります。
有名どころは、OracleSQLServerMySQLPostgreSQLMicrosoft Accessなどでしょうか。

データベースによって「スキーマ」と呼ばれる概念を持っているデータベースと持っていないデータベースがあります。

2015年11月現在の状況ですが、Oracle、SQLServer、PostgreSQLには、スキーマと呼ばれる概念があります。
MySQL、Microsoft Accessには、スキーマと呼ばれる概念はありません。

Oracle、SQLServer、PostgreSQLで出てくる「スキーマ」は、それぞれ、似てはいますが微妙な違いがあります。

まず、Oracleにおけるスキーマですが……うんちゃらかんちゃら。
ごめんなさい。
それぞれのスキーマの意味を説明し始めると長ったらしくなってしまうので、ここでは書くのを止めておきます。

まとめるとですね。

Oracleの話で「スキーマ」という用語が出てきます。
SQLServerの話でも「スキーマ」という用語が出てきます。
PostgreSQLの話でも「スキーマ」という用語が出てきます。

そして、先ほども説明した通り、データベースの概念的な話でも「スキーマ」という用語が出てきます。

すべて同じ「スキーマ」という用語です。
ですが、それぞれが指し示すものは少し違います。

ですから、お勉強する際には気を付けてください。

Oracleのスキーマを勉強しているときに、SQLServerのスキーマの説明を読んでしまうと、間違って覚える可能性があります。
データベース固有のスキーマを調べているときに、概念としてのスキーマの説明を読んでしまうと、混乱するでしょう。

繰り返しになりますが「スキーマ」という用語が具体的に何を示すかは、分野によって微妙に異なります。
おそらくですが、IT用語辞典系の情報では、適切な情報を拾い上げるのは難しいと思います。
Oracleの話であればOracleの専門書、SQLServerの話であればSQLServerの専門書、「その分野における」スキーマの意味を調べるのが良いでしょう。

まぁ「スキーマ」って単語が出てきたら「何かの構造なんだな~」と思えばOKです。