2013年 秋期 応用情報技術者試験 問5
レンタルビデオ管理システム
W社は、会員に対してDVD及びブルーレイディスク(以下、レンタルビデオという)の貸出サービスを行う会社であり、貸し出すレンタルビデオを、レンタルビデオ管理システム(以下、管理システムという)を使用して管理している。
管理システムのE-R図を図1に示す。エンティティ名と属性名は、システム開発時に規定したデータベース命名規約(表1)に従っている。
命名対象 | 命名規則 | 命名例 |
---|---|---|
エンティティ名 | ・データの実体を表現する名称 ・10文字以内の文字列 ・マスタ系エンティティの場合、"マスタ"という文字列を末尾に付ける。 | 会員マスタ 貸出明細 |
属性名 | ・データの属性を表現する名称 ・10文字以内の文字列 ・マスタ系エンティティの主キーとなる属性は、エンティティ名から"マスタ"という文字列を取り除き、末尾に"ID"という文字列を追加したものとする。 ・トランザクション系エンティティの主キーとなる属性は、エンティティ名の末尾に"番号"という文字列を追加したものとする。 ・外部キーとなる属性は、対応する主キーの属性の名前と同じとする。 | 会員ID 貸出明細番号 |
管理システムの機能概要を表2に示す。
機能名 | 概要 |
---|---|
タイトル管理 | W社が所有するレンタルビデオのタイトル、ジャンル、メディアタイプ、新作フラグを管理する。一つのタイトルに対して、貸出可能なレンタルビデオは1本以上ある。 |
会員管理 | W社の会員の氏名、連絡先を管理する。 |
レンタルビデオ貸出管理 | レンタルビデオの貸出しを管理する。貸出時には、レンタルビデオマスタエンティティの貸出データを"貸出中"に変更し、貸出明細エンティティに貸出番号、会員ID、貸出日を登録するとともに、貸出明細エンティティに貸出情報を登録する。貸出明細エンティティの返却予定日は、利用者が貸出時に指定した日数(当日、1泊2日、2泊3日、7泊8日から選択)から算出する。返却時には、レンタルビデオマスタエンティティの貸出ステータスを"貸出可能"に変更し、貸出明細エンティティの返却日に返却当日の日付を設定する。 |
[予約機能の追加]
W社では、サービス向上のために、レンタルビデオの予約機能の追加開発を行うことにした。
予約機能を実現するために、図1のE-R図に、図2に示す貸出予約エンティティと、必要な関連を追加する。
予約機能の概要は、次のとおりである。
(1) 予約登録
会員が借りたいタイトルのレンタルビデオが、既に他の会員に貸し出されており、貸出可能なレンタルビデオがない場合に、予約登録を行うことができる。予約登録では、予約ステータスを"予約中"にし、予約日時(予約した時点の日時)を設定した貸出予約の情報を貸出予約エンティティに登録する。なお、予約は店舗に1台だけある予約専用端末から受け付ける。
(2) 取置き
返却されたレンタルビデオに貼り付けたバーコードを店員が読み取った時点で、そのレンタルビデオのタイトルに予約が入っている場合には、レンタルビデオマスタエンティティの貸出ステータスを"予約済"に変更する。その後、店員は、返却されたレンタルビデオを陳列棚に戻さないで取置き棚に格納する。
(3) 貸出可能連絡
店員が取置き棚からレンタルビデオを取り出して、レンタルビデオに貼り付けたバーコードを読み取ると、予約日時が最も早い予約者の連絡先が画面に表示される。店員がこの予約者に連絡できた場合には、予約貸出待ち棚に格納し、この予約者に連絡ができなかった場合には、取置き棚に戻す。
(4) 予約貸出し
会員が予約したタイトルのレンタルビデオを借りに来た際に、レンタルビデオマスタエンティティの貸出ステータスが"予約済"であるレンタルビデオが予約貸出待ち棚に一つ以上格納されていて、この会員がこのレンタルビデオのタイトルを予約している(貸出予約エンティティの予約ステータスが"予約中"である)場合に、貸出時の処理をする。予約したタイトルのレンタルビデオを貸し出したタイミングで、貸出予約エンティティの予約ステータスを"予約貸出完了"とする。
管理システムでは、E-R図のエンティティ名をテーブル名、属性名を列名にして、適切なデータ型で表定義した関係データベースによって、データを管理する。
貸出可能連絡の際に、予約日時が最も早い予約者の連絡先を出力するためのSQL文を図3に示す。ここで、":予約タイトルID"は、バーコードで読み取ったレンタルビデオのタイトルIDを格納した埋込み変数である。
SELECT タイトルマスタ.タイトル, 会員マスタ.会員ID, 会員マスタ.氏名, 会員マスタ.連絡先, 貸出予約.予約日時 FROM (タイトルマスタ INNER JOIN 貸出予約 ON g ) INNER JOIN 会員マスタ ON 貸出予約.会員ID = 会員マスタ.会員ID WHERE タイトルマスタ.タイトルID = :予約タイトルID AND 貸出予約.予約日時 = (SELECT h FROM 貸出予約 WHERE i AND 貸出予約.予約ステータス = '予約中')
レンタルビデオの予約機能の運用テストを実施したところ、①予約者への貸出可能連絡時と予約貸出時に問題が発生することがあると分かった。
この問題を解決するために、貸出予約エンティティの予約ステータスの値に"貸出可能連絡済"を追加し、貸出可能連絡の際に連絡ができた場合、予約ステータスを"貸出可能連絡済"に変更するようにした。これに合わせて、予約貸出しの手順も一部変更することにした。
W社はその後も運用テストを続け、更に幾つかの改善点を発見し、システムの修正を行った。その結果、運用テストを完了し、レンタルビデオの予約機能をリリースできた。