本文へ移動
合格ノート.
基本情報技術者試験
← 合格ノート ホーム
記事内の見出し

体系学習

データベースの仕組みを最初から理解する

データを表に整理するところから、主キー・外部キー、正規化、SQL、トランザクションまでを一つの流れとして理解する。

対象資格:ITパスポート / 基本情報技術者試験
目安時間:20分

このページで理解できること

  • データベースとDBMSの違いを説明できる
  • テーブル・レコード・フィールドの関係を説明できる
  • 主キーと外部キーの役割を区別できる
  • 正規化を行う目的を説明できる
  • 選択・射影・結合の違いを説明できる
  • トランザクションが必要な理由を説明できる

基本情報技術者試験:ITパスポート範囲に加え、E-R図、関係モデル、関数従属性、第1〜第3正規形、DDL/DML、SELECT・結合・集約・副問合せ、制約、ロック、デッドロック、障害回復までつなげて理解する。

データベースは、単にデータを保存する箱ではありません。必要なデータを取り出しやすくし、重複や矛盾を減らし、複数の利用者が同時に使っても整合性を保てるように管理する仕組みです。このページでは、学校の受講管理を例に、データを表へ整理してから検索・更新・保全するまでを順番に追います。

まずは全体の流れ

データベースを使うときの考え方を、大きく6段階に分けます。

  1. 必要なデータを整理する

    何を管理したいかを洗い出し、学生・科目・受講などのデータと、その関係を整理します。

  2. 表の形を設計する

    テーブル、レコード、フィールドに分け、主キーや外部キーを決めます。

  3. 重複や矛盾を減らす

    正規化などを使い、同じ事実を不必要に何度も保存しない構造を目指します。

  4. 必要なデータを操作する

    挿入・更新・削除・検索を行います。関係データベースではSQLが代表的な操作手段です。

  5. 複数処理の整合性を守る

    トランザクションや排他制御を使い、途中状態や同時更新による矛盾を防ぎます。

  6. 障害から回復する

    バックアップやログなどを利用し、障害が起きてもデータを復旧できるようにします。

1. データベースとDBMSは同じものではない

データそのものと、それを管理するソフトウェアを分けて考えます。

データベースは、利用しやすい形に整理して保存されたデータの集合です。例えば、学生番号・氏名・所属学科などを体系的に管理したものがデータベースに当たります。

DBMS(データベース管理システム)は、そのデータベースを作成・検索・更新・保護するためのソフトウェアです。利用者やアプリケーションはDBMSを通してデータを操作します。

関係データベースを管理するDBMSはRDBMSと呼ばれます。一方、データを必ずしも表形式だけで扱わないNoSQL系のデータベースもあります。

1. データベースとDBMSは同じものではないの比較表
用語役割
データベース整理されたデータの集合
DBMSデータベースの作成・検索・更新・制御などを行う管理システム
RDBMS関係データベースを管理するDBMS
NoSQL関係モデル以外の方式も含むデータベース群の総称として使われる

2. 表・レコード・フィールドでデータを整理する

関係データベースでは、表の構造を正確にイメージできることが基本です。

関係データベースでは、データをテーブル(表)として扱います。例えば学生テーブルなら、学生一人分の情報が1行にまとまります。

1行分のデータをレコードと呼び、学生番号や氏名のような各列をフィールド(項目)と呼びます。

『表の1行がレコード、表の1列がフィールド』と対応付けておくと、用語を混同しにくくなります。

学生テーブルの例
学生番号氏名学科コード
1001佐藤IT
1002鈴木EE
1003高橋IT
この例では、各行がレコード、学生番号・氏名・学科コードがフィールドです。

3. 主キーと外部キーで「どのデータか」「何とつながるか」を表す

主キーは行を一意に識別し、外部キーは別の表との関係を表します。

主キーは、テーブル内の各レコードを一意に識別するための項目です。学生テーブルで学生番号が重複しないなら、学生番号を主キーにできます。

外部キーは、別のテーブルの主キーなどを参照し、表と表の関係を表すために使います。

例えば学生テーブルに学科コードを持たせ、その値を学科テーブルの学科コードへ対応させれば、『この学生はどの学科に所属するか』を表せます。

3. 主キーと外部キーで「どのデータか」「何とつながるか」を表すの比較表
項目主な役割例
主キー自分の表のレコードを一意に識別する学生テーブルの学生番号
外部キー別の表との関係を表す学生テーブルの学科コード

4. 正規化は「同じ事実を何度も持たない」ために行う

データの重複を減らし、更新時の矛盾が起きにくい表構造を作ります。

