首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计-显示可用时间的最佳方式?

数据库设计-显示可用时间的最佳方式?
EN

Stack Overflow用户
提问于 2009-03-27 23:33:39
回答 4查看 3.9K关注 0票数 6

我有兴趣看到关于营业时间的数据库设计的建议。

这将与Facebook非常相似-- alt text http://uploader.ws/upload/200903/widget.png

我有一个企业的列表,我希望用户能够输入该企业的多组可用时间。例如,

周一:9-5开放;周二:9-12开放;1-5;等等。我不希望每天被限制在两组时间内。理想情况下,每天N组小时。如果这不实际,不超过4..。不少于2。

我对“最好的”(理论)和最实用的解决方案感兴趣。

我使用的数据库管理系统是MySQL。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-27 23:44:49

这样如何:

代码语言:javascript
运行
复制
create table business (
  id int not null auto_increment primary key,
  name varchar(255)
);

create table open_hour_range (
  id int not null auto_increment primary key,
  business_id int,
  day_of_week tinyint, /* 0-6 */
  open_time time,
  close_time time,
  foreign key(business_id) references business(id)
);

这允许您任意组合小时,包括每天多次。然而,从查询的角度来看,它可能有点慢,因为您将需要进行大量的连接,才能得出业务开放时间的列表。

此外,如果您希望能够以如下格式显示小时数:

M-F 9-5 Sa-Su 9-12

您需要在数据库之外的代码中合并相似的范围。如果您希望进行这种排序合并,可以将day_of_week更改为一个start_day和一个end_day。

票数 6
EN

Stack Overflow用户

发布于 2009-03-28 03:55:27

对斯科蒂·艾伦的模型做了一个小小的调整:

业务表:

id - int

business_name -字符串

open_hour_range表:

id - int

business_id - int //业务外键

days_of_week- int // (位掩码) 1-127

open_time -时间

close_time -时间

票数 3
EN

Stack Overflow用户

发布于 2009-03-27 23:39:06

使用数据库,您可以将数据存储为类型的XML,并且仍然能够基于该字段中的一个或多个值对数据进行排序和搜索。如果需要,进行任何计算,等等。

该列中的值可能如下所示:

代码语言:javascript
运行
复制
<businessDays>
    <monday>
        <hours from="12" to="15" />
        <hours from="16" to="21" />
    </monday>
    <friday>
        <hours from="13" to="15" />
        <hours from="16" to="18" />
        <hours from="19" to="21" />
    </friday>
</businessDays>

关于类型的XML的引用

  • Typed XML in SQL Server 2005
  • Typed XML Compared to Untyped XML

有关SQL Server中的索引和查询XML data的参考资料:

  • XML Queries and Indexing in SQL Server 2005
  • SQL Server 2005 XQuery and XML-DML - Part 1

在您的应用程序中,您可以将这些数据serialize/deserialize到业务对象中,或者从业务对象中提取这些数据。

非常简单和高效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/691815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档