重要
⏱ 8分★★★★☆
午後:DB設計
設計問題の解法・インデックス論述・バックアップ計画を完全習得
午後:DB設計問題の出題パターン
午後のDB設計問題は「業務説明文 → 設計上の問題指摘 → 改善案の提案」という形式が多い。設計判断の根拠を論述する力が問われる。
設計問題の解答アプローチ
① 業務説明文から「管理対象」「処理フロー」「制約条件」を抜き出す
↓
② テーブル定義の問題点を探す(正規化・NULL・主キー・外部キー)
↓
③ 改善案を提示し「なぜそうするか」の根拠を添える
↓
④ トレードオフを認識して「整合性 vs 性能」「管理コスト vs セキュリティ」等を述べる
インデックス設計の論述パターン
「〇〇クエリが遅い。インデックスを提案し、その理由を述べよ」という設問への回答例:
-- 問題のクエリ(スロー)
SELECT 氏名, 受注日, 金額
FROM 受注 o
JOIN 顧客 c ON c.顧客ID = o.顧客ID
WHERE c.地域 = '東京'
AND o.受注日 BETWEEN '2024-01-01' AND '2024-03-31'
ORDER BY o.受注日;
提案インデックス例:
① 顧客(地域) — 地域で顧客を絞り込む(等値条件先頭)
② 受注(顧客ID, 受注日) — JOINキー+範囲条件をカバー
理由:地域=東京の顧客IDリストでNL Joinの外側を小さくし、受注の複合インデックスで範囲絞り込みとORDER BYを兼ねる。
バックアップ・回復計画の論述パターン
「RTO 4時間、RPO 1時間以内でのバックアップ戦略を述べよ」への回答枠組み:
- RPO 1時間 → WALアーカイブ(1時間以内の差分ログを保持)+ PITRで任意時点リストア
- RTO 4時間 → フルバックアップは日次。増分バックアップで差分を最小化し、リストア所要時間を4時間以内に収める
- 検証 → 定期的にリストアテストを実施して実際のRTOを計測する
設計問題の頻出キーワードと対応
| 問題文のキーワード | 着目すべきポイント |
| 「更新異常」「削除異常」 | 正規化違反(部分・推移関数従属)を疑う |
| 「NULL が多い」 | サブタイプ変換の戦略(親のみ)が原因の可能性 |
| 「検索が遅い」 | Seq Scan→インデックス、JOIN多→反正規化またはカバリングインデックス |
| 「障害発生時のデータ消失」 | WAL・チェックポイント・バックアップ戦略を検討 |
| 「不正アクセス」 | 最小権限・ロール・ビュー・監査ログ |
| 「整合性を保つ」 | 外部キー制約・トランザクション・ACID |
試験頻出ポイント
- 問題文の「キーワード」から着目すべき設計項目を即座に絞り込む
- 改善案は「何をするか」だけでなく「なぜするか(根拠)」を必ず述べる
- トレードオフを認識した論述が高評価 → 「性能は向上するが整合性リスクが増す」など
- インデックス提案は列順の根拠(等値先頭・カバリング)まで説明する
- バックアップ計画は RTO/RPO の数値を満たす具体的な戦略で答える
📝 理解度チェック
午後DB設計問題で「更新異常・削除異常が発生する」という記述があった場合、最初に疑うべきことはどれか?
午後問題でインデックス設計の根拠を述べるとき、最も重要な観点はどれか?
RPO(目標復旧時点)が1時間以内という要件を満たすバックアップ戦略として最も適切なのはどれか?
読了ボタンを누すとトップページの進捉に反柼されます