一つの表に何でも詰め込むと、同じ情報が何度も現れやすくなります。例えば、受講者ごとに『科目コード・科目名・担当教員名』を毎回保存すると、同じ科目名や担当教員名が繰り返し記録されます。

この状態で科目名を変更すると、複数の行をすべて正しく更新しなければならず、一部だけ古い値が残る可能性があります。

正規化は、データの重複や更新時の矛盾を減らすために表を適切に分割していく考え方です。試験範囲の深さは資格で異なり、ITパスポートでは正規化の必要性を理解することが中心で、詳細な正規化手順は問わないと現行シラバスに明記されています。一方、FEでは第1〜第3正規形や関数従属性まで扱います。

重複が多い表のイメージ
学生番号科目コード科目名担当教員
1001DB01データベース基礎田中
1002DB01データベース基礎田中
1003NW01ネットワーク基礎山田
DB01の科目名や担当教員が受講者ごとに繰り返されています。科目情報と受講情報を適切に分けることで、同じ事実の重複を減らせます。

5. 選択・射影・結合は「どのデータを取り出すか」の違い

ITパスポートではSQL文法そのものより、代表的なデータ操作の意味を押さえることが重要です。

選択は、条件に合う行を取り出す操作です。例えば『学科コードがITの学生だけ』を取り出す操作です。

射影は、必要な列だけを取り出す操作です。例えば学生テーブルから『学生番号と氏名だけ』を取り出します。

結合は、関連する複数の表をつないで必要な情報を得る操作です。例えば学生テーブルと学科テーブルを学科コードで結び、学生名と学科名を一緒に表示できます。

5. 選択・射影・結合は「どのデータを取り出すか」の違いの比較表
操作何を絞る・つなぐか例
選択行IT学科の学生だけ取り出す
射影列学生番号と氏名だけ取り出す
結合複数の表学生表と学科表を学科コードでつなぐ

6. トランザクションは複数の処理を一つのまとまりとして扱う

途中まで成功した状態を残さないことが、データの整合性を守るうえで重要です。

トランザクションは、データベースに対する一連の処理を一つの論理的な処理単位として扱う考え方です。

例えば銀行振込では、『A口座から1万円減らす』だけ成功して『B口座へ1万円増やす』処理が失敗すると、全体として矛盾します。そこで、すべて成功したときだけ結果を確定し、途中で失敗した場合は変更を取り消す必要があります。

トランザクションに求められる代表的な性質はACID特性として整理されます。原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)の4つです。

複数の利用者が同時にデータを更新するときは、排他制御などを利用して互いの処理が不整合を起こさないようにします。

障害が発生した場合に備えて、バックアップやログなどを利用したリカバリも重要です。

6. トランザクションは複数の処理を一つのまとまりとして扱うの比較表
用語考え方
コミット一連の処理結果を確定する
ロールバック処理途中の変更を取り消して整合した状態へ戻す
排他制御同時更新などによる矛盾を防ぐ
リカバリ障害後にデータを回復する

FE深掘り

7. FEではE-R図と第1〜第3正規形まで理解する

FEでは、正規化の必要性だけでなく、依存関係を見て実際に表を分解する考え方まで扱います。

E-R図は、管理対象となる実体(エンティティ)と、それらの関係(リレーションシップ)を表すために使われます。設計段階では、1対1・1対多・多対多などの対応関係を整理します。

正規化では、属性間の関数従属性を手掛かりに、データの重複や更新異常を減らすよう表を分解します。

第1正規形では繰返し項目などをなくして各項目を単一の値として扱える形にし、第2正規形では主キーの一部だけに依存する属性を分離し、第3正規形では主キー以外の属性を経由して依存する属性を分離する、という流れで理解すると整理しやすくなります。

7. FEではE-R図と第1〜第3正規形まで理解するの比較表
段階見るポイント学習上の目安
第1正規形繰返しや複数値を1項目に持っていないか1セル1値として扱える形
第2正規形複合主キーの一部だけに依存する属性がないか部分関数従属を取り除く
第3正規形非キー属性を経由した依存がないか推移関数従属を取り除く

FE深掘り

8. FEではSQLを『目的→構文』で結び付ける

SQLを単語として暗記するのではなく、何をしたいときにどの命令を使うかで整理します。

DDL(データ定義言語)は、テーブルやビューなどデータベースの構造を定義するために使います。DML(データ操作言語)は、格納されたデータを検索・追加・更新・削除するために使います。

