本文へスキップ
統計ロードマップ
Textbook

データベーススペシャリスト試験 教科書

**データベーススペシャリスト試験(DB)** は、**情報処理推進機構(IPA)** が主催する国家試験(レベル 4)で、IPA の高度試験の中でも **データベース ・ データ基盤** に特化した最高峰の認定。応用情報技術者(AP、レベル 3)の上位に位置し、**DB 設計 ・ チューニング ・ 運用 ・ データモデリング ・ ビッグデータ ・ NoSQL** など、現代のデータエンジニアに必要な広範な知識を測ります。本教科書は出題範囲を 10 章で体系的にカバーします。

目次

  1. 1 章 · データベーススペシャリスト ─ 全体像
    試験形式・出題範囲・難易度・学習プランを整理します。
  2. 2 章 · リレーショナルモデルと関係代数
    リレーショナルモデルの数学的基礎、関係代数、関係論理を整理します。
  3. 3 章 · データモデリングと正規化
    概念設計 ・ ER 図 ・ 正規形 ・ 関数従属性を整理します。
  4. 4 章 · SQL 中級〜上級
    JOIN 上級 ・ ウィンドウ関数 ・ CTE ・ 再帰クエリを整理します。
  5. 5 章 · トランザクションと同時実行制御
    ACID ・ ロック ・ 分離レベル ・ 障害回復を整理します。
  6. 6 章 · 物理設計とチューニング
    索引設計 ・ 実行計画 ・ パーティション ・ クエリ最適化を整理します。
  7. 7 章 · セキュリティとアクセス制御
    認証 ・ 認可 ・ 暗号化 ・ 監査を整理します。
  8. 8 章 · NoSQL とビッグデータ
    NoSQL の 4 種類 ・ CAP 定理 ・ 分散 DB を整理します。
  9. 9 章 · DWH とデータ基盤の現代
    クラウド DWH ・ ETL/ELT ・ データメッシュを整理します。
  10. 10 章 · 受験対策と論述戦略
    範囲別チェックリストと午後 II 論述戦略を整理します。
Chapter 1

1 章 · データベーススペシャリスト ─ 全体像


§1.1

試験の位置付け

データベーススペシャリスト試験(DB) は IPA の情報処理技術者試験における レベル 4(高度) に位置し、データベース ・ データエンジニアリングの 専門家 を認定します。応用情報合格者がスキルアップとして目指す高度試験の代表格で、DBA(データベース管理者)・ データエンジニア ・ データアーキテクト のキャリア証明として強力です。

  • 主催: 情報処理推進機構(IPA)
  • 実施: 年 1 回(秋、10 月)
  • 形式: 筆記試験(マークシート + 記述 + 論述)
  • 問題構成: 午前 I + 午前 II + 午後 I + 午後 II の 4 段階
  • 合格基準: 各段階で 60 点以上
  • 合格率(参考): 約 17 〜 18%
  • 受験料: 7,500 円(税込)

試験の 4 段階構造

  1. 午前 I(50 分 ・ 30 問): 共通知識(他の高度試験と同一範囲、応用情報合格で 2 年免除可)
  2. 午前 II(40 分 ・ 25 問): DB 中心の専門知識
  3. 午後 I(90 分 ・ 3 問中 2 問選択): 記述式の事例問題
  4. 午後 II(120 分 ・ 2 問中 1 問選択): 長文の論述形式の事例問題
§1.2

学習プランと午後対策

300 〜 500 時間プラン

  1. Month 1 〜 2: 午前 II の DB 専門知識(本教科書 + 過去問演習)
  2. Month 3: 概念データモデル ・ 論理データモデル ・ 物理設計
  3. Month 4 〜 5: SQL 中級〜上級 ・ チューニング ・ 索引設計
  4. Month 6: 午後 I 演習(短文記述)
  5. Month 7 〜 8: 午後 II 演習(長文論述)

午後対策のキー

  • ER 図 / 関係スキーマ作成: 午後 II の核
  • 正規化の実践: 与えられた業務記述から 3NF までの導出
  • SQL 記述: ウィンドウ関数 ・ JOIN ・ サブクエリ
  • チューニング: 実行計画 ・ 索引選択 ・ パーティション
  • 過去問 5 〜 10 年分 を反復演習
