平成15年度 春期 ソフトウェア開発技術者 午後1
問1 問2 問3 問4 問5 問6 解答例(若林研二氏) 
注:等倍フォントでご覧ください。 

問6
 レンタカー予約システムに関する次の記述を読んで,設問1〜4に答えよ。
 Tレンタカー会社では,レンタカー予約システムを構築することになった。このシ
ステムは,レンタカー在庫情報を管理するサーバに,顧客の端末からネットワークを
経由して接続し,レンタカーの予約などを行う。端末の予約画面例を図1に示す。

 一つの予約画面で予約できるレンタカーは1台だけで,複数台を予約したい場合は,
この予約操作を繰り返す。予約操作を終えたら,クレジットカード情報を含む顧客情
報の入力(支払操作)を行うことによって,レンタカーの予約に関する処理が完結す
る。
 レンタカーは車種クラスで分類されていて,予約操作時に顧客が車種クラスを指定
する。料金は車種クラスごとに,使用時間に応じて設定されている。料金表の例を表1
に示す。
 
 
表1 料金表の例
車種クラス
使用時間FROM
使用時間TO
料金(円)
A
0
6
5,000
6
12
8,000
12
24
12,000
24
48
18,000

注1 使用時間が使用時間FROMを超え,使用時間TO以下の場合の料金を表す。
注2 入力され得る最大使用時間まで切れ目や重複がなく適切に設定され,システ
  ムに登録されているものとする。

 空き/予約済みの在庫状態は,レンタカー1台ごとに1時間単位の期間で管理する。
予約操作時に,出発日時から返却日時までの間,空いているレンタカーがあれば,そ
のレンタカーを顧客に割り付け,出発日時から返却日時までの予約データを追加する。
予約データ(一部)の例を表2に示す。
 なお,各予約間の余裕時間は考えないこととする。
 
 
表2 予約データ(一部)の例
予約番号
支払番号
出発日時
返却日時
10000
20000
2003年7月10日10時
2003年7月11日18時

 本システムのE-R図を図2に示す。
 なお,予約可能期間は,各レンタカーが営業所に配置されて予約に供せられる期間
を表すテーブルである。

 ここでは,E-R図に合わせてエンティティ名を表名,属性名を列名にして,適切な
データ型で表定義した関係データベースによって,データを管理することにする。ま
た,使用されるホスト変数も,適切なデータ型で定義されているものとする。

設問1
 図2図中の【  a  】【  b  】に入れる適切な属性名を答えよ。
主キーの場合は,下線を引いて示せ。

設問2
 支払番号を表すホスト変数“:支払番号”で指定される支払に対する料金合計を
求める SQL 文を次に示す。SQL 文中の【  c  】【  e  】に入れる適切
な字句又は式を答えよ。
 なお,“KIKAN(日時1、日時2)”は,日時1から日時2までの経過時間数を
返す関数とする。列を表す場合,表名を省略してはならない。

 SELECT【   c   】
   FROM 予約レンタカー, 料金表
   WHERE 予約.支払番号=:支払番号
    AND レンタカー.車コード=予約.車コード
    AND 【   d   】
    洲D 料金表.使用時間FROM < KIKAN(予約.出発日時,予約.返却日時)
    AND 【   e   】

設問3
 予約操作時の処理において予約可能なレンタカーを検索する SQL 文を次に示す。
SQL 文中の【  f  】【  i  】に入れる適切な字句又は式を答えよ。た
だし,“:出発日時”,“:返却日時”,“:営業所コード”,“:車種クラス”は,それ
ぞれ予約操作で指定された出発日時,返却日時,営業所,車種クラスを表すホス
ト変数である。
また,:出発日時 < :返却日時,予約可能期間.開始日時 < 予約可能期間.終了日時,
予約.出発日時 < 予約.返却日時は保証されているものとする。列を表す場合,表名を
省略してはならない。

 SELECT  レンタカー.車コード
   FROM レンタカー,予約可能期間
   W肥RE レンタカー.営業所コード =:営業所コード
    AND レンタカー.車種クラス =:車種クラス
    AND 【  f  】
    AND 予約可能期間.開始日時 <=:出発日時
    AND 【  g  】
    AND  NOT EXISTS
      (SELECT  *
        FROM 予約
        WHERE 【  h  】
         AND :出発日時<予約.返却日時
         AND 【  i  】)

設問4
 レンタカーの乗捨てを取り扱うことにし,端末の予約画面に乗捨て先の営業所
を指定する入力エリアを追加する。乗り捨てられたレンタカーは,その後,乗捨
て先の営業所に配置されて予約可能になる。これに伴い,既に返却日時より後の
予約があるレンタカーには乗捨ての予約ができなくなる。
図2のE-R図にエンティティ“配置”を追加し,エンティティ間の関連を変更
して対処することにした。エンティティ“配置”は,“開始日時”,“終了日時”の
ほかに二つの属性をもっている。これら二つの属性のうち一つは,既存のエンテ
ィティから移動したものである。
図3は,“配置”とそれに関連する既存のエンティティを示したものである。図
2の凡例に従い,図3中の【 j 】【 o 】に入れる適切なエンティテ
ィ名,属性名及びエンティティ間の関連を答えよ。主キーの場含は下線を引いて
示せ。
 なお,図3中では,既存のエンティティの属性は省略してある。

------------------------------------------------------------------------