RESERVDB ユーザー・データベースには、XMLFLIGHTTB と XMLPASSENGERTB という 2 つの表が含まれています。 下の図には、XML_Reservation と XML_CancelReservation のメッセージ・フローが両方の表のデータに変更を加えるのに対し、XML_PassengerQuery と XML_FlightQuery のメッセージ・フローは情報を照会するだけで、データの変更を行わないことが示されています。
XMLFLIGHTTB 表の目的は、フライトの空席に関する現行情報を組み込むことです。 XMLFLIGHTTB 表を作成すると、フライトに関するデータがこの表に取り込まれます。 XML_Reservation と XML_CancelReservation のメッセージ・フローは、この表のデータに変更を加えます。
下の表は、XMLFLIGHTTB 中のフィールドに関する情報を示しています。
フィールド名 | データ・タイプ | NULL かどうか | 内容 |
---|---|---|---|
FLIGHTDATE | CHAR | いいえ | フライトの日付 |
FLIGHTNO | CHAR | いいえ | フライトの番号 |
ECONOMICCLASS | INTEGER | いいえ | エコノミー・クラスの予約席の数 |
FIRSTCLASS | INTEGER | いいえ | ファースト・クラスの予約席の数 |
TOTALECONOMIC | INTEGER | いいえ | エコノミー・クラスの空席の数 |
TOTALFIRST | INTEGER | いいえ | ファースト・クラスの空席の数 |
ECONOMICPRICE | INTEGER | いいえ | エコノミー・クラスの座席の価格 |
FIRSTPRICE | INTEGER | いいえ | ファースト・クラスの座席の価格 |
STARTPOINT | CHAR | いいえ | フライトの出発地 |
ENDPOINT | CHAR | いいえ | フライトの到着地 |
RESERVATIONSEQNO | INTEGER | いいえ | 現時点までの予約数。 XML_Reservation メッセージ・フローは、この数値を使用して、乗客固有の予約番号を生成します。 |
乗客がフライトの座席を予約すると、XML_Reservation メッセージ・フローは各クラスの空席の数を減らします。これは XMLFLIGHTTB 表の TOTALECONOMIC フィールドと TOTALFIRST フィールドに示されます。 XML_Reservation メッセージ・フローは、ECONOMICCLASS フィールドと FIRSTCLASS フィールドの予約席の数を増やします。
XMLFLIGHTTB 表が作成されてデータが入れられた時点で、各行の RESERVATIONSEQNO は "0" になっています。 最初の入力メッセージを使用して XML_Reservation メッセージ・フローを最初に実行した場合、表の各行の RESERVATIONSEQNO は "4" に増加します。これは、4 件の予約がなされたということです。 2 番目の入力メッセージを使用して XML_Reservation メッセージ・フローを実行すると、RESERVATIONSEQNO は "5" になります。 RESERVATIONSEQNO は、個々の予約の予約番号を作成するために使用されます。 予約が取り消されると、RESERVATIONSEQNO フィールド中の数は減りません。
予約が取り消されると、XML_CancelReservation メッセージ・フローは空席の数を増やします。これは TOTALECONOMIC フィールドと TOTALFIRST フィールドに示されます。またフライトの予約の数を減らし、これは ECONOMICCLASS フィールドと FIRSTCLASS フィールドに示されます。
XMLPASSENGERTB 表の目的は、XMLFLIGHTTB にリストされている、フライトの座席を予約した乗客に関する現行情報を組み込むことです。 XMLPASSENGERTB 表を作成した時点ではデータは含まれていません。 XML_Reservation と XML_CancelReservation のメッセージ・フローは、この表にデータを追加したり、この表からデータを除去したりします。
下の表は、XMLPASSENGERTB 中のフィールドに関する情報を示しています。
フィールド名 | データ・タイプ | NULL かどうか | 内容 |
---|---|---|---|
LASTNAME | CHAR | いいえ | 乗客の姓 |
FIRSTNAME | CHAR | いいえ | 乗客の名 |
FLIGHTNO | CHAR | いいえ | フライトの番号 |
FLIGHTDATE | CHAR | いいえ | フライトの日付 |
CLASSTYPE | CHAR | いいえ | 予約済みの座席のクラス |
RESERVATIONNO | VARCHAR | いいえ | XML_Reservation メッセージ・フローによって割り振られる固有の予約番号。 |
乗客がフライトの座席を予約すると、XML_Reservation メッセージ・フローは座席を予約した乗客ごとに 1 行ずつ XMLPASSENGERTB 表に追加します。 最初の XML_Reservation 入力メッセージでは 4 件の予約が要求されるため、4 つのデータ行が追加されます。 2 番目の入力メッセージは 1 件の予約を要求するため、1 つのデータ行が追加され、表の行数は 5 になります。
RESERVATIONNO 列の内容は、予約を固有に識別するための番号として自動的に生成される予約番号です。 これ以降 XML_Reservation メッセージ・フローを実行すると、実行するたびに RESERVATIONSEQNO が増加していきます。
予約が取り消されると、XML_CancelReservation メッセージ・フローは XMLPASSENGERTB 表から予約を除去します。 予約を取り消しても XMLFLIGHTTB 表の RESERVATIONSEQNO フィールドはリセットされないので、新しい予約が行われる場合に XMLPASSENGERTB 表の RESERVATIONNO フィールド中の予約番号は必ず固有になります。