RESERVDB 사용자 데이터베이스에는 XMLFLIGHTTB 및 XMLPASSENGERTB라는 두 개의 테이블이 있습니다. 다음 그림에 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 메시지 플로우를 처음 실행할 때, 테이블의 각 행에서 RESERVATIONSEQUENCENUMBER가 "4"로 증가되어 네 개의 좌석이 예약되었음을 표시합니다. 두 번째 입력 메시지를 사용하여 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 메시지 플로우는 좌석을 예약한 각 승객에 대해 한 행을 MRMPASSENGERTB 테이블에 추가합니다. 첫 번째 XML_Reservation 입력 메시지는 네 개의 예약을 요청하므로 네 개의 데이터 행이 추가됩니다. 두 번째 입력 메시지는 하나의 예약을 요청하므로, 하나의 데이터 행이 추가되어 테이블의 데이터 행이 5개가 됩니다.
RESERVATIONNO 열에는 예약을 고유하게 식별하기 위해 자동으로 생성된 예약 번호가 포함됩니다. 이후에 XML_Reservation 메시지 플로우를 실행할 때마다 RESERVATIONSEQNO가 증가됩니다.
예약이 취소되면 XML_CancelReservation 메시지 플로우는 MRMPASSENGERTB 테이블에서 예약을 제거합니다. 예약을 취소하면 XMLFLIGHTTB 테이블 내의 RESERVATIONSEQNO 필드가 재설정되지 않으므로, 새로 예약을 해도 XMLPASSENGERTB 테이블의 RESERVATIONNO 필드에 있는 예약 번호는 항상 고유합니다.