'호텔 예약 프로그램'에 해당되는 글 1건

  1. 2009.04.08 호텔 예약 DB
2009. 4. 8. 14:27

[질문]

호텔 예약 프로그램을 만들고 있습니다.
여러므로 해보려 했지만 DB설계가 너무 어려워서 질문 올립니다..
우선 예약시스템인데..
객실, 레스토랑, 연회실, 회의실 4종류의 예약이 있고
각 서비스마다 예약 방식이 다르니 4개의 예약 테이블이 있어야 된다고 들었습니다.
객실은 4가지의 타입이 있고 각 타입별 room수를 정합니다.

싱글룸(10개)  5만원

더블룸(8개)    7만원

트윈룸(5개)    10만원

스위트룸(2개)  15만원

필요한 테이블과 관계들을 알고 싶고 날짜별 잔여객실수 계산가능 해야 되거든요.
그리고 보통 호텔 예약을 하면 객실타입은 선택해도 호실 선택하거나 몇호실인지 정보는 알수 없는데...
어떤 처리과정에 의해서 손님들이 오면 알아서 호실키를 제공하는거죠??
객실예약시에는 지정하지 않고 관리자 모드에서 지정하게 되나요???


[답변]


안녕하세요. IT전문컨설턴트입니다.
예약시스템의 경우에는.. DB구조를 입체화시켜야 하고, 정규화 기법을 통한 설계를 진행해야 합니다.
현재 궁금해 하는 테이블과 관계의 경우.. 수백가지 이상의 경우의 수가 있습니다.

객실, 레스토랑, 연회실, 회의실 4종류의 예약이 있다고 해서 4개의 테이블이 필요한것은 아닙니다. 관계형DB구성을 한다면. 2개로도 가능한 부분이죠...^^  단, 어떻게 시스템을 구상하느냐의 문제인듯 합니다.

극장에서 사용하는 예매시스템의 경우를 예를들면..
직접 고객들이 영화,시간,좌석 등의 요소를 직접 모니터에서 확인후에 선택을 할수 있습니다.

이경우에는.. 극장의 전체 관수를 지정한 인자값으로 구성을 하고, 가상View를 구성합니다.

가상View에는 각 해당관별로 지정석 만큼의 값이 생성이 되고, 예약이 된경우에는 1을 예약이 되지 않은 상황에는 0을 표시합니다.. 예약이 된 경우라도.. 할인예약, 청소년, 무료관람 등의 값을 2,3,4 등의 값으로 치환해서 DB에 넣어둡니다.. 전체적인 예약시스템에서는 이런 가상의 View를 각 시간대별 영화를 기준으로 생성함으로써,

1. 영화에 대한 정보 테이블

2. 상영시간 테이블

3. 상영관 정보 테이블

4. 결재정보 테이블

5. 예약정보 테이블

6. 회원테이블

7. 관리자 테이블

의 7가지 기본적인 테이블에서 확장 및 정규화를 통한 DB구성을 진행합니다.

가장 널리 사용하고 있는 Ms-SQL, My-SQL, Oracle 등의 DBMS 시스템은 객체관계형 데이터 베이스 모델링을 기본으로 구성이 되어있기때문에 해당 테이블의 관계에 따라서 엄청난 기능을 발휘할 수 있습니다.
물론 생성된 최종 DB의 경우.. 수십개에서 수백개가 생성될수도 있습니다.
여기까지의 정보라면.. 호텔예약시스템을 구성하는 기본적인 DB 도 어렵지 않게 생각하실수 있을듯 합니다.

호텔예약시 호실을 제공하는 방법은.. 관리자 모드에서 지정을 하기도 하지만, 관례상으로는 앞번호 방부터 자동으로 배정이 되도록 진행하는것으로 알고있습니다. 방번호를 부여할때.. 순서대로 부여를 하고, 메이트가 청소를 하는 순서도 여기에 따라서 진행하는 등 여러 운영시스템상에서 방번호 순을 중심으로 운영을 합니다. 물론 고객의 요청이 있다면. 방을 변경할 수 있도록 관리자 페이지에서 운영이 되겠죠.

다시 원점으로 돌아가서 생각해 본다면..  훨씬 간단하게 구성이 가능할듯 합니다.
물론 4가지 종류의 예약을 어떤 방식으로 접수를 하고.. 기존에 운영되는 Pos 및 시스템과 어떻게 연계할 부분이냐에 따라서 달라질수 밖에 없습니다. 만약 외부적인 시스템과 연계를 하는것이라면.. 해당 시스템과 DB구조를 유사하게 만들어야 추후 연계가 어렵지 않게 진행될수 있습니다.

아무런 정보가 없는 현상황에서 위의 요소만을 가지고 정확한 테이블과 DB관계를 구성할수는 없습니다. 대략적으로 구성을 한다고 하더라도, 상황에 맞게끔 변형하는 부분은 지금까지의 상황과 지금까지의 인력이라면 불가능합니다.

제 생각에는 현재까지 개발을 담당해 오시던 분이 DB관련한 전문적인 지식이 없으시거나 해당분야에 대해서 경험이 적은 것으로 추측이 됩니다. 그게 아니라면, 클라이언트 측에서 요구사항에 대해서 정확한 분석 및 전달이 않된 것으로 판단이 됩니다... 시스템은 하나의 기능을 위해서 여러 유기적인 요소들이 모여서 움직이는 구성입니다. 한두명의 인력이 뚝딱하고 만들수 있는 규모는 아닌것 같습니다.

전문적인 컨설팅을 통해서.. 현재까지의 구축프로세스상의 문제점을 진단해 보고, 요구사항에 대한 분석을 진행해야.. 성공적인 개발을 완료할수가 있습니다.


Posted by ToTb