我目前正在开发一个平台,我想提供一些租赁服务。
我想在数据库中存储所有可能的租赁类型,因此我不需要在代码中处理逻辑。
基本上我想提供以下租赁时间:
在几天的时间里,我想过以几分钟的速度存储数据,这很容易理解。
如果有我想使用DAYOFWEEK指标的平日条件,所以可以定义为5天,租赁的第一天需要具有索引2,其是星期一,周末我可以定义的租赁需求日索引6,即星期六。
rental_type_id | rental_time_in_minutes | rental_label | rental_start_day_indexes
1天就像
1 | 1440 | 1 day | 1,2,3,4,5,6,7
7天
2 | 10080 | 7 days | 1,2,3,4,5,6,7
5天
3 | 7200 | Weekdays | 2,3,4,5,6
等
这是一种方法吗,或者我应该在几天内存储租用时间?
任何帮助,建议,评论或欢呼都是有帮助的!
感谢。
答案 0 :(得分:0)
根据您的使用方式,以几分钟为单位存储租赁时间可能会导致DST周围出现问题,即您每天有23或25个小时。
将索引存储为以逗号分隔的列表也会导致问题。我会制作一张映射表。该列不是正常形式,很难查询。
我会诚实地为不同的持续时间制作不同的表格。
答案 1 :(得分:0)
我会以秒为单位存储持续时间。因为它使整个事情更容易查询和更加灵活。假设您有这些租期。表持续时间:
d_id type duration
1 1 day 01
2 3 days 03
3 7 days 07
我建议您使用正常时间戳进行租借。我会存储开始和结束时间戳。假设您有下表。
在这个例子中,我使用天而不是时间戳只是为了让它更容易显示。我们今天说的是第3天。桌子租赁:
customer start end
Bob 02 05
Joe 10 11
Ian 03 04
让我们假设您想要获得所有当前活跃的租金(Bob& Ian)。你可以像这样获取它:
SELECT * FROM `rentals` WHERE `start`<3 AND 3<`end`
您可以找到所有租赁类型&#34; 1天&#34; (Ian)使用此查询:
SELECT * FROM `rentals`,`durations` WHERE `end`-`start`=`duration` and `d_id`=1
使用时间戳的优点是您可以非常精确地设置租赁开始和结束时间。您可以通过返回对象来检查客户为时已晚的小时数和分钟数。然后,您可以轻松计算确切的额外费用。