作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在尝试找出将企业营业时间存储在数据库中的最佳方法。
例如:
企业 A 的营业时间如下
目前我有一个类似于下面的数据模型
CREATE TABLE "business_hours" (
"id" integer NOT NULL PRIMARY KEY,
"day" varchar(16) NOT NULL,
"open_time" time,
"close_time" time
)
其中“日”仅限于在代码中选择一周中的 7 天(通过 ORM)。要测试某个企业是否在某一天关闭,它会检查 open_time 和 close_time 是否为 NULL。它通过中间表(多对多关系)与业务相关。
有人对这个数据库方案有什么建议吗?我觉得有些地方不对。
最佳答案
总的来说,我认为这没有任何问题。除了...
我会使用您的 native 编程语言使用的任何编号系统(在其库中)将星期几存储为整数。这将减小数据库的大小并从您的代码中删除字符串比较。
我可能会将业务表的外键放在此表的此处。这样您就不需要链接表。
所以我想我会这样做:
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/
我是一名优秀的程序员,十分优秀!