ソフトⅡコース担当 ブログのおにーさまこと高橋です。
昨日、情報処理技術者試験が実施されました。手ごたえはいかがですか?春の試験は、直前まで春休みです。休み期間中にきちんと勉強したかどうかが問われますね。
では、今回も基本情報技術者試験の午後問題解答解説を掲載したいと思います。
今日は問3です。問題は、IPAのサイトに掲載されています。そちらを参照してください。
問3は、データベースの問題です。問題文、解答群をよく読んで解答すれば、それ程難しい問題ではないと思います。
設問1
要望の中にある項目が、図1の列(社員番号、日付、精算額)にあるか否かで判断できます。
- 要望1:精算表には社員番号別日付別の精算額があるだけです。精算の明細は含まれていません。従って、要望1には対応できません。
- 要望2:日付ごとに精算額の合計を求めることで、ある日の売上合計額を求めることができます。従って、要望2には対応できます。
- 要望3:精算表には料理に関する列はありません。従って、要望3には対応できません。
- 要望4:精算表には皿数に関する劣位はありません。従って、要望4には対応できません。
以上より、対応できる要望は要望2、すなわち解答はイ)となります。
設問2
FROM句に複数の表が列挙されている時、WHERE句で結合条件を書く必要があります。設問2のSQL文では、「FROM 料理表,精算表,明細表」と3つのテーブルが列挙されているので、少なくともそれらを結合する条件を空欄に入れる必要があります。
- 明細表は、「精算コードが等しい」という条件で精算表を参照します。
- 明細表は、「料理コードが等しい」という条件で料理表を参照します。
この2つの結合条件から
- 精算表.精算コード=明細表.精算コード AND 明細表.料理コード=料理表.料理コード
が必要です。この時点でア)は間違いであることがわかります。他の条件として、
- 肉じゃがの購入数が必要なので「料理表.料理名=’肉じゃが’」
- 社員ごとに返金するので社員ごとの皿数が必要となるため「GROUP BY 精算表.社員番号」
が必要です。以上より、解答はエ)になります。
設問3
「ある社員の、ある期間における1回の精算当たりの平均カロリー」を求めるために必要な項目を考える。
- 「ある社員」は、精算表の社員番号を用います。
- 「ある期間」は、精算表の日付を用います。
- 「カロリー」は、料理表に追加されたカロリーを用います。
- 文面にはありませんが、1回の精算での料理が必要です。これは、明細表の料理コードを用います。
以上より、精算表、明細表、料理表が必要で、この3つの表を結合します。従ってaにはエ)が入ります。
3つの表の結合には多くの処理が必要です。そこで、精算1回ごとにあらかじめ計算しておけば効率よくなります。精算表に精算ごとの合計カロリーを記録しておくと、必要な期間の平均カロリーは、その値から求めることができるようになります。従ってbにはア)が入ります。
設問4
「FROM 料理表,明細表」からWHERE句には「料理表.料理コード=明細表.料理コード」が必要です。この段階でア)かウ)のいずれかです。販売皿数は、各明細に記録された皿数の合計です。解答はウ)になります。
2012年(平成24年度)春期の解説
- 平成24年度 春 基本情報技術者試験 【問13】(その2)
- 平成24年度 春 基本情報技術者試験 【問13】(その1)
- 平成24年度 春 基本情報技術者試験 【問2】
- 平成24年度 春 基本情報技術者試験 【問3】
- Date:
- この記事を
友だちに教える - LINE
- - HatenaBookmark
- GooglePlus