「データベーススペシャリスト試験」とは?
都内のとあるIT会社、時計の針は午後9時。オフィスにはまだ何人かが残り、それぞれの席で仕事を続けている。その一人であるA は、自分のディスプレイを見つめながらつぶやいた。
いつになったらB先輩
のようなデータベースエンジニアになれるのかな……。
まぁまぁ。まだおまえは入社4年目だろ? 焦ることはないって。俺なんか、もう10年もやってるからな。
Bは笑いながらコーヒーをすすり、ディスプレイをちらりと見やる。
残業をたくさんして、現場で技術を身につけるのが最短距離だよ。実際、それしかないんだ。
確かに、技術を身につけるには実践が欠かせません。Bさんの言うとおり、現場で苦労をして得た技術は、何ものにも代えがたい武器になります。しかし、そのためにかかる膨大な時間を
B先輩の言ってることもわかるけど、できればもっと早く一人前になりたいな……。そういえば、
「データベーススペシャリスト試験」
この試験は、大規模なデータベースシステムの設計・
高度IT人材として確立した専門分野をもち、データベースに関係する固有技術を活用し、最適な情報システム基盤の企画・
要件定義・ 開発・ 運用・ 保守において中心的な役割を果たすとともに、固有技術の専門家として、情報システムの企画・ 要件定義・ 開発・ 運用・ 保守への技術支援を行う者
試験勉強は仕事の役にたたない?
B先輩! 僕、早く先輩みたいになりたくて、データベーススペシャリスト試験に挑戦することにしました!
ちょっと待て! 資格なんか取っても、何にもならないって
そんなことはありません。情報処理技術者試験は1969年に開始されてから、実に50年以上の歴史がある、IT系で唯一の国家試験です。これほどの長い歴史を持つ理由は、特にIT関連企業がその価値を強く認めてきたからです。
IPAが行った
また同アンケートでは、高度試験の合格を昇進・
こうした公的調査の数字は、企業がインセンティブや評価制度で後押しする資格としてデータベーススペシャリスト試験が高く評価されていることを示しています。
へぇ。でも、試験勉強で学んだ知識なんて、実務とはまったく関係ないだろ?
僕もそう思ってたんですけど……実際に解いてみると、今の仕事と重なる部分もあったりして面白いんですよ。
ふーん……見せてみてよ。
実際に出題された問題①(午前Ⅱ試験)
問題
商品表と商品別売上実績表に対して、次のSQL文を実行して得られる売上平均金額はどれか。
![]()
SELECT AVG(売上合計金額) AS 売上平均金額 FROM 商品 LEFT OUTER JOIN 商品別売上実績 ON 商品.商品コード = 商品別売上実績.商品コード WHERE 商品ランク = 'A' GROUP BY 商品ランク
【ア】
100 【イ】 150 【ウ】 225 【エ】 275
確かに、実務でも普通に使うSQL文だな。
そうですね。商品テーブルと商品別売上実績テーブルを結合します。結合条件は商品コードですが、外部結合なので商品別売上実績テーブルに存在しない行でも結果に出しますよね。
そうだな。その場合、売上合計金額はNULLとするわけだ。さらに商品ランクが"A"のものだけという条件も忘れてはいけない。
このような結果になりますね。
商品コード | 商品名 | 商品ランク | 売上合計金額 |
---|---|---|---|
S001 | PPP | A | 50 |
S002 | QQQ | A | NULL |
S003 | RRR | A | 250 |
3行になったな。売上合計金額の平均値は……あれ? NULLは0とみなして、(50+0+250)/3で計算されるのか?
AVG関数は、計算の際にNULLの行を排除しますので、(50+250)/2の計算になるはずです。
お、おう! そうだったな
Aさんの言うとおりAVG関数では、NULLは0と見なすのではなく、そもそも存在していない行として扱います。そのため1行目と3行目だけを計算に使い、結果は150となります。正解は
こういった問題を解くと、日ごろ書いているSQLを見直すきっかけにもなりますね。
ま、まぁな。でもたまたまかもしれないぞ。
では、他の問題も見てみましょう!
実際に出題された問題②(午前Ⅱ試験)
問題
トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa、bに入れる字句の組みはどれか。ただし、隔離性水準はREAD COMMITTEDとする。
- [Qの挙動]
- 同時実行制御が単版2相ロッキングプロトコルの場合Qは
( a )、多版同時実行制御 (MVCC) の場合Qは ( b )。 ![]()
ほらぁ! 隔離性水準なんて、実務で使わないぞ! 社会人になったら因数分解なんて使わないのと同じ!
確かにそうかもしれません。ただ、DBMSによって隔離性水準の初期設定が異なるようなんです。たとえばOracleであればREPEATABLE READだし、MySQLであればREAD COMMITTEDを少しカスタマイズしたものが初期設定のようです。
READ COMMITTEDは、たとえばトランザクションAで、ある値を
この動きがわかっていないと、複雑なシステムにおいては思わぬバグを引き起こすことがあります。特に複数のトランザクションが同時に動く場合、設定の違いが予期しない挙動をすることがあります。厄介なのは、こうした問題は常に発生するわけではないということです。そのため入念なテストを行ったつもりでも、実運用になってから初めて問題が顕在化するというケースもあります。
なるほど……勉強になるな。問題文にある2相ロッキングプロトコルって何だろ。
2相とは
このルールに従うことで、
そういえば前のプロジェクトで、このルールが徹底されていたことがあった。これだったのか。
開発現場で
どうですか先輩? 試験の勉強も、意味がありそうじゃないですか?
正直、思っていたよりもずっと実践的だな。
これまでの実務経験を越えて、まだ現場で出会っていない
実際に出題された問題③(午前Ⅱ試験)
それだけではなく、時代の変化に応じて試験内容が更新されている点も重要です。たとえば、令和4年度の試験ではこんな問題が出題されました。
問題
機械学習を用いたビッグデータ分析において使用されるJupyter Labの説明はどれか。
- 【ア】 定期的に実行するタスクを制御するための、ワークフローを管理するツールである。
- 【イ】 データ分析を行う際に使用する、対話型の開発環境である。
- 【ウ】 並列分散処理を行うバッチシステムである。
- 【エ】 マスターノードをもたない分散データベースシステムである。
Jupyter Labなんて、聞いたことないな。
Jupyter Labは、プログラミングに詳しくなくても、Pythonなどを使ってデータを読み込んだり、グラフにしたり、分析の流れをノートにまとめるように記録したりできるツールです。パソコンのブラウザ上で動き、途中で結果を見ながら確認できるので、データ分析や機械学習の初心者にもやさしい環境です。
このように、最新の事例にもどんどんと対応されています。
技術の進歩に取り残されないようにするためにも、最新情報のキャッチアップは重要ですね!
試験の区分
……よし! 俺もデータベーススペシャリスト試験に挑戦するぞ!
ちょっと待ってください! ここまではまだ、
ここで、データベーススペシャリスト試験全体の区分を整理しておきます。
午前Ⅰ試験は30問の4択式問題です。同じ回に開催される、応用情報技術者試験の午前試験
午前Ⅱ試験も同じく4択式問題で、25問出題されます。データベース分野がメインとなりますが、25問のうち7問はそれ以外の
![]()
データベーススペシャリスト試験の区分
試験の山場は、これから紹介する
午後Ⅰ試験は4~5ページ程度の長文読解問題で、解答は記述式です。たとえば
午後Ⅱ試験も午後Ⅰと同じく記述式で、大問2問のうちから1問だけを選んで解答する形式です。例年は問1で
実際に出題された問題④(午後試験)
記述式? 一体どんな問題が出題されるんだ?
午後試験の
このSQL文の前には、出題テーマに沿ったストーリーが書かれています。このストーリーを満たすようにSQL文を完成させます。上のSQL文は、以下の依頼2に答えるためのSQL文です。
「物理設計」
そのためには、データベースにデータがどのように格納されるのかという深い知識が必要です。
「論理設計」
いずれにしても、実務を多く経験していることで、スムーズに学習が進むはずです。
午後試験は難しそうですね……。私は実務経験が少ないので、いきなり挑戦するのは無理なのでしょうか……。
それは違います。繰返しになりますが、学習を通じて実務経験を積んだかのような知識を獲得できることこそが受験の強みです。入社4年目だとしても、入社10年目と同様のレベルに到達できるかもしれません。実務経験が少ないのであれば、挑戦する価値はむしろ高まるとも言えます。
では最後に、Aさんのような方におすすめの
午前Ⅰ試験の攻略法
午前Ⅰ試験は、同じ回に開催された応用情報技術者試験の午前試験から抜粋された30問が出題されます。その30問はデータベースに限らず、広い分野から出題されます。そのため午前Ⅰ対策としては、応用情報技術者試験の学習が効果的ということになります。
応用情報技術者試験は午前試験と午後試験に分かれています。データベーススペシャリストの午前Ⅰ試験のみを考えるのであれば、応用情報技術者試験の午後試験の学習は不要です。しかしそれでも、応用情報技術者試験の範囲をすべて学習することをおすすめします。午後試験の学習をすることで、データベーススペシャリスト試験の午後試験対策にもなるためです。
したがって、できれば応用情報技術者試験を受けて、合格をしておくことをおすすめします。たとえば、ある年の秋期試験で応用情報技術者試験に合格しておき、その1年後のデータベーススペシャリスト試験の合格を目指すという流れです。
応用情報技術者試験を、データベーススペシャリスト試験の予行演習として捉えるのか。
応用情報技術者試験も難しそうですが、スペシャリストを目指す以上、厳しい道のりなのは当然ですね。
午前Ⅱ試験の攻略法
次に午前Ⅱ試験対策です。これは過去問題が非常に参考になります。
情報処理技術者試験は全般的に、過去問題・
しかしそれだと、過去問題を丸暗記した人が合格してしまうのではないのですか?
午前Ⅱ試験対策として、丸暗記がある程度有効なのは確かです。同じ問題がいくつかそのまま流用されることもあります。しかし流用はそれほど多くありませんので、丸暗記だけだと合格は不可能です。
過去問題を解く中で、知らなかった知識がいくつもあるはずです。その知識を起点として、参考書やネット上の記事で知識を深掘りしていってください。たとえば、以下のような問題があったとします。
問題
あるエンティティを関係データベース上に実装しようとしたとき、その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として、適切なものはどれか。
- 【ア】 複合キーを構成する属性のうち、エンティティの性格を最もよく表している一つの属性を主キーとし、残りの属性を外部キー
(foreign key) にする。 - 【イ】 複合キーを構成する属性のうち、エンティティの性格を最もよく表している一つの属性を主キーとし、残りの属性を代替キー
(alternate key) とする。 - 【ウ】 連番などを値として与える列を新たに設けて主キーとし、複合キーの代理キー
(surrogate key) とする。 - 【エ】 連番などを値として与える列を新たに設けて主キーとし、複合キーを外部キー
(foreign key) にする。
この問題だけでも
主キーは、テーブルに1つだけしか設定できないはず。
その通りです。複合キーとは主キーが複数あるのではなく、主キーが複数の属性
代理キーなんて初めて聞きました。これは何ですか?
それは……代理のキーだろ。
主キーの候補のうち、主キーにならなかった項目が代理キーです。社員を特定するためには一般的には社員番号が使われますので、社員番号は主キーに最適です。社員を特定できる電話番号は、主キーとして採用できるかもしれません。しかし、電話番号ではなく社員番号を主キーとしたのであれば、電話番号は代理キーとなります。
(知らなかった……)
このような勉強を続けていけば、かなりの基礎知識が身につきます。
午前Ⅱ試験はデータベース分野以外からも出題されますが、午前Ⅰ試験をクリアできるのであれば、重点的な対策は不要でしょう。
午後Ⅰ試験の攻略法
いよいよ午後試験対策です。これも同じく、過去問題をやりこむことが重要です。
午後試験は午前試験とは異なり、過去問題の流用はまったくありません。ただし、似たようなテーマ・
在庫管理や販売管理? 確かに業務で何度も扱ってきたぞ。
それ以外のテーマとしては、どのようなものがありますか?
たとえばフェリー予約、オンライン学習プラットフォーム、農業機器などの変わり種のテーマもたくさんあります。
さすがの俺も、農業機器のデータベース設計をしたことはないなぁ……。
あまり一般的ではないテーマの問題は、しっかりと説明がされているケースがほとんどです。一方で、在庫管理や販売管理のような一般的なテーマであれば、説明が省かれていることがあります。
たとえば
引くに当たる?? なんて読むのですか?
"ひきあて"といって、注文を受けたときに、その注文を将来の出荷に向けて在庫に"予約"しておく処理なんだよ。
勉強になりました。
このように、業務知識を短期間で得られることも、午後試験を学習するメリットです。
午後Ⅰ試験は5ページ程度です。過去問題をやりこむ場合、5ページ程度であれば比較的手が付けやすいボリュームかと思います。
たとえば昼休みに問題文だけを軽く読んで、帰宅してから解き、答え合わせをすれば、1日1問です。これを平日に2日ほど頑張り、土日はそれぞれ1問ずつ進めます。これで、一週間で4問。一か月もあれば16問ほどになります。まずはこれを目標にしてみましょう。
最初は
解く量としては、
午後Ⅱ試験の攻略法
次に午後Ⅱ試験です。15ページほどあるため、午後Ⅰ試験に比べるとかなり疲れます。解いてから答え合わせをし、理解するのには、丸1日かかるかもしれません。そのため1日で1問ではなく、数日に分けて解くようにしましょう。たとえば1週間かけて1問、一か月で4問を目標にします。
また午後Ⅰ試験の学習は早々に切り上げて、午後Ⅱ試験に移る方法もおすすめです。午後Ⅰ試験と午後Ⅱ試験とで、大きな難易度の差はありません。そのため、午後Ⅰ試験を3問ほど解いて感覚を掴んだのなら、午後Ⅱ試験に移ることも検討します。午後Ⅱ試験を何問か経験したあとに午後Ⅰ試験を解いてみると、非常に簡単だという感覚が得られるはずです。難易度に差はあまりないのですが、ボリュームには大きな差がありますから、午後Ⅱ試験で慣れてしまうと、午後Ⅰ試験は楽に感じるはずです。
まとめ
でも毎日の仕事が忙しいなか、果たして勉強を続けることができるのか……?
多くの方が抱えているのが、この悩みです。私の考えでは、まったく無理をする必要はありません。今日から学習を進めてほしいとは思うのですが、毎日厳しいノルマを課すのではなく、1週間ごとに比較的緩いノルマを課すことをおすすめします。先ほどは
データベーススペシャリスト試験は単なる資格試験ではなく、体系的に知識を整理し、業務の中で曖昧だった理解をクリアにしてくれる貴重な機会です。また、合格を目指して努力する過程そのものが、将来の自分への大きな投資になります。
目の前の仕事に追われていると、つい自己投資を後回しにしてしまいがちです。だからこそ、意識的に一歩を踏み出すことが重要です。この試験に向けた取り組みが、きっとあなたの視野を広げ、キャリアの可能性を大きく広げてくれるはずです。
さっそく明日から、できる範囲で学習を進めてみます!
おう、お前に負けないように俺も頑張るぞ!
あなたの挑戦を心から応援しています。