初級システムアドミニストレータ試験情報 > 初級シスアド試験の既出問題 > 平成14年度春期試験メニュー>問題と解説
初級シスアド 平成14年度春期試験 問題(午後問4)
問 4 ペンションの空き部屋検索システムに関する次の記述を読んで,設問1,2に答えよ。
Z 町ペンション組合では,組合に登録されているペンションを共同のホームページで紹介している。このページの閲覧者から,部屋の空き状況や料金についてもこのページから調べられるようにしてほしいという希望が寄せられた。そこで,組合では空き部屋検索システムを構築することになった。
〔部屋の利用人数と室料〕
組合に登録されているペンションでは,各部屋の利用人数の上限(以下,上限人数という)を設定している。
室料は各部屋の 1 泊当たりの料金であり,次の式で算出される。
室料=部屋使用料+宿泊料×利用人数
(1) 部屋使用料は部屋ごとに決められており,利用人数にかかわらず一定である。 (2) 宿泊料は 1 人当たりの金額で,同一ペンション内であれば,どの部屋を利用しても同額である。
〔空き部屋検索システム〕
今回構築するシステムの概要は,次のとおりである。
(1) 部屋情報データベースを備え,ペンション,部屋及び各部屋の空き状況に関する情報を蓄える。 (2) 部屋情報データベースに蓄えられた情報から,閲覧者の指定する条件に適合する空き部屋情報を検索する。 (3) 各部屋の空き状況に関する情報の登録及び予約の受付は,別のシステムによって行う。
〔部屋情報データベース〕
部屋情報データベースの E-R 図と構造を,それぞれ図 1 と図 2 に示す。図 2 中の下線は,各表の主キーを示している。
![]()
各ペンションには,それぞれ固有の番号(P 番号)が割り振られている。さらに,それぞれのペンションでは,各部屋の部屋番号として,1 から順に通し番号が割り振られている。このデータベースには,空き部屋情報として各部屋の空いている日が登録されている。
別のシステムによって登録及び予約の受付が行われると,その内容はこのデータベースに随時反映される。
〔空き部屋の検索〕
(1) 閲覧者が,利用開始日(チェックインの日),利用終了日(チェックアウトの日)及び利用人数を指定する。 (2) すべてのペンションを対象に,(1)で指定された条件を満たす部屋を検索し,その結果を候補一覧として閲覧者に提示する。ここで,“条件を満たす”とは,ある部屋が利用希望期間を通して空き状態にあり,さらにその上限人数が利用人数以上であることをいう。 (3) 候補一覧は,第 1 キーを“室料”,第 2 キーを“上限人数”として,それぞれの昇順に並べ替えて表示する。
設問 1 図 2 中の[ ]に入れる適切な字句を,解答群の中から選べ。
解答群
ア 宿泊料 イ 宿泊料 ウ 上限人数 エ 上限人数 オ 年月日 カ 年月日 キ 部屋使用料 ク 部屋使用料 ケ 利用人数 コ 利用人数
設問1の正解例と解説へ
設問 2 〔空き部屋の検索〕の(2)に関する次の記述中の[ ]に入れる適切な字句を,解答群の中から選べ。
(1) 1 泊の場合
利用終了日が利用開始日の翌日の場合である。このときは,次の SQL 文(以下,空室検索文という)を使って,整列済みの候補一覧を作成することができる。ここで,閲覧者が入力した利用開始日を【利用日】,利用人数を【人数】とする。
SELECT X.P番号, ペンション名,Y.部屋番号, 部屋名称, 上限人数,
(部屋使用料 + 宿泊料 * 【人数】) AS 室料
FROM [ e ] X, [ f ] Y, [ g ] Z
WHERE X.P番号 = Y.P番号 AND Y.P番号 = Z.P番号
AND Y.部屋番号 = Z.部屋番号 AND 年月日 = 【利用日】
AND 上限人数 [ h ] 【人数】
ORDER BY 室料 ASC, 上限人数 ASC
(2) 連泊の場合
連泊の場合に整列済みの候補一覧を作成するための手順は,次のとおりである。ここで,中間表1と中間表2は,両者とも“P 番号”と“部屋番号”の二つの項目をもつ表として,あらかじめ定義されているものとする。
次の SQL 文の実行結果を,[ i ]の初期状態とする。
SELECT P番号, 部屋番号 FROM 部屋表
(1)の空室検索文中の【人数】を閲覧者が入力した利用人数とし,【利用日】を利用開始日から[ j ]まで順に変化させながら,次の(a)〜(c)の処理を繰り返す。
(a) 空室検索文を実行する。 (b) (a)の結果から“P 番号”と“部屋番号”の項目だけを取り出し,その結果を中間表 2 に設定する。 (c) 中間表 1 の内容を,次の SQL 文の実行結果で置き換える。
SELECT P番号, 部屋番号 FROM 中間表1
WHERE [ k ]
(SELECT *
FROM 中間表2
WHERE 中間表1.P 番号 = 中間表2.P番号
[ l ] 中間表1.部屋番号 = 中間表2.部屋番号)
次の SQL 文によって,整列済みの候補一覧を得る。
SELECT X.P番号, ペンション名, X.部屋番号, 部屋名称, 上限人数,
(部屋使用料 + 宿泊料 * 【人数】) AS 室料
FROM [ m ] X, [ n ] Y, [ o ] Z
WHERE X.P番号 = Y.P番号 AND Y.P番号 = Z.P番号
AND X.部屋番号 = Y.部屋番号
ORDER BY 室料 ASC, 上限人数 ASC
e 〜 g に関する解答群
ア 空き部屋表 イ 部屋表 ウ ペンション表
h に関する解答群
ア = イ < ウ > エ <= オ >=
i に関する解答群
ア 中間表 1 イ 中間表 2
j に関する解答群
ア 利用終了日の前日 イ 利用終了日 ウ 利用終了日の翌日
k,l に関する解答群
ア AND イ OR ウ EXISTS エ NOT EXISTS オ IN カ NOT IN
m 〜 o に関する解答群
ア 空き部屋表 イ 中間表 1 ウ 中間表 2 エ 部屋表 オ ペンション表
設問2の正解例と解説へ
メニューへ戻る