Top → 応用情報技術者試験 → 平成21年度秋期試験 午後問題 → 問6

水野のサイト

応用情報技術者試験

●平成21年度秋期試験 午後問題 問6
 「旅行業務用データベースの設計」

【解説】
 本問は、旅行の予約業務を題材として、リレーショナルデータベースの設計における、正規化の考え方について問うています。

【設問1 解答】
a サ  b ク   c キ  d カ   e シ  
  (a、bは順不同)

【設問1 解説】
 ツアーテーブルの「日数」と「ツアー名称」は、「出発日」が異なっていても「ツアーコード」が同じならば一定です。 つまり、「日数」と「ツアー名称」は「ツアーコード」だけに関数従属しています。
 「顧客を担当する支店は、顧客の郵便番号によって決めて」いますから、 顧客テーブルの「担当支店コード」は「郵便番号」により決まります。

【設問2 解答】
(1)ツアーテーブルに追加された行がその後変更されることはないから
(2)支店の担当範囲が変更されると、顧客テーブルの該当するすべての行の担当支店コードを修正しなければならない
(3)テーブル名列名
顧客 顧客番号、氏名、住所、郵便番号、電話番号、電子メールアドレス
担当支店郵便番号、担当支店コード
   (「顧客番号」と「郵便番号」には、主キーを示す下線が付くことに注意してください。)

【設問2 解説】
(1) 一般的に、正規形でない場合の最大の問題点は、データの変更が大変であることです。
ツアーテーブルの場合は、問題文の [データベースの運用] の 「ツアーテーブルには、四半期毎にその期のツアー商品を追加する。当該四半期の間にツアーテーブルの内容が変更されることはない」 という記述に注目します。
(2) 顧客テーブルについては、[ツアーに関する業務] 中の 「顧客を担当する支店は、顧客の郵便番号によって決めている」 「担当範囲を随時見直すことにしている」 という点がポイントです。
(3) 顧客テーブルの問題を解消するために、第三正規形に分解します。 顧客番号→郵便番号→担当支店コードという推移的な関数従属があるので、 『顧客テーブル:顧客番号→郵便番号』 と 『担当支店テーブル:郵便番号→担当支店コード』 の二つのテーブルに分解すればよいことになります。

【設問3 解答】
E-R図

【設問3 解説】
 参加者全員の情報をデータベースに格納するのですから、「参加」(または「参加者」)というエンティティ(実体)を加えます。 「全参加者の情報を顧客テーブルに格納」「申込番号ごとに、そのツアーに参加するすべての顧客番号を保持」 とありますから、 「顧客」 および 「申込み」 エンティティから 1対多のリレーションシップ(関連)を設定します。


このページの先頭