最終更新日:2026年7月20日
fe fe-technology database
まず結論
スキーマとは、
データの性質・形式・表同士の関係などを定義した、データベースの設計図
です。
基本情報技術者試験では、次のように切り分けます。
設計図
→ スキーマ
利用者向けの仮想表
→ ビュー
検索・追加・更新・削除
→ SQL
一貫性を守るルール
→ 整合性制約
また、3層スキーマは次の対応で覚えます。
利用者からの見え方
→ 外部スキーマ
データベース全体の論理構造
→ 概念スキーマ
記憶装置への格納方法
→ 内部スキーマ
直感的な説明
社員情報を管理するデータベースを考えます。
社員表
├─ 社員番号:整数
├─ 氏名:文字列
├─ 部署番号:整数
└─ 入社日:日付
さらに、社員表の部署番号と部署表の部署番号を関連付けます。
社員表の部署番号
↓
部署表の部署番号
このような、
- 表名
- 列名
- データ型
- 主キー
- 外部キー
- 表同士の関係
- 制約
をまとめたものがスキーマです。
住宅にたとえるなら、次のように考えられます。
スキーマ
→ 設計図
表
→ 実際の部屋
データ
→ 部屋に置かれた家具
定義・仕組み
スキーマに含まれるもの
RDBMSのスキーマには、主に次のような定義が含まれます。
| 項目 | 例 |
|---|---|
| 表 | 社員表、部署表 |
| 列 | 社員番号、氏名、部署番号 |
| データ型 | INTEGER、VARCHAR、DATE |
| 主キー | 社員番号 |
| 外部キー | 部署番号 |
| 制約 | NOT NULL、UNIQUE、CHECK |
| 関係 | 社員表と部署表の関連 |
SQLでは、たとえば次のように表を定義します。
CREATE TABLE 社員 (
社員番号 INTEGER PRIMARY KEY,
氏名 VARCHAR(50) NOT NULL,
部署番号 INTEGER,
FOREIGN KEY (部署番号)
REFERENCES 部署(部署番号)
);
このSQL文はスキーマそのものではなく、スキーマを定義するための命令です。
スキーマと表の違い
スキーマは表そのものではありません。
スキーマ
→ 表や列、関係、制約を定義した設計
表
→ その設計に従ってデータを格納する場所
たとえば、
氏名は文字列である
→ スキーマ
氏名は「山田太郎」である
→ データ
です。
3層スキーマ
ANSI/SPARCの3層スキーマでは、データベースの定義を次の3段階に分けます。
| スキーマ | 視点 | 主な内容 |
|---|---|---|
| 外部スキーマ | 利用者からの見え方 | 利用者ごとのデータ範囲、ビュー |
| 概念スキーマ | データベース全体の論理構造 | 表、列、主キー、外部キー、関係 |
| 内部スキーマ | 物理的な格納方法 | ファイル構造、インデックス、物理配置 |
外部スキーマは、サブスキーマと呼ばれることもあります。
覚え方は次のとおりです。
外部
→ どう見えるか
概念
→ どう構成されるか
内部
→ どう保存されるか
このテーマは基本情報技術者試験のデータベース分野に含まれます。公式の出題範囲は、IPA:基本情報技術者試験から確認できます。
科目Aでどう出る?
試験では、スキーマそのものの定義だけでなく、似た用語との違いが問われます。
ビューとの違い
ビューは、実表をもとに作られる仮想的な表です。
CREATE VIEW 営業部社員 AS
SELECT 社員番号, 氏名
FROM 社員
WHERE 部署番号 = 10;
利用者から見ると表のように扱えますが、通常は元の表のデータを参照します。
仮想表
利用者ごとの見せ方
必要な行や列だけ表示
→ ビュー
ビューは、外部スキーマを実現する手段の一つと考えられます。
SQLとの違い
SQLは、RDBMSを定義・操作するための言語です。
| 操作 | SQL文 |
|---|---|
| 検索 | SELECT |
| 追加 | INSERT |
| 更新 | UPDATE |
| 削除 | DELETE |
| 表の定義 | CREATE TABLE |
したがって、
スキーマ
→ 定義された構造
SQL
→ 構造の定義やデータ操作を行う言語
です。
整合性制約との違い
整合性制約は、不正なデータが登録されないようにするルールです。
代表例は次のとおりです。
- 主キー制約
- 外部キー制約
- NOT NULL
- UNIQUE
- CHECK
たとえば、存在しない部署番号を社員表に登録させない仕組みは、外部キー制約で実現できます。
整合性制約はスキーマに含まれる定義の一部ですが、スキーマ全体と同じ意味ではありません。
選択肢を切る判断表
| 選択肢の表現 | 用語 |
|---|---|
| データの性質・形式・関連の定義 | スキーマ |
| 実表ではない仮想的な表 | ビュー |
| 挿入・更新・削除・検索 | SQL |
| 一貫性を保つための制約 | 整合性制約 |
| 利用者ごとの見え方 | 外部スキーマ |
| データベース全体の論理構造 | 概念スキーマ |
| 記憶装置への格納方法 | 内部スキーマ |
試験中は、次の順番で判断します。
1. 「仮想表」ならビュー
2. 「性質・形式・関連の定義」ならスキーマ
3. 「検索・追加・更新・削除」ならSQL
4. 「一貫性を守る制約」なら整合性制約
5. 「利用者・論理構造・物理格納」で3層を切り分ける
どんな場面で使う?
データベース設計
システム開発では、まずどのようなデータを管理するかを整理します。
顧客
注文
商品
在庫
そのうえで、表・列・データ型・関係・制約を設計します。
この設計内容がスキーマです。
アプリケーション開発
アプリケーションは、スキーマに従ってデータを保存・検索します。
たとえば、社員番号が整数として定義されているなら、アプリケーション側でもその型に合う値を扱います。
権限に応じた見せ方
利用者ごとに必要な情報だけを見せる場合、ビューを使って外部スキーマを構成できます。
一般社員
→ 氏名、部署名だけ見える
人事担当者
→ 氏名、住所、給与も見える
よくある誤解・混同
スキーマはデータそのもの
違います。
スキーマは構造やルールであり、実際の値はデータです。
スキーマは表だけを定義する
表だけではありません。
列、データ型、主キー、外部キー、表同士の関係、制約なども含みます。
ビューとスキーマは同じ
違います。
ビューは仮想表です。スキーマはデータベース構造全体の定義です。
SQLとスキーマは同じ
違います。
SQLは、スキーマを定義したり、データを操作したりするための言語です。
整合性制約がスキーマそのもの
整合性制約はスキーマの一部です。
スキーマ
├─ 表
├─ 列
├─ データ型
├─ 関係
└─ 整合性制約
概念スキーマと内部スキーマを混同する
- 概念スキーマ:データの意味や関係をどう整理するか
- 内部スキーマ:データを記憶装置へどう格納するか
E-R図・表定義・正規化
→ 概念スキーマ
ファイル編成・インデックス・物理配置
→ 内部スキーマ
まとめ(試験直前用)
- スキーマは、データベース構造を定義した設計図
- 表、列、データ型、関係、制約などを含む
- ビューは、実表をもとにした仮想表
- SQLは、データベースを定義・操作する言語
- 整合性制約は、一貫性を守るためのルール
- 外部スキーマは見え方、概念スキーマは論理構造、内部スキーマは物理格納
- 整合性制約はスキーマの一部だが、スキーマ全体ではない
覚える一文はこれです。
スキーマは設計図、ビューは見せ方、SQLは操作する言語、制約はルール。