🌵

データベース以外についてデータベーススペシャリスト試験で学んだこと

に公開

はじめに

2025年秋のデータベーススペシャリスト試験にギリギリ合格しました。
午後Ⅰ, 午後Ⅱどちらも論理設計を選びました。仮にCBT移行後に同じ問題を解いてもおそらく受からなかったと思います。

データベーススペシャリスト試験 点数

データベースやこの試験そのものについては多くの方が記事を書いていると思いますので、折角なのでデータベース以外のことについて筆者が学んだことを整理したいと思います。
完全に個人の感想となりますのでご了承ください。

学習開始前の筆者の前提情報

  • 20代後半
  • 応用情報技術者試験(2025年春)合格
  • AWS SAA取得
  • フロントエンドエンジニアとしての経験がメイン
  • 基本的なSQLは知っておりバックエンドAPIを作成したりもする

なぜ受けたのか

自称フロントエンドエンジニアである筆者がなぜ、データベーススペシャリスト試験を受けたのか。
それは「いい加減にデータベースについてしっかりと知らないと詰むな」と危機感を持ったからです。

そうしてデータベーススペシャリスト試験について調べていくと以下の記事に出会いました。
https://qiita.com/haihaikazuma/items/815a81048ef8facfaa47

使われる無能であるための資格

と題された記事だったので少し身構えましたが、とても良い記事だと筆者は思いました。
トレンドに左右されない不変な知識を得るためにデータベーススペシャリストを目指す、という旨だと受け取っています。

高度試験について、さぞ難しいのだろうな、受からなかったら嫌だな、筆記がツラいなと思っていた筆者は考えを改めました。
資格はあくまでガワでしかなく、重要なのは内側にある知識なのだと。もはや合否は関係ない。
筆者は、IPAの高度試験資格というものをこれまで少し神格化している節がありましたが、これらはあくまで知識の体系的なガイドレールなのであって、実際に設計する、実装する、改善するサイクルを回していくほうがよほど重要です。

(2025年現在においては)耐用年数の長い知識の学習として、データベーススペシャリスト試験を受験してみようと思いました。

学んだこと

さて、本題です。
学んだことを列挙していきます。

不変と可変のバランス

新しい知識を学ぶにあたって、前提や時間軸によらず学習対象の変わらない部分は何なのか、逆に変わる部分は何なのかを意図して意識するようになりました。

これはアプリケーション開発に例えると、フレームワークやライブラリに依存する可変部分と、業務に依存するドメインとしての不変部分の境界を考えることに近い概念だと思っておりまして、案外様々なことに応用が効きます。DDD恐るべし。

試験として問うことのできるものは基本的にフレームワークやライブラリ、ミドルウェアに依存しない抽象性の高い知識だと筆者は考えています。
なので試験で学んだことと、実務においてMySQLではどう振舞うのか、PostgreSQLではどう振舞うのかなどが必ずしも一致するわけではないと思っています。

そのため、試験で学んだ大原則をもとに、実務ではどうするべきなのかという点はプロダクトの性質などに依存して大きく変わるでしょう。
パフォーマンスや証跡のためにあえて正規化をしないという選択肢もあるようなので、そのあたりはバランスだと思っています。

また、実行計画やクエリオプティマイザについてはミドルウェア依存という判断なのか、筆者が知る限りは最近の試験には出てきていないようなので、これも別途調べていくことになります。

論理設計と物理設計

論理設計と物理設計の概念はデータベース以外の設計についても応用できると考えています。
意識的に設計について
何を実現したいのか、どうあるべきなのか、という論理設計フェーズと
フレームワークやライブラリの制約上ではどう実現するのか、という物理設計フェーズに分けることでフレームワークやライブラリに引きずられない設計ができる......はずだと論理設計まがいなことを考えて実践しています。日々改善中です。

これを読んでいる皆様は何を当然なことをとおっしゃるかもしれませんが、筆者にとっては大きな学びでした。今まで大なり小なり無意識的にやっていたことに名前がついたのです。

データベース設計には大きく概念設計、論理設計、物理設計があり、試験では概念設計を含んだ論理設計、物理設計の2つとして出題されます。
論理設計では、どのようなエンティティが必要でそれぞれにはどんな属性があるのかそれぞれのエンティティの関係性はどうなのかについて設計をします。運用性や実行速度、インデックスなどには踏み込みません。いうなれば、実装上の制約を考慮しない理想を固めます。
物理設計では、データベースとしての性能について考慮した設計をします。制約を加味して実際にどう実装するかの設計ですね。このときの制約は実際のミドルウェア仕様ではなくIPAが問題文にて定義する独自仕様から考えることになります。

学習の習慣

毎日1分でもやる。これが一番大きい学びでした。以前の筆者はどうしても余暇にまとめて学習してしまいがちでしたが、しっかりと考えてみれば月あたりに休日よりも仕事をしている日のほうが日数が多いのですから仕事をしている日にも学習できたほうが沢山学べてお得ってもんです。

おそらくどんな習慣にもいえることなのでしょう。

終わりに

SQLパフォーマンスチューニングの際に発行SQLとデータ分布に応じたインデックス設置について(オプティマイザに助けられているとはいえ)理論的に理解して進めることができたので、知識面では合否以前にお買い得な資格でした。

ネットワークスペシャリストが必要な頃合いになったら来年か再来年に受験します。まず筆者は公開できるOSSなりの作成に注力したいところです。

個人の感想でしかない記事を読んでいただきありがとうございました。
紙ベース最後の試験に合格でき嬉しいです。午後について80点90点を取れる方々は時間配分も含め本当に凄いなと思っています。
試験のCBT化がどうなるのか不明ですが、受験される方々の健闘を祈っております。

Discussion