総視聴再生時間43万分以上(2017年5月13日現在)の動画で基本情報技術者試験の過去問&キーワード解説!スキマ時間に動画!〜これじょIT〜

PR広告

平成27年度秋基本情報技術者試験 午後問3 データベース 設問1

TOP :

平成27年度秋基本情報技術者試験 午後問3 データベース

電子部品の出荷データを管理する関係データベースの運用に関する次の記述を読んで、設問1~4に答えよ。

 C社は、電子部品を製造販売する会社である。

 ある期間に出荷した特定の電子部品について、製造装置の設定ミスによる不具合が発生しているおそれがあるので、顧客への連絡と出荷済みの電子部品の無償交換(回収及び再出荷。以下、リコールという)を実施することにした。

 出荷情報は、図1に示す表で管理されている。下線付きの項目は主キーを表す。

平成27年度秋応用情報技術者試験午後過去問3 データベース

設問1

リコールの対象となる電子部品の出荷先の顧客番号、顧客名、出荷番号、出荷日、出荷数を、顧客番号の昇順に表示する。リコールの対象となる電子部品の部品番号は"007551"で、出荷日は 2015年1月10日 から 2015年1月20日 までである。次のSQL文のaに入れる正しい答えを、解答群の中から選べ。

解答群

  • ア 出荷表.出荷日='20150110' OR 出荷表.出荷日='20150120'
  • イ 出荷表.出荷日=ANY('20150110'、'20150120')
  • ウ 出荷表.出荷日 BETWEEN '20150110' AND '20150120'
  • エ 出荷表.出荷日 IN ('20150110'、'20150120')

解説

aに入るのは、問題文の「出荷日は2015年1月10日から2015年1月20日までである」の部分です。

WHERE句のBETWEENはこのような範囲指定をします。選択肢の「ウ 出荷表.出荷日 BETWEEN '20150110' AND '20150120'」が、該当します!

設問2

C社では、電子部品を単品で出荷するだけでなく、複数の電子部品を同梱(こん)したパッケージも出荷している。このパッケージにも一意の部品番号が割り振られている。パッケージの同梱部品の情報は、図2に示すパッケージ表で管理されている。

 リコールの対象となる電子部品がパッケージにも含まれていることが判明したので、該当するパッケージの出荷情報も含めて表示するよう設問1のSQL文を変更する。次のSQL文のbに入れる正しい答えを、解答群の中から選べ。ここで、aには設問1の正しい答えが入っているものとする。また、パッケージの同梱部品にパッケージが含まれることはない。

平成27年度秋応用情報技術者試験午後過去問3 データベース

SELECT 顧客表.顧客番号, 顧客表.顧客名, 
       出荷表.出荷番号, 出荷表.出荷日, 出荷表.出荷数
   FROM 顧客表, 出荷表
   WHERE 出荷表.顧客番号 = 顧客表.顧客番号 AND 
         b AND
	 a 
   ORDER BY 顧客表.顧客番号

解答群

ア (出荷表.部品番号 = '007551'
    AND 出荷表.部品番号 = ANY 
	    (SELECT パッケージ表.同梱部品 FROM パッケージ表))
イ (出荷表.部品番号 = '007551'
    AND 出荷表.部品番号 = ANY 
	    (SELECT パッケージ表.部品番号 FROM パッケージ表))
ウ (出荷表.部品番号 = '007551'
    OR 出荷表.部品番号 = ANY 
	    (SELECT パッケージ表.同梱部品 FROM パッケージ表
		        WHERE パッケージ表.部品番号 = '007551'))
エ (出荷表.部品番号 = '007551'
    OR 出荷表.部品番号 = ANY 
	    (SELECT パッケージ表.部品番号 FROM パッケージ表
		        WHERE パッケージ表.同梱部品 = '007551'))

解説

設問2をみると、通常の部品だけでなくパッケージも存在し、部品表「だけでなく」パッケージ「も」検索対象にする必要があります。

この部品表「だけでなく」パッケージ「も」はORで表現します(この時点で選択肢のアとイが消えます)。

あとは、パッケージに含まられている部品を検索するサブクエリを探します。

SELECT パッケージ表.部品番号 FROM パッケージ表 WHERE パッケージ表.同梱部品 = '007551'

