2016年12月15日木曜日

[平成27年度春] 午後 問3 解説

[問題文・解答]


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

[問題概要]


この問題は、選択問題で問2〜問7のうち4問を選択する必要があります。
出題分野はデータベースで、問題の題材は自治会員の情報を管理する関係データベースの設計及び運用です。
自治会員データベースの正規化やSQL操作について問われ、これらの基礎知識が無いと解答は厳しい問題です。

[設問1]

各正規化の概要は以下の通りです。
第1正規化:繰り返し項目を独立させ、主キーを設定する。
第2正規化:主キーが複数項目から構成される場合に、主キー中の一部の項目で一意に特定出来る項目を別表に分ける。
第3正規化:主キー以外の項目によって、一意に特定出来る項目を別表に分ける。

a) 図1の帳票は、1つの世帯主に対して世帯主も含めた同居者情報がぶら下がっており、繰り返し項目となっています。従って、まず第1正規化によって世帯表と会員表を分けてそれぞれ世帯番号、会員番号を主キーとして設定します。よって正解は「イ」となります。

b) 世帯表、会員表共に主キーは1項目なので第2正規化は不要です。次にP.14下段に「帳票の記載で"男"と"男性"のように同じ意味を表すデータに対する定義の一意性を保証できる」ように第3正規化として続柄、性別を別表に分けています。従って「エ」が正解です。

[答] a) イ b) エ

[設問2]


まず、会員が1940年よりも前に生まれたかどうかの判定文は以下のいずれかです。
・会員表.生年月日 < 19400101
・会員表.生年月日 <= 19391231
よって、「ウ」「エ」となります。ここで、「エ」の場合は世帯番号と会員番号の2項目の組合せでグループ分けしているために1つの世帯に条件に該当する会員が複数いる場合に世帯番号を重複して表示してしまいます。従って、世帯番号のみでグループ分けしている「ウ」が適切です。

[答] ウ

[設問3]


設問中のSQL文では、世帯表と会員表を世帯番号で結合し、班ごとにグループ分けしています。よって、班ごとにその班に所属している会員情報が1つのレコードとなっている表が構成されています。
班ごとの会員数は、この表に出てくるレコード数をカウントすればよいのでCOUNT(*)で求められます。
班ごとの世帯数は、この表に出てくるレコード中の世帯番号を重複を除いてカウントすればよいのでCOUNT(DISTINCT 世帯表.世帯番号)となります。
よって「ウ」が正解です。

[答] c) ウ

[設問4]


まず、会員表と世帯表を結合する必要があります。結合項目は世帯番号なので
会員表.世帯番号=世帯表.世帯番号となります。
次に生年月日が20030402〜20090401の範囲にある会員の判定は
会員表.生年月日 BETWEEN 20030402 AND 20090401
となりため、これら2つの条件を満たす「エ」が正解です。

[答] d) エ

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

0 件のコメント:

コメントを投稿