我正在尝试创建一个需要使用数小时操作并允许用户通过它进行搜索的应用程序(想想Yelp是如何做到的)。
我正在讨论什么是好的设计。我唯一能想到的是拥有一个数据库表,其中包含一个“公司”表的外键,该表列出了一周中的某一天以及打开和关闭时间。
Tbl_Hours_Operation
- day_of_week
- open_time
- close_time
- company_id
还有其他方法可行吗?效率更高?
答案 0 :(得分:9)
有两张桌子:
operational_hours (company_id,day_of_week,open_time,close_time)
operational_hours_special (company_id,date,open_time,close_time)
您需要加入这两个表来检查特殊时间。
您的公司是否会因早餐,午餐,晚餐而被关闭,siesta?如果是这样,我会补充:
operational_hours_closed (company_id,day_of_week,close_time,open_time)
更有趣JOIN
s!
答案 1 :(得分:0)
你的方法似乎很合理。只需要注意几个小问题:
确保您在Company_Id和DayOfWeek_Id(并按此顺序)索引此表。如果公司在白天关闭或者在一夜之间开放,它也应该(可能)支持每周的多个条目。
CompanyDayOfWeek
----------------
Company_Id INT/BIGINT FK->Company table
DayOfWeek_Id INT (this can be a FK or just a hard coded list of IDs)
Open_Time TIME if your DB supports a dateless time data type
Close_Time TIME