DB 試験の最大の壁は『午後 II の論述』

午後 II は 120 分で 1 問の事例問題に取り組み、ER 図 ・ 関係スキーマの設計 + 数百字の記述 が求められます。書く速度より 業務記述から論理 ・ 物理設計を組み立てる思考力 が問われ、過去問演習の量が合格率に直結します。

Chapter 2

2 章 · リレーショナルモデルと関係代数


§2.1

リレーショナルモデルの基礎

  • リレーション(関係): 表(タプルの集合)
  • タプル(行): レコード
  • 属性(列): フィールド
  • ドメイン: 属性の値域
  • 主キー(PK): タプルを一意に識別
  • 候補キー / スーパーキー: 主キーの候補となる属性集合
  • 外部キー(FK): 他リレーションへの参照
  • NULL: 値が未定義 ・ 不明
§2.2

関係代数

関係代数は 集合論ベース の DB 操作言語。8 つの基本演算で SQL の理論的基盤を成します。

  • 選択(σ): 条件に合うタプルを取り出す(WHERE 相当)
  • 射影(π): 指定列のみ取り出す(SELECT 列指定)
  • 和(∪): 2 つのリレーションの和集合
  • 差(-): 集合の差
  • 直積(×): デカルト積
  • 結合(⨝): 自然結合 / θ 結合
  • 商(÷): 除算
  • 名前変更(ρ): 属性名 / リレーション名の変更
関係代数 = SQL のメンタルモデル

SQL は宣言型ですが、内部では関係代数の演算ツリーに変換されてオプティマイザが最適化します。関係代数を理解すると SQL の動作と性能を予測できる ようになり、DB スペシャリストの午後問題で大きな武器になります。

§2.3

関係論理(タプル計算 / ドメイン計算)

  • タプル関係論理: 『あるタプル t について、条件 P を満たすもの』
  • ドメイン関係論理: 『ある値 d について、条件 P を満たすもの』
  • 全称量化(∀)・ 存在量化(∃)
  • SQL の EXISTS / NOT EXISTS はタプル関係論理に対応
Chapter 3

3 章 · データモデリングと正規化


§3.1

ER 図(Entity-Relationship 図)

  • エンティティ(実体): 業務上の対象(顧客 ・ 注文 ・ 商品)
  • 属性: エンティティの性質
  • 関連(リレーションシップ): エンティティ間の関係
  • 多重度: 1:1 / 1:N / N:M
  • 弱実体(Weak Entity): 親実体に依存して識別される
  • Chen 記法 / IE 記法 / IDEF1X / UML: 異なる図記法

概念 → 論理 → 物理の 3 層

  • 概念設計(Conceptual): 業務領域の ER 図、技術非依存
  • 論理設計(Logical): 関係スキーマへの変換、正規化
  • 物理設計(Physical): 索引 ・ パーティション ・ DBMS 固有設定
§3.2

関数従属性と正規形

関数従属性(FD)

属性集合 X が属性集合 Y を 関数的に決定する とき と書く。例: 学生番号 → 氏名。

完全関数従属: 主キーの全属性に依存(その一部に依存しない)。

部分関数従属: 主キーの一部にのみ依存。

推移関数従属: かつ ( 経由で間接的に を決める)。

正規形

  • 第 1 正規形(1NF): 繰返し項目の排除(原子値)
  • 第 2 正規形(2NF): 1NF + 部分関数従属の排除
  • 第 3 正規形(3NF): 2NF + 推移関数従属の排除
  • Boyce-Codd 正規形(BCNF): 3NF より厳格(すべての非自明な FD で行列式がスーパーキー)
  • 第 4 正規形(4NF): 多値従属性の排除
  • 第 5 正規形(5NF / PJNF): 結合従属性の排除
  • Domain-Key 正規形(DKNF): 理論的最高(実務では稀)
実務では 3NF が標準

OLTP(取引系) では 3NF が事実上の標準。BCNF まで厳格化すると JOIN が増えて性能が悪化することが多い。一方、DWH(分析系) はあえて非正規化(スター / スノーフレーク)で読み取り性能を優先する設計が定石です。

Chapter 4

4 章 · SQL 中級〜上級


