2-3 データベース

最終更新 2026-07-22内容の作り方 →

データベース

データベースは、業務で扱うデータを一定のルールで蓄積し、矛盾を抑えながら検索・更新できるようにする仕組みです。ITパスポートでは、表の用語を覚えるだけでなく、主キーと外部キーの役割、表を分ける理由、複数処理を安全に完了させる方法を判断する問題が出題されます。

この節の目標は、業務データを関係データベースとして整理し、選択・射影・結合、正規化、トランザクション、障害回復の考え方を具体例から説明できるようになることです。

1. データベースとDBMSの役割

用語 内容 役割
データベース 一定の構造で整理されたデータの集合 顧客、商品、注文などを蓄積する
DBMS データベースを管理するソフトウェア 検索、更新、権限、同時実行、回復を制御する
RDBMS 表形式の関係データベースを管理するDBMS 行と列、キー、表同士の関係を扱う
NoSQL 表形式以外も含む柔軟なデータモデル KVS、文書指向、グラフ指向などがある

表計算ファイルでもデータは保存できますが、多人数が同時に更新する業務では、整合性、アクセス権、検索性能、障害回復などをDBMSで管理する利点があります。

2. 表・行・列・キーを区別する

用語 意味 注文管理の例
テーブル 同じ種類のデータをまとめた表 顧客表、商品表、注文表
レコード 1件分のデータ 1人の顧客、1件の注文
フィールド データの項目 顧客名、商品番号、数量
主キー レコードを一意に識別する項目 顧客番号、注文番号
外部キー 別表の主キーを参照する項目 注文表の顧客番号
インデックス 検索を速くするための索引 顧客名や注文日の検索を高速化する

主キーは各行を一意に識別するため、同じ値を重複させません。外部キーは別の表との関係を示し、存在しない顧客番号を注文表へ登録させないなど、参照整合性を守るために使います。

3. 完全ケース:注文データを表に分ける

次の情報を1枚の表へ保存しているとします。

注文番号 注文日 顧客番号 顧客名 顧客住所 商品番号 商品名 単価 数量
O1001 7月1日 C01 山田商店 東京 P10 ノート 200 5
O1002 7月2日 C01 山田商店 東京 P20 ペン 100 10

このままでは、山田商店の住所を変更するとき、該当する全行を修正しなければなりません。一部だけ更新すると住所が矛盾します。

そこで次のように分けます。

  • 顧客表:顧客番号、顧客名、住所
  • 商品表:商品番号、商品名、単価
  • 注文表:注文番号、注文日、顧客番号
  • 注文明細表:注文番号、商品番号、数量

顧客名や住所は顧客表に一度だけ保存し、注文表から顧客番号で参照します。商品名や単価も商品表で管理します。これにより重複を減らし、更新時の矛盾を防ぎます。このように表を適切に分ける考え方が正規化です。

4. データ操作を目的で選ぶ

ITパスポートでは、細かなSQL文法より、どの操作が何をするかが重要です。

操作 内容
選択 条件に合う行を取り出す 東京の顧客だけを抽出する
射影 必要な列を取り出す 顧客名と住所だけを表示する
結合 複数表を関連付けて表示する 注文表と顧客表を顧客番号で結ぶ
挿入 新しい行を追加する 新規顧客を登録する
更新 既存の値を変更する 顧客住所を変更する
削除 行を取り除く 取消済みの一時データを削除する

「東京の顧客名だけを表示する」なら、東京という条件で行を選択し、顧客名の列を射影します。「注文番号と顧客名を一緒に表示する」なら、注文表と顧客表を結合します。

5. トランザクションで処理を一つにまとめる

トランザクションは、関連する複数の処理を一つのまとまりとして扱う考え方です。

銀行口座Aから口座Bへ1万円を振り込む場合、次の二つが両方成功しなければなりません。

  1. 口座Aの残高を1万円減らす。
  2. 口座Bの残高を1万円増やす。

途中で障害が起きて片方だけ反映されると、全体の残高が合わなくなります。そこで全処理が成功したときに確定し、失敗したときは処理前へ戻します。

ACID特性 意味 振込での例
原子性 全て実行するか、全て取り消す 出金と入金を片方だけ残さない
一貫性 処理前後でルールを守る 残高合計や制約を崩さない
独立性 同時処理が互いに不正な影響を与えない 同じ口座の更新を適切に制御する
永続性 確定した結果を失わない 完了した振込を障害後も保持する

6. 同時実行と障害回復

複数の利用者が同じデータを同時に更新すると、一方の更新結果が上書きされる可能性があります。排他制御は、必要なデータを一時的に他の処理から更新できないようにし、整合性を守ります。

ただし、複数の処理が互いに相手の解放を待つと、デッドロックが発生します。DBMSは待ち時間や処理の取消しなどによって解消します。

障害回復では次の考え方を使います。

  • ロールバック:未完了の処理を取り消し、処理前の状態へ戻す。
  • ロールフォワード:バックアップ後の更新記録を再適用し、障害直前へ近づける。
  • チェックポイント:回復処理を始める基準点を記録する。

バックアップだけでなく、更新履歴や回復手順が必要です。

7. データ品質を整えて活用する

業務データを分析する前に、表記揺れ、欠損、重複、誤入力を確認します。データクレンジングは、こうした不整合を修正・除去し、分析に使える品質へ整える作業です。

例えば「東京都」「東京」「Tokyo」が同じ地域を表しているのに別々に集計されると、分析結果を誤ります。コード体系を決め、入力規則を統一し、元データを修正します。

データの活用では次の順序を意識します。

  1. 目的を明確にする。
  2. 必要なデータを洗い出す。
  3. 品質を確認し、クレンジングする。
  4. 適切な単位で集計・分析する。
  5. グラフなどで可視化する。
  6. 結果を業務判断へつなげる。

8. よくある誤りと理由

  • 主キーと外部キーを同じと考える:主キーは自表の行を識別し、外部キーは別表との関係を示します。
  • 正規化は表を一つにまとめることだと考える:重複と更新矛盾を減らすため、適切に表を分けます。
  • 選択と射影を混同する:選択は行、射影は列を取り出します。
  • バックアップがあればトランザクション不要と考える:処理途中の整合性はトランザクションと排他制御で守ります。
  • SQL文法だけを暗記する:試験では操作の目的と結果を判断することが重要です。
  • データ量が多ければ価値が高いと考える:品質が悪いデータは誤った判断につながります。

9. セルフチェック

  • 行を一意に識別する項目はどれか。
  • 別表との関係を示す項目はどれか。
  • 条件に合う行、必要な列、複数表の関連のどれを求めているか。
  • 複数処理が全て成功する必要があるか。
  • 同時更新、障害、データ品質のどの問題を解決しようとしているか。

理解を確認したら、第2章の練習問題第2章の知識カードで操作とキーを判定してください。データの統計的な読み方は、基礎理論で確認できます。

公式範囲との対応

本節は、IPA「ITパスポート試験シラバス Ver.6.5」のデータベース方式、データベース設計、データ操作、トランザクション処理に対応し、DBMS、RDBMS、NoSQL、主キー、外部キー、正規化、選択・射影・結合、ACID特性、排他制御、障害回復を扱います。

この章の理解を確認しよう
練習問題で知識を定着させましょう