【问题标题】:How to store opening weekdays in a database如何在数据库中存储开放工作日
【发布时间】:2010-04-28 23:18:46
【问题描述】:

我有一组复选框,用户可以在其中选择一些工作日(商店的营业日)。如何保存选定的日期?我是否应该在同一字段上保存 0111111 (零表示周日关闭)并在读取数据时拆分结果?还是为每天创建一个字段并在每个字段上存储 0 或 1(奇怪)?

【问题讨论】:

  • 您将如何处理与节假日相关的停业?
  • 没问题。这些商店每年只关闭 2 或 3 天(圣诞节、复活节)。我需要存储营业日/周和营业时间/天

标签: database-design


【解决方案1】:

第一种方法可以节省空间,第二种方法可以在检索数据时提高性能,尤其是当您需要按单个工作日进行过滤时。它还使操纵工作日的查询更加清晰。您必须根据应用程序的逻辑来决定什么对您更重要。

一般来说,我会使用按天计算的解决方案。

【讨论】:

  • 我也赞成第二种解决方案 - 对于第一种解决方案,您将永远无法使用索引来检索除星期日(第一个字符)以外的任何特定日期开放的商店,所以这将需要一个表扫描。如果是一张小桌子,没什么大不了的,但仍然不是很有效。由于一周中的日子不会改变,我会选择一个字段/天。
  • “检索除周日以外的任何特定日期营业的商店”。好点子。生病去现场/天选项。谢谢大家。
  • 实际上,如果使用位域,'field-per-day' 解决方案不会占用太多空间
【解决方案2】:

这完全取决于您在拥有该数据后将如何处理这些数据。总的来说,如果这七个事实(商店营业的工作日)是一个事实,将被视为一个事实,并且您永远不需要解析并单独处理字符串中的“事实”之一,然后它可以并且可能应该存储为一个数据。

但是,如果您必须将此信息视为七个不同的数据,您最好将其记录为七个不同的数据(即七个不同的列)。

同样,这背后有很多“取决于”。另一种思考方式是,展望您将如何使用数据,并尝试构建您的存储以简化您的流程(即,您是否希望始终为您想要的元素解析字符串“1010101” ?)

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多