实体的季节性定价。

时间:2011-01-18 00:38:40

标签: php mysql datetime

我正在努力管理酒店客房的季节性价格。

我能想到的唯一方法是使用:

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。

2 个答案:

答案 0 :(得分:2)

从定义季节日期范围的季节表开始。它应该有一个主键字段,比如season_id。然后有另一个表来存储房间,价格和season_id。 season_id是赛季表的外键。

答案 1 :(得分: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