我目前正在尝试找出将企业的营业时间存储在数据库中的最佳方式。

例如:

企业 A 的营业时间如下

  • 星期一:上午 9 点 - 下午 5 点
  • 星期二:上午 9 点 - 下午 5 点
  • 星期三:上午 9 点 - 下午 5 点
  • 星期四:上午 9 点 - 下午 5 点
  • 周五:上午 9 点 - 下午 5 点
  • 星期六:上午 9 点 - 中午 12 点
  • 周日:关闭

  • 目前我有一个类似于以下的数据模型
    CREATE TABLE "business_hours" (
        "id" integer NOT NULL PRIMARY KEY,
        "day" varchar(16) NOT NULL,
        "open_time" time,
        "close_time" time
    )
    

    其中“day”仅限于在代码中选择一周中的 7 天(通过 ORM)。为了测试一家企业是否在某一天关闭,它会检查 open_time 和 close_time 是否为 NULL。它通过一个中间表(Many To Many Relationship)与业务相关联。

    有人对这个数据库方案有什么建议吗?关于它的某些东西对我来说似乎不正确。

    最佳答案

    总的来说,我认为这没有任何问题。除了...

  • 我将使用您的本地编程语言使用的任何编号系统(在其库中)将星期几存储为整数。这将减小数据库的大小并从代码中删除字符串比较。
  • 我可能会把业务表的外键放在这个表的这里。这样你就不需要链接表了。

  • 所以我想我会这样做:
    CREATE TABLE "business_hours" (
         "id" integer NOT NULL PRIMARY KEY,
         "business_id" integer NOT NULL FOREIGN KEY REFERENCES "businesses",
         "day" integer NOT NULL,
         "open_time" time,
         "close_time" time
    )
    

    在我的业务逻辑中,我会强制执行一个约束,即每个“业务”都有 至少 7 个“营业时间”。 (至少因为 Jon Skeet 是对的,您可能需要假期时间。)尽管您可能希望通过简单地将“营业时间”留在公司关闭的日子来放松这一限制。

    关于database - 在数据库中存储营业时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1036603/

    10-13 06:25
    查看更多