数小时运行的数据库设计有什么好方法?

use*_*098 9 sql database database-design

我正在尝试创建一个需要使用数小时操作的应用程序,并允许用户通过它进行搜索(想想Yelp如何做到这一点).

我正在讨论什么是一个好的设计.我唯一能想到的是拥有一个数据库表,其中包含一个"公司"表的外键,该表列出了一周中的某一天以及打开和关闭时间.

Tbl_Hours_Operation
- day_of_week
- open_time
- close_time
- company_id
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可行,效率更高?

Ker*_*mit 9

有两张桌子:

operational_hours(company_id,day_of_week,open_time,close_time)

operational_hours_special(company_id,date,open_time,close_time)

您需要加入这两个表来检查特殊时间.

您的公司是否会因早餐,午餐,晚餐,午睡而关闭?如果是这样,我会补充:

operational_hours_closed(company_id,day_of_week,close_time,open_time)

更有趣JOIN!

  • @Leonardo:除非他在计算器上运行,否则7,000条记录可能不会成为问题.关系数据库非常适合优化执行路径.存储数据的方式与回答有关数据的问题的方式之间存在很大差异.前者需要适应后者,但不应与之紧密耦合.至于成本效益,我真的不知道糟糕的设计会如何降低成本.好的设计不是"学术性的",它在各方面都很实用. (4认同)
  • @Leonardo - 如果我看过一个,那就是酸葡萄. (4认同)
  • 对于已关闭的午餐,可以通过允许公司在`operational_hours`表中每个'day_of_week`有多个条目来实现相同的目的.因此,不是一组关闭时间的连接,而只是两个开放时间的记录. (3认同)
  • @Leonardo你能详细说明这是一个可怕的实用解决方案,并提供更好的解决方案吗?你仍然对*学术*的含义感到困惑.如果您指的是"按书"解决方案,那么您在下面提出的解决方案既不是"按书"也不是"实用". (3认同)