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

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

問2 選手情報を管理する関係データベースの設計及び運用に関する次の記述を読んで, 設問1〜4に答えよ。

 ある少年野球リーグの事務局では,登録選手の氏名や成績などの個人情報を管理するために, 関係データベースを構築することにした。このリーグには,近隣の8チームが参加している。

 まず,リーグに所属するチームと登録選手の情報を管理するために,図1に示すチーム表と 選手表を設計した。下線付きの項目は,主キーを表す。


図1 チーム表と選手表のデータ格納例

設問1 チームの対戦成績を管理する表を設計する。 次の記述中の に入れる適切な答えを, 解答群の中から選べ。

 このリーグでは,毎年4月から翌年の3月までを1シーズンとし,試合は各チームが 他のチームの全てと1回だけ対戦する総当たり方式で行う。

 このデータベースでは,各チームの対戦成績や,勝利投手,敗戦投手などの情報を管理する。 チーム成績は勝点によって順位付けする。勝点は,勝利チームに3点, 敗戦チームに0点,引分けの場合は両チームに1点ずつを付与する。

 最初,図1に示すチーム表に,必要な項目を追加することを考えたが, 総当たりで対戦することから,表に繰返し項目が発生することになる。これを改善する ために した。また,管理する情報の性質上, チーム表や選手表は更新しながら継続的に使用するが,対戦成績はシーズンごとに表を 作成して管理したい。さらに,勝利投手や敗戦投手といった,個々の試合に関する情報を 管理するには,別の表にした方が扱いやすいと判断して,図2に示す日程表と結果表を 作成することにした。ここで,1シーズンで作成される結果表のレコード件数は, 件になる。


図2 日程表と結果表のデータ格納例

a に関する解答群

ア インデックスを設定     イ 第1正規化       ウ 第2正規化

エ 第3正規化         オ セキュリティを強化

b に関する解答群

ア 48     イ 56     ウ 64      エ 98     オ 112     カ 128
解答 a ←クリックすると正解が表示されます

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

基本情報技術者試験


設問2 勝点が多いチームから降順にチーム番号,チーム名,勝点,総得点を表示する。 このとき,勝点が等しい場合は,総得点の降順に表示する。次の SQL 文の に入れる正しい答えを,解答群の中から選べ。

SELECT チーム表.チーム番号,チーム表.チーム名,
   SUM(結果表.勝点) AS 勝点,SUM(結果表.得点) AS 総得点
  FROM チーム表,結果表
  WHERE チーム表.チーム番号 = 結果表.チーム番号

  

解答群

ア GROUP BY チーム表.チーム番号,チーム表.チーム名
  ORDER BY 勝点 ASC,総得点 ASC

イ GROUP BY チーム表.チーム番号,チーム表.チーム名
  ORDER BY 勝点 DESC,総得点 DESC

ウ ORDER BY 勝点,総得点 ASC

エ ORDER BY 勝点,総得点 DESC

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

基本情報技術者試験


設問3 選手個人の打撃成績を管理するために,図3に示す打席表と打撃表を作成した。

 ホームランを打った数(以下,ホームラン数という)が多い選手から降順に選手番号, 選手名,ホームラン数を表示する。次の SQL 文の に 入れる正しい答えを,解答群の中から選べ。 ただし,d1 と d2 に入れる答えは,d に関する解答群の中から組合せとして正しいものを 選ぶものとする。

SELECT 打席表.打者,選手表.氏名, AS 集計数
  FROM 打席表,選手表
  WHERE 打席表.打者 = 選手表.選手番号 AND
     打席表.打撃結果 = (SELECT 打撃表.打撃結果 FROM 打撃表
                  WHERE 打席表.名称 = 'ホームラン')
  GROUP BY 打席表.打者,選手表.氏名
  ORDER BY 集計数


図3 打席表と打撃表のデータ格納例

d に関する解答群

         d1          d2    
 ア  COUNT(*) DESC
 イ  MAX(打席表.打者)    ASC
 ウ  MIN(打席表.投手) ASC
 エ  SUM(打席表.打点) DESC
解答 d ←クリックすると正解が表示されます

基本情報技術者試験


設問4 このリーグでは,チーム表や選手表は更新しながら継続的に使用する。 対戦成績と打撃成績はシーズンごとに表を作成するが,過去の情報も参照できるように, シーズン終了後も蓄積しておく。

 リーグに所属する選手情報の管理について,次の記述中の に入れる適切な答えを,解答群の中から選べ。

 新しい選手の情報は,選手表に追加すればよい。リーグを離れる選手の情報は, 蓄積されている情報の参照を考慮して,削除せずに残しておいた方がよい。

 ある選手がシーズン途中に別のチームへ移籍する場合,選手表のチーム番号を 更新すると,例えば,SQL 文を用いて当該シーズンにおける の 集計はできなくなる。移籍前の情報は,抹消日を格納した上でそのまま残して, 当該選手に新しい選手番号を割り振って登録する方法もあるが, その場合は,SQL 文を用いて の集計ができなくなる。 そこで,このリーグでは,選手の移籍にも柔軟に対処できるように, 選手の情報を図4に示すとおり所属選手表と選手表で管理するように変更した。 ただし,移籍して元のチームに戻ることはないものとする。


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

解答群

ア 選手ごとのホームラン数     イ チームごとの勝点

ウ チームごとの総得点       エ チームごとのホームラン数

オ リーグの総得点         カ リーグのホームラン数

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

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


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