A社は,個人宅を訪問し、 主にキッチン, 浴室,洗面所、トイレなどの清掃をサービスとして提供する業者である。 A社では,受注管理システムを新たに構築することになり, B君がデータベース設計を任された。
〔業務概要〕
1.組織の特性
(1) 地域ごとに店舗があり, 本店及び各店舗はそれぞれ店舗番号で一意に識別される。
(2) 本店は顧客からの引合いを受け付け,各店舗は引合いのあった顧客の見積りを行い、注文が確定した後, サービスを実施する。
2.会員の特性
顧客は,最初の注文時に会員登録される。 会員は,会員番号で一意に識別される。
3.サービスの特性
(1) サービスは,サービスコードで一意に識別される。
(2) サービスには,個別サービス, セットサービス及びオプションサービスの3種類があり,サービス区分でどの種類のサービスかが識別される。
① 個別サービスとは, キッチン清掃, レンジフード清掃, 浴室清掃など, 1 か所の清掃を指す。 個別サービスのサービス内容,標準価格,標準作業時間数は決まっている。 個別サービスの例を表1に示す。
② セットサービスとは,個別サービスを複数組み合わせたもので,個別サービスそれぞれの標準価格の合計よりも割安な価格で提供する。 セットサービスに対して,選択可能な個別サービス群,選択可能数,標準価格は決まっている。一つの個別サービスは、複数の異なるセットサービスに組み込まれることがある。セットサービスの例を表2に示す。
③ オプションサービスとは,会員の依頼によって個別サービスに追加する清掃で,単独では提供しない。 オプションサービスのサービス内容,適用可能な個別サービス,標準価格,標準作業時間数は決まっている。一つのオプションサービスを適用できる個別サービスは,一つだけである。 一つの個別サービスに対して,複数のオプションサービスを追加できる。 セットサービスで選択した個別サービスに対しても, オプションサービスを追加できる。 オプションサービスの例を表3に示す。



4.注文の特性
(1) 注文は,注文番号で一意に識別される。
(2) 注文にはスポット注文と継続注文があり,注文区分で識別される。
① スポット注文とは,1回だけ清掃を行うケースの注文である。
② 継続注文とは,同じ清掃を複数回にわたって行うケースの注文である。
・会員は, 期間,回数及び曜日を選択する。
・会員は,期間と回数について、24週間に6回,48週間に6回,48 週間に 12回など,あらかじめ決められた組合せの中から選択する。
・期間,回数,曜日の組合せは,継続パターンコードで識別される。また,それによって継続割引率は異なる。
(3) 一つの注文で、複数のサービスを指定できる。また,個別サービスとセットサービスを一緒に指定することもできる。
5.引合い,見積り, 注文の確定の流れ
(1) 本店で受け付けた引合いは,地域ごとの店舗に割り当てられる。割り当てられた店舗は,会員宅を訪問して見積りを行う。
(2) 見積りによって,サービスごとの実施項目,適用価格が確定する。継続注文の場合,この確定内容は,2 回目以降も継続する前提である。適用価格は,標準価格と異なる場合がある。
(3) 見積りにおいて,予定年月日,予定開始時刻,予定終了時刻を決定する。継続注文の場合,予定開始時刻と予定終了時刻は2回目以降もこの決定が適用されるが,予定年月日は初回だけに適用される。
(4) 見積り結果は,セットサービスで選択した個別サービス,及び個別サービスに追加したオプションサービスの対応関係が分かるように, サービス名の前に記号を付け,関係するサービスを並べて表示する。 また,同一の清掃を複数箇所に対して行う場合,それぞれを識別できるようにするために,実施場所に,所在を表示する。 見積り結果の例を図1に示す。
(5) 会員が見積り結果を確認し、同意すれば注文が確定する。
6.実施の流れ
(1) 会員宅を訪問して注文内容に従って清掃を行う単位を, “実施”と呼ぶ。 スポット注文では1回の注文で1回の実施が発生し、継続注文では1回の注文で複数回の実施が発生する。
(2) 1回の実施に対して,一意となる実施番号が付与される。 1回の実施には一つ又は複数のサービスが含まれ, サービスごとに実施明細番号が付与される。
(3) 注文確定によって, スポット注文と継続注文の初回の実施予定を決定し, 登録する。 その際,個別サービス, オプションサービスごとに,予定作業時間数を割り当てる。
(4) 継続注文の2回目以降は, 実施時に次回の予定年月日を決め、 その時点で次回の実施予定を登録する。
(5) 1回の実施で予定していた, 全ての清掃が終了した時点で、 実施年月日, 実施開始時刻,実施終了時刻を登録する。 また, 個別サービス, オプションサービスごとに実施作業時間数を登録する。
(6) サービスごとの実施作業時間数は,サービスの作業改善, 標準作業時間数の見直しのために,過去の実績を分析する場合に照会する。
〔データベースの設計〕
B君は,現在の業務概要と次の方針に基づいて, テーブル構造を図2のように設計することにした。
(1) セットサービスで選択された個別サービスも, 単品で選択された個別サービスも, “注文明細” テーブルには同様の形式で格納する。
(2) 注文の確定時に“注文” テーブル及び “注文明細” テーブルに行を作成する。実施予定登録時に “実施” テーブル及び “実施明細” テーブルに行を作成する。
(3) “実施” テーブルの行から対応する “注文” テーブルの行, “実施明細” テーブルの行から対応する “注文明細” テーブルの行を特定するために, 外部キーを設定する。

〔継続注文の変更〕
検討中のテーブル構造では,継続注文について, 初回の実施後,継続する 2 回目以降にオプションサービスの追加及び取消しを行いたくても対応できない。この点について、会員からの要望を満たせていないことが判明した。 そこで, B君は, 2 回目以降の実施に対して, オプションサービスの追加及び取消しを行えるように,次の対応を考えた。
(1) 次回の実施予定を決定するときに, 変更の要望を確認し、変更があれば必要な見積りを実施して,適用価格と変更の要望に伴う予定開始時刻及び予定終了時刻の変更を決定する。
(2) 当初の注文確定時点の情報を含め、変更履歴を注文変更年月日ごとに保存する。
解答に当たっては, 巻頭の表記ルールに従うこと。
なお,テーブル構造の表記は, “関係データベースのテーブル (表) 構造の表記ルール” を用いること。 さらに, 主キー及び外部キーを明記せよ。
また,新たに追加するテーブル名及び列名は,本文中で与えられた語句を用いて適切な名称とすること。