使用位域存储和管理计划是否有意义?
我正在开发一个Ruby on Rails应用程序来处理餐厅的营业时间和预订,我的建模时间表有些困难。
每家餐厅每天都有开放时间(如周一上午9点至下午12点和下午2点至下午5点),餐厅的每张桌子都有一个尺寸(2,4,8座位等)和自己的开口。
到目前为止,我一直在使用两个表来跟踪事情:
OPENING_HOURS
预订
根据这些表格,我可以确保新预订不会与同一张桌子的其他预订重叠,并且预订属于一周中某天的开放时间范围。
但是,在时间表中找到空位是有问题的。也就是说,考虑到一组营业时间和现有预订,缺口在哪里可以容纳新的预订?
在通过StackOverflow寻找灵感时,我遇到了this comment about using bitfields for schedules,它引起了我的好奇心。我对按位逻辑一无所知,但我想知道是否可以用以下内容替换上面的表:
OPENING_HOURS
预订
然后我可以使用按位逻辑(挥手)并查找给定日期的开放时间。
所以我的问题:
感谢,
雅各
答案 0 :(得分:0)
这似乎是一种存储日期的奇怪方式。
问问自己餐厅或OpeningHours的行为是什么?我打赌你会发现自己会转换回真实日期对象来实现这种行为。那么为什么在数据库中使用奇怪的编码(星期几和位串)?
此外,您是否打算使用SQL日期运算符来查找打开的餐厅或桌子?如果完全可以使用您的编码方案,那就会变得非常棘手。
我怀疑你是不是想这样做。