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

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

 関係データベースに関する次の記述を読んで,設問1〜4に答えよ。

 ある中学校では,これまで表計算ソフトを使用して管理していた試験の成績を データベース化することになった。この中学校に在籍している,又は過去に在籍したことが ある生徒及び教員の情報を管理するデータベースは既に運用中であり,これらと連携させて運用する。

 現在運用中のデータベースの構造は図1のとおりである。下線付きの項目は主キーを表す。

 図1 現在運用中のデー夕ベースの構造

 この中学校は,1年度が3期に分かれており,それぞれの期中に中間試験と期末試験を実施している。 試験科目は,国語,数学,英語,理科,社会の5科目である。また,試験は学年別, 科目別に統一した問題で行われている。

設問1 成績を管理するデータベースの構造について,案A及び案Bが提案された。 次の記述中の に入れる正しい答えを, 解答群の中から選べ。

案A 生徒番号,年度,試験 ID を主キーとして管理する。

案B 生徒番号,年度,試験 ID,科目 ID を主キーとして管理する。

 データベースを設計する上で,拡張性の考慮は重要である。その点,案Bは 案Aと比較して に対して柔軟に対応することができる。 その反面,表の増加に伴い,データを検索する際の SQL 文が複雑になりやすく,また, 1人の生徒の1年間の成績を格納するために必要な成績表のレコード件数は, 案Aでは 件で済むが, 案Bでは 件となる。扱うデータの総量にもよるが, 長期の運用を考えた場合,これらの点はデータ操作時の性能にも影響を与えるおそれがある。

 データベースの設計においては,運用時の利用形態を想定した上で,操作性, 拡張性,実行性能などを多角的に評価する必要がある。この中学校では操作性を 重視して案Aを採用した。

a に関する解答群

ア 学期の増減         イ 試験回数の増減

ウ 試験科目の増減       エ 生徒の増減

b,c に関する解答群

ア 2      イ 4       ウ 6      エ 12

オ 24      カ 30       キ 48      ク 60

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

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

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

基本情報技術者試験


設問2 2009 年度1学年の2学期中間試験を対象に,生徒ごとの全科目合計点を求め, 降順に整列して表示する。次の SQL 文の に入れる正しい答えを, 解答群の中から選べ。

SELECT 生徒表.氏名, クラス, 国語+数学+英語+理科+社会
 FROM 生徒表, 履歴表, 成績表, 試験表
 WHERE 生徒表.生徒番号=履歴表.生徒番号
    AND 履歴表.生徒番号=成績表.生徒番号
    AND 成績表.試験ID=試験表.試験ID
    AND
 ORDER BY 国語+数学+英語+理科+社会 DESC

解答群

ア 履歴表.年度 = 2009 AND 履歴表.学年 = 1
  AND 試験表.試験名 = '2学期中間'

イ 履歴表.年度 = 2009 AND 履歴表.学年 = 1
  AND 試験表.試験名 = '2学期中間' AND 成績表.年度 = 2009

ウ 履歴表.年度 = 2009 AND 履歴表.学年 = 1
  AND 試験表.試験ID = (SELECT 試験ID FROM 試験表
                WHERE 試験表.試験名 = '2学期中間')

エ 履歴表.年度 = 2009 AND 履歴表.学年 = 1
  AND 試験表.試験ID = ANY (SELECT 試験ID FROM 試験表
                WHERE 試験表.試験名 = '2学期中間')

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

基本情報技術者試験


設問3 2008 年度1学年を対象に,1年間に実施したすべての試験の各科目の平均点を クラスごとに求め,担任教員の氏名とともに表示する。次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

 SELECT クラス, 教員表.氏名, AVG(国語), AVG(数学), AVG(英語),
     AVG(理科), AVG(社会)
  FROM 履歴表, 成績表, 教員表
  WHERE
  ORDER BY クラス

解答群

ア 履歴表.生徒番号 = 成績表.生徒番号
  AND 履歴表.教員番号 = 教員表.教員番号
  AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1
  GROUP BY クラス,教員表.氏名

イ 履歴表.生徒番号 = 成績表.生徒番号
  AND 履歴表.教員番号 = 教員表.教員番号
  AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1
  AND 成績表.年度 = 2008
  GROUP BY クラス,教員表.氏名

ウ 履歴表.生徒番号 = 成績表.生徒番号
  AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1
  AND 成績表.試験ID = ANY (SELECT 試験ID FROM 試験表 )
  GROUP BY クラス,教員表.氏名

エ 履歴表.生徒番号 = 成績表.生徒番号
  AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1
  AND 履歴表.教員番号 = ANY (SELECT 教員番号 FROM 教員表 )
  GROUP BY クラス,教員表.氏名

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

基本情報技術者試験


設問4 生徒“情報太郎”の成績を,試験ID の昇順に表示する。次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

 なお,生徒“情報太郎”が複数人いた場合は,過去に在籍したことがある生徒も 含めて生徒番号の昇順に表示する。

 SELECT 生徒表.生徒番号,成績表.年度,試験名,国語,数学,英語,
     理科,社会
  FROM 生徒表,成績表,試験表
  WHERE
  ORDER BY 生徒表.生徒番号,成績表.年度,試験表.試験ID

解答群

ア 生徒表.生徒番号 = 成績表.生徒番号
  AND 成績表.試験ID = 試験表.試験ID
  AND 生徒表.氏名 = '情報太郎'

イ 生徒表.生徒番号 = 成績表.生徒番号
  AND 成績表.試験ID = 試験表.試験ID
  AND 生徒表.氏名 = '情報太郎'
  AND 生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)

ウ 成績表.生徒番号 = (SELECT 生徒番号 FROM 生徒表 WHERE 氏名 = '情報太郎')
  GROUP BY 試験表.試験ID

エ 成績表.生徒番号 = (SELECT 生徒番号 FROM 生徒表 WHERE 氏名 = '情報太郎'
  GROUP BY 成績表.年度

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

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