Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用位字段进行调度?_Mysql_Ruby On Rails_Bits - Fatal编程技术网

Mysql 使用位字段进行调度?

Mysql 使用位字段进行调度?,mysql,ruby-on-rails,bits,Mysql,Ruby On Rails,Bits,使用位字段存储和管理日程安排有意义吗 我正在开发一个RubyonRails应用程序来处理餐厅的开放时间和预订,我在建模时间表方面遇到了一些困难 每家餐厅每天都有营业时间(如周一上午9点至12点和下午2点至5点),餐厅的每张桌子都有一个大小(2、4、8个座位等)和自己的营业时间 到目前为止,我一直在使用两个表来跟踪事情: 营业时间 每周的第天(字符串) 在(时间)开始 在(时间)结束 预订 表1\u id(int) 开始于(日期时间) 结束于(日期时间) 有了这些桌子,我可以确保新的预订不

使用位字段存储和管理日程安排有意义吗

我正在开发一个RubyonRails应用程序来处理餐厅的开放时间和预订,我在建模时间表方面遇到了一些困难

每家餐厅每天都有营业时间(如周一上午9点至12点和下午2点至5点),餐厅的每张桌子都有一个大小(2、4、8个座位等)和自己的营业时间

到目前为止,我一直在使用两个表来跟踪事情:

营业时间

  • 每周的第天(字符串)
  • 在(时间)开始
  • 在(时间)结束
预订

  • 表1\u id(int)
  • 开始于(日期时间)
  • 结束于(日期时间)
有了这些桌子,我可以确保新的预订不会与同一桌子的其他预订重叠,并且预订在一周中当天的开放时间范围内

不过,在日程表中找到打开的插槽是有问题的。也就是说,给定一组开放时间和现有预订,可以容纳新预订的间隙在哪里

当我在StackOverflow中寻找灵感时,我偶然发现,这激起了我的好奇心。我对按位逻辑一无所知,但我想知道是否可以用以下内容替换上面的表格:

营业时间

  • 每周的第天(字符串)
  • 小时数(96位,表示一天中每四分之一小时的打开/关闭时间)
预订

  • 表1\u id(int)
  • 日期(日期)
  • 小时数(96位,表示一天中每四分之一小时的可用/预订时间)
然后我可以使用位逻辑(waves hands)找到给定一天的开放可用时间

所以我的问题是:

  • 这样做有意义吗
  • 有人能告诉我一篇关于使用位域作为日程安排的博客文章或教程吗
  • 我还应该看什么来了解位字段和位逻辑,特别是在ruby/Rails领域
谢谢


Jacob

这似乎是一种存储日期的奇怪方式

问问你自己,这家餐厅或开业时间会是什么样子?我打赌您会发现自己正在转换回真实的日期对象以实现该行为。那么,为什么要在数据库中使用奇怪的编码(星期几和位字符串)

此外,您是否打算使用SQL日期运算符来查找哪些餐厅或桌子是开放的?如果你的编码方案有可能的话,那就麻烦多了

我怀疑你是否想这样做。

我认为你是对的——这里最好使用固定的日期时间。我可能最终会转换为位字段,以便更容易地找到计划中的间隙,但对于大多数操作,比较日期时间更容易。