§4.1

JOIN 上級

  • INNER JOIN: 両方にマッチする行のみ
  • LEFT / RIGHT / FULL OUTER JOIN: 片方 / 両方を全部残す
  • CROSS JOIN: 直積。意図しない巨大化に注意
  • SELF JOIN: 同じテーブルとの結合(階層構造 ・ 相関)
  • SEMI JOIN(EXISTS)・ ANTI JOIN(NOT EXISTS)
  • LATERAL JOIN: 行ごとにサブクエリを実行
§4.2

ウィンドウ関数と CTE

  • ROW_NUMBER / RANK / DENSE_RANK / NTILE: 順位
  • LAG / LEAD: 前後行の参照
  • FIRST_VALUE / LAST_VALUE / NTH_VALUE
  • 集約のウィンドウ化: SUM / AVG / COUNT OVER (...)
  • 移動平均: ROWS BETWEEN N PRECEDING AND CURRENT ROW
  • PARTITION BY: グループ内集計
  • WITH 句(CTE): クエリの段階的構築
  • RECURSIVE CTE: 階層構造 ・ グラフ走査
再帰 CTE で組織階層を展開
-- 部署階層を再帰的にたどる
WITH RECURSIVE dept_tree AS (
  -- 起点: ルート(parent_id IS NULL)
  SELECT id, name, parent_id, 0 AS depth
  FROM departments
  WHERE parent_id IS NULL
  UNION ALL
  -- 再帰: 子部署
  SELECT d.id, d.name, d.parent_id, dt.depth + 1
  FROM departments d
  JOIN dept_tree dt ON d.parent_id = dt.id
)
SELECT depth, name FROM dept_tree ORDER BY depth, id;
§4.3

ストアドプロシージャ ・ トリガー ・ ビュー

  • ビュー(VIEW): 仮想テーブル。マテリアライズドビューは実体化
  • ストアドプロシージャ: 名前付き SQL 手続き(PL/SQL / T-SQL)
  • トリガー(BEFORE / AFTER / INSTEAD OF): イベント駆動
  • カーソル: 行単位処理
  • ユーザ定義関数(UDF)
Chapter 5

5 章 · トランザクションと同時実行制御


§5.1

ACID と分離レベル

ACID 特性

Atomicity(原子性): 全成功 / 全失敗

Consistency(一貫性): 整合性制約を維持

Isolation(独立性): 並行処理の干渉なし

Durability(永続性): コミット後の永続化

分離レベルと並行性異常

  • READ UNCOMMITTED: ダーティリード許容
  • READ COMMITTED: コミット済のみ参照(多くの DBMS のデフォルト)
  • REPEATABLE READ: ファントムリード以外を防ぐ
  • SERIALIZABLE: 完全直列化
  • SNAPSHOT ISOLATION(SI): MVCC ベース、PostgreSQL / Oracle が標準採用

代表的な並行性異常

  • ダーティリード: 未コミットの変更を読む
  • ノンリピータブルリード: 同一クエリで結果が変わる(他 Tx の UPDATE)
  • ファントムリード: 同一範囲クエリで行数が変わる(他 Tx の INSERT)
  • ロストアップデート: 並行更新で 1 つの変更が消える
  • ライトスキュー: SI で起きうる更新異常
§5.2

ロックと MVCC

  • 共有ロック(S): 読み取り、複数同時可
  • 排他ロック(X): 書き込み、単独
  • 意図ロック(IS / IX): 階層ロックのヒント
  • 2 相ロック(2PL): 厳密な直列化保証
  • デッドロック: 検知 / タイムアウト / 順序付けで回避
  • MVCC(マルチバージョン同時実行制御): スナップショット分離、リーダー / ライターのブロックを減らす
§5.3

障害回復とログ

  • WAL(Write-Ahead Logging): 変更を先にログに書く
  • REDO ログ / UNDO ログ: 前進 / 後退
  • チェックポイント: 障害時の起点
  • ARIES: 標準的な復旧アルゴリズム
  • バックアップ: 完全 / 差分 / 増分
  • Point-in-Time Recovery(PITR): 任意時点への復元
Chapter 6

6 章 · 物理設計とチューニング


§6.1

