データベースのスキーマ(schema)って何だろう?

基本情報技術者

データベースを学習していると「スキーマ」って言葉が出てきます。言葉としてはよく聞くのですが、ちょっと捉えどころが無い言葉ので、今回はこのスキーマを調べてみました!

データベースの概念や構造?

スキーマとはwikiで調べると「データベースの構造であり、データベース管理システム (DBMS) でサポートされている形式言語で記述される。」とあります。すごく簡単に言うとデータベースの設計図のようなものですね。

データベースの設計自体は別の記事で解説してますが、「概念設計、論理設計、物理設計」で完成する設計図がそれぞれ「概念スキーマ、外部スキーマ、内部スキーマ」に対応するようですね。

3層で構成されているので、「3層スキーマアーキテクチャ」と呼びます。

3層スキーマ構造

それぞれのスキーマを図でまとめてみました。

スキーマのイメージ

外部スキーマ
概念スキーマで定義された論理データから必要なデータを取り出したものです。利用者が目に見える形である「ビュー」などに相当します。ビューをいじってもデータ格納構造(概念スキーマ)が変わりことはありません。
概念スキーマ
データベース上の論理データです。データベースに保持するデータの要素およびデータ同士の関係を定義します。「テーブル定義書」などに相当します。
内部スキーマ
概念スキーマで定義された論理データを具体的にどのようにDBMS内部に格納するかを定義します。「ハードウェア的」な変更はこのスキーマで影響を吸収します。

スキーマを3つの階層に分ける理由として、あるひとつのスキーマを変更した場合に他の2つのスキーマへは干渉(影響)しないようにするために分けているようですね。

システムにおける性能を上げるためにデータベースをチューニングすることはよくあります。テーブル定義を変えることになった場合でも、スキーマが干渉し合わないため、ビューやハードウェア側を考慮しないで済むので、データベースの運用・保守をするにあたって非常に効率的ですね。

まとめ

今回はデータベースのスキーマに関してまとめてみました。

スキーマとは」データベースの設計図(定義書)のイメージと捉えれば良いですね。

それぞれの3層スキーマが他の層に干渉しないようにしていることで、データベースの変更のインパクトを吸収するということが大事なのですね。

以上です!

参考サイト)
PostgreSQLではじめるDB入門

タイトルとURLをコピーしました