Agent Grow Tech Notes
📊

【過去31回分】応用情報技術者試験(午後 問6:データベース )過去問と模範解答を見て傾向と対策を考えてみた。

2024/10/22に公開

記事の概要

応用情報技術者試験(午後 問6:データベース) について、IPAにて公開されている過去問を全て見た上で、いくつかの切り口で分析した。
その結果「こういう考え方が有利に働くかも?」という点について解説する。

尚、あくまでも参考程度またはいざという時の最終手段としてご利用頂きたい。
ご自身での勉強は、まず十分余裕を持って取り組もう。

対象者

応用情報技術者試験の受験予定者

解きやすい問題

どういう問題が解きやすい?

人それぞれ、スキルやバックボーンにより『何が解きやすいか』は異なるが、今回は下記の通りとした。

  • ER図の穴埋めが多い
  • SQL文の穴埋めが多い
  • 上記2つ以外の出題形式が少ない(※例えば「30文字以内で書きなさい」など)

なぜ『解きやすい』のか?

SQLは『知らないと書けない』と思われがちだが、過去問を解くことでパターンとして覚えられる。
これから紹介することだが、出題の傾向は大きく変わることはあまり無く、むしろ「前回や前々回も出た」なんてこともあったりする。
そのように蓄積した知識をぶつけやすいのが『穴埋め』となる。

特に、ER図のリレーションの穴埋めは実質選択式みたいなものである。

分析方法

傾向分析のポイント

穴埋めを高確率で正解に導くためには、2つのポイントを押さえる。

  • 穴埋めはどれくらい出題されるか?
  • どんなことが問われやすいのか?

切り口

上記2つのポイントを、3つの切り口から分析する。

  1. 穴埋め問題割合の傾向
  2. ER図のリレーションどの矢印を書くことが多いか?
  3. SQL頻出キーワードは何か?

では、順番に紹介していく。

1.穴埋め問題の割合

過去31回の穴埋め率を見て、筆者は下記の通り考える。

  • よほどのことが無ければ半分以上穴埋め問題である可能性が高い。
  • 概ね60%~80% の範囲で落ち着いている印象がある。

つまり、得点源になり得るということである。
あとは穴埋め以外の『何十文字以内で答えよ』などを部分点で稼げば、高得点が狙える。

尚、出題なしの回は『ER図』と『SQL』が無いだけで、穴埋め自体はある(ただし何が問われるのかは回により異なる)

【参考】平成21年~令和6年のER図・SQLの穴埋め出題率

※筆者が調査した結果である。

  • H21~H27頃までは不安定
  • H28~R5までは落ち着いていた
  • R6春やや下がったが、R6秋では80%に上がっている
試験 出題率 備考
R6秋 80%
R6春 54% 少ない
R5秋 60% やや少ない
R5春 70%
R4秋 91% かなり多い
R4春 60% やや少ない
R3秋 63%
R3春 60% やや少ない
R2秋 70%
R1秋 70%
H31春 63%
H30秋 88% かなり多い
H30春 63%
H29秋 80%
H29春 80%
H28秋 80%
H28春 77%
H27秋 44% かなり少ない
H27春 75%
H26秋 出題なし ※内容的に出題なし
H26春 88% かなり多い
H25秋 81%
H25春 85% かなり多い
H24秋 50% かなり少ない
H24春 70%
H23秋 77%
H23特別 77%
H22秋 83%
H22春 57% 少ない
H21秋 出題なし ※内容的に出題なし
H21春 66%

2.リレーション記載の割合

こちらも同様に、過去の傾向を見た限りで筆者は下記の通り考える。

  • 1対多が最も可能性が高い。
  • 2本以上ある場合は1対1も疑う。
  • ゼロ表記あり』が、そろそろまた来そうな気がする。

どうしても分からない、もしくは時間がない場合は『とりあえず1対多』という選択もアリだ。
それでも『1対多』の場合は矢印の向きに気を付けよう。
外部キー側(点線のアンダーライン)が矢印の『矢』になると覚えておこう。
ただし、主キーと外部キーを兼ねて実線になっている場合は、よく考えないと分からないだろう。

ちなみに、問題文の凡例には『多対多』が記載されていることがあるが、基本的に使わない
なので実質は『1対多』と『1対1のみである

また、ゼロ表記ありは紐づく相手が『必ず存在する』か『しない場合もある』かを、『●』と『○』で記載する。
出題の可能性は低いが、周期的にまた来そうな気もするので、一応どんなものなのかくらいは確認しておこう。

【参考】平成21年~令和6年のER図リレーション情報

※筆者が調査した結果である。

  • ほとんど『1対多』
  • ほとんど1本、最大でも3本。
  • 出題が無かったこともあるが、令和では今のところ毎回出題されている。
試験 多重度 ゼロ表記有無 本数 備考
R6秋 ※未公開 なし 3 予想では『1対多』が2本、『1対1』が1本
R6春 1対多 なし 1
R5秋 1対多 なし 1
R5春 1対多 なし 1
R4秋 1対多 なし 3
R4春 1対多 なし 1
R3秋 1対多 なし 1
R3春 1対多 なし 1
R2秋 1対多 なし 1
R1秋 1対多 なし 2
H31春 1対多 ,1対1 あり 2
H30秋 1対多 なし 3 穴埋めではなく、複数のエンティティに記述する形式で出題されている
H30春 出題なし 出題なし 0
H29秋 1対多 なし 2
H29春 1対多 なし 1
H28秋 1対多 なし 1
H28春 1対多 なし 2
H27秋 1対多 なし 1
H27春 1対多 なし 1
H26秋 出題なし 出題なし 0
H26春 1対1 なし 1
H25秋 1対多 なし 2
H25春 1対多 なし 3
H24秋 1対多 あり 3 両端にゼロ許容のパターンあり
H24春 出題なし 出題なし 0
H23秋 1対多 なし 2
H23特別 出題なし 出題なし 0
H22秋 1対多 なし 2
H22春 出題なし 出題なし 0
H21秋 出題なし 出題なし 0
H21春 1対多 なし 1

