2012-10-09 95 views
0

我想将位置的开放时间和关闭时间存储到数据库表中。您认为以下哪种表格设计更为理想?我使用的是MySQL或者也许是PostgreSQL(会很重要吗?)。有关架构设计的建议

每天一个记录? (返回1-7结果)

id, location_id, weekday, start_time, closing_time 

或者每个位置有一条记录? (返回1个结果总是)

id, location_id, mon_start, mon_end, tue_start, tue_end, ... ... ... sun_start, sun_end 

最常见的查询将简单地显示这样的内容(总是整个周):

Location: blablabla 
Operating Hours: 
    Monday: 8 AM to 8 PM 
    ... ... 
    Sunday: 8 AM to 12 PM 

回答

3

第一个解决方案显然是正确的。第二个不规范化,难以规划,并且不可扩展(假期,特殊时段等)。

+0

作为示例,使用此选项,您可以每天有两个开放时间。 (例如:上午8点到10点,下午4点到6点)。尝试在您的其他解决方案中实施 – podiluska

+0

“日期”字段实际上是从0-6(周一到周日)的周日。我已经编辑了这个问题来反映这一点。我实际上不知道你的意思是延长假期。 – dashmug

+0

在标准化的格式中,可以很容易地在系统中添加假日(或系统中的-1)或其他编码值以处理非标准的开放日期。在需要更多工作的非规范化格式中。 –

0

绝对是第一个,它的标准化程度更高,您可以使用查找表格查看第二种格式的数据,并且可以轻松地生成数据。

作为第一张海报,第一个解决方案可以很容易地扩展到包括节假日等等。第二个解决方案不那么灵活。