はパッケージ表の同梱部品からリコール対象の部品'007551'をフィルタし、その部品番号を抽出します。複数の部品番号がある場合もANY句で受け取ることができます。

従って正解は

エ (出荷表.部品番号 = '007551'
    OR 出荷表.部品番号 = ANY 
	    (SELECT パッケージ表.部品番号 FROM パッケージ表
		        WHERE パッケージ表.同梱部品 = '007551'))

となります!

設問3

今回のリコールの対象となる電子部品の出荷金額の合計を表示する。次のSQL文のcに入れる正しい答えを、解答群の中から選べ。ここで、abには設問1及び設問2の正しい答えが入っているものとする。

SELECT c AS 合計出荷金額 
   FROM 出荷表 
   WHERE b AND 
                a

解答群

  • ア AVG(出荷表.出荷金額)
  • イ COUNT(出荷表.出荷金額)
  • ウ MAX(出荷表.出荷金額)
  • エ SUM(出荷表.出荷金額)

解説

問題文に「電子部品の出荷金額の合計を表示する。」とあり、求めるのは合計です。合計を求める関数は「SUM」なので「エ SUM(出荷表.出荷金額)」となります!

ちなみに...

  • ア AVG(出荷表.出荷金額) → 平均
  • イ COUNT(出荷表.出荷金額) → 個数を数える
  • ウ MAX(出荷表.出荷金額) → 最大値
  • エ SUM(出荷表.出荷金額) → 合計

となります!

設問4

回収の対象となった出荷の情報は残したまま、再出荷に関する情報を管理することができるように、表の構成を変更する。次の記述中の に入れる適切な答えを、解答群の中から選べ。

 図1及び図2の表に回収及び再出荷の情報を追加する場合、dに回収日と再出荷番号の項目を追加し、初期値には NULL を設定しておき、回収対象の場合には回収した日と再出荷時の出荷番号を設定すればよい。ただし、この方法では既存データヘの影響が大きく、また、リコールの頻度が低い場合は効率が悪い。

 そこで、既存データに影響を与えない方法として、新たに回収表を作成して、一意に割り振った回収番号、回収対象となった出荷の出荷番号、回収日、再出荷時の出荷番号を格納する方法を考えた。この方法では、例えば、ある月の出荷金額の合計を求めるとき、回収対象となった出荷の出荷金額を除いて求めたい場合は、eから集計できる。

d に関する解答群

  • ア 顧客表
  • イ 出荷表
  • ウ パッケージ表
  • エ 部品表

e に関する解答群

  • ア 出荷表と回収表
  • イ パッケージ表と回収表
  • ウ 部品表と回収表
  • エ 部品表と出荷表とパッケージ表
  • オ 部品表とパッケージ表と回収表

解説

dの答えは「イ 出荷表」です!

何故なら、回収するということは、一度出荷されている必要があり、出荷された品に対して回収番号と再出荷番号を振れば管理できます。出荷されたかどうかを扱うテーブルは「イ 出荷表」です!

eの答えは「ア 出荷表と回収表」です!

出荷表に「回収日」と「再出荷番号」のカラムを追加しても良いのですが、既存のテーブルに追加するとプログラムを改修する必要やリコール頻度が少ない場合、追加カラム分のデータ量が余計に増えてしまいます。

そこで、問題文のように「新たに回収表を作成して、一意に割り振った回収番号、回収対象となった出荷の出荷番号、回収日、再出荷時の出荷番号を格納する方法を考えた。」というようなことを行います。

新しいテーブルに「出荷番号」を持つので「出荷表」の「出荷番号」と直接関連づけをすることが可能です。

従って、ある月の出荷金額の合計を求めるとき、回収対象となった出荷の出荷金額を除いて求めたい場合は、「ア 出荷表と回収表」から集計できます!

TOP :

タグ: ,,

PR広告

フェイスブックコメント

平成28年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成28年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成28年度春 基本情報技術者試験 午後 テキスト・動画解説

平成28年度春 基本情報技術者試験 午前 テキスト・動画解説

平成27年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午前 テキスト・動画解説

平成26年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成26年度春 基本情報技術者試験 午前 テキスト・動画解説