平成21年春期試験午後問題 問3

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】

問3 データベース

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

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

設問1

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

解説

E-R図は、データベース化の対象となる実体(エンティティ)と実体の持つ属性(アトリビュート)、および実体間の関連(リレーションシップ)を表現する図です。

1つの商品は複数の料理に使用される可能性があります。同時に1つの料理には複数の商品が使用される可能性があります。したがって商品と料理の対応関係は多対多ということになります。この多対多の関係を適切に表している図が「イ」です。
pm03_8.png

設問2

図1の表は,料理ごとに作り方,使用する商品(食材)とその分量を記入して作成したレシピの表を正規化して得られたものである。 データベース設計における第1正規化に基づいて実施した処置を,解答群の中から選べ。
解答群
  • 実行性能の向上を図り,料理表と分量表に分けた。
  • 主キーを一意にするため,料理名に料理IDを割り振った。
  • 商品とその分量という繰返しの要素を排除した。
  • 情報の独立性を高めるため,商品名に商品IDを割り振った。
解答選択欄
  •  
  •  

解説

関係データベースの正規化は次のように3段階に分けて行います。
第1正規化
繰り返し項目をなくす
第2正規化
主キーを決定し、主キーの一部によって一意に決まる項目を別表に移す
第3正規化
主キー以外の項目によって一意に決まる項目を別表に移す
第1正規化では属性中の繰り返し項目を複数行に展開する処置を行います。したがって「ウ」が正解です。
pm03_9.png

設問3

野菜売場の端末で来店客が好みの野菜を一つ選択したときに,その野菜を使用する料理名をすべて抽出して表示したい。来店客が"じゃがいも"を 選択した場合,次のSQL文の に入れる正しい答えを,解答群の中から選べ。
pm03_3.png
解答群
  • pm03_4a.png
  • pm03_4i.png
  • pm03_4u.png
  • pm03_4e.png
解答選択欄
  •  
  •  

解説

  • 副問合せから返される結果は複数の値から成る集合となるため、「料理ID = (…」というように等号で比較する対象としては不適切です。
  • 正しい。次のような3つの表があった場合、以下の手順で処理されていきます。
    pm03_10.png
  • 商品名が"じゃがいも"の行を抽出する条件がORで結合されているため、絞り込みが行われず全ての料理名が抽出されます。
  • 副問合せでは"分量"表と"商品"表の結合条件が指示されていないため、2つの表に含まれる行同士の全ての組合せの中から商品名が"じゃがいも"の行が抽出されることになります。この副問合せから返される結果は"分量"表に含まれる全ての料理IDになるため、主問合せの結果も同じく"分量"表の全ての料理名になります。

設問4

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

解説

この設問の解説はまだありません。

Pagetop