Agent Grow Tech Notes
🖇️

【応用情報】令和6年度秋期(午後:問6 データベース)第1回 - ER図

に公開

今回は、令和6年度秋期応用情報技術者試験午後問6「データベース」 について解説します。

この記事は、下記の方々を対象としております。

  • 応用情報技術者試験を受験する、且つ午後にデータベースを選択する。
  • データベーススペシャリスト試験を受験するが、応用情報レベルから復習したい
  • 開発エンジニアでデータモデリングやDB関連の設計を担当する、もしくは目指している。

試験問題の構成や難易度、SQLやインデックス設計のポイントを整理しました。
下記の内容を全3回に分けてご紹介します。

  • 第1回(今回):設問1(ER図 - 自己結合、連関エンティティ)
  • 第2回:設問2(SQL - 再帰的クエリ)
  • 第3回:設問3(インデックス設計)

データベース関連の過去問でしっかり点を稼ぎたい方に役立つ内容となっていますので、よろしければ参考にしてみてください。

問題全体の概要と特徴

今回の問題は、トレーディングカードの個人間売買サイト構築をテーマにしています。
特徴的なのは、SQLでは再帰的クエリが出題された点と、インデックス設計に関する問題が含まれていたことです。
これらは過去問ではあまり見られなかった内容で、ネット上でも「難しかった」という声が多く挙がっています。

私も解いてみましたが、解けないわけではないものの、かなり考えさせられる問題でした。
特にLIKE句を用いたワイルドカード検索のSQL記述については、ここまで詳細に書かせる問題は珍しい印象です。
※上記の点については、次回解説します。

設問1:テーブルのリレーションと空欄補充問題

※出典:令和6年度 秋期 応用情報技術者試験 午後 問題冊子

カテゴリーの自己結合(a)


カテゴリーは階層構造を持っており、上位カテゴリーと子カテゴリーの関係は1対多です。
トレーディングカードのブランドやシリーズにおいても1対1は考えにくいので、外部キーを用いて1対多のリレーションを設定するのが自然です。
これにより、カテゴリー同士の自己結合を表現します。

自己結合にフォーカスした過去の記事です。今回と同じ過去問を使っていますので、よろしければ参考にどうぞ。
【応用情報】午後『データベース』のリレーションを制する!第4回『自己結合』編

取引と発送のリレーション(b)



取引テーブルと発送テーブルは取引IDで結びついています。
業務要件によると、1回の取引に対して発送は1回のみ可能で、分割発送や複数取引をまとめて発送することはできません。
つまり、取引と発送は1対1の関係となります。

1対1の考え方については、使っている過去問は違いますがこちらの記事を参考にどうぞ。
【応用情報】午後『データベース』のリレーションを制する!第2回『必ず1対1』編

発送に必要な属性(c)



発送テーブルの外部キーには取引IDと配送方法IDがありますが、追跡番号や配送状況は外部キーではありません。
追跡番号は配送状況を管理・確認するために必要な項目なので、ここでは追跡番号を記入するのが適切です。

利用者のフォロー関係(d)


利用者同士のフォロー関係は「連関エンティティ」として表現され、フォロー元・フォロー先両方が主キーとなる複合キーで管理されます。

1つのテーブル内で2つの利用者ID(フォロー『元』と『先』)を主キーとして設定します。
これにより、フォロー元の利用者フォロー先の利用者の実質『多対多』の組合せを実現しています。

連関エンティティについても、使っている過去問は違いますがこちらの記事を参考にどうぞ。
【応用情報】午後『データベース』のリレーションを制する!第5回『連関エンティティ』編

さいごに

これで、設問1は終わりです。
問題文の全体ではなくポイントだけ紹介しているので、分かり辛いところもあるかもしれません。
過去問を見ながらお読みいただくと、理解が深まると思います。

また、私の個人YouTubeでも解説もしております。
文章より動画の方が良いという方は、こちらの動画もぜひご覧ください。

https://youtu.be/lVPQTkN_D8E?feature=shared

ここまでお付き合い頂き、ありがとうございましたm(_ _)m

Agent Grow Tech Notes
Agent Grow Tech Notes

Discussion