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

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

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

 あるスーパーマーケットでは,野菜,魚,肉の各売場に,来店客が食材名を入力すると その食材を使った料理名と4人分のレシピを表示し,印刷して持ち帰ることもできる端末を 設置することにした。このシステムは,料理名,使用する食材,レシピなどを 関係データベースで管理し,要件に応じて適切な情報を抽出する。

 このシステムで使用する表は図1のとおりである。網掛けした項目は主キーを表す。


                  図1 表の構成

設問1 データベースを設計するに当たって,エンティティの関係を表す E-R 図を作成した。 図1の構成における E-R 図を,解答群の中から選べ。

解答群

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

基本情報技術者試験


設問2 図1の表は,料理ごとに作り方,使用する商品(食材)とその分量を 記入して作成したレシピの表を正規化して得られたものである。 データベース設計における第1正規化に基づいて実施した処置を,解答群の中から選べ。

解答群

ア 実行性能の向上を図り,料理表と分量表に分けた。

イ 主キーを一意にするため,料理名に料理 ID を割り振った。

ウ 商品とその分量という繰返しの要素を排除した。

エ 情報の独立性を高めるため,商品名に商品 ID を割り振った。

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

基本情報技術者試験


設問3 野菜売場の端末で来店客が好みの野菜を一つ選択したときに, その野菜を使用する料理名をすべて抽出して表示したい。来店客が“じゃがいも”を 選択した場合,次の SQL 文の に入れる正しい答えを, 解答群の中から選べ。 SELECT 料理表.料理名 FROM 料理表, 分量表, 商品表
  WHERE

解答群

ア 料理表.料理ID = (SELECT 分量表.料理ID FROM 分量表, 商品表
           WHERE 商品表.商品名 = 'じゃがいも')

イ 料理表.料理ID = 分量表.料理ID AND 分量表.商品ID = 商品表.商品ID
           AND 商品表.商品名 = 'じゃがいも'

ウ 料理表.料理ID = 分量表.料理ID AND 分量表.商品ID = 商品表.商品ID
           OR 商品表.商品名 = 'じゃがいも'

エ 料理表.料理ID IN (SELECT 分量表.料理ID FROM 分量表,商品表
           WHERE 商品表.商品名 = 'じゃがいも')

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

基本情報技術者試験


設問4 設問3の SQL 文では,当日に在庫がない商品を材料に使用する料理名まで表示してしまう。 このため,図2に示すとおり,開店時に在庫がある場合は1,ない場合は0を設定する項目“在庫”を 追加し,使用する食材すべてについて在庫がある料理名だけを表示できるように商品表を変更する。 また,同時に SQL 文の可読性を向上させるため,表の結合には JOIN 句を用いる。次の SQL 文の に入れる正しい答えを,解答群の中から選べ。


      図2 変更した商品表

SELECT 料理表.料理名 FROM 料理表
  JOIN 分量表 ON 料理表.料理ID = 分量表.料理ID
  JOIN 商品表 ON 分量表.商品ID = 商品表.商品ID
  WHERE

解答群 ア 商品表.在庫 != 0 AND 商品表.商品名 = 'じゃがいも'

イ 商品表.在庫 != 0 OR 商品表.商品名 = 'じゃがいも'

ウ 料理表.料理ID IN
   (SELECT 分量表.料理ID FROM 分量表
     JOIN 商品表 ON 分量表.商品ID = 商品表.商品ID
     WHERE 商品表.在庫 = 0)
   AND 商品表.商品名 = 'じゃがいも'

エ 料理表.料理ID NOT IN
   (SELECT 分量表.料理ID FROM 分量表
     JOIN 商品表 ON 分量表.商品ID = 商品表.商品ID
     WHERE 商品表.在庫 = 0)
   AND 商品表.商品名 = 'じゃがいも'

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

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