Mysql 哪种设计更好,在数据库中存储天数

Mysql 哪种设计更好,在数据库中存储天数,mysql,date,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 或者像这样的单独表格: 1/9/2011,2/9/2011,3/9/2011 event_id date 1 1/9/2

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

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
或者像这样的单独表格:

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

多谢各位

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

数据库规范化状态的定义:

每一行和列的交点正好包含一个 适用域(无其他内容)


几乎所有的数据库都有一个
DATE
datatype,它正好可以做到这一点

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

我希望有一个至少有3列的表格,使用
日期类型作为开始和结束日期

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

列只能存储一个值。分开的桌子

作为CSV,您如何

  • 查找2001年2月9日开始的课程
  • 订购人
  • 删除2/9/2001,添加4/9/2011等
这两种方法都有自己的优点

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

从长远来看,坏的是很难维持的

第二种方法更适合于标准化
但需要更多的代码/连接才能获得相同的信息
(第一种方法只需一步即可完成)


对于
d/m/Y

让演示语言来确定区域设置


将是更好的选择

但有些活动是特殊的,有些可能会这样:2011年9月1日、2011年9月3日、2011年9月5日D我敢打赌,在运行查询或在数据库中进行任何数据处理时,第一种方法比第二种方法需要付出更多的努力。将它们放在一个列中没有什么好处,除了记录更少,但与查询、更新等所经历的噩梦相比,这一点都不重要。。。关于日期格式,我认为任何数据库都不会允许您在
date
类型的列中按自己喜欢的方式插入日期。@Shef 1。三次写入比一次写入更复杂。2.参加当然,它们是用户参与的3。我不是指数据类型,我指的是日期字符串…1)三次写入的成本远远低于大量读取
的成本,其中事件日期如“%1/9/2011%”
,或不可能的
分组方式
,等等。。。2) 如果您想从另一个表中获取数据,当然您必须执行
联接
,但在本例中(单个表),不必使用它。毕竟,无论哪种方式,您都必须进行
JOIN
。3) 日期字符串必须插入数据库,因此数据库不接受
d/m/Y
语法。@Shef 1。OP并没有要求团队成员,不管在哪里,他可能在寻找更容易实现的东西。2.这个表只有两列,有意义吗?(课程名称等在哪里)?3.演示这个问题并没有提供太多的细节,比如项目的用途和范围。毫无疑问,标准化是唯一最好的方法。-1第一种CSV方法没有好处。完全这是基本的关系数据库@Shef在这里是正确的,我100%同意他的观点。这是个糟糕的答案。-1除了你接受的答案外,每个答案都写着“单独的表格”。这是有原因的:正常化。