基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成24年 春期 基本情報技術者 午後 問03
問03   5問選択

問3 社員食堂の利用記録データベースの設計と運用に関する次の記述を読んで,設問1〜4に答えよ。

 A 社では,社員証の IC カード化に伴い,社員証を用いた社員食堂の精算システムを 構築することにした。トレーに載せた料理を精算機の前に置くと, 料理皿に埋め込まれた IC チップのデータから料金が計算され,合計金額が表示される。 合計金額を確認した後に社員証をかざすと,精算ができる。精算データはデータベースに記録され, 1か月分の精算額が,まとめて翌月の給料から引き落とされる。

 A 社のシステム部門では,精算データを記録するデータベースとして,当初,図1に示す表を設計した。

精算表
 社員番号 日付 精算額
 050221 20120310  380

  図1 表構成とデータの格納例

 精算システムの機能に関して関係者にヒアリングした結果,給料からの引落し額の算出以外にも 次に示す四つの要望が挙がった。

 要望1:ある社員の,ある日の精算の明細を表示できること

 要望2:ある日の売上合計額(精算額の合計)を算出できること

 要望3:料理の一覧を表示できること

 要望4:ある日の,ある料理の販売皿数を算出できること

 そこで,四つの要望に対応できるように図2のとおり,1回の精算に対して一つの精算コードを 割り当てた三つの表で構成するように設計を変更した。下線付きの項目は主キーを表す。

精算表
 精算コード 社員番号  日付 精算額
 03100186 050221 20120310  380

明細表

 精算コード 料理コード 皿数
 03100186  0001  1
 03100186  0002  1

料理表

 料理コード 料理名 単価
 0001 ごはん 100
 0002 肉じゃが 280

  図2 変更後の表構成とデータの格納例

設問1 図1に示した表構成のままでも対応できる要望として正しい答えを,解答群の中から選べ。

解答群

ア 要望1     イ 要望2      ウ 要望3     エ 要望4

解答 ←クリックすると正解が表示されます

基本情報技術者試験


設問2 料理名が“肉じゃが”の単価に誤りがあることが判明したので,購入者に差額を 返金することになった。“肉じゃが”購入者の社員番号と購入皿数を求める。 次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

SELECT 精算表.社員番号,SUM(明細表.皿数) AS 購入皿数
  FROM 料理表,精算表,明細表
  WHERE

解答群

ア 精算表.精算コード=明細表.精算コード AND
  明細表.料理コード= (SELECT 料理表.料理コード FROM 料理表
              WHERE 料理表.料理名='肉じゃが')

イ 精算表.精算コード=明細表.精算コード AND
  明細表.料理コード=料理表.料理コード
  GROUP BY 精算表.社員番号
  HAVING 料理表.料理名='肉じゃが'

ウ 精算表.精算コード=明細表.精算コード AND
  明細表.料理コード=料理表.料理コード AND
  料理表.料理名='肉じゃが'

エ 精算表.精算コード=明細表.精算コード AND
  明細表.料理コード=料理表.料理コード AND
  料理表.料理名='肉じゃが'
  GROUP BY 精算表.社員番号

解答 ←クリックすると正解が表示されます

基本情報技術者試験


設問3 次の記述中の に入れる適切な答えを,解答群の中から選べ。

 A 社の健康管理部門から,精算時に料理の合計カロリーを表示する機能と,ある社員の, ある期間における1回の精算当たりの平均カロリーを求める機能の追加を要望された。 このため,料理表にカロリーの列を追加することにした。

 しかし,平均カロリーを求めるには を結合しなければならないので, 多くの検索と計算の処理が必要となることが予想できた。精算時に合計カロリーを計算するので, その情報を記録しておけば,検索及び計算量は少なくなる。 そこで, に,精算単位の合計カロリーの列を追加することにした。 これによって,前述の平均カロリーを求める場合は, だけを参照すればよいので, 処理の高速化が期待できる。

解答群

ア 精算表     イ 精算表と明細表     ウ 精算表と料理表

エ 精算表と明細表と料理表     オ 明細表     カ 料理表

キ 料理表と明細表

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

基本情報技術者試験


設問4 設問3のカロリーに関する機能を追加した後,食堂利用者にカロリーを意識して料理を 選んでもらうために,人気料理とそのカロリーを掲示することにした。 販売皿数の多い順に,料理名,カロリー及び販売皿数を求める。正しい SQL 文を,解答群の中から選べ。

解答群

ア SELECT 料理表, 料理名.料理表.カロリー, COUNT(明細表.皿数) AS 販売皿数
   FROM 料理表, 明細表 WHERE 料理表.料理コード=明細表.料理コード
   GROUP BY 料理表.料理名, 料理表.カロリー
   ORDER BY 販売皿数 DESC

イ SELECT 料理表.料理名, 料理表.カロリー, COUNT(明細表.皿数) AS 販売皿数
   FROM 料理表, 明組表 WHERE 料理表.料理コード IN (SELECT
    明細表.料理コード FROM 明細表 WHERE 明細表.皿数 IS NOT NULL)
   GROUP BY 料理表.料理名, 料理表.カロリー
   ORDER BY 販売皿数 DESC

ウ SELECT 料理表.料理名, 料理表.カロリー, SUM(明細表.皿数) AS 販売皿数
   FROM 料理表, 明細表 WHERE 料理表.料理コード=明細表.料理コード
   GROUP BY 料理表.料理名, 料理表.カロリー
   ORDER BY 販売皿数 DESC

エ SELECT 料理表.料理名, 料理表.カロリー, SUM(明細表.皿数) AS 販売皿数
   FROM 料理表, 明細表 WHERE 料理表.料理コード IN (SELECT
    明細表.料理コード FROM 明細表 WHERE 明細表.皿数 IS NOT NULL)
   GROUP BY 料理表.料理名, 料理表.カロリー
   ORDER BY 販売皿数 DESC

解答 ←クリックすると正解が表示されます

[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]