索引設計

  • B-tree 索引: 最も標準。範囲検索 ・ ソートに強い
  • ハッシュ索引: 等価検索のみ、
  • ビットマップ索引: カーディナリティ低の列(性別 ・ ブール)
  • 全文索引: 文書検索向け
  • GiST / GIN(PostgreSQL): 多目的拡張索引
  • カバリング索引: クエリで参照する全列を含む索引
  • 複合索引: 列順が重要(検索パターンと一致)
  • 式索引 / 関数索引: 計算結果に索引
索引は『万能薬ではない』

索引は読み取りを速くするが 書き込みを遅くする(挿入 / 更新時に索引も更新が必要)。実際のクエリパターンに基づいて選定 することが重要で、『なんとなく追加』は逆効果。EXPLAIN で実行計画を確認しながら設計するのが定石。

§6.2

実行計画とオプティマイザ

  • EXPLAIN / EXPLAIN ANALYZE: 実行計画の取得
  • コストベースオプティマイザ(CBO): 統計情報からコスト計算
  • ルールベースオプティマイザ(RBO): 古い方式
  • 結合方式: Nested Loop / Hash Join / Sort-Merge Join
  • 結合順序の最適化
  • 統計情報の更新: ANALYZE / VACUUM(PostgreSQL)
  • ヒント句: オプティマイザへの強制
§6.3

パーティション ・ シャーディング

  • 水平パーティション: 行を分割(範囲 / リスト / ハッシュ / コンポジット)
  • 垂直パーティション: 列を分割
  • シャーディング: 複数サーバへ水平分散
  • レプリケーション: マスタ / スレーブ ・ マルチマスタ
  • 読み取り分離: 書き込み = マスタ / 読み取り = レプリカ
Chapter 7

7 章 · セキュリティとアクセス制御


§7.1

アクセス制御

  • GRANT / REVOKE: 権限付与 / 取消
  • RBAC: 役割ベース
  • ABAC: 属性ベース(より細かい制御)
  • 行レベルセキュリティ(RLS): 行単位のフィルタ
  • 列レベルセキュリティ: 列単位のマスキング
  • 動的データマスキング: 表示時のマスキング
§7.2

暗号化と SQL インジェクション対策

  • 保存時暗号化(TDE): ストレージレベル
  • 通信暗号化: TLS で接続を暗号化
  • 列レベル暗号化: 個別列の AES 暗号
  • SQL インジェクション対策: プレースホルダ + 入力検証 + 最小権限
  • 監査ログ: 全操作の記録(誰が / いつ / 何を)
  • 個人情報保護: GDPR / 改正個人情報保護法対応
Chapter 8

8 章 · NoSQL とビッグデータ


§8.1

NoSQL の 4 種類

  • キーバリュー型: Redis / DynamoDB / Memcached。シンプルな KV、超高速
  • ドキュメント型: MongoDB / Couchbase。JSON / BSON 形式
  • カラム指向: Cassandra / HBase / BigTable。大規模分析向け
  • グラフ型: Neo4j / Neptune / TigerGraph。ノード + エッジ
  • 時系列: InfluxDB / TimescaleDB
  • 全文検索: Elasticsearch / OpenSearch
  • ベクトル: Pinecone / pgvector / Milvus(AI / RAG 用)
§8.2

CAP 定理と BASE

CAP 定理(Brewer)

分散システムは以下の 3 つを 同時に 満たすことができない:

Consistency(一貫性): 全ノードが同じデータを返す

Availability(可用性): すべてのリクエストに応答

Partition tolerance(分断耐性): ネットワーク分断でも動作

実用上は CPAP を選ぶ(P は前提)。

  • ACID(伝統的 RDB): 強一貫性
  • BASE(NoSQL 的): Basically Available, Soft state, Eventually consistent
  • 結果整合性(Eventual Consistency): 一定時間後に一貫
  • 強一貫性 / 因果一貫性 / 単調一貫性 など段階的モデル
§8.3

ビッグデータ基盤

  • Hadoop / HDFS: 分散ファイルシステム + MapReduce
  • Spark: メモリ内分散処理、Hadoop より高速
  • Hive / Presto / Trino: SQL on Hadoop
  • Kafka: 分散ストリーミング
  • データレイクハウス: Databricks Delta Lake / Apache Iceberg
  • カラムナーストレージ: Parquet / ORC で分析クエリ高速化
  • OLAP / OLTP の使い分け: トランザクション系 vs 分析系
