【応用情報】令和7年度春期(午後:問6 データベース)第1回 - ER図
今回は、令和7年度春期応用情報技術者試験の午後問6「データベース」 について解説します。
この記事は、下記の方々を対象としております。
- 応用情報技術者試験を受験する、且つ午後にデータベースを選択する。
- データベーススペシャリスト試験を受験するが、応用情報レベルから復習したい。
- 開発エンジニアでデータモデリングやDB関連の設計を担当する、もしくは目指している。
試験問題の構成や難易度、SQLや設計のポイントを整理しました。
下記の内容を全4回に分けてご紹介します。
- 第1回(今回):設問1(ER図 - 複合主キー)
- 第2回:設問2(SQL - 結合と集計)
- 第3回:設問3(SQL - ソートと条件考察)
- 第4回:設問4(テーブル定義の変更)
データベース関連の過去問でしっかり点を稼ぎたい方に役立つ内容となっていますので、よろしければ参考にしてみてください。
問題全体の概要と出題構成
問題冊子は全4ページ程度で構成され、ほとんどが穴埋め問題となっています。
一部は文字数制限付きの記述問題も出題されています。
テーマは釣り具販売店が実施するキャンペーンの販売管理システムです。
キャンペーンの種類や売上実績の集計、店舗エリアの見直し、Webキャンペーンの定期的な見直しなど多面的な問題が展開されます。
※出典:令和7年度 春期 応用情報技術者試験 午後 問題冊子
設問1:テーブルのリレーションと空欄補充問題
最初の設問は、穴埋め問題で空欄は『a』『b』の2つです。
ここでは順番が前後しますが、下記の理由により難易度の易しい順 『b』→『a』で解説します。
- bは、ER図だけで仮説を立てて解くことが可能なため(仮説の裏付けとして問題文を確認する)
- aは、ER図だけではなく問題文から読み解くことが必須であるため
- 上記2点より、読解力が必要な分『a』の方が『b』よりやや難しいと判断したため
キャンペーン販売管理システムの設計とER図の考察(空欄:b)
最初に取り組むのは、商品テーブルとキャンペーン商品テーブルのリレーションの設計です。
ここで重要なのは、商品番号を主キーとする商品テーブルと、キャンペーン番号+商品番号の複合主キーを持つキャンペーン商品テーブルの関係性です。
キャンペーン商品テーブルは、キャンペーン番号を外部キーとしてキャンペーンテーブルと結びついている。
それにより『キャンペーン番号+商品番号』の複合主キーとなっており、1つの商品は複数のキャンペーンにまたがる可能性がある。
※キャンペーン商品のイメージ
キャンペーン | 商品 |
---|---|
サマーキャンペーン | 高級な釣り竿 |
サマーキャンペーン | お手頃なルアー |
新生活応援キャンペーン | 高級な釣り竿 |
新生活応援キャンペーン | お手頃なルアー |
逆に、1つの商品が『1つのキャンペーンしか適用できない』とは考えにくい(小売業として)
※各商品が1つのキャンペーンにしか適用できないイメージ
キャンペーン | 商品 |
---|---|
サマーキャンペーン | 高級な釣り竿 |
新生活応援キャンペーン | お手頃なルアー |
つまり、商品テーブルとキャンペーン商品テーブルの関係は1対多となる。
多重度が『1』なのか『多』なのか、迷う時があると思います。
問題文から探すのが基本ですが、どうしてもヒントが見つからない場合は、そのデータが利用される状況をイメージすると良いでしょう。
店舗エリアと郵便番号のリレーション設計(空欄:a)
次に、店舗エリア詳細テーブルに必要な属性を考えます。
店舗エリア詳細テーブルは店舗エリア番号ともう一つの属性(空欄:a) の組み合わせが複合主キーであると予想できます。
理由は、店舗エリアテーブルとの関係が『1対多』 となっているためです。
つまり、店舗エリア詳細テーブルの店舗エリア番号は重複することがあり得るので、店舗エリア番号以外の主キーが無いと、成立しません。
では、結局なにが複合主キーになるのか?
それは、ER図の手前に記載のキャンペーン概要に説明が記載されています。
どうやら、郵便番号で識別するようです。
ただし、そのまま『郵便番号(と実線のアンダーバー)』を付けた解答では、減点されるかもしれません。
なぜなら、郵便番号は他のテーブル(会員テーブルや店舗テーブル)にも存在するため、表記を揃える必要があると考えられるためです。
他に倣うと、テーブル名を付加するようですが、模範解答は店舗エリア郵便番号となっています。
意味としては確かに模範解答がベストとは思いますが、他のテーブルと同じ法則ではありませんね。
テーブル名は店舗エリア詳細なので、店舗エリア詳細郵便番号でも点数はもらえるのではないか?と、個人的には考えています。
さいごに
これで、設問1は終わりです。
問題文の全体ではなくポイントだけ紹介しているので、分かり辛いところもあるかもしれません。
過去問を見ながらお読みいただくと、理解が深まると思います。
また、私の個人YouTubeでも解説もしております。
文章より動画の方が良いという方は、こちらの動画もぜひご覧ください。
次回は設問2で、実際に動かせるSQLもご紹介します。引き続き、よろしくお願いします。
ここまでお付き合い頂き、ありがとうございましたm(_ _)m
Discussion