2011-01-18 4 views
3

호텔 객실의 계절별 가격을 관리하려고합니다. 내가 그 일을 생각할 수엔티티에 대한 계절별 가격 책정.

유일한 방법은 사용하는 것입니다 :

A = 객실 요금

B = 서비스 요금을 방

이 테이블이 roomId 열이 있다고 상상한다 아래에서 생략되었습니다.

| DayDate |EndDate | A | B 
----------------------------------------------- 
| 2010/07/1 |2010/07/2 | 200 | 40 
| 2010/07/3 |2010/07/4 | 150 | 40 
| 2010/07/5 |2010/07/5 | 150 | 50 
| 2010/07/6 |2010/07/7 | 200 | 50 
| 2010/07/8 |2010/07/9 | 100 | 60 

등 (표는 다른 질문에서 취함).

문제는 다음과 같습니다. 내 계절이 내년 특정되는 것을 원하지 않습니다. 계절에 따라 객실을 변경해서는 안됩니다. 사용자가 계절 정보를 여러 번 입력해야하는 것을 원하지 않습니다.

나는 또한 수천 개의 방이 있기 때문에 쉽게 관리 할 수있는 방법을 모릅니다.

저는 mysql과 PHP를 사용하고 있습니다.

답변

1
Create Table Prices 
    (
    MonthStart int not null 
    , DayStart int not null 
    , MonthEnd int not null 
    , DayEnd int not null 
    , A int not null 
    , B int not null 
    ) 

Insert Prices(MonthStart, DayStart, MonthEnd, DayEnd, A, B) 
Select 7, 1, 7, 2, 200, 40 
Union All Select 7, 3, 7, 4, 150, 40 
Union All Select 7, 5, 7, 5, 150, 50 
Union All Select 7, 6, 7, 7, 200, 50 
Union All Select 7, 8, 7, 9, 100, 60 

이 접근법은 연도 나 환경에 관계없이 계절의 경계가 월과 일에 한정되어 있다고 가정합니다. 또한 윤년 처리 방법을 결정해야합니다. 계절의 날짜 범위를 정의하는 계절 테이블과

Create Table Prices 
    (
    MonthStart int not null 
    , DayStart int not null 
    , A int not null 
    , B int not null 
    , Constraint PK_Prices Primary Key (MonthStart, DayStart) 
    ) 

Insert Prices(MonthStart, DayStart, A, B) 
Select 7, 1, 200, 40 
Union All Select 7, 2, 200, 40 
Union All Select 7, 3, 150, 40 
Union All Select 7, 4, 150, 40 
Union All Select 7, 5, 150, 50 
Union All Select 7, 6, 200, 50 
Union All Select 7, 7, 200, 50 
Union All Select 7, 8, 100, 60 
Union All Select 7, 9, 100, 60 
+0

원래 질문에 추가. A = 가격, B = 서비스 요금 (예 : 린넨 + 세탁). 생략 된 기본 키가 있다고 상상해보십시오. – Layke

+0

@Laykes - 네. 나는 당신의 업데이 트를 추가 내 추가 제거했습니다. 감안할 때, 나는 가능한 모든 날과 방과 그 적용 가능한 비율의 테이블을 유지하는 두 번째 디자인을 추천 할 것입니다. – Thomas

2

시작 : 간단한 수 있습니다 또 다른 방법은 단순히 1 년 365 일을 열거하는 것입니다. 기본 키 필드가 있어야합니다 (예 : season_id). 그런 다음 room, price 및 season_id를 저장할 다른 테이블을 만듭니다. season_id는 시즌 테이블에 대한 외래 키입니다.

+0

필요할 경우 나중에 계절을 쉽게 변경할 수 있습니다 (호텔에서 3 월을 겨울철 요금에서 3 월 요금으로 변경하기로 결정한 경우) ... 새로운 "시즌"을 추가하기 만하면됩니다. – keithjgrant

+0

수백 개의 호텔도있을 것입니다. 모두 계절이 다릅니다. 호텔은 다른 소유주가 관리합니다. – Layke

+0

쉽게 지원할 수 있습니다. 각 호텔마다 하나씩 계절을 추가하십시오. 시즌 테이블에 hotel_id 필드를 추가하고 새로운 호텔 테이블을 만듭니다. 이러한 종류의 모델링을 정규화라고합니다 (http://en.wikipedia.org/wiki/Second_normal_form). – LeonT

관련 문제