3.SQLの頻出キーワード

こちらはバラエティに富んでいるので、過去の傾向を見ただけでは判断は難しい
しかし、最低限知っておく必要があるものは下記の通り考える。

  • ソート『ORDER BY』はウィンドウ関数でも使う
  • 集計『GROUP BY』と集計関数『SUM()』『MAX()』『AVG()』など。
  • 実は集計関数は『COUNT(*)』が多い。
  • 集合演算は『UNION ALL』の可能性が高い
  • 内部結合『INNER JOIN』 と外部結合『LEFT OUTER JOIN』が多い。
  • 範囲を絞る『BETWEEN』も当たり前のように出る

あとはもう、過去問を解いて覚えられるものは覚える
下記の表を参考に、上記以外にも「出そうだな」と思ったものを勉強しておくのも有効だろう。

【参考】平成21年~令和6年のSQL出題キーワード情報

※筆者が調査した結果である。

  • 大体はDML
  • 筆者はR4秋飛び抜けて難しく、次いでR6秋難しいと感じた。
  • DX推進の影響によりウィンドウ関数が出題されることが増えた
試験 構文の主な出題内容 備考
R6秋 ※未公開 予想では『WITH RECURSIVE』『LIKE』とか?
R6春 『BETWEEN』『ORDER BY』 ORDER BYは2回連続
R5秋 OVER』『ORDER BY』 ウィンドウ関数に必須のOVER
R5春 INNER JOIN』『LEFT OUTER JOIN』『BETWEEN』『GROUP BY』『COUNT(*)』 結合が2種類という珍しい出題
R4秋 『DEFAULT』『PRIMARY KEY』『FOREIGN KEY 前回に続きDDLの出題。特にFOREIGNは、とっさに書けないのでは?
R4春 ALTER TABLE』『SET ※UPDATE文』 DDLの出題。ALTERは普段から使ってないと厳しい?
R3秋 『COUNT(*)』『VALUES』『UNION』『ON ※結合用』 INSERT文に必要なVALUESも意表を突かれる?
R3春 『INNER JOIN ~ ON』『GROUP BY』
R2秋 NOT EXISTS』『HAVING COUNT(*)~』『MIN()』 EXISTSとHAVINGは午前試験や基本情報でも見ることはあるが、いざ書けるか?
R1秋 『SUM()』
H31春 UNION か UNION ALL』『EXISTS』『SUM()』『>= CURRENT_DATE この回は幅広く知らないと厳しい?
H30秋 GRANT』『COUNT(*)』 珍しくDCLが・・・(GRANT)
H30春 『GROUP BY』『ORDER BY』
H29秋 『SUM()』『INNER JOIN ~ USING 内部結合にONを使わずUSINGとするパターン
H29春 キーワード特になし
H28秋 『SUM()』『ORDER BY』『SET ※UPDATE文』
H28春 『LEFT OUTER』『ORDER BY ~ DESC と ASC ソートで降順にするためのDESC。ASCは昇順だがデフォルトでは不要
H27秋 『IS NULL』
H27春 EXISTS 意外と書けない?
H26秋 出題なし ※内容的に出題なし
H26春 『COUNT(*)』
H25秋 『MIN()』
H25春 『LEFT OUTER JOIN』『IS NULL』『ORDER BY ~ DESC ソートで降順にするためのDESC
H24秋 出題なし
H24春 UNION か UNION ALL』『IS NULL』 集合演算はUNIONのように『どっちでも正解』パターンがよくある
H23秋 『SUM()』『BETWEEN』『ORDER BY』
H23特別 CREATE TABLE』『PRIMARY KEY』『SUM()』 2回連続PRIMARY KEY
H22秋 PRIMARY KEY』『SUM()』 PRIMARYは特に普段から使わないと書けない
H22春 出題なし
H21秋 出題なし
H21春 『SUM()』『UNION ALL』『DISTINCT DISTINCTってこの回しか出てないの?!

まとめ

では、3つの切り口を全て紹介したので、ポイントをまとめる。

  • ER図とSQLの穴埋めは、データベースの問題中60%~80%を占めるので得点源である。
  • ER図のリレーションは『1対多』の場合が多い。迷ったら『1対多』※間違えるリスクを覚悟で
  • SQL頻出のものは最低限押さえて、他も出来る限り過去問を解く時に覚える

最後に

今回この記事を執筆しようと考えたきっかけだが、筆者は現在YouTube応用情報技術者試験データベースについて、過去問解説動画を作成している。

動画は試験回ごとの紹介となるのだが、そうではなく試験の傾向一覧形式で見られるものを作りたいと思い「そういうものはブログで表現した方が良い」と考えたのである。

基本的には、動画もこの記事も考え方は同じで、言ってみればこの記事の考え方に基づいて動画で1回分ずつ解いているようなイメージとなる。

もし興味があれば、試しに観てみて欲しいと思うのでリンクを貼っておく。

https://youtu.be/cxqFk_qOn00

それでは、今回は以上にて締めようと思う。
ここまで読んで頂き、多謝!!m(_ _)m

Agent Grow Tech Notes
Agent Grow Tech Notes

Discussion