2016年12月22日木曜日

[平成26年度秋] 午後 問4解説

[問題文・解答]


平成26年度10月に実施された基本情報技術者試験の午後試験の問題・解答はIPA公式ページからダウンロード出来ます。(以下リンク)

[問題概要]


この問題は、選択問題で問2〜問7のうち4問を選択する必要があります。
出題分野はデータベースで、問題の題材は書籍を管理する関係データベースの設計及び運用です。
資料室の書籍の貸出状況・履歴を管理するデータベースの設計について問われます。SQLの基礎的知識が必要な問題です。

[設問1]


図1の書籍表では、現在の書籍の貸出状況は管理していますが、返却の際に貸出日、社員番号等がnullに設定されるため、過去の履歴情報は保存されません。従って、履歴情報が必要になる「エ」の書籍ごとの累積貸出回数と「カ」の利用者ごとの貸出履歴が検索出来ない情報となります。

[答] エ、カ

[設問2]


貸出表から返却が延滞したレコードを選択し、そのレコードに対応する社員番号と書籍名(書籍番号から書籍表を検索)を表示すればよいです。
延滞したレコードは以下の2つのいずれかとなります。
①既に返却されており、返却日が返却予定日より後である。
②未返却(返却日がnull)で、返却予定日が現在の日付より前である。

これらの条件をSQL文で表すとそれぞれ以下のようになります。
① 貸出表.返却日 > 貸出表.返却予定日
② 貸出表.返却日 IS NULL AND 貸出表.返却予定日 < CURRENT_DATE
上記①②の条件をOR文で結合すればよいため「ア」のSQL文が適切です。

[答] ア

[設問3]


設問のSQL文では、書籍表と貸出表を書籍番号によって結合し、書籍番号ごとにグループ分けしています。従って、各グループのレコード件数がその書籍の累積貸出回数となります。従って、グループごとのレコード件数をCOUNT文を用いて求めればよいため、「ア」が正解です。

[答] ア

[設問4]


設問中の「書籍名を入力して貸出中か否かを表示する処理で、レスポンスの低下が顕在化した。レコード件数を確認したところ、書籍表が865件、貸出表が10,382件だった」の記述より、サイズの大きい貸出表から指定の書籍番号を検索する処理に時間がかかっていることが想像出来ます。
インデックスをある列に設定することでその列に関する検索を高速化出来ることが期待出来るため、この場合は貸出表の書籍番号にインデックスを設定するのが最も効果的です。よって「イ」が正解です。

[答] イ

上記の解説は問題と解答を元に自分なりの考え方を記述しており、間違っている部分もあるかと思いますので、ご了承願います。また、誤りについては正しい考え方をご指摘・ご教授頂けると助かります。


0 件のコメント:

コメントを投稿