2009年 秋期 応用情報技術者試験 問6
旅行業務用データベースの設計
旅行会社である Z 社では、四半期ごとにパッケージツアー(以下、ツアーという)の計画を作成し、発売開始後、申込みを受け付ける。Z 社には、本社のほかに、地域ごとに支店があり、ツアーの申込みは、インターネットと支店店頭の両方で行える。また、ツアーの申込みに関するデータは、本社のデータベースで一括して管理する。
[ツアー]
・ツアーにはツアーコードが付されている。ツアーの内容が同じであれば、出発日が異なってもツアーコードは同じであるが、日数が異なればツアーコードは異なる。
・ツアーは、ツアーコードが同じでも、出発日によって価格が異なることがある。
[ツアーに関する業務]
・ツアーの申込みを受け付けたときには、申込番号、申込者の顧客番号、申込日、申し込んだツアーのツアーコード、そのツアーの出発日、参加人数を登録する。新規の顧客の場合には顧客番号を新たに設定し、顧客の氏名、住所、郵便番号、電話番号、電子メールアドレスを登録する。
・ツアーを申し込んだ顧客には、店頭での申込みがインターネットからの申込みかにかかわらず、それ以降、支店から四半期ごとにツアーなどに関する情報をダイレクトメールで送付する。顧客を担当する支店は、顧客の郵便番号によって決めている。発送は、その時点で担当となっている支店が行う。なお、支店間の業務量の均等化のために、担当範囲を随時見直すことにしている。
[データベースの設計]
・E-R 図を作成してテーブル設計を行った結果、ツアーテーブル、申込みテーブル、顧客テーブル、支店テーブルの四つのテーブルから成るデータベースを作成することにした。
・E-R 図を図 1 に、設計したテーブルを表 1 に示す。なお、表 1 において、下線の引かれた列名は、主キーである。
テーブル名 | 列名 |
---|---|
ツアー | ツアーコード、出発日、日数、ツアー名称、価格 |
申込み | 申込番号、顧客番号、申込日、ツアーコード、出発日、参加人数 |
顧客 | 顧客番号、氏名、住所、郵便番号、電話番号、電子メールアドレス、担当支店コード |
支店 | 支店コード、支店名 |
[データベースの運用]
・ツアーテーブルには、四半期ごとにその期のツアー商品を追加する。当該四半期の間にツアーテーブルの内容が変更されることはない。
・ツアーの申込みを受け付けるごとに、申込みテーブルに行を 1 件追加する。申込番号は、ツアーの申込み 1 件ごとに設定する。
[正規化に関する検討]
ツアーテーブルの非キー属性の中には、候補キーに完全関数従属していない属性が存在するので、ツアーテーブルは第二正規形ではない。すなわち、非キー属性であるaとbが、候補キーの一部であるcだけに関数従属している。
顧客テーブルの非キー属性の中には、ほかの非キー属性を介して候補キーに関数従属(推移関数従属)している属性があるので、顧客テーブルは第三正規形ではない。
具体的には、非キー属性であるdは、やはり非キー属性であるeに関数従属している。ただし、Z 社では、入力間違いなどの可能性を考慮し、顧客テーブルの郵便番号は住所に関数従属しないものと考えている。