重要 ⏱ 8分★★★★☆

午後:DB設計

設計問題の解法・インデックス論述・バックアップ計画を完全習得

午後のDB設計問題は「業務説明文 → 設計上の問題指摘 → 改善案の提案」という形式が多い。設計判断の根拠を論述する力が問われる。

典型的な出題形式
形式問われること
テーブル設計の問題指摘与えられたテーブル定義の正規化違反・NULL問題・重複を特定する
インデックス設計クエリから適切なインデックスを提案し理由を説明する
性能改善スロークエリの原因を特定し、改善策(インデックス・パーティション・反正規化)を提案する
バックアップ・回復計画RTO/RPOを満たすバックアップ戦略を設計する
セキュリティ設計権限設計・暗号化・監査ログの設計を論述する
① 業務説明文から「管理対象」「処理フロー」「制約条件」を抜き出す
② テーブル定義の問題点を探す(正規化・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時間以内でのバックアップ戦略を述べよ」への回答枠組み:

問題文のキーワード着目すべきポイント
「更新異常」「削除異常」正規化違反(部分・推移関数従属)を疑う
「NULL が多い」サブタイプ変換の戦略(親のみ)が原因の可能性
「検索が遅い」Seq Scan→インデックス、JOIN多→反正規化またはカバリングインデックス
「障害発生時のデータ消失」WAL・チェックポイント・バックアップ戦略を検討
「不正アクセス」最小権限・ロール・ビュー・監査ログ
「整合性を保つ」外部キー制約・トランザクション・ACID

📝 理解度チェック

午後DB設計問題で「更新異常・削除異常が発生する」という記述があった場合、最初に疑うべきことはどれか?
午後問題でインデックス設計の根拠を述べるとき、最も重要な観点はどれか?
RPO(目標復旧時点)が1時間以内という要件を満たすバックアップ戦略として最も適切なのはどれか?

読了ボタンを누すとトップページの進捉に反柼されます