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

平成23年 秋期 基本情報技術者 午後 問02
問02   5問選択

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

 C社は,2011 年4月1日の組織編成の変更に伴い,従業員データベースの再構築を行った。 組織編成の変更前は図1に示すとおり,部だけで編成されていたが, 事業の拡大及び従業員数の増加に合わせて,図2に示すとおり,部と課からなる組織編成となった。


  図1 変更前の組織編成


       図2 変更後の組織編成

設問1 組織編成の変更を反映するために,図3に示す表中の部に関する情報の変更について, A 案と B 案を考えて比較検討した。図4に示す A 案では,部名と課名の組合せに対して一意の部署コードを割り当てた。 図5に示す B 案では,部名と課名のそれぞれにコードを割り当て,従業員表の部コードを課コードに変更した。 次の記述中の に入れる適切な答えを,解答群の中から選べ。


   図3 変更前の従業員データベースの表構成


   図4 A 案の表構成とデータの格納例


   図5 B 案の表構成とデータの格納例

 最初は,部名と課名の組合せに対して一意の部署コードを割り当てた,A 案にようて管理しようとした。 しかし,これでは, を変更する必要が生じた場合に複数行を修正する必要があるので, 正規化における の観点から好ましくない。 また,例えば を表示する際に LIKE 述語を使用したデータ依存の検索が必要になるなど, 柔軟性が低いことが分かった。このため,B 案の構成でデータベースを再構築した。

a に関する解答群

ア 課名      イ 氏名       ウ 表名       エ 部名 b に関する解答群

ア 関係喪失      イ 検索性能      ウ 事前登録      エ 重複更新 c に関する解答群

ア ある課に属する従業員の氏名の一覧      イ ある部に属する従業員の氏名の一覧

ウ 従業員の氏名の一覧              エ  部署名の一覧

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

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

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

基本情報技術者試験


設問2 B 案の構成でデータベースを再構築した後に,課ごとの平均年齢を算出し,表示する。 次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

SELECT 課表.課コード,課表.課名,AVG(従業員表.年齢)
  FROM 課表,従業員表
  WHERE

解答群

ア 課表.課コード = 従業員表.課コード
  GROUP BY 課表.課コード,課表.課名

イ 課表.課コード = 従業員表.課コード
  GROUP BY 課表.部コード,課表.課名

ウ 従業員表.年齢 = ANY (SELECT COUNT(従業員表.年齢) FROM 従業員表)

エ 従業員表.年齢 = ANY
    (SELECT COUNT(従業員表.年齢) FROM 従業員表 GROUP BY 課表.課コード)

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

基本情報技術者試験


設問3 従業員表は,受発注情報を管理する表などから,従業員番号を外部キーとして参照される。 このため,従来は特に利用を制限せずに社内公開していたが,個人情報保護の観点から, 必要最小限の情報だけを公開するビューを作成することにした。ビューで公開する項目は, 従業員番号,氏名,課コード,内線とする。 次の SQL 文の に入れる正しい答えを, 解答群の中から選べ。

   CREATE VIEW 従業員公開表 AS

解答群

ア ALTER TABLE 従業員表
     ADD (従業員番号,氏名,課コード,内線)

イ ALTER TABLE 従業員表
     DROP 入社年月日,住所,自宅電話,年齢

ウ SELECT * FROM 従業員表 WHERE 従業員番号 IS NOT NULL

エ SELECT 従業員番号,氏名,課コード,内線 FROM 従業員表

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

基本情報技術者試験


設問4 設問3で作成したビューと図6に示す受注表を使用して,営業部海外課に在籍する従業員が, 2011 年7月1日から 2011 年9月 30 日の期間中に受注した案件の受注総額を算出する。 営業部海外課の課コードは“S101”で,2011 年7月1日以降の従業員の異動はない。 次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

受注表

    図6 受注表の構成

SELECT SUM(受注表.受注額)
  FROM 受注表,従業員公開表
  WHERE 従業員公開表.課コード = 'S101' AND

       

解答群

ア 受注表.従業員番号 = 従業員公開表.従業員番号 AND
  受注表.受注日 BETWEEN '20110701' AND '20110930'

イ 受注表.受注日 BETWEEN '20110701' AND '20110930'

ウ 受注表.受注日 IN (SELECT COUNT(*) FROM 受注表
          WHERE 受注表.受注日 BETWEEN '20110701' AND '20110930')

エ 受注表.受注日 IN (SELECT SUM(受注表.受注額) FROM 受注表
          WHERE 受注表.受注日 BETWEEN '20110701' AND '20110930')

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

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