2010-04-28 31 views
4

我有一组复选框,用户选择某些工作日(商店的开放日期)。我怎样才能保存选定的日子?我应该在相同的字段上保存0111111(零表示星期日关闭)并在读取数据时分割结果?或者为每一天创建一个字段并在每个(奇怪)上存储0或1?如何在数据库中存储开放日期

+0

你将如何处理与假期有关的关闭? – 2010-04-28 15:15:04

+0

这不是一个问题。这些商店每年只关闭两三天(圣诞节,复活节)。我需要储存开幕日/周和开放时间/天 – JoaoPedro 2010-04-28 15:20:09

回答

7

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

一般来说,我会使用现场每日解决方案。

+2

我赞成第二种解决方案 - 第一种方法是,您永远无法使用索引检索任何特定日期的商店,但周日(第一个字符),所以它需要一个表扫描。如果它是一张小桌子,没什么大不了的,但是效率不高。由于一周内的日子不会改变,所以我会每天花一场。 – SqlRyan 2010-04-28 15:22:11

+0

“检索除星期日以外任何特定日期开放的商店”。好点子。不适合现场/日期选项。谢谢大家。 – JoaoPedro 2010-04-28 15:28:45

0

这完全取决于你一旦拥有数据就要做什么。总的来说,如果这七个factoid(商店被关闭的平日)是一个事实,将被视为一个事实,并且您将永远不需要解析并单独处理字符串中的某个“factoids”,然后它可以也可能应该作为一个数据存储。但是,如果您必须将此信息视为七个不同的数据片段,则最好将其记录为七个不同的数据片段(即七个不同的列)。

同样,这背后还有很多“依赖”。另一种考虑的方法是,展望如何使用数据,并尝试构建存储以简化流程(例如,是否希望始终为所需元素解析字符串“1010101” ?)

相关问题