0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DBスペシャリスト試験対策まとめ(DBと触れ合っているエンジニア向け)

Posted at

2025年10月に受けたDBスペシャリスト、無事合格しました。
CBTに移行したり、そもそもDBスペシャリスト自体なくなるみたいな噂もありますが、自分が行った対策をまとめておきます。

仕事でDBと触れ合っているアプリケーションエンジニアなので、対策はだいぶ絞って行いました。

image.png

超大事なこと

午後問題で解く問題を決めておく!!!
実は午後問題は大問ごとにだいたいテーマが決まっています。

  • 午後I
    • 問1 論理設計
    • 問2 物理設計
    • 問3 SQL
  • 午後II
    • 問1 物理設計
    • 問2 論理設計

です。自分は午後Iの問2, 問3と午後IIの問1に絞って過去問を解いていました。論理設計は回答を見てもあんまり納得できない問題もあったりしてだいぶ学ばないといけない雰囲気を感じたので早々に絞りました。

とにかく過去問を解いた

普段仕事で使っているので、知識として追加で学ぶことはあまり多くなく、過去問を通じて試験対策と知識の補強を行いました。
IPAの公式サイトに過去問は掲載されているので、ダウンロードしてときました。

自分は不安になって5年分くらい解きました。試験対策という意味では3年分もやれば十分な気がしています。(知識の補強ではなく、単純な試験対策という意味であれば)

午前問題は過去問道場さんを活用しました。過去問を解いて理解していれば午前IIは大丈夫かと思います。

その他個人的試験対策tips

  • 6割とれればいいので、ちょっとやそっとミスしても大丈夫
    • 1問ひっかかっている暇があったらとりあえず全体を埋めて、最後に戻る
  • 午前IIは対策を気持ちきちんとやるといいと思います
    • 過去問は一度見ちゃうと覚えちゃうのですが、本番は初見の問題も出るので、その補正分
  • 午後試験は問題を最初にざっと読んで、解きながら答えられるやつは答えていく
    • これは色々な流派がありますが、午後IIだと問題の分量も多いので読み終わる頃には前半を思い出すのに時間かかるので都度解いていました
  • 午後Iは時間が結構厳しい
    • 特に本番だと不安になりますが、わからないやつは思い切って飛ばして後で戻ってきましょう
    • とにかく45分で強制的にもう片方の大問に移行することをおすすめします
  • 午後IIは対策しても運要素が結構強い
    • 過去問で6割ぎりぎりの仕上がりの時もあったし、ほぼ100点の時もありました
      • 現に本番もぎりぎりラインでした :innocent:
    • 正直、ここは大問1つで運要素があるので下限で6割をとれるレベルまで仕上げるのが大事だと思います
    • 全員に公平な試験も作れないので、こればっかりは仕方ないです。自分は本番中内心ひやひやしていました

よく忘れた単語たちまとめ

CAP定理

3つは同時に満たせない(2つまでならOK)

  • 一貫性 (Consistency)
  • 可用性 (Availability)
  • 分断耐性 (Partition-tolerance)

ACID特製

トランザクションを定義する4つの重要な特性

  • Atomicity(原子性)
  • Consistency(一貫性)
  • Isolation(独立性)
  • Durability(永続性)

候補キー

主キーの候補になるやつら

COALESCE

与えられた引数のうち、NULLでない最初の引数を返してくれる。コアレスって読む。

正規系

第三正規系まで覚えておけばなんとかなりそうだったので、以下だけ覚えた

  • 第一正規系
    • カンマ区切りとかがない感じ
  • 第二正規系
    • 主キーの一部から決定される要素がある
  • 第三正規系
    • 関数従属をなくした形

SQLの備忘

基本のもの

  • 平均はAVG()
  • ORDER BYとかGROUP BYに複数項目あってもカッコはいらない
    • ORDER BY PK1, PK2, PK3 みたいな
  • UNION ALLは重複を排除しない。ALLがないと重複を排除
  • INTERSECTは共通集合、EXCEPTは差集合。共通は排除される
  • CASE WHEN hoge THEN fuga ELSE piyo END

ウィンドウ関数

イメージこんな感じ

SELECT hoge, RANK() OVER (PARTITION BY fuga ORDER BY piyo DESC) FROM table;
  • RANK() 順位
  • DENS_RANK() 順位(1位とかが2人いても次が2位)
  • ROW_NUMBER() ほぼ順位(同率の場合はどっちかが1位になる)
  • LAG()/LEAD() まえの行
  • NTILE(N) N段階に分ける(1はじまり)
  • OVERの中身
    • PARTITION BY 要素 要素内で集計
    • PRECEDING/FOLLOWING 前と後
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?