SELECTはデータの検索、INSERTは追加、UPDATEは更新、DELETEは削除に使います。FEでは条件指定、表の結合、集約、グループ化、副問合せなども範囲に含まれます。

実際の問題では、テーブル定義やデータを見ながら、SQLを実行するとどの行・列が結果になるかを追えることが重要です。

8. FEではSQLを『目的→構文』で結び付けるの比較表
目的代表的なSQL
表などを定義するCREATE
データを検索するSELECT
データを追加するINSERT
データを更新するUPDATE
データを削除するDELETE

条件に合う行と必要な列を取り出す

sql

SELECT student_id, name
FROM students
WHERE department_code = 'IT';

students表から、department_codeがITの行を選び、student_idとnameの列だけを結果として取り出す例です。

二つの表を結合する

sql

SELECT students.name, departments.department_name
FROM students
JOIN departments
  ON students.department_code = departments.department_code;

students表とdepartments表をdepartment_codeで結合し、学生名と学科名を組み合わせて取り出す例です。

FE深掘り

9. FEでは制約とインデックスの役割も整理する

正しいデータを保つ仕組みと、検索を効率化する仕組みは目的が異なります。

一意性制約、参照制約、非NULL制約などは、データが満たすべきルールをDBMSに持たせ、矛盾した値が入るのを防ぐために使います。

インデックスは、表から必要なデータを探す処理を高速化するための仕組みです。ただし、インデックスを増やせば常に得になるわけではなく、追加の記憶領域や更新時の処理が必要になります。

『制約は整合性を守る』『インデックスは検索効率を高める』と役割を分けて理解してください。

FE深掘り

10. FEではロック・デッドロック・障害回復までつなげる

複数トランザクションの競合と、障害時の復旧方法を区別します。

排他制御では、同じデータを複数のトランザクションが同時に矛盾した形で更新しないよう、ロックなどを利用します。共有ロックと専有ロックのように、読み取りと更新で許可する操作を分ける方式があります。

複数のトランザクションが互いの保持するロックの解放を待ち続け、処理が進まなくなる状態をデッドロックと呼びます。

障害回復では、処理途中の更新を取り消すバックワードリカバリ(ロールバック)と、バックアップ後の更新履歴などを反映して障害発生前へ近づけるフォワードリカバリ(ロールフォワード)を区別します。

10. FEではロック・デッドロック・障害回復までつなげるの比較表
仕組み目的
共有ロック他の読取りを許しながら更新との競合を制御する
専有ロック更新対象を他の処理から保護する
デッドロック互いに資源の解放を待ち続けて処理が進まない状態
ロールバック未確定の変更などを取り消す
ロールフォワードバックアップと更新履歴などを使って復旧を進める

基本情報ではここまでつなげる

  • E-R図の実体・属性・関係とカーディナリティを説明できる
  • 関数従属性を手掛かりに第1〜第3正規形を考えられる
  • DDLとDMLの違いを説明できる
  • SELECT・JOIN・集約・副問合せの基本的な役割を説明できる
  • 主キー・外部キー・各種制約が整合性を守る理由を説明できる
  • 共有ロック・専有ロック・デッドロックを区別できる
  • ロールバックとロールフォワードの違いを説明できる

最後に一本の流れへ戻す

  • 管理したいデータとその関係を整理する
  • テーブル・レコード・フィールドとして設計する
  • 主キーでレコードを識別し、外部キーで表同士を関連付ける
  • 正規化によって重複や更新時の矛盾を減らす
  • SQLなどを使って必要なデータを検索・追加・更新・削除する
  • トランザクションと排他制御で処理の整合性を守る
  • バックアップやログなどを利用して障害から回復する

データベース分野は用語数が多いですが、『設計する→操作する→整合性を守る→回復する』という流れで整理すると、それぞれの技術が何のために存在するのかを判断しやすくなります。

重要用語

理解度チェック

DBMSの役割として最も適切なものはどれか。
関係データベースの表で、1行分のデータを表す用語はどれか。
主キーの主な役割として最も適切なものはどれか。
関係データベースで、条件に合う行を取り出す操作はどれか。
正規化を行う主な目的として最も適切なものはどれか。
一連のデータベース処理を一つの論理的な処理単位として扱う考え方はどれか。
第2正規形で取り除くことを考える依存関係として最も適切なものはどれか。
SQLで既存のデータを更新するときに使う代表的な命令はどれか。
複数のトランザクションが互いに相手の保持するロックの解放を待ち続ける状態はどれか。
バックアップ取得後の更新履歴などを反映し、障害発生前の状態へ近づける回復処理はどれか。