在我的商店数据库中,我需要有营业时间。您是否知道如何在dB中实现这一点?
营业时间为周一至周日,每天可以有2个开放窗口(例如09:00-12:00、16:00-19:00)
建一个表,把它schedules添加一个外键shops表的主键,一个Day of week场time_open,time_closed。数据应如下所示:
schedules
shops
Day of week
time_open
time_closed
shop_id day_of_week time_open time_closed 1 1 09:00 12:00 1 1 16:00 19:00 1 2 09:00 12:00 1 2 16:00 19:00 1 3 09:00 12:00 1 3 16:00 19:00 1 6 10:00 14:00 2 1 09:00 12:00 2 1 13:00 18:00
这将使您有机会构建任何类型的日程表,并根据需要设置任意数量的窗口以及所需的异常数量。它是通用的,仅限于期望所有星期都相同的事实。没有考虑假期,也没有人可能会使用的奇数/偶数周时间表。
编辑: 关于朱利安(Julien)的一个关于夜班工作时间的问题,引起我注意的是,先前的解决方案并不是最好的解决方案。您无法在20:00打开栏,在06:00关闭栏,并比较当前时间(02:45)是否在此时间间隔内,因为不会。因此,以方便的计量单位(例如分钟)注册关闭时间而不是总工作时间是最方便的。
shop_id day_of_week time_open working_time 1 1 09:00 180 1 1 16:00 180 1 2 09:00 180 1 2 16:00 180 1 3 09:00 180 1 3 16:00 180 1 6 10:00 240 2 1 09:00 180 2 1 13:00 300