哪个是更好的设计,在数据库中存储天数

时间:2011-08-26 10:43:55

标签: mysql date

我想让用户查看有关课程的日期。例如,计算机课程将在

上举行
1/9, 2/9, 3/9.

那么,如何在数据库中存储这些日子? 一列存储像这样的字符串:

1/9/2011,2/9/2011,3/9/2011

或像这样的单独表格:

event_id   date
1          1/9/2011
1          2/9/2011
1          3/9/2011

谢谢。

5 个答案:

答案 0 :(得分:4)

单独的表是正确的设计,因为这是您的架构规范化的方式。表列应该包含单一类型的值。

First normal form数据库规范化状态:

  

每个行 - 列交集都只包含一个值   适用的域名(没有别的)。

答案 1 :(得分:4)

几乎每个阳光下的数据库都有一个DATE数据类型,这样就可以做到这一点。

另外:使用数据规范化:单独的表是可行的方法。

答案 2 :(得分:1)

我会有一个包含(至少)3列的表格,使用date类型作为开始日期和结束日期

event_id start_date end_date
1         1/9/2011  3/9/2011

答案 3 :(得分:1)

列只应存储一个值。单独的表。

作为CSV,你怎么能

  • 找到从2/9/2001开始的课程
  • 通过
  • 订购
  • 删除2/9/2001,添加4/9/2011等

答案 4 :(得分:-2)

这两种方法都有自己的好处

第一种方法适用于简单的数据结构,
这意味着您的数据量可能很小,
你的项目工作范围很小,
而且你不希望在那上花太多精力

从长远来看,坏事很难维持

第二种方法更适合规范化 但需要更多代码/ JOIN才能获得相同的信息 (你可以在第一种方法中一步完成)


BAD d/m/Y中的日期字符串,
让演示语言来确定语言环境

ISO format YYYY-MM-DD将是更好的选择