我们为药房开发了一个网站,我们在该网站上展示特定城市的开设药房。
我使用一个名为“timestamps”的字段来处理这个问题,它将每15分钟的开放时间的所有时间戳存储大约3个月。 例如,如果每天从8:00到19:00打开一个farmacy,则会有一系列时间戳从一次到另一次,间隔为15分钟。
虽然在前端,我们有一个已打开的药房列表,我可以通过查询数据库来显示已打开的药房,例如:
"WHERE timestamps LIKE('%1449820800%')"
其中时间戳是当前时间四舍五入到最接近的四分之一小时。
问题是:考虑到时间范围每周不同,有没有更好的方法来处理这种情况?另外,因为我们有25.000个用户,如果我们有大量的时间戳,网站会很慢。
提前谢谢!
答案 0 :(得分:3)
每个商店每天都可以有一个数据库:
-----------------------------------------
| 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 |
=========================================
在此表中,日期表示星期几(例如,星期一为1,星期二为2),然后您只需要为每个商店指定一次openniong小时数。
然后,您可以查询此表,以查看商店是否在当天的某一天开放。
如果药房有一天的例外关闭或开放时间,我建议像这样的一个ovveride表
----------------------------------------------------------
| StoreId | Date | isOpen | HourOpen | HourClose |
==========================================================
| 1 | 2015-12-20 | true | 10:00 | 16:00 |
----------------------------------------------------------
| 2 | 2015-12-20 | false | null | null |
==========================================================
通过这种方式,您可以先检查药房在当前日期(不取决于时间)该表中是否有任何记录,如果有,则检查是否有空缺。如果覆盖表中没有任何条目,则使用第一个表进行检查。
您还可以使用开放和关闭时间的小时模型表,日历表和创建商店,小时和天之间关系的关联表。