我们为药店开发了一个网站,在该网站上我们可以显示特定城市已开业的药店。
我用一个名为"时间戳"的字段来处理这个问题,在这个字段中,它每15分钟存储一次营业时间的所有时间戳,持续大约3个月。例如,如果农场每天从8:00到19:00开放,那么从一个时间到另一个时间都有一系列时间戳,间隔为15分钟。
在前端,我们有一个打开的药店列表,我可以通过查询数据库来显示打开的药店,例如:"WHERE timestamps LIKE('%1449820800%')"
,其中时间戳是四舍五入到最接近的一刻钟的当前时间。
问题是:考虑到每周的时间范围不同,有更好的方法来处理这种情况吗?此外,因为我们有25000名用户,如果我们有大量的时间戳,网站会很慢。
提前谢谢!
您可以拥有一个数据库,其中包含每个商店每天打开的内容:
-----------------------------------------
| StoreId | Day | HourOpen | HourClose |
=========================================
| 1 | 1 | 8:30 | 21:15 |
-----------------------------------------
| 1 | 2 | 9:00 | 17:00 |
-----------------------------------------
| 2 | 1 | 10:00 | 12:30 |
-----------------------------------------
| 2 | 1 | 14:00 | 19:00 |
=========================================
在这个表中,day表示一周中的哪一天(例如,1表示星期一,2表示星期二),然后您只需要为每个商店的营业时间设置一次参数。
然后,您可以查询此表,查看商店是否在一周中的某一天营业。
如果一家药店有例外的关闭或一天的营业时间,我建议使用像这样的ovveride表格
----------------------------------------------------------
| StoreId | Date | isOpen | HourOpen | HourClose |
==========================================================
| 1 | 2015-12-20 | true | 10:00 | 16:00 |
----------------------------------------------------------
| 2 | 2015-12-20 | false | null | null |
==========================================================
这样,您可以首先检查药房是否在该表中有当天的记录(不取决于时间)。如果有,您可以检查是否有空位。如果替代表中没有任何条目,则使用第一个表进行检查。
您还可以创建一个具有打开和关闭时间的小时模型表、一个日期表以及一个创建商店、小时和日期之间关系的关联表。