DB設計 - スキーマについて

達人に学ぶDB設計を読んだので学んだ内容をまとめます。

DB設計とは?

データベース設計とは、アプリケーションで扱いたい事柄をデータベースで管理できるように、それら事柄を抽象化してデータモデルを作成していく作業です(データモデリング)。

データモデルは「スキーマ(Schema)」という概念から成り、データベース設計というのはこのスキーマを設計することである、と言えます。

それでは、このスキーマとは何でしょうか?

スキーマ

スキーマとは、英単語では「図」「図式」「計画」と言った意味がありますが、データベースにおいても似たような意味で「データ構造」「データのフォーマット」という意味合いで使われます。

このスキーマは、対象となるデータを扱う層によって3つに分けられ、それぞれを

と呼び、総称して3層スキーマと呼びます。

外部スキーマ

外部スキーマとは、Viewから見えるデータ構造を定義するものです。つまり、アプリケーションのUI部分から入出力されるデータについてのスキーマで、ユーザから見えるデータについての定義、とも言えます。

概念スキーマ

概念スキーマとは、開発者から見えるデータ構造を定義するもので、データ同士の関係やデータの要素を定義します。また、テーブルを作成するための設計図(テーブル定義書)になります。この概念スキーマの設計を「論理設計」と呼ぶこともあります。

ちなみに、ここでいう論理とは、常用語での論理の意味とは違い、「物理的制約にとらわれない」と言った意味になります。例えば、DB設計ではサーバのCPUスペックだったりストレージの配置だったり、パフォーマンスや安全性などの面から物理的な事柄を考慮する必要がありますが、それら物理的な要素を排除して考えることを「論理」という言葉で表します。

内部スキーマ

内部スキーマとは、概念スキーマで定義されたデータモデルを具体的にどのようにデータベース(DBMS)内部に格納するかを定義するものです。開発者からは見えませんが、データベースで扱うデータは最終的にはファイルという形で管理されるので、ファイルに関する定義とも言えます。

概念スキーマの論理設計と対比して内部スキーマの設計を「物理設計」とも呼びます。

ここまでで3層スキーマについて書きましたが、図で表すと↓のような感じです。

今回はデータベース設計とは、スキーマとは、ということをまとめました。ここまでお読みいただきありがとうございました。