我在设计数据库时遇到问题。我需要存储每天和时间不同的租赁服务价格,例如工作日的一个价格,周末和节假日的另一个价格,也就是周四的最低价格,例如早上或晚上的价格。例如:
monday 7:00-10:00 — $10
monday 10:00-18:00 — $9
same for tue, wed, fri
thursday 7:00-10:00 — $9
thursday 10:00-18:00 — $8
sunday 7:00-10:00 — $12
sunday 10:00-18:00 — $11
same for sat and holidays
一项服务的时间表与另一项服务的时间表有所不同,例如,帐篷租金仅需要工作日/周末的价格,而自行车租金也需要一定的时间,其他服务可能具有一项一般价格。还有更便宜的自行车或更昂贵的自行车。
我虽然有这样的桌子
CREATE TABLE `prices` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`service_id` int(11) DEFAULT NULL,
`equipment_id` int(11) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`time_from` datetime DEFAULT NULL,
`time_to` datetime DEFAULT NULL,
`day` tinyint(2) DEFAULT NULL,
PRIMARY KEY (`id`)
);
因此,如果服务仅需要一个一般价格,那么只有价格的一个记录,而其他列则为空。如果这是一整天的价格,但一周中的某一天有所不同,请在day
列中从1到7填写(周末/节假日为0,时段为0)。
每个设备,也可能是设备组。
但是我认为要获得特定日期/时间段的价格会产生太多查询,例如
1)该设备的价格是否? 2)这段时间的价格? 3)如果是这一天的价格? 4)假期/周末的价格? 5)获得一般价格
或者我需要以相同的价格为每个可能的零件存储行。
有更好的解决方案吗?