【问题标题】:advise on schema design就架构设计提出建议
【发布时间】:2012-09-30 03:59:54
【问题描述】:

我想将营业地点的营业时间和营业时间存储到数据库表中。您认为以下哪种桌子设计更理想?我正在使用 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

【问题讨论】:

    标签: sql schema


    【解决方案1】:

    第一个解决方案显然是正确的。第二个没有标准化,更难编程,并且不可扩展(针对节假日、特殊时间等)。

    【讨论】:

    • 例如,使用此选项,您每天可以有两个营业时间。 (例如:上午 8 点至上午 10 点,下午 4 点至下午 6 点)。尝试在您的其他解决方案中实现它
    • “day”字段实际上是从 0-6(周一到周日)的工作日。我已经编辑了这个问题以反映这一点。我真的不知道你把它延长到假期是什么意思。
    • 在标准化格式中,很容易在系统中添加假日(或系统中的 -1)或其他编码值以处理非标准开放日。需要更多工作的非规范化格式。
    【解决方案2】:

    绝对是第一种,它更好地标准化,您可以使用查找表来轻松生成第二种格式的数据,也许还有一个视图。

    正如第一张海报所说,第一种解决方案可以很容易地扩展到包括假期等。第二种不太灵活。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2020-01-29
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多