データベーススペシャリスト SQL・設計対策
データベーススペシャリスト(DB)試験は、SQLの読み書きとデータベース設計の両方が問われます。本記事では午後Iの頻出問題パターンと効率的な対策法を解説します。
本記事は 過去問AI が独自にまとめた学習ガイドです。試験要項の最新情報は必ず IPA 公式ページ で確認してください。
DB試験の概要
データベーススペシャリスト試験の午後Iは90分・3問から2問選択・記述式です。合格率は15〜17%で、SQL力とER設計力の両方が求められます。知識はあるのにER図とSQLを読むうちに時間が尽きる人は、DB午後で時間が足りない人へ|午後I・午後IIの時間配分 も参考にしてください。
頻出パターン1:SQL問題
複雑なSELECT文の穴埋め
「次のSQL文で●に入る語句を答えよ」形式で、結合・集計・サブクエリが組み合わさる問題が頻出です。
よく問われる構文:
グループ集計+絞り込みの例: SELECT dept_id, COUNT() AS cnt FROM employees WHERE status = 'active' GROUP BY dept_id HAVING COUNT() >= 10;
相関サブクエリの例: SELECT e.name FROM employees e WHERE e.salary > ( SELECT AVG(salary) FROM employees WHERE dept_id = e.dept_id );
OUTER JOIN の例: SELECT c.name, COUNT(o.id) AS order_count FROM customers c LEFT OUTER JOIN orders o ON c.id = o.customer_id GROUP BY c.name;
対策のポイント:
- INNER JOIN / LEFT OUTER JOIN / RIGHT OUTER JOIN の結果の違いを図で理解する
- GROUP BY の後にWHEREが使えない(HAVINGを使う)ルールを確実に覚える
- 相関サブクエリと非相関サブクエリの違いを問題で見分ける
トランザクション・ロック問題
「並行実行されるトランザクションAとBの実行結果がどうなるか」を問う問題。
頻出テーマ:
- デッドロックの発生条件と検知・回避
- 排他ロック・共有ロックの競合パターン(行ロック・テーブルロック)
- トランザクション分離レベル(REPEATABLE READ・SERIALIZABLE等)の違い
インデックス設計と実行計画
「このSELECT文を高速化するための適切なインデックスを答えよ」という問題。
解答の型:
- WHERE句・JOIN条件・ORDER BY の列を確認
- カーディナリティ(値の種類数)が高い列を優先
- 複合インデックスの列順序を最適化
頻出パターン2:ER設計・正規化
ER図の読み取りと補完
「業務要件から欠けているエンティティ・リレーションシップを追加せよ」という問題。
確認ポイント:
- 1対多・多対多の関係(中間テーブルの必要性)
- 属性の函数従属性(どの属性がどの主キーに依存するか)
- 弱エンティティ(識別子を他エンティティから借りるエンティティ)の扱い
正規化の問題
第1正規形〜第3正規形(場合によってはBCNF)への変換問題。
正規化の手順:
- 第1正規形:繰り返し項目を排除(各セルに1つの値)
- 第2正規形:部分関数従属を排除(複合主キーの一部にのみ依存する属性を分離)
- 第3正規形:推移的関数従属を排除(主キー以外の属性が別属性を決める場合を分離)
第3正規形の判定でつまずく場合は、第3正規形の判定方法 で推移的関数従属の見抜き方を例つきで手順化しています。
スキーマ設計問題
「次の業務要件を満たすテーブル定義を設計せよ」という論述的な問題。
評価される要素:
- 適切なデータ型の選択(VARCHAR・DECIMAL・DATE等)
- 主キー・外部キー制約の設定
- NULL許容の判断(必須・任意の区別)
- インデックスの設計
頻出パターン3:障害回復とバックアップ
チェックポイントとロールバック
「障害発生時にどのトランザクションをROLL BACKし、どれをROLL FORWARDするか」という問題。
解答の型:
- ロールフォワード(REDO):コミット済みのトランザクションを再実行
- ロールバック(UNDO):未コミットのトランザクションを取り消し
AIコパイロットでの活用法
- 「このSQL文がなぜ正しい結果を返すか、行を追って説明して」
- 「このER図の第3正規形違反を見つけて」
- 「デッドロックが発生するトランザクション実行順を具体的に示して」
学習ロードマップ
| 週 | 内容 |
|---|---|
| 1〜2週 | SQL基本構文(SELECT・JOIN・GROUP BY)の徹底演習 |
| 3〜4週 | サブクエリ・ウィンドウ関数・トランザクション問題 |
| 5〜6週 | 正規化・ER設計問題の演習 |
| 7〜8週 | 過去5年分の午後I問題を通し解き |
| 9〜10週 | 弱点問題の集中反復+午後II対策 |
よくある質問
Q1. データベーススペシャリストの午後I はどんな形式ですか? データベーススペシャリスト試験の午後I は 90 分・3 問から 2 問選択の記述式です。SQL の読み書きと ER 設計・正規化の両方が問われ、合格率は 15〜17% で推移しています。論文ではなく記述式のため、設計判断やインデックス選択の根拠を簡潔な日本語で書ける力が求められます。
Q2. SQL が苦手です。何から対策すればよいですか? まず INNER JOIN・LEFT/RIGHT OUTER JOIN の結果の違いを図で理解し、GROUP BY の後は WHERE でなく HAVING で絞り込むルールを確実に押さえます。次に相関サブクエリと非相関サブクエリを過去問で見分ける練習を重ねてください。詰まったら AI コパイロットに「この SQL 文がなぜこの結果を返すか、行を追って説明して」と頼むと、1 行ずつ実行イメージを返します。
Q3. 正規化が覚えられません。どう対策しますか? 暗記ではなく手を動かして変換するのが近道です。第 1 正規形(繰り返し項目の排除)→第 2 正規形(部分関数従属の排除)→第 3 正規形(推移的関数従属の排除)の手順を、過去問の表に対して実際に分解しながら確認します。どの属性がどの主キーに依存するか(関数従属性)を都度言語化すると、初見の問題でも崩れにくくなります。
Q4. 知識はあるのに午後で時間が足りません。 ER 図と SQL を読み込むうちに時間が尽きるのは DB 受験者に多いつまずきです。午後I 90 分で 2 問・午後II 120 分の時間配分や解く順・撤退判断は DB午後で時間が足りない人へ で詳しく整理しています。過去問AI の データベーススペシャリスト 過去問 で本番形式の演習を重ね、設問ごとの所要時間を体に入れておきましょう。
まとめ
- SQL:JOIN・集計・サブクエリのパターンを解法として覚える
- トランザクション:ロック競合・デッドロックの図解を体に入れる
- 正規化:第1〜第3正規形の手順を問題で実践
- スキーマ設計:制約・インデックスの選択根拠を言語化できるようにする