Chapter 9

9 章 · DWH とデータ基盤の現代


§9.1

クラウド DWH

  • Snowflake: マルチクラウド対応、ストレージ / コンピュート分離
  • BigQuery(Google): サーバレス、SQL 分析特化
  • Redshift(AWS): 列指向 MPP
  • Synapse / Fabric(Microsoft): 統合データ分析
  • Databricks SQL Warehouse: レイクハウス系
  • スター / スノーフレークスキーマ: ファクト + ディメンション
  • SCD(Slowly Changing Dimensions): 履歴管理(タイプ 1 / 2 / 3)
§9.2

ETL ・ ELT ・ データオーケストレーション

  • ETL(Extract → Transform → Load): 古典的、事前変換
  • ELT(Extract → Load → Transform): クラウド DWH 時代の主流、生データ先ロード
  • dbt(data build tool): SQL ベース変換層を Git 管理
  • Airflow / Dagster / Prefect: ワークフローオーケストレーション
  • Fivetran / Stitch: マネージド ELT
  • CDC(Change Data Capture): DB 変更ストリーム
§9.3

データメッシュとデータガバナンス

  • データメッシュ: ドメイン分散 + データを製品として扱う
  • データカタログ: メタデータ管理(DataHub / Atlas / Collibra)
  • リネージ(Lineage): データの来歴追跡
  • データ契約(Data Contract): スキーマ ・ SLA の合意
  • データ品質: Great Expectations / Soda / dbt tests
  • Privacy by design + GDPR / 改正個人情報保護法
Chapter 10

10 章 · 受験対策と論述戦略


§10.1

範囲別チェックリスト

  1. 第 2 章: 関係代数 8 演算 / 関係論理 / 候補キー / FK
  2. 第 3 章: ER 図 / FD / 1NF 〜 BCNF / 概念→論理→物理
  3. 第 4 章: ウィンドウ関数 / 再帰 CTE / LATERAL / トリガー
  4. 第 5 章: ACID / 分離レベル / MVCC / WAL / ARIES
  5. 第 6 章: B-tree / 実行計画 / 結合方式 / パーティション / シャーディング
  6. 第 7 章: GRANT/REVOKE / RLS / TDE / SQLi 対策
  7. 第 8 章: NoSQL 4 種 / CAP / BASE / Spark / Kafka
  8. 第 9 章: クラウド DWH / ELT / dbt / Airflow / データメッシュ

午前対策

  • 午前 I 免除: 応用情報合格 / 高度試験合格 / 同等資格で 2 年免除可
  • 午前 II は過去問演習 が圧倒的有効。直近 5 〜 10 年分を 2 周
  • 60% で次段階に進める

午後対策

  • 午後 I: 90 分で 3 問中 2 問選択。SQL 記述 ・ 設計の短文回答
  • 午後 II: 120 分で 2 問中 1 問選択。長文事例 + ER 図 ・ 関係スキーマ作成 + 論述
  • 事例問題の構造: 業務記述 → 質問群。業務記述を読み込む時間 を確保
  • ER 図 ・ スキーマは下書きを書く: 答案用紙に直書きは事故のもと
  • 過去問は 2 周以上: 同じ問題を繰り返すと型が身につく
§10.2

合格後のキャリア

DB スペシャリストは 国家試験のレベル 4 で公的認知度が極めて高く、DBA / データエンジニア / データアーキテクト のシニアポジションへの強いシグナル。金融 ・ 公官庁 ・ 大手 SI で評価が特に高く、転職市場でも『DB スペシャリスト持ち』はスクリーニングで突出します。

次の挑戦

DB の延長線で AWS Database Specialty / Google Cloud Professional Data Engineer / Snowflake / Databricks 認定 などのクラウド DB 認定があります。または同じ IPA 高度試験で ITストラテジスト ・ システムアーキテクト に進むキャリアパスも王道です。本サイトの[DS エキスパート](/certs/ds-expert) ・ [Python データ分析](/certs/python-data)で AI / 分析側の補強もおすすめです。