在数据库中存储日期和费率

时间:2012-09-11 16:21:33

标签: ruby-on-rails forms database-design

这种情况的最佳做法是什么?

我正在建立一个预订系统,我正在寻找捕获和存储用户信息的最佳方式。每个资源都可以使用一天,最多可以占用任意数量的用户。例如,假设这是一个最多可容纳5人的热气球。我希望我的表单看起来像这样:

[Buttons to select # of guests]  // So if a user wants the same price for 1-3 people he only has to enter it once.

From [START DATE] to [END DATE]: [RATE]  // Where the []'s are input fields for the user

我计划将每个价格存储在数据库中:

Date, # of guests, rate

每个日期都有一行。

所以我需要将“[START DATE]转换为[END DATE]”以存储每个日期的值。我应该在Javascript中使用客户端,还是在rails中使用我的控制器?如果一组客人的费率相同,即1-3位客人,有没有办法将其存储在数据库中以便更好地查询?或者我不应该打扰,因为如果明天用户想要更改2位客人的价格,可能会搞砸我的数据库。

1 个答案:

答案 0 :(得分:0)

Start dateEnd dateEach date - 几个条件:

  1. 如果用户想要预订3天的热气球,那么它每天都是相同的热气球还是可以改变?如果它可能不同,请将resources.type字段映射到多个booked_resources.id

  2. 如果您使用单独的startend日期,则需要检查资源使用情况的重叠。使用booked_resource.id存储每日一次的重复记录将消除重叠检查的需要。请参阅此主题以获取相关问题:Storing Calendar Data in MySQL

  3. 发送客户端JS每天的日期数组可能比提取for each day between start date and end date更容易。选择最适合您当前代码的那个。请记住,无论哪种方式,都必须修改SQL /日期检查以发现不可用。

  4. 如果用户可以更改访客数量并影响费用,那么存储每个日期对于此类数据库更新会更方便(如酒店的逐项列出的条款)。否则,您需要为具有不同客人数的日期“拆分”记录。