はじめに
今日はハーフマラソンに初挑戦し、2時間1分3秒で完走しました! サブ2を達成できず、悔しいです
アドベンドカレンダーも完走できるように頑張ります!
技術とは関係のない話から始まりましたが、今日からアドベントカレンダー2024が始まります。秋に受けたデータベーススペシャリスト試験のまとめと受験までに勉強した内容を25日間でまとめながら共有していきたいと思います。
本文
午前試験のまとめ
初日の今日は、午前試験のまとめをします。ちなみに、合否の発表は2024年12月26日ですが、自己採点の結果、不合格が確定していますw 来年またチャレンジします!
-
試験情報
- 実施日: 2024年10月13日
- 問題: IPA公式サイト
午前Ⅱ試験の傾向
午前Ⅱ試験は、過去問やその応用が出題されていました。25問中18問が「データベース」に関する問題で、その中でも「データベース設計」、「データ操作」、「トランザクション処理」が約7割を占めていました。
間違えた問題とその分析
私が間違えたのは問題番号7から11までの5問で、すべて「データ操作」に関する問題です。
- 問題7: AVG集合関数で平均金額を算出する問題。見落とし: WHERE句の条件「商品ランク='A'」を見落としていました
- 問題8: 隣接リストからSQLでリーフノードを取得する問題。理解不足: リーフノードの定義と集合演算子(EXCEPT、INTERSECT、UNION、UNION ALL)の違い
- 問題9: 表の等結合に関する問題。理解不足: 等結合と自然結合の違いを混同していました
- 問題10: SQL文の副問い合わせに関する問題。理解不足: GROUP BY句とサブクエリの関係性
- 問題11: 集合演算に関する問題。理解不足: 和両立の条件と集合演算の特性
詳細な分析
-
問題7
- 誤答原因: WHERE句の「商品ランク='A'」を見落とし、LEFT OUTER JOINで一致したすべての商品の平均を算出してしまいました
- 対策: SQL文を解く際には、条件文を丁寧に確認する
-
問題8
- 誤答原因: リーフノードの定義と集合演算子の違いを正確に理解していませんでした
- リーフノード: ツリー構造で子を持たないノード
-
集合演算子の違い:
- EXCEPT句: 最初のSELECT結果から2つ目のSELECT結果を差し引く
- INTERSECT句: 両方のSELECT結果の共通部分を返す
- UNION句: 両方のSELECT結果の和集合を返し、重複は一つにまとめる
- UNION ALL句: 重複も含めてすべての結果を返す
- 対策: 各集合演算子の機能と用途を明確に理解する
-
問題9
- 誤答原因: 等結合と自然結合の定義を混同していました
-
等結合: '='演算子で結合し、結合キーが両方のテーブルに表示される
-
例:
SELECT * FROM 商品表 INNER JOIN 納品表 ON 商品表.商品番号 = 納品表.商品番号;
-
例:
- 自然結合: 同名の列で結合し、重複する列は一つにまとめる
- 対策: 結合方法の違いと特徴を整理して覚える
-
問題10
- 誤答原因: GROUP BY句を使用したサブクエリの結果が各行に適用されると誤解していました
-
ポイント: サブクエリはメインクエリごとに実行されるため、
S1.性別 = S2.性別
を使って各行と比較する必要があります - 対策: サブクエリとメインクエリの実行関係を理解し、適切な条件設定を行う
-
問題11
- 誤答原因: 和両立の条件と集合演算の特性を正確に理解していませんでした
-
和両立の条件
- 列数が同じであること
- 対応する列のデータ型が同じであること
-
集合演算と和両立
- 必要: UNION、INTERSECT、EXCEPT
- 不要: 直積(CROSS JOIN)
- ポイント: 必要な演算では共通項を見つけるために条件が揃っている必要があります
- 対策: 和両立が必要な演算とその理由を理解する
来年に向けて
過去問題が多く出題されているので、時間をかけて徹底的に解くことが必要になると思います。加えて、セキュリティなどのデータベースに関する知識以外も理解しておく必要があります。
まとめ
今回の振り返りで、自分の理解不足な点が明確になりました。特に、SQLの基本的な概念や集合演算子の機能を再確認する必要があります。来年の試験に向けて、これらの弱点を克服し、より深い理解を目指して学習を進めていきます。