データベーススペシャリスト試験 過去問 2023年(令和5年) 秋期 午後Ⅰ 問2
ホテルの予約システムの概念データモデリング
ホテルを運営するX社は,予約システムの再構築に当たり,現状業務の分析及び新規要件の洗い出しを行い,概念データモデル及び関係スキーマを設計した。
現状業務の分析結果
- ホテル
- 全国各地に10のホテルを運営している。ホテルはホテルコードで識別する。
- 客室はホテルごとに客室番号で識別する。
- 客室ごとに客室タイプを設定する。客室タイプはホテル共通であり,客室タイプコードで識別する。客室タイプにはシングル,ツインなどがある。
- 館内施設として,レストラン,ショップ,プールなどがある。
- 会員
利用頻度が高い客向けの会員制度があり,会員は会員番号で識別する。会員には会員番号が記載された会員証を送付する。
- 旅行会社
X社のホテルの宿泊予約を取り扱う複数の旅行会社があり,旅行会社コードで識別する。
- 予約
- 自社サイト予約と旅行会社予約があり,予約区分で分類する。
- 自社サイト予約では,客はX社の予約サイトから予約する。旅行会社予約では,客は旅行会社を通じて予約する。旅行会社の予約システムからX社の予約システムに予約情報が連携され,どの旅行会社での予約かが記録される。
- 1回の予約で,客は宿泊するホテル,客室タイプ,泊数,客室数,宿泊人数,チェックイン予定年月日を指定する。予約は予約番号で識別する。
- 宿泊時期,予約状況を踏まえて,予約システムで決定した1室当たりの宿泊料金を記録する。
- 客が会員の場合,会員番号を記録する。会員でない場合は,予約者の氏名と住所を記録する。
- 宿泊
客室ごとのチェックインからチェックアウトまでを宿泊と呼び,ホテル共通の宿泊番号で識別する。
- チェックイン
フロントで宿泊の手続を行う。
- 予約有の場合には該当する予約を検索し,客室を決め,宿泊を記録する。泊数,宿泊人数,宿泊料金は,予約から転記する。泊数,宿泊人数,宿泊料金が予約時から変更になる場合には,変更後の内容を記録する。
- 予約無の場合には泊数,宿泊人数,宿泊料金を確認し,客室を決め,宿泊を記録する。
- 宿泊者が会員の場合,会員番号を記録する。ただし,予約有の場合で宿泊者が予約者と同じ場合,予約の会員番号を宿泊に転記する。
- 一つの客室に複数の会員が宿泊する場合であっても記録できるのは,代表者1人の会員番号だけである。
- 宿泊ごとに宿泊者全員の氏名,住所を記録する。
- 客室のカードキーを宿泊客に渡し,チェックイン年月日時刻を記録する。
- チェックアウト
フロントで客室のカードキーを返却してもらう。チェックアウト年月日時刻を記録する。
- 精算
- 通常,チェックアウト時に宿泊料金を精算するが,客が希望すれば,予約時又はチェックイン時に宿泊料金を前払いすることもできる。
- 宿泊客が館内施設を利用した場合,その場で料金を支払わずにチェックアウト時にまとめて支払うことができる。館内施設の利用料金は予約システムとは別の館内施設精算システムから予約システムに連携される。
- 会員特典
会員特典として,割引券を発行する。券面には割引券を識別する割引券番号と発行先の会員番号を記載する。割引券には宿泊割引券と館内施設割引券があり,割引券区分で分類する。1枚につき,1回だけ利用できる。割引券の状態には未利用,利用済,有効期限切れによる失効があり,割引券ステータスで分類する。
- 宿泊割引券
- 会員の宿泊に対して,次回以降の宿泊料金に充当できる宿泊割引券を発行し,郵送する。1回の宿泊で割引券を1枚発行し,泊数に応じて割引金額を変える。旅行会社予約による宿泊は発行対象外となる。発行対象の宿泊かどうかを割引券発行区分で分類する。
- 予約時の前払いで利用する場合,宿泊割引券番号を記録する。1回の予約で1枚を会員本人の予約だけに利用できる。
- ホテルでのチェックイン時の前払い,チェックアウト時の後払いで利用する場合,宿泊割引券番号を記録する。
- 館内施設割引券
- 会員の館内施設の利用に対して,次回以降の利用料金に充当できる館内施設割引券を発行し,郵送する。1回の利用で割引券を1枚発行し,利用料金に応じて割引金額を変える。旅行会社予約による館内施設の利用は発行対象外となる。発行対象の館内施設の利用かどうかを割引券発行区分で分類する。
- 予約時の前払いで利用する場合,館内施設割引券番号を記録する。1回の予約で1枚を会員本人の予約だけに利用できる。
- ホテルでのチェックイン時の前払い,チェックアウト時の後払いで利用する場合,館内施設割引券番号を記録する。
- 宿泊割引券
新規要件
会員特典として宿泊時にポイントを付与し,次回以降の宿泊時の精算などに利用できるポイント制を導入する。ポイント制は次のように運用する。
- 会員ランクにはゴールド,シルバー,ブロンズがあり,それぞれの必要累計泊数及びポイント付与率を決める。ポイント付与率は上位の会員ランクほど高くする。
- 毎月末に過去1年間の累計泊数に応じて会員の会員ランクを決める。
- チェックアウト日の翌日午前0時に宿泊料金にポイント付与率を乗じたポイントを付与する。この場合のポイントの有効期限年月日は付与日から1年後である。
- 宿泊料金に応じたポイントとは別に,個別にポイントを付与することがある。この場合のポイントの有効期限年月日は1年後に限らず,任意に指定できる。
- ポイントを付与した際に,有効期限年月日及び付与したポイント数を未利用ポイント数の初期値として記録する。
- ポイントは宿泊料金,館内施設の利用料金の支払に充当でき,これを支払充当と呼ぶ。支払充当では,支払充当区分(予約時,チェックイン時,チェックアウト時のいずれか),ポイントを利用した予約の予約番号又は宿泊の宿泊番号を記録する。
- ポイントは商品と交換することもでき,これを商品交換と呼ぶ。商品ごとに交換に必要なポイント数を決める。ホテルのフロントで交換することができる。交換時に商品と個数を記録する。
- 支払充当,商品交換でポイントが利用される都度,その時点で有効期限の近い未利用ポイント数から利用されたポイント数を減じて,消し込んでいく。
- 未利用のまま有効期限を過ぎたポイントは失効し,未利用ポイント数を0とする。失効の1か月前と失効後に会員に電子メールで連絡する。失効前メール送付日時と失効後メール送付日時を記録する。
- ポイントの付与,支払充当,商品交換及び失効が発生する都度,ポイントの増減区分,増減数及び増減時刻をポイント増減として記録する。具体例を表1に示す。
会員番号 | 増減連番 | ポイント増減区分 | ポイント増減数 | ポイント増減時刻 | 有効期限年月日 | 未利用ポイント数 | 商品コード | 商品名 | 個数 |
---|---|---|---|---|---|---|---|---|---|
70001 | 0001 | 付与 | 3,000 | 2022-01-22 00:00 | 2023-01-21 | 0 | - | - | - |
70001 | 0002 | 付与 | 2,000 | 2022-01-25 00:00 | 2022-07-24 | 0 | - | - | - |
70001 | 0003 | 支払充当 | -3,000 | 2022-04-25 18:05 | - | - | - | - | - |
70001 | 0004 | 商品交換 | -1,500 | 2022-10-25 16:49 | - | - | 1101 | タオル | 3 |
70001 | 0005 | 失効 | -500 | 2023-01-22 00:00 | - | - | - | - | - |
70002 | 0001 | 付与 | 3,000 | 2022-06-14 00:00 | 2023-06-13 | 1,000 | - | - | - |
70002 | 0002 | 支払充当 | -2,000 | 2022-10-14 17:01 | - | - | - | - | - |
注記:"-"は空値であることを示す。
概念データモデルと関係スキーマの設計
- 概念データモデル及び関係スキーマの設計方針
- 概念データモデル及び関係スキーマの設計は,まず現状業務について実施し,その後に新規要件に関する部分を実施する。
- 関係スキーマは第3正規形にし,多対多のリレーションシップは用いない。
- 概念データモデルでは,リレーションシップについて,対応関係にゼロを含むか否かを表す"○"又は"●"は記述しない。
- サブタイプが存在する場合,他のエンティティタイプとのリレーションシップは,スーパータイプ又はいずれかのサブタイプの適切な方との間に設定する。
- 【現状業務の分析結果】に基づく設計
図1 現状の概念データモデル(未完成) ホテル(ホテルコード,ホテル名)
客室タイプ(客室タイプコード,客室タイプ名,定員数)
客室(ホテルコード,客室番号,ア)
旅行会社(旅行会社コード,旅行会社名)
会員(会員番号,メールアドレス,氏名,生年月日,電話番号,郵便番号,住所)
予約(予約番号,予約者氏名,住所,予約区分,チェックイン予定年月日,泊数,客室数,宿泊人数,1室当たり宿泊料金,予約時前払い金額,会員番号,イ)
宿泊(宿泊番号,予約有無区分,泊数,宿泊人数,宿泊料金,チェックイン時前払い金額,館内施設利用料金,チェックアウト時精算金額,割引券発行区分,チェックイン年月日時刻,チェックアウト年月日時刻,会員番号,ウ)
予約有宿泊(宿泊番号,エ)
割引券発行対象宿泊(宿泊番号,割引券発行済フラグ)
宿泊者(宿泊番号,宿泊者明細番号,氏名,住所)
割引券(割引券番号,割引券区分,割引券名,割引金額,有効期限年月日,発行年月日,割引券ステータス,会員番号)
宿泊割引券(割引券番号,発行元宿泊番号)
館内施設割引券(割引券番号,ダイレクトメール送付年月日)
図2 現状の関係スキーマ(未完成) - 【新規要件】に関する設計
新規要件に関する概念データモデルを図3に,関係スキーマを図4に示す。
図3 新規要件に関する概念データモデル(未完成) 会員(会員番号,メールアドレス,氏名,生年月日,電話番号,郵便番号,住所,会員ランクコード,過去1年累計泊数)
会員ランク(会員ランクコード,会員ランク名,オ)
商品(商品コード,カ)
ポイント増減(会員番号,ポイント増減連番,キ)
ポイント付与(会員番号,ポイント増減連番,失効前メール送付日時,ク)
ポイント失効(会員番号,ポイント増減連番,ケ)
支払充当(会員番号,ポイント増減連番,予約番号,宿泊番号,コ)
商品交換(会員番号,ポイント増減連番,サ)
図4 新規要件に関する関係スキーマ(未完成)
解答に当たっては,巻頭の表記ルールに従うこと。また,エンティティタイプ名,関係名,属性名は,それぞれ意味を識別できる適切な名称とすること。関係スキーマに入れる属性名を答える場合,主キーを表す下線,外部キーを表す破線の